From e35f3fe53cd8df85d4fd04e49dfffbaeac971cdf Mon Sep 17 00:00:00 2001
From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: Mon, 7 Nov 2011 21:50:31 -0600
Subject: Rename kwin to twin (Part 2 of 2)

---
 IconThemes/Locolor/16x16/apps/kwin.png             |  Bin 452 -> 0 bytes
 IconThemes/Locolor/16x16/apps/kwin4.png            |  Bin 522 -> 0 bytes
 IconThemes/Locolor/16x16/apps/twin.png             |  Bin 0 -> 452 bytes
 IconThemes/Locolor/16x16/apps/twin4.png            |  Bin 0 -> 522 bytes
 IconThemes/Locolor/32x32/apps/kwin.png             |  Bin 598 -> 0 bytes
 IconThemes/Locolor/32x32/apps/kwin4.png            |  Bin 1360 -> 0 bytes
 IconThemes/Locolor/32x32/apps/twin.png             |  Bin 0 -> 598 bytes
 IconThemes/Locolor/32x32/apps/twin4.png            |  Bin 0 -> 1360 bytes
 IconThemes/kdeclassic/16x16/apps/kwin.png          |  Bin 288 -> 0 bytes
 IconThemes/kdeclassic/16x16/apps/kwin4.png         |  Bin 522 -> 0 bytes
 IconThemes/kdeclassic/16x16/apps/twin.png          |  Bin 0 -> 288 bytes
 IconThemes/kdeclassic/16x16/apps/twin4.png         |  Bin 0 -> 522 bytes
 IconThemes/kdeclassic/32x32/apps/kwin.png          |  Bin 784 -> 0 bytes
 IconThemes/kdeclassic/32x32/apps/kwin4.png         |  Bin 1360 -> 0 bytes
 IconThemes/kdeclassic/32x32/apps/twin.png          |  Bin 0 -> 784 bytes
 IconThemes/kdeclassic/32x32/apps/twin4.png         |  Bin 0 -> 1360 bytes
 IconThemes/kdeclassic/48x48/apps/kwin.png          |  Bin 1081 -> 0 bytes
 IconThemes/kdeclassic/48x48/apps/kwin4.png         |  Bin 2378 -> 0 bytes
 IconThemes/kdeclassic/48x48/apps/twin.png          |  Bin 0 -> 1081 bytes
 IconThemes/kdeclassic/48x48/apps/twin4.png         |  Bin 0 -> 2378 bytes
 IconThemes/slick/16x16/apps/kwin.png               |  Bin 670 -> 0 bytes
 IconThemes/slick/16x16/apps/twin.png               |  Bin 0 -> 670 bytes
 IconThemes/slick/22x22/apps/kwin.png               |  Bin 883 -> 0 bytes
 IconThemes/slick/22x22/apps/twin.png               |  Bin 0 -> 883 bytes
 kwin-styles/CMakeLists.txt                         |   22 -
 kwin-styles/Makefile.am                            |    4 -
 kwin-styles/cde/CMakeLists.txt                     |   34 -
 kwin-styles/cde/Makefile.am                        |   22 -
 kwin-styles/cde/cde.desktop                        |    6 -
 kwin-styles/cde/cdeclient.cpp                      |  863 ----------
 kwin-styles/cde/cdeclient.h                        |  119 --
 kwin-styles/cde/config/CMakeLists.txt              |   28 -
 kwin-styles/cde/config/Makefile.am                 |   17 -
 kwin-styles/cde/config/config.cpp                  |  131 --
 kwin-styles/cde/config/config.h                    |   52 -
 kwin-styles/configure.in.in                        |    3 -
 kwin-styles/glow/CMakeLists.txt                    |   35 -
 kwin-styles/glow/Makefile.am                       |   22 -
 kwin-styles/glow/config/CMakeLists.txt             |   28 -
 kwin-styles/glow/config/Makefile.am                |   17 -
 kwin-styles/glow/config/bitmaps.h                  |   55 -
 kwin-styles/glow/config/glowconfigdialog.cpp       |  369 ----
 kwin-styles/glow/config/glowconfigdialog.h         |   92 -
 kwin-styles/glow/glow.desktop                      |   49 -
 kwin-styles/glow/glowbutton.cpp                    |  339 ----
 kwin-styles/glow/glowbutton.h                      |  129 --
 kwin-styles/glow/glowclient.cpp                    |  902 ----------
 kwin-styles/glow/glowclient.h                      |  206 ---
 kwin-styles/glow/resources.h                       |   11 -
 kwin-styles/glow/themes/CMakeLists.txt             |   17 -
 kwin-styles/glow/themes/Makefile.am                |    1 -
 kwin-styles/glow/themes/default/CMakeLists.txt     |   22 -
 kwin-styles/glow/themes/default/Makefile.am        |   17 -
 kwin-styles/glow/themes/default/background.png     |  Bin 788 -> 0 bytes
 kwin-styles/glow/themes/default/close.png          |  Bin 122 -> 0 bytes
 kwin-styles/glow/themes/default/close_glow.png     |  Bin 179 -> 0 bytes
 kwin-styles/glow/themes/default/default.theme      |   19 -
 kwin-styles/glow/themes/default/help.png           |  Bin 120 -> 0 bytes
 kwin-styles/glow/themes/default/help_glow.png      |  Bin 174 -> 0 bytes
 kwin-styles/glow/themes/default/iconify.png        |  Bin 120 -> 0 bytes
 kwin-styles/glow/themes/default/iconify_glow.png   |  Bin 177 -> 0 bytes
 kwin-styles/glow/themes/default/maximizeoff.png    |  Bin 109 -> 0 bytes
 .../glow/themes/default/maximizeoff_glow.png       |  Bin 166 -> 0 bytes
 kwin-styles/glow/themes/default/maximizeon.png     |  Bin 129 -> 0 bytes
 .../glow/themes/default/maximizeon_glow.png        |  Bin 186 -> 0 bytes
 kwin-styles/glow/themes/default/stickyoff.png      |  Bin 103 -> 0 bytes
 kwin-styles/glow/themes/default/stickyoff_glow.png |  Bin 161 -> 0 bytes
 kwin-styles/glow/themes/default/stickyon.png       |  Bin 115 -> 0 bytes
 kwin-styles/glow/themes/default/stickyon_glow.png  |  Bin 173 -> 0 bytes
 kwin-styles/glow/themes/glass/CMakeLists.txt       |   22 -
 kwin-styles/glow/themes/glass/Makefile.am          |   17 -
 kwin-styles/glow/themes/glass/background.png       |  Bin 794 -> 0 bytes
 kwin-styles/glow/themes/glass/close.png            |  Bin 186 -> 0 bytes
 kwin-styles/glow/themes/glass/close_glow.png       |  Bin 567 -> 0 bytes
 kwin-styles/glow/themes/glass/glass.theme          |   19 -
 kwin-styles/glow/themes/glass/help.png             |  Bin 183 -> 0 bytes
 kwin-styles/glow/themes/glass/help_glow.png        |  Bin 554 -> 0 bytes
 kwin-styles/glow/themes/glass/iconify.png          |  Bin 190 -> 0 bytes
 kwin-styles/glow/themes/glass/iconify_glow.png     |  Bin 575 -> 0 bytes
 kwin-styles/glow/themes/glass/maximizeoff.png      |  Bin 169 -> 0 bytes
 kwin-styles/glow/themes/glass/maximizeoff_glow.png |  Bin 518 -> 0 bytes
 kwin-styles/glow/themes/glass/maximizeon.png       |  Bin 188 -> 0 bytes
 kwin-styles/glow/themes/glass/maximizeon_glow.png  |  Bin 541 -> 0 bytes
 kwin-styles/glow/themes/glass/stickyoff.png        |  Bin 178 -> 0 bytes
 kwin-styles/glow/themes/glass/stickyoff_glow.png   |  Bin 597 -> 0 bytes
 kwin-styles/glow/themes/glass/stickyon.png         |  Bin 180 -> 0 bytes
 kwin-styles/glow/themes/glass/stickyon_glow.png    |  Bin 564 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/CMakeLists.txt  |   22 -
 kwin-styles/glow/themes/glass_huge/Makefile.am     |   17 -
 kwin-styles/glow/themes/glass_huge/background.png  |  Bin 2094 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/close.png       |  Bin 207 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/close_glow.png  |  Bin 1386 -> 0 bytes
 .../glow/themes/glass_huge/glass_huge.theme        |   19 -
 kwin-styles/glow/themes/glass_huge/help.png        |  Bin 199 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/help_glow.png   |  Bin 1398 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/iconify.png     |  Bin 206 -> 0 bytes
 .../glow/themes/glass_huge/iconify_glow.png        |  Bin 1395 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/maximizeoff.png |  Bin 187 -> 0 bytes
 .../glow/themes/glass_huge/maximizeoff_glow.png    |  Bin 1397 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/maximizeon.png  |  Bin 206 -> 0 bytes
 .../glow/themes/glass_huge/maximizeon_glow.png     |  Bin 1417 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/stickyoff.png   |  Bin 192 -> 0 bytes
 .../glow/themes/glass_huge/stickyoff_glow.png      |  Bin 1409 -> 0 bytes
 kwin-styles/glow/themes/glass_huge/stickyon.png    |  Bin 194 -> 0 bytes
 .../glow/themes/glass_huge/stickyon_glow.png       |  Bin 1414 -> 0 bytes
 kwin-styles/glow/themes/glass_large/CMakeLists.txt |   22 -
 kwin-styles/glow/themes/glass_large/Makefile.am    |   17 -
 kwin-styles/glow/themes/glass_large/background.png |  Bin 1217 -> 0 bytes
 kwin-styles/glow/themes/glass_large/close.png      |  Bin 190 -> 0 bytes
 kwin-styles/glow/themes/glass_large/close_glow.png |  Bin 731 -> 0 bytes
 .../glow/themes/glass_large/glass_large.theme      |   19 -
 kwin-styles/glow/themes/glass_large/help.png       |  Bin 187 -> 0 bytes
 kwin-styles/glow/themes/glass_large/help_glow.png  |  Bin 720 -> 0 bytes
 kwin-styles/glow/themes/glass_large/iconify.png    |  Bin 194 -> 0 bytes
 .../glow/themes/glass_large/iconify_glow.png       |  Bin 723 -> 0 bytes
 .../glow/themes/glass_large/maximizeoff.png        |  Bin 174 -> 0 bytes
 .../glow/themes/glass_large/maximizeoff_glow.png   |  Bin 667 -> 0 bytes
 kwin-styles/glow/themes/glass_large/maximizeon.png |  Bin 195 -> 0 bytes
 .../glow/themes/glass_large/maximizeon_glow.png    |  Bin 700 -> 0 bytes
 kwin-styles/glow/themes/glass_large/stickyoff.png  |  Bin 182 -> 0 bytes
 .../glow/themes/glass_large/stickyoff_glow.png     |  Bin 658 -> 0 bytes
 kwin-styles/glow/themes/glass_large/stickyon.png   |  Bin 178 -> 0 bytes
 .../glow/themes/glass_large/stickyon_glow.png      |  Bin 674 -> 0 bytes
 .../glow/themes/glass_verylarge/CMakeLists.txt     |   22 -
 .../glow/themes/glass_verylarge/Makefile.am        |   17 -
 .../glow/themes/glass_verylarge/background.png     |  Bin 1520 -> 0 bytes
 kwin-styles/glow/themes/glass_verylarge/close.png  |  Bin 197 -> 0 bytes
 .../glow/themes/glass_verylarge/close_glow.png     |  Bin 1048 -> 0 bytes
 .../themes/glass_verylarge/glass_verylarge.theme   |   19 -
 kwin-styles/glow/themes/glass_verylarge/help.png   |  Bin 190 -> 0 bytes
 .../glow/themes/glass_verylarge/help_glow.png      |  Bin 1070 -> 0 bytes
 .../glow/themes/glass_verylarge/iconify.png        |  Bin 201 -> 0 bytes
 .../glow/themes/glass_verylarge/iconify_glow.png   |  Bin 1063 -> 0 bytes
 .../glow/themes/glass_verylarge/maximizeoff.png    |  Bin 179 -> 0 bytes
 .../themes/glass_verylarge/maximizeoff_glow.png    |  Bin 1060 -> 0 bytes
 .../glow/themes/glass_verylarge/maximizeon.png     |  Bin 201 -> 0 bytes
 .../themes/glass_verylarge/maximizeon_glow.png     |  Bin 1073 -> 0 bytes
 .../glow/themes/glass_verylarge/stickyoff.png      |  Bin 185 -> 0 bytes
 .../glow/themes/glass_verylarge/stickyoff_glow.png |  Bin 1059 -> 0 bytes
 .../glow/themes/glass_verylarge/stickyon.png       |  Bin 183 -> 0 bytes
 .../glow/themes/glass_verylarge/stickyon_glow.png  |  Bin 1045 -> 0 bytes
 kwin-styles/glow/themes/square/CMakeLists.txt      |   22 -
 kwin-styles/glow/themes/square/Makefile.am         |   17 -
 kwin-styles/glow/themes/square/background.png      |  Bin 287 -> 0 bytes
 kwin-styles/glow/themes/square/close.png           |  Bin 122 -> 0 bytes
 kwin-styles/glow/themes/square/close_glow.png      |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/help.png            |  Bin 120 -> 0 bytes
 kwin-styles/glow/themes/square/help_glow.png       |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/iconify.png         |  Bin 120 -> 0 bytes
 kwin-styles/glow/themes/square/iconify_glow.png    |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/maximizeoff.png     |  Bin 109 -> 0 bytes
 .../glow/themes/square/maximizeoff_glow.png        |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/maximizeon.png      |  Bin 129 -> 0 bytes
 kwin-styles/glow/themes/square/maximizeon_glow.png |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/square.theme        |   19 -
 kwin-styles/glow/themes/square/stickyoff.png       |  Bin 103 -> 0 bytes
 kwin-styles/glow/themes/square/stickyoff_glow.png  |  Bin 164 -> 0 bytes
 kwin-styles/glow/themes/square/stickyon.png        |  Bin 115 -> 0 bytes
 kwin-styles/glow/themes/square/stickyon_glow.png   |  Bin 164 -> 0 bytes
 kwin-styles/icewm/CMakeLists.txt                   |   35 -
 kwin-styles/icewm/Makefile.am                      |   21 -
 kwin-styles/icewm/config/CMakeLists.txt            |   28 -
 kwin-styles/icewm/config/Makefile.am               |   16 -
 kwin-styles/icewm/config/config.cpp                |  271 ---
 kwin-styles/icewm/config/config.h                  |   77 -
 kwin-styles/icewm/icewm-themes/CMakeLists.txt      |   21 -
 kwin-styles/icewm/icewm-themes/Makefile.am         |   12 -
 kwin-styles/icewm/icewm-themes/closeA.xpm          |   69 -
 kwin-styles/icewm/icewm-themes/closeI.xpm          |   69 -
 kwin-styles/icewm/icewm-themes/default.theme       |   48 -
 kwin-styles/icewm/icewm-themes/depthA.xpm          |   69 -
 kwin-styles/icewm/icewm-themes/depthI.xpm          |   69 -
 kwin-styles/icewm/icewm-themes/maximizeA.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/maximizeI.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/menuButtonA.xpm     |   68 -
 kwin-styles/icewm/icewm-themes/menuButtonI.xpm     |   68 -
 kwin-styles/icewm/icewm-themes/minimizeA.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/minimizeI.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/restoreA.xpm        |   68 -
 kwin-styles/icewm/icewm-themes/restoreI.xpm        |   68 -
 kwin-styles/icewm/icewm-themes/rolldownA.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/rolldownI.xpm       |   68 -
 kwin-styles/icewm/icewm-themes/rollupA.xpm         |   68 -
 kwin-styles/icewm/icewm-themes/rollupI.xpm         |   68 -
 kwin-styles/icewm/icewm-themes/titleAB.xpm         |   32 -
 kwin-styles/icewm/icewm-themes/titleAJ.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleAM.xpm         |   73 -
 kwin-styles/icewm/icewm-themes/titleAP.xpm         |   73 -
 kwin-styles/icewm/icewm-themes/titleAQ.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleAR.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleAS.xpm         |   32 -
 kwin-styles/icewm/icewm-themes/titleAT.xpm         |   38 -
 kwin-styles/icewm/icewm-themes/titleIB.xpm         |   32 -
 kwin-styles/icewm/icewm-themes/titleIJ.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleIM.xpm         |   66 -
 kwin-styles/icewm/icewm-themes/titleIP.xpm         |   66 -
 kwin-styles/icewm/icewm-themes/titleIQ.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleIR.xpm         |   37 -
 kwin-styles/icewm/icewm-themes/titleIS.xpm         |   32 -
 kwin-styles/icewm/icewm-themes/titleIT.xpm         |   38 -
 kwin-styles/icewm/icewm.cpp                        | 1703 ------------------
 kwin-styles/icewm/icewm.desktop                    |   11 -
 kwin-styles/icewm/icewm.h                          |  193 ---
 kwin-styles/kde1/CMakeLists.txt                    |   32 -
 kwin-styles/kde1/Makefile.am                       |   16 -
 kwin-styles/kde1/kde1.desktop                      |    7 -
 kwin-styles/kde1/kde1client.cpp                    |  809 ---------
 kwin-styles/kde1/kde1client.h                      |  158 --
 kwin-styles/kde1/kde1client_bitmaps.h              |  149 --
 kwin-styles/kstep/CMakeLists.txt                   |   32 -
 kwin-styles/kstep/Makefile.am                      |   22 -
 kwin-styles/kstep/kstep.desktop                    |   12 -
 kwin-styles/kstep/nextclient.cpp                   |  987 -----------
 kwin-styles/kstep/nextclient.h                     |  126 --
 kwin-styles/openlook/CMakeLists.txt                |   33 -
 kwin-styles/openlook/Makefile.am                   |   16 -
 kwin-styles/openlook/OpenLook.cpp                  |  728 --------
 kwin-styles/openlook/OpenLook.h                    |  116 --
 kwin-styles/openlook/openlook.desktop              |   14 -
 kwin-styles/riscos/AboveButton.cpp                 |   65 -
 kwin-styles/riscos/AboveButton.h                   |   51 -
 kwin-styles/riscos/Button.cpp                      |  153 --
 kwin-styles/riscos/Button.h                        |   82 -
 kwin-styles/riscos/CMakeLists.txt                  |   52 -
 kwin-styles/riscos/CloseButton.cpp                 |   66 -
 kwin-styles/riscos/CloseButton.h                   |   53 -
 kwin-styles/riscos/HelpButton.cpp                  |   66 -
 kwin-styles/riscos/HelpButton.h                    |   53 -
 kwin-styles/riscos/IconifyButton.cpp               |   66 -
 kwin-styles/riscos/IconifyButton.h                 |   53 -
 kwin-styles/riscos/LowerButton.cpp                 |   66 -
 kwin-styles/riscos/LowerButton.h                   |   53 -
 kwin-styles/riscos/Makefile.am                     |   39 -
 kwin-styles/riscos/Manager.cpp                     |  767 ---------
 kwin-styles/riscos/Manager.h                       |  125 --
 kwin-styles/riscos/MaximiseButton.cpp              |   98 --
 kwin-styles/riscos/MaximiseButton.h                |   61 -
 kwin-styles/riscos/Palette.h                       |   69 -
 kwin-styles/riscos/README                          |   90 -
 kwin-styles/riscos/Static.cpp                      |  540 ------
 kwin-styles/riscos/Static.h                        |  134 --
 kwin-styles/riscos/StickyButton.cpp                |   99 --
 kwin-styles/riscos/StickyButton.h                  |   61 -
 kwin-styles/riscos/riscos.desktop                  |   11 -
 kwin-styles/smooth-blend/AUTHORS                   |    1 -
 kwin-styles/smooth-blend/CMakeLists.txt            |   12 -
 kwin-styles/smooth-blend/COPYING                   |  340 ----
 kwin-styles/smooth-blend/CREDITS                   |    5 -
 kwin-styles/smooth-blend/ChangeLog                 |   22 -
 kwin-styles/smooth-blend/INSTALL                   |  167 --
 kwin-styles/smooth-blend/Makefile.am               |    1 -
 kwin-styles/smooth-blend/NEWS                      |    0
 kwin-styles/smooth-blend/README                    |   15 -
 kwin-styles/smooth-blend/TODO                      |    4 -
 kwin-styles/smooth-blend/client/CMakeLists.txt     |   38 -
 kwin-styles/smooth-blend/client/Makefile.am        |   20 -
 kwin-styles/smooth-blend/client/buttons.h          | 1798 --------------------
 .../smooth-blend/client/config/CMakeLists.txt      |   32 -
 kwin-styles/smooth-blend/client/config/Makefile.am |   15 -
 .../smooth-blend/client/config/configdialog.ui     |  421 -----
 .../client/config/smoothblendconfig.cc             |  180 --
 .../smooth-blend/client/config/smoothblendconfig.h |   56 -
 kwin-styles/smooth-blend/client/smoothblend.cc     | 1396 ---------------
 .../smooth-blend/client/smoothblend.desktop        |   40 -
 kwin-styles/smooth-blend/client/smoothblend.h      |  256 ---
 kwin-styles/system/CMakeLists.txt                  |   32 -
 kwin-styles/system/Makefile.am                     |   21 -
 kwin-styles/system/system.desktop                  |   27 -
 kwin-styles/system/systemclient.cpp                |  737 --------
 kwin-styles/system/systemclient.h                  |  113 --
 twin-styles/CMakeLists.txt                         |   22 +
 twin-styles/Makefile.am                            |    4 +
 twin-styles/cde/CMakeLists.txt                     |   34 +
 twin-styles/cde/Makefile.am                        |   22 +
 twin-styles/cde/cde.desktop                        |    6 +
 twin-styles/cde/cdeclient.cpp                      |  863 ++++++++++
 twin-styles/cde/cdeclient.h                        |  119 ++
 twin-styles/cde/config/CMakeLists.txt              |   28 +
 twin-styles/cde/config/Makefile.am                 |   17 +
 twin-styles/cde/config/config.cpp                  |  131 ++
 twin-styles/cde/config/config.h                    |   52 +
 twin-styles/configure.in.in                        |    3 +
 twin-styles/glow/CMakeLists.txt                    |   35 +
 twin-styles/glow/Makefile.am                       |   22 +
 twin-styles/glow/config/CMakeLists.txt             |   28 +
 twin-styles/glow/config/Makefile.am                |   17 +
 twin-styles/glow/config/bitmaps.h                  |   55 +
 twin-styles/glow/config/glowconfigdialog.cpp       |  369 ++++
 twin-styles/glow/config/glowconfigdialog.h         |   92 +
 twin-styles/glow/glow.desktop                      |   49 +
 twin-styles/glow/glowbutton.cpp                    |  339 ++++
 twin-styles/glow/glowbutton.h                      |  129 ++
 twin-styles/glow/glowclient.cpp                    |  902 ++++++++++
 twin-styles/glow/glowclient.h                      |  206 +++
 twin-styles/glow/resources.h                       |   11 +
 twin-styles/glow/themes/CMakeLists.txt             |   17 +
 twin-styles/glow/themes/Makefile.am                |    1 +
 twin-styles/glow/themes/default/CMakeLists.txt     |   22 +
 twin-styles/glow/themes/default/Makefile.am        |   17 +
 twin-styles/glow/themes/default/background.png     |  Bin 0 -> 788 bytes
 twin-styles/glow/themes/default/close.png          |  Bin 0 -> 122 bytes
 twin-styles/glow/themes/default/close_glow.png     |  Bin 0 -> 179 bytes
 twin-styles/glow/themes/default/default.theme      |   19 +
 twin-styles/glow/themes/default/help.png           |  Bin 0 -> 120 bytes
 twin-styles/glow/themes/default/help_glow.png      |  Bin 0 -> 174 bytes
 twin-styles/glow/themes/default/iconify.png        |  Bin 0 -> 120 bytes
 twin-styles/glow/themes/default/iconify_glow.png   |  Bin 0 -> 177 bytes
 twin-styles/glow/themes/default/maximizeoff.png    |  Bin 0 -> 109 bytes
 .../glow/themes/default/maximizeoff_glow.png       |  Bin 0 -> 166 bytes
 twin-styles/glow/themes/default/maximizeon.png     |  Bin 0 -> 129 bytes
 .../glow/themes/default/maximizeon_glow.png        |  Bin 0 -> 186 bytes
 twin-styles/glow/themes/default/stickyoff.png      |  Bin 0 -> 103 bytes
 twin-styles/glow/themes/default/stickyoff_glow.png |  Bin 0 -> 161 bytes
 twin-styles/glow/themes/default/stickyon.png       |  Bin 0 -> 115 bytes
 twin-styles/glow/themes/default/stickyon_glow.png  |  Bin 0 -> 173 bytes
 twin-styles/glow/themes/glass/CMakeLists.txt       |   22 +
 twin-styles/glow/themes/glass/Makefile.am          |   17 +
 twin-styles/glow/themes/glass/background.png       |  Bin 0 -> 794 bytes
 twin-styles/glow/themes/glass/close.png            |  Bin 0 -> 186 bytes
 twin-styles/glow/themes/glass/close_glow.png       |  Bin 0 -> 567 bytes
 twin-styles/glow/themes/glass/glass.theme          |   19 +
 twin-styles/glow/themes/glass/help.png             |  Bin 0 -> 183 bytes
 twin-styles/glow/themes/glass/help_glow.png        |  Bin 0 -> 554 bytes
 twin-styles/glow/themes/glass/iconify.png          |  Bin 0 -> 190 bytes
 twin-styles/glow/themes/glass/iconify_glow.png     |  Bin 0 -> 575 bytes
 twin-styles/glow/themes/glass/maximizeoff.png      |  Bin 0 -> 169 bytes
 twin-styles/glow/themes/glass/maximizeoff_glow.png |  Bin 0 -> 518 bytes
 twin-styles/glow/themes/glass/maximizeon.png       |  Bin 0 -> 188 bytes
 twin-styles/glow/themes/glass/maximizeon_glow.png  |  Bin 0 -> 541 bytes
 twin-styles/glow/themes/glass/stickyoff.png        |  Bin 0 -> 178 bytes
 twin-styles/glow/themes/glass/stickyoff_glow.png   |  Bin 0 -> 597 bytes
 twin-styles/glow/themes/glass/stickyon.png         |  Bin 0 -> 180 bytes
 twin-styles/glow/themes/glass/stickyon_glow.png    |  Bin 0 -> 564 bytes
 twin-styles/glow/themes/glass_huge/CMakeLists.txt  |   22 +
 twin-styles/glow/themes/glass_huge/Makefile.am     |   17 +
 twin-styles/glow/themes/glass_huge/background.png  |  Bin 0 -> 2094 bytes
 twin-styles/glow/themes/glass_huge/close.png       |  Bin 0 -> 207 bytes
 twin-styles/glow/themes/glass_huge/close_glow.png  |  Bin 0 -> 1386 bytes
 .../glow/themes/glass_huge/glass_huge.theme        |   19 +
 twin-styles/glow/themes/glass_huge/help.png        |  Bin 0 -> 199 bytes
 twin-styles/glow/themes/glass_huge/help_glow.png   |  Bin 0 -> 1398 bytes
 twin-styles/glow/themes/glass_huge/iconify.png     |  Bin 0 -> 206 bytes
 .../glow/themes/glass_huge/iconify_glow.png        |  Bin 0 -> 1395 bytes
 twin-styles/glow/themes/glass_huge/maximizeoff.png |  Bin 0 -> 187 bytes
 .../glow/themes/glass_huge/maximizeoff_glow.png    |  Bin 0 -> 1397 bytes
 twin-styles/glow/themes/glass_huge/maximizeon.png  |  Bin 0 -> 206 bytes
 .../glow/themes/glass_huge/maximizeon_glow.png     |  Bin 0 -> 1417 bytes
 twin-styles/glow/themes/glass_huge/stickyoff.png   |  Bin 0 -> 192 bytes
 .../glow/themes/glass_huge/stickyoff_glow.png      |  Bin 0 -> 1409 bytes
 twin-styles/glow/themes/glass_huge/stickyon.png    |  Bin 0 -> 194 bytes
 .../glow/themes/glass_huge/stickyon_glow.png       |  Bin 0 -> 1414 bytes
 twin-styles/glow/themes/glass_large/CMakeLists.txt |   22 +
 twin-styles/glow/themes/glass_large/Makefile.am    |   17 +
 twin-styles/glow/themes/glass_large/background.png |  Bin 0 -> 1217 bytes
 twin-styles/glow/themes/glass_large/close.png      |  Bin 0 -> 190 bytes
 twin-styles/glow/themes/glass_large/close_glow.png |  Bin 0 -> 731 bytes
 .../glow/themes/glass_large/glass_large.theme      |   19 +
 twin-styles/glow/themes/glass_large/help.png       |  Bin 0 -> 187 bytes
 twin-styles/glow/themes/glass_large/help_glow.png  |  Bin 0 -> 720 bytes
 twin-styles/glow/themes/glass_large/iconify.png    |  Bin 0 -> 194 bytes
 .../glow/themes/glass_large/iconify_glow.png       |  Bin 0 -> 723 bytes
 .../glow/themes/glass_large/maximizeoff.png        |  Bin 0 -> 174 bytes
 .../glow/themes/glass_large/maximizeoff_glow.png   |  Bin 0 -> 667 bytes
 twin-styles/glow/themes/glass_large/maximizeon.png |  Bin 0 -> 195 bytes
 .../glow/themes/glass_large/maximizeon_glow.png    |  Bin 0 -> 700 bytes
 twin-styles/glow/themes/glass_large/stickyoff.png  |  Bin 0 -> 182 bytes
 .../glow/themes/glass_large/stickyoff_glow.png     |  Bin 0 -> 658 bytes
 twin-styles/glow/themes/glass_large/stickyon.png   |  Bin 0 -> 178 bytes
 .../glow/themes/glass_large/stickyon_glow.png      |  Bin 0 -> 674 bytes
 .../glow/themes/glass_verylarge/CMakeLists.txt     |   22 +
 .../glow/themes/glass_verylarge/Makefile.am        |   17 +
 .../glow/themes/glass_verylarge/background.png     |  Bin 0 -> 1520 bytes
 twin-styles/glow/themes/glass_verylarge/close.png  |  Bin 0 -> 197 bytes
 .../glow/themes/glass_verylarge/close_glow.png     |  Bin 0 -> 1048 bytes
 .../themes/glass_verylarge/glass_verylarge.theme   |   19 +
 twin-styles/glow/themes/glass_verylarge/help.png   |  Bin 0 -> 190 bytes
 .../glow/themes/glass_verylarge/help_glow.png      |  Bin 0 -> 1070 bytes
 .../glow/themes/glass_verylarge/iconify.png        |  Bin 0 -> 201 bytes
 .../glow/themes/glass_verylarge/iconify_glow.png   |  Bin 0 -> 1063 bytes
 .../glow/themes/glass_verylarge/maximizeoff.png    |  Bin 0 -> 179 bytes
 .../themes/glass_verylarge/maximizeoff_glow.png    |  Bin 0 -> 1060 bytes
 .../glow/themes/glass_verylarge/maximizeon.png     |  Bin 0 -> 201 bytes
 .../themes/glass_verylarge/maximizeon_glow.png     |  Bin 0 -> 1073 bytes
 .../glow/themes/glass_verylarge/stickyoff.png      |  Bin 0 -> 185 bytes
 .../glow/themes/glass_verylarge/stickyoff_glow.png |  Bin 0 -> 1059 bytes
 .../glow/themes/glass_verylarge/stickyon.png       |  Bin 0 -> 183 bytes
 .../glow/themes/glass_verylarge/stickyon_glow.png  |  Bin 0 -> 1045 bytes
 twin-styles/glow/themes/square/CMakeLists.txt      |   22 +
 twin-styles/glow/themes/square/Makefile.am         |   17 +
 twin-styles/glow/themes/square/background.png      |  Bin 0 -> 287 bytes
 twin-styles/glow/themes/square/close.png           |  Bin 0 -> 122 bytes
 twin-styles/glow/themes/square/close_glow.png      |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/help.png            |  Bin 0 -> 120 bytes
 twin-styles/glow/themes/square/help_glow.png       |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/iconify.png         |  Bin 0 -> 120 bytes
 twin-styles/glow/themes/square/iconify_glow.png    |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/maximizeoff.png     |  Bin 0 -> 109 bytes
 .../glow/themes/square/maximizeoff_glow.png        |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/maximizeon.png      |  Bin 0 -> 129 bytes
 twin-styles/glow/themes/square/maximizeon_glow.png |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/square.theme        |   19 +
 twin-styles/glow/themes/square/stickyoff.png       |  Bin 0 -> 103 bytes
 twin-styles/glow/themes/square/stickyoff_glow.png  |  Bin 0 -> 164 bytes
 twin-styles/glow/themes/square/stickyon.png        |  Bin 0 -> 115 bytes
 twin-styles/glow/themes/square/stickyon_glow.png   |  Bin 0 -> 164 bytes
 twin-styles/icewm/CMakeLists.txt                   |   35 +
 twin-styles/icewm/Makefile.am                      |   21 +
 twin-styles/icewm/config/CMakeLists.txt            |   28 +
 twin-styles/icewm/config/Makefile.am               |   16 +
 twin-styles/icewm/config/config.cpp                |  271 +++
 twin-styles/icewm/config/config.h                  |   77 +
 twin-styles/icewm/icewm-themes/CMakeLists.txt      |   21 +
 twin-styles/icewm/icewm-themes/Makefile.am         |   12 +
 twin-styles/icewm/icewm-themes/closeA.xpm          |   69 +
 twin-styles/icewm/icewm-themes/closeI.xpm          |   69 +
 twin-styles/icewm/icewm-themes/default.theme       |   48 +
 twin-styles/icewm/icewm-themes/depthA.xpm          |   69 +
 twin-styles/icewm/icewm-themes/depthI.xpm          |   69 +
 twin-styles/icewm/icewm-themes/maximizeA.xpm       |   68 +
 twin-styles/icewm/icewm-themes/maximizeI.xpm       |   68 +
 twin-styles/icewm/icewm-themes/menuButtonA.xpm     |   68 +
 twin-styles/icewm/icewm-themes/menuButtonI.xpm     |   68 +
 twin-styles/icewm/icewm-themes/minimizeA.xpm       |   68 +
 twin-styles/icewm/icewm-themes/minimizeI.xpm       |   68 +
 twin-styles/icewm/icewm-themes/restoreA.xpm        |   68 +
 twin-styles/icewm/icewm-themes/restoreI.xpm        |   68 +
 twin-styles/icewm/icewm-themes/rolldownA.xpm       |   68 +
 twin-styles/icewm/icewm-themes/rolldownI.xpm       |   68 +
 twin-styles/icewm/icewm-themes/rollupA.xpm         |   68 +
 twin-styles/icewm/icewm-themes/rollupI.xpm         |   68 +
 twin-styles/icewm/icewm-themes/titleAB.xpm         |   32 +
 twin-styles/icewm/icewm-themes/titleAJ.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleAM.xpm         |   73 +
 twin-styles/icewm/icewm-themes/titleAP.xpm         |   73 +
 twin-styles/icewm/icewm-themes/titleAQ.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleAR.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleAS.xpm         |   32 +
 twin-styles/icewm/icewm-themes/titleAT.xpm         |   38 +
 twin-styles/icewm/icewm-themes/titleIB.xpm         |   32 +
 twin-styles/icewm/icewm-themes/titleIJ.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleIM.xpm         |   66 +
 twin-styles/icewm/icewm-themes/titleIP.xpm         |   66 +
 twin-styles/icewm/icewm-themes/titleIQ.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleIR.xpm         |   37 +
 twin-styles/icewm/icewm-themes/titleIS.xpm         |   32 +
 twin-styles/icewm/icewm-themes/titleIT.xpm         |   38 +
 twin-styles/icewm/icewm.cpp                        | 1703 ++++++++++++++++++
 twin-styles/icewm/icewm.desktop                    |   11 +
 twin-styles/icewm/icewm.h                          |  193 +++
 twin-styles/kde1/CMakeLists.txt                    |   32 +
 twin-styles/kde1/Makefile.am                       |   16 +
 twin-styles/kde1/kde1.desktop                      |    7 +
 twin-styles/kde1/kde1client.cpp                    |  809 +++++++++
 twin-styles/kde1/kde1client.h                      |  158 ++
 twin-styles/kde1/kde1client_bitmaps.h              |  149 ++
 twin-styles/kstep/CMakeLists.txt                   |   32 +
 twin-styles/kstep/Makefile.am                      |   22 +
 twin-styles/kstep/kstep.desktop                    |   12 +
 twin-styles/kstep/nextclient.cpp                   |  987 +++++++++++
 twin-styles/kstep/nextclient.h                     |  126 ++
 twin-styles/openlook/CMakeLists.txt                |   33 +
 twin-styles/openlook/Makefile.am                   |   16 +
 twin-styles/openlook/OpenLook.cpp                  |  728 ++++++++
 twin-styles/openlook/OpenLook.h                    |  116 ++
 twin-styles/openlook/openlook.desktop              |   14 +
 twin-styles/riscos/AboveButton.cpp                 |   65 +
 twin-styles/riscos/AboveButton.h                   |   51 +
 twin-styles/riscos/Button.cpp                      |  153 ++
 twin-styles/riscos/Button.h                        |   82 +
 twin-styles/riscos/CMakeLists.txt                  |   52 +
 twin-styles/riscos/CloseButton.cpp                 |   66 +
 twin-styles/riscos/CloseButton.h                   |   53 +
 twin-styles/riscos/HelpButton.cpp                  |   66 +
 twin-styles/riscos/HelpButton.h                    |   53 +
 twin-styles/riscos/IconifyButton.cpp               |   66 +
 twin-styles/riscos/IconifyButton.h                 |   53 +
 twin-styles/riscos/LowerButton.cpp                 |   66 +
 twin-styles/riscos/LowerButton.h                   |   53 +
 twin-styles/riscos/Makefile.am                     |   39 +
 twin-styles/riscos/Manager.cpp                     |  767 +++++++++
 twin-styles/riscos/Manager.h                       |  125 ++
 twin-styles/riscos/MaximiseButton.cpp              |   98 ++
 twin-styles/riscos/MaximiseButton.h                |   61 +
 twin-styles/riscos/Palette.h                       |   69 +
 twin-styles/riscos/README                          |   90 +
 twin-styles/riscos/Static.cpp                      |  540 ++++++
 twin-styles/riscos/Static.h                        |  134 ++
 twin-styles/riscos/StickyButton.cpp                |   99 ++
 twin-styles/riscos/StickyButton.h                  |   61 +
 twin-styles/riscos/riscos.desktop                  |   11 +
 twin-styles/smooth-blend/AUTHORS                   |    1 +
 twin-styles/smooth-blend/CMakeLists.txt            |   12 +
 twin-styles/smooth-blend/COPYING                   |  340 ++++
 twin-styles/smooth-blend/CREDITS                   |    5 +
 twin-styles/smooth-blend/ChangeLog                 |   22 +
 twin-styles/smooth-blend/INSTALL                   |  167 ++
 twin-styles/smooth-blend/Makefile.am               |    1 +
 twin-styles/smooth-blend/NEWS                      |    0
 twin-styles/smooth-blend/README                    |   15 +
 twin-styles/smooth-blend/TODO                      |    4 +
 twin-styles/smooth-blend/client/CMakeLists.txt     |   38 +
 twin-styles/smooth-blend/client/Makefile.am        |   20 +
 twin-styles/smooth-blend/client/buttons.h          | 1798 ++++++++++++++++++++
 .../smooth-blend/client/config/CMakeLists.txt      |   32 +
 twin-styles/smooth-blend/client/config/Makefile.am |   15 +
 .../smooth-blend/client/config/configdialog.ui     |  421 +++++
 .../client/config/smoothblendconfig.cc             |  180 ++
 .../smooth-blend/client/config/smoothblendconfig.h |   56 +
 twin-styles/smooth-blend/client/smoothblend.cc     | 1396 +++++++++++++++
 .../smooth-blend/client/smoothblend.desktop        |   40 +
 twin-styles/smooth-blend/client/smoothblend.h      |  256 +++
 twin-styles/system/CMakeLists.txt                  |   32 +
 twin-styles/system/Makefile.am                     |   21 +
 twin-styles/system/system.desktop                  |   27 +
 twin-styles/system/systemclient.cpp                |  737 ++++++++
 twin-styles/system/systemclient.h                  |  113 ++
 516 files changed, 20132 insertions(+), 20132 deletions(-)
 delete mode 100644 IconThemes/Locolor/16x16/apps/kwin.png
 delete mode 100644 IconThemes/Locolor/16x16/apps/kwin4.png
 create mode 100644 IconThemes/Locolor/16x16/apps/twin.png
 create mode 100644 IconThemes/Locolor/16x16/apps/twin4.png
 delete mode 100644 IconThemes/Locolor/32x32/apps/kwin.png
 delete mode 100644 IconThemes/Locolor/32x32/apps/kwin4.png
 create mode 100644 IconThemes/Locolor/32x32/apps/twin.png
 create mode 100644 IconThemes/Locolor/32x32/apps/twin4.png
 delete mode 100644 IconThemes/kdeclassic/16x16/apps/kwin.png
 delete mode 100644 IconThemes/kdeclassic/16x16/apps/kwin4.png
 create mode 100644 IconThemes/kdeclassic/16x16/apps/twin.png
 create mode 100644 IconThemes/kdeclassic/16x16/apps/twin4.png
 delete mode 100644 IconThemes/kdeclassic/32x32/apps/kwin.png
 delete mode 100644 IconThemes/kdeclassic/32x32/apps/kwin4.png
 create mode 100644 IconThemes/kdeclassic/32x32/apps/twin.png
 create mode 100644 IconThemes/kdeclassic/32x32/apps/twin4.png
 delete mode 100644 IconThemes/kdeclassic/48x48/apps/kwin.png
 delete mode 100644 IconThemes/kdeclassic/48x48/apps/kwin4.png
 create mode 100644 IconThemes/kdeclassic/48x48/apps/twin.png
 create mode 100644 IconThemes/kdeclassic/48x48/apps/twin4.png
 delete mode 100644 IconThemes/slick/16x16/apps/kwin.png
 create mode 100644 IconThemes/slick/16x16/apps/twin.png
 delete mode 100644 IconThemes/slick/22x22/apps/kwin.png
 create mode 100644 IconThemes/slick/22x22/apps/twin.png
 delete mode 100644 kwin-styles/CMakeLists.txt
 delete mode 100644 kwin-styles/Makefile.am
 delete mode 100644 kwin-styles/cde/CMakeLists.txt
 delete mode 100644 kwin-styles/cde/Makefile.am
 delete mode 100644 kwin-styles/cde/cde.desktop
 delete mode 100644 kwin-styles/cde/cdeclient.cpp
 delete mode 100644 kwin-styles/cde/cdeclient.h
 delete mode 100644 kwin-styles/cde/config/CMakeLists.txt
 delete mode 100644 kwin-styles/cde/config/Makefile.am
 delete mode 100644 kwin-styles/cde/config/config.cpp
 delete mode 100644 kwin-styles/cde/config/config.h
 delete mode 100644 kwin-styles/configure.in.in
 delete mode 100644 kwin-styles/glow/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/Makefile.am
 delete mode 100644 kwin-styles/glow/config/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/config/Makefile.am
 delete mode 100644 kwin-styles/glow/config/bitmaps.h
 delete mode 100644 kwin-styles/glow/config/glowconfigdialog.cpp
 delete mode 100644 kwin-styles/glow/config/glowconfigdialog.h
 delete mode 100644 kwin-styles/glow/glow.desktop
 delete mode 100644 kwin-styles/glow/glowbutton.cpp
 delete mode 100644 kwin-styles/glow/glowbutton.h
 delete mode 100644 kwin-styles/glow/glowclient.cpp
 delete mode 100644 kwin-styles/glow/glowclient.h
 delete mode 100644 kwin-styles/glow/resources.h
 delete mode 100644 kwin-styles/glow/themes/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/default/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/default/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/default/background.png
 delete mode 100644 kwin-styles/glow/themes/default/close.png
 delete mode 100644 kwin-styles/glow/themes/default/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/default.theme
 delete mode 100644 kwin-styles/glow/themes/default/help.png
 delete mode 100644 kwin-styles/glow/themes/default/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/iconify.png
 delete mode 100644 kwin-styles/glow/themes/default/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/default/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/default/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/default/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/default/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/default/stickyon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/glass/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/glass/background.png
 delete mode 100644 kwin-styles/glow/themes/glass/close.png
 delete mode 100644 kwin-styles/glow/themes/glass/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/glass.theme
 delete mode 100644 kwin-styles/glow/themes/glass/help.png
 delete mode 100644 kwin-styles/glow/themes/glass/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/iconify.png
 delete mode 100644 kwin-styles/glow/themes/glass/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/glass/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/glass/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/glass/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/glass/stickyon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/glass_huge/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/glass_huge/background.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/close.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/glass_huge.theme
 delete mode 100644 kwin-styles/glow/themes/glass_huge/help.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/iconify.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/glass_huge/stickyon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/glass_large/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/glass_large/background.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/close.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/glass_large.theme
 delete mode 100644 kwin-styles/glow/themes/glass_large/help.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/iconify.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/glass_large/stickyon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/background.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/close.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/help.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/iconify.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/glass_verylarge/stickyon_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/CMakeLists.txt
 delete mode 100644 kwin-styles/glow/themes/square/Makefile.am
 delete mode 100644 kwin-styles/glow/themes/square/background.png
 delete mode 100644 kwin-styles/glow/themes/square/close.png
 delete mode 100644 kwin-styles/glow/themes/square/close_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/help.png
 delete mode 100644 kwin-styles/glow/themes/square/help_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/iconify.png
 delete mode 100644 kwin-styles/glow/themes/square/iconify_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/maximizeoff.png
 delete mode 100644 kwin-styles/glow/themes/square/maximizeoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/maximizeon.png
 delete mode 100644 kwin-styles/glow/themes/square/maximizeon_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/square.theme
 delete mode 100644 kwin-styles/glow/themes/square/stickyoff.png
 delete mode 100644 kwin-styles/glow/themes/square/stickyoff_glow.png
 delete mode 100644 kwin-styles/glow/themes/square/stickyon.png
 delete mode 100644 kwin-styles/glow/themes/square/stickyon_glow.png
 delete mode 100644 kwin-styles/icewm/CMakeLists.txt
 delete mode 100644 kwin-styles/icewm/Makefile.am
 delete mode 100644 kwin-styles/icewm/config/CMakeLists.txt
 delete mode 100644 kwin-styles/icewm/config/Makefile.am
 delete mode 100644 kwin-styles/icewm/config/config.cpp
 delete mode 100644 kwin-styles/icewm/config/config.h
 delete mode 100644 kwin-styles/icewm/icewm-themes/CMakeLists.txt
 delete mode 100644 kwin-styles/icewm/icewm-themes/Makefile.am
 delete mode 100644 kwin-styles/icewm/icewm-themes/closeA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/closeI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/default.theme
 delete mode 100644 kwin-styles/icewm/icewm-themes/depthA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/depthI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/maximizeA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/maximizeI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/menuButtonA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/menuButtonI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/minimizeA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/minimizeI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/restoreA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/restoreI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/rolldownA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/rolldownI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/rollupA.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/rollupI.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAB.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAJ.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAM.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAP.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAQ.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAR.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAS.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleAT.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIB.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIJ.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIM.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIP.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIQ.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIR.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIS.xpm
 delete mode 100644 kwin-styles/icewm/icewm-themes/titleIT.xpm
 delete mode 100644 kwin-styles/icewm/icewm.cpp
 delete mode 100644 kwin-styles/icewm/icewm.desktop
 delete mode 100644 kwin-styles/icewm/icewm.h
 delete mode 100644 kwin-styles/kde1/CMakeLists.txt
 delete mode 100644 kwin-styles/kde1/Makefile.am
 delete mode 100644 kwin-styles/kde1/kde1.desktop
 delete mode 100644 kwin-styles/kde1/kde1client.cpp
 delete mode 100644 kwin-styles/kde1/kde1client.h
 delete mode 100644 kwin-styles/kde1/kde1client_bitmaps.h
 delete mode 100644 kwin-styles/kstep/CMakeLists.txt
 delete mode 100644 kwin-styles/kstep/Makefile.am
 delete mode 100644 kwin-styles/kstep/kstep.desktop
 delete mode 100644 kwin-styles/kstep/nextclient.cpp
 delete mode 100644 kwin-styles/kstep/nextclient.h
 delete mode 100644 kwin-styles/openlook/CMakeLists.txt
 delete mode 100644 kwin-styles/openlook/Makefile.am
 delete mode 100644 kwin-styles/openlook/OpenLook.cpp
 delete mode 100644 kwin-styles/openlook/OpenLook.h
 delete mode 100644 kwin-styles/openlook/openlook.desktop
 delete mode 100644 kwin-styles/riscos/AboveButton.cpp
 delete mode 100644 kwin-styles/riscos/AboveButton.h
 delete mode 100644 kwin-styles/riscos/Button.cpp
 delete mode 100644 kwin-styles/riscos/Button.h
 delete mode 100644 kwin-styles/riscos/CMakeLists.txt
 delete mode 100644 kwin-styles/riscos/CloseButton.cpp
 delete mode 100644 kwin-styles/riscos/CloseButton.h
 delete mode 100644 kwin-styles/riscos/HelpButton.cpp
 delete mode 100644 kwin-styles/riscos/HelpButton.h
 delete mode 100644 kwin-styles/riscos/IconifyButton.cpp
 delete mode 100644 kwin-styles/riscos/IconifyButton.h
 delete mode 100644 kwin-styles/riscos/LowerButton.cpp
 delete mode 100644 kwin-styles/riscos/LowerButton.h
 delete mode 100644 kwin-styles/riscos/Makefile.am
 delete mode 100644 kwin-styles/riscos/Manager.cpp
 delete mode 100644 kwin-styles/riscos/Manager.h
 delete mode 100644 kwin-styles/riscos/MaximiseButton.cpp
 delete mode 100644 kwin-styles/riscos/MaximiseButton.h
 delete mode 100644 kwin-styles/riscos/Palette.h
 delete mode 100644 kwin-styles/riscos/README
 delete mode 100644 kwin-styles/riscos/Static.cpp
 delete mode 100644 kwin-styles/riscos/Static.h
 delete mode 100644 kwin-styles/riscos/StickyButton.cpp
 delete mode 100644 kwin-styles/riscos/StickyButton.h
 delete mode 100644 kwin-styles/riscos/riscos.desktop
 delete mode 100644 kwin-styles/smooth-blend/AUTHORS
 delete mode 100644 kwin-styles/smooth-blend/CMakeLists.txt
 delete mode 100644 kwin-styles/smooth-blend/COPYING
 delete mode 100644 kwin-styles/smooth-blend/CREDITS
 delete mode 100644 kwin-styles/smooth-blend/ChangeLog
 delete mode 100644 kwin-styles/smooth-blend/INSTALL
 delete mode 100644 kwin-styles/smooth-blend/Makefile.am
 delete mode 100644 kwin-styles/smooth-blend/NEWS
 delete mode 100644 kwin-styles/smooth-blend/README
 delete mode 100644 kwin-styles/smooth-blend/TODO
 delete mode 100644 kwin-styles/smooth-blend/client/CMakeLists.txt
 delete mode 100644 kwin-styles/smooth-blend/client/Makefile.am
 delete mode 100644 kwin-styles/smooth-blend/client/buttons.h
 delete mode 100644 kwin-styles/smooth-blend/client/config/CMakeLists.txt
 delete mode 100644 kwin-styles/smooth-blend/client/config/Makefile.am
 delete mode 100644 kwin-styles/smooth-blend/client/config/configdialog.ui
 delete mode 100644 kwin-styles/smooth-blend/client/config/smoothblendconfig.cc
 delete mode 100644 kwin-styles/smooth-blend/client/config/smoothblendconfig.h
 delete mode 100644 kwin-styles/smooth-blend/client/smoothblend.cc
 delete mode 100644 kwin-styles/smooth-blend/client/smoothblend.desktop
 delete mode 100644 kwin-styles/smooth-blend/client/smoothblend.h
 delete mode 100644 kwin-styles/system/CMakeLists.txt
 delete mode 100644 kwin-styles/system/Makefile.am
 delete mode 100644 kwin-styles/system/system.desktop
 delete mode 100644 kwin-styles/system/systemclient.cpp
 delete mode 100644 kwin-styles/system/systemclient.h
 create mode 100644 twin-styles/CMakeLists.txt
 create mode 100644 twin-styles/Makefile.am
 create mode 100644 twin-styles/cde/CMakeLists.txt
 create mode 100644 twin-styles/cde/Makefile.am
 create mode 100644 twin-styles/cde/cde.desktop
 create mode 100644 twin-styles/cde/cdeclient.cpp
 create mode 100644 twin-styles/cde/cdeclient.h
 create mode 100644 twin-styles/cde/config/CMakeLists.txt
 create mode 100644 twin-styles/cde/config/Makefile.am
 create mode 100644 twin-styles/cde/config/config.cpp
 create mode 100644 twin-styles/cde/config/config.h
 create mode 100644 twin-styles/configure.in.in
 create mode 100644 twin-styles/glow/CMakeLists.txt
 create mode 100644 twin-styles/glow/Makefile.am
 create mode 100644 twin-styles/glow/config/CMakeLists.txt
 create mode 100644 twin-styles/glow/config/Makefile.am
 create mode 100644 twin-styles/glow/config/bitmaps.h
 create mode 100644 twin-styles/glow/config/glowconfigdialog.cpp
 create mode 100644 twin-styles/glow/config/glowconfigdialog.h
 create mode 100644 twin-styles/glow/glow.desktop
 create mode 100644 twin-styles/glow/glowbutton.cpp
 create mode 100644 twin-styles/glow/glowbutton.h
 create mode 100644 twin-styles/glow/glowclient.cpp
 create mode 100644 twin-styles/glow/glowclient.h
 create mode 100644 twin-styles/glow/resources.h
 create mode 100644 twin-styles/glow/themes/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/Makefile.am
 create mode 100644 twin-styles/glow/themes/default/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/default/Makefile.am
 create mode 100644 twin-styles/glow/themes/default/background.png
 create mode 100644 twin-styles/glow/themes/default/close.png
 create mode 100644 twin-styles/glow/themes/default/close_glow.png
 create mode 100644 twin-styles/glow/themes/default/default.theme
 create mode 100644 twin-styles/glow/themes/default/help.png
 create mode 100644 twin-styles/glow/themes/default/help_glow.png
 create mode 100644 twin-styles/glow/themes/default/iconify.png
 create mode 100644 twin-styles/glow/themes/default/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/default/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/default/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/default/maximizeon.png
 create mode 100644 twin-styles/glow/themes/default/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/default/stickyoff.png
 create mode 100644 twin-styles/glow/themes/default/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/default/stickyon.png
 create mode 100644 twin-styles/glow/themes/default/stickyon_glow.png
 create mode 100644 twin-styles/glow/themes/glass/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/glass/Makefile.am
 create mode 100644 twin-styles/glow/themes/glass/background.png
 create mode 100644 twin-styles/glow/themes/glass/close.png
 create mode 100644 twin-styles/glow/themes/glass/close_glow.png
 create mode 100644 twin-styles/glow/themes/glass/glass.theme
 create mode 100644 twin-styles/glow/themes/glass/help.png
 create mode 100644 twin-styles/glow/themes/glass/help_glow.png
 create mode 100644 twin-styles/glow/themes/glass/iconify.png
 create mode 100644 twin-styles/glow/themes/glass/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/glass/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/glass/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass/maximizeon.png
 create mode 100644 twin-styles/glow/themes/glass/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/glass/stickyoff.png
 create mode 100644 twin-styles/glow/themes/glass/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass/stickyon.png
 create mode 100644 twin-styles/glow/themes/glass/stickyon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/glass_huge/Makefile.am
 create mode 100644 twin-styles/glow/themes/glass_huge/background.png
 create mode 100644 twin-styles/glow/themes/glass_huge/close.png
 create mode 100644 twin-styles/glow/themes/glass_huge/close_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/glass_huge.theme
 create mode 100644 twin-styles/glow/themes/glass_huge/help.png
 create mode 100644 twin-styles/glow/themes/glass_huge/help_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/iconify.png
 create mode 100644 twin-styles/glow/themes/glass_huge/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/glass_huge/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/maximizeon.png
 create mode 100644 twin-styles/glow/themes/glass_huge/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/stickyoff.png
 create mode 100644 twin-styles/glow/themes/glass_huge/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_huge/stickyon.png
 create mode 100644 twin-styles/glow/themes/glass_huge/stickyon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/glass_large/Makefile.am
 create mode 100644 twin-styles/glow/themes/glass_large/background.png
 create mode 100644 twin-styles/glow/themes/glass_large/close.png
 create mode 100644 twin-styles/glow/themes/glass_large/close_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/glass_large.theme
 create mode 100644 twin-styles/glow/themes/glass_large/help.png
 create mode 100644 twin-styles/glow/themes/glass_large/help_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/iconify.png
 create mode 100644 twin-styles/glow/themes/glass_large/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/glass_large/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/maximizeon.png
 create mode 100644 twin-styles/glow/themes/glass_large/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/stickyoff.png
 create mode 100644 twin-styles/glow/themes/glass_large/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_large/stickyon.png
 create mode 100644 twin-styles/glow/themes/glass_large/stickyon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/glass_verylarge/Makefile.am
 create mode 100644 twin-styles/glow/themes/glass_verylarge/background.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/close.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/close_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
 create mode 100644 twin-styles/glow/themes/glass_verylarge/help.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/help_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/iconify.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/maximizeon.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/stickyoff.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/stickyon.png
 create mode 100644 twin-styles/glow/themes/glass_verylarge/stickyon_glow.png
 create mode 100644 twin-styles/glow/themes/square/CMakeLists.txt
 create mode 100644 twin-styles/glow/themes/square/Makefile.am
 create mode 100644 twin-styles/glow/themes/square/background.png
 create mode 100644 twin-styles/glow/themes/square/close.png
 create mode 100644 twin-styles/glow/themes/square/close_glow.png
 create mode 100644 twin-styles/glow/themes/square/help.png
 create mode 100644 twin-styles/glow/themes/square/help_glow.png
 create mode 100644 twin-styles/glow/themes/square/iconify.png
 create mode 100644 twin-styles/glow/themes/square/iconify_glow.png
 create mode 100644 twin-styles/glow/themes/square/maximizeoff.png
 create mode 100644 twin-styles/glow/themes/square/maximizeoff_glow.png
 create mode 100644 twin-styles/glow/themes/square/maximizeon.png
 create mode 100644 twin-styles/glow/themes/square/maximizeon_glow.png
 create mode 100644 twin-styles/glow/themes/square/square.theme
 create mode 100644 twin-styles/glow/themes/square/stickyoff.png
 create mode 100644 twin-styles/glow/themes/square/stickyoff_glow.png
 create mode 100644 twin-styles/glow/themes/square/stickyon.png
 create mode 100644 twin-styles/glow/themes/square/stickyon_glow.png
 create mode 100644 twin-styles/icewm/CMakeLists.txt
 create mode 100644 twin-styles/icewm/Makefile.am
 create mode 100644 twin-styles/icewm/config/CMakeLists.txt
 create mode 100644 twin-styles/icewm/config/Makefile.am
 create mode 100644 twin-styles/icewm/config/config.cpp
 create mode 100644 twin-styles/icewm/config/config.h
 create mode 100644 twin-styles/icewm/icewm-themes/CMakeLists.txt
 create mode 100644 twin-styles/icewm/icewm-themes/Makefile.am
 create mode 100644 twin-styles/icewm/icewm-themes/closeA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/closeI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/default.theme
 create mode 100644 twin-styles/icewm/icewm-themes/depthA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/depthI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/maximizeA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/maximizeI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/menuButtonA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/menuButtonI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/minimizeA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/minimizeI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/restoreA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/restoreI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/rolldownA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/rolldownI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/rollupA.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/rollupI.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAB.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAJ.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAM.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAP.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAQ.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAR.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAS.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleAT.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIB.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIJ.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIM.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIP.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIQ.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIR.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIS.xpm
 create mode 100644 twin-styles/icewm/icewm-themes/titleIT.xpm
 create mode 100644 twin-styles/icewm/icewm.cpp
 create mode 100644 twin-styles/icewm/icewm.desktop
 create mode 100644 twin-styles/icewm/icewm.h
 create mode 100644 twin-styles/kde1/CMakeLists.txt
 create mode 100644 twin-styles/kde1/Makefile.am
 create mode 100644 twin-styles/kde1/kde1.desktop
 create mode 100644 twin-styles/kde1/kde1client.cpp
 create mode 100644 twin-styles/kde1/kde1client.h
 create mode 100644 twin-styles/kde1/kde1client_bitmaps.h
 create mode 100644 twin-styles/kstep/CMakeLists.txt
 create mode 100644 twin-styles/kstep/Makefile.am
 create mode 100644 twin-styles/kstep/kstep.desktop
 create mode 100644 twin-styles/kstep/nextclient.cpp
 create mode 100644 twin-styles/kstep/nextclient.h
 create mode 100644 twin-styles/openlook/CMakeLists.txt
 create mode 100644 twin-styles/openlook/Makefile.am
 create mode 100644 twin-styles/openlook/OpenLook.cpp
 create mode 100644 twin-styles/openlook/OpenLook.h
 create mode 100644 twin-styles/openlook/openlook.desktop
 create mode 100644 twin-styles/riscos/AboveButton.cpp
 create mode 100644 twin-styles/riscos/AboveButton.h
 create mode 100644 twin-styles/riscos/Button.cpp
 create mode 100644 twin-styles/riscos/Button.h
 create mode 100644 twin-styles/riscos/CMakeLists.txt
 create mode 100644 twin-styles/riscos/CloseButton.cpp
 create mode 100644 twin-styles/riscos/CloseButton.h
 create mode 100644 twin-styles/riscos/HelpButton.cpp
 create mode 100644 twin-styles/riscos/HelpButton.h
 create mode 100644 twin-styles/riscos/IconifyButton.cpp
 create mode 100644 twin-styles/riscos/IconifyButton.h
 create mode 100644 twin-styles/riscos/LowerButton.cpp
 create mode 100644 twin-styles/riscos/LowerButton.h
 create mode 100644 twin-styles/riscos/Makefile.am
 create mode 100644 twin-styles/riscos/Manager.cpp
 create mode 100644 twin-styles/riscos/Manager.h
 create mode 100644 twin-styles/riscos/MaximiseButton.cpp
 create mode 100644 twin-styles/riscos/MaximiseButton.h
 create mode 100644 twin-styles/riscos/Palette.h
 create mode 100644 twin-styles/riscos/README
 create mode 100644 twin-styles/riscos/Static.cpp
 create mode 100644 twin-styles/riscos/Static.h
 create mode 100644 twin-styles/riscos/StickyButton.cpp
 create mode 100644 twin-styles/riscos/StickyButton.h
 create mode 100644 twin-styles/riscos/riscos.desktop
 create mode 100644 twin-styles/smooth-blend/AUTHORS
 create mode 100644 twin-styles/smooth-blend/CMakeLists.txt
 create mode 100644 twin-styles/smooth-blend/COPYING
 create mode 100644 twin-styles/smooth-blend/CREDITS
 create mode 100644 twin-styles/smooth-blend/ChangeLog
 create mode 100644 twin-styles/smooth-blend/INSTALL
 create mode 100644 twin-styles/smooth-blend/Makefile.am
 create mode 100644 twin-styles/smooth-blend/NEWS
 create mode 100644 twin-styles/smooth-blend/README
 create mode 100644 twin-styles/smooth-blend/TODO
 create mode 100644 twin-styles/smooth-blend/client/CMakeLists.txt
 create mode 100644 twin-styles/smooth-blend/client/Makefile.am
 create mode 100644 twin-styles/smooth-blend/client/buttons.h
 create mode 100644 twin-styles/smooth-blend/client/config/CMakeLists.txt
 create mode 100644 twin-styles/smooth-blend/client/config/Makefile.am
 create mode 100644 twin-styles/smooth-blend/client/config/configdialog.ui
 create mode 100644 twin-styles/smooth-blend/client/config/smoothblendconfig.cc
 create mode 100644 twin-styles/smooth-blend/client/config/smoothblendconfig.h
 create mode 100644 twin-styles/smooth-blend/client/smoothblend.cc
 create mode 100644 twin-styles/smooth-blend/client/smoothblend.desktop
 create mode 100644 twin-styles/smooth-blend/client/smoothblend.h
 create mode 100644 twin-styles/system/CMakeLists.txt
 create mode 100644 twin-styles/system/Makefile.am
 create mode 100644 twin-styles/system/system.desktop
 create mode 100644 twin-styles/system/systemclient.cpp
 create mode 100644 twin-styles/system/systemclient.h

diff --git a/IconThemes/Locolor/16x16/apps/kwin.png b/IconThemes/Locolor/16x16/apps/kwin.png
deleted file mode 100644
index 7c245e55..00000000
Binary files a/IconThemes/Locolor/16x16/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/Locolor/16x16/apps/kwin4.png b/IconThemes/Locolor/16x16/apps/kwin4.png
deleted file mode 100644
index 8e33f15e..00000000
Binary files a/IconThemes/Locolor/16x16/apps/kwin4.png and /dev/null differ
diff --git a/IconThemes/Locolor/16x16/apps/twin.png b/IconThemes/Locolor/16x16/apps/twin.png
new file mode 100644
index 00000000..7c245e55
Binary files /dev/null and b/IconThemes/Locolor/16x16/apps/twin.png differ
diff --git a/IconThemes/Locolor/16x16/apps/twin4.png b/IconThemes/Locolor/16x16/apps/twin4.png
new file mode 100644
index 00000000..8e33f15e
Binary files /dev/null and b/IconThemes/Locolor/16x16/apps/twin4.png differ
diff --git a/IconThemes/Locolor/32x32/apps/kwin.png b/IconThemes/Locolor/32x32/apps/kwin.png
deleted file mode 100644
index 78f011dd..00000000
Binary files a/IconThemes/Locolor/32x32/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/Locolor/32x32/apps/kwin4.png b/IconThemes/Locolor/32x32/apps/kwin4.png
deleted file mode 100644
index 6898f174..00000000
Binary files a/IconThemes/Locolor/32x32/apps/kwin4.png and /dev/null differ
diff --git a/IconThemes/Locolor/32x32/apps/twin.png b/IconThemes/Locolor/32x32/apps/twin.png
new file mode 100644
index 00000000..78f011dd
Binary files /dev/null and b/IconThemes/Locolor/32x32/apps/twin.png differ
diff --git a/IconThemes/Locolor/32x32/apps/twin4.png b/IconThemes/Locolor/32x32/apps/twin4.png
new file mode 100644
index 00000000..6898f174
Binary files /dev/null and b/IconThemes/Locolor/32x32/apps/twin4.png differ
diff --git a/IconThemes/kdeclassic/16x16/apps/kwin.png b/IconThemes/kdeclassic/16x16/apps/kwin.png
deleted file mode 100644
index a35eace4..00000000
Binary files a/IconThemes/kdeclassic/16x16/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/16x16/apps/kwin4.png b/IconThemes/kdeclassic/16x16/apps/kwin4.png
deleted file mode 100644
index 8e33f15e..00000000
Binary files a/IconThemes/kdeclassic/16x16/apps/kwin4.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/16x16/apps/twin.png b/IconThemes/kdeclassic/16x16/apps/twin.png
new file mode 100644
index 00000000..a35eace4
Binary files /dev/null and b/IconThemes/kdeclassic/16x16/apps/twin.png differ
diff --git a/IconThemes/kdeclassic/16x16/apps/twin4.png b/IconThemes/kdeclassic/16x16/apps/twin4.png
new file mode 100644
index 00000000..8e33f15e
Binary files /dev/null and b/IconThemes/kdeclassic/16x16/apps/twin4.png differ
diff --git a/IconThemes/kdeclassic/32x32/apps/kwin.png b/IconThemes/kdeclassic/32x32/apps/kwin.png
deleted file mode 100644
index 00e5c0c2..00000000
Binary files a/IconThemes/kdeclassic/32x32/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/32x32/apps/kwin4.png b/IconThemes/kdeclassic/32x32/apps/kwin4.png
deleted file mode 100644
index 6898f174..00000000
Binary files a/IconThemes/kdeclassic/32x32/apps/kwin4.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/32x32/apps/twin.png b/IconThemes/kdeclassic/32x32/apps/twin.png
new file mode 100644
index 00000000..00e5c0c2
Binary files /dev/null and b/IconThemes/kdeclassic/32x32/apps/twin.png differ
diff --git a/IconThemes/kdeclassic/32x32/apps/twin4.png b/IconThemes/kdeclassic/32x32/apps/twin4.png
new file mode 100644
index 00000000..6898f174
Binary files /dev/null and b/IconThemes/kdeclassic/32x32/apps/twin4.png differ
diff --git a/IconThemes/kdeclassic/48x48/apps/kwin.png b/IconThemes/kdeclassic/48x48/apps/kwin.png
deleted file mode 100644
index 52995400..00000000
Binary files a/IconThemes/kdeclassic/48x48/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/48x48/apps/kwin4.png b/IconThemes/kdeclassic/48x48/apps/kwin4.png
deleted file mode 100644
index 5a04f731..00000000
Binary files a/IconThemes/kdeclassic/48x48/apps/kwin4.png and /dev/null differ
diff --git a/IconThemes/kdeclassic/48x48/apps/twin.png b/IconThemes/kdeclassic/48x48/apps/twin.png
new file mode 100644
index 00000000..52995400
Binary files /dev/null and b/IconThemes/kdeclassic/48x48/apps/twin.png differ
diff --git a/IconThemes/kdeclassic/48x48/apps/twin4.png b/IconThemes/kdeclassic/48x48/apps/twin4.png
new file mode 100644
index 00000000..5a04f731
Binary files /dev/null and b/IconThemes/kdeclassic/48x48/apps/twin4.png differ
diff --git a/IconThemes/slick/16x16/apps/kwin.png b/IconThemes/slick/16x16/apps/kwin.png
deleted file mode 100644
index ad5a3565..00000000
Binary files a/IconThemes/slick/16x16/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/slick/16x16/apps/twin.png b/IconThemes/slick/16x16/apps/twin.png
new file mode 100644
index 00000000..ad5a3565
Binary files /dev/null and b/IconThemes/slick/16x16/apps/twin.png differ
diff --git a/IconThemes/slick/22x22/apps/kwin.png b/IconThemes/slick/22x22/apps/kwin.png
deleted file mode 100644
index b3b6f29d..00000000
Binary files a/IconThemes/slick/22x22/apps/kwin.png and /dev/null differ
diff --git a/IconThemes/slick/22x22/apps/twin.png b/IconThemes/slick/22x22/apps/twin.png
new file mode 100644
index 00000000..b3b6f29d
Binary files /dev/null and b/IconThemes/slick/22x22/apps/twin.png differ
diff --git a/kwin-styles/CMakeLists.txt b/kwin-styles/CMakeLists.txt
deleted file mode 100644
index 255bbf18..00000000
--- a/kwin-styles/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include( "${TDE_CMAKE_DIR}/twin.cmake" )
-
-add_subdirectory( cde )
-add_subdirectory( glow )
-add_subdirectory( icewm )
-add_subdirectory( kde1 )
-add_subdirectory( kstep )
-add_subdirectory( openlook )
-add_subdirectory( riscos )
-add_subdirectory( smooth-blend )
-add_subdirectory( system )
diff --git a/kwin-styles/Makefile.am b/kwin-styles/Makefile.am
deleted file mode 100644
index 76abee7d..00000000
--- a/kwin-styles/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = kstep glow cde icewm openlook kde1 system riscos smooth-blend
-
-messages:
-	$(XGETTEXT) `find . -name \*.cpp` -o $(podir)/twin_art_clients.pot
diff --git a/kwin-styles/cde/CMakeLists.txt b/kwin-styles/cde/CMakeLists.txt
deleted file mode 100644
index 790ff84c..00000000
--- a/kwin-styles/cde/CMakeLists.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( config )
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES cde.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_cde ##################################
-
-tde_add_kpart( twin3_cde AUTOMOC
-  SOURCES cdeclient.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/cde/Makefile.am b/kwin-styles/cde/Makefile.am
deleted file mode 100644
index 129a22bc..00000000
--- a/kwin-styles/cde/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-INCLUDES = $(all_includes) 
-
-SUBDIRS = . config
-
-kde_module_LTLIBRARIES = twin3_cde.la
-
-twin3_cde_la_SOURCES = cdeclient.cpp
-twin3_cde_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_cde_la_LIBADD = -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = cdeclient.h
-
-lnkdir = $(kde_datadir)/twin/
-lnk_DATA = cde.desktop
-
-EXTRA_DIST = $(lnk_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/cde/cde.desktop b/kwin-styles/cde/cde.desktop
deleted file mode 100644
index a5f1ac66..00000000
--- a/kwin-styles/cde/cde.desktop
+++ /dev/null
@@ -1,6 +0,0 @@
-[Desktop Entry]
-Name=CDE
-Name[af]=Cde
-Name[hi]=सीडीई
-Name[ne]=सीडीई
-X-KDE-Library=twin3_cde
diff --git a/kwin-styles/cde/cdeclient.cpp b/kwin-styles/cde/cdeclient.cpp
deleted file mode 100644
index 03eb14fa..00000000
--- a/kwin-styles/cde/cdeclient.cpp
+++ /dev/null
@@ -1,863 +0,0 @@
-/*
- *	$Id$
- *
- *	CDE KWin client - emulates the look and feel
- *	of dtwm, the CDE window manager.
- *
- *	Copyright (c) 2000-2001, 2002
- *		Chris Lee       <lee@azsites.com>
- *		Lennart Kudling <kudling@kde.org>
- *      	Fredrik H�glund <fredrik@kde.org>
- *
- *	Copyright (c) 2003,2004
- *		Luciano Montanaro <mikelima@cirulla.net>
- *
- *	Originally based on the KStep client.
- *
- *	Distributed under the terms of the BSD license.
- */
-
-#include "cdeclient.h"
-#include <tqdatetime.h>
-#include <tqlayout.h>
-#include <tqbutton.h>
-#include <tqcursor.h>
-#include <tqlabel.h>
-#include <tqtooltip.h>
-#include <tqdrawutil.h>
-#include <tqpainter.h>
-#include <tqapplication.h>
-#include <klocale.h>
-#include <kconfig.h>
-
-extern "C" KDE_EXPORT KDecorationFactory* create_factory()
-{
-    return new CDE::CdeClientFactory();
-}
-
-namespace CDE {
-
-static int s_frameWidth = 5;
-static int s_buttonSize = 19;
-static bool titlebarButtonMode = true;
-static bool coloredFrame = true;
-static TQt::AlignmentFlags textAlignment = TQt::AlignHCenter;
-
-// Precomputed border sizes for accessibility
-// The sizes are applied for tiny -> normal -> large -> very large -> huge ->
-// very huge -> oversized
-static const int borderSizes[] = { 4, 6, 9, 12, 18, 26, 42 };
-
-// Parameters needed to draw the widgets (offsets from the border)
-static int s_o1 = 4;
-static int s_o2 = 7;
-static int s_w1 = 11;
-static int s_w2 = 5;
-
-// These are the line segments for the X on the close button
-
-static const int NUM_CLOSEL_COORDS = 2 * 14;
-static const TQCOORD closeLLinesTemplate[NUM_CLOSEL_COORDS] =
-    { 14,3, 12,3,  12,3, 9,6,  5,3, 3,3,  3,3, 3,5,
-      3,5, 6,8, 6,9, 3,12,  3,12, 3,14 };
-
-static const int NUM_CLOSED_COORDS = 2 * 18;
-static const TQCOORD closeDLinesTemplate[NUM_CLOSED_COORDS] =
-    { 5,3, 8,6,  14,4, 14,5,  14,5, 11,8,  11,9, 14,12,  14,12, 14,14,
-      14,14, 12,14,  12,14, 9,11,  8,11, 5,14,  5,14, 4,14 };
-
-static TQCOORD closeLLines[NUM_CLOSEL_COORDS];
-
-static TQCOORD closeDLines[NUM_CLOSED_COORDS];
-
-// These are the line segments for the ? on the help button
-static const int NUM_HELPL_COORDS = 2 * 16;
-static const TQCOORD helpLLinesTemplate[NUM_HELPL_COORDS] =
-    { 4,6, 4,5,  4,5, 6,3,  6,3, 9,3,  10,3, 11,4,
-      9,7, 7,9,  7,9, 7,10,  7,14, 7,13,  8,12, 9,12  };
-
-static const int NUM_HELPD_COORDS = 2 * 14;
-static const TQCOORD helpDLinesTemplate[NUM_HELPD_COORDS] =
-    {  5,7, 8,6,  12,5, 12,8,  12,8, 10,10,  10,10, 10,11,
-       10,11, 8,11,  10,14, 10,13,  9,15, 8,15 };
-
-static TQCOORD helpLLines[NUM_HELPL_COORDS];
-
-static TQCOORD helpDLines[NUM_HELPD_COORDS];
-
-
-// This question mark is taller than the one above and
-// is positioned one pixel higher on the button
-/*
-static const TQCOORD helpLLines[] =
-    { 4,5, 4,4,  4,4, 6,2,  6,2, 9,2,  10,2, 11,3,
-      9,6, 7,8,  7,9, 7,10,  7,13, 8,12,  8,12, 9,12  };
-
-static const TQCOORD helpDLines[] =
-    {  5,6, 8,5,  12,4, 12,7,  12,7, 10,9,  10,10, 10,11,
-       10,11, 8,11,  10,13, 9,14,  9,14, 8,14 };
-*/
-// Same as the one above but with a larger dot under
-// the question mark
-/*
-static const TQCOORD helpLLines[] =
-    { 4,5, 4,4,  4,4, 6,2,  6,2, 9,2,  10,2, 11,3,
-      9,6, 7,8,  7,9, 7,10,  7,14, 7,13,  8,12, 9,12  };
-
-static const TQCOORD helpDLines[] =
-    {  5,6, 8,5,  12,4, 12,7,  12,7, 10,9,  10,10, 10,11,
-       10,11, 8,11,  10,13, 10,14,  9,15, 8,15 };
-*/
-
-static inline const KDecorationOptions* options()
-{
-    return KDecoration::options();
-}
-
-static void fixColorGroup(TQColorGroup & tqcolorGroup)
-{
-    TQColor light = tqcolorGroup.light();
-
-    int hue, saturation, value;
-
-    light.hsv(&hue, &saturation, &value);
-
-    if (value < 128)
-    {
-      light.setHsv(hue, saturation, 128);
-      tqcolorGroup.setColor(TQColorGroup::Light, light);
-    }
-
-    TQColor dark = tqcolorGroup.dark();
-
-    dark.hsv(&hue, &saturation, &value);
-
-    if (value < 84)
-    {
-      dark.setHsv(hue, saturation, 84);
-      tqcolorGroup.setColor(TQColorGroup::Dark, dark);
-    }
-}
-
-// scaling helper function used to scale the close 'X' glyph
-
-static int scaleCoord(int c)
-{
-    if (c < 6) return c;
-    if (c <= 11) return c + (s_buttonSize - 19) / 2;
-    return c + s_buttonSize - 19;
-}
-
-static void readConfig(CdeClientFactory *f)
-{
-    KConfig conf( "twincderc" );
-
-    conf.setGroup("General");
-    coloredFrame = conf.readBoolEntry( "UseTitleBarBorderColors", true );
-    titlebarButtonMode = conf.readBoolEntry( "TitlebarButtonMode", true );
-
-    TQString value = conf.readEntry( "TextAlignment", "AlignHCenter" );
-    if ( value == "AlignLeft" )
-	textAlignment = TQt::AlignLeft;
-    else if ( value == "AlignHCenter" )
-	textAlignment = TQt::AlignHCenter;
-    else if ( value == "AlignRight" )
-	textAlignment = TQt::AlignRight;
-
-
-    // find preferred border size
-    int i = options()->preferredBorderSize(f);
-    if (i >= 0 && i <= 6) s_frameWidth = borderSizes[i];
-
-    // Do not allow malicious users or corrupt config files to
-    // go past the domain of the valid border sizes.
-
-    // Size limit increased for accessability. LM
-    if (s_frameWidth < 0)  s_frameWidth = 0;
-    if (s_frameWidth > 30) s_frameWidth = 30;
-
-    // Force button size to be in a reasonable range.
-    // If the frame width is large, the button size must be large too.
-    s_buttonSize = TQFontMetrics(options()->font( true )).height() + 2;
-    if (s_buttonSize < 19) s_buttonSize = 19;
-    if (s_buttonSize < s_frameWidth) s_buttonSize = s_frameWidth;
-    s_buttonSize |= 1; // Be sure the button size is odd.
-
-    // Calculate widths and offsets for the button icons
-    s_o1 = s_buttonSize * 4 / 19;
-    s_o2 = s_buttonSize * 7 / 19;
-    s_w1 = s_buttonSize - 2 * s_o1;
-    s_w2 = s_buttonSize - 2 * s_o2;
-
-    // Copy and scale the close icon
-    int offset = (s_buttonSize - 19) / 2;
-    for (int i = 0; i < NUM_CLOSEL_COORDS; i++) {
-	closeLLines[i] = scaleCoord(closeLLinesTemplate[i]);
-    }
-    for (int i = 0; i < NUM_CLOSED_COORDS; i++) {
-	closeDLines[i] = scaleCoord(closeDLinesTemplate[i]);
-    }
-    // Copy and center the help icon
-    for (int i = 0; i < NUM_HELPL_COORDS; i++) {
-	helpLLines[i] = helpLLinesTemplate[i] + offset;
-    }
-    for (int i = 0; i < NUM_HELPD_COORDS; i++) {
-	helpDLines[i] = helpDLinesTemplate[i] + offset;
-    }
-}
-
-// ---------------------------------------
-
-CdeClientFactory::CdeClientFactory()
-{
-    CDE::readConfig(this);
-}
-
-CdeClientFactory::~CdeClientFactory()
-{
-}
-
-KDecoration *CdeClientFactory::createDecoration(KDecorationBridge *b)
-{
-    return new CdeClient(b, this);
-}
-
-bool CdeClientFactory::reset(unsigned long /*changed*/)
-{
-    // TODO Do not recreate decorations if it is not needed. Look at
-    // ModernSystem for how to do that
-    // For now just return true.
-    CDE::readConfig(this);
-    return true;
-}
-
-bool CdeClientFactory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonMenu:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-            return true;
-        default:
-            return false;
-    };
-}
-
-TQValueList< CdeClientFactory::BorderSize >
-CdeClientFactory::borderSizes() const
-{
-    // the list must be sorted
-    return TQValueList< BorderSize >() << BorderTiny << BorderNormal <<
-	BorderLarge << BorderVeryLarge <<  BorderHuge <<
-	BorderVeryHuge << BorderOversized;
-}
-
-// ---------------------------------------
-
-CdeClient::CdeClient(KDecorationBridge *b, KDecorationFactory *f)
-    : KDecoration(b, f)
-{
-}
-
-void CdeClient::init()
-{
-    createMainWidget(WStaticContents | WResizeNoErase | WRepaintNoErase);
-    widget()->installEventFilter(this);
-
-    widget()->setBackgroundMode(NoBackground);
-
-    mainLayout = new TQVBoxLayout(widget());
-    TQBoxLayout* windowLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-    titleLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-
-    // TODO Check if this stuff can be simplified.
-    // Border sizes are from a fixed set now.
-    if ( s_frameWidth > 1 )
-    {
-       // the style normally draws a black frame around the window, so we
-       // need 1 line of space for that in addition to the normal window frame
-    	mainLayout->setMargin( s_frameWidth+1 );
-    }
-    else
-    {
-	// but if the frame is set to just 1 pixel we just draw the black frame
-	// instead of the normal window frame, so no extra space is needed. if
-	// its 0 we don't draw anything.
-    	mainLayout->setMargin( s_frameWidth );
-    }
-
-    mainLayout->addLayout( titleLayout );
-    mainLayout->addLayout( windowLayout, 1 );
-
-    if (isPreview())
-        windowLayout->addWidget(new TQLabel(i18n(
-			"<center><b>CDE preview</b></center>"), widget()), 1);
-    else
-    	windowLayout->addItem( new TQSpacerItem( 0, 0 ));
-
-    for ( int i=0; i < BtnCount; i++ )
-        button[i] = NULL;
-
-    addClientButtons( options()->titleButtonsLeft() );
-
-    titlebar = new TQSpacerItem( 10, 16, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
-    titleLayout->addItem( titlebar );
-
-    addClientButtons( options()->titleButtonsRight() );
-
-    titlebarPressed = false;
-    closing = false;
-}
-
-void CdeClient::addClientButtons( const TQString& s )
-{
-    if ( s.length() > 0 )
-        for ( unsigned int i = 0; i < s.length(); i++ )
-        {
-            switch( s[i].latin1() )
-            {
-                // Menu button
-                case 'M':
-                    if ( ! button[BtnMenu] )
-                    {
-                        button[BtnMenu] = new CdeButton( this, "menu", BtnMenu, i18n("Menu"), Qt::LeftButton|Qt::RightButton );
-                        connect( button[BtnMenu], TQT_SIGNAL(pressed()), TQT_SLOT(menuButtonPressed()) );
-                        connect( button[BtnMenu], TQT_SIGNAL(released()), TQT_SLOT(menuButtonReleased()) );
-                        titleLayout->addWidget( button[BtnMenu] );
-                    }
-                    break;
-
-                //Help button
-                case 'H':
-                    if ( providesContextHelp() && (! button[BtnHelp] ) )
-                    {
-                        button[BtnHelp] = new CdeButton( this, "help", BtnHelp, i18n("Help") );
-                        connect(button[BtnHelp],
-				TQT_SIGNAL(clicked()), TQT_SLOT(showContextHelp()));
-                        titleLayout->addWidget( button[BtnHelp] );
-                    }
-                    break;
-
-		//Minimize button
-                case 'I':
-                    if ( (! button[BtnIconify] ) && isMinimizable() )
-                    {
-                        button[BtnIconify] = new CdeButton( this, "iconify", BtnIconify, i18n("Minimize") );
-                        connect(button[BtnIconify],
-				TQT_SIGNAL(clicked()), TQT_SLOT(minimize()));
-                        titleLayout->addWidget( button[BtnIconify] );
-                    }
-                    break;
-
-                // Maximize button
-                case 'A':
-                    if ( (! button[BtnMax] ) && isMaximizable() )
-                    {
-                        button[BtnMax] = new CdeButton(this, "maximize", BtnMax, i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
-                        connect(button[BtnMax], TQT_SIGNAL(clicked()),
-				TQT_SLOT(maximizeButtonClicked()));
-                        titleLayout->addWidget( button[BtnMax] );
-                    }
-                    break;
-
-                // Close button
-                case 'X':
-                    if ( !button[BtnClose] && isCloseable())
-                    {
-                        button[BtnClose] = new CdeButton(this, "close", BtnClose, i18n("Close"));
-                        connect( button[BtnClose], TQT_SIGNAL( clicked()), TQT_SLOT(closeWindow()) );
-                        titleLayout->addWidget( button[BtnClose] );
-                    }
-		// Add onAlldesktops button and spacers
-            }
-        }
-
-}
-
-void CdeClient::captionChange()
-{
-    widget()->tqrepaint(titlebar->tqgeometry(), false);
-}
-
-void CdeClient::activeChange()
-{
-    for ( int i=0; i < BtnCount; i++ )
-	if ( button[i] ) button[i]->reset();
-
-    widget()->tqrepaint(false);
-}
-
-void CdeClient::maximizeChange()
-{
-    if ( button[BtnMax] ) {
-	bool m = maximizeMode() == MaximizeFull;
-	TQToolTip::remove(button[BtnMax]);
-	TQToolTip::add(button[BtnMax], m ? i18n("Restore") : i18n("Maximize"));
-	button[BtnMax]->tqrepaint();
-    }
-}
-
-void CdeClient::iconChange()
-{
-}
-
-void CdeClient::shadeChange()
-{
-}
-
-void CdeClient::showEvent(TQShowEvent *)
-{
-    widget()->tqrepaint();
-}
-
-void CdeClient::desktopChange()
-{
-    // Nothing to do yet
-}
-
-TQSize CdeClient::tqminimumSize() const
-{
-    return TQSize(2 * (s_buttonSize + s_frameWidth),
-	         2 * s_frameWidth + s_buttonSize);
-}
-
-void CdeClient::resize(const TQSize& s)
-{
-    widget()->resize(s);
-}
-
-void CdeClient::maximizeButtonClicked()
-{
-    if (button[BtnMax]) {
-	maximize(button[BtnMax]->lastButton());
-    }
-}
-
-void CdeClient::menuButtonPressed()
-{
-    static TQTime* t = NULL;
-    static CdeClient* lastClient = NULL;
-    if( t == NULL )
-	t = new TQTime;
-    bool dbl = ( lastClient == this && t->elapsed() <= TQApplication::doubleClickInterval());
-    lastClient = this;
-    t->start();
-    if( !dbl )
-    {
-	TQRect menuRect = button[BtnMenu]->rect();
-        TQPoint menuTop = button[BtnMenu]->mapToGlobal(menuRect.topLeft());
-        TQPoint menuBottom = 
-	    button[BtnMenu]->mapToGlobal(menuRect.bottomRight());
-        KDecorationFactory* f = factory();
-        showWindowMenu(TQRect(menuTop, menuBottom));
-        if( !f->exists( this )) // 'this' was deleted
-            return;
-	button[BtnMenu]->setDown(false);
-    }
-    else
-       closing = true;
-}
-
-void CdeClient::menuButtonReleased()
-{
-    if( closing )
-        closeWindow();
-}
-
-void CdeClient::resizeEvent( TQResizeEvent* e)
-{
-    if (widget()->isVisibleToTLW()) {
-        widget()->update();
-        int dx = 0;
-        int dy = 0;
-
-	    if ( e->oldSize().width() != width() )
-	       dx = 32 + TQABS( e->oldSize().width() -  width() );
-
-	    if ( e->oldSize().height() != height() )
-	       dy = 8 + TQABS( e->oldSize().height() -  height() );
-
-	    if ( dy )
-	       widget()->update( 0, height() - dy + 1, width(), dy );
-
-        if ( dx )
-        {
-	    widget()->update( width() - dx + 1, 0, dx, height() );
-	    widget()->update( TQRect( TQPoint(4,4),
-	    titlebar->tqgeometry().bottomLeft() - TQPoint(1,0) ) );
-	    widget()->update(TQRect(titlebar->tqgeometry().topRight(),
-			TQPoint(width() - 4, titlebar->tqgeometry().bottom())));
-
-	    // Titlebar needs no paint event
-	    TQApplication::postEvent( this, new TQPaintEvent( titlebar->tqgeometry(), false ) );
-	}
-    }
-}
-
-void CdeClient::paintEvent( TQPaintEvent* )
-{
-    TQPainter p(widget());
-
-    TQColorGroup tqcolorGroup;
-
-    if ( coloredFrame )
-	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorTitleBar, isActive() );
-    else
-	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorFrame, isActive() );
-
-    fixColorGroup( tqcolorGroup );
-
-    TQRect trect = titlebar->tqgeometry();
-    TQRect mrect = widget()->rect();
-
-    if ( s_frameWidth > 0 )
-    {
-	// draw black frame:
-	p.setPen( TQt::black );
-	p.drawRect( mrect );
-    }
-
-    p.setPen( TQt::NoPen );
-    p.setBrush( tqcolorGroup.background() );
-
-
-    if ( s_frameWidth > 1 )
-    {
-	bool shaded = isShade();
-	int longSide = s_frameWidth + s_buttonSize;
-
-	// draw frame-background:
-	p.drawRect( 1, 1,
-    		mrect.width() - 2, s_frameWidth );
-	p.drawRect( 1, mrect.height() - s_frameWidth - 1,
-		mrect.width() - 2, s_frameWidth );
-	p.drawRect( 1, s_frameWidth + 1,
-		s_frameWidth, mrect.height() - 2*s_frameWidth - 2 );
-	p.drawRect( mrect.width() - s_frameWidth - 1, s_frameWidth + 1,
-		s_frameWidth, mrect.height() - 2*s_frameWidth - 2 );
-
-	if ( ! shaded )
-	{
-	    // draw left  and right frames:
-	    qDrawShadePanel( &p, 1, longSide + 1,
-		s_frameWidth, mrect.height() - 2 * (longSide + 1),
-		tqcolorGroup );
-
-	    qDrawShadePanel( &p, mrect.width() - s_frameWidth - 1, longSide + 1,
-		s_frameWidth, mrect.height() - 2 * (longSide + 1),
-		tqcolorGroup );
-	}
-
-	// draw top and bottom frames:
-	qDrawShadePanel( &p, longSide + 1, 1,
-	    mrect.width() - 2 * (longSide + 1), s_frameWidth,
-	    tqcolorGroup );
-
-	qDrawShadePanel( &p, longSide + 1, mrect.height() - s_frameWidth - 1,
-	    mrect.width() - 2 * (longSide + 1), s_frameWidth,
-	    tqcolorGroup );
-
-	// draw light corner parts:
-	p.setPen( tqcolorGroup.light() );
-
-	// tl corner:
-	p.drawLine( 1, 1, longSide - 1, 1 );
-	p.drawLine( 1, 1, 1, longSide - 1 );
-
-	// tr corner:
-	p.drawLine( mrect.width() - 3, 1, mrect.width() - longSide - 1, 1 );
-	p.drawLine( mrect.width() - longSide - 1, 1,
-	    mrect.width() - longSide - 1, s_frameWidth - 1 );
-	p.drawLine( mrect.width() - s_frameWidth - 1, s_frameWidth,
-	    mrect.width() - s_frameWidth - 1, longSide - 1 );
-
-	// br corner:
-	if ( !shaded )
-	{
-	    p.drawLine( mrect.width() - 3, mrect.height() - longSide - 1,
-		mrect.width() - s_frameWidth - 1, mrect.height() - longSide - 1 );
-	}
-	p.drawLine( mrect.width() - s_frameWidth - 1, mrect.height() - longSide,
-	    mrect.width() - s_frameWidth - 1, mrect.height() - s_frameWidth - 1 );
-	p.drawLine( mrect.width() - s_frameWidth - 2, mrect.height() - s_frameWidth - 1,
-	    mrect.width() - longSide - 1, mrect.height() - s_frameWidth - 1 );
-	p.drawLine( mrect.width() - longSide - 1, mrect.height() - s_frameWidth,
-	    mrect.width() - longSide - 1, mrect.height() - 2 );
-
-	// bl corner:
-	if ( !shaded )
-	{
-	    p.drawLine( s_frameWidth-1, mrect.height() - longSide - 1,
-		2, mrect.height() - longSide - 1 );
-	}
-	p.drawLine( 1, mrect.height() - longSide - 1,
-	    1, mrect.height() - 3 );
-	p.drawLine( longSide - 1, mrect.height() - s_frameWidth - 1,
-	    s_frameWidth + 1, mrect.height() - s_frameWidth - 1 );
-
-	// draw dark corner parts:
-	p.setPen( tqcolorGroup.dark() );
-
-	// tl corner:
-	if ( !shaded )
-	    p.drawLine( 1, longSide, s_frameWidth, longSide );
-	p.drawLine( s_frameWidth, longSide - 1, s_frameWidth, s_frameWidth );
-	p.drawLine( s_frameWidth + 1, s_frameWidth, longSide, s_frameWidth );
-	p.drawLine( s_frameWidth + s_buttonSize, s_frameWidth, longSide, 1 );
-
-	// tr corner:
-	p.drawLine( mrect.width() - longSide - 1, s_frameWidth,
-	    mrect.width() - s_frameWidth - 2, s_frameWidth );
-	if ( !shaded )
-	{
-	    p.drawLine( mrect.width() - s_frameWidth - 1, longSide,
-		mrect.width() - 2, longSide );
-	}
-	p.drawLine( mrect.width() - 2, longSide, mrect.width() - 2, 1 );
-
-	// br corner:
-	p.drawLine( mrect.width() - longSide - 1, mrect.height() - 2,
-	    mrect.width() - 3, mrect.height() - 2 );
-	p.drawLine( mrect.width() - 2, mrect.height() - 2,
-	    mrect.width() - 2, mrect.height() - longSide - 2 );
-
-	// bl corner:
-	p.drawLine( 1, mrect.height() - 2,
-		longSide, mrect.height() - 2 );
-	p.drawLine( s_frameWidth + s_buttonSize, mrect.height() - 3,
-		longSide, mrect.height() - s_frameWidth - 1 );
-	p.drawLine( s_frameWidth, mrect.height() - s_frameWidth - 1,
-		s_frameWidth, mrect.height() - longSide - 1 );
-    }
-
-
-    p.setPen( TQt::NoPen );
-
-    if ( !coloredFrame )
-    {
-	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorTitleBar, isActive() );
-	fixColorGroup( tqcolorGroup );
-	p.setBrush( tqcolorGroup.background() );
-    }
-
-    // draw titlebar:
-    p.drawRect( trect );
-    qDrawShadePanel( &p, trect, tqcolorGroup, titlebarPressed );
-
-    // draw caption:
-    if ( titlebarPressed ) // move the caption right and down if the titlebar is pressed
-	trect.moveBy( 1,1 ); // Note: the real Mwm doesn't actually do this
-
-    p.setFont( options()->font( true ) );
-    p.setPen( options()->color( KDecoration::ColorFont, isActive() ) );
-    if ( p.fontMetrics().width( caption() ) > trect.width() - 6 )
-    {
-	// left align the text if its too wide to fit in the titlebar
-	p.drawText( trect.x() + 3, trect.y(),
-	    trect.width() - 6, trect.height(),
-	    AlignLeft | AlignVCenter, caption() );
-    }
-    else
-    {
-	// otherwise we'll draw it according to the user settings
-	p.drawText( trect.x() + 3, trect.y(),
-	    trect.width() - 6, trect.height(),
-	    textAlignment | AlignVCenter, caption() );
-    }
-
-    // Draw a line behind the wrapped window to prevent having
-    // unpainted areas when we're shaded.
-    p.setPen( tqcolorGroup.dark() );
-    p.drawLine(s_frameWidth + 1, mrect.height() - s_frameWidth - 2,
-               mrect.width() - s_frameWidth - 2, mrect.height() - s_frameWidth - 2);
-
-}
-
-KDecoration::Position CdeClient::mousePosition( const TQPoint& p ) const
-{
-    const int range = s_frameWidth + s_buttonSize;
-    const int border = s_frameWidth + 1;
-
-    Position m = PositionCenter;
-
-    if ((p.x() > border && p.x() < width() - border)
-         && (p.y() > border && p.y() < height() - border))
-        return PositionCenter;
-
-    if (p.y() < range && p.x() <= range)
-        m = PositionTopLeft;
-    else if (p.y() >= height() - range && p.x() >= width() - range)
-        m = PositionBottomRight;
-    else if (p.y() >= height()-range && p.x() <= range)
-        m = PositionBottomLeft;
-    else if (p.y() < range && p.x() >= width() - range)
-        m = PositionTopRight;
-    else if (p.y() < border)
-        m = PositionTop;
-    else if (p.y() >= height() - border)
-        m = PositionBottom;
-    else if (p.x() <= border)
-        m = PositionLeft;
-    else if (p.x() >= width() - border)
-        m = PositionRight;
-    else
-        m = PositionCenter;
-    return m;
-}
-
-void CdeClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-	titlebarDblClickOperation();
-}
-
-void CdeClient::wheelEvent( TQWheelEvent * e )
-{
-    if (isSetShade() || titleLayout->tqgeometry().contains( e->pos() ) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-void CdeClient::mousePressEvent( TQMouseEvent * e )
-{
-    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-    {
-	if ( titlebarButtonMode )
-	{
-	    titlebarPressed = true;
-	    widget()->tqrepaint(titlebar->tqgeometry(), false);
-	}
-    }
-}
-
-void CdeClient::borders(int &left, int &right, int &top, int &bottom) const
-{
-    left = right = bottom = s_frameWidth + 1;
-    top = s_buttonSize + s_frameWidth + 1;
-}
-
-void CdeClient::mouseReleaseEvent( TQMouseEvent * e )
-{
-    if ( e->button() == Qt::LeftButton && titlebarPressed )
-    {
-	titlebarPressed = false;
-	widget()->tqrepaint(titlebar->tqgeometry(), false);
-    }
-}
-
-bool CdeClient::eventFilter(TQObject *o, TQEvent *e)
-{
-    if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
-	return false;
-    switch (e->type()) {
-    case TQEvent::Resize:
-	resizeEvent(TQT_TQRESIZEEVENT(e));
-	return true;
-    case TQEvent::Paint:
-	paintEvent(TQT_TQPAINTEVENT(e));
-	return true;
-    case TQEvent::MouseButtonDblClick:
-	mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
-	return true;
-    case TQEvent::MouseButtonPress:
-	processMousePressEvent(TQT_TQMOUSEEVENT(e));
-	return true;
-    case TQEvent::Show:
-	showEvent(TQT_TQSHOWEVENT(e));
-	return true;
-    case TQEvent::Wheel:
-	wheelEvent( TQT_TQWHEELEVENT( e ));
-	return true;
-    default:
-	break;
-    }
-    return false;
-}
-
-// ---------------------------------------
-
-CdeButton::CdeButton(CdeClient* parent,
-	const char* name, int btnType, const TQString& tip, int realize_btns)
-    : TQButton(parent->widget(), name), m_btnType(btnType), last_button(Qt::NoButton)
-{
-    setBackgroundMode( TQWidget::NoBackground );
-    setFixedSize( s_buttonSize, s_buttonSize );
-    resize( s_buttonSize, s_buttonSize );
-    m_parent = parent;
-
-    setCursor(ArrowCursor);
-    TQToolTip::add(this, tip);
-
-    m_realize_buttons = realize_btns;
-}
-
-void CdeButton::reset()
-{
-    tqrepaint( false );
-}
-
-void CdeButton::drawButton( TQPainter* p )
-{
-    p->setBrush( options()->color( KDecoration::ColorTitleBar, m_parent->isActive() ) );
-    p->drawRect( 0, 0, s_buttonSize, s_buttonSize );
-
-    TQColorGroup tqcolorGroup =
-      options()->tqcolorGroup( KDecoration::ColorTitleBar, m_parent->isActive() );
-
-    fixColorGroup(tqcolorGroup);
-
-    qDrawShadePanel( p, 0, 0, s_buttonSize, s_buttonSize,
-		    tqcolorGroup, isDown() );
-
-    switch ( m_btnType )
-    {
-        case (BtnMenu):
-            qDrawShadePanel( p, s_o1, s_o2, s_w1, s_w2, tqcolorGroup );
-	break;
-	case (BtnHelp):
-	    p->setPen( tqcolorGroup.light() );
-	    p->drawLineSegments( TQPointArray(16, helpLLines) );
-	    p->setPen( tqcolorGroup.dark() );
-	    p->drawLineSegments( TQPointArray(14, helpDLines) );
-	break;
-	case (BtnIconify):
-	    qDrawShadePanel( p, s_o2, s_o2, s_w2, s_w2, tqcolorGroup );
-	break;
-	case (BtnMax):
-	    qDrawShadePanel( p, s_o1, s_o1, s_w1, s_w1, tqcolorGroup,
-		    m_parent->maximizeMode() == KDecoration::MaximizeFull );
-	break;
-	case (BtnClose):
-	    p->setPen( tqcolorGroup.dark() );
-	    p->drawLineSegments( TQPointArray(18, closeDLines) );
-	    p->setPen( tqcolorGroup.light() );
-	    p->drawLineSegments( TQPointArray(15, closeLLines) );
-	break;
-    }
-}
-
-void CdeButton::mousePressEvent(TQMouseEvent *e)
-{
-    last_button = e->button();
-    TQMouseEvent me(e->type(), e->pos(),
-	    e->globalPos(), (e->button()&m_realize_buttons)?Qt::LeftButton:Qt::NoButton, e->state());
-    TQButton::mousePressEvent(&me);
-}
-
-void CdeButton::mouseReleaseEvent(TQMouseEvent * e)
-{
-    last_button = e->button();
-    TQMouseEvent me(e->type(), e->pos(),
-	    e->globalPos(), (e->button()&m_realize_buttons)?Qt::LeftButton:Qt::NoButton, e->state());
-    TQButton::mouseReleaseEvent(&me);
-}
-
-} // CDE namespace
-
-#include "cdeclient.moc"
-
-// vim: sw=4
diff --git a/kwin-styles/cde/cdeclient.h b/kwin-styles/cde/cdeclient.h
deleted file mode 100644
index e3a0e9ad..00000000
--- a/kwin-styles/cde/cdeclient.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- *	CDE KWin client - emulates the look and feel
- *	of dtwm, the CDE window manager.
- *
- *	Copyright (c) 2000-2001, 2002
- *		Chris Lee       <lee@azsites.com>
- *		Lennart Kudling <kudling@kde.org>
- *      	Fredrik H�glund <fredrik@kde.org>
- *
- *	Copyright (c) 2003
- *		Luciano Montanaro <mikelima@cirulla.net>
- *
- *	Originally based on the KStep client.
- *
- *	Distributed under the terms of the BSD license.
- */
-
-#ifndef __CDECLIENT_H
-#define __CDECLIENT_H
-
-#include <tqbutton.h>
-#include <tqbitmap.h>
-#include <kpixmap.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQLabel;
-class TQBoxLayout;
-class TQVBoxLayout;
-class TQSpacerItem;
-
-namespace CDE {
-
-class CdeClient;
-
-enum Buttons { BtnMenu=0, BtnHelp, BtnIconify, BtnMax, BtnClose, BtnCount };
-
-class CdeButton : public TQButton
-{
-public:
-    CdeButton( CdeClient* parent=0, const char* name=0, int btnType=0,
-               const TQString& tip=NULL, int realize_btns = Qt::LeftButton );
-    void reset();
-    ButtonState lastButton() { return last_button; }
-
-protected:
-    void mousePressEvent(TQMouseEvent *e);
-    void mouseReleaseEvent(TQMouseEvent *e);
-    virtual void drawButton(TQPainter *p);
-
-private:
-    CdeClient *m_parent;
-    int m_btnType;
-    int m_realize_buttons;
-    ButtonState last_button;
-};
-
-class CdeClient : public KDecoration
-{
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    CdeClient(KDecorationBridge *b, KDecorationFactory *f);
-    ~CdeClient() {};
-    void init();
-
-protected:
-    bool eventFilter(TQObject *o, TQEvent *e);
-    void resizeEvent( TQResizeEvent* );
-    void paintEvent( TQPaintEvent* );
-
-    void showEvent(TQShowEvent *);
-    void addClientButtons( const TQString& );
-    void mouseDoubleClickEvent( TQMouseEvent* );
-    void wheelEvent( TQWheelEvent * );
-    void captionChange();
-    void desktopChange();
-    void activeChange();
-    void shadeChange();
-    void iconChange();
-    TQSize tqminimumSize() const;
-    void resize(const TQSize &size);
-    void borders(int &left, int &right, int &top, int &bottom) const;
-    void mousePressEvent( TQMouseEvent* );
-    void mouseReleaseEvent( TQMouseEvent* );
-    void maximizeChange();
-    Position mousePosition( const TQPoint& p ) const;
-
-protected slots:
-    void menuButtonPressed();
-    void menuButtonReleased();
-    void maximizeButtonClicked();
-
-private:
-    CdeButton* button[BtnCount];
-    TQVBoxLayout* mainLayout;
-    TQBoxLayout*  titleLayout;
-    TQSpacerItem* titlebar;
-    bool titlebarPressed;
-    bool closing;
-};
-
-class CdeClientFactory: public TQObject, public KDecorationFactory
-{
-public:
-    CdeClientFactory();
-    virtual ~CdeClientFactory();
-    virtual KDecoration *createDecoration(KDecorationBridge *);
-    virtual bool supports( Ability ability );
-    virtual bool reset(unsigned long changed);
-
-    TQValueList< CdeClientFactory::BorderSize > borderSizes() const;
-
-};
-
-}
-
-#endif
-
diff --git a/kwin-styles/cde/config/CMakeLists.txt b/kwin-styles/cde/config/CMakeLists.txt
deleted file mode 100644
index 5faec263..00000000
--- a/kwin-styles/cde/config/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### twin_cde_config (module) ###################
-
-tde_add_kpart( twin_cde_config AUTOMOC
-  SOURCES config.cpp
-  LINK tdeui-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/cde/config/Makefile.am b/kwin-styles/cde/config/Makefile.am
deleted file mode 100644
index 3e5bd243..00000000
--- a/kwin-styles/cde/config/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-INCLUDES = $(all_includes)
-
-kde_module_LTLIBRARIES = twin_cde_config.la
-
-twin_cde_config_la_SOURCES = config.cpp
-twin_cde_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin_cde_config_la_LIBADD  = $(LIB_TDEUI)
-
-METASOURCES = AUTO
-noinst_HEADERS = config.h
-
-lnkdir = $(kde_datadir)/twin/
-
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/cde/config/config.cpp b/kwin-styles/cde/config/config.cpp
deleted file mode 100644
index fcd2de42..00000000
--- a/kwin-styles/cde/config/config.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-// $Id$
-#include "config.h"
-#include <kapplication.h>
-#include <kglobal.h>
-#include <tqwhatsthis.h>
-#include <tqvbox.h>
-#include <klocale.h>
-
-extern "C" KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
-{
-	return new CdeConfig(conf, parent);
-}
-
-
-/* NOTE: 
- * 'conf' 	is a pointer to the twindecoration modules open twin config,
- *			and is by default set to the "Style" group.
- *
- * 'parent'	is the parent of the TQObject, which is a VBox inside the
- *			Configure tab in twindecoration
- */
-
-CdeConfig::CdeConfig( KConfig* conf, TQWidget* parent )
-	: TQObject( parent )
-{
-	cdeConfig = new KConfig("twincderc");
-	KGlobal::locale()->insertCatalogue("twin_art_clients");
-	
-	groupBox = new TQVBox( parent );
-	
-	bgAlign = new TQButtonGroup( 3, Qt::Horizontal, i18n("Text &Alignment"), groupBox );
-	bgAlign->setExclusive( true );
-	TQWhatsThis::add( bgAlign, i18n("Use these buttons to set the tqalignment of the titlebar caption text.") );
-	new TQRadioButton( i18n("Left"), bgAlign, "AlignLeft" );
-	TQRadioButton *radio2 = new TQRadioButton( i18n("Centered"), bgAlign, "AlignHCenter" );
-	radio2->setChecked( true );
-	new TQRadioButton( i18n("Right"), bgAlign, "AlignRight" );
-	
-	cbColorBorder = new TQCheckBox( i18n("Draw window frames using &titlebar colors"), groupBox );
-	TQWhatsThis::add( cbColorBorder, i18n("When selected, the window decoration borders "
-					     "are drawn using the titlebar colors. Otherwise, they are "
-					     "drawn using normal border colors instead.") );
-	
-//	cbTitlebarButton = new TQCheckBox( i18n("Titlebar acts like a &pushbutton when clicked"), groupBox );
-//	TQWhatsThis::add( cbTitlebarButton, i18n("When selected, this option causes the window titlebar to behave "
-//						"as if it was a pushbutton when you click it to move the window.") );
-	
-	(void) new TQLabel( i18n("Tip: If you want the look of the original Motif(tm) Window Manager,\n"
-				"click the \"Buttons\" tab above and remove the help\n"
-				"and close buttons from the titlebar."), groupBox );
-	
-	// Load configuration options
-	load( conf );
-
-	// Ensure we track user changes properly
-	connect( cbColorBorder, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
-//	connect( cbTitlebarButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
-	connect( bgAlign, TQT_SIGNAL(clicked(int)), TQT_SLOT(slotSelectionChanged(int)) );
-
-	// Make the widgets visible in twindecoration
-	groupBox->show();
-}
-
-
-CdeConfig::~CdeConfig()
-{
-	delete bgAlign;
-	delete groupBox;
-	delete cdeConfig;
-}
-
-
-void CdeConfig::slotSelectionChanged()
-{
-	emit changed();
-}
-
-void CdeConfig::slotSelectionChanged( int )
-{
-	emit changed();
-}
-
-// Loads the configurable options from the twinrc config file
-// It is passed the open config from twindecoration to improve efficiency
-void CdeConfig::load( KConfig* /*conf*/ )
-{
-	cdeConfig->setGroup("General");
-
-	TQString value = cdeConfig->readEntry( "TextAlignment", "AlignHCenter" );
-	TQRadioButton *button = (TQRadioButton*)bgAlign->child( (const char *)value.latin1() );
-	if ( button )
-	    button->setChecked( true );
-
-	bool coloredFrame = cdeConfig->readBoolEntry( "UseTitleBarBorderColors", true );
-	cbColorBorder->setChecked( coloredFrame );
-
-//	bool titlebarButton = cdeConfig->readBoolEntry( "TitlebarButtonMode", true );
-//	cbTitlebarButton->setChecked( titlebarButton );
-}
-
-
-// Saves the configurable options to the twinrc config file
-void CdeConfig::save( KConfig* /*conf*/ )
-{
-	cdeConfig->setGroup("General");
-
-	TQRadioButton *button = (TQRadioButton*)bgAlign->selected();
-	if ( button )
-	    cdeConfig->writeEntry( "TextAlignment", TQString(button->name()) );
-
-	cdeConfig->writeEntry( "UseTitleBarBorderColors", cbColorBorder->isChecked() );
-//	cdeConfig->writeEntry( "TitlebarButtonMode", cbTitlebarButton->isChecked() );
-	
-	// Ensure others trying to read this config get updated
-	cdeConfig->sync();
-}
-
-
-// Sets UI widget defaults which must correspond to style defaults
-void CdeConfig::defaults()
-{
-	TQRadioButton *button = (TQRadioButton*)bgAlign->child( "AlignHCenter" );
-	if ( button )
-	    button->setChecked( true );
-
-	cbColorBorder->setChecked( true );
-//	cbTitlebarButton->setChecked( true );
-}
-
-#include "config.moc"
-// vim: ts=4
diff --git a/kwin-styles/cde/config/config.h b/kwin-styles/cde/config/config.h
deleted file mode 100644
index fc7fa136..00000000
--- a/kwin-styles/cde/config/config.h
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef __KDE_CDECONFIG_H
-#define __KDE_CDECONFIG_H
-
-#include <tqcheckbox.h>
-#include <tqgroupbox.h>
-#include <tqbuttongroup.h>
-#include <tqlabel.h>
-#include <tqradiobutton.h>
-#include <tqhbox.h>
-#include <kconfig.h>
-
-class TQCheckBox;
-class TQGroupBox;
-class TQVBox;
-class TQLabel;
-class TQRadioButton;
-
-class CdeConfig: public TQObject
-{
-	Q_OBJECT
-  TQ_OBJECT
-
-	public:
-		CdeConfig( KConfig* conf, TQWidget* parent );
-		~CdeConfig();
-
-	// These public signals/slots work similar to KCM modules
-	signals:
-		void changed();
-
-	public slots:
-		void load( KConfig* conf );	
-		void save( KConfig* conf );
-		void defaults();
-
-	protected slots:
-		void slotSelectionChanged();	// Internal use
-		void slotSelectionChanged( int );
-		
-	private:
-		KConfig*   	cdeConfig;
-		TQCheckBox* 	cbColorBorder;
-//		TQCheckBox* 	cbTitlebarButton;
-		TQHBox* 	        groupBox;
-		TQGroupBox* 	gbSlider;
-		TQButtonGroup*	bgAlign;
-};
-
-
-#endif
-
-// vim: ts=4
diff --git a/kwin-styles/configure.in.in b/kwin-styles/configure.in.in
deleted file mode 100644
index e93b34e6..00000000
--- a/kwin-styles/configure.in.in
+++ /dev/null
@@ -1,3 +0,0 @@
-if test "x$kde_use_qt_mac" = "xyes"; then
-	DO_NOT_COMPILE="$DO_NOT_COMPILE twin-styles"
-fi
diff --git a/kwin-styles/glow/CMakeLists.txt b/kwin-styles/glow/CMakeLists.txt
deleted file mode 100644
index 76d0a23e..00000000
--- a/kwin-styles/glow/CMakeLists.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( config )
-add_subdirectory( themes )
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES glow.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_glow ################################
-
-tde_add_kpart( twin3_glow AUTOMOC
-  SOURCES glowbutton.cpp glowclient.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/glow/Makefile.am b/kwin-styles/glow/Makefile.am
deleted file mode 100644
index bb624e59..00000000
--- a/kwin-styles/glow/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-INCLUDES = $(all_includes)
-
-SUBDIRS = . config themes
-
-kde_module_LTLIBRARIES = twin3_glow.la
-
-twin3_glow_la_SOURCES = glowclient.cpp glowbutton.cpp
-twin3_glow_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_glow_la_LIBADD  = $(LIB_TDECORE) -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = glowclient.h glowbutton.h resources.h
-
-linkdir = $(kde_datadir)/twin/
-link_DATA = glow.desktop
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/config/CMakeLists.txt b/kwin-styles/glow/config/CMakeLists.txt
deleted file mode 100644
index bfcc2633..00000000
--- a/kwin-styles/glow/config/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### twin_glow_config (module) ##################
-
-tde_add_kpart( twin_glow_config AUTOMOC
-  SOURCES glowconfigdialog.cpp
-  LINK tdeui-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/glow/config/Makefile.am b/kwin-styles/glow/config/Makefile.am
deleted file mode 100644
index bf3d334b..00000000
--- a/kwin-styles/glow/config/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-INCLUDES = $(all_includes)
-
-kde_module_LTLIBRARIES = twin_glow_config.la
-
-twin_glow_config_la_SOURCES = glowconfigdialog.cpp
-twin_glow_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin_glow_config_la_LIBADD = $(LIB_TDEUI)
-
-METASOURCES = AUTO
-noinst_HEADERS = glowconfigdialog.h
-
-lnkdir = $(kde_datadir)/twin/
-
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/config/bitmaps.h b/kwin-styles/glow/config/bitmaps.h
deleted file mode 100644
index 7ecb262a..00000000
--- a/kwin-styles/glow/config/bitmaps.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/***************************************************************************
-                          bitmaps.h  -  description
-                             -------------------
-    begin                : Thu Sep 12 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#ifndef BITMAPS_H
-#define BITMAPS_H
-
-#define BITMAP_SIZE 17
-
-static unsigned char close_bits[] = {
- 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0xf8,0x00,0x00,0x0c,0x10,0x10,0x60,
- 0x30,0x18,0x00,0x60,0x0c,0xc8,0xc0,0x07,0x16,0x80,0x03,0x60,0xc0,0x07,0x00,
- 0x60,0x0c,0x00,0x30,0x18,0xf8,0x10,0x10,0x00,0x00,0x00,0x46,0x00,0x00,0xfe,
- 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x89,0xf3,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
-static unsigned char help_bits[] = {
- 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x80,0x07,0xb6,
- 0x40,0x0c,0x00,0x00,0x0c,0xc8,0x00,0x0c,0x16,0x00,0x06,0xb6,0x00,0x03,0x00,
- 0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0xac,0x00,0x00,0xfe,
- 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x24,0xc4,0x3f,0x40,0x01,0xf3,0x00,0x00,
- 0x70,0xb9,0x65,0x40,0x70,0xb9,0x65,0x40 };
-static unsigned char maximizeoff_bits[] = {
- 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0xf0,0x1f,0x60,
- 0xf0,0x1f,0x00,0x10,0x10,0xc8,0x10,0x10,0x16,0x10,0x10,0x60,0x10,0x10,0x00,
- 0x10,0x10,0x00,0x10,0x10,0x1e,0xf0,0x1f,0x00,0x00,0x00,0x50,0x00,0x00,0xfe,
- 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x68,0xb9,0x65,0x40,0x01,0xf2,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xe0,0xb1,0x65,0x40 };
-static unsigned char minimize_bits[] = {
- 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x00,0x00,0xb6,
- 0xe0,0x0f,0x00,0x00,0x00,0xc8,0x20,0x08,0x16,0x60,0x0c,0xb6,0xc0,0x06,0x00,
- 0x80,0x03,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0xb2,0x00,0x00,0xfe,
- 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
-static unsigned char stickyoff_bits[] = {
- 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0x50,0x15,0x60,
- 0xe0,0x00,0x00,0xf0,0x11,0xc8,0xe0,0x00,0x16,0x50,0x15,0x60,0x00,0x00,0x00,
- 0x10,0x11,0x00,0x00,0x00,0x1e,0x50,0x15,0x00,0x00,0x00,0x46,0x00,0x00,0xfe,
- 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x08,0x31,0xf2,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00 };
-
-#endif
-
diff --git a/kwin-styles/glow/config/glowconfigdialog.cpp b/kwin-styles/glow/config/glowconfigdialog.cpp
deleted file mode 100644
index f8ff62fd..00000000
--- a/kwin-styles/glow/config/glowconfigdialog.cpp
+++ /dev/null
@@ -1,369 +0,0 @@
-/***************************************************************************
-                          glowconfigdialog.cpp  -  description
-                             -------------------
-    begin                : Thu Sep 12 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#include <tqbitmap.h>
-#include <tqbuttongroup.h>
-#include <tqcheckbox.h>
-#include <tqcombobox.h>
-#include <tqdir.h>
-#include <tqfileinfo.h>
-#include <tqgroupbox.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqlistview.h>
-#include <tqpushbutton.h>
-#include <tqsignalmapper.h>
-#include <tqstringlist.h>
-#include <kconfig.h>
-#include <kcolorbutton.h>
-#include <kdebug.h>
-#include <kglobal.h>
-#include <kglobalsettings.h>
-#include <klocale.h>
-#include <kpixmap.h>
-#include <kpixmapeffect.h>
-#include <kstandarddirs.h>
-#include "bitmaps.h"
-#include "glowconfigdialog.h"
-#include "../resources.h"
-
-#define NUMBER_OF_BUTTONS 5
-
-extern "C"
-{
-	KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
-	{
-		return(new GlowConfigDialog(conf, parent));
-	}
-}
-
-GlowConfigDialog::GlowConfigDialog( KConfig * conf, TQWidget * parent )
-	: TQObject(parent)
-{
-	_glowConfig = new KConfig("twinglowrc");
-	KGlobal::locale()->insertCatalogue("twin_glow_config");
-
-	_main_group_box = new TQWidget(parent);
-	TQVBoxLayout *main_group_boxLayout = new TQVBoxLayout(_main_group_box);
-	main_group_boxLayout->tqsetAlignment(TQt::AlignTop | TQt::AlignLeft);
-	main_group_boxLayout->setSpacing(6);
-
-	//-------------------------------------------------------------------------
-	// themes
-
-	_theme_list_view = new TQListView (_main_group_box, "theme_list_view");
-	_theme_list_view->addColumn (i18n("Theme"));
-	_theme_list_view->addColumn (i18n("Button Size"));
-        _theme_list_view->setAllColumnsShowFocus(true);
-        _theme_list_view->setResizeMode(TQListView::AllColumns);
-
-	main_group_boxLayout->addWidget (_theme_list_view);
-	TQObject::connect (_theme_list_view, TQT_SIGNAL(selectionChanged()),
-			this, TQT_SLOT(slotThemeListViewSelectionChanged()));
-	slotLoadThemeList();
-
-	_button_glow_color_group_box = new TQGroupBox(
-		0, Qt::Horizontal, i18n("Button Glow Colors"), _main_group_box);
-	TQHBoxLayout *colorHBoxLayout =
-		new TQHBoxLayout(_button_glow_color_group_box->tqlayout());
-
-	// create buttons
-	TQSize buttonSize(BITMAP_SIZE, BITMAP_SIZE);
-	TQPixmap pm(buttonSize);
-	pm.fill(TQt::black);
-
-	_stickyButton = new TQPushButton(_button_glow_color_group_box);
-	pm.setMask(TQBitmap(buttonSize, stickyoff_bits, true));
-	_stickyButton->setPixmap(pm);
-	colorHBoxLayout->addWidget(_stickyButton);
-	_titleButtonList.push_back(_stickyButton);
-
-	_helpButton = new TQPushButton(_button_glow_color_group_box);
-	pm.setMask(TQBitmap(buttonSize, help_bits, true));
-	_helpButton->setPixmap(pm);
-	colorHBoxLayout->addWidget(_helpButton);
-	_titleButtonList.push_back(_helpButton);
-
-	_iconifyButton = new TQPushButton(_button_glow_color_group_box);
-	pm.setMask(TQBitmap(buttonSize, minimize_bits, true));
-	_iconifyButton->setPixmap(pm);
-	colorHBoxLayout->addWidget(_iconifyButton);
-	_titleButtonList.push_back(_iconifyButton);
-
-	_maximizeButton = new TQPushButton(_button_glow_color_group_box);
-	pm.setMask(TQBitmap(buttonSize, maximizeoff_bits, true));
-	_maximizeButton->setPixmap(pm);
-	colorHBoxLayout->addWidget(_maximizeButton);
-	_titleButtonList.push_back(_maximizeButton);
-
-	_closeButton = new TQPushButton(_button_glow_color_group_box);
-	pm.setMask(TQBitmap(buttonSize, close_bits, true));
-	_closeButton->setPixmap(pm);
-	colorHBoxLayout->addWidget(_closeButton);
-	_titleButtonList.push_back(_closeButton);
-
-	// create signal mapper
-	_titleButtonMapper = new TQSignalMapper(this);
-	for( uint i=0; i<_titleButtonList.size(); i++ ) {
-		_titleButtonMapper->setMapping(TQT_TQOBJECT(_titleButtonList[i]), i);
-		connect(_titleButtonList[i], TQT_SIGNAL(clicked()),_titleButtonMapper, TQT_SLOT(map()));
-	}
-	connect(_titleButtonMapper, TQT_SIGNAL(mapped(int)),this, TQT_SLOT(slotTitleButtonClicked(int)));
-
-	_colorButton = new KColorButton(_button_glow_color_group_box);
-	_colorButton->setEnabled(false);
-	connect(_colorButton, TQT_SIGNAL(changed(const TQColor&)),
-		this, TQT_SLOT(slotColorButtonChanged(const TQColor&)));
-
-	colorHBoxLayout->addItem(new TQSpacerItem(
-		200, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum));
-	colorHBoxLayout->addWidget(_colorButton);
-
-	main_group_boxLayout->addWidget(_button_glow_color_group_box);
-
-	TQHBoxLayout *titlebarGradientTypeLayout = new TQHBoxLayout();
-	_titlebarGradientTypeComboBox = new TQComboBox(_main_group_box);
-
-    KConfig *c = KGlobal::config();
-    KConfigGroupSaver cgs( c, TQString::tqfromLatin1("WM") );
-    TQColor activeBackground = c->readColorEntry("activeBackground");
-    TQColor activeBlend = c->readColorEntry("activeBlend");
-
-	// If the colors are equal, change one to get a gradient effect
-	if (activeBackground==activeBlend) {
-		activeBackground = activeBackground.dark();
-	}
-	for (int i=0; i< KPixmapEffect::EllipticGradient; i++ ) {
-		KPixmap gradPixmap(TQSize(196,20));
-		KPixmapEffect::gradient(gradPixmap, activeBackground,
-								activeBlend, (KPixmapEffect::GradientType) i);
-
-		_titlebarGradientTypeComboBox->insertItem(gradPixmap, i);
-	}
-
-	connect(_titlebarGradientTypeComboBox, TQT_SIGNAL(activated(int)),
-		this, TQT_SLOT(slotTitlebarGradientTypeChanged(int)));
-	titlebarGradientTypeLayout->addWidget(
-		new TQLabel(i18n("Titlebar gradient:"), _main_group_box));
-	titlebarGradientTypeLayout->addWidget(_titlebarGradientTypeComboBox, 0, TQt::AlignLeft);
-        titlebarGradientTypeLayout->addStretch(10);
-	main_group_boxLayout->addLayout(titlebarGradientTypeLayout);
-
-
-	_showResizeHandleCheckBox = new TQCheckBox(
-			i18n("Show resize handle"),	_main_group_box);
-	connect(_showResizeHandleCheckBox, TQT_SIGNAL(clicked()),
-		this, TQT_SLOT(slotResizeHandleCheckBoxChanged()));
-	main_group_boxLayout->addWidget(_showResizeHandleCheckBox);
-
-	// load config and update user interface
-	load(conf);
-
-	_main_group_box->show();
-}
-
-GlowConfigDialog::~GlowConfigDialog()
-{
-	delete _main_group_box;
-	delete _glowConfig;
-	delete[] _buttonConfigMap;
-}
-
-void GlowConfigDialog::load( KConfig* /* conf */ )
-{
-	TQColor color;
-	const TQColor defaultCloseButtonColor(DEFAULT_CLOSE_BUTTON_COLOR);
-	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
-	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
-	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
-	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
-
-	_glowConfig->setGroup("General");
-
-	_buttonConfigMap = new TQColor[NUMBER_OF_BUTTONS];
-	color = _glowConfig->readColorEntry("stickyButtonGlowColor",
-			&defaultStickyButtonColor);
-	_buttonConfigMap[stickyButton] = color;
-
-	color = _glowConfig->readColorEntry("helpButtonGlowColor",
-			&defaultHelpButtonColor);
-	_buttonConfigMap[helpButton] = color;
-
-	color = _glowConfig->readColorEntry("iconifyButtonGlowColor",
-			&defaultIconifyButtonColor);
-	_buttonConfigMap[iconifyButton] = color;
-
-	color = _glowConfig->readColorEntry("maximizeButtonGlowColor",
-			&defaultMaximizeButtonColor);
-	_buttonConfigMap[maximizeButton] = color;
-
-	color = _glowConfig->readColorEntry("closeButtonGlowColor",
-			&defaultCloseButtonColor);
-	_buttonConfigMap[closeButton] = color;
-
-	_showResizeHandle = _glowConfig->readBoolEntry("showResizeHandle", true);
-	_titlebarGradientType = static_cast<KPixmapEffect::GradientType>
-							(_glowConfig->readNumEntry("titlebarGradientType",
-							KPixmapEffect::DiagonalGradient));
-
-	_showResizeHandleCheckBox->setChecked(_showResizeHandle);
-	_titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType);
-
-	_theme_name = _glowConfig->readEntry ("themeName", "default");
-	_theme_list_view->setSelected (
-			_theme_list_view->findItem (_theme_name, 0), true);
-        slotTitleButtonClicked(0);
-}
-
-void GlowConfigDialog::save( KConfig* /* conf */ )
-{
-	_glowConfig->setGroup("General");
-
-	_glowConfig->writeEntry("stickyButtonGlowColor", _buttonConfigMap[stickyButton]);
-	_glowConfig->writeEntry("helpButtonGlowColor", _buttonConfigMap[helpButton]);
-	_glowConfig->writeEntry("iconifyButtonGlowColor", _buttonConfigMap[iconifyButton]);
-	_glowConfig->writeEntry("maximizeButtonGlowColor", _buttonConfigMap[maximizeButton]);
-	_glowConfig->writeEntry("closeButtonGlowColor", _buttonConfigMap[closeButton]);
-
-	_glowConfig->writeEntry("showResizeHandle", _showResizeHandle);
-	_glowConfig->writeEntry("titlebarGradientType", _titlebarGradientType);
-
-	_glowConfig->writeEntry ("themeName", _theme_name);
-
-	_glowConfig->sync();
-}
-
-void GlowConfigDialog::defaults()
-{
-	const TQColor defaultCloseButtonColor = DEFAULT_CLOSE_BUTTON_COLOR;
-	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
-	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
-	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
-	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
-
-	_buttonConfigMap[stickyButton] = defaultStickyButtonColor;
-	_buttonConfigMap[helpButton] = defaultHelpButtonColor;
-	_buttonConfigMap[iconifyButton] = defaultIconifyButtonColor;
-	_buttonConfigMap[maximizeButton] = defaultMaximizeButtonColor;
-	_buttonConfigMap[closeButton] = defaultCloseButtonColor;
-
-	_showResizeHandle = true;
-	_titlebarGradientType = KPixmapEffect::DiagonalGradient;
-
-	_showResizeHandleCheckBox->setChecked(_showResizeHandle);
-	_titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType);
-
-	_theme_list_view->setSelected (
-			_theme_list_view->findItem("default", 0), true);
-}
-
-void GlowConfigDialog::slotLoadThemeList ()
-{
-	TQStringList dir_list=KGlobal::dirs()->findDirs("data", "twin/glow-themes");
-
-	TQStringList::ConstIterator it;
-
-	_theme_list_view->clear();
-	new TQListViewItem (_theme_list_view, "default", "17x17");
-
-	for (it=dir_list.begin(); it!=dir_list.end(); ++it)
-	{
-		TQDir dir (*it, TQString("*"), TQDir::Unsorted,
-				TQDir::Dirs | TQDir::Readable);
-		if (dir.exists())
-		{
-			TQFileInfoListIterator it2(*dir.entryInfoList());
-			TQFileInfo * finfo;
-
-			while ((finfo=it2.current()))
-			{
-				if (finfo->fileName() == "." || finfo->fileName() == "..") {
-					++it2;
-					continue;
-				}
-
-				if (! _theme_list_view->findItem (finfo->fileName(), 0))
-				{
-					KConfig conf (dir.path() + "/" + finfo->fileName() + "/" +
-							finfo->fileName() + ".theme");
-					TQSize button_size = conf.readSizeEntry (
-						"buttonSize", new TQSize (-1, -1));
-					if (button_size.width() == -1)
-					{
-						++it2;
-						continue;
-					}
-					TQString size_string = TQString("") +
-						TQString::number(button_size.width()) +
-						"x" + TQString::number(button_size.height());
-					new TQListViewItem (_theme_list_view,
-							finfo->fileName(), size_string);
-				}
-
-				++it2;
-			}
-		}
-	}
-}
-
-void GlowConfigDialog::slotTitlebarGradientTypeChanged(int index)
-{
-	_titlebarGradientType = static_cast<KPixmapEffect::GradientType>(index);
-	emit changed();
-}
-
-void GlowConfigDialog::slotResizeHandleCheckBoxChanged()
-{
-	_showResizeHandle = _showResizeHandleCheckBox->isChecked();
-	emit changed();
-}
-
-void GlowConfigDialog::slotTitleButtonClicked(int index)
-{
-	for( int i=0; i< ((int) _titleButtonList.size()); i++ ) {
-		_titleButtonList[i]->setDown(i==index);
-	}
-	_colorButton->setEnabled(true);
-	_colorButton->setColor(_buttonConfigMap[index]);
-}
-
-void GlowConfigDialog::slotColorButtonChanged(const TQColor& glowColor)
-{
-	if( _stickyButton->isDown() ) {
-		_buttonConfigMap[stickyButton] = glowColor;
-	} else if( _helpButton->isDown() ) {
-		_buttonConfigMap[helpButton] = glowColor;
-	} else if( _iconifyButton->isDown() ) {
-		_buttonConfigMap[iconifyButton] = glowColor;
-	} else if( _maximizeButton->isDown() ) {
-		_buttonConfigMap[maximizeButton] = glowColor;
-	} else {
-		_buttonConfigMap[closeButton] = glowColor;
-	}
-	emit changed();
-}
-
-void GlowConfigDialog::slotThemeListViewSelectionChanged ()
-{
-	if( _theme_list_view->selectedItem() != 0 ) {
-		_theme_name = _theme_list_view->selectedItem()->text (0);
-
-		emit changed();
-	}
-}
-
-#include "glowconfigdialog.moc"
diff --git a/kwin-styles/glow/config/glowconfigdialog.h b/kwin-styles/glow/config/glowconfigdialog.h
deleted file mode 100644
index 81747a4c..00000000
--- a/kwin-styles/glow/config/glowconfigdialog.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/***************************************************************************
-                          glowconfigdialog.h  -  description
-                             -------------------
-    begin                : Thu Sep 12 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#ifndef GLOW_CONFIG_DIALOG_H
-#define GLOW_CONFIG_DIALOG_H
-
-#include <tqvaluevector.h>
-#include <tqobject.h>
-
-class TQListView;
-class TQPushButton;
-class TQSignalMapper;
-class TQCheckBox;
-class TQComboBox;
-class KConfig;
-class KColorButton;
-
-class GlowConfigDialog : public TQObject
-{
-	Q_OBJECT
-  TQ_OBJECT
-
-public:
-	GlowConfigDialog( KConfig* conf, TQWidget* parent );
-	~GlowConfigDialog();
-
-signals:
-	void changed();
-
-public slots:
-	void load( KConfig* conf );
-	void save( KConfig* conf );
-	void defaults();
-
-protected slots:
-	void slotTitleButtonClicked(int);
-	void slotColorButtonChanged(const TQColor&);
-	void slotTitlebarGradientTypeChanged(int);
-	void slotResizeHandleCheckBoxChanged();
-	void slotThemeListViewSelectionChanged ();
-
-private slots:
-	void slotLoadThemeList ();
-	
-private:
-	enum ButtonType{stickyButton, helpButton, iconifyButton,
-		maximizeButton, closeButton };
-
-	KConfig *_glowConfig;
-
-	bool _showResizeHandle;
-	KPixmapEffect::GradientType _titlebarGradientType;
-	TQString _theme_name;
-
-	TQWidget *_main_group_box;
-	TQGroupBox *_button_glow_color_group_box;
-	TQGroupBox *_theme_group_box;
-
-	TQListView * _theme_list_view;
-
-	TQCheckBox *_showResizeHandleCheckBox;
-	TQComboBox *_titlebarGradientTypeComboBox;
-
-	TQPushButton *_stickyButton;
-	TQPushButton *_helpButton;
-	TQPushButton *_iconifyButton;
-	TQPushButton *_maximizeButton;
-	TQPushButton *_closeButton;
-	TQSignalMapper *_titleButtonMapper;
-
-	TQColor* _buttonConfigMap;
-	TQValueVector<TQPushButton*> _titleButtonList;
-	
-	KColorButton *_colorButton;
-};
-
-#endif
-
diff --git a/kwin-styles/glow/glow.desktop b/kwin-styles/glow/glow.desktop
deleted file mode 100644
index 9659e5d6..00000000
--- a/kwin-styles/glow/glow.desktop
+++ /dev/null
@@ -1,49 +0,0 @@
-[Desktop Entry]
-Name=Glow
-Name[af]=Gloei
-Name[br]=Lufrus
-Name[ca]=Lluïssor
-Name[cs]=Záře
-Name[cy]=Gwrid
-Name[da]=Glød
-Name[el]=Λάμψη
-Name[es]=Brillo
-Name[et]=Helendus
-Name[eu]=Dirdira
-Name[fa]=درخشندگی
-Name[fi]=Hehku
-Name[fr]=Lueur
-Name[fy]=Gloede
-Name[hi]=ग्लो
-Name[is]=Glóð
-Name[it]=Bagliore
-Name[ja]=輝き
-Name[ka]=გავარვარება
-Name[lt]=Švytėjimas
-Name[lv]=Kvēlot
-Name[mk]=Отсјај
-Name[ms]=Kilau
-Name[mt]=Dija
-Name[nb]=Glød
-Name[ne]=चमक
-Name[nl]=Gloed
-Name[nn]=Glød
-Name[pl]=Blask
-Name[ro]=Licărire
-Name[ru]=Зарево
-Name[sk]=Plameň
-Name[sl]=Lesk
-Name[sr]=Сијање
-Name[sr@Latn]=Sijanje
-Name[sv]=Glöd
-Name[ta]=ஒளிப்பெற்று
-Name[tg]=Шафақ
-Name[th]=เรืองแสง
-Name[tr]=Parlama
-Name[uk]=Заграва
-Name[ven]=Tshedza
-Name[vi]=Hào quang
-Name[xh]=Qukuqela
-Name[zh_CN]=光芒
-Name[zu]=Khanya
-X-KDE-Library=twin3_glow
diff --git a/kwin-styles/glow/glowbutton.cpp b/kwin-styles/glow/glowbutton.cpp
deleted file mode 100644
index 87079c2e..00000000
--- a/kwin-styles/glow/glowbutton.cpp
+++ /dev/null
@@ -1,339 +0,0 @@
-/***************************************************************************
-                          glowbutton.cpp  -  description
-                             -------------------
-    begin                : Thu Sep 6 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#include <math.h>
-#include <iostream>
-#include <vector>
-#include <tqmap.h>
-#include <tqpixmap.h>
-#include <tqpixmapcache.h>
-#include <tqbitmap.h>
-#include <tqpainter.h>
-#include <tqimage.h>
-#include <tqtimer.h>
-#include <tqtooltip.h>
-#include <kdecoration.h>
-#include <kiconeffect.h>
-#include "glowbutton.h"
-
-namespace Glow
-{
-
-//-----------------------------------------------------------------------------
-// PixmapCache
-//-----------------------------------------------------------------------------
-
-TQMap<TQString, const TQPixmap*> PixmapCache::m_pixmapMap;
-
-const TQPixmap* PixmapCache::find(const TQString& key)
-{
-	TQMap<TQString, const TQPixmap*>::const_iterator it =
-		m_pixmapMap.find(key);
-	if( it != m_pixmapMap.end() )
-		return *it;
-	else
-		return 0;
-}
-
-void PixmapCache::insert(const TQString& key, const TQPixmap *pixmap)
-{
-	m_pixmapMap[key] = pixmap;
-}
-
-void PixmapCache::erase(const TQString& key)
-{
-	TQMap<TQString, const TQPixmap*>::iterator it =
-		m_pixmapMap.find(key);
-	if (it != m_pixmapMap.end())
-	{
-		delete *it;
-		m_pixmapMap.erase(it);
-	}
-}
-
-void PixmapCache::clear()
-{
-	// delete all pixmaps in the cache
-	TQMap<TQString, const TQPixmap*>::const_iterator it
-		= m_pixmapMap.begin();
-	for(; it != m_pixmapMap.end(); ++it)
-		delete *it;
-	m_pixmapMap.clear();
-}
-
-//-----------------------------------------------------------------------------
-// GlowButton
-//-----------------------------------------------------------------------------
-
-GlowButton::GlowButton(TQWidget *parent, const char *name,
-	const TQString& tip, const int realizeBtns)
-	: TQButton(parent, name)
-{
-	m_realizeButtons = realizeBtns;
-
-	_steps = 0;
-	m_updateTime = 50;
-	m_pixmapName = TQString();
-
-	m_timer = new TQTimer(this);
-	connect(m_timer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotTimeout()));
-	m_pos = 0;
-	m_timertqStatus = Stop;
-
-	setTipText (tip);
-	setCursor(arrowCursor);
-}
-
-GlowButton::~GlowButton()
-{
-}
-
-void GlowButton::setTipText( const TQString& tip )
-{
-	if (KDecoration::options()->showTooltips())
-	{
-	    TQToolTip::remove( this );
-	    TQToolTip::add( this, tip );
-	}
-}
-
-TQString GlowButton::getPixmapName() const
-{
-	return m_pixmapName;
-}
-
-TQt::ButtonState GlowButton::lastButton() const
-{
-	return _last_button;
-}
-
-void GlowButton::setPixmapName(const TQString& pixmapName)
-{
-	m_pixmapName = pixmapName;
-
-	const TQPixmap *pixmap = PixmapCache::find(pixmapName);
-	if( ! pixmap )
-		return;
-
-	// set steps
-	_steps = pixmap->height()/pixmap->width() - 1;
-
-	tqrepaint(false);
-}
-
-void GlowButton::paintEvent( TQPaintEvent *e )
-{
- 	TQWidget::paintEvent(e);
-	const TQPixmap *pixmap = PixmapCache::find(m_pixmapName);
-	if( pixmap != 0 )
-	{
-		int pos = m_pos>=0?m_pos:-m_pos;
-		TQPainter p;
-		TQPixmap pm (pixmap->size());
-		p.begin(&pm);
-		const TQPixmap * bg_pixmap = PixmapCache::find(
-				TQString::number(parentWidget()->winId()));
-		p.drawPixmap (0, 0, *bg_pixmap, x(), y(), width(), height());
-		p.drawPixmap (0, 0, *pixmap, 0, pos*height(), width(), height());
-		p.end();
-		p.begin(this);
-		p.drawPixmap (0, 0, pm);
-		p.end();
-	}
-}
-
-void GlowButton::enterEvent( TQEvent *e )
-{
-	if( m_pos<0 )
-		m_pos=-m_pos;
-	m_timertqStatus = Run;
-	if( ! m_timer->isActive() )
-		m_timer->start(m_updateTime);
-	TQButton::enterEvent(e);
-}
-
-void GlowButton::leaveEvent( TQEvent *e )
-{
-	m_timertqStatus = Stop;
-	if( ! m_timer->isActive() )
-		m_timer->start(m_updateTime);
-	TQButton::leaveEvent(e);
-}
-
-void GlowButton::mousePressEvent( TQMouseEvent *e )
-{
-	_last_button = e->button();
-	if( m_timer->isActive() )
-		m_timer->stop();
-	m_pos = _steps;
-	tqrepaint(false);
-	// without pretending LeftButton, clicking on the button with MidButton
-	// or RightButton would cause unwanted titlebar action
-	TQMouseEvent me (e->type(), e->pos(), e->globalPos(),
-			(e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state());
-	TQButton::mousePressEvent(&me);
-}
-
-void GlowButton::mouseReleaseEvent( TQMouseEvent *e )
-{
-	_last_button = e->button();
-	TQPoint p = mapToParent(mapFromGlobal(e->globalPos()));
-	if( ! m_timer->isActive() ) {
-		m_timer->start(m_updateTime);
-	}
-	if( ! tqgeometry().contains(p) ) {
-		m_timertqStatus = Stop;
-	}
-	TQMouseEvent me (e->type(), e->pos(), e->globalPos(),
-			(e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state());
-	TQButton::mouseReleaseEvent(&me);
-}
-
-void GlowButton::slotTimeout()
-{
-	tqrepaint(false);
-
-	if( m_pos>=_steps-1 ) {
-		m_pos = -m_pos;
-	}
-	if( m_timertqStatus==Stop ) {
-		if( m_pos==0 ) {
-			m_timer->stop();
-			return;
-		} else if( m_pos>0 ) {
-			m_pos = -m_pos;
-		}
-	}
-
-	m_pos++;
-}
-
-//-----------------------------------------------------------------------------
-// GlowButtonFactory
-//-----------------------------------------------------------------------------
-
-GlowButtonFactory::GlowButtonFactory()
-{
-	_steps = 20;
-}
-
-int GlowButtonFactory::getSteps()
-{
-	return _steps;
-}
-
-void GlowButtonFactory::setSteps(int steps)
-{
-	_steps = steps;
-}
-
-TQPixmap * GlowButtonFactory::createGlowButtonPixmap(
-				const TQImage & bg_image,
-				const TQImage & fg_image,
-				const TQImage & glow_image,
-				const TQColor & color,
-				const TQColor & glow_color)
-{
-		if (bg_image.size() != fg_image.size()
-			|| fg_image.size() != glow_image.size()) {
-				std::cerr << "Image size error" << std::endl;
-				return new TQPixmap();
-		}
-
-		TQImage colorized_bg_image = bg_image.copy();
-		KIconEffect::colorize (colorized_bg_image, color, 1.0);
-
-		int w = colorized_bg_image.width();
-		int h = colorized_bg_image.height();
-
-		TQImage image (w, (_steps+1)*h, 32);
-		image.setAlphaBuffer (true);
-		for (int i=0; i<_steps+1; ++i) {
-			for (int y=0; y<h; ++y) {
-				uint * src1_line = (uint*) colorized_bg_image.scanLine (y);
-				uint * src2_line = (uint*) fg_image.scanLine (y);
-				uint * dst_line = (uint*) image.scanLine (i*h+y);
-				for (int x=0; x<w; ++x) {
-					int r = tqRed (*(src1_line+x));
-					int g = tqGreen (*(src1_line+x));
-					int b = tqBlue (*(src1_line+x));
-					int a = TQMAX (tqAlpha(*(src1_line+x)),tqGray(*(src2_line+x)));
-					*(dst_line+x) = tqRgba (r, g, b, a);
-				}
-			}
-		}
-		TQPixmap * pixmap = new TQPixmap (image);
-		TQPainter painter (pixmap);
-
-		bool dark = (tqGray(color.rgb()) <= 127);
-		TQImage fg_img (w, h, 32);
-		fg_img.setAlphaBuffer (true);
-		for (int y=0; y<h; ++y) {
-			uint * src_line = (uint*) fg_image.scanLine (y);
-			uint * dst_line = (uint*) fg_img.scanLine (y);
-			for (int x=0; x<w; ++x) {
-				int alpha = tqGray (*(src_line+x));
-				if (dark)
-						*(dst_line+x) = tqRgba (255, 255, 255, alpha);
-				else
-						*(dst_line+x) = tqRgba (0, 0, 0, alpha);
-			}
-		}
-
-		int r = glow_color.red();
-		int g = glow_color.green();
-		int b = glow_color.blue();
-		TQImage glow_img (w, h, 32);
-		glow_img.setAlphaBuffer (true);
-		for (int i=0; i<_steps; ++i) {
-			painter.drawImage (0, i*h, fg_img);
-			for (int y=0; y<h; ++y) {
-				uint * src_line = (uint*) glow_image.scanLine(y);
-				uint * dst_line = (uint*) glow_img.scanLine(y);
-				for (int x=0; x<w; ++x) {
-					int alpha =
-							(int) (tqGray (*(src_line+x)) * ((double) i/_steps));
-					*(dst_line+x) = tqRgba (r, g, b, alpha);
-				}
-			}
-			painter.drawImage (0, i*h, glow_img);
-		}
-		painter.drawImage (0, _steps*h, fg_img);
-		for (int y=0; y<h; ++y) {
-				uint * src_line = (uint*) glow_image.scanLine (y);
-				uint * dst_line = (uint*) glow_img.scanLine (y);
-				for (int x=0; x<w; ++x) {
-					int alpha = tqGray (*(src_line+x));
-					*(dst_line+x) = tqRgba (r, g, b, alpha);
-				}
-		}
-		painter.drawImage (0, _steps*h, glow_img);
-
-		return pixmap;
-}
-
-GlowButton* GlowButtonFactory::createGlowButton(
-	TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns)
-{
-	GlowButton *glowButton = new GlowButton(parent, name, tip, realizeBtns);
-	return glowButton;
-}
-
-}
-
-#include "glowbutton.moc"
-
diff --git a/kwin-styles/glow/glowbutton.h b/kwin-styles/glow/glowbutton.h
deleted file mode 100644
index d2e83beb..00000000
--- a/kwin-styles/glow/glowbutton.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/***************************************************************************
-                          glowbutton.h  -  description
-                             -------------------
-    begin                : Thu Sep 14 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#ifndef GLOW_BUTTON_H
-#define GLOW_BUTTON_H
-
-#include <vector>
-#include <tqmap.h>
-#include <tqbutton.h>
-
-class TQPixmap;
-class TQBitmap;
-class TQTimer;
-class TQString;
-
-namespace Glow
-{
-
-class PixmapCache
-{
-public:
-	static const TQPixmap* find(const TQString& key);
-	static void insert(const TQString& key, const TQPixmap *pixmap);
-	static void erase(const TQString& key);
-	static void clear();
-private:
-	static TQMap<TQString, const TQPixmap*> m_pixmapMap;
-};
-
-
-//-----------------------------------------------------------------------------
-
-class GlowButton : public TQButton
-{
-	Q_OBJECT
-  TQ_OBJECT
-
-public:
-	GlowButton(TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns);
-	~GlowButton();
-
-	void setTipText( const TQString& tip );
-
-	TQString getPixmapName() const;
-	ButtonState lastButton() const;
-
-	/** Sets the name of the pixmap in the pixmap cache.
-	 * If no background pixmap is wanted use TQString() as name. */
-	void setPixmapName(const TQString& pixmapName);
-
-protected:
-	virtual void paintEvent( TQPaintEvent * );
-	virtual void enterEvent( TQEvent * );
-	virtual void leaveEvent( TQEvent * );
-	virtual void mousePressEvent( TQMouseEvent * );
-	virtual void mouseReleaseEvent( TQMouseEvent * );
-
-protected slots:
-	void slotTimeout();
-
-private:
-	enum TimertqStatus { Run, Stop };
-
-	int m_updateTime;
-	int _steps;
-	TQString m_pixmapName;
-
-	TQTimer *m_timer;
-	int m_pos;
-	TimertqStatus m_timertqStatus;
-
-	int m_realizeButtons;
-	ButtonState _last_button;
-};
-
-//-----------------------------------------------------------------------------
-
-class GlowButtonFactory
-{
-public:
-	GlowButtonFactory();
-
-	int getSteps();
-
-	/**
-	 * Sets the number of pixmaps used to create the glow effect of the
-	 * glow buttons.
-	 */
-	void setSteps(int steps);
-
-	/**
-	 * Creates a background pixmap for a glow button.
-	 * The pixmap will consist of sub pixmaps of the size of the button which
-	 * are placed one below the other. Each sub pixmap is copied on the button
-	 * in succession to create the glow effect. The last sub pixmap is used
-	 * when the button is pressed.
-	 */
-	TQPixmap * createGlowButtonPixmap(
-				const TQImage & bg_image,
-//				const TQImage & bg_alpha_image,
-				const TQImage & fg_image,
-				const TQImage & glow_image,
-				const TQColor & color,
-				const TQColor & glow_color);
-
-	GlowButton* createGlowButton(
-		TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns = Qt::LeftButton);
-
-private:
-	int _steps;
-};
-
-} // namespace
-
-#endif
diff --git a/kwin-styles/glow/glowclient.cpp b/kwin-styles/glow/glowclient.cpp
deleted file mode 100644
index 98133221..00000000
--- a/kwin-styles/glow/glowclient.cpp
+++ /dev/null
@@ -1,902 +0,0 @@
-/***************************************************************************
-                          glowclient.cpp  -  description
-                             -------------------
-    begin                : Thu Sep 6 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#include <tqapplication.h>
-#include <tqbitmap.h>
-#include <tqimage.h>
-#include <tqlayout.h>
-#include <tqpainter.h>
-#include <tqpixmap.h>
-#include <kconfig.h>
-#include <kdebug.h>
-#include <klocale.h>
-#include <kpixmapeffect.h>
-#include <kpixmap.h>
-#include <kstandarddirs.h>
-#include <tqlabel.h>
-#include "resources.h"
-#include "glowclient.h"
-#include "glowbutton.h"
-
-namespace Glow
-{
-
-static int titleHeight;
-static int SIDE_MARGIN;
-static int BOTTOM_MARGIN;
-static const int TITLE_MARGIN = 2;
-static const int TITLE_SPACING = 1;
-static int RESIZE_HANDLE_HEIGHT;
-
-//-----------------------------------------------------------------------------
-
-GlowClientConfig::GlowClientConfig()
-{
-	themeName = "default";
-}
-
-void GlowClientConfig::load(KDecorationFactory *factory)
-{
-	KConfig conf("twinglowrc");
-	conf.setGroup("General");
-
-	const TQColor defaultCloseButtonColor(DEFAULT_CLOSE_BUTTON_COLOR);
-	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
-	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
-	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
-	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
-
-	stickyButtonGlowColor = conf.readColorEntry(
-		"stickyButtonGlowColor", &defaultStickyButtonColor);
-
-	helpButtonGlowColor = conf.readColorEntry(
-		"helpButtonGlowColor", &defaultHelpButtonColor);
-
-	iconifyButtonGlowColor = conf.readColorEntry(
-		"iconifyButtonGlowColor", &defaultIconifyButtonColor);
-
-	maximizeButtonGlowColor = conf.readColorEntry(
-		"maximizeButtonGlowColor", &defaultMaximizeButtonColor);
-
-	closeButtonGlowColor = conf.readColorEntry(
-		"closeButtonGlowColor", &defaultCloseButtonColor);
-
-	showResizeHandle = conf.readBoolEntry("showResizeHandle", true);
-	titlebarGradientType = conf.readNumEntry("titlebarGradientType",
-		KPixmapEffect::DiagonalGradient);
-
-	themeName = conf.readEntry ("themeName", "default");
-
-	switch(KDecoration::options()->preferredBorderSize (factory)) {
-	case KDecoration::BorderLarge:
-		SIDE_MARGIN = 8;
-		BOTTOM_MARGIN = 6;
-		RESIZE_HANDLE_HEIGHT = 10;
-		break;
-	case KDecoration::BorderVeryLarge:
-		SIDE_MARGIN = 12;
-		BOTTOM_MARGIN = 12;
-		RESIZE_HANDLE_HEIGHT = 18;
-		break;
-	case KDecoration::BorderHuge:
-		SIDE_MARGIN = 18;
-		BOTTOM_MARGIN = 18;
-		RESIZE_HANDLE_HEIGHT = 27;
-		break;
-	case KDecoration::BorderVeryHuge:
-		SIDE_MARGIN = 27;
-		BOTTOM_MARGIN = 27;
-		RESIZE_HANDLE_HEIGHT = 40;
-		break;
-	case KDecoration::BorderOversized:
-		SIDE_MARGIN = 40;
-		BOTTOM_MARGIN = 40;
-		RESIZE_HANDLE_HEIGHT = 60;
-		break;
-	case KDecoration::BorderNormal:
-	default:
-		SIDE_MARGIN = 4;
-		BOTTOM_MARGIN = 2;
-		RESIZE_HANDLE_HEIGHT = 4;
-	}
-}
-
-//-----------------------------------------------------------------------------
-
-GlowClientGlobals::~GlowClientGlobals()
-{
-	deletePixmaps();
-	m_instance = 0;
-}
-
-TQString GlowClientGlobals::getPixmapName(PixmapType type, bool isActive)
-{
-	TQString s = getPixmapTypeName(static_cast<PixmapType>(type));
-	s += "|";
-	s += isActive ? "Active" : "NotActive";
-	return s;
-}
-
-GlowClientGlobals::GlowClientGlobals()
-	: KDecorationFactory()
-{
-	_button_factory = new GlowButtonFactory();
-	readConfig();
-	readTheme ();
-	if (!createPixmaps())
-	{
-		deletePixmaps();
-		delete _theme;
-		config()->themeName = "default";
-		readTheme();
-		createPixmaps();
-	}
-}
-
-void GlowClientGlobals::readConfig()
-{
-	_config = new GlowClientConfig();
-	_config->load(this);
-}
-
-TQValueList< GlowClientGlobals::BorderSize >
-GlowClientGlobals::borderSizes() const
-{
-    // the list must be sorted
-    return TQValueList< BorderSize >() << BorderNormal <<
-	BorderLarge << BorderVeryLarge <<  BorderHuge <<
-	BorderVeryHuge << BorderOversized;
-}
-
-void GlowClientGlobals::readTheme()
-{
-	TQString theme_config_file = KGlobal::dirs()->findResource ("data",
-			TQString("twin/glow-themes/") + config()->themeName + "/" +
-			config()->themeName + ".theme");
-	if (theme_config_file.isNull())
-	{
-		config()->themeName = "default";
-		return;
-	}
-
-	KConfig conf (theme_config_file);
-	_theme = new GlowTheme(default_glow_theme);
-
-	_theme->buttonSize = conf.readSizeEntry ("buttonSize",
-			&_theme->buttonSize);
-	_theme->stickyOnPixmap = conf.readEntry ("stickyOnPixmap",
-			_theme->stickyOnPixmap);
-	_theme->stickyOffPixmap = conf.readEntry ("stickyOffPixmap",
-			_theme->stickyOffPixmap);
-	_theme->maximizeOnPixmap = conf.readEntry ("maximizeOnPixmap",
-			_theme->maximizeOnPixmap);
-	_theme->maximizeOffPixmap = conf.readEntry ("maximizeOffPixmap",
-			_theme->maximizeOffPixmap);
-	_theme->helpPixmap = conf.readEntry ("helpPixmap",
-			_theme->helpPixmap);
-	_theme->closePixmap = conf.readEntry ("closePixmap",
-			_theme->closePixmap);
-	_theme->iconifyPixmap = conf.readEntry ("iconifyPixmap",
-			_theme->iconifyPixmap);
-	_theme->stickyOnGlowPixmap = conf.readEntry ("stickyOnGlowPixmap",
-			_theme->stickyOnGlowPixmap);
-	_theme->stickyOffGlowPixmap = conf.readEntry ("stickyOffGlowPixmap",
-			_theme->stickyOffGlowPixmap);
-	_theme->maximizeOnGlowPixmap = conf.readEntry ("maximizeOnGlowPixmap",
-			_theme->maximizeOnGlowPixmap);
-	_theme->maximizeOffGlowPixmap = conf.readEntry ("maximizeOffGlowPixmap",
-			_theme->maximizeOffGlowPixmap);
-	_theme->helpGlowPixmap = conf.readEntry ("helpGlowPixmap",
-			_theme->helpGlowPixmap);
-	_theme->closeGlowPixmap = conf.readEntry ("closeGlowPixmap",
-			_theme->closeGlowPixmap);
-	_theme->iconifyGlowPixmap = conf.readEntry ("iconifyGlowPixmap",
-			_theme->iconifyGlowPixmap);
-
-	titleHeight = TQFontMetrics(KDecoration::options()->font(true)).height();
-	if (titleHeight < SIDE_MARGIN)
-		titleHeight = SIDE_MARGIN;
-	if (titleHeight < _theme->buttonSize.height())
-		titleHeight = _theme->buttonSize.height();
-}
-
-bool GlowClientGlobals::reset( unsigned long /*changed*/ )
-{
-	deletePixmaps();
-	delete _config;
-	readConfig();
-	delete _theme;
-	readTheme ();
-	if (! createPixmaps())
-	{
-		deletePixmaps();
-		delete _theme;
-		_config->themeName = "default";
-		readTheme();
-		createPixmaps();
-	}
-	return true; // FRAME
-}
-
-bool GlowClientGlobals::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonSpacer:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-            return true;
-        default:
-            return false;
-    };
-}
-
-bool GlowClientGlobals::createPixmaps()
-{
-	for( int type=0; type<=Close; type++ ) {
-		if (! createPixmap(static_cast<PixmapType>(type), false))
-			return false;
-		if (! createPixmap(static_cast<PixmapType>(type), true))
-			return false;
-	}
-
-	return true;
-}
-
-void GlowClientGlobals::deletePixmaps()
-{
-	PixmapCache::clear();
-}
-
-const TQString GlowClientGlobals::getPixmapTypeName(PixmapType type)
-{
-	switch(type) {
-		case (StickyOn):
-			return "StickyOn";
-		case(StickyOff ):
-			return "StickyOff";
-		case(Help):
-			return "Help";
-		case(Iconify):
-			return "Iconify";
-		case(MaximizeOn):
-			return "MaximizeOn";
-		case(MaximizeOff):
-			return "MaximizeOff";
-		case(Close):
-			return "Close";
-		default:
-			return TQString();
-	}
-}
-
-bool GlowClientGlobals::createPixmap(PixmapType type, bool isActive)
-{
-	TQString theme_dir = KGlobal::dirs()->findResource ("data",
-			TQString("twin/glow-themes/") + _config->themeName + "/");
-
-	TQColor glow_color;
-	TQColor color = options()->color(ColorButtonBg, isActive);
-
-	TQImage bg_image (theme_dir+_theme->backgroundPixmap);
-	TQImage fg_image;
-	TQImage glow_image;
-
-	switch(type) {
-		case (StickyOn):
-		{
-			fg_image = TQImage (theme_dir+_theme->stickyOnPixmap);
-			glow_image = TQImage (theme_dir+_theme->stickyOnGlowPixmap);
-			glow_color = _config->stickyButtonGlowColor;
-			break;
-		}
-		case (StickyOff):
-		{
-			fg_image = TQImage (theme_dir+_theme->stickyOffPixmap);
-			glow_image = TQImage (theme_dir+_theme->stickyOffGlowPixmap);
-			glow_color = _config->stickyButtonGlowColor;
-			break;
-		}
-		case (Help):
-		{
-			fg_image = TQImage (theme_dir+_theme->helpPixmap);
-			glow_image = TQImage (theme_dir+_theme->helpGlowPixmap);
-			glow_color = _config->helpButtonGlowColor;
-			break;
-		}
-		case (Iconify):
-		{
-			fg_image = TQImage (theme_dir+_theme->iconifyPixmap);
-			glow_image = TQImage (theme_dir+_theme->iconifyGlowPixmap);
-			glow_color = _config->iconifyButtonGlowColor;
-			break;
-		}
-		case (MaximizeOn):
-		{
-			fg_image = TQImage (theme_dir+_theme->maximizeOnPixmap);
-			glow_image = TQImage (theme_dir+_theme->maximizeOnGlowPixmap);
-			glow_color = _config->maximizeButtonGlowColor;
-			break;
-		}
-		case (MaximizeOff):
-		{
-			fg_image = TQImage (theme_dir+_theme->maximizeOffPixmap);
-			glow_image = TQImage (theme_dir+_theme->maximizeOffGlowPixmap);
-			glow_color = _config->maximizeButtonGlowColor;
-			break;
-		}
-		case (Close):
-		{
-			fg_image = TQImage (theme_dir+_theme->closePixmap);
-			glow_image = TQImage (theme_dir+_theme->closeGlowPixmap);
-			glow_color = _config->closeButtonGlowColor;
-			break;
-		}
-	}
-
-	if (bg_image.size() != _theme->buttonSize
-			|| fg_image.size() != _theme->buttonSize
-			|| glow_image.size() != _theme->buttonSize)
-		return false;
-
-	TQPixmap * glowPm = buttonFactory()->createGlowButtonPixmap(
-		bg_image, fg_image, glow_image,
-		color, glow_color);
-	if (glowPm->isNull())
-		return false;
-	PixmapCache::insert(getPixmapName(type, isActive), glowPm);
-	return true;
-}
-
-GlowClientGlobals *GlowClientGlobals::m_instance = 0;
-
-GlowClientGlobals *GlowClientGlobals::instance()
-{
-	if( ! m_instance )
-	{
-		m_instance = new GlowClientGlobals();
-	}
-	return m_instance;
-}
-
-//-----------------------------------------------------------------------------
-
-GlowClient::GlowClient( KDecorationBridge* b, KDecorationFactory* f )
-	: KDecoration( b, f ),
-		m_stickyButton(0), m_helpButton(0), m_minimizeButton(0),
-		m_maximizeButton(0), m_closeButton(0),
-		m_leftButtonLayout(0), m_rightButtonLayout(0), _main_layout(0)
-{
-}
-
-void GlowClient::init()
-{
-	createMainWidget(WResizeNoErase | WStaticContents | WRepaintNoErase);
-	widget()->installEventFilter(this);
-
-	createButtons();
-	resetLayout();
-}
-
-GlowClient::~GlowClient()
-{
-	PixmapCache::erase(TQString::number(widget()->winId()));
-}
-
-void GlowClient::resizeEvent( TQResizeEvent * )
-{
-	doShape();
-	widget()->tqrepaint(false);
-}
-
-void GlowClient::paintEvent( TQPaintEvent * )
-{
-	GlowClientConfig *conf = GlowClientGlobals::instance()->config();
-	TQRect r_this = widget()->rect();
-	TQRect r_title = _title_spacer->tqgeometry();
-	TQColorGroup titleCg = options()->tqcolorGroup(ColorTitleBar, isActive());
-	TQColorGroup titleBlendCg=options()->tqcolorGroup(ColorTitleBlend, isActive());
-	TQColorGroup cg = widget()->tqcolorGroup();
-	TQColor titleColor = options()->color(ColorTitleBar, isActive());
-	TQColor titleBlendColor = options()->color(ColorTitleBlend, isActive());
-	TQColor bgColor = widget()->tqcolorGroup().background();
-	TQPainter p;
-	TQPointArray pArray, pArray2, pArray3, pArray4;
-
-	// pixmap for title bar
-	TQSize tBSize(width(), r_title.height());
-	TQSize gradientPixmapSize (tBSize-TQSize(3,3));
-	if (! gradientPixmapSize.isValid())
-		gradientPixmapSize = TQSize(0,0);
-	KPixmap gradientPixmap(gradientPixmapSize);
-	if (! gradientPixmapSize.isNull())
-		KPixmapEffect::gradient(gradientPixmap, titleColor, titleBlendColor,
-			(KPixmapEffect::GradientType) conf->titlebarGradientType);
-
-	TQPixmap  * title_buffer = new TQPixmap(tBSize);
-	p.begin(title_buffer);
-	if (! gradientPixmap.isNull())
-		p.drawPixmap(2, 2, gradientPixmap);
-
-	if (tBSize.width()>=3 && tBSize.height()>=3)
-	{
-		// draw caption
-		p.setFont(options()->font(isActive()));
-		p.setPen(options()->color(ColorFont, isActive()));
-		p.drawText(r_title.x(), 0,
-			r_title.width(), r_title.height(),
-			TQt::AlignLeft | TQt::AlignVCenter | TQt::SingleLine, caption());
-	
-		// draw split color beneath buttons top right
-		pArray4 = TQPointArray(4);
-		pArray4.setPoint(0, tBSize.width()-1, tBSize.height()/2-1);
-		pArray4.setPoint(1, r_title.x()+r_title.width()-1+tBSize.height()/2,
-			tBSize.height()/2-1);
-		pArray4.setPoint(2, r_title.x()+r_title.width()-1, tBSize.height());
-		pArray4.setPoint(3, tBSize.width()-1, tBSize.height());
-		p.setPen(TQt::NoPen);
-		p.setBrush(bgColor);
-		p.drawPolygon(pArray4);
-				
-		// draw borders
-		pArray = TQPointArray(3);
-		pArray.setPoint(0, tBSize.width()-1, tBSize.height()/2-1);
-		pArray.setPoint(1, r_title.x()+r_title.width()-1+tBSize.height()/2,
-			tBSize.height()/2-1);
-		pArray.setPoint(2, r_title.x()+r_title.width()-1, tBSize.height()-1);
-		p.setPen(titleCg.mid());
-		p.drawPolyline(pArray);
-		p.drawLine (0, tBSize.height()-1, r_title.x()+r_title.width()-1, tBSize.height()-1);
-
-		pArray2 = TQPointArray(3);
-		pArray2.setPoint(0, 1, tBSize.height()-2);
-		pArray2.setPoint(1, 1, 1);
-		pArray2.setPoint(2, tBSize.width()-2, 1);
-		p.setPen(titleCg.light());
-		p.drawPolyline(pArray2);
-	}
-
-	pArray3 = TQPointArray(4);
-	pArray3.setPoint(0, 0, tBSize.height()-1);
-	pArray3.setPoint(1, 0, 0);
-	pArray3.setPoint(2, tBSize.width()-1, 0);
-	pArray3.setPoint(3, tBSize.width()-1, tBSize.height()-1);
-	p.setPen(TQt::black);
-	p.drawPolyline(pArray3);
-	p.end();
-
-	// insert title buffer in cache; before that, remove old buffer
-	PixmapCache::erase(TQString::number(widget()->winId()));
-	PixmapCache::insert(TQString::number(widget()->winId()), title_buffer);
-
-	bitBlt(widget(), 0, 0, title_buffer);
-	for (unsigned int i=0; i<m_buttonList.size(); ++i)
-		m_buttonList[i]->tqrepaint(false);
-
-	p.begin(widget());
-	p.setPen(TQt::black);
-	//-----
-	// draw borders
-	p.drawLine(0,tBSize.height(),0,r_this.height()-1);
-	p.drawLine(0,r_this.height()-1,r_this.width()-1,r_this.height()-1);
-	p.drawLine(r_this.width()-1,r_this.height()-1,
-		r_this.width()-1,tBSize.height()/2);
-	//-----
-	// fill content widget
-	p.fillRect(1, tBSize.height(),
-		r_this.width()-2, r_this.height()-tBSize.height()-1,
-		options()->tqcolorGroup(ColorFrame, isActive()).background());
-	p.end();
-
-	// paint resize handle if necessary
-	if(conf->showResizeHandle && isResizable() && ! isShade()
-			&& width()>=2 && height() >= RESIZE_HANDLE_HEIGHT)
-	{
-		p.begin(widget());
-		p.setPen (TQt::black);
-		p.drawLine (1, height() - RESIZE_HANDLE_HEIGHT,
-			width()-2, height() - RESIZE_HANDLE_HEIGHT);
-		p.end();
-	}
-}
-
-void GlowClient::showEvent( TQShowEvent * )
-{
-	doShape();
-	widget()->tqrepaint(false);
-}
-
-void GlowClient::mouseDoubleClickEvent( TQMouseEvent *e )
-{
-	if(e->button() == Qt::LeftButton && _title_spacer->tqgeometry().contains(e->pos()))
-		titlebarDblClickOperation();
-}
-
-void GlowClient::wheelEvent( TQWheelEvent *e )
-{
-    if (isSetShade() || TQRect( 0, 0, width(), titleHeight ).contains(e->pos()))
-        titlebarMouseWheelOperation( e->delta());
-}
-
-void GlowClient::activeChange()
-{
-	updateButtonPixmaps();
-	widget()->tqrepaint(false);
-}
-
-void GlowClient::iconChange()
-{
-	// we have no (t yet an) icon button, so do nothing
-}
-
-void GlowClient::shadeChange()
-{
-}
-
-void GlowClient::captionChange()
-{
-    widget()->update(_title_spacer->tqgeometry());
-}
-
-TQSize GlowClient::tqminimumSize() const
-{
-    return widget()->tqminimumSize();
-}
-
-void GlowClient::resize( const TQSize& s )
-{
-    widget()->resize( s );
-}
-
-void GlowClient::borders( int& left, int& right, int& top, int& bottom ) const
-{
-	left = right = SIDE_MARGIN;
-	top = titleHeight + TITLE_MARGIN + 1;
-	if (GlowClientGlobals::instance()->config()->showResizeHandle
-		&& isResizable())
-		bottom = RESIZE_HANDLE_HEIGHT;
-	else
-		bottom = BOTTOM_MARGIN;
-}
-
-void GlowClient::desktopChange()
-{
-	if (isOnAllDesktops()) {
-		m_stickyButton->setPixmapName(
-			GlowClientGlobals::instance()->getPixmapName(
-				GlowClientGlobals::StickyOn, isActive()));
-		m_stickyButton->setTipText(i18n("Not on all desktops"));
-	} else {
-		m_stickyButton->setPixmapName(
-			GlowClientGlobals::instance()->getPixmapName(
-				GlowClientGlobals::StickyOff, isActive()));
-		m_stickyButton->setTipText(i18n("On all desktops"));
-	}
-}
-
-void GlowClient::maximizeChange()
-{
-    if (maximizeMode() == MaximizeFull) {
-		m_maximizeButton->setPixmapName(
-			GlowClientGlobals::instance()->getPixmapName(
-				GlowClientGlobals::MaximizeOn, isActive()));
-		m_maximizeButton->setTipText(i18n("Restore"));
-	} else {
-		m_maximizeButton->setPixmapName(
-			GlowClientGlobals::instance()->getPixmapName(
-				GlowClientGlobals::MaximizeOff, isActive()));
-		m_maximizeButton->setTipText(i18n("Maximize"));
-	}
-}
-
-KDecoration::Position GlowClient::mousePosition(const TQPoint &pos) const
-{
-	Position m = PositionCenter;
-
-	int bottomSize
-		= (GlowClientGlobals::instance()->config()->showResizeHandle)
-		? RESIZE_HANDLE_HEIGHT : BOTTOM_MARGIN;
-
-	const int range = 14 + 3*SIDE_MARGIN/2;
-
-	if ( ( pos.x() > SIDE_MARGIN && pos.x() < width() - SIDE_MARGIN )
-		&& ( pos.y() > 4 && pos.y() < height() - bottomSize ) )
-		m = PositionCenter;
-	else if ( pos.y() <= range && pos.x() <= range)
-		m = PositionTopLeft;
-	else if ( pos.y() >= height()-range && pos.x() >= width()-range)
-		m = PositionBottomRight;
-	else if ( pos.y() >= height()-range && pos.x() <= range)
-		m = PositionBottomLeft;
-	else if ( pos.y() <= range && pos.x() >= width()-range)
-		m = PositionTopRight;
-	else if ( pos.y() <= 4 )
-		m = PositionTop;
-	else if ( pos.y() >= height()-bottomSize )
-		m = PositionBottom;
-	else if ( pos.x() <= SIDE_MARGIN )
-		m = PositionLeft;
-	else if ( pos.x() >= width()-SIDE_MARGIN )
-		m = PositionRight;
-	else
-		m = PositionCenter;
-
-	return m;
-}
-
-void GlowClient::createButtons()
-{
-	GlowClientGlobals *globals = GlowClientGlobals::instance();
-	GlowButtonFactory *factory = globals->buttonFactory();
-	TQSize size = globals->theme()->buttonSize;
-
-	m_stickyButton = factory->createGlowButton(widget(),
-					"StickyButton", isOnAllDesktops()?i18n("Not on all desktops"):i18n("On all desktops"), Qt::LeftButton|Qt::RightButton);
-	m_stickyButton->setFixedSize(size);
-	connect(m_stickyButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(toggleOnAllDesktops()));
-	m_buttonList.insert(m_buttonList.end(), m_stickyButton);
-
-	m_helpButton = factory->createGlowButton(widget(),
-					"HelpButton", i18n("Help"));
-	m_helpButton->setFixedSize(size);
-	connect(m_helpButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(showContextHelp()));
-	m_buttonList.insert(m_buttonList.end(), m_helpButton);
-
-	m_minimizeButton = factory->createGlowButton(widget(),
-					"IconifyButton", i18n("Minimize"));
-	m_minimizeButton->setFixedSize(size);
-	connect(m_minimizeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(minimize()));
-	m_buttonList.insert(m_buttonList.end(), m_minimizeButton);
-
-	m_maximizeButton=factory->createGlowButton(widget(),
-					"MaximizeButton", i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
-	m_maximizeButton->setFixedSize(size);
-	connect(m_maximizeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotMaximize()));
-	m_buttonList.insert(m_buttonList.end(), m_maximizeButton);
-
-	m_closeButton = factory->createGlowButton(widget(),
-					"CloseButton", i18n("Close"));
-	m_closeButton->setFixedSize(size);
-	connect(m_closeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(closeWindow()));
-	m_buttonList.insert(m_buttonList.end(), m_closeButton);
-}
-
-void GlowClient::resetLayout()
-{
-	_main_layout = new TQVBoxLayout(widget(), 0, 0);
-	_main_layout->setResizeMode (TQLayout::FreeResize);
-
-	// update button positions and colors
-	updateButtonPositions();
-	updateButtonPixmaps();
-
-	TQBoxLayout * topLayout = new TQBoxLayout(_main_layout,
-			TQBoxLayout::LeftToRight, 0, 0);
-	topLayout->setMargin(0);
-	topLayout->setSpacing(TITLE_SPACING);
-	topLayout->addSpacing(SIDE_MARGIN);
-	TQVBoxLayout *outerLeftLayout = new TQVBoxLayout(topLayout);
-	outerLeftLayout->addSpacing(TITLE_MARGIN);
-	outerLeftLayout->addItem(m_leftButtonLayout);
-	outerLeftLayout->addSpacing(1);
-	topLayout->addSpacing(SIDE_MARGIN);
-
-	_title_spacer = new TQSpacerItem(0, titleHeight + TITLE_MARGIN + 1,
-		TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-	topLayout->addItem(_title_spacer);
-
-	topLayout->addSpacing(SIDE_MARGIN);
-	TQVBoxLayout *outerRightLayout = new TQVBoxLayout(topLayout);
-	outerRightLayout->addSpacing(TITLE_MARGIN);
-	outerRightLayout->addItem(m_rightButtonLayout);
-	outerRightLayout->addSpacing(1);
-	topLayout->addSpacing(SIDE_MARGIN);
-
-	TQBoxLayout *midLayout = new TQBoxLayout(
-			_main_layout, TQBoxLayout::LeftToRight, 0, 0);
-	midLayout->addSpacing(SIDE_MARGIN);
-	if(isPreview())
-		midLayout->addWidget(
-				new TQLabel( i18n( "<b><center>Glow preview</center></b>" ), widget()));
-	else
-		midLayout->addItem( new TQSpacerItem( 0, 0 ));
-	midLayout->addSpacing(SIDE_MARGIN);
-
-	if(GlowClientGlobals::instance()->config()->showResizeHandle
-		&& isResizable() ) {
-		_bottom_spacer = new TQSpacerItem(SIDE_MARGIN*2,
-			RESIZE_HANDLE_HEIGHT, TQSizePolicy::Expanding, TQSizePolicy::Minimum);
-	} else {
-		_bottom_spacer = new TQSpacerItem(SIDE_MARGIN*2,
-			BOTTOM_MARGIN, TQSizePolicy::Expanding, TQSizePolicy::Minimum);
-	}
-	_main_layout->addItem (_bottom_spacer);
-	_main_layout->setStretchFactor(topLayout, 0);
-	_main_layout->setStretchFactor(midLayout, 1);
-}
-
-void GlowClient::updateButtonPositions()
-{
-	TQString buttons = options()->titleButtonsLeft() + "|"
-		+ options()->titleButtonsRight();
-	bool leftButtons=true;
-
-	// hide all buttons
-	for( unsigned int i=0; i<m_buttonList.size(); i++ )
-		m_buttonList[i]->hide();
-
-	m_leftButtonList.clear();
-	m_rightButtonList.clear();
-
-	// reset left and right button tqlayout
-	if(m_leftButtonLayout)
-		delete m_leftButtonLayout;
-	m_leftButtonLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-	m_leftButtonLayout->setMargin(0);
-	m_leftButtonLayout->setSpacing(TITLE_SPACING);
-	if(m_rightButtonLayout)
-		delete m_rightButtonLayout;
-	m_rightButtonLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-	m_rightButtonLayout->setMargin(0);
-	m_rightButtonLayout->setSpacing(TITLE_SPACING);
-
-	for( unsigned int i=0; i<buttons.length(); i++ )
-	{
-		char c = buttons[i].latin1();
-		GlowButton *button = 0;
-		if( c=='S' ) // sticky
-			button = m_stickyButton;
-		else if( c=='H' && providesContextHelp() ) // help
-			button = m_helpButton;
-		else if( c=='I' && isMinimizable() ) // iconify
-			button = m_minimizeButton;
-		else if( c=='A' && isMaximizable() ) // maximize
-			button = m_maximizeButton;
-		else if( c=='X' && isCloseable() ) // close
-			button= m_closeButton;
-		else if( c=='_' ) // spacer item
-		{
-			if(leftButtons)
-				m_leftButtonLayout->addSpacing(4);
-			else
-				m_rightButtonLayout->addSpacing(4);
-		}
-		else if( c=='|' )
-			leftButtons = false;
-
-		if (button) {
-			button->show(); // show visible buttons
-			if (leftButtons) {
-				m_leftButtonList.insert(m_leftButtonList.end(), button);
-				m_leftButtonLayout->addWidget(button);
-			} else {
-				m_rightButtonList.insert(m_rightButtonList.end(), button);
-				m_rightButtonLayout->addWidget(button);
-			}
-		}
-	}
-}
-
-void GlowClient::updateButtonPixmaps()
-{
-	GlowClientGlobals *globals = GlowClientGlobals::instance();
-
-	if ( isOnAllDesktops() ) {
-		m_stickyButton->setPixmapName(globals->getPixmapName(
-			GlowClientGlobals::StickyOn, isActive()));
-	} else {
-		m_stickyButton->setPixmapName(globals->getPixmapName(
-			GlowClientGlobals::StickyOff, isActive()));
-	}
-	m_helpButton->setPixmapName(globals->getPixmapName(
-		GlowClientGlobals::Help, isActive()));
-
-	m_minimizeButton->setPixmapName(globals->getPixmapName(
-		GlowClientGlobals::Iconify, isActive()));
-
-	if ( maximizeMode() == MaximizeFull ) {
-		m_maximizeButton->setPixmapName(globals->getPixmapName(
-			GlowClientGlobals::MaximizeOn, isActive()));
-	} else {
-		m_maximizeButton->setPixmapName(globals->getPixmapName(
-			GlowClientGlobals::MaximizeOff, isActive()));
-	}
-	m_closeButton->setPixmapName(globals->getPixmapName(
-		GlowClientGlobals::Close, isActive()));
-}
-
-void GlowClient::doShape()
-{
-	TQRegion mask(widget()->rect());
-	// edges
-
-	mask -= TQRegion(width()-1,0,1,1);
-	mask -= TQRegion(0,height()-1,1,1);
-	mask -= TQRegion(width()-1,height()-1,1,1);
-	setMask(mask);
-}
-
-bool GlowClient::isLeft(GlowButton *button)
-{
-	for( unsigned int i=0; i<m_leftButtonList.size(); i++ )
-		if( m_leftButtonList[i] == button )
-			return true;
-	return false;
-}
-
-bool GlowClient::isRight(GlowButton *button)
-{
-	for( unsigned int i=0; i<m_rightButtonList.size(); i++ )
-		if( m_rightButtonList[i] == button )
-			return true;
-	return false;
-}
-
-void GlowClient::slotMaximize()
-{
-	maximize(m_maximizeButton->lastButton());
-}
-
-bool GlowClient::eventFilter( TQObject* o, TQEvent* e )
-{
-	if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
-		return false;
-	switch( e->type())
-	{
-	case TQEvent::Resize:
-	    resizeEvent( TQT_TQRESIZEEVENT( e ));
-	    return true;
-	case TQEvent::Paint:
-	    paintEvent( TQT_TQPAINTEVENT( e ));
-	    return true;
-	case TQEvent::MouseButtonDblClick:
-	    mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ));
-	    return true;
-	case TQEvent::MouseButtonPress:
-	    processMousePressEvent( TQT_TQMOUSEEVENT( e ));
-	    return true;
-	case TQEvent::Show:
-	    showEvent( TQT_TQSHOWEVENT( e ));
-	    return true;
-	case TQEvent::Wheel:
-	    wheelEvent( TQT_TQWHEELEVENT( e ));
-	    return true;
-	default:
-	    break;
-	}
-    return false;
-}
-
-KDecoration* GlowClientGlobals::createDecoration( KDecorationBridge* bridge )
-{
-	return new GlowClient( bridge, this );
-}
-
-} // end of namespace
-
-extern "C"
-KDE_EXPORT KDecorationFactory* create_factory()
-{
-	return Glow::GlowClientGlobals::instance();
-}
-
-#include "glowclient.moc"
-
diff --git a/kwin-styles/glow/glowclient.h b/kwin-styles/glow/glowclient.h
deleted file mode 100644
index 9129dce0..00000000
--- a/kwin-styles/glow/glowclient.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/***************************************************************************
-                          glowclient.h  -  description
-                             -------------------
-    begin                : Thu Sep 6 2001
-    copyright            : (C) 2001 by Henning Burchardt
-    email                : h_burchardt@gmx.net
- ***************************************************************************/
-
-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
-#ifndef GLOW_CLIENT_H
-#define GLOW_CLIENT_H
-
-#include <vector>
-#include <map>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQPixmap;
-class TQBitmap;
-class TQTimer;
-class TQBoxLayout;
-class TQGridLayout;
-class TQVBoxLayout;
-class TQSpacerItem;
-
-namespace Glow
-{
-
-class GlowButton;
-class GlowButtonFactory;
-
-//-----------------------------------------------------------------------------
-// GlowTheme
-//-----------------------------------------------------------------------------
-
-struct GlowTheme
-{
-	TQSize buttonSize;
-	
-	TQString backgroundPixmap;
-	TQString backgroundAlphaPixmap;
-
-	TQString stickyOnPixmap;
-	TQString stickyOffPixmap;
-	TQString maximizeOnPixmap;
-	TQString maximizeOffPixmap;
-	TQString helpPixmap;
-	TQString closePixmap;
-	TQString iconifyPixmap;
-
-	TQString stickyOnGlowPixmap;
-	TQString stickyOffGlowPixmap;
-	TQString maximizeOnGlowPixmap;
-	TQString maximizeOffGlowPixmap;
-	TQString helpGlowPixmap;
-	TQString closeGlowPixmap;
-	TQString iconifyGlowPixmap;
-};
-
-static GlowTheme default_glow_theme = {
-	TQSize (17, 17),
-	"background.png", "background_alpha.png",
-	"stickyon.png", "stickyoff.png",
-	"maximizeon.png", "maximizeoff.png",
-	"help.png", "close.png", "iconify.png",
-	"stickyon_glow.png", "stickyoff_glow.png",
-	"maximizeon_glow.png", "maximizeoff_glow.png",
-	"help_glow.png", "close_glow.png", "iconify_glow.png" };
-
-//-----------------------------------------------------------------------------
-// GlowClientConfig
-//-----------------------------------------------------------------------------
-
-class GlowClientConfig
-{
-public:
-	GlowClientConfig();
-
-	void load (KDecorationFactory *factory);
-
-	TQColor stickyButtonGlowColor;
-	TQColor helpButtonGlowColor;
-	TQColor iconifyButtonGlowColor;
-	TQColor maximizeButtonGlowColor;
-	TQColor closeButtonGlowColor;
-	bool showResizeHandle;
-	int titlebarGradientType;
-	TQString themeName;
-};
-
-//-----------------------------------------------------------------------------
-// GlowClientGlobals
-//-----------------------------------------------------------------------------
-
-class GlowClientGlobals : public KDecorationFactory
-{
-public:
-	enum PixmapType { StickyOn, StickyOff, Help, Iconify, MaximizeOn,
-		MaximizeOff, Close };
-
-	static GlowClientGlobals *instance();
-	
-	~GlowClientGlobals();
-
-	virtual KDecoration* createDecoration( KDecorationBridge* b );
-	virtual bool reset( unsigned long changed );
-    virtual bool supports( Ability ability );
-	TQValueList< GlowClientGlobals::BorderSize >  borderSizes() const;
-	
-	TQString getPixmapName(PixmapType type, bool isActive);
-
-	GlowTheme * theme() const { return _theme; }
-	GlowClientConfig * config() const { return _config; }
-	GlowButtonFactory * buttonFactory() { return _button_factory; }
-
-private:
-	static GlowClientGlobals *m_instance;
-	
-	GlowTheme * _theme;
-	GlowClientConfig * _config;
-	GlowButtonFactory * _button_factory;
-
-	GlowClientGlobals();
-	void readConfig();
-	void readTheme ();
-	bool createPixmaps();
-	void deletePixmaps();
-	bool createPixmap(PixmapType type,bool isActive);
-	const TQString getPixmapTypeName(PixmapType type);
-};
-
-//-----------------------------------------------------------------------------
-// GlowClient
-//-----------------------------------------------------------------------------
-
-class GlowClient : public KDecoration
-{
-	Q_OBJECT
-  TQ_OBJECT
-public:
-	GlowClient( KDecorationBridge* b, KDecorationFactory* f );
-	~GlowClient();
-	
-	virtual void init();
-	virtual void borders( int&, int&, int&, int& ) const;
-	virtual void resize( const TQSize& );
-	virtual TQSize tqminimumSize() const;
-
-protected:
-	virtual void resizeEvent( TQResizeEvent * );
-	virtual void paintEvent( TQPaintEvent * );
-	virtual void showEvent( TQShowEvent * );
-	virtual void mouseDoubleClickEvent( TQMouseEvent * );
-	virtual void wheelEvent( TQWheelEvent * );
-	virtual void maximizeChange();
-	virtual void activeChange();
-	virtual void iconChange();
-	virtual void desktopChange();
-	virtual void shadeChange();
-	virtual void captionChange();
-	virtual Position mousePosition(const TQPoint &) const;
-	virtual bool eventFilter( TQObject* o, TQEvent* e );
-
-private:
-	std::vector<GlowButton*> m_buttonList;
-	std::vector<GlowButton*> m_leftButtonList;
-	std::vector<GlowButton*> m_rightButtonList;
-	GlowButton *m_stickyButton;
-	GlowButton *m_helpButton;
-	GlowButton *m_minimizeButton;
-	GlowButton *m_maximizeButton;
-	GlowButton *m_closeButton;
-	TQBoxLayout *m_leftButtonLayout;
-	TQBoxLayout *m_rightButtonLayout;
-	TQSpacerItem * _bottom_spacer;
-	TQSpacerItem * _title_spacer;
-	TQVBoxLayout * _main_layout;
-
-	void createButtons();
-	void updateButtonPositions();
-	/**
-	 * Before this method is called we have to update the button
-	 * positions with updateButtonPositions() because the pixmaps
-	 * depend on the position
-	 */
-	void updateButtonPixmaps();
-	void resetLayout();
-	void doShape();
-	bool isLeft(GlowButton *button);
-	bool isRight(GlowButton *button);
-
-protected slots:
-	void slotMaximize();
-};
-
-} // namespace
-
-#endif
diff --git a/kwin-styles/glow/resources.h b/kwin-styles/glow/resources.h
deleted file mode 100644
index a304b822..00000000
--- a/kwin-styles/glow/resources.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef RESOURCES_H
-#define RESOURCES_H
-
-#define DEFAULT_CLOSE_BUTTON_COLOR TQt::red
-#define DEFAULT_MAXIMIZE_BUTTON_COLOR TQt::yellow
-#define DEFAULT_ICONIFY_BUTTON_COLOR TQt::green
-#define DEFAULT_HELP_BUTTON_COLOR TQt::white
-#define DEFAULT_STICKY_BUTTON_COLOR TQt::white
-
-#endif
-
diff --git a/kwin-styles/glow/themes/CMakeLists.txt b/kwin-styles/glow/themes/CMakeLists.txt
deleted file mode 100644
index 2f725214..00000000
--- a/kwin-styles/glow/themes/CMakeLists.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( default )
-add_subdirectory( glass )
-add_subdirectory( glass_huge )
-add_subdirectory( glass_large )
-add_subdirectory( glass_verylarge )
-add_subdirectory( square )
\ No newline at end of file
diff --git a/kwin-styles/glow/themes/Makefile.am b/kwin-styles/glow/themes/Makefile.am
deleted file mode 100644
index ec2725a7..00000000
--- a/kwin-styles/glow/themes/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS=default glass square glass_large glass_verylarge glass_huge
diff --git a/kwin-styles/glow/themes/default/CMakeLists.txt b/kwin-styles/glow/themes/default/CMakeLists.txt
deleted file mode 100644
index 433e22b6..00000000
--- a/kwin-styles/glow/themes/default/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    default.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/default )
diff --git a/kwin-styles/glow/themes/default/Makefile.am b/kwin-styles/glow/themes/default/Makefile.am
deleted file mode 100644
index b3ef0fa5..00000000
--- a/kwin-styles/glow/themes/default/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/default
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-default.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/default/background.png b/kwin-styles/glow/themes/default/background.png
deleted file mode 100644
index 3fcbcdf5..00000000
Binary files a/kwin-styles/glow/themes/default/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/close.png b/kwin-styles/glow/themes/default/close.png
deleted file mode 100644
index 898a368a..00000000
Binary files a/kwin-styles/glow/themes/default/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/close_glow.png b/kwin-styles/glow/themes/default/close_glow.png
deleted file mode 100644
index 69b36e92..00000000
Binary files a/kwin-styles/glow/themes/default/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/default.theme b/kwin-styles/glow/themes/default/default.theme
deleted file mode 100644
index 26f00feb..00000000
--- a/kwin-styles/glow/themes/default/default.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=17,17
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/default/help.png b/kwin-styles/glow/themes/default/help.png
deleted file mode 100644
index c3ed65ee..00000000
Binary files a/kwin-styles/glow/themes/default/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/help_glow.png b/kwin-styles/glow/themes/default/help_glow.png
deleted file mode 100644
index 79a5006a..00000000
Binary files a/kwin-styles/glow/themes/default/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/iconify.png b/kwin-styles/glow/themes/default/iconify.png
deleted file mode 100644
index 94fc6338..00000000
Binary files a/kwin-styles/glow/themes/default/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/iconify_glow.png b/kwin-styles/glow/themes/default/iconify_glow.png
deleted file mode 100644
index 8b4d1413..00000000
Binary files a/kwin-styles/glow/themes/default/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/maximizeoff.png b/kwin-styles/glow/themes/default/maximizeoff.png
deleted file mode 100644
index e60cdc97..00000000
Binary files a/kwin-styles/glow/themes/default/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/maximizeoff_glow.png b/kwin-styles/glow/themes/default/maximizeoff_glow.png
deleted file mode 100644
index 25f4c8ec..00000000
Binary files a/kwin-styles/glow/themes/default/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/maximizeon.png b/kwin-styles/glow/themes/default/maximizeon.png
deleted file mode 100644
index 3976411f..00000000
Binary files a/kwin-styles/glow/themes/default/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/maximizeon_glow.png b/kwin-styles/glow/themes/default/maximizeon_glow.png
deleted file mode 100644
index 941ed849..00000000
Binary files a/kwin-styles/glow/themes/default/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/stickyoff.png b/kwin-styles/glow/themes/default/stickyoff.png
deleted file mode 100644
index 3600e326..00000000
Binary files a/kwin-styles/glow/themes/default/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/stickyoff_glow.png b/kwin-styles/glow/themes/default/stickyoff_glow.png
deleted file mode 100644
index 5c9861a0..00000000
Binary files a/kwin-styles/glow/themes/default/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/stickyon.png b/kwin-styles/glow/themes/default/stickyon.png
deleted file mode 100644
index a84941a3..00000000
Binary files a/kwin-styles/glow/themes/default/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/default/stickyon_glow.png b/kwin-styles/glow/themes/default/stickyon_glow.png
deleted file mode 100644
index 905653e5..00000000
Binary files a/kwin-styles/glow/themes/default/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/CMakeLists.txt b/kwin-styles/glow/themes/glass/CMakeLists.txt
deleted file mode 100644
index 279668d3..00000000
--- a/kwin-styles/glow/themes/glass/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    glass.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass )
diff --git a/kwin-styles/glow/themes/glass/Makefile.am b/kwin-styles/glow/themes/glass/Makefile.am
deleted file mode 100644
index aeff2c35..00000000
--- a/kwin-styles/glow/themes/glass/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/glass
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-glass.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/glass/background.png b/kwin-styles/glow/themes/glass/background.png
deleted file mode 100644
index 97d278a0..00000000
Binary files a/kwin-styles/glow/themes/glass/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/close.png b/kwin-styles/glow/themes/glass/close.png
deleted file mode 100644
index 8b61cfd2..00000000
Binary files a/kwin-styles/glow/themes/glass/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/close_glow.png b/kwin-styles/glow/themes/glass/close_glow.png
deleted file mode 100644
index 2be50e89..00000000
Binary files a/kwin-styles/glow/themes/glass/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/glass.theme b/kwin-styles/glow/themes/glass/glass.theme
deleted file mode 100644
index 9facf271..00000000
--- a/kwin-styles/glow/themes/glass/glass.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=19,19
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/glass/help.png b/kwin-styles/glow/themes/glass/help.png
deleted file mode 100644
index 7a12fe88..00000000
Binary files a/kwin-styles/glow/themes/glass/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/help_glow.png b/kwin-styles/glow/themes/glass/help_glow.png
deleted file mode 100644
index 77976ff1..00000000
Binary files a/kwin-styles/glow/themes/glass/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/iconify.png b/kwin-styles/glow/themes/glass/iconify.png
deleted file mode 100644
index 55b9f6a9..00000000
Binary files a/kwin-styles/glow/themes/glass/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/iconify_glow.png b/kwin-styles/glow/themes/glass/iconify_glow.png
deleted file mode 100644
index ff741dbe..00000000
Binary files a/kwin-styles/glow/themes/glass/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/maximizeoff.png b/kwin-styles/glow/themes/glass/maximizeoff.png
deleted file mode 100644
index b08d34c1..00000000
Binary files a/kwin-styles/glow/themes/glass/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/maximizeoff_glow.png b/kwin-styles/glow/themes/glass/maximizeoff_glow.png
deleted file mode 100644
index 8ff43447..00000000
Binary files a/kwin-styles/glow/themes/glass/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/maximizeon.png b/kwin-styles/glow/themes/glass/maximizeon.png
deleted file mode 100644
index 8894007e..00000000
Binary files a/kwin-styles/glow/themes/glass/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/maximizeon_glow.png b/kwin-styles/glow/themes/glass/maximizeon_glow.png
deleted file mode 100644
index 7fe3c840..00000000
Binary files a/kwin-styles/glow/themes/glass/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/stickyoff.png b/kwin-styles/glow/themes/glass/stickyoff.png
deleted file mode 100644
index d87cfe9d..00000000
Binary files a/kwin-styles/glow/themes/glass/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/stickyoff_glow.png b/kwin-styles/glow/themes/glass/stickyoff_glow.png
deleted file mode 100644
index f682df78..00000000
Binary files a/kwin-styles/glow/themes/glass/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/stickyon.png b/kwin-styles/glow/themes/glass/stickyon.png
deleted file mode 100644
index f044c134..00000000
Binary files a/kwin-styles/glow/themes/glass/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass/stickyon_glow.png b/kwin-styles/glow/themes/glass/stickyon_glow.png
deleted file mode 100644
index 0b468787..00000000
Binary files a/kwin-styles/glow/themes/glass/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/CMakeLists.txt b/kwin-styles/glow/themes/glass_huge/CMakeLists.txt
deleted file mode 100644
index 92021eff..00000000
--- a/kwin-styles/glow/themes/glass_huge/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    glass_huge.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_huge )
diff --git a/kwin-styles/glow/themes/glass_huge/Makefile.am b/kwin-styles/glow/themes/glass_huge/Makefile.am
deleted file mode 100644
index 244f67a0..00000000
--- a/kwin-styles/glow/themes/glass_huge/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/glass_huge
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-glass_huge.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/glass_huge/background.png b/kwin-styles/glow/themes/glass_huge/background.png
deleted file mode 100644
index f69e109b..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/close.png b/kwin-styles/glow/themes/glass_huge/close.png
deleted file mode 100644
index 3f1c7369..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/close_glow.png b/kwin-styles/glow/themes/glass_huge/close_glow.png
deleted file mode 100644
index 00b647dc..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/glass_huge.theme b/kwin-styles/glow/themes/glass_huge/glass_huge.theme
deleted file mode 100644
index d8c41f52..00000000
--- a/kwin-styles/glow/themes/glass_huge/glass_huge.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=40,40
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/glass_huge/help.png b/kwin-styles/glow/themes/glass_huge/help.png
deleted file mode 100644
index a391ce94..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/help_glow.png b/kwin-styles/glow/themes/glass_huge/help_glow.png
deleted file mode 100644
index a8237795..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/iconify.png b/kwin-styles/glow/themes/glass_huge/iconify.png
deleted file mode 100644
index b3219692..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/iconify_glow.png b/kwin-styles/glow/themes/glass_huge/iconify_glow.png
deleted file mode 100644
index a5950bcc..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/maximizeoff.png b/kwin-styles/glow/themes/glass_huge/maximizeoff.png
deleted file mode 100644
index b6ca8c0b..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/maximizeoff_glow.png b/kwin-styles/glow/themes/glass_huge/maximizeoff_glow.png
deleted file mode 100644
index deb8b29f..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/maximizeon.png b/kwin-styles/glow/themes/glass_huge/maximizeon.png
deleted file mode 100644
index bcccef1f..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/maximizeon_glow.png b/kwin-styles/glow/themes/glass_huge/maximizeon_glow.png
deleted file mode 100644
index 410296b1..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/stickyoff.png b/kwin-styles/glow/themes/glass_huge/stickyoff.png
deleted file mode 100644
index db79fec8..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/stickyoff_glow.png b/kwin-styles/glow/themes/glass_huge/stickyoff_glow.png
deleted file mode 100644
index ff8377b1..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/stickyon.png b/kwin-styles/glow/themes/glass_huge/stickyon.png
deleted file mode 100644
index c6b1f6bc..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_huge/stickyon_glow.png b/kwin-styles/glow/themes/glass_huge/stickyon_glow.png
deleted file mode 100644
index 46d8470b..00000000
Binary files a/kwin-styles/glow/themes/glass_huge/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/CMakeLists.txt b/kwin-styles/glow/themes/glass_large/CMakeLists.txt
deleted file mode 100644
index 597d15c1..00000000
--- a/kwin-styles/glow/themes/glass_large/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    glass_large.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_large )
diff --git a/kwin-styles/glow/themes/glass_large/Makefile.am b/kwin-styles/glow/themes/glass_large/Makefile.am
deleted file mode 100644
index 353e4b6f..00000000
--- a/kwin-styles/glow/themes/glass_large/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/glass_large
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-glass_large.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/glass_large/background.png b/kwin-styles/glow/themes/glass_large/background.png
deleted file mode 100644
index 860e346f..00000000
Binary files a/kwin-styles/glow/themes/glass_large/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/close.png b/kwin-styles/glow/themes/glass_large/close.png
deleted file mode 100644
index 4e180281..00000000
Binary files a/kwin-styles/glow/themes/glass_large/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/close_glow.png b/kwin-styles/glow/themes/glass_large/close_glow.png
deleted file mode 100644
index 59976dd3..00000000
Binary files a/kwin-styles/glow/themes/glass_large/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/glass_large.theme b/kwin-styles/glow/themes/glass_large/glass_large.theme
deleted file mode 100644
index 1fdf6832..00000000
--- a/kwin-styles/glow/themes/glass_large/glass_large.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=23,23
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/glass_large/help.png b/kwin-styles/glow/themes/glass_large/help.png
deleted file mode 100644
index 464a7d49..00000000
Binary files a/kwin-styles/glow/themes/glass_large/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/help_glow.png b/kwin-styles/glow/themes/glass_large/help_glow.png
deleted file mode 100644
index 21e94cd0..00000000
Binary files a/kwin-styles/glow/themes/glass_large/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/iconify.png b/kwin-styles/glow/themes/glass_large/iconify.png
deleted file mode 100644
index c148f4bb..00000000
Binary files a/kwin-styles/glow/themes/glass_large/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/iconify_glow.png b/kwin-styles/glow/themes/glass_large/iconify_glow.png
deleted file mode 100644
index 9daa831b..00000000
Binary files a/kwin-styles/glow/themes/glass_large/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/maximizeoff.png b/kwin-styles/glow/themes/glass_large/maximizeoff.png
deleted file mode 100644
index 40580530..00000000
Binary files a/kwin-styles/glow/themes/glass_large/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/maximizeoff_glow.png b/kwin-styles/glow/themes/glass_large/maximizeoff_glow.png
deleted file mode 100644
index 164aadbf..00000000
Binary files a/kwin-styles/glow/themes/glass_large/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/maximizeon.png b/kwin-styles/glow/themes/glass_large/maximizeon.png
deleted file mode 100644
index 34e9425a..00000000
Binary files a/kwin-styles/glow/themes/glass_large/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/maximizeon_glow.png b/kwin-styles/glow/themes/glass_large/maximizeon_glow.png
deleted file mode 100644
index 6038c045..00000000
Binary files a/kwin-styles/glow/themes/glass_large/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/stickyoff.png b/kwin-styles/glow/themes/glass_large/stickyoff.png
deleted file mode 100644
index a29cde1a..00000000
Binary files a/kwin-styles/glow/themes/glass_large/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/stickyoff_glow.png b/kwin-styles/glow/themes/glass_large/stickyoff_glow.png
deleted file mode 100644
index 76c4781e..00000000
Binary files a/kwin-styles/glow/themes/glass_large/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/stickyon.png b/kwin-styles/glow/themes/glass_large/stickyon.png
deleted file mode 100644
index c805faf4..00000000
Binary files a/kwin-styles/glow/themes/glass_large/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_large/stickyon_glow.png b/kwin-styles/glow/themes/glass_large/stickyon_glow.png
deleted file mode 100644
index 7a6b9ec4..00000000
Binary files a/kwin-styles/glow/themes/glass_large/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/CMakeLists.txt b/kwin-styles/glow/themes/glass_verylarge/CMakeLists.txt
deleted file mode 100644
index 5fd50a91..00000000
--- a/kwin-styles/glow/themes/glass_verylarge/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    glass_verylarge.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_verylarge )
diff --git a/kwin-styles/glow/themes/glass_verylarge/Makefile.am b/kwin-styles/glow/themes/glass_verylarge/Makefile.am
deleted file mode 100644
index ab67c5db..00000000
--- a/kwin-styles/glow/themes/glass_verylarge/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/glass_verylarge
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-glass_verylarge.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/glass_verylarge/background.png b/kwin-styles/glow/themes/glass_verylarge/background.png
deleted file mode 100644
index ed032232..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/close.png b/kwin-styles/glow/themes/glass_verylarge/close.png
deleted file mode 100644
index 15dc4b50..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/close_glow.png b/kwin-styles/glow/themes/glass_verylarge/close_glow.png
deleted file mode 100644
index 9207e37e..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/glass_verylarge.theme b/kwin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
deleted file mode 100644
index 36368a8d..00000000
--- a/kwin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=30,30
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/glass_verylarge/help.png b/kwin-styles/glow/themes/glass_verylarge/help.png
deleted file mode 100644
index 3a2d0c9d..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/help_glow.png b/kwin-styles/glow/themes/glass_verylarge/help_glow.png
deleted file mode 100644
index 29e6edf9..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/iconify.png b/kwin-styles/glow/themes/glass_verylarge/iconify.png
deleted file mode 100644
index 2d760e3d..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/iconify_glow.png b/kwin-styles/glow/themes/glass_verylarge/iconify_glow.png
deleted file mode 100644
index 01f474e5..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/maximizeoff.png b/kwin-styles/glow/themes/glass_verylarge/maximizeoff.png
deleted file mode 100644
index 4224aa05..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png b/kwin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png
deleted file mode 100644
index 9327994a..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/maximizeon.png b/kwin-styles/glow/themes/glass_verylarge/maximizeon.png
deleted file mode 100644
index 2d90482f..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/maximizeon_glow.png b/kwin-styles/glow/themes/glass_verylarge/maximizeon_glow.png
deleted file mode 100644
index 3b9a6bf4..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/stickyoff.png b/kwin-styles/glow/themes/glass_verylarge/stickyoff.png
deleted file mode 100644
index a2c26583..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/stickyoff_glow.png b/kwin-styles/glow/themes/glass_verylarge/stickyoff_glow.png
deleted file mode 100644
index c6e57e21..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/stickyon.png b/kwin-styles/glow/themes/glass_verylarge/stickyon.png
deleted file mode 100644
index 56cde081..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/glass_verylarge/stickyon_glow.png b/kwin-styles/glow/themes/glass_verylarge/stickyon_glow.png
deleted file mode 100644
index f3778479..00000000
Binary files a/kwin-styles/glow/themes/glass_verylarge/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/CMakeLists.txt b/kwin-styles/glow/themes/square/CMakeLists.txt
deleted file mode 100644
index 0343fa2a..00000000
--- a/kwin-styles/glow/themes/square/CMakeLists.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    background.png
-    help.png help_glow.png
-    close.png close_glow.png
-    iconify.png iconify_glow.png
-    maximizeoff.png maximizeoff_glow.png
-    maximizeon.png maximizeon_glow.png
-    stickyon.png stickyon_glow.png
-    stickyoff.png stickyoff_glow.png
-    square.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/square )
diff --git a/kwin-styles/glow/themes/square/Makefile.am b/kwin-styles/glow/themes/square/Makefile.am
deleted file mode 100644
index 01193d98..00000000
--- a/kwin-styles/glow/themes/square/Makefile.am
+++ /dev/null
@@ -1,17 +0,0 @@
-linkdir = $(kde_datadir)/twin/glow-themes/square
-link_DATA = \
-background.png \
-help.png help_glow.png \
-close.png close_glow.png \
-iconify.png iconify_glow.png \
-maximizeoff.png maximizeoff_glow.png \
-maximizeon.png maximizeon_glow.png \
-stickyon.png stickyon_glow.png \
-stickyoff.png stickyoff_glow.png \
-square.theme
-
-EXTRA_DIST = $(link_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/glow/themes/square/background.png b/kwin-styles/glow/themes/square/background.png
deleted file mode 100644
index 225af3a5..00000000
Binary files a/kwin-styles/glow/themes/square/background.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/close.png b/kwin-styles/glow/themes/square/close.png
deleted file mode 100644
index 898a368a..00000000
Binary files a/kwin-styles/glow/themes/square/close.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/close_glow.png b/kwin-styles/glow/themes/square/close_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/close_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/help.png b/kwin-styles/glow/themes/square/help.png
deleted file mode 100644
index c3ed65ee..00000000
Binary files a/kwin-styles/glow/themes/square/help.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/help_glow.png b/kwin-styles/glow/themes/square/help_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/help_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/iconify.png b/kwin-styles/glow/themes/square/iconify.png
deleted file mode 100644
index 94fc6338..00000000
Binary files a/kwin-styles/glow/themes/square/iconify.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/iconify_glow.png b/kwin-styles/glow/themes/square/iconify_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/iconify_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/maximizeoff.png b/kwin-styles/glow/themes/square/maximizeoff.png
deleted file mode 100644
index e60cdc97..00000000
Binary files a/kwin-styles/glow/themes/square/maximizeoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/maximizeoff_glow.png b/kwin-styles/glow/themes/square/maximizeoff_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/maximizeoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/maximizeon.png b/kwin-styles/glow/themes/square/maximizeon.png
deleted file mode 100644
index 3976411f..00000000
Binary files a/kwin-styles/glow/themes/square/maximizeon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/maximizeon_glow.png b/kwin-styles/glow/themes/square/maximizeon_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/maximizeon_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/square.theme b/kwin-styles/glow/themes/square/square.theme
deleted file mode 100644
index 26f00feb..00000000
--- a/kwin-styles/glow/themes/square/square.theme
+++ /dev/null
@@ -1,19 +0,0 @@
-buttonSize=17,17
-
-backgroundPixmap=background.png
-
-stickyOnPixmap=stickyon.png
-stickyOffPixmap=stickyoff.png
-maximizeOnPixmap=maximizeon.png
-maximizeOffPixmap=maximizeoff.png
-helpPixmap=help.png
-closePixmap=close.png
-iconifyPixmap=iconify.png
-
-stickyOnGlowPixmap=stickyon_glow.png
-stickyOffGlowPixmap=stickyoff_glow.png
-maximizeOnGlowPixmap=maximizeon_glow.png
-maximizeOffGlowPixmap=maximizeoff_glow.png
-helpGlowPixmap=help_glow.png
-closeGlowPixmap=close_glow.png
-iconifyGlowPixmap=iconify_glow.png
diff --git a/kwin-styles/glow/themes/square/stickyoff.png b/kwin-styles/glow/themes/square/stickyoff.png
deleted file mode 100644
index 3600e326..00000000
Binary files a/kwin-styles/glow/themes/square/stickyoff.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/stickyoff_glow.png b/kwin-styles/glow/themes/square/stickyoff_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/stickyoff_glow.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/stickyon.png b/kwin-styles/glow/themes/square/stickyon.png
deleted file mode 100644
index a84941a3..00000000
Binary files a/kwin-styles/glow/themes/square/stickyon.png and /dev/null differ
diff --git a/kwin-styles/glow/themes/square/stickyon_glow.png b/kwin-styles/glow/themes/square/stickyon_glow.png
deleted file mode 100644
index 4cd1f1cb..00000000
Binary files a/kwin-styles/glow/themes/square/stickyon_glow.png and /dev/null differ
diff --git a/kwin-styles/icewm/CMakeLists.txt b/kwin-styles/icewm/CMakeLists.txt
deleted file mode 100644
index d59f42c9..00000000
--- a/kwin-styles/icewm/CMakeLists.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( config )
-add_subdirectory( icewm-themes )
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES icewm.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_icewm ###############################
-
-tde_add_kpart( twin3_icewm AUTOMOC
-  SOURCES icewm.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/icewm/Makefile.am b/kwin-styles/icewm/Makefile.am
deleted file mode 100644
index e067c531..00000000
--- a/kwin-styles/icewm/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-INCLUDES = $(all_includes)
-
-SUBDIRS = . config icewm-themes
-
-kde_module_LTLIBRARIES = twin3_icewm.la
-
-twin3_icewm_la_SOURCES = icewm.cpp
-twin3_icewm_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_icewm_la_LIBADD  = $(LIB_TDEUI) -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = icewm.h
-
-lnkdir = $(kde_datadir)/twin/
-lnk_DATA = icewm.desktop
-
-EXTRA_DIST = $(lnk_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/icewm/config/CMakeLists.txt b/kwin-styles/icewm/config/CMakeLists.txt
deleted file mode 100644
index 9e2e118d..00000000
--- a/kwin-styles/icewm/config/CMakeLists.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### twin_icewm_config (module) ################
-
-tde_add_kpart( twin_icewm_config AUTOMOC
-  SOURCES config.cpp
-  LINK tdeui-shared kio-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/icewm/config/Makefile.am b/kwin-styles/icewm/config/Makefile.am
deleted file mode 100644
index ca2d2552..00000000
--- a/kwin-styles/icewm/config/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-INCLUDES = $(all_includes)
-
-kde_module_LTLIBRARIES = twin_icewm_config.la
-
-twin_icewm_config_la_SOURCES = config.cpp
-twin_icewm_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin_icewm_config_la_LIBADD = $(LIB_TDEUI) $(LIB_KIO) 
-
-METASOURCES = AUTO
-noinst_HEADERS = config.h
-
-lnkdir = $(kde_datadir)/twin/
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/icewm/config/config.cpp b/kwin-styles/icewm/config/config.cpp
deleted file mode 100644
index a0a2a8db..00000000
--- a/kwin-styles/icewm/config/config.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- *	$Id$
- *
- *	This file contains the IceWM configuration widget
- *
- *	Copyright (c) 2001
- *		Karol Szwed <gallium@kde.org>
- *		http://gallium.n3.net/
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  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 <tqdir.h>
-#include <tqregexp.h>
-#include <tqvbox.h>
-#include <tqwhatsthis.h>
-#include <kglobal.h>
-#include <klocale.h>
-#include <kstandarddirs.h>
-#include <kdialog.h>
-#include <kdirwatch.h>
-#include <kapplication.h>
-
-
-extern "C"
-{
-	KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
-	{
-		return(new IceWMConfig(conf, parent));
-	}
-}
-
-
-// NOTE:
-// ==========================================================================
-// 'conf' 		is a pointer to the twindecoration modules open twin config,
-//				and is by default set to the "Style" group.
-//
-// 'parent'		is the parent of the TQObject, which is a VBox inside the
-//				Configure tab in twindecoration
-// ==========================================================================
-
-IceWMConfig::IceWMConfig( KConfig* conf, TQWidget* parent )
-	: TQObject( parent )
-{
-	icewmConfig = new KConfig("twinicewmrc");
-	KGlobal::locale()->insertCatalogue("twin_art_clients");
-
-	mainWidget = new TQVBox( parent );
-	mainWidget->setSpacing( KDialog::spacingHint() );
-
-	themeListBox = new TQListBox( mainWidget );
-	TQWhatsThis::add( themeListBox,
-				i18n("Make your IceWM selection by clicking on a theme here. ") );
-
-	cbThemeTitleTextColors = new TQCheckBox(
-				i18n("Use theme &title text colors"), mainWidget );
-
-	TQWhatsThis::add( cbThemeTitleTextColors,
-				i18n("When selected, titlebar colors will follow those set "
-				"in the IceWM theme. If not selected, the current KDE "
-				"titlebar colors will be used instead.") );
-
-	cbTitleBarOnTop = new TQCheckBox(
-				i18n("&Show title bar on top of windows"), mainWidget );
-
-	TQWhatsThis::add( cbTitleBarOnTop,
-				i18n("When selected, all window titlebars will be shown "
-				"at the top of each window, otherwise they will be "
-				"shown at the bottom.") );
-
-	cbShowMenuButtonIcon = new TQCheckBox(
-				i18n("&Menu button always shows application mini icon"), mainWidget );
-
-	TQWhatsThis::add( cbShowMenuButtonIcon,
-				i18n("When selected, all titlebar menu buttons will have "
-				"the application icon shown. If not selected, the current "
-				"theme's defaults are used instead.") );
-
-	urlLabel = new KURLLabel( mainWidget );
-	urlLabel->setText( i18n("Open KDE's IceWM theme folder") );
-
-	themeLabel = new TQLabel(
-				i18n("Clicking on the link above will cause a window to appear "
-                                "showing the KDE IceWM theme folder. You can "
-				"add or remove native IceWM themes by "
-				"uncompressing <b>http://icewm.themes.org/</b> theme files "
-				"into this folder, or by creating folder symlinks to "
-				"existing IceWM themes on your system."), mainWidget );
-
-	// Load configuration options
-	load( conf );
-
-	// Ensure we track user changes properly
-	connect( themeListBox, TQT_SIGNAL(selectionChanged()),
-			 this, TQT_SLOT(slotSelectionChanged()) );
-
-	connect( urlLabel, TQT_SIGNAL(leftClickedURL(const TQString&)),
-			 this, TQT_SLOT(callURL(const TQString&)));
-
-	connect( cbThemeTitleTextColors, TQT_SIGNAL(clicked()),
-			 this, TQT_SLOT(slotSelectionChanged()) );
-
-	connect( cbTitleBarOnTop, TQT_SIGNAL(clicked()),
-			 this, TQT_SLOT(slotSelectionChanged()) );
-
-	connect( cbShowMenuButtonIcon, TQT_SIGNAL(clicked()),
-			 this, TQT_SLOT(slotSelectionChanged()) );
-
-	// Create the theme directory (if not found) ... and obtain the path as we do so.
-	localThemeString = KGlobal::dirs()->saveLocation("data", "twin");
-	localThemeString += "/icewm-themes";
-	if (!TQFile::exists(localThemeString))
-		TQDir().mkdir(localThemeString);
-
-	// Watch the icewm theme directory for theme additions/removals
-	KDirWatch::self()->addDir(localThemeString);
-	connect( KDirWatch::self(), TQT_SIGNAL(dirty(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
-	connect( KDirWatch::self(), TQT_SIGNAL(created(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
-	connect( KDirWatch::self(), TQT_SIGNAL(deleted(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
-
-	// Set the konqui link url
-	TQString urlThemeString = TQString("file://") + localThemeString;
-	urlThemeString.replace( TQRegExp("~"), "$HOME" );
-	urlLabel->setURL( urlThemeString );
-
-	// Make the widgets visible in twindecoration
-	mainWidget->show();
-
-	KDirWatch::self()->startScan();
-}
-
-
-IceWMConfig::~IceWMConfig()
-{
-	KDirWatch::self()->removeDir(localThemeString);
-	KDirWatch::self()->stopScan();
-	delete icewmConfig;
-	delete mainWidget;
-}
-
-
-// Searches for all installed IceWM themes, and adds them to the listBox.
-void IceWMConfig::findIceWMThemes()
-{
-	TQStringList dirList = KGlobal::dirs()->findDirs("data", "twin/icewm-themes");
-	TQStringList::ConstIterator it;
-
-	// Remove any old themes in the list (if any)
-	themeListBox->clear();
-	themeListBox->insertItem( i18n("Infadel #2 (default)") );
-
-	// Step through all twin/icewm-themes directories...
-	for( it = dirList.begin(); it != dirList.end(); it++)
-	{
-		// List all directory names only...
-		TQDir d(*it, TQString("*"), TQDir::Unsorted, TQDir::Dirs | TQDir::Readable );
-		if (d.exists())
-		{
-			TQFileInfoListIterator it2( *d.entryInfoList() );
-			TQFileInfo* finfo;
-
-			// Step through all directories within the twin/icewm-themes directory
-			while( (finfo = it2.current()) )
-			{
-				// Ignore . and .. directories
-				if ( (finfo->fileName() == ".") || (finfo->fileName() == "..") )
-				{
-					++it2;
-					continue;
-				}
-
-				if ( !themeListBox->findItem( finfo->fileName()) )
-					themeListBox->insertItem( finfo->fileName() );
-
-				++it2;
-			}
-		}
-	}
-
-	// Sort the items
-	themeListBox->sort();
-
-	// Select the currently used IceWM theme
-	TQString themeName = icewmConfig->readEntry("CurrentTheme");
-
-	// Provide a theme alias
-	if (themeName == "default")
-		themeName = "";
-
-	if (themeName.isEmpty())
-		themeListBox->setCurrentItem(
-			themeListBox->findItem( i18n("Infadel #2 (default)") ) );
-	else
-		themeListBox->setCurrentItem( themeListBox->findItem(themeName) );
-}
-
-
-void IceWMConfig::callURL( const TQString& s )
-{
-	kapp->invokeBrowser( s );
-}
-
-
-void IceWMConfig::slotSelectionChanged()
-{
-	emit changed();
-}
-
-
-// Loads the configurable options from the twinicewmrc config file
-void IceWMConfig::load( KConfig* )
-{
-	icewmConfig->setGroup("General");
-
-	bool override = icewmConfig->readBoolEntry( "ThemeTitleTextColors", true );
-	cbThemeTitleTextColors->setChecked( override );
-
-	override = icewmConfig->readBoolEntry( "TitleBarOnTop", true );
-	cbTitleBarOnTop->setChecked( override );
-
-	override = icewmConfig->readBoolEntry( "ShowMenuButtonIcon", false );
-	cbShowMenuButtonIcon->setChecked( override );
-
-	findIceWMThemes();
-}
-
-
-// Saves the configurable options to the twinicewmrc config file
-void IceWMConfig::save( KConfig* )
-{
-	icewmConfig->setGroup("General");
-	icewmConfig->writeEntry( "ThemeTitleTextColors", cbThemeTitleTextColors->isChecked() );
-	icewmConfig->writeEntry( "TitleBarOnTop", cbTitleBarOnTop->isChecked() );
-	icewmConfig->writeEntry( "ShowMenuButtonIcon", cbShowMenuButtonIcon->isChecked() );
-
-	if (themeListBox->currentText() == i18n("Infadel #2 (default)"))
-		icewmConfig->writeEntry("CurrentTheme", "default");
-	else
-		icewmConfig->writeEntry("CurrentTheme", themeListBox->currentText() );
-
-	icewmConfig->sync();
-}
-
-
-// Sets UI widget defaults which must correspond to config defaults
-void IceWMConfig::defaults()
-{
-	cbThemeTitleTextColors->setChecked( true );
-	cbTitleBarOnTop->setChecked( true );
-	cbShowMenuButtonIcon->setChecked( false );
-	themeListBox->setCurrentItem( themeListBox->findItem(i18n("Infadel #2 (default)")) );
-}
-
-#include "config.moc"
-// vim: ts=4
diff --git a/kwin-styles/icewm/config/config.h b/kwin-styles/icewm/config/config.h
deleted file mode 100644
index c9c5b2d0..00000000
--- a/kwin-styles/icewm/config/config.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- *	$Id$
- *
- *	This file contains the IceWM configuration widget
- *
- *	Copyright (c) 2001
- *		Karol Szwed <gallium@kde.org>
- *		http://gallium.n3.net/
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU General Public
- *  License as published by the Free Software Foundation; either
- *  version 2 of the License, or (at your option) any later version.
- *
- *  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 _ICEWMCONFIG_H
-#define _ICEWMCONFIG_H
-
-#include <tqwidget.h>
-#include <tqcheckbox.h>
-#include <tqgroupbox.h>
-#include <tqlistbox.h>
-#include <tqlabel.h>
-#include <kurllabel.h>
-#include <kconfig.h>
-
-class TQVBox;
-
-class IceWMConfig: public TQObject
-{
-	Q_OBJECT
-  TQ_OBJECT
-
-	public:
-		IceWMConfig( KConfig* conf, TQWidget* parent );
-		~IceWMConfig();
-
-	// These public signals/slots work similar to KCM modules
-	signals:
-		void changed();
-
-	public slots:
-		void load( KConfig* conf );
-		void save( KConfig* conf );
-		void defaults();
-
-	protected slots:
-		void slotSelectionChanged();	// Internal use
-		void callURL( const TQString& s );
-		void findIceWMThemes();
-
-	private:
-		KConfig*   icewmConfig;
-		TQCheckBox* cbThemeTitleTextColors;
-		TQCheckBox* cbTitleBarOnTop;
-		TQCheckBox* cbShowMenuButtonIcon;
-		TQListBox*  themeListBox;
-		TQLabel*	   themeLabel;
-		KURLLabel* urlLabel;
-		TQString    localThemeString;
-		TQVBox*     mainWidget;
-};
-
-
-#endif
-// vim: ts=4
diff --git a/kwin-styles/icewm/icewm-themes/CMakeLists.txt b/kwin-styles/icewm/icewm-themes/CMakeLists.txt
deleted file mode 100644
index 367553ab..00000000
--- a/kwin-styles/icewm/icewm-themes/CMakeLists.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-install( FILES
-    titleAB.xpm titleAJ.xpm titleAM.xpm titleAP.xpm titleAQ.xpm
-    titleAR.xpm titleAS.xpm titleAT.xpm titleIB.xpm titleIJ.xpm
-    titleIM.xpm titleIQ.xpm titleIR.xpm titleIS.xpm titleIT.xpm
-    titleIP.xpm closeA.xpm closeI.xpm depthA.xpm depthI.xpm
-    maximizeA.xpm maximizeI.xpm menuButtonA.xpm menuButtonI.xpm
-    minimizeA.xpm minimizeI.xpm restoreA.xpm restoreI.xpm
-    rolldownA.xpm rolldownI.xpm rollupA.xpm rollupI.xpm
-    default.theme
-  DESTINATION ${DATA_INSTALL_DIR}/twin/icewm-themes )
diff --git a/kwin-styles/icewm/icewm-themes/Makefile.am b/kwin-styles/icewm/icewm-themes/Makefile.am
deleted file mode 100644
index dcd5463a..00000000
--- a/kwin-styles/icewm/icewm-themes/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-pics_DATA = titleAB.xpm titleAJ.xpm titleAM.xpm titleAP.xpm titleAQ.xpm \
-			titleAR.xpm titleAS.xpm titleAT.xpm titleIB.xpm titleIJ.xpm \
-			titleIM.xpm titleIQ.xpm titleIR.xpm titleIS.xpm titleIT.xpm \
-			titleIP.xpm closeA.xpm closeI.xpm depthA.xpm depthI.xpm \
-			maximizeA.xpm maximizeI.xpm menuButtonA.xpm menuButtonI.xpm \
-			minimizeA.xpm minimizeI.xpm restoreA.xpm restoreI.xpm \
-			rolldownA.xpm rolldownI.xpm rollupA.xpm rollupI.xpm \
-			default.theme 
-
-picsdir = $(kde_datadir)/twin/icewm-themes
-
-
diff --git a/kwin-styles/icewm/icewm-themes/closeA.xpm b/kwin-styles/icewm/icewm-themes/closeA.xpm
deleted file mode 100644
index cc202bcd..00000000
--- a/kwin-styles/icewm/icewm-themes/closeA.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * closeA_xpm[] = {
-"15 34 32 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #798EAA",
-"(	c #7E96B6",
-"_	c #C7CDD4",
-":	c #FEFEFE",
-"<	c #8CA3C5",
-"[	c #435165",
-"}	c #3C4553",
-"|	c #323F4F",
-"1	c #0D0E13",
-"2	c #363636",
-"3	c #677B98",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/_>^]{~",
-":*)^>!(<'!_^[*:",
-"~%}^>!/*/_>^}%~",
-",%}[->*!,>;^}%,",
-"&%|[^$>_>;^}=%&",
-"@$]|1[&^^^}|]$@",
-"+)$]|&}[)||=$)+",
-"..**']=|=]]**..",
-"{{{$1*'''*1${{{",
-"####=%%%%1=####",
-")))))))))))))))",
-"2222222=2222222",
-"...............",
-"+++++++++++++++",
-"@@@@)1%%%$)@@@@",
-"&&&*'})[)}]*&&&",
-",,*=)[^-^^}2*,,",
-"~{'}[^;>;-[}'{~",
-":$=}[^>31+[|=*:",
-"~%=}[^;$;^+|=%~",
-",%]|}^1-^+}|]%,",
-"&%'2|1[[/)|2'%&",
-"@1']%|}.}|2]'1@",
-"+)1']=.==]]'1)+",
-"..$$*.]]''*$1..",
-"{{{11$***$1${{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"222222222222222"};
diff --git a/kwin-styles/icewm/icewm-themes/closeI.xpm b/kwin-styles/icewm/icewm-themes/closeI.xpm
deleted file mode 100644
index 4529b06f..00000000
--- a/kwin-styles/icewm/icewm-themes/closeI.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * closeI_xpm[] = {
-"15 34 32 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #8A8A8A",
-"(	g #929292",
-"_	g #CBCBCB",
-":	g #FEFEFE",
-"<	g #9F9F9F",
-"[	g #4F4F4F",
-"}	g #434343",
-"|	g #3C3C3C",
-"1	g #0E0E0E",
-"2	g #363636",
-"3	g #787878",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/_>^]{~",
-":*)^>!(<'!_^[*:",
-"~%}^>!/*/_>^}%~",
-",%}[->*!,>;^}%,",
-"&%|[^$>_>;^}=%&",
-"@$]|1[&^^^}|]$@",
-"+)$]|&}[)||=$)+",
-"..**']=|=]]**..",
-"{{{$1*'''*1${{{",
-"####=%%%%1=####",
-")))))))))))))))",
-"2222222=2222222",
-"...............",
-"+++++++++++++++",
-"@@@@)1%%%$)@@@@",
-"&&&*'})[)}]*&&&",
-",,*=)[^-^^}2*,,",
-"~{'}[^;>;-[}'{~",
-":$=}[^>31+[|=*:",
-"~%=}[^;$;^+|=%~",
-",%]|}^1-^+}|]%,",
-"&%'2|1[[/)|2'%&",
-"@1']%|}.}|2]'1@",
-"+)1']=.==]]'1)+",
-"..$$*.]]''*$1..",
-"{{{11$***$1${{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"222222222222222"};
diff --git a/kwin-styles/icewm/icewm-themes/default.theme b/kwin-styles/icewm/icewm-themes/default.theme
deleted file mode 100644
index 945a3824..00000000
--- a/kwin-styles/icewm/icewm-themes/default.theme
+++ /dev/null
@@ -1,48 +0,0 @@
-# Xerithane:
-#
-# Well, Artwiz inspired me (dirty lil blackbox user <g>)
-# So, I ripped his font (snap.pcf), and then got the chrome style idea and 
-# adapted the theme as a rip of the e.t.o page (get it, Infadel..)
-# Some of the borrowed style is from Area 51 (by RudeSka, herald of #icewm)
-# Also borrowed are some icons from Area 51.
-#
-# tbf:
-#
-# Extended Artwiz's snap font, added cursors, polished the applets.
-# Invented depth, hide, rollup and rolldown buttons. Redraw the others.
-# Reduced number of colors.
-
-# closeI.xpm depthI.xpm maximizeI.xpm minimizeI.xpm restoreI.xpm hideI.xpm 
-# rollupI.xpm rolldownI.xpm menuButtonI.xpm 
-# closeA.xpm depthA.xpm maximizeA.xpm minimizeA.xpm restoreA.xpm hideA.xpm
-# rollupA.xpm rolldownA.xpm menuButtonA.xpm
-
-# PLEASE NOTE:
-# ============
-# Heavily modified by gallium for the purposes of twin-icewm. 
-# Please do not use this for icewm. Use the original icewm Infadel #2 instead.
-# The full Infadel #2 theme will still work with twin-icewm as well, but
-# this trimmed version is included here for space reasons.
-
-ThemeDescription="Infadel/1.0.7(twin)"
-ThemeAuthor="xerithane@nerdfarm.org"
-Look=pixmap
-
-TitleButtonsLeft="s"
-TitleButtonsRight="xmi"
-TitleButtonsSupported="sxmihrd"
-TitleBarCentered=1
-TitleBarHeight=17
-
-# Modified border sizes so they're more user "grip" friendly
-BorderSizeX=3
-BorderSizeY=3
-CornerSizeX=28
-CornerSizeY=28
-
-ColorNormalTitleBarText="#c0c0c0"
-ColorActiveTitleBarText="#ffffff"
-ColorActiveBorder="#868687"
-ColorNormalBorder="#575757"
-
-ShowMenuButtonIcon=0
diff --git a/kwin-styles/icewm/icewm-themes/depthA.xpm b/kwin-styles/icewm/icewm-themes/depthA.xpm
deleted file mode 100644
index 67a2e1e6..00000000
--- a/kwin-styles/icewm/icewm-themes/depthA.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * depthA_xpm[] = {
-"15 34 32 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #363636",
-"$	c #0D0E13",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #4A4A4A",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #5D6E86",
-">	c #D6D6D6",
-",	c #4D5868",
-"'	c #677B98",
-")	c #6E809C",
-"!	c #58667E",
-"~	c #EAEAEA",
-"{	c #232D3A",
-"]	c #798EAA",
-"^	c #7E96B6",
-"/	c #FEFEFE",
-"(	c #3C4553",
-"_	c #8CA3C5",
-":	c #111214",
-"<	c #323F4F",
-"[	c #435165",
-"}	c #C7CDD4",
-"|	c #717273",
-"1	c #181C22",
-"2	c #1D2632",
-"3	c #5D5D5E",
-"...............",
-"+++++++++++++++",
-"@@@@.#$%$#.@@@@",
-"&&&*=-;;;-=*&&&",
-">>,*-;')';!*,>>",
-"~@{,;)]^]);,{@~",
-"/*(-;)^_^);,(,/",
-"~:(,;)<(<);,*:~",
-">%([!=)))}![(%>",
-"&:=*[-}}&-,[=$&",
-"@#=<*[,-,[(<{#@",
-"+|:{<(((*(<=:|+",
-"..#1{=<==={1#..",
-"|||{$12221$=|||",
-"3333(1%%%1(3333",
-"***************",
-"###############",
-"...............",
-"+++++++++++++++",
-"@@@@|{$%%=|@@@@",
-"&&&(2**[[(2(&&&",
-">>*=([,3,,*#*>>",
-"~+1([3!;!,[(2+~",
-"/(#([,;'!-[(#(/",
-"~:=([,{={,[<=:~",
-">%{<(2,-,+(<=%>",
-"&$2#((^+.[<=2$&",
-"@=2{=#<<(<#{1=@",
-"+3$2{===={{2$!+",
-"..=:122{221:=..",
-"|||{%1111:$2|||",
-"3333#1%%%:*3333",
-"***************",
-"###############"};
diff --git a/kwin-styles/icewm/icewm-themes/depthI.xpm b/kwin-styles/icewm/icewm-themes/depthI.xpm
deleted file mode 100644
index e4fe17a9..00000000
--- a/kwin-styles/icewm/icewm-themes/depthI.xpm
+++ /dev/null
@@ -1,69 +0,0 @@
-/* XPM */
-static char * depthI_xpm[] = {
-"15 34 32 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #363636",
-"$	g #0E0E0E",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #4A4A4A",
-"=	g #323232",
-"-	g #626262",
-";	g #6B6B6B",
-">	g #D6D6D6",
-",	g #565656",
-"'	g #787878",
-")	g #7D7D7D",
-"!	g #646464",
-"~	g #EAEAEA",
-"{	g #2B2B2B",
-"]	g #8A8A8A",
-"^	g #929292",
-"/	g #FEFEFE",
-"(	g #434343",
-"_	g #9F9F9F",
-":	g #111111",
-"<	g #3C3C3C",
-"[	g #4F4F4F",
-"}	g #CBCBCB",
-"|	g #717171",
-"1	g #1B1B1B",
-"2	g #242424",
-"3	g #5D5D5D",
-"...............",
-"+++++++++++++++",
-"@@@@.#$%$#.@@@@",
-"&&&*=-;;;-=*&&&",
-">>,*-;')';!*,>>",
-"~@{,;)]^]);,{@~",
-"/*(-;)^_^);,(,/",
-"~:(,;)<(<);,*:~",
-">%([!=)))}![(%>",
-"&:=*[-}}&-,[=$&",
-"@#=<*[,-,[(<{#@",
-"+|:{<(((*(<=:|+",
-"..#1{=<==={1#..",
-"|||{$12221$=|||",
-"3333(1%%%1(3333",
-"***************",
-"###############",
-"...............",
-"+++++++++++++++",
-"@@@@|{$%%=|@@@@",
-"&&&(2**[[(2(&&&",
-">>*=([,3,,*#*>>",
-"~+1([3!;!,[(2+~",
-"/(#([,;'!-[(#(/",
-"~:=([,{={,[<=:~",
-">%{<(2,-,+(<=%>",
-"&$2#((^+.[<=2$&",
-"@=2{=#<<(<#{1=@",
-"+3$2{===={{2$!+",
-"..=:122{221:=..",
-"|||{%1111:$2|||",
-"3333#1%%%:*3333",
-"***************",
-"###############"};
diff --git a/kwin-styles/icewm/icewm-themes/maximizeA.xpm b/kwin-styles/icewm/icewm-themes/maximizeA.xpm
deleted file mode 100644
index c34304dc..00000000
--- a/kwin-styles/icewm/icewm-themes/maximizeA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * maximizeA_xpm[] = {
-"15 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #798EAA",
-"(	c #7E96B6",
-"_	c #FEFEFE",
-":	c #7A91B1",
-"<	c #3C4553",
-"[	c #435165",
-"}	c #C7CDD4",
-"|	c #323F4F",
-"1	c #0D0E13",
-"2	c #363636",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>!(~:!>-)*_",
-"~%<^>!,@,!>^<%~",
-",%<[-}@@@};^|%,",
-"&%|[^%%%%%^<|%&",
-"@$]|<^^^^^<|]$@",
-"+)$]|<<[<<|]$)+",
-"..**'==|=]]**..",
-"{{{$1*'''*1${{{",
-"####=%%%%1=####",
-")))))))))))))))",
-"222222222222222",
-"...............",
-"+++++++++++++++",
-"@@@@)1%%%$)@@@@",
-"&&&*'<)[)['*}&&",
-",,*2<^^^^[<2*,,",
-"~{'<[^>>;-)<*{~",
-"_$=|[->+;-[<2*_",
-"~%=<[^+.+^[|=%~",
-",%]|<+.!!+<|]%,",
-"&%'=|%%%%%|2'%&",
-"@1']=||<||2]'1@",
-"+)1']==2=]]'1)+",
-"..$1*'''''*$1..",
-"{{{11$***$1${{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"222222222222222"};
diff --git a/kwin-styles/icewm/icewm-themes/maximizeI.xpm b/kwin-styles/icewm/icewm-themes/maximizeI.xpm
deleted file mode 100644
index d857672b..00000000
--- a/kwin-styles/icewm/icewm-themes/maximizeI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * maximizeI_xpm[] = {
-"15 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #8A8A8A",
-"(	g #929292",
-"_	g #FEFEFE",
-":	g #8D8D8D",
-"<	g #434343",
-"[	g #4F4F4F",
-"}	g #CBCBCB",
-"|	g #3C3C3C",
-"1	g #0E0E0E",
-"2	g #363636",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>!(~:!>-)*_",
-"~%<^>!,@,!>^<%~",
-",%<[-}@@@};^|%,",
-"&%|[^%%%%%^<|%&",
-"@$]|<^^^^^<|]$@",
-"+)$]|<<[<<|]$)+",
-"..**'==|=]]**..",
-"{{{$1*'''*1${{{",
-"####=%%%%1=####",
-")))))))))))))))",
-"222222222222222",
-"...............",
-"+++++++++++++++",
-"@@@@)1%%%$)@@@@",
-"&&&*'<)[)['*}&&",
-",,*2<^^^^[<2*,,",
-"~{'<[^>>;-)<*{~",
-"_$=|[->+;-[<2*_",
-"~%=<[^+.+^[|=%~",
-",%]|<+.!!+<|]%,",
-"&%'=|%%%%%|2'%&",
-"@1']=||<||2]'1@",
-"+)1']==2=]]'1)+",
-"..$1*'''''*$1..",
-"{{{11$***$1${{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"222222222222222"};
diff --git a/kwin-styles/icewm/icewm-themes/menuButtonA.xpm b/kwin-styles/icewm/icewm-themes/menuButtonA.xpm
deleted file mode 100644
index e4b5e0ed..00000000
--- a/kwin-styles/icewm/icewm-themes/menuButtonA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * menuButtonA_xpm[] = {
-"17 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #363636",
-"$	c #0D0E13",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #4A4A4A",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #5D6E86",
-">	c #D6D6D6",
-",	c #4D5868",
-"'	c #677B98",
-")	c #6E809C",
-"!	c #58667E",
-"~	c #EAEAEA",
-"{	c #232D3A",
-"]	c #798EAA",
-"^	c #7E96B6",
-"/	c #FEFEFE",
-"(	c #3C4553",
-"_	c #8CA3C5",
-":	c #111214",
-"<	c #435165",
-"[	c #323F4F",
-"}	c #717273",
-"|	c #181C22",
-"1	c #1D2632",
-"2	c #5D5D5E",
-".................",
-"+++++++++++++++++",
-"@@@@@.#$%$#.@@@@@",
-"&&&&*=-;;;-=*&&&&",
-">>>,*-;')';!*,>>>",
-"~~@{,;)]^]);,{@~~",
-"//*(-;)^_^);,(,//",
-"~~:(,;)]^]);,*:~~",
-">>%(<%%%%%%%<(%>>",
-"&&$=<@&&&&&@<=$&&",
-"@@#{[*<,,,,([=#@@",
-"++}|{[((<(([=:}++",
-"...#|{{=[={{|#...",
-"}}}}{$|111|$=}}}}",
-"22222(|%%$|(22222",
-"*****************",
-"#################",
-".................",
-"+++++++++++++++++",
-"@@@@@}{$%%=}@@@@@",
-"&&&&(1**<<(1(&&&&",
-">>>*=(<,-2<*#*>>>",
-"~~+|(<,-;-,<(1+~~",
-"//(#(<-;'!-<(#(//",
-"~~$=[*,!;-,<[=:~~",
-">>%{[%%%%%%%[{%>>",
-"&&$1#.]..]..#1$&&",
-"@@=1{=[((([#{1=@@",
-"++2$1{====={|$2++",
-"...{:|11{11|:=...",
-"}}}}{%:|||:$1}}}}",
-"22222(|%%%|(22222",
-"*****************",
-"#################"};
diff --git a/kwin-styles/icewm/icewm-themes/menuButtonI.xpm b/kwin-styles/icewm/icewm-themes/menuButtonI.xpm
deleted file mode 100644
index 854ea273..00000000
--- a/kwin-styles/icewm/icewm-themes/menuButtonI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * menuButtonI_xpm[] = {
-"17 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #363636",
-"$	g #0E0E0E",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #4A4A4A",
-"=	g #323232",
-"-	g #626262",
-";	g #6B6B6B",
-">	g #D6D6D6",
-",	g #565656",
-"'	g #787878",
-")	g #7D7D7D",
-"!	g #646464",
-"~	g #EAEAEA",
-"{	g #2B2B2B",
-"]	g #8A8A8A",
-"^	g #929292",
-"/	g #FEFEFE",
-"(	g #434343",
-"_	g #9F9F9F",
-":	g #111111",
-"<	g #4F4F4F",
-"[	g #3C3C3C",
-"}	g #717171",
-"|	g #1B1B1B",
-"1	g #242424",
-"2	g #5D5D5D",
-".................",
-"+++++++++++++++++",
-"@@@@@.#$%$#.@@@@@",
-"&&&&*=-;;;-=*&&&&",
-">>>,*-;')';!*,>>>",
-"~~@{,;)]^]);,{@~~",
-"//*(-;)^_^);,(,//",
-"~~:(,;)]^]);,*:~~",
-">>%(<%%%%%%%<(%>>",
-"&&$=<@&&&&&@<=$&&",
-"@@#{[*<,,,,([=#@@",
-"++}|{[((<(([=:}++",
-"...#|{{=[={{|#...",
-"}}}}{$|111|$=}}}}",
-"22222(|%%$|(22222",
-"*****************",
-"#################",
-".................",
-"+++++++++++++++++",
-"@@@@@}{$%%=}@@@@@",
-"&&&&(1**<<(1(&&&&",
-">>>*=(<,-2<*#*>>>",
-"~~+|(<,-;-,<(1+~~",
-"//(#(<-;'!-<(#(//",
-"~~$=[*,!;-,<[=:~~",
-">>%{[%%%%%%%[{%>>",
-"&&$1#.]..]..#1$&&",
-"@@=1{=[((([#{1=@@",
-"++2$1{====={|$2++",
-"...{:|11{11|:=...",
-"}}}}{%:|||:$1}}}}",
-"22222(|%%%|(22222",
-"*****************",
-"#################"};
diff --git a/kwin-styles/icewm/icewm-themes/minimizeA.xpm b/kwin-styles/icewm/icewm-themes/minimizeA.xpm
deleted file mode 100644
index bcbfa3a7..00000000
--- a/kwin-styles/icewm/icewm-themes/minimizeA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * minimizeA_xpm[] = {
-"15 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #798EAA",
-"(	c #7E96B6",
-"_	c #FEFEFE",
-":	c #8CA3C5",
-"<	c #3C4553",
-"[	c #323F4F",
-"}	c #0D0E13",
-"|	c #435165",
-"1	c #363636",
-"2	c #677B98",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>!(:(!>-)*_",
-"~%<^>,,,,,>^<%~",
-",%<^-%@@@%-^[%,",
-"&%[<^-}@%-^<[%&",
-"@}][<|^%^|<[]$@",
-"+|$][<<|<<[=$)+",
-"..**]==[=]]**..",
-"{{{$}*'''*}${{{",
-"####=%%%%}]####",
-")))))))))))))))",
-"111111111111111",
-"...............",
-"+++++++++++++++",
-"@@@@)}%%%}^@@@@",
-"&&&*'<)|)<'*&&&",
-",,*1||^-^|)1*,,",
-"~{*[|^;>;^|<'{~",
-"_*1<|->2>-|<=*_",
-"~%=[|+++++|[=%~",
-",%=[<%!.!%<[]%,",
-"&%'1[<%.%)[1'%&",
-"@}']11[%[[1]'}@",
-"+)}']==1==]'})+",
-"..}$*'''''*$}..",
-"{{{$}$**$$}}{{{",
-"####]%%%%}]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/minimizeI.xpm b/kwin-styles/icewm/icewm-themes/minimizeI.xpm
deleted file mode 100644
index e2e954a2..00000000
--- a/kwin-styles/icewm/icewm-themes/minimizeI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * minimizeI_xpm[] = {
-"15 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #8A8A8A",
-"(	g #929292",
-"_	g #FEFEFE",
-":	g #9F9F9F",
-"<	g #434343",
-"[	g #3C3C3C",
-"}	g #0E0E0E",
-"|	g #4F4F4F",
-"1	g #363636",
-"2	g #787878",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>!(:(!>-)*_",
-"~%<^>,,,,,>^<%~",
-",%<^-%@@@%-^[%,",
-"&%[<^-}@%-^<[%&",
-"@}][<|^%^|<[]$@",
-"+|$][<<|<<[=$)+",
-"..**]==[=]]**..",
-"{{{$}*'''*}${{{",
-"####=%%%%}]####",
-")))))))))))))))",
-"111111111111111",
-"...............",
-"+++++++++++++++",
-"@@@@)}%%%}^@@@@",
-"&&&*'<)|)<'*&&&",
-",,*1||^-^|)1*,,",
-"~{*[|^;>;^|<'{~",
-"_*1<|->2>-|<=*_",
-"~%=[|+++++|[=%~",
-",%=[<%!.!%<[]%,",
-"&%'1[<%.%)[1'%&",
-"@}']11[%[[1]'}@",
-"+)}']==1==]'})+",
-"..}$*'''''*$}..",
-"{{{$}$**$$}}{{{",
-"####]%%%%}]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/restoreA.xpm b/kwin-styles/icewm/icewm-themes/restoreA.xpm
deleted file mode 100644
index 93481afe..00000000
--- a/kwin-styles/icewm/icewm-themes/restoreA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * restoreA_xpm[] = {
-"15 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #798EAA",
-"(	c #FEFEFE",
-"_	c #3C4553",
-":	c #0D0E13",
-"<	c #323F4F",
-"[	c #C7CDD4",
-"}	c #435165",
-"|	c #363636",
-"1	c #8CA3C5",
-"2	c #7E96B6",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/,/!>^]{~",
-"(*)^>!,@,!>-)*(",
-"~%_^>,@@@,>^_%~",
-",%_^;%:%%%-^<%,",
-"&%<_^[[[[[^_<%&",
-"@:]<_:@@@%_<]$@",
-"+}$]<<%@%_<]$)+",
-"..**]]=%=]]**..",
-"{{{$:*'''*:${{{",
-"####=%%%%:=####",
-")))))))))))))))",
-"|||||||||||||||",
-"...............",
-"+++++++++++++++",
-"@@@@):%%%$)@@@@",
-"&&&*'_)})}'*[&&",
-",,*|_^^^^}_|*,,",
-"~{'_}^>1;#}<'{~",
-"($=<}-+.+^}_=*(",
-"~%=_)+!..+}<=%~",
-",%=<_%%%%%)|]%,",
-"&%'<<++2+/_=]%&",
-"@:*]=%.{.%|]*:@",
-"+):'']%{%]]':)+",
-"..$$*''%''*$$..",
-"{{{$:$***$::{{{",
-"####]%%%%:]####",
-")))))))))))))))",
-"|||||||||||||||"};
diff --git a/kwin-styles/icewm/icewm-themes/restoreI.xpm b/kwin-styles/icewm/icewm-themes/restoreI.xpm
deleted file mode 100644
index b1408657..00000000
--- a/kwin-styles/icewm/icewm-themes/restoreI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * restoreI_xpm[] = {
-"15 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #8A8A8A",
-"(	g #FEFEFE",
-"_	g #434343",
-":	g #0E0E0E",
-"<	g #3C3C3C",
-"[	g #CBCBCB",
-"}	g #4F4F4F",
-"|	g #363636",
-"1	g #9F9F9F",
-"2	g #929292",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/,/!>^]{~",
-"(*)^>!,@,!>-)*(",
-"~%_^>,@@@,>^_%~",
-",%_^;%:%%%-^<%,",
-"&%<_^[[[[[^_<%&",
-"@:]<_:@@@%_<]$@",
-"+}$]<<%@%_<]$)+",
-"..**]]=%=]]**..",
-"{{{$:*'''*:${{{",
-"####=%%%%:=####",
-")))))))))))))))",
-"|||||||||||||||",
-"...............",
-"+++++++++++++++",
-"@@@@):%%%$)@@@@",
-"&&&*'_)})}'*[&&",
-",,*|_^^^^}_|*,,",
-"~{'_}^>1;#}<'{~",
-"($=<}-+.+^}_=*(",
-"~%=_)+!..+}<=%~",
-",%=<_%%%%%)|]%,",
-"&%'<<++2+/_=]%&",
-"@:*]=%.{.%|]*:@",
-"+):'']%{%]]':)+",
-"..$$*''%''*$$..",
-"{{{$:$***$::{{{",
-"####]%%%%:]####",
-")))))))))))))))",
-"|||||||||||||||"};
diff --git a/kwin-styles/icewm/icewm-themes/rolldownA.xpm b/kwin-styles/icewm/icewm-themes/rolldownA.xpm
deleted file mode 100644
index e7b70845..00000000
--- a/kwin-styles/icewm/icewm-themes/rolldownA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * rolldownA_xpm[] = {
-"15 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #798EAA",
-"(	c #7E96B6",
-"_	c #FEFEFE",
-":	c #3C4553",
-"<	c #323F4F",
-"[	c #0D0E13",
-"}	c #C7CDD4",
-"|	c #435165",
-"1	c #363636",
-"2	c #8CA3C5",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>,,~,,>-)*_",
-"~%:^>%@@@%>^:%~",
-",%:^->%@%>;^<%,",
-"&%<:^;>%>-^:<%&",
-"@[]<&&}}}&&<][@",
-"+|$]%%%%%%%=$)+",
-"..**]]====]**..",
-"{{{$[*']'*[${{{",
-"####=%%%%%=####",
-")))))))))))))))",
-"111111=11111111",
-"...............",
-"+++++++++++++++",
-"@@@@)[%%%[^@@@@",
-"&&&*':)|):'*&&&",
-",,*=)|^-^|)1*,,",
-"~{':|^;>;^|:'{~",
-"_$=:|+2+2+|:=*_",
-"~%=:|%...%)<=%~",
-",%]<:|%.%|)<]%,",
-"&%'1<:)%):<<'%&",
-"@[''+/+/+(.]*[@",
-"+)['%%%%%%%'[)+",
-"..$$*'''''*$$..",
-"{{{[[$***$[[{{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/rolldownI.xpm b/kwin-styles/icewm/icewm-themes/rolldownI.xpm
deleted file mode 100644
index 993e561b..00000000
--- a/kwin-styles/icewm/icewm-themes/rolldownI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * rolldownI_xpm[] = {
-"15 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #8A8A8A",
-"(	g #929292",
-"_	g #FEFEFE",
-":	g #434343",
-"<	g #3C3C3C",
-"[	g #0E0E0E",
-"}	g #CBCBCB",
-"|	g #4F4F4F",
-"1	g #363636",
-"2	g #9F9F9F",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^>!/(/!>^]{~",
-"_*)^>,,~,,>-)*_",
-"~%:^>%@@@%>^:%~",
-",%:^->%@%>;^<%,",
-"&%<:^;>%>-^:<%&",
-"@[]<&&}}}&&<][@",
-"+|$]%%%%%%%=$)+",
-"..**]]====]**..",
-"{{{$[*']'*[${{{",
-"####=%%%%%=####",
-")))))))))))))))",
-"111111=11111111",
-"...............",
-"+++++++++++++++",
-"@@@@)[%%%[^@@@@",
-"&&&*':)|):'*&&&",
-",,*=)|^-^|)1*,,",
-"~{':|^;>;^|:'{~",
-"_$=:|+2+2+|:=*_",
-"~%=:|%...%)<=%~",
-",%]<:|%.%|)<]%,",
-"&%'1<:)%):<<'%&",
-"@[''+/+/+(.]*[@",
-"+)['%%%%%%%'[)+",
-"..$$*'''''*$$..",
-"{{{[[$***$[[{{{",
-"####]%%%%%]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/rollupA.xpm b/kwin-styles/icewm/icewm-themes/rollupA.xpm
deleted file mode 100644
index 32311d6a..00000000
--- a/kwin-styles/icewm/icewm-themes/rollupA.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * rollupA_xpm[] = {
-"15 34 31 1",
-" 	c None",
-".	c #858686",
-"+	c #9A9A9A",
-"@	c #AEAEAE",
-"#	c #5D5D5E",
-"$	c #111214",
-"%	c #040404",
-"&	c #C2C2C2",
-"*	c #181C22",
-"=	c #2D333D",
-"-	c #56657A",
-";	c #58667E",
-">	c #5D6E86",
-",	c #D6D6D6",
-"'	c #1D2632",
-")	c #4A4A4A",
-"!	c #6E809C",
-"~	c #EAEAEA",
-"{	c #717273",
-"]	c #232D3A",
-"^	c #4D5868",
-"/	c #C7CDD4",
-"(	c #FEFEFE",
-"_	c #0D0E13",
-":	c #435165",
-"<	c #3C4553",
-"[	c #677B98",
-"}	c #798EAA",
-"|	c #323F4F",
-"1	c #363636",
-"2	c #8CA3C5",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^/,,,,,/^]{~",
-"(*)^_%__%_%^:*(",
-"~%<^;[},}!>^<%~",
-",%<^;>,@/[-^<%,",
-"&%|<^/@@@/^<=%&",
-"@_]|<_%%%%<|]$@",
-"+)*]|<<<<||=$)+",
-"..$*'=||==]**..",
-"{{{$_**''*_${{{",
-"##-#=_%%%%=####",
-")))))))))))))))",
-"111111=11111111",
-"...............",
-"+++++++++++++++",
-"@@@@)_%%%_^@@@@",
-"&&&*'<):)<'*&&&",
-",,*=):^-^^)1*,,",
-"~{'|+2+2+++<'{~",
-"($=<%%%%%%%<=*(",
-"~%=|:^;+;^:|=%~",
-",%=|<:+.+:<|]%,",
-"&%'1<+!!.+|1'%&",
-"@_']=%%%%%1]'_@",
-"+)_*]====]]'_)+",
-"..$$*'']''*$_..",
-"{{{__$$*$$_${{{",
-"####]%%%%_]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/rollupI.xpm b/kwin-styles/icewm/icewm-themes/rollupI.xpm
deleted file mode 100644
index 31b81973..00000000
--- a/kwin-styles/icewm/icewm-themes/rollupI.xpm
+++ /dev/null
@@ -1,68 +0,0 @@
-/* XPM */
-static char * rollupI_xpm[] = {
-"15 34 31 1",
-" 	g None",
-".	g #858585",
-"+	g #9A9A9A",
-"@	g #AEAEAE",
-"#	g #5D5D5D",
-"$	g #111111",
-"%	g #040404",
-"&	g #C2C2C2",
-"*	g #1B1B1B",
-"=	g #323232",
-"-	g #626262",
-";	g #646464",
-">	g #6B6B6B",
-",	g #D6D6D6",
-"'	g #242424",
-")	g #4A4A4A",
-"!	g #7D7D7D",
-"~	g #EAEAEA",
-"{	g #717171",
-"]	g #2B2B2B",
-"^	g #565656",
-"/	g #CBCBCB",
-"(	g #FEFEFE",
-"_	g #0E0E0E",
-":	g #4F4F4F",
-"<	g #434343",
-"[	g #787878",
-"}	g #8A8A8A",
-"|	g #3C3C3C",
-"1	g #363636",
-"2	g #9F9F9F",
-"...............",
-"+++++++++++++++",
-"@@@@#$%%%$#@@@@",
-"&&&*=-;>;-=*&&&",
-",,')->!!!>;)',,",
-"~{]^/,,,,,/^]{~",
-"(*)^_%__%_%^:*(",
-"~%<^;[},}!>^<%~",
-",%<^;>,@/[-^<%,",
-"&%|<^/@@@/^<=%&",
-"@_]|<_%%%%<|]$@",
-"+)*]|<<<<||=$)+",
-"..$*'=||==]**..",
-"{{{$_**''*_${{{",
-"##-#=_%%%%=####",
-")))))))))))))))",
-"111111=11111111",
-"...............",
-"+++++++++++++++",
-"@@@@)_%%%_^@@@@",
-"&&&*'<):)<'*&&&",
-",,*=):^-^^)1*,,",
-"~{'|+2+2+++<'{~",
-"($=<%%%%%%%<=*(",
-"~%=|:^;+;^:|=%~",
-",%=|<:+.+:<|]%,",
-"&%'1<+!!.+|1'%&",
-"@_']=%%%%%1]'_@",
-"+)_*]====]]'_)+",
-"..$$*'']''*$_..",
-"{{{__$$*$$_${{{",
-"####]%%%%_]####",
-")))))))))))))))",
-"111111111111111"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAB.xpm b/kwin-styles/icewm/icewm-themes/titleAB.xpm
deleted file mode 100644
index f153f2af..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAB.xpm
+++ /dev/null
@@ -1,32 +0,0 @@
-/* XPM */
-static char * titleAS_xpm[] = {
-"1 17 12 1",
-" 	c None",
-".	c #868687",
-"+	c #9A9A9B",
-"@	c #AEAEAF",
-"#	c #C2C2C3",
-"$	c #D6D6D7",
-"%	c #EAEAEB",
-"&	c #FFFFFF",
-"*	c #727273",
-"=	c #5E5E5F",
-"-	c #4A4A4B",
-";	c #363637",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"%",
-"$",
-"#",
-"@",
-"+",
-".",
-"*",
-"=",
-"-",
-";"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAJ.xpm b/kwin-styles/icewm/icewm-themes/titleAJ.xpm
deleted file mode 100644
index 0ef284c1..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAJ.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAJ_xpm[] = {
-"3 17 17 1",
-" 	c None",
-".	c #858687",
-"+	c #4F4F51",
-"@	c #999A9A",
-"#	c #AEAEAE",
-"$	c #5E5E5E",
-"%	c #C2C2C2",
-"&	c #717172",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #FEFEFE",
-";	c #909090",
-">	c #717374",
-",	c #5C5F64",
-"'	c #373739",
-")	c #494B4D",
-"!	c #343638",
-"..+",
-"@@+",
-"##$",
-"%%&",
-"**&",
-"==&",
-"--;",
-"==&",
-"**&",
-"%%&",
-"##$",
-"@@+",
-"..+",
-">>+",
-",,'",
-"))'",
-"!!'"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAM.xpm b/kwin-styles/icewm/icewm-themes/titleAM.xpm
deleted file mode 100644
index 808458a4..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAM.xpm
+++ /dev/null
@@ -1,73 +0,0 @@
-/* XPM */
-static char * titleAM_xpm[] = {
-"18 17 53 1",
-" 	c None",
-".	c #868687",
-"+	c #4E4E4F",
-"@	c #484848",
-"#	c #9A9A9B",
-"$	c #575758",
-"%	c #344066",
-"&	c #515151",
-"*	c #AEAEAF",
-"=	c #606061",
-"-	c #425076",
-";	c #606060",
-">	c #C2C2C3",
-",	c #68686A",
-"'	c #526185",
-")	c #707070",
-"!	c #D6D6D7",
-"~	c #717173",
-"{	c #607194",
-"]	c #808080",
-"^	c #EAEAEB",
-"/	c #7A7A7C",
-"(	c #7081A3",
-"_	c #8E8E8E",
-":	c #FFFFFF",
-"<	c #838385",
-"[	c #7284A6",
-"}	c #9B9B9B",
-"|	c #7587A9",
-"1	c #A9A9A9",
-"2	c #66779A",
-"3	c #B7B7B7",
-"4	c #57668A",
-"5	c #C5C5C5",
-"6	c #4A597D",
-"7	c #D2D2D2",
-"8	c #3D4A70",
-"9	c #303C63",
-"0	c #A7A7A7",
-"a	c #727273",
-"b	c #454547",
-"c	c #273259",
-"d	c #7F7F7F",
-"e	c #5E5E5F",
-"f	c #3C3C3E",
-"g	c #969696",
-"h	c #848484",
-"i	c #6B6B6B",
-"j	c #575757",
-"k	c #4A4A4B",
-"l	c #333335",
-"m	c #363637",
-"n	c #2A2A2C",
-"..............+...",
-"@@@@@@@@@@@@@#$###",
-"%%%%%%%%%%%%&*=***",
-"------------;>,>>>",
-"'''''''''''')!~!!!",
-"{{{{{{{{{{{{]^/^^^",
-"((((((((((((_:<:::",
-"[[[[[[[[[[[[}^/^^^",
-"||||||||||||1!~!!!",
-"2222222222223>,>>>",
-"4444444444445*=***",
-"6666666666667#$###",
-"8888888888885.+...",
-"9999999999990abaaa",
-"ccccccccccccdefeee",
-"}}}}}}}}}ghijklkkk",
-"mmmmmmmmmmmmmmnmmm"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAP.xpm b/kwin-styles/icewm/icewm-themes/titleAP.xpm
deleted file mode 100644
index a4ae203a..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAP.xpm
+++ /dev/null
@@ -1,73 +0,0 @@
-/* XPM */
-static char * titleAP_xpm[] = {
-"18 17 53 1",
-" 	c None",
-".	c #868687",
-"+	c #4E4E4F",
-"@	c #9A9A9B",
-"#	c #575758",
-"$	c #484848",
-"%	c #AEAEAF",
-"&	c #606061",
-"*	c #515151",
-"=	c #344066",
-"-	c #C2C2C3",
-";	c #68686A",
-">	c #606060",
-",	c #425076",
-"'	c #D6D6D7",
-")	c #717173",
-"!	c #707070",
-"~	c #526185",
-"{	c #EAEAEB",
-"]	c #7A7A7C",
-"^	c #808080",
-"/	c #607194",
-"(	c #FFFFFF",
-"_	c #838385",
-":	c #8E8E8E",
-"<	c #7081A3",
-"[	c #9B9B9B",
-"}	c #7284A6",
-"|	c #A9A9A9",
-"1	c #7587A9",
-"2	c #B7B7B7",
-"3	c #66779A",
-"4	c #C5C5C5",
-"5	c #57668A",
-"6	c #D2D2D2",
-"7	c #4A597D",
-"8	c #3D4A70",
-"9	c #727273",
-"0	c #454547",
-"a	c #A7A7A7",
-"b	c #303C63",
-"c	c #5E5E5F",
-"d	c #3C3C3E",
-"e	c #7F7F7F",
-"f	c #273259",
-"g	c #4A4A4B",
-"h	c #333335",
-"i	c #575757",
-"j	c #6B6B6B",
-"k	c #848484",
-"l	c #969696",
-"m	c #363637",
-"n	c #2A2A2C",
-"...+..............",
-"@@@#@$$$$$$$$$$$$$",
-"%%%&%*============",
-"---;->,,,,,,,,,,,,",
-"''')'!~~~~~~~~~~~~",
-"{{{]{^////////////",
-"(((_(:<<<<<<<<<<<<",
-"{{{]{[}}}}}}}}}}}}",
-"''')'|111111111111",
-"---;-2333333333333",
-"%%%&%4555555555555",
-"@@@#@6777777777777",
-"...+.4888888888888",
-"99909abbbbbbbbbbbb",
-"cccdceffffffffffff",
-"ggghgijkl[[[[[[[[[",
-"mmmnmmmmmmmmmmmmmm"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAQ.xpm b/kwin-styles/icewm/icewm-themes/titleAQ.xpm
deleted file mode 100644
index 8bc6cd28..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAQ.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAQ_xpm[] = {
-"2 17 17 1",
-" 	c None",
-".	c #4F4F51",
-"+	c #858687",
-"@	c #999A9A",
-"#	c #5E5E5E",
-"$	c #AEAEAE",
-"%	c #717172",
-"&	c #C2C2C2",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #909090",
-";	c #FEFEFE",
-">	c #717374",
-",	c #373739",
-"'	c #5C5F64",
-")	c #494B4D",
-"!	c #343638",
-".+",
-".@",
-"#$",
-"%&",
-"%*",
-"%=",
-"-;",
-"%=",
-"%*",
-"%&",
-"#$",
-".@",
-".+",
-".>",
-",'",
-",)",
-",!"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAR.xpm b/kwin-styles/icewm/icewm-themes/titleAR.xpm
deleted file mode 100644
index 8bc6cd28..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAR.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAQ_xpm[] = {
-"2 17 17 1",
-" 	c None",
-".	c #4F4F51",
-"+	c #858687",
-"@	c #999A9A",
-"#	c #5E5E5E",
-"$	c #AEAEAE",
-"%	c #717172",
-"&	c #C2C2C2",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #909090",
-";	c #FEFEFE",
-">	c #717374",
-",	c #373739",
-"'	c #5C5F64",
-")	c #494B4D",
-"!	c #343638",
-".+",
-".@",
-"#$",
-"%&",
-"%*",
-"%=",
-"-;",
-"%=",
-"%*",
-"%&",
-"#$",
-".@",
-".+",
-".>",
-",'",
-",)",
-",!"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAS.xpm b/kwin-styles/icewm/icewm-themes/titleAS.xpm
deleted file mode 100644
index f153f2af..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAS.xpm
+++ /dev/null
@@ -1,32 +0,0 @@
-/* XPM */
-static char * titleAS_xpm[] = {
-"1 17 12 1",
-" 	c None",
-".	c #868687",
-"+	c #9A9A9B",
-"@	c #AEAEAF",
-"#	c #C2C2C3",
-"$	c #D6D6D7",
-"%	c #EAEAEB",
-"&	c #FFFFFF",
-"*	c #727273",
-"=	c #5E5E5F",
-"-	c #4A4A4B",
-";	c #363637",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"%",
-"$",
-"#",
-"@",
-"+",
-".",
-"*",
-"=",
-"-",
-";"};
diff --git a/kwin-styles/icewm/icewm-themes/titleAT.xpm b/kwin-styles/icewm/icewm-themes/titleAT.xpm
deleted file mode 100644
index 84f06879..00000000
--- a/kwin-styles/icewm/icewm-themes/titleAT.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char * titleAT_xpm[] = {
-"1 17 18 1",
-" 	c None",
-".	c #868687",
-"+	c #484848",
-"@	c #344066",
-"#	c #425076",
-"$	c #526185",
-"%	c #607194",
-"&	c #7081A3",
-"*	c #7284A6",
-"=	c #7587A9",
-"-	c #66779A",
-";	c #57668A",
-">	c #4A597D",
-",	c #3D4A70",
-"'	c #303C63",
-")	c #273259",
-"!	c #9B9B9B",
-"~	c #363637",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"*",
-"=",
-"-",
-";",
-">",
-",",
-"'",
-")",
-"!",
-"~"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIB.xpm b/kwin-styles/icewm/icewm-themes/titleIB.xpm
deleted file mode 100644
index f153f2af..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIB.xpm
+++ /dev/null
@@ -1,32 +0,0 @@
-/* XPM */
-static char * titleAS_xpm[] = {
-"1 17 12 1",
-" 	c None",
-".	c #868687",
-"+	c #9A9A9B",
-"@	c #AEAEAF",
-"#	c #C2C2C3",
-"$	c #D6D6D7",
-"%	c #EAEAEB",
-"&	c #FFFFFF",
-"*	c #727273",
-"=	c #5E5E5F",
-"-	c #4A4A4B",
-";	c #363637",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"%",
-"$",
-"#",
-"@",
-"+",
-".",
-"*",
-"=",
-"-",
-";"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIJ.xpm b/kwin-styles/icewm/icewm-themes/titleIJ.xpm
deleted file mode 100644
index 0ef284c1..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIJ.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAJ_xpm[] = {
-"3 17 17 1",
-" 	c None",
-".	c #858687",
-"+	c #4F4F51",
-"@	c #999A9A",
-"#	c #AEAEAE",
-"$	c #5E5E5E",
-"%	c #C2C2C2",
-"&	c #717172",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #FEFEFE",
-";	c #909090",
-">	c #717374",
-",	c #5C5F64",
-"'	c #373739",
-")	c #494B4D",
-"!	c #343638",
-"..+",
-"@@+",
-"##$",
-"%%&",
-"**&",
-"==&",
-"--;",
-"==&",
-"**&",
-"%%&",
-"##$",
-"@@+",
-"..+",
-">>+",
-",,'",
-"))'",
-"!!'"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIM.xpm b/kwin-styles/icewm/icewm-themes/titleIM.xpm
deleted file mode 100644
index 575b63c4..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIM.xpm
+++ /dev/null
@@ -1,66 +0,0 @@
-/* XPM */
-static char * titleIM_xpm[] = {
-"18 17 46 1",
-" 	c None",
-".	c #868686",
-"+	c #4E4E4E",
-"@	c #484848",
-"#	c #9A9A9A",
-"$	c #575757",
-"%	c #4D4D4D",
-"&	c #515151",
-"*	c #AEAEAE",
-"=	c #606060",
-"-	c #5C5C5C",
-";	c #C2C2C2",
-">	c #696969",
-",	c #6B6B6B",
-"'	c #707070",
-")	c #D6D6D6",
-"!	c #727272",
-"~	c #7A7A7A",
-"{	c #808080",
-"]	c #EAEAEA",
-"^	c #7B7B7B",
-"/	c #898989",
-"(	c #8E8E8E",
-"_	c #FFFFFF",
-":	c #848484",
-"<	c #8C8C8C",
-"[	c #9B9B9B",
-"}	c #8F8F8F",
-"|	c #A9A9A9",
-"1	c #B7B7B7",
-"2	c #C5C5C5",
-"3	c #636363",
-"4	c #D2D2D2",
-"5	c #565656",
-"6	c #494949",
-"7	c #A7A7A7",
-"8	c #464646",
-"9	c #404040",
-"0	c #7F7F7F",
-"a	c #5E5E5E",
-"b	c #3D3D3D",
-"c	c #969696",
-"d	c #4A4A4A",
-"e	c #343434",
-"f	c #363636",
-"g	c #2B2B2B",
-"..............+...",
-"@@@@@@@@@@@@@#$###",
-"%%%%%%%%%%%%&*=***",
-"------------=;>;;;",
-",,,,,,,,,,,,')!)))",
-"~~~~~~~~~~~~{]^]]]",
-"////////////(_:___",
-"<<<<<<<<<<<<[]^]]]",
-"}}}}}}}}}}}}|)!)))",
-"{{{{{{{{{{{{1;>;;;",
-"''''''''''''2*=***",
-"3333333333334#$###",
-"5555555555552.+...",
-"6666666666667!8!!!",
-"9999999999990abaaa",
-"[[[[[[[[[c:,$deddd",
-"ffffffffffffffgfff"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIP.xpm b/kwin-styles/icewm/icewm-themes/titleIP.xpm
deleted file mode 100644
index 170d1b2a..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIP.xpm
+++ /dev/null
@@ -1,66 +0,0 @@
-/* XPM */
-static char * titleIP_xpm[] = {
-"18 17 46 1",
-" 	c None",
-".	c #868686",
-"+	c #4E4E4E",
-"@	c #9A9A9A",
-"#	c #575757",
-"$	c #484848",
-"%	c #AEAEAE",
-"&	c #606060",
-"*	c #515151",
-"=	c #4D4D4D",
-"-	c #C2C2C2",
-";	c #696969",
-">	c #5C5C5C",
-",	c #D6D6D6",
-"'	c #727272",
-")	c #707070",
-"!	c #6B6B6B",
-"~	c #EAEAEA",
-"{	c #7B7B7B",
-"]	c #808080",
-"^	c #7A7A7A",
-"/	c #FFFFFF",
-"(	c #848484",
-"_	c #8E8E8E",
-":	c #898989",
-"<	c #9B9B9B",
-"[	c #8C8C8C",
-"}	c #A9A9A9",
-"|	c #8F8F8F",
-"1	c #B7B7B7",
-"2	c #C5C5C5",
-"3	c #D2D2D2",
-"4	c #636363",
-"5	c #565656",
-"6	c #464646",
-"7	c #A7A7A7",
-"8	c #494949",
-"9	c #5E5E5E",
-"0	c #3D3D3D",
-"a	c #7F7F7F",
-"b	c #404040",
-"c	c #4A4A4A",
-"d	c #343434",
-"e	c #969696",
-"f	c #363636",
-"g	c #2B2B2B",
-"...+..............",
-"@@@#@$$$$$$$$$$$$$",
-"%%%&%*============",
-"---;-&>>>>>>>>>>>>",
-",,,',)!!!!!!!!!!!!",
-"~~~{~]^^^^^^^^^^^^",
-"///(/_::::::::::::",
-"~~~{~<[[[[[[[[[[[[",
-",,,',}||||||||||||",
-"---;-1]]]]]]]]]]]]",
-"%%%&%2))))))))))))",
-"@@@#@3444444444444",
-"...+.2555555555555",
-"'''6'7888888888888",
-"99909abbbbbbbbbbbb",
-"cccdc#!(e<<<<<<<<<",
-"fffgffffffffffffff"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIQ.xpm b/kwin-styles/icewm/icewm-themes/titleIQ.xpm
deleted file mode 100644
index 8bc6cd28..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIQ.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAQ_xpm[] = {
-"2 17 17 1",
-" 	c None",
-".	c #4F4F51",
-"+	c #858687",
-"@	c #999A9A",
-"#	c #5E5E5E",
-"$	c #AEAEAE",
-"%	c #717172",
-"&	c #C2C2C2",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #909090",
-";	c #FEFEFE",
-">	c #717374",
-",	c #373739",
-"'	c #5C5F64",
-")	c #494B4D",
-"!	c #343638",
-".+",
-".@",
-"#$",
-"%&",
-"%*",
-"%=",
-"-;",
-"%=",
-"%*",
-"%&",
-"#$",
-".@",
-".+",
-".>",
-",'",
-",)",
-",!"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIR.xpm b/kwin-styles/icewm/icewm-themes/titleIR.xpm
deleted file mode 100644
index 8bc6cd28..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIR.xpm
+++ /dev/null
@@ -1,37 +0,0 @@
-/* XPM */
-static char * titleAQ_xpm[] = {
-"2 17 17 1",
-" 	c None",
-".	c #4F4F51",
-"+	c #858687",
-"@	c #999A9A",
-"#	c #5E5E5E",
-"$	c #AEAEAE",
-"%	c #717172",
-"&	c #C2C2C2",
-"*	c #D6D6D6",
-"=	c #E9EAEA",
-"-	c #909090",
-";	c #FEFEFE",
-">	c #717374",
-",	c #373739",
-"'	c #5C5F64",
-")	c #494B4D",
-"!	c #343638",
-".+",
-".@",
-"#$",
-"%&",
-"%*",
-"%=",
-"-;",
-"%=",
-"%*",
-"%&",
-"#$",
-".@",
-".+",
-".>",
-",'",
-",)",
-",!"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIS.xpm b/kwin-styles/icewm/icewm-themes/titleIS.xpm
deleted file mode 100644
index f153f2af..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIS.xpm
+++ /dev/null
@@ -1,32 +0,0 @@
-/* XPM */
-static char * titleAS_xpm[] = {
-"1 17 12 1",
-" 	c None",
-".	c #868687",
-"+	c #9A9A9B",
-"@	c #AEAEAF",
-"#	c #C2C2C3",
-"$	c #D6D6D7",
-"%	c #EAEAEB",
-"&	c #FFFFFF",
-"*	c #727273",
-"=	c #5E5E5F",
-"-	c #4A4A4B",
-";	c #363637",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"%",
-"$",
-"#",
-"@",
-"+",
-".",
-"*",
-"=",
-"-",
-";"};
diff --git a/kwin-styles/icewm/icewm-themes/titleIT.xpm b/kwin-styles/icewm/icewm-themes/titleIT.xpm
deleted file mode 100644
index ddcab757..00000000
--- a/kwin-styles/icewm/icewm-themes/titleIT.xpm
+++ /dev/null
@@ -1,38 +0,0 @@
-/* XPM */
-static char * titleIT_xpm[] = {
-"1 17 18 1",
-" 	c None",
-".	c #868686",
-"+	c #484848",
-"@	c #4D4D4D",
-"#	c #5C5C5C",
-"$	c #6B6B6B",
-"%	c #7A7A7A",
-"&	c #898989",
-"*	c #8C8C8C",
-"=	c #8F8F8F",
-"-	c #808080",
-";	c #707070",
-">	c #636363",
-",	c #565656",
-"'	c #494949",
-")	c #404040",
-"!	c #9B9B9B",
-"~	c #363636",
-".",
-"+",
-"@",
-"#",
-"$",
-"%",
-"&",
-"*",
-"=",
-"-",
-";",
-">",
-",",
-"'",
-")",
-"!",
-"~"};
diff --git a/kwin-styles/icewm/icewm.cpp b/kwin-styles/icewm/icewm.cpp
deleted file mode 100644
index 4b9a064b..00000000
--- a/kwin-styles/icewm/icewm.cpp
+++ /dev/null
@@ -1,1703 +0,0 @@
-/*
-  $Id$
-
-  Gallium-IceWM themeable KWin client
-
-  Copyright 2001
-	Karol Szwed <gallium@kde.org>
-	http://gallium.n3.net/
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  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.
-
-  -----------------------------------------------------------------------------
-  This client loads most icewm 1.0.X pixmap themes, without taking into account
-  specific font settings for clients, or coloured mouse cursors. Titlebar
-  fonts can be changed via the kde control center. Bi-colour mouse cursors
-  may be added in future if requested by users, as well as theme font support.
-  Any styles using inbuilt icewm titlebar drawing without using pixmaps (e.g.
-  Warp4, win95 etc.) are not fully supported, and may cause drawing errors,
-  as these themes use in-built icewm drawing mechanisms.
-
-  When a pixmap theme is not present (or a corrupt one is present) then very
-  plain title decorations are painted instead, so that users don't see
-  non-painted window areas where possible ;)
-
-  At a later date, frame shaping may be added if really requested, and an
-  update to support the latest icewm 1.1.X theme format may be made.
-
-*/
-
-#include <kconfig.h>
-#include <kstandarddirs.h>
-#include <kglobal.h>
-#include <klocale.h>
-#include <kdrawutil.h>
-#include <tqapplication.h>
-#include <tqlabel.h>
-#include <tqdrawutil.h>
-#include <tqdatetime.h>
-#include <tqbitmap.h>
-#include <tqcursor.h>
-#include <tqstring.h>
-#include <tqtooltip.h>
-#include <tqregexp.h>
-#include "icewm.h"
-
-namespace IceWM {
-
-////////////////////////////////////////////////////////////////////////////////////////////
-// Here's the global pixmap stuff - as memory efficient as it can be :)
-////////////////////////////////////////////////////////////////////////////////////////////
-
-// IceWM frame pixmaps
-TQPixmap* frameTL[] = {NULL, NULL};
-TQPixmap* frameT [] = {NULL, NULL};
-TQPixmap* frameTR[] = {NULL, NULL};
-TQPixmap* frameL [] = {NULL, NULL};
-TQPixmap* frameR [] = {NULL, NULL};
-TQPixmap* frameBL[] = {NULL, NULL};
-TQPixmap* frameB [] = {NULL, NULL};
-TQPixmap* frameBR[] = {NULL, NULL};
-
-// Button pixmaps
-TQPixmap* closePix[]      = {NULL, NULL};
-TQPixmap* depthPix[]      = {NULL, NULL};
-TQPixmap* maximizePix[]   = {NULL, NULL};
-TQPixmap* minimizePix[]   = {NULL, NULL};
-TQPixmap* restorePix[]    = {NULL, NULL};
-TQPixmap* hidePix[]       = {NULL, NULL};
-TQPixmap* rollupPix[]     = {NULL, NULL};
-TQPixmap* rolldownPix[]   = {NULL, NULL};
-TQPixmap* menuButtonPix[] = {NULL, NULL};
-
-// Titlebar pixmaps
-TQPixmap* titleJ[] = {NULL, NULL};
-TQPixmap* titleL[] = {NULL, NULL};
-TQPixmap* titleS[] = {NULL, NULL};
-TQPixmap* titleP[] = {NULL, NULL};
-TQPixmap* titleT[] = {NULL, NULL};
-TQPixmap* titleM[] = {NULL, NULL};
-TQPixmap* titleB[] = {NULL, NULL};
-TQPixmap* titleR[] = {NULL, NULL};
-TQPixmap* titleQ[] = {NULL, NULL};
-
-ThemeHandler* clientHandler;
-
-TQString* titleButtonsLeft;
-TQString* titleButtonsRight;
-
-TQColor* colorActiveBorder;
-TQColor* colorInActiveBorder;
-TQColor* colorActiveButton;
-TQColor* colorInActiveButton;
-TQColor* colorActiveTitleBarText;
-TQColor* colorInActiveTitleBarText;
-TQColor* colorActiveTitleBar;
-TQColor* colorInActiveTitleBar;
-TQColor* colorActiveTitleTextShadow;
-TQColor* colorInActiveTitleTextShadow;
-
-int  cornerSizeX;
-int  cornerSizeY;
-int  titleBarHeight;
-int  borderSizeX;
-int  borderSizeY;
-
-bool validframe  			= false;
-bool useActiveShadow 		= false;
-bool useInActiveShadow 		= false;
-
-// KControl Settings - Read from twinicewmrc config file or icewm theme
-bool themeTitleTextColors 	= true;		// Allow theme to set colors.
-										// kcontrol will have no effect
-
-bool titleBarOnTop 		  	= true;		// Titlebars can be below windows too :)
-bool showMenuButtonIcon   	= false;	// Draw a mini icon over the menu pixmap.
-bool customButtonPositions 	= false;	// Let the theme dictate the btn pos.
-bool titleBarCentered 	  	= true;
-
-enum styles {OTHER, WARP3, WARP4, MOTIF, WIN95, NICE} themeLook;
-
-////////////////////////////////////////////////////////////////////////////////////////////
-// General utility functions
-////////////////////////////////////////////////////////////////////////////////////////////
-
-// Returns true if both active and inactive pixmaps are valid, and not null
-bool validPixmaps( TQPixmap* p[] )
-{
-	return ( p[Active]   && ( !p[Active]->isNull()   ) &&
-			 p[InActive] && ( !p[InActive]->isNull() ) );
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////////
-// ThemeHandler class
-//
-// This class allows us to free dynamic memory upon being reset, or unloaded
-// from twin, so we don't leak big images everywhere, and handles the theme
-// initialisation / destruction in general.
-////////////////////////////////////////////////////////////////////////////////////////////
-
-ThemeHandler::ThemeHandler()
-{
-	initialized = false;
-
-	// Prevent having globals objects (use pointers to objects)
-	titleButtonsLeft 	= new TQString();
-	titleButtonsRight 	= new TQString();
-
-	colorActiveBorder 			= new TQColor();
-	colorInActiveBorder 		= new TQColor();
-	colorActiveButton 	        = new TQColor();
-	colorInActiveButton 		= new TQColor();
-	colorActiveTitleBarText 	= new TQColor();
-	colorInActiveTitleBarText	= new TQColor();
-	colorActiveTitleBar 		= new TQColor();
-	colorInActiveTitleBar 		= new TQColor();
-	colorActiveTitleTextShadow	= new TQColor();
-	colorInActiveTitleTextShadow = new TQColor();
-
-	// Initialize
-	readConfig();
-	initTheme();
-	validframe = isFrameValid();
-	initialized = true;
-}
-
-
-ThemeHandler::~ThemeHandler()
-{
-	if (initialized)
-		freePixmaps();
-
-	delete colorInActiveTitleTextShadow;
-	delete colorActiveTitleTextShadow;
-	delete colorInActiveBorder;
-	delete colorActiveTitleBarText;
-	delete colorInActiveTitleBarText;
-	delete colorActiveTitleBar;
-	delete colorInActiveTitleBar;
-	delete colorActiveBorder;
-	delete colorActiveButton;
-	delete colorInActiveButton;
-
-	delete titleButtonsRight;
-	delete titleButtonsLeft;
-}
-
-
-KDecoration* ThemeHandler::createDecoration( KDecorationBridge* bridge )
-{
-	return new IceWMClient( bridge, this );
-}
-
-
-// Converts KDE style button strings to icewm style button strings
-void ThemeHandler::convertButtons( TQString& s )
-{
-	s.replace( TQRegExp("_"), "");	// Spacer	(ignored)
-	s.replace( TQRegExp("H"), "");	// Help		(ignored)
-	s.replace( TQRegExp("M"), "s");	// Sysmenu
-	s.replace( TQRegExp("S"), "d");	// Sticky/OnAllDesktops
-	s.replace( TQRegExp("I"), "i");	// Minimize
-	s.replace( TQRegExp("A"), "m");	// Maximize
-	s.replace( TQRegExp("X"), "x");	// Close
-}
-
-
-// Reverses all characters in a TQString
-TQString ThemeHandler::reverseString( TQString s )
-{
-	if (s.length() <= 1)
-		return s;
-
-	TQString tmpStr;
-	for(int i = s.length()-1; i >= 0; i--)
-	{
-		tmpStr += s[(unsigned int)i];
-	}
-
-	return tmpStr;
-}
-
-
-// This function reads the twinicewmrc config file
-void ThemeHandler::readConfig()
-{
-	KConfig conf("twinicewmrc");
-	conf.setGroup("General");
-	themeName = conf.readEntry("CurrentTheme");
-	themeTitleTextColors = conf.readBoolEntry("ThemeTitleTextColors", true);
-	showMenuButtonIcon = conf.readBoolEntry("ShowMenuButtonIcon", false);
-	titleBarOnTop = conf.readBoolEntry("TitleBarOnTop", true);
-
-	customButtonPositions = KDecoration::options()->customButtonPositions();
-	if (customButtonPositions)
-	{
-		*titleButtonsLeft  = KDecoration::options()->titleButtonsLeft();
-		*titleButtonsRight = KDecoration::options()->titleButtonsRight();
-
-		// Convert KDE to icewm style buttons
-		convertButtons( *titleButtonsLeft );
-		convertButtons( *titleButtonsRight );
-	}
-
-	// Provide a default theme alias
-	if (themeName == "default")
-		themeName = "";
-}
-
-
-// This creates the dynamic pixmaps upon loading the style
-// into the pixmap buffers above, and configures the dimensioning stuff.
-void ThemeHandler::initTheme()
-{
-	// Add a slash if required
-	if ( !themeName.isEmpty() )
-		themeName += "/";
-
-	// We use kconfig to read icewm config files...
-	// this is easy since icewm uses key=value pairs!
-	KConfig config( locate("data", TQString("twin/icewm-themes/") +
-					themeName + TQString("default.theme")) );
-
-	// Load specifics, or use IceWM defaults instead.
-	borderSizeX = config.readNumEntry("BorderSizeX", 6);
-	borderSizeY = config.readNumEntry("BorderSizeY", 6);
-	cornerSizeX = config.readNumEntry("CornerSizeX", 24);
-	cornerSizeY = config.readNumEntry("CornerSizeY", 24);
-	titleBarCentered = (bool) config.readNumEntry("TitleBarCentered", 0);
-
-	// Check if readConfig() hasn't overridden this value...
-	if (!showMenuButtonIcon)
-		showMenuButtonIcon = (bool) config.readNumEntry("ShowMenuButtonIcon", 0);
-	titleBarHeight = config.readNumEntry("TitleBarHeight", 20);
-
-	if (!customButtonPositions)
-	{
-		// Read in the button configuration, stripping any quotes
-		// Ignore on all desktops 'd' on the left buttons
-		// (some themes look bad with it on by default)
-		*titleButtonsLeft = config.readEntry("TitleButtonsLeft", "s");
-		*titleButtonsLeft = titleButtonsLeft->replace( TQRegExp(TQString("\"")), "");
-		*titleButtonsRight = config.readEntry("TitleButtonsRight", "xmir");
-		*titleButtonsRight = titleButtonsRight->replace( TQRegExp(TQString("\"")), "");
-
-		// I have no idea why the right side buttons in icewm are reversed
-		*titleButtonsRight = reverseString( *titleButtonsRight );
-	}
-
-	// Read the default border and text colours from the config file
-	// And use IceWM defaults if not found
-	TQString s;
-
-	s = config.readEntry("Look", "other");
-	if (s=="motif") themeLook = MOTIF;
-	else if (s=="warp3") themeLook = WARP3;
-	else if (s=="warp4") themeLook = WARP4;
-	else if (s=="win95") themeLook = WIN95;
-	else if (s=="nice") themeLook = NICE;
-	else themeLook = OTHER;
-
-	s = config.readEntry("ColorActiveBorder", "#C0C0C0");
-	*colorActiveBorder = decodeColor( s );
-	s = config.readEntry("ColorNormalBorder", "#C0C0C0");
-	*colorInActiveBorder = decodeColor( s );
-	s = config.readEntry("ColorActiveButton", "#C0C0C0");
-	*colorActiveButton = decodeColor( s );
-	s = config.readEntry("ColorNormalButton", "#C0C0C0");
-	*colorInActiveButton = decodeColor( s );
-
-	// Use these as a last resort
-	s = config.readEntry("ColorActiveTitleBar", "#0000A0");
-	*colorActiveTitleBar = decodeColor( s );
-	s = config.readEntry("ColorNormalTitleBar", "#808080");
-	*colorInActiveTitleBar = decodeColor( s );
-
-	// Read titlebar text colours
-	s = config.readEntry("ColorActiveTitleBarText", "#FFFFFF");
-	*colorActiveTitleBarText = decodeColor( s );
-	s = config.readEntry("ColorNormalTitleBarText", "#000000");
-	*colorInActiveTitleBarText = decodeColor( s );
-
-	// Use title text shadows only with theme title text colors
-	if ( themeTitleTextColors )
-	{
-		s = config.readEntry("ColorActiveTitleBarShadow");
-		if (!s.isEmpty())
-		{
-			*colorActiveTitleTextShadow = decodeColor( s );
-			useActiveShadow = true;
-		} else
-			useActiveShadow = false;
-
-		s = config.readEntry("ColorNormalTitleBarShadow");
-		if (!s.isEmpty())
-		{
-			*colorInActiveTitleTextShadow = decodeColor( s );
-			useInActiveShadow = true;
-		} else
-			useInActiveShadow = false;
-	} else
-		{
-			useActiveShadow = false;
-			useInActiveShadow = false;
-		}
-
-	// Stretch pixmaps for speed, where required
-	setPixmap( titleJ, "title", "J.xpm" );
-	setPixmap( titleL, "title", "L.xpm" );
-	setPixmap( titleS, "title", "S.xpm", true );
-
-	setPixmap( titleP, "title", "P.xpm" );
-	setPixmap( titleT, "title", "T.xpm", true );
-	setPixmap( titleM, "title", "M.xpm" );
-	setPixmap( titleB, "title", "B.xpm", true );
-	setPixmap( titleR, "title", "R.xpm" );
-	setPixmap( titleQ, "title", "Q.xpm" );
-
-	setPixmapButton( closePix,     "close",     ".xpm" );
-	setPixmapButton( depthPix,     "depth",     ".xpm" );
-	setPixmapButton( maximizePix,  "maximize",  ".xpm" );
-	setPixmapButton( minimizePix,  "minimize",  ".xpm" );
-	setPixmapButton( restorePix,   "restore",   ".xpm" );
-	setPixmapButton( hidePix,      "hide",      ".xpm" );
-	setPixmapButton( rollupPix,    "rollup",    ".xpm" );
-	setPixmapButton( rolldownPix,  "rolldown",  ".xpm" );
-	setPixmapButton( menuButtonPix,"menuButton",".xpm" );
-
-	// Top
-	setPixmap( frameTL, "frame", "TL.xpm" );
-	setPixmap( frameT,  "frame", "T.xpm", true );
-	setPixmap( frameTR, "frame", "TR.xpm" );
-
-	// Sides
-	setPixmap( frameL, "frame", "L.xpm", true,Qt::Vertical );
-	setPixmap( frameR, "frame", "R.xpm", true,Qt::Vertical );
-
-	// Bottom
-	setPixmap( frameBL, "frame", "BL.xpm" );
-	setPixmap( frameB,  "frame", "B.xpm", true );
-	setPixmap( frameBR, "frame", "BR.xpm" );
-
-    // Make sure border sizes are at least reasonable...
-	if (borderSizeX < 0)
-		borderSizeX = 0;
-	if (borderSizeY < 0)
-		borderSizeY = 0;
-	// ...and titleBarHeight as well
-	if (titleBarHeight < 0)
-		titleBarHeight = 0;
-
-	// This is a work-around for some themes
-	if (!titleT[Active])
-		titleT[Active] = duplicateValidPixmap( Active );
-
-	if (!titleB[Active])
-		titleB[Active] = duplicateValidPixmap( Active );
-
-
-	if (titleL[Active] && !titleL[InActive])
-		titleL[InActive] = duplicateValidPixmap( InActive, titleL[Active]->width() );
-
-	if (titleS[Active] && !titleS[InActive])
-		titleS[InActive] = duplicateValidPixmap( InActive, titleS[Active]->width() );
-
-	if (titleP[Active] && !titleP[InActive])
-		titleP[InActive] = duplicateValidPixmap( InActive, titleP[Active]->width() );
-
-	if (titleT[Active] && !titleT[InActive])
-		titleT[InActive] = duplicateValidPixmap( InActive, titleT[Active]->width() );
-
-	if (titleM[Active] && !titleM[InActive])
-		titleM[InActive] = duplicateValidPixmap( InActive, titleM[Active]->width() );
-
-	if (titleB[Active] && !titleB[InActive])
-		titleB[InActive] = duplicateValidPixmap( InActive, titleB[Active]->width() );
-
-	if (titleR[Active] && !titleR[InActive])
-		titleR[InActive] = duplicateValidPixmap( InActive, titleR[Active]->width() );
-}
-
-
-TQPixmap* ThemeHandler::duplicateValidPixmap( bool act, int size )
-{
-	TQPixmap* p1 = NULL;
-	// Use the stretch or title pixmaps instead
-	if ( titleS[act] )
-		p1 = new TQPixmap( *titleS[act] );
-	else if ( titleB[act] )
-		p1 = new TQPixmap( *titleB[act] );
-	else if ( titleT[act] )
-		p1 = new TQPixmap( *titleT[act] );
-
-	// Stretch if required
-	if ( (size != -1) && p1 && (!p1->isNull()) )
-		p1 = stretchPixmap( p1, true, size );
-
-	return p1;
-}
-
-
-// Frees all memory used by pixmaps.
-void ThemeHandler::freePixmaps()
-{
-	freePixmapGroup( frameTL );
-	freePixmapGroup( frameT );
-	freePixmapGroup( frameTR );
-	freePixmapGroup( frameL );
-	freePixmapGroup( frameR );
-	freePixmapGroup( frameBL );
-	freePixmapGroup( frameB );
-	freePixmapGroup( frameBR );
-
-	freePixmapGroup( closePix );
-	freePixmapGroup( depthPix );
-	freePixmapGroup( maximizePix );
-	freePixmapGroup( minimizePix );
-	freePixmapGroup( restorePix );
-	freePixmapGroup( hidePix );
-	freePixmapGroup( rollupPix );
-	freePixmapGroup( rolldownPix );
-	freePixmapGroup( menuButtonPix );
-
-	freePixmapGroup( titleJ );
-	freePixmapGroup( titleL );
-	freePixmapGroup( titleS );
-	freePixmapGroup( titleP );
-	freePixmapGroup( titleT );
-	freePixmapGroup( titleM );
-	freePixmapGroup( titleB );
-	freePixmapGroup( titleR );
-	freePixmapGroup( titleQ );
-}
-
-
-// Frees a dynamic pixmap group from the heap.
-void ThemeHandler::freePixmapGroup( TQPixmap* p[] )
-{
-	if (p)
-	{
-		if (p[Active])   delete p[Active];
-		if (p[InActive]) delete p[InActive];
-		p[Active] = NULL;
-		p[InActive] = NULL;
-	} else
-		qWarning("twin-icewm: freePixmapGroup - invalid TQPixmap** 'p'\n");
-}
-
-
-// Converts icewm colors #C0C0C0 or rgb:C0/C0/C0 to TQColors
-TQColor ThemeHandler::decodeColor( TQString& s )
-{
-	// Make rgb:C0/C0/C0, or #C0/C0/C0  -> C0C0C0
-	s.replace( TQRegExp("r"), "");
-	s.replace( TQRegExp("g"), "");
-	s.replace( TQRegExp("b"), "");
-	s.replace( TQRegExp("#"), "");
-	s.replace( TQRegExp("/"), "");
-	s.replace( TQRegExp(":"), "");
-	s.replace( TQRegExp("\\"), "");
-	s.replace( TQRegExp("\""), "");
-
-	// Wierd error - return grey
-	if (s.length() != 6)
-		return TQColor( 0xC0, 0xC0, 0xC0 );
-
-	// TQt makes this conversion very easy
-	return TQColor( TQString("#") + s );
-}
-
-
-// Stretches tiny pixmaps vertically or horizontally, taking into account
-// repetition in patterns, so as not to make them mismatched
-TQPixmap* ThemeHandler::stretchPixmap( TQPixmap* src, bool stretchHoriz, int stretchSize )
-{
-	if (!src) return NULL;
-	if (src->isNull()) return NULL;
-
-	int s_inc, size;
-
-	// If its the right size already, just return
-	if (stretchSize == -1)
-	{
-		if (stretchHoriz)
-			s_inc = src->width();
-		else
-			s_inc = src->height();
-
-		size = s_inc;
-		if (size >= 100)
-			return src;
-
-		// Stretch an appropriate amount - taking care of pattern repetition
-		while( size < 100 )
-			size += s_inc;
-	} else
-		size = stretchSize;
-
-	TQPixmap* p = new TQPixmap();
-	if ( stretchHoriz )
-		p->resize( size, src->height() );
-	else
-		p->resize( src->width(), size );
-
-	TQPainter pnt( p );
-	if ( stretchHoriz )
-		pnt.drawTiledPixmap( 0, 0, size, src->height(), *src);
-	else
-		pnt.drawTiledPixmap( 0, 0, src->width(), size, *src);
-	pnt.end();
-
-	delete src;
-	return p;
-}
-
-static void draw3DRect(TQPainter &pnt, TQColor &col, int x, int y, int w, int h, bool up) {
-	TQColor light = col.light(135);
-	TQColor dark = col.dark(140);
-	pnt.setPen(up ? light : dark);
-	pnt.drawLine(x, y, x+w, y);
-	pnt.drawLine(x, y, x, y+h);
-	pnt.setPen(up ? dark : light);
-	pnt.drawLine(x, y+h, x+w, y+h);
-	pnt.drawLine(x+w, y, x+w, y+h);
-	pnt.setPen(col);
-	pnt.drawPoint(x+w, y);
-	pnt.drawPoint(x, y+h);
-}
-
-void ThemeHandler::setPixmapButton( TQPixmap* p[], TQString s1, TQString s2)
-{
-	if ( p[Active] )
-		qWarning("twin-icewm: setPixmap - should be null (1)\n");
-	if ( p[InActive] )
-		qWarning("twin-icewm: setPixmap - should be null (2)\n");
-
-	TQString str = locate("appdata", TQString("icewm-themes/")
-				+ themeName + s1 + "A" + s2);
-	if (str.isEmpty())
-		str = locate("appdata", TQString("icewm-themes/")
-				+ themeName + s1 + s2);
-
-        TQPixmap *qp = new TQPixmap(str);
-	TQColor cActive = themeLook == WIN95 ? *colorActiveTitleBar : *colorActiveButton;
-	TQColor cInActive = themeLook == WIN95 ? *colorInActiveTitleBar : *colorInActiveButton;
-
-	if (!qp->isNull() && themeLook > 0) {
-		int w = qp->width();
-		if (themeLook > 0 && titleBarHeight > w) w = titleBarHeight;
-		p[Active] = new TQPixmap(w, 2*titleBarHeight );
-		p[Active] -> fill(cActive);
-
-		TQPainter pnt( p[Active] );
-
-		int offX = (w - qp->width())/2;
-		int offY = (titleBarHeight - qp->height())/2;
-		if (offY < 0) offY = 0;
-
-		if (themeLook == WIN95) {
-			draw3DRect(pnt, *colorActiveButton, offX-1, offY-1,
-				   qp->width()+1, qp->height()+1, true);
-			draw3DRect(pnt, *colorActiveButton, offX-1, offY-1 + titleBarHeight,
-				   qp->width()+1, qp->height()+1, false);
-		} else if (themeLook != WARP4) {
-			draw3DRect(pnt, *colorActiveButton, 0, 0,
-				   w-1, titleBarHeight-1, true);
-			draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
-				   w-1, 2*titleBarHeight-1, false);
-		}
-
-		pnt.drawPixmap(offX, offY, *qp);
-		if (qp->height() <= titleBarHeight) {
-			pnt.drawPixmap(offX, titleBarHeight+offY, *qp);
-		}
-		pnt.end();
-		delete qp;
-	} else {
-		p[Active] = qp;
-	}
-
-	str = locate("appdata", TQString("icewm-themes/")
-		     + themeName + s1 + "I" + s2);
-	if (str.isEmpty())
-		str = locate("appdata", TQString("icewm-themes/")
-			     + themeName + s1 + s2);
-
-        qp = new TQPixmap(str);
-	if (!qp->isNull() && themeLook > 0) {
-		int w = qp->width();
-		if (titleBarHeight > w) w = titleBarHeight;
-		p[InActive] = new TQPixmap(w, 2*titleBarHeight );
-		p[InActive] -> fill(cInActive);
-
-		TQPainter pnt( p[InActive] );
-
-		int offX = (w - qp->width())/2;
-		int offY = (titleBarHeight - qp->height())/2;
-		if (offY < 0) offY = 0;
-
-		if (themeLook == WIN95) {
-			draw3DRect(pnt, *colorInActiveButton, offX-1, offY-1,
-				   qp->width()+1, qp->height()+1, true);
-			draw3DRect(pnt, *colorInActiveButton, offX-1, offY-1 + titleBarHeight,
-				   qp->width()+1, qp->height()+1, false);
- 		} else if (themeLook != WARP4) {
-			draw3DRect(pnt, *colorInActiveButton, 0, 0,
-				   w-1, titleBarHeight-1, true);
-			draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
-				   w-1, 2*titleBarHeight-1, false);
-		}
-		pnt.drawPixmap(offX, offY, *qp);
-		if (qp->height() <= titleBarHeight) {
-			pnt.drawPixmap(offX, titleBarHeight+offY, *qp);
-		}
-		pnt.end();
-		delete qp;
-	} else {
-		p[InActive] = qp;
-	}
-}
-
-
-
-
-// Loads the specified Active/InActive files into the specific pixmaps, and
-// can perform horizontal / vertical stretching if required for speed.
-// Tries to implement some icewm specific pixmap handling for some dodgy themes
-void ThemeHandler::setPixmap( TQPixmap* p[], TQString s1, TQString s2,
-							  bool stretch, bool stretchHoriz )
-{
-	if ( p[Active] )
-		qWarning("twin-icewm: setPixmap - should be null (1)\n");
-	if ( p[InActive] )
-		qWarning("twin-icewm: setPixmap - should be null (2)\n");
-
-	p[Active]   = new TQPixmap( locate("data", TQString("twin/icewm-themes/")
-								+ themeName + s1 + "A" + s2) );
-	p[InActive] = new TQPixmap( locate("data", TQString("twin/icewm-themes/")
-								+ themeName + s1 + "I" + s2) );
-
-	// Stretch the pixmap if requested.
-	if ( stretch )
-	{
-		if (p[Active])
-			p[Active] = stretchPixmap( p[Active], stretchHoriz );
-		if (p[InActive])
-			p[InActive] = stretchPixmap( p[InActive], stretchHoriz );
-	}
-
-	if ( p[Active] && p[InActive] )
-	{
-		// Make sure active and inactive pixmaps are the same width for proper painting
-		if (p[Active]->width() > p[InActive]->width())
-			p[InActive] = stretchPixmap( p[InActive], true, p[Active]->width() );
-	}
-
-}
-
-
-// returns true if there were enough pixmaps loaded to
-// draw the pixmap frame properly.
-bool ThemeHandler::isFrameValid()
-{
-	return
-	  ( validPixmaps( frameTL ) &&
-		validPixmaps( frameT )  &&
-		validPixmaps( frameTR ) &&
-		validPixmaps( frameL )  &&
-		validPixmaps( frameR )  &&
-		validPixmaps( frameBL ) &&
-		validPixmaps( frameB )  &&
-		validPixmaps( frameBR ) );
-}
-
-
-// Resets the theme, and re-clients all twin's wrapped windows.
-bool ThemeHandler::reset( unsigned long)
-{
-	initialized = false;
-	freePixmaps();
-	readConfig();
-	initTheme();
-	validframe = isFrameValid();
-	initialized = true;
-
-	// recreate all clients
-	return true;
-}
-
-bool ThemeHandler::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonMenu:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-            return true;
-        default:
-            return false;
-    };
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////////
-// IceWM button class
-////////////////////////////////////////////////////////////////////////////////////////////
-
-IceWMButton::IceWMButton(IceWMClient *parent, const char *name, TQPixmap* (*p)[2],
-	  bool isToggle, const TQString& tip, const int realizeBtns )
-    : TQButton(parent->widget(), name)
-{
-	m_realizeButtons = realizeBtns;
-	setTipText(tip);
-	setCursor(ArrowCursor);
-	// Eliminate any possible background flicker
-	setBackgroundMode( TQWidget::NoBackground );
-	client = parent;
-	usePixmap( p );
-	setFixedSize( tqsizeHint() );
-	setToggleButton( isToggle );
-}
-
-
-void IceWMButton::setTipText(const TQString &tip) {
-	if(KDecoration::options()->showTooltips()) {
-		TQToolTip::remove(this );
-		TQToolTip::add(this, tip );
-	}
-}
-
-
-TQSize IceWMButton::tqsizeHint() const
-{
-	// Check for invalid data
-	if ( validPixmaps( (TQPixmap**) (*pix) ) )  // Cast to avoid dumb warning
-	{
-		TQPixmap* p = (*pix)[ client->isActive() ? Active : InActive ];
-		return( TQSize(p->width(), titleBarHeight) );
-	} else
-		return( TQSize(0, 0) );
-}
-
-
-void IceWMButton::usePixmap( TQPixmap* (*p)[2] )
-{
-	if (validPixmaps( *p )) {
-		pix = p;
-		setFixedSize( (*pix)[Active]->width(), titleBarHeight );
-		tqrepaint( false );
-	} else
-		pix = NULL;
-}
-
-
-void IceWMButton::drawButton(TQPainter *pnt)
-{
-	if ( pix && validPixmaps(*pix) )
-	{
-		TQPixmap* p = (*pix)[ client->isActive() ? Active : InActive ];
-
-		if( p && (!p->isNull()) )
-		{
-			int width = p->width();
-
-			// Only draw the lower pixmap 1/2 for down, and upper 1/2 for up state
-			if( isDown() || isOn() )
-				pnt->drawPixmap(0, 0, *p, 0, titleBarHeight, width, titleBarHeight);
-			else
-				pnt->drawPixmap(0, 0, *p, 0, 0, width, titleBarHeight);
-		}
-	} else
-		qWarning("twin-icewm: Can't paint a null pixmap button");
-}
-
-
-void IceWMButton::turnOn( bool isOn )
-{
-	if ( isToggleButton() )
-		setOn( isOn );
-}
-
-
-void IceWMButton::mousePressEvent( TQMouseEvent* e )
-{
-	last_button = e->button();
-	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(),
-					 (e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
-	TQButton::mousePressEvent( &me );
-}
-
-
-void IceWMButton::mouseReleaseEvent( TQMouseEvent* e )
-{
-	last_button = e->button();
-	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(),
-					 (e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
-	TQButton::mouseReleaseEvent( &me );
-}
-
-
-
-////////////////////////////////////////////////////////////////////////////////////////////
-// IceWMClient class
-////////////////////////////////////////////////////////////////////////////////////////////
-
-IceWMClient::IceWMClient( KDecorationBridge* bridge, KDecorationFactory* factory )
-    : KDecoration (bridge, factory),
-      m_closing(false)
-{
-}
-
-
-IceWMClient::~IceWMClient()
-{
-	// Free the menu pixmaps if previously allocated
-	if ( menuButtonWithIconPix[Active] )
-		delete menuButtonWithIconPix[Active];
-	if ( menuButtonWithIconPix[InActive] )
-		delete menuButtonWithIconPix[InActive];
-}
-
-
-void IceWMClient::init()
-{
-	createMainWidget( WNoAutoErase | WStaticContents );
-	widget()->installEventFilter( this );
-
-	// Set button pointers to null so we can track things
-	for(int i= IceWMClient::BtnSysMenu; i < IceWMClient::BtnCount; i++)
-		button[i] = NULL;
-
-	// Make sure we can track the menu pixmaps too.
-	menuButtonWithIconPix[Active] = NULL;
-	menuButtonWithIconPix[InActive] = NULL;
-
-	// No flicker thanks
-	widget()->setBackgroundMode( NoBackground );
-
-	// Pack the windowWrapper() window within a grid tqlayout
-	grid = new TQGridLayout(widget(), 0, 0, 0);
-	grid->setResizeMode(TQLayout::FreeResize);
-	grid->addRowSpacing(0, borderSizeY);	// Top grab bar
-
-	// Do something IceWM can't do :)
-	if (titleBarOnTop) {
-        	if( isPreview())
-			grid->addWidget( new TQLabel( i18n( "<center><b>IceWM preview</b></center>" ), widget() ), 2, 1);
-                else
-			grid->addItem( new TQSpacerItem( 0, 0 ), 2, 1);
-		// no shade flicker
-    	grid->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed,									   TQSizePolicy::Expanding ) );
-    }
-	else {
-		// no shade flicker
-    	grid->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed,									   TQSizePolicy::Expanding ) );
-        	if( isPreview())
-			grid->addWidget( new TQLabel( i18n( "<center><b>IceWM preview</b></center>" ), widget() ), 1, 1);
-                else
-			grid->addItem( new TQSpacerItem( 0, 0 ), 1, 1);
-    }
-
-	grid->setRowStretch(1, 10);
-	grid->setRowStretch(2, 10);
-	grid->setColStretch(1, 10);
-	grid->addRowSpacing(3, borderSizeY);
-	grid->addColSpacing(0, borderSizeX);
-	grid->addColSpacing(2, borderSizeX);
-
-	// Pack the titlebar with spacers and buttons
-	hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-	hb->setResizeMode( TQLayout::FreeResize );
-
-	titleSpacerJ = addPixmapSpacer( titleJ );
-
-	addClientButtons( *titleButtonsLeft );
-	titleSpacerL = addPixmapSpacer( titleL );
-
-	// Centre titlebar if required.
-	TQSizePolicy::SizeType spTitleBar;
-	spTitleBar = titleBarCentered ? TQSizePolicy::Expanding : TQSizePolicy::Maximum;
-	titleSpacerS = addPixmapSpacer( titleS, spTitleBar, 1 );
-	titleSpacerP = addPixmapSpacer( titleP );
-
-	titlebar = new TQSpacerItem( titleTextWidth(caption()), titleBarHeight,
-								TQSizePolicy::Preferred, TQSizePolicy::Fixed );
-	hb->addItem(titlebar);
-
-	titleSpacerM = addPixmapSpacer( titleM );
-	titleSpacerB = addPixmapSpacer( titleB, TQSizePolicy::Expanding, 1 );
-	titleSpacerR = addPixmapSpacer( titleR );
-
-	addClientButtons( *titleButtonsRight );
-
-	titleSpacerQ = addPixmapSpacer( titleQ );
-
-	if (titleBarOnTop)
-		grid->addLayout ( hb, 1, 1 );
-	else
-		grid->addLayout ( hb, 2, 1 );
-}
-
-
-// Adds the buttons to the hbox tqlayout as per the buttons specified
-// in the button string 's'
-void IceWMClient::addClientButtons( const TQString& s )
-{
-	if (!s.isEmpty())
-		for(unsigned int i = 0; i < s.length(); i++)
-		{
-			switch ( s[i].latin1() )
-			{
-				case 's':
-					// Create the menu icons, and render with the current mini-icon
-					// if explicitly requested by the theme.
-					if ( (validPixmaps(menuButtonPix) || showMenuButtonIcon) && !button[BtnSysMenu])
-					{
-						if (showMenuButtonIcon) {
-							renderMenuIcons();
-							button[BtnSysMenu] = new IceWMButton(this, "menu",
-								&menuButtonWithIconPix, false, i18n("Menu"), Qt::LeftButton|Qt::RightButton);
-						}
-						else
-							button[BtnSysMenu] = new IceWMButton(this, "menu",
-								&menuButtonPix, false, i18n("Menu"));
-
-						connect( button[BtnSysMenu], TQT_SIGNAL(pressed()),
-								 this, TQT_SLOT(menuButtonPressed()));
-						connect( button[BtnSysMenu], TQT_SIGNAL(released()),
-								 this, TQT_SLOT(menuButtonReleased()));
-						hb->addWidget( button[BtnSysMenu] );
-					}
-					break;
-
-				case 'x':
-					if ( validPixmaps(closePix) && !button[BtnClose] && isCloseable())
-					{
-						button[BtnClose] = new IceWMButton(this, "close",
-								&closePix, false, i18n("Close"));
-						hb->addWidget( button[BtnClose] );
-						connect( button[BtnClose], TQT_SIGNAL(clicked()),
-								 this, TQT_SLOT(closeWindow()));
-					}
-					break;
-
-				case 'm':
-					if ( validPixmaps(maximizePix) && !button[BtnMaximize] && isMaximizable() )
-					{
-						button[BtnMaximize] = new IceWMButton(this, "maximize",
-								&maximizePix, false, i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
-						hb->addWidget( button[BtnMaximize] );
-						connect( button[BtnMaximize], TQT_SIGNAL(clicked()),
-								 this, TQT_SLOT(slotMaximize()));
-					}
-					break;
-
-				case 'i':
-					if ( validPixmaps(minimizePix) && !button[BtnMinimize] &&
-						 isMinimizable() )
-					{
-						button[BtnMinimize] = new IceWMButton(this, "minimize",
-								&minimizePix, false, i18n("Minimize"));
-						hb->addWidget( button[BtnMinimize] );
-						connect( button[BtnMinimize], TQT_SIGNAL(clicked()),
-								 this, TQT_SLOT(minimize()));
-					}
-					break;
-
-				/* Not yet implemented - how's hide useful anyway?
-				case 'h':
-					if ( button[BtnHide]  && !button[BtnHide] )
-						hb->addWidget( button[BtnHide] );
-					break; */
-
-				case 'r':
-					// NOTE: twin doesn't have toggleShade() in clients.h !
-				    if ( validPixmaps(rollupPix) && !button[BtnRollup] )
-				    {
-						button[BtnRollup] = new IceWMButton(this, "shade",
-							isSetShade() ? &rolldownPix : &rollupPix,
-										    false, i18n("Rollup"));
-						hb->addWidget( button[BtnRollup] );
-						connect( button[BtnRollup], TQT_SIGNAL(clicked()),
-								 this, TQT_SLOT(toggleShade()));
-					}
-					break;
-
-				case 'd':
-					// Make depth == on all desktops
-					if ( validPixmaps(depthPix) && !button[BtnDepth] )
-					{
-						button[BtnDepth] = new IceWMButton(this, "on_all_desktops",
-								&depthPix, true, isOnAllDesktops()?i18n("Not on all desktops"):i18n("On all desktops"));
-						button[BtnDepth]->turnOn( isOnAllDesktops() );
-						hb->addWidget( button[BtnDepth] );
-						connect( button[BtnDepth], TQT_SIGNAL(clicked()),
-								 this, TQT_SLOT(toggleOnAllDesktops()));
-					}
-					break;
-			}
-		}
-}
-
-
-// Adds a pixmap to the titlebar tqlayout via the use of a nice TQSpacerItem
-TQSpacerItem* IceWMClient::addPixmapSpacer( TQPixmap* p[], TQSizePolicy::SizeType s, int hsize )
-{
-	TQSpacerItem* sp;
-
-	// Add a null spacer for zero image
-	if ( p && p[Active] )
-	{
-		int w = (hsize == -1) ? p[Active]->width(): hsize;
-		sp = new TQSpacerItem( w, titleBarHeight, s, TQSizePolicy::Fixed );
-	}
-	else
-		sp = new TQSpacerItem(0, 0, TQSizePolicy::Maximum, TQSizePolicy::Fixed );
-
-	hb->addItem( sp );
-	return sp;
-}
-
-
-void IceWMClient::renderMenuIcons()
-{
-	TQPixmap miniIcon( icon().pixmap( TQIconSet::Small, TQIconSet::Normal) );
-
-	if (!miniIcon.isNull())
-	         for(int i = 0; i < 2; i++) {
-                       if ( menuButtonWithIconPix[i] )
-                              delete menuButtonWithIconPix[i];
-
-                       // Try to be more friendly to dodgy themes - icewm assumes a square menu button
-                       // but some pixmap themes don't provide a square menu button.
-                       int w = titleBarHeight;
-                       if (validPixmaps(menuButtonPix) && menuButtonPix[i]->width() > w)
-                               w = menuButtonPix[i]->width();
-                       menuButtonWithIconPix[i] = new TQPixmap(w, 2*titleBarHeight );
-                       if (themeLook != WIN95)
-                               menuButtonWithIconPix[i] -> fill((i==0) ? *colorInActiveButton : *colorActiveButton);
-                       else
-                               menuButtonWithIconPix[i] -> fill((i==0) ? *colorInActiveTitleBar : *colorActiveTitleBar);
-                       TQPainter pnt( menuButtonWithIconPix[i] );
-
-                       if (themeLook > 0 && themeLook != WIN95 && themeLook != WARP4) {
-                               draw3DRect(pnt, *colorActiveButton, 0, 0,
-                                          w-1, titleBarHeight-1, true);
-                               draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
-                                          w-1, 2*titleBarHeight-1, false);
-                       }
-                       if (validPixmaps(menuButtonPix)) {
-                               pnt.drawPixmap(0, 0, *menuButtonPix[i]);
-                       }
-                       int offset = (titleBarHeight - miniIcon.width())/2;
-                       if (offset<0) offset = 0;
-                       // Paint the mini icon over the menu pixmap in the centre
-                       pnt.drawPixmap( offset, offset, miniIcon );
-                       pnt.drawPixmap( offset, titleBarHeight+offset, miniIcon );
-                       pnt.end();
-                }
-
-}
-
-
-void IceWMClient::slotMaximize()
-{
-	maximize(button[BtnMaximize]->last_button);
-}
-
-void IceWMClient::toggleShade()
-{
-        setShade(!isSetShade());
-}
-
-int IceWMClient::titleTextWidth( const TQString& s )
-{
-	// Obtains the actual width of the text, using the titlebar font
-	TQSize size;
-	TQFontMetrics fm( options()->font(true) );
-	size = fm.size( 0, s );
-	return size.width();
-}
-
-
-void IceWMClient::borders(int& left, int& right, int& top, int& bottom) const
-{
-	left = borderSizeX;
-	right = borderSizeX;
-	if( titleBarOnTop ) {
-		top = titleBarHeight + borderSizeY;
-		bottom = borderSizeY;
-	} else {
-		top = borderSizeY;
-		bottom = titleBarHeight + borderSizeY;
-	}
-}
-
-
-void IceWMClient::resize( const TQSize& s )
-{
-	widget()->resize( s );
-}
-
-
-TQSize IceWMClient::tqminimumSize() const
-{
-	return widget()->tqminimumSize();
-}
-
-
-// Repaint nicely upon resize to minimise flicker.
-void IceWMClient::resizeEvent( TQResizeEvent* e )
-{
-	calcHiddenButtons();
-
-	if (widget()->isVisibleToTLW())
-	{
-		 widget()->update(widget()->rect());
-		int dx = 0;
-		int dy = 0;
-
-		if ( e->oldSize().width() != widget()->width() )
-			dx = 32 + TQABS( e->oldSize().width() -  width() );
-
-		if ( e->oldSize().height() != height() )
-			dy = 8 + TQABS( e->oldSize().height() -  height() );
-
-		if ( dy )
-			widget()->update( 0, height() - dy + 1, width(), dy );
-
-		if ( dx )
-		{
-			widget()->update( width() - dx + 1, 0, dx, height() );
-			widget()->update( TQRect( TQPoint(4,4), titlebar->tqgeometry().bottomLeft() - TQPoint(1,0) ) );
-			widget()->update( TQRect( titlebar->tqgeometry().topRight(), TQPoint( width() - 4, titlebar->tqgeometry().bottom() ) ) );
-			widget()->tqrepaint(titlebar->tqgeometry(), false);
-		}
-	}
-}
-
-
-// IceWM Paint magic goes here.
-void IceWMClient::paintEvent( TQPaintEvent* )
-{
-	TQColor colorTitleShadow;
-	TQColor colorTitle;
-	TQColor c1;
-	int rx, rw;
-
-	TQPainter p( widget() );
-	int act = isActive() ? Active: InActive;
-
-	// Determine titlebar shadow colors
-	bool useShadow = isActive() ? useActiveShadow : useInActiveShadow;
-	if ( useShadow )
-		colorTitleShadow = isActive() ? *colorActiveTitleTextShadow : *colorInActiveTitleTextShadow;
-
-	if ( themeTitleTextColors )
- 		colorTitle = isActive()? *colorActiveTitleBarText : *colorInActiveTitleBarText;
-	else
-		colorTitle = options()->color(ColorFont, isActive());
-
-	// Obtain widget bounds.
-	TQRect r;
-	r = widget()->rect();
-	int fillWidth  = r.width()  - 2*borderSizeX;
-	int y = r.y();
-	int x = r.x();
-	int w = r.width();
-	int h = r.height();
-
-	// Do we have pixmaps for the frame?
-	if (validframe)
-	{
-		// Top corner
-		p.drawPixmap(0, 0, *frameTL[ act ], 0, 0, cornerSizeX, borderSizeY);
-		p.drawPixmap(0, 0, *frameTL[ act ], 0, 0, borderSizeX, cornerSizeY);
-
-		// Top right corner
-		p.drawPixmap(w-cornerSizeX, 0, *frameTR[ act ],
-					 frameTR[act]->width()-cornerSizeX, 0, cornerSizeX, borderSizeY);
-		p.drawPixmap(w-borderSizeX, 0, *frameTR[ act ],
-					 frameTR[act]->width()-borderSizeX, 0, borderSizeX, cornerSizeY);
-
-		// Top bar
-		p.drawTiledPixmap( cornerSizeX, 0, w-(2*cornerSizeX), borderSizeY, *frameT[ act ] );
-
-		// Left bar
-		p.drawTiledPixmap( 0, cornerSizeY, borderSizeX, h-(2*cornerSizeY), *frameL[ act ] );
-
-		// Right bar
-		p.drawTiledPixmap( w-borderSizeX, cornerSizeY, borderSizeX, h-(2*cornerSizeY),
-						   *frameR[ act ],frameR[act]->width()-borderSizeX );
-
-		// Bottom left corner
-		p.drawPixmap(0, h-borderSizeY, *frameBL[ act ],
-					 0, frameBL[act]->height()-borderSizeY, cornerSizeX, borderSizeY);
-		p.drawPixmap(0, h-cornerSizeY, *frameBL[ act ],
-					 0, frameBL[act]->height()-cornerSizeY, borderSizeX, cornerSizeY);
-
-		// Bottom right corner
-		p.drawPixmap(w-cornerSizeX, h-borderSizeY, *frameBR[ act ],
-					 frameBR[act]->width()-cornerSizeX, frameBR[act]->height()-borderSizeY,
-					 cornerSizeX, borderSizeY);
-
-		p.drawPixmap(w-borderSizeX, h-cornerSizeY, *frameBR[ act ],
-					 frameBR[act]->width()-borderSizeX, frameBR[act]->height()-cornerSizeY,
-					 borderSizeX, cornerSizeY);
-
-		// Bottom bar
-		p.drawTiledPixmap(cornerSizeX, h-borderSizeY, w-(2*cornerSizeX), borderSizeY,
-						  *frameB[ act ], 0, frameB[ act ]->height()-borderSizeY );
-
-		// Ensure uncovered areas during shading are painted with something
-		p.setPen( *colorInActiveBorder );
-		if (titleBarOnTop)
-	        p.drawLine( x+borderSizeX, y+h-borderSizeY-1,
-						x+w-borderSizeX-1, y+h-borderSizeY-1);
-		else
-	        p.drawLine( x+borderSizeX, y+borderSizeY,
-						x+w-borderSizeX-1, y+borderSizeY);
-
-	} else
-	{
-		// Draw a stock IceWM frame instead of a pixmap frame
-		c1 = isActive() ? *colorActiveBorder : *colorInActiveBorder;
-
-		if (themeLook == WARP3 || themeLook == MOTIF) {
-			draw3DRect(p, c1, x, y, w-1, h-1, true);
-			p.setPen(c1);
-			p.drawRect(x+1, y+1, w-2, h-2);
-		} else {
-			p.setPen( c1.light(135) );
-			p.drawLine(0, 0, w-2, 0);
-			p.drawLine(0, 0, 0, h-2);
-
-			p.setPen(c1);
-			p.drawLine(1, 1, w-3, 1);
-			p.drawLine(1, 1, 1, h-3);
-
-			p.setPen( c1.dark(140) );
-			p.drawLine(1, h-2, w-2, h-2);
-			p.drawLine(w-2, 1, w-2, h-2);
-
-			p.setPen( TQt::black );
-			p.drawLine(w-1, 0, w-1, h-1);
-			p.drawLine(0, h-1, w-1, h-1);
-		}
-
-
-		// Fill frame border if required
-		if (borderSizeX > 2)
-		{
-			// FillQt::Vertical sizes
-			p.fillRect( x+2, y+2, borderSizeX-2, h-4, c1);
-			p.fillRect( w-borderSizeX, y+2, borderSizeX-2, h-4, c1);
-		}
-
-		if (borderSizeY > 2)
-		{
-			// Fill horizontal frame parts
-			p.fillRect( x+borderSizeX, y+2, fillWidth, borderSizeY-2, c1);
-			p.fillRect( x+borderSizeX, h-borderSizeY, fillWidth, borderSizeY-2, c1);
-		}
-
-		if (themeLook == WARP3 || themeLook == MOTIF) {
-			draw3DRect(p, c1, x+borderSizeX-1, y+borderSizeY-1,
-				    w+1-2*borderSizeX, h+1-2*borderSizeY, false);
-		}
-		if (themeLook == MOTIF && !isShade()) {
-			int xext = titleBarHeight + borderSizeX - 1;
-			int yext = titleBarHeight + borderSizeY - 1;
-
-			int xext2 = w-xext-2;
-			int yext2 = h-yext-2;
-
-			int bX = w - borderSizeX-1;
-			int bY = h - borderSizeY-1;
-
-			p.setPen( c1.dark(140) );
-			p.drawLine(xext, 0, xext, borderSizeY);
-			p.drawLine(xext2, 0, xext2, borderSizeY);
-			p.drawLine(xext, bY, xext, h-1);
-			p.drawLine(xext2, bY, xext2, h-1);
-
-			p.drawLine(0, yext, borderSizeX, yext);
-			p.drawLine(0, yext2, borderSizeX, yext2);
-			p.drawLine(bX, yext, w-1, yext);
-			p.drawLine(bX, yext2, w-1, yext2);
-
-			p.setPen( c1.light(135) );
-
-			++xext; ++yext; ++xext2; ++yext2;
-
-			p.drawLine(xext, 0, xext, borderSizeY);
-			p.drawLine(xext2, 0, xext2, borderSizeY);
-			p.drawLine(xext, bY, xext, h-1);
-			p.drawLine(xext2, bY, xext2, h-1);
-
-			p.drawLine(0, yext, borderSizeX, yext);
-			p.drawLine(0, yext2, borderSizeX, yext2);
-			p.drawLine(bX, yext, w-1, yext);
-			p.drawLine(bX, yext2, w-1, yext2);
-
-
-		}
-
-		// Ensure uncovered areas during shading are painted with something
-		p.setPen( *colorInActiveBorder );
-		if (titleBarOnTop)
-	        p.drawLine( x+borderSizeX, y+h-borderSizeY-1,
-						x+w-borderSizeX-1, y+h-borderSizeY-1);
-		else
-	        p.drawLine( x+borderSizeX, y+borderSizeY,
-						x+w-borderSizeX-1, y+borderSizeY);
-	}
-
-	// Draw the title elements, if we need to draw a titlebar.
-	if (titleBarHeight > 0)
-	{
-		TQPixmap* titleBuffer = new TQPixmap( width()-(2*borderSizeX), titleBarHeight );
-		TQPainter p2( titleBuffer, this );
-		titleBuffer->fill( act ? *colorActiveTitleBar : *colorInActiveTitleBar );
-
-		r = titleSpacerJ->tqgeometry();
-		if (!r.isEmpty() && titleJ[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleJ[ act ]);
-
-		r = titleSpacerL->tqgeometry();
-		if (!r.isEmpty() && titleL[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleL[ act ]);
-
-		r = titleSpacerS->tqgeometry();
-		if (!r.isEmpty() && titleS[ act ])
-			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleS[ act ]);
-
-		r = titleSpacerP->tqgeometry();
-		if (!r.isEmpty() && titleP[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleP[ act ]);
-
-		r = titlebar->tqgeometry();
-		if (!r.isEmpty() && titleT[ act ] )
-			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleT[ act ]);
-
-		r = titleSpacerM->tqgeometry();
-		if (!r.isEmpty() && titleM[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleM[ act ], 0, 0, r.width(), r.height());
-
-		r = titleSpacerB->tqgeometry();
-		if (!r.isEmpty() && titleB[ act ])
-			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleB[ act ]);
-
-		r = titleSpacerR->tqgeometry();
-		if (!r.isEmpty() && titleR[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleR[ act ], 0, 0, r.width(), r.height());
-
-		r = titleSpacerQ->tqgeometry();
-		if (!r.isEmpty() && titleQ[ act ])
-			p2.drawPixmap( r.x()-borderSizeX, 0, *titleQ[ act ], 0, 0, r.width(), r.height());
-
-		p2.setFont( options()->font(true) );
-
-		// Pre-compute as much as possible
-		r = titlebar->tqgeometry();
-		rx = r.x() - borderSizeX;
-		rw = width()-(2*borderSizeX)-r.x();
-
-		// Paint a title text shadow if requested
-		if ( useShadow )
-		{
-			p2.setPen( colorTitleShadow );
-			p2.drawText(rx+1, 1, rw, titleBarHeight, AlignLeft|AlignVCenter, caption());
-		}
-
-		// Draw the title text
-		p2.setPen( colorTitle );
-		p2.drawText(rx, 0, rw, titleBarHeight, AlignLeft|AlignVCenter, caption());
-		p2.end();
-
-		bitBlt( widget(), borderSizeX, hb->tqgeometry().y(), titleBuffer );
-
-		delete titleBuffer;
-	}
-}
-
-
-void IceWMClient::showEvent(TQShowEvent *ev)
-{
-	calcHiddenButtons();
-
-	titlebar->changeSize( titleTextWidth(caption()), titleBarHeight,
-						  TQSizePolicy::Preferred, TQSizePolicy::Fixed );
-	grid->activate();
-	widget()->show();
-	IceWMClient::showEvent(ev);
-}
-
-
-void IceWMClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-	if( e->button() != Qt::LeftButton )
-		return;
-
-	TQRect r;
-	if (titleBarOnTop)
-		r.setRect( borderSizeX, borderSizeY, width()-(2*borderSizeX), titleBarHeight);
-	else
-		r.setRect( borderSizeX, height()-borderSizeY-titleBarHeight,
-				   width()-(2*borderSizeX), titleBarHeight);
-
-	if (r.contains( e->pos() ) )
-		titlebarDblClickOperation();
-
-}
-
-
-void IceWMClient::wheelEvent(TQWheelEvent *e)
-{
-	if (isSetShade() || TQRect( 0, 0, width(), titleBarHeight ).contains( e->pos() ) )
-		titlebarMouseWheelOperation( e->delta());
-}
-
-
-// Called via Client class when the miniIcon() changes
-void IceWMClient::iconChange()
-{
-	if (validPixmaps(menuButtonPix) && showMenuButtonIcon)
-	{
-		if (button[BtnSysMenu])
-		{
-			renderMenuIcons();
-			button[BtnSysMenu]->usePixmap( &menuButtonWithIconPix );
-			if (button[BtnSysMenu]->isVisible())
-				button[BtnSysMenu]->tqrepaint(false);
-		}
-	}
-}
-
-
-void IceWMClient::desktopChange()
-{
-	if (button[BtnDepth])
-	{
-		button[BtnDepth]->turnOn( isOnAllDesktops() );
-		button[BtnDepth]->tqrepaint(false);
-		button[BtnDepth]->setTipText(isOnAllDesktops() ? i18n("Not on all desktops") : i18n("On all desktops"));
-	}
-}
-
-
-// Please don't modify the following unless you want tqlayout problems
-void IceWMClient::captionChange()
-{
-	TQRect r( 0, borderSizeY, geometry().width(), titleBarHeight);
-
-	titlebar->changeSize( titleTextWidth( caption() ), titleBarHeight,
-						  TQSizePolicy::Preferred, TQSizePolicy::Fixed );
-	titlebar->invalidate();
-    grid->activate();
-    widget()->tqrepaint( r, false );
-}
-
-
-void IceWMClient::maximizeChange()
-{
-	// Change the button pixmap to restore if required
-	if (button[BtnMaximize] && validPixmaps(restorePix))
-	{
-		button[BtnMaximize]->usePixmap( (maximizeMode()==MaximizeFull) ? &restorePix : &maximizePix );
-		button[BtnMaximize]->setTipText( (maximizeMode()==MaximizeFull) ? i18n("Restore") : i18n("Maximize"));
-	}
-}
-
-
-void IceWMClient::shadeChange()
-{
-	// Change the button pixmap to rolldown if required
-	if (button[BtnRollup] && validPixmaps(rolldownPix))
-	{
-		button[BtnRollup]->usePixmap( isSetShade() ? &rolldownPix : &rollupPix );
-		button[BtnRollup]->setTipText( isSetShade() ? i18n("Rolldown") : i18n("Rollup"));
-	}
-
-}
-
-
-void IceWMClient::activeChange()
-{
-	widget()->tqrepaint(false);
-
-    // Reset the button pixmaps.
-	for(int i= IceWMClient::BtnSysMenu; i < IceWMClient::BtnCount; i++)
-		if(button[i])
-			button[i]->tqrepaint( false );
-}
-
-
-// This does the showing / hiding button magic
-// for variable positioned buttons.
-void IceWMClient::calcHiddenButtons()
-{
-	const int minwidth = 220; // Minimum width where all buttons are shown
-	const int btn_width = 20; // Average width
-
-	// Show/Hide buttons in this order - OnAllDesktops, Maximize, Menu, Rollup, Minimize, Close.
-	IceWMButton* btnArray[] = { button[BtnDepth], button[BtnMaximize], button[BtnSysMenu],
-								button[BtnRollup], button[BtnMinimize], button[BtnClose] };
-
-	int current_width = width();
-	int count = 0;
-	int i;
-
-	// Find out how many buttons we have to hide.
-	while (current_width < minwidth)
-	{
-		current_width += btn_width;
-		count++;
-	}
-
-	// Bound the number of buttons to hide
-	if (count > 6) count = 6;
-
-	// Hide the required buttons...
-	for(i = 0; i < count; i++)
-	{
-		if (btnArray[i] && btnArray[i]->isVisible() )
-			btnArray[i]->hide();
-	}
-
-	// Show the rest of the buttons...
-	for(i = count; i < 6; i++)
-	{
-		if (btnArray[i] && (!btnArray[i]->isVisible()) )
-			btnArray[i]->show();
-	}
-}
-
-
-// Mouse position code modified from that in workspace.cpp
-IceWMClient::Position IceWMClient::mousePosition( const TQPoint& p ) const
-{
-    int rangeX = cornerSizeX;
-    int rangeY = cornerSizeY;
-    int borderX = borderSizeX;
-    int borderY = borderSizeY;
-
-    Position m = PositionCenter;
-
-    if ((p.x()  > borderX && p.x() < width()  - borderX) &&
-	    ( p.y() > borderY && p.y() < height() - borderY))
-	return PositionCenter;
-
-    if ( p.y() <= rangeY && p.x() <= rangeX)
-		m = PositionTopLeft;
-    else if ( p.y() >= height()-rangeY && p.x() >= width()-rangeX)
-		m = PositionBottomRight;
-    else if ( p.y() >= height()-rangeX && p.x() <= rangeX)
-		m = PositionBottomLeft;
-    else if ( p.y() <= rangeY && p.x() >= width()-rangeX)
-		m = PositionTopRight;
-    else if ( p.y() <= borderY )
-		m = PositionTop;
-    else if ( p.y() >= height()-borderY )
-		m = PositionBottom;
-    else if ( p.x() <= borderX )
-		m = PositionLeft;
-    else if ( p.x() >= width()-borderX )
-    	m = PositionRight;
-    else
-		m = PositionCenter;
-	return m;
-}
-
-
-void IceWMClient::menuButtonPressed()
-{
-	static TQTime t;
-	static IceWMClient* lastClient = NULL;
-	bool dbl = ( lastClient == this && t.elapsed() <= TQApplication::doubleClickInterval());
-	lastClient = this;
-	t.start();
-
-	if (dbl)
-	{
-		m_closing = true;
-		return;
-    }
-
-	TQPoint menuPoint ( button[BtnSysMenu]->rect().bottomLeft() );
-
-	// Move to right if menu on rhs, otherwise on left
-	// and make this depend on windowWrapper(), not button.
-
-        KDecorationFactory* f = factory();
-	showWindowMenu( button[BtnSysMenu]->mapToGlobal(menuPoint) );
-        if( !f->exists( this )) // 'this' was deleted
-            return;
-	button[BtnSysMenu]->setDown(false);
-}
-
-void IceWMClient::menuButtonReleased()
-{
-	if (m_closing)
-		closeWindow();
-}
-
-bool IceWMClient::eventFilter( TQObject* o, TQEvent* e )
-{
-	if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
-	return false;
-	switch( e->type())
-	{
-	case TQEvent::Resize:
-		resizeEvent(TQT_TQRESIZEEVENT( e ) );
-		return true;
-	case TQEvent::Paint:
-		paintEvent(TQT_TQPAINTEVENT( e ) );
-		return true;
-	case TQEvent::MouseButtonDblClick:
-		mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ) );
-		return true;
-	case TQEvent::MouseButtonPress:
-		processMousePressEvent(TQT_TQMOUSEEVENT( e ) );
-		return true;
-	case TQEvent::Wheel:
-		wheelEvent( TQT_TQWHEELEVENT( e ));
-		return true;
-	default:
-		break;
-	}
-	return false;
-}
-
-}
-
-extern "C"
-{
-	KDE_EXPORT KDecorationFactory *create_factory()
-	{
-		IceWM::clientHandler = new IceWM::ThemeHandler;
-		return IceWM::clientHandler;
-	}
-}
-
-
-#include "icewm.moc"
-
-// vim: ts=4
diff --git a/kwin-styles/icewm/icewm.desktop b/kwin-styles/icewm/icewm.desktop
deleted file mode 100644
index eeffdcc0..00000000
--- a/kwin-styles/icewm/icewm.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Name=IceWM
-Name[cy]=RhewWM
-Name[hi]=आइस-डबल्यूएम
-Name[sv]=Ice-fönsterhanterare
-Name[ta]=பனிக்கட்டிWM
-Name[th]=ตัวจัดการหน้าต่าง IceWM
-Name[vi]=Nước đá WM
-Name[xh]=UmkhenkceWM
-Name[zu]=Iqhwa leWM
-X-KDE-Library=twin3_icewm
diff --git a/kwin-styles/icewm/icewm.h b/kwin-styles/icewm/icewm.h
deleted file mode 100644
index f343912c..00000000
--- a/kwin-styles/icewm/icewm.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-  $Id$
-
-  Gallium-IceWM themeable KWin client
-
-  Copyright 2001
-	Karol Szwed <gallium@kde.org>
-	http://gallium.n3.net/
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  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.
-
-  -----------------------------------------------------------------------------
-  This client loads most icewm 1.0.X pixmap themes, without taking into account
-  specific font settings for clients, or coloured mouse cursors. Titlebar
-  fonts can be changed via the kde control center. Bi-colour mouse cursors
-  may be added in future if requested by users, as well as theme font support.
-  Any styles using inbuilt icewm titlebar drawing without using pixmaps (e.g.
-  Warp4, win95 etc.) are not fully supported, and may cause drawing errors,
-  as these themes use in-built icewm drawing mechanisms.
-
-  When a pixmap theme is not present (or a corrupt one is present) then very
-  plain title decorations are painted instead, so that users don't see
-  non-painted window areas where possible ;)
-
-  At a later date, frame shaping may be added if really requested, and an
-  update to support the latest icewm 1.1.X theme format may be made.
-*/
-
-#ifndef __KDEGALLIUM_ICEWM_H
-#define __KDEGALLIUM_ICEWM_H
-
-#include <tqbutton.h>
-#include <tqlayout.h>
-#include <kpixmap.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-#include <tqbutton.h>
-class TQLabel;
-class TQSpacerItem;
-class TQBoxLayout;
-class TQGridLayout;
-
-namespace IceWM {
-
-class IceWMClient;
-
-// Pixmap group
-enum { InActive=0, Active };
-// Pixmap stretching mode
-enum { Vertical=0, Horizontal=1 };
-
-
-// Handles the resetClients() signal from the Options class,
-// and manages the dynamic pixmaps, configuration and theme changing
-class ThemeHandler: public KDecorationFactory
-{
-	public:
-		ThemeHandler();
-		~ThemeHandler();
-
-		virtual KDecoration* createDecoration( KDecorationBridge* );
-		virtual bool reset( unsigned long changed );
-		virtual bool supports( Ability ability );
-
-	private:
-		bool initialized;
-		TQString themeName;
-
-		void readConfig();
-		TQColor decodeColor( TQString& s );
-		bool isFrameValid();
-		void initTheme();
-		void freePixmaps();
-		void freePixmapGroup( TQPixmap* p[] );
-		void setPixmap( TQPixmap* p[], TQString s1, TQString s2, bool
-						stretch=false, bool stretchHoriz=true );
-		void setPixmapButton( TQPixmap* p[], TQString s1, TQString s2);
-		TQPixmap* stretchPixmap( TQPixmap* src, bool stretchHoriz=true,
-								int stretchSize=-1);
-		TQPixmap* duplicateValidPixmap( bool act, int size = -1 );
-		void convertButtons( TQString& s );
-		TQString reverseString( TQString s );
-};
-
-
-class IceWMButton : public TQButton
-{
-	public:
-		IceWMButton( IceWMClient *parent=0, const char *name=0,
-					 TQPixmap* (*p)[2]=0L, bool isToggle=false,
-					 const TQString& tip=NULL, const int realizeBtns = Qt::LeftButton );
-		void setTipText(const TQString &tip);
-		void  usePixmap( TQPixmap* (*p)[2] );
-		TQSize tqsizeHint() const;
-		void  turnOn( bool isOn );
-		ButtonState   last_button;
-
-	protected:
-		void mousePressEvent( TQMouseEvent* e );
-		void mouseReleaseEvent( TQMouseEvent* e );
-
-		void drawButton( TQPainter *p );
-		void drawButtonLabel( TQPainter * ) {;}
-
-	private:
-		int m_realizeButtons;
-		IceWMClient* client;
-		TQPixmap* (*pix)[2]; // Points to active/inactive pixmap array
-};
-
-
-class IceWMClient : public KDecoration
-{
-    Q_OBJECT
-  TQ_OBJECT
-	public:
-	    IceWMClient( KDecorationBridge* bridge, KDecorationFactory* factory );
-	    ~IceWMClient();
-
-		virtual void init();
-		virtual void resize(const TQSize&);
-		virtual bool eventFilter( TQObject* o, TQEvent* e );
-
-	protected:
-	    void resizeEvent( TQResizeEvent* );
-	    void paintEvent( TQPaintEvent* );
-	    void showEvent( TQShowEvent* );
-	    void mouseDoubleClickEvent( TQMouseEvent * );
-	    void wheelEvent( TQWheelEvent * );
-	    virtual void captionChange();
-	    virtual void maximizeChange();
-	    virtual void shadeChange();
-	    virtual void activeChange();
-	//	void shadeChange(bool);     /* KWin Client class doesn't provide this yet */
-	    Position mousePosition( const TQPoint& ) const;
-		void renderMenuIcons();
-		void iconChange();
-		virtual void desktopChange( );
-		virtual void borders(int&, int&, int&, int&) const;
-		virtual TQSize tqminimumSize() const;
-
-	protected slots:
-	    void slotMaximize();
-	    void menuButtonPressed();
-	    void menuButtonReleased();
-	    void toggleShade();
-
-	private:
-	    // These are all the icewm button types :)
-	    enum Buttons{ BtnSysMenu=0, BtnClose, BtnMaximize, BtnMinimize,
-					  BtnHide, BtnRollup, BtnDepth, BtnCount };
-
-		TQString shortenCaption( const TQString* s );
-		void calcHiddenButtons();
-	    int  titleTextWidth( const TQString& s );
-		void addClientButtons( const TQString& s );
-		TQSpacerItem* addPixmapSpacer( TQPixmap* p[],
-			TQSizePolicy::SizeType = TQSizePolicy::Maximum, int hsize = -1 );
-
-	    IceWMButton* button[ IceWMClient::BtnCount ];
-	    TQPixmap*     menuButtonWithIconPix[2];
-	    TQSpacerItem* titleSpacerJ;
-	    TQSpacerItem* titleSpacerL;
-	    TQSpacerItem* titleSpacerS;
-	    TQSpacerItem* titleSpacerP;
-	    TQSpacerItem* titlebar;
-	    TQSpacerItem* titleSpacerM;
-	    TQSpacerItem* titleSpacerB;
-    	TQSpacerItem* titleSpacerR;
-	    TQSpacerItem* titleSpacerQ;
-	    TQBoxLayout*  hb;
-	    TQGridLayout* grid;
-	    bool m_closing;
-};
-
-}
-
-#endif
-
-// vim: ts=4
diff --git a/kwin-styles/kde1/CMakeLists.txt b/kwin-styles/kde1/CMakeLists.txt
deleted file mode 100644
index 2cbae1eb..00000000
--- a/kwin-styles/kde1/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES kde1.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_cde ##################################
-
-tde_add_kpart( twin3_kde1 AUTOMOC
-  SOURCES kde1client.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/kde1/Makefile.am b/kwin-styles/kde1/Makefile.am
deleted file mode 100644
index 131b71a4..00000000
--- a/kwin-styles/kde1/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-
-INCLUDES = $(all_includes) 
-
-kde_module_LTLIBRARIES = twin3_kde1.la
-
-twin3_kde1_la_SOURCES = kde1client.cpp
-twin3_kde1_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_kde1_la_LIBADD  = -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = kde1client.h
-
-lnkdir = $(kde_datadir)/twin/
-lnk_DATA = kde1.desktop
-EXTRA_DIST = $(lnk_DATA)
-
diff --git a/kwin-styles/kde1/kde1.desktop b/kwin-styles/kde1/kde1.desktop
deleted file mode 100644
index e0a1ffad..00000000
--- a/kwin-styles/kde1/kde1.desktop
+++ /dev/null
@@ -1,7 +0,0 @@
-[Desktop Entry]
-Name=KDE 1
-Name[fa]=KDE ۱
-Name[hi]=केडीई 1
-Name[ne]=केडीई १
-Name[th]=โปรแกรมจัดการหน้าต่าง KDE 1
-X-KDE-Library=twin3_kde1
diff --git a/kwin-styles/kde1/kde1client.cpp b/kwin-styles/kde1/kde1client.cpp
deleted file mode 100644
index c6a7db98..00000000
--- a/kwin-styles/kde1/kde1client.cpp
+++ /dev/null
@@ -1,809 +0,0 @@
-/*****************************************************************
-twin - the KDE window manager
-								
-Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
-******************************************************************/
-#include "kde1client.h"
-#include <tqcursor.h>
-#include <tqlayout.h>
-#include <tqtoolbutton.h>
-#include <tqlabel.h>
-#include <tqdrawutil.h>
-#include <tqbitmap.h>
-#include <kdrawutil.h>
-#include <klocale.h>
-#include <kpixmap.h>
-#include <tqdatetime.h>
-#include <tqimage.h>
-#include <tqtooltip.h>
-
-#include "kde1client_bitmaps.h"
-
-// Default button tqlayout
-const char default_left[]  = "MS";
-const char default_right[] = "H_IAX";
-
-namespace KDE1
-{
-
-TQPixmap* close_pix = 0;
-TQPixmap* maximize_pix = 0;
-TQPixmap* minimize_pix = 0;
-TQPixmap* normalize_pix = 0;
-TQPixmap* pinup_pix = 0;
-TQPixmap* pindown_pix = 0;
-TQPixmap* menu_pix = 0;
-TQPixmap* question_mark_pix = 0;
-
-TQPixmap* dis_close_pix = 0;
-TQPixmap* dis_maximize_pix = 0;
-TQPixmap* dis_minimize_pix = 0;
-TQPixmap* dis_normalize_pix = 0;
-TQPixmap* dis_pinup_pix = 0;
-TQPixmap* dis_pindown_pix = 0;
-TQPixmap* dis_menu_pix = 0;
-TQPixmap* dis_question_mark_pix = 0;
-
-TQPixmap* titleBuffer = 0;
-
-bool pixmaps_created = FALSE;
-
-inline const KDecorationOptions* options() { return KDecoration::options(); }
-
-void create_pixmaps()
-{
-    if ( pixmaps_created )
-        return;
-    pixmaps_created = true;
-    TQColorGroup aGrp = options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, true);
-    TQColorGroup iGrp = options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, false);
-
-    TQPainter aPainter, iPainter;
-    close_pix = new TQPixmap(16, 16);
-    dis_close_pix = new TQPixmap(16, 16);
-    aPainter.begin(close_pix); iPainter.begin(dis_close_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, close_white_bits,
-                  NULL, NULL, close_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, close_white_bits,
-                  NULL, NULL, close_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    close_pix->setMask(TQBitmap(16, 16, close_mask_bits, true));
-    dis_close_pix->setMask(*close_pix->mask());
-
-    minimize_pix = new TQPixmap(16, 16);
-    dis_minimize_pix = new TQPixmap(16, 16);
-    aPainter.begin(minimize_pix); iPainter.begin(dis_minimize_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, iconify_white_bits,
-                  NULL, NULL, iconify_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, iconify_white_bits,
-                  NULL, NULL, iconify_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    minimize_pix->setMask(TQBitmap(16, 16, iconify_mask_bits, true));
-    dis_minimize_pix->setMask(*minimize_pix->mask());
-
-    maximize_pix = new TQPixmap(16, 16);
-    dis_maximize_pix = new TQPixmap(16, 16);
-    aPainter.begin(maximize_pix); iPainter.begin(dis_maximize_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, maximize_white_bits,
-                  NULL, NULL, maximize_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, maximize_white_bits,
-                  NULL, NULL, maximize_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    maximize_pix->setMask(TQBitmap(16, 16, maximize_mask_bits, true));
-    dis_maximize_pix->setMask(*maximize_pix->mask());
-
-    normalize_pix = new TQPixmap(16, 16);
-    dis_normalize_pix = new TQPixmap(16, 16);
-    aPainter.begin(normalize_pix); iPainter.begin(dis_normalize_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, maximizedown_white_bits,
-                  NULL, NULL, maximizedown_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, maximizedown_white_bits,
-                  NULL, NULL, maximizedown_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    normalize_pix->setMask(TQBitmap(16, 16, maximizedown_mask_bits, true));
-    dis_normalize_pix->setMask(*normalize_pix->mask());
-
-    menu_pix = new TQPixmap(16, 16);
-    dis_menu_pix = new TQPixmap(16, 16);
-    aPainter.begin(menu_pix); iPainter.begin(dis_menu_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, menu_white_bits,
-                  NULL, NULL, menu_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, menu_white_bits,
-                  NULL, NULL, menu_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    menu_pix->setMask(TQBitmap(16, 16, menu_mask_bits, true));
-    dis_menu_pix->setMask(*menu_pix->mask());
-
-    pinup_pix = new TQPixmap(16, 16);
-    dis_pinup_pix = new TQPixmap(16, 16);
-    aPainter.begin(pinup_pix); iPainter.begin(dis_pinup_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, pinup_white_bits,
-                  pinup_gray_bits, NULL, pinup_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, pinup_white_bits,
-                  pinup_gray_bits, NULL, pinup_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    pinup_pix->setMask(TQBitmap(16, 16, pinup_mask_bits, true));
-    dis_pinup_pix->setMask(*pinup_pix->mask());
-
-    pindown_pix = new TQPixmap(16, 16);
-    dis_pindown_pix = new TQPixmap(16, 16);
-    aPainter.begin(pindown_pix); iPainter.begin(dis_pindown_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, pindown_white_bits,
-                  pindown_gray_bits, NULL, pindown_dgray_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, pindown_white_bits,
-                  pindown_gray_bits, NULL, pindown_dgray_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    pindown_pix->setMask(TQBitmap(16, 16, pindown_mask_bits, true));
-    dis_pindown_pix->setMask(*pindown_pix->mask());
-
-    question_mark_pix = new TQPixmap(16, 16);
-    dis_question_mark_pix = new TQPixmap(16, 16);
-    aPainter.begin(question_mark_pix); iPainter.begin(dis_question_mark_pix);
-    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, help_light_bits,
-                  NULL, NULL, help_dark_bits, NULL, NULL);
-    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, help_light_bits,
-                  NULL, NULL, help_dark_bits, NULL, NULL);
-    aPainter.end(); iPainter.end();
-    question_mark_pix->setMask(TQBitmap(16, 16, help_mask_bits, true));
-    dis_question_mark_pix->setMask(*question_mark_pix->mask());
-
-    titleBuffer = new KPixmap;
-}
-
-void delete_pixmaps()
-{
-    delete close_pix;
-    delete maximize_pix;
-    delete minimize_pix;
-    delete normalize_pix;
-    delete pinup_pix;
-    delete pindown_pix;
-    delete menu_pix;
-    delete question_mark_pix;
-    delete dis_close_pix;
-    delete dis_maximize_pix;
-    delete dis_minimize_pix;
-    delete dis_normalize_pix;
-    delete dis_pinup_pix;
-    delete dis_pindown_pix;
-    delete dis_menu_pix;
-    delete dis_question_mark_pix;
-    delete titleBuffer;
-    pixmaps_created = false;
-}
-
-void drawGradient
-(
-  TQPainter & p,
-  const TQRect & t,
-  const TQColor & c1,
-  const TQColor & c2
-)
-{
-  // Don't draw a million vertical lines if we don't need to.
-
-  if (c1 == c2  || TQPixmap::defaultDepth() <= 8)
-  {
-    p.fillRect(t, c1);
-    return;
-  }
-
-  // rikkus: Adapted from KPixmapEffect::gradient().
-
-  int rca = c1.red();
-  int gca = c1.green();
-  int bca = c1.blue();
-
-  int rDiff = c2.red()   - rca;
-  int gDiff = c2.green() - gca;
-  int bDiff = c2.blue()  - bca;
-
-  int rl = rca << 16;
-  int gl = gca << 16;
-  int bl = bca << 16;
-
-  int rcdelta = ((1 << 16) / t.width()) * rDiff;
-  int gcdelta = ((1 << 16) / t.width()) * gDiff;
-  int bcdelta = ((1 << 16) / t.width()) * bDiff;
-
-  for (int x = 0; x < t.width(); x++)
-  {
-    rl += rcdelta;
-    gl += gcdelta;
-    bl += bcdelta;
-
-    p.setPen(TQColor(rl >> 16, gl >> 16, bl >> 16));
-
-    p.drawLine(t.x() + x, 0, t.x() + x, t.y() + t.height() - 1);
-  }
-}
-
-
-void StdClient::reset( unsigned long )
-{
-    if (button[ButtonMenu] && (icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull()))
-        button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
-    if (button[ButtonSticky])
-        button[ButtonSticky]->setIconSet(isOnAllDesktops() ? isActive() ? *pindown_pix : *dis_pindown_pix :
-                                         isActive() ? *pinup_pix : *dis_pinup_pix );
-    if (button[ButtonMinimize])
-        button[ButtonMinimize]->setIconSet(isActive() ? *minimize_pix : *dis_minimize_pix);
-    if (button[ButtonMaximize])
-        button[ButtonMaximize]->setIconSet(isActive() ? *maximize_pix : *dis_maximize_pix);
-    if (button[ButtonClose])
-        button[ButtonClose]->setIconSet(isActive() ? *close_pix : *dis_close_pix);
-    if (button[ButtonHelp])
-        button[ButtonHelp]->setIconSet(isActive() ? *question_mark_pix : *dis_question_mark_pix);
-
-    widget()->setFont(options()->font(true));
-}
-
-
-StdClient::StdClient( KDecorationBridge* b, KDecorationFactory* f )
-    : KDecoration( b, f )
-{
-}
-
-void StdClient::init()
-{
-    createMainWidget();
-    widget()->installEventFilter( this );
-
-    widget()->setFont(options()->font(isActive() ));
-
-    TQGridLayout* g = new TQGridLayout( widget(), 0, 0, 3, 2 );
-    g->setRowStretch( 1, 10 );
-    if( isPreview())
-        g->addWidget( new TQLabel( i18n( "<center><b>KDE 1 preview</b></center>" ), widget()), 1, 1 );
-    else
-        g->addItem( new TQSpacerItem( 0, 0 ), 1, 1 ); //no widget in the middle
-    g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
-
-    g->addColSpacing(0, 1);
-    g->addColSpacing(2, 1);
-    g->addRowSpacing(2, 1);
-
-    int fh = widget()->fontMetrics().lineSpacing();
-    titlebar = new TQSpacerItem(10, fh, TQSizePolicy::Expanding,
-			       TQSizePolicy::Minimum );
-
-    TQBoxLayout* hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-    g->addLayout( hb, 0, 1 );
-
-    // setup titlebar buttons
-    for (int n=0; n<ButtonTypeCount; n++) button[n] = 0;
-    addButtons(hb, options()->customButtonPositions() ? options()->titleButtonsLeft() : TQString(default_left));
-    hb->addItem(titlebar);
-    addButtons(hb, options()->customButtonPositions() ? options()->titleButtonsRight() : TQString(default_right));
-
-    for (int n=0; n<ButtonTypeCount; n++) {
-	if ( !button[n] )
-	    continue;
-	button[n]->setBackgroundMode( PaletteBackground );
-	button[n]->setMouseTracking( FALSE );
-	button[n]->setAutoRaise( TRUE );
-	button[n]->setFocusPolicy( TQ_NoFocus );
-	button[n]->setFixedSize( 20, 20 );
-    }
-
-#if 0 // not sure what this is supposed to mean (and why)
-    if ( isTransient() ) {
-	// lighter decoration for transient windows
-	button[1]->hide();
-//	button[2]->hide();
-	button[3]->hide();
-	button[4]->hide();
-    }
-#endif
-}
-
-void StdClient::addButtons(TQBoxLayout *hb, const TQString& s)
-{
-    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 TQToolButton( widget(), 0 );
-                      TQToolTip::add( button[ButtonMenu], i18n("Menu") );
-                      button[ButtonMenu]->setCursor(ArrowCursor);
-                      if( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull())
-                          button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
-                      else
-                          button[ButtonMenu]->setIconSet( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ));
-                      connect( button[0], TQT_SIGNAL( pressed() ), this, TQT_SLOT( menuButtonPressed() ) );
-                      hb->addWidget(button[ButtonMenu]);
-                  }
-                  break;
-
-              case 'S': // Sticky button
-                  if (!button[ButtonSticky]) {
-                     button[ButtonSticky] = new TQToolButton( widget(), 0 );
-                     button[ButtonSticky]->setIconSet( isOnAllDesktops()?*pindown_pix:*pinup_pix );
-                     TQToolTip::add( button[ButtonSticky], isOnAllDesktops()?i18n("Not On All Desktops"):i18n("On All Desktops")  );
-                     button[ButtonSticky]->setCursor(ArrowCursor);
-                     button[ButtonSticky]->setIconSet(isOnAllDesktops() ? isActive() ? *pindown_pix : *dis_pindown_pix :
-                                                      isActive() ? *pinup_pix : *dis_pinup_pix );
-                     connect( button[ButtonSticky], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( toggleOnAllDesktops() ) ) );
-                     hb->addWidget(button[ButtonSticky]);
-                  }
-                  break;
-
-              case 'H': // Help button
-                  if ((!button[ButtonHelp]) && providesContextHelp()) {
-                      button[ButtonHelp] = new TQToolButton( widget(), 0 );
-                      TQToolTip::add( button[ButtonHelp], i18n("Help") );
-                      button[ButtonHelp]->setIconSet( isActive() ? *question_mark_pix : *dis_question_mark_pix);
-                      connect( button[ButtonHelp], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( showContextHelp() ) ) );
-                      button[ButtonHelp]->setCursor(ArrowCursor);
-                      hb->addWidget(button[ButtonHelp]);
-                  }
-                  break;
-
-              case 'I': // Minimize button
-                  if ((!button[ButtonMinimize]) && isMinimizable())  {
-                      button[ButtonMinimize] = new TQToolButton( widget(), 0 );
-                      TQToolTip::add( button[ButtonMinimize], i18n("Minimize") );
-                      button[ButtonMinimize]->setCursor(ArrowCursor);
-                      button[ButtonMinimize]->setIconSet(isActive() ? *minimize_pix : *dis_minimize_pix);
-                      connect( button[ButtonMinimize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( minimize() ) ) );
-                      hb->addWidget(button[ButtonMinimize]);
-                  }
-                  break;
-
-              case 'A': // Maximize button
-                  if ((!button[ButtonMaximize]) && isMaximizable()) {
-                      const bool max = maximizeMode()!=MaximizeRestore;
-                      button[ButtonMaximize] = new ThreeButtonButton( widget(), 0 );
-                      TQToolTip::add( button[ButtonMaximize], max?i18n("Restore"):i18n("Maximize") );
-                      button[ButtonMaximize]->setCursor(ArrowCursor);
-                      button[ButtonMaximize]->setIconSet( max?(isActive() ? *normalize_pix : *dis_normalize_pix):(isActive() ? *maximize_pix : *dis_maximize_pix) );
-                      connect( button[ButtonMaximize], TQT_SIGNAL( clicked(ButtonState) ),
-                               this, ( TQT_SLOT( maxButtonClicked(ButtonState) ) ) );
-                      hb->addWidget(button[ButtonMaximize]);
-                  }
-                  break;
-
-              case 'X': // Close button
-                  if ((!button[ButtonClose]) && isCloseable()) {
-                      button[ButtonClose] = new TQToolButton( widget(), 0 );
-                      TQToolTip::add( button[ButtonClose], i18n("Close") );
-                      button[ButtonClose]->setCursor(ArrowCursor);
-                      button[ButtonClose]->setIconSet(isActive() ? *close_pix : *dis_close_pix);
-                      connect( button[ButtonClose], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
-                      hb->addWidget(button[ButtonClose]);
-                  }
-                  break;
-
-              case '_': // Spacer item
-	          hb->addItem( new TQSpacerItem( 5, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
-            }
-        }
-    }
-}
-
-void StdClient::activeChange()
-{
-    bool on = isActive();
-    if (button[ButtonMenu] && (icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull()))
-        button[ButtonMenu]->setIconSet(on ? *menu_pix : *dis_menu_pix);
-    if (button[ButtonSticky])
-        button[ButtonSticky]->setIconSet(isOnAllDesktops() ? on ? *pindown_pix : *dis_pindown_pix :
-                          on ? *pinup_pix : *dis_pinup_pix );
-    if (button[ButtonMinimize])
-        button[ButtonMinimize]->setIconSet(on ? *minimize_pix : *dis_minimize_pix);
-    if (button[ButtonMaximize])
-        button[ButtonMaximize]->setIconSet(on ? *maximize_pix : *dis_maximize_pix);
-    if (button[ButtonClose])
-        button[ButtonClose]->setIconSet(on ? *close_pix : *dis_close_pix);
-    if (button[ButtonHelp])
-        button[ButtonHelp]->setIconSet(on ? *question_mark_pix : *dis_question_mark_pix);
-    widget()->tqrepaint( titlebar->tqgeometry(), false );
-}
-
-
-StdClient::~StdClient()
-{
-    for (int n=0; n<ButtonTypeCount; n++) {
-        if (button[n]) delete button[n];
-    }
-}
-
-
-void StdClient::resizeEvent( TQResizeEvent* )
-{
-    TQRegion rr = widget()->rect();
-    TQRect t = titlebar->tqgeometry();
-//     t.setTop( 0 );
-//     TQRegion r = rr.subtract( TQRect( t.x()+1, 0, t.width()-2, 1 ) );
-//     setMask( r );
-
-    if ( widget()->isVisibleToTLW() && !widget()->testWFlags( WStaticContents )) {
-	// manual clearing without the titlebar (we selected WResizeNoErase )
-	TQRect cr( 2, 2, width()-4, height()- 4 );
-	widget()->erase( TQRegion( cr ).subtract( t ) );
-    }
-}
-
-/*!\reimp
- */
-void StdClient::captionChange()
-{
-    widget()->tqrepaint( titlebar->tqgeometry(), FALSE );
-}
-
-
-/*!\reimp
- */
-void StdClient::maximizeChange()
-{
-    bool m = maximizeMode() == MaximizeFull;
-    if (button[ButtonMaximize]) {
-        button[ButtonMaximize]->setIconSet( m?*normalize_pix:*maximize_pix  );
-        TQToolTip::remove( button[ButtonMaximize] );
-        TQToolTip::add( button[ButtonMaximize], m ? i18n("Restore") : i18n("Maximize") );
-    }
-}
-
-
-/*!\reimp
- */
-void StdClient::desktopChange()
-{
-    bool s = isOnAllDesktops();
-    if (button[ButtonSticky]) {
-        button[ButtonSticky]->setIconSet( s?*pindown_pix:*pinup_pix );
-        TQToolTip::remove( button[ButtonSticky] );
-        TQToolTip::add( button[ButtonSticky], s ? i18n("Not On All Desktops") : i18n("On All Desktops") );
-    }
-}
-
-void StdClient::paintEvent( TQPaintEvent* )
-{
-    TQPainter p( widget() );
-    TQRect t = titlebar->tqgeometry();
-    TQRegion r = widget()->rect();
-    r = r.subtract( t );
-    p.setClipRegion( r );
-    qDrawWinPanel( &p, widget()->rect(), widget()->tqcolorGroup() );
-//     t.setTop( 1 );
-//     p.setClipRegion( t );
-//     t.setTop( 0 );
-
-    TQRect titleRect( 0, 0, t.width(), t.height() );
-    titleBuffer->resize( titleRect.width(), titleRect.height() );
-    TQPainter p2( titleBuffer );
-
-    drawGradient(p2, titleRect, options()->color(KDecorationOptions::ColorTitleBar, isActive()),
-        options()->color(KDecorationOptions::ColorTitleBlend, isActive()));
-//     p.setPen( options()->color(KDecorationOptions::ColorTitleBar, isActive()).light() );
-//     p.drawLine(t.left(), t.top()+1,  t.right(), t.top()+1);
-    if ( isActive() )
-	qDrawShadePanel( &p2, 0, 0, titleRect.width(), titleRect.height(),
-			 widget()->tqcolorGroup(), true, 1 );
-    titleRect.setLeft( 4 );
-    titleRect.setWidth( titleRect.width() - 2 );
-    p2.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
-    p2.setFont(options()->font(isActive()));
-    p2.drawText( titleRect, AlignLeft|AlignVCenter|SingleLine, caption() );
-    p2.end();
-    p.end();
-    bitBlt( widget(), t.topLeft(), titleBuffer );
-}
-
-
-void StdClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-	titlebarDblClickOperation();
-}
-
-
-void StdClient::wheelEvent( TQWheelEvent * e )
-{
-    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-
-void StdClient::iconChange()
-{
-    if (button[ButtonMenu]) {
-        if ( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull())
-            button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
-        else
-            button[ButtonMenu]->setIconSet( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ) );
-        button[ButtonMenu]->tqrepaint( FALSE );
-    }
-}
-
-
-/*!
-  Indicates that the menu button has been clicked. One press shows
-  the window operation menu, a double click closes the window.
- */
-void StdClient::menuButtonPressed()
-{
-    TQRect menuRect = button[ButtonMenu]->rect();
-    menuRect.addCoords(-1, 0, +1, +2);
-    TQPoint menuTop = button[ButtonMenu]->mapToGlobal(menuRect.topLeft());
-    TQPoint menuBottom = button[ButtonMenu]->mapToGlobal(menuRect.bottomRight());
-    KDecorationFactory* f = factory(); // needs to be saved before
-    showWindowMenu( TQRect(menuTop, menuBottom) );
-    if( !f->exists( this )) // destroyed, return immediately
-        return;
-    button[ButtonMenu]->setDown(false);
-}
-
-
-void StdClient::maxButtonClicked( ButtonState button )
-{
-    maximize( button );
-}
-
-bool StdClient::eventFilter( TQObject* o, TQEvent* e )
-{
-    if ( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()) )
-	return false;
-
-    switch ( e->type() ) {
-    case TQEvent::Resize:
-	resizeEvent( TQT_TQRESIZEEVENT( e ) );
-	return true;
-
-    case TQEvent::Paint:
-	paintEvent( TQT_TQPAINTEVENT( e ) );
-	return true;
-
-    case TQEvent::MouseButtonDblClick:
-	mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ) );
-	return true;
-
-    case TQEvent::MouseButtonPress:
-	processMousePressEvent( TQT_TQMOUSEEVENT( e ) );
-	return true;
-
-    case TQEvent::Wheel:
-	wheelEvent( TQT_TQWHEELEVENT( e ));
-	return true;
-
-    default:
-	return false;
-    }
-}
-
-TQSize StdClient::tqminimumSize() const
-{
-    return widget()->tqminimumSize().expandedTo( TQSize( 100, 50 ));
-}
-
-void StdClient::borders( int& left, int& right, int& top, int& bottom ) const
-{
-    left = right = bottom = 6;
-    top = 6 + widget()->fontMetrics().lineSpacing()+2;
-}
-
-void StdClient::resize( const TQSize& s )
-{
-    widget()->resize( s );
-}
-
-StdToolClient::StdToolClient( KDecorationBridge* b, KDecorationFactory* f )
-    : KDecoration( b, f )
-{
-}
-
-void StdToolClient::init()
-{
-    createMainWidget();
-    widget()->installEventFilter( this );
-
-    widget()->setFont(options()->font(isActive(), true ));
-
-    TQGridLayout* g = new TQGridLayout( widget(), 0, 0, 2 );
-    g->setRowStretch( 1, 10 );
-    if( isPreview())
-        g->addWidget( new TQLabel( i18n( "<center><b>KDE 1 decoration</b></center>" ), widget()), 1, 1 );
-    else
-        g->addItem( new TQSpacerItem( 0, 0 ), 1, 1 ); //no widget in the middle
-    g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
-
-    g->addColSpacing(0, 1);
-    g->addColSpacing(2, 1);
-    g->addRowSpacing(2, 1);
-
-    closeBtn = new TQToolButton( widget(), 0 );
-    TQToolTip::add( closeBtn, i18n("Close") );
-    connect( closeBtn, TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
-    closeBtn->setFixedSize( 13, 13);
-    reset( -1U );
-
-    TQHBoxLayout* hb = new TQHBoxLayout;
-    g->addLayout( hb, 0, 1 );
-
-    int fh = widget()->fontMetrics().lineSpacing()+2;
-
-    titlebar = new TQSpacerItem(10, fh, TQSizePolicy::Expanding,
-			       TQSizePolicy::Minimum );
-    hb->addItem( titlebar );
-    hb->addWidget( closeBtn );
-}
-
-StdToolClient::~StdToolClient()
-{
-}
-
-void StdToolClient::resizeEvent( TQResizeEvent* )
-{
-//     TQRegion r = rect();
-//     TQRect t = titlebar->tqgeometry();
-//     t.setTop( 0 );
-//     r = r.subtract( TQRect(0, 0, width(), 1) );
-//     r = r.subtract (TQRect( 0, 0, 1, t.height() ) );
-//     r = r.subtract (TQRect( width()-1, 0, 1, t.height() ) );
-//     setMask( r );
-}
-
-void StdToolClient::paintEvent( TQPaintEvent* )
-{
-    TQPainter p( widget() );
-    TQRect t = titlebar->tqgeometry();
-    TQRect r = widget()->rect();
-    qDrawWinPanel( &p, r, widget()->tqcolorGroup() );
-    r.setTop( t.bottom()+1 );
-    qDrawWinPanel( &p, r, widget()->tqcolorGroup() );
-    p.fillRect( TQRect( TQPoint(t.topLeft() ), TQPoint( width() - t.left(), t.bottom() ) ),
-		options()->color(KDecorationOptions::ColorTitleBar, isActive()));
-    p.setPen( options()->color(KDecorationOptions::ColorTitleBar, isActive()).light() );
-    t.setLeft( t.left() + 4 );
-    t.setRight( t.right() - 2 );
-    p.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
-    p.setFont(options()->font(isActive(), true));
-    p.drawText( t, AlignLeft|AlignVCenter|SingleLine, caption() );
-}
-
-
-void StdToolClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-        titlebarDblClickOperation();
-}
-
-void StdToolClient::wheelEvent( TQWheelEvent * e )
-{
-    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-void StdToolClient::captionChange()
-{
-    widget()->tqrepaint( titlebar->tqgeometry(), FALSE );
-}
-
-void StdToolClient::reset( unsigned long )
-{
-    TQImage img = close_pix->convertToImage();
-    img = img.smoothScale( 12, 12 );
-    TQPixmap pm;
-    pm.convertFromImage( img );
-    closeBtn->setPixmap( pm );
-    widget()->setFont(options()->font(isActive(), true ));
-}
-
-bool StdToolClient::eventFilter( TQObject* o, TQEvent* e )
-{
-    if ( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()) )
-	return false;
-
-    switch ( e->type() ) {
-    case TQEvent::Resize:
-	resizeEvent( TQT_TQRESIZEEVENT( e ) );
-	return true;
-
-    case TQEvent::Paint:
-	paintEvent( TQT_TQPAINTEVENT( e ) );
-	return true;
-
-    case TQEvent::MouseButtonDblClick:
-	mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ) );
-	return true;
-
-    case TQEvent::MouseButtonPress:
-	processMousePressEvent( TQT_TQMOUSEEVENT( e ) );
-	return true;
-
-    case TQEvent::Wheel:
-	wheelEvent( TQT_TQWHEELEVENT( e ));
-	return true;
-
-    default:
-	return false;
-    }
-}
-
-TQSize StdToolClient::tqminimumSize() const
-{
-    return widget()->tqminimumSize().expandedTo( TQSize( 100, 50 ));
-}
-
-void StdToolClient::borders( int& left, int& right, int& top, int& bottom ) const
-{
-    left = right = bottom = 6;
-    top = 6 + widget()->fontMetrics().lineSpacing();
-}
-
-void StdToolClient::resize( const TQSize& s )
-{
-    widget()->resize( s );
-}
-
-StdFactory::StdFactory()
-{
-    create_pixmaps();
-}
-
-StdFactory::~StdFactory()
-{
-    delete_pixmaps();
-}
-
-const int SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | NET::DesktopMask | NET::DockMask
-    | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask
-    | NET::UtilityMask | NET::SplashMask;
-
-KDecoration* StdFactory::createDecoration( KDecorationBridge* b )
-{
-    NET::WindowType type = windowType( SUPPORTED_WINDOW_TYPES_MASK, b );
-    if( type == NET::Utility || type == NET::Menu || type == NET::Toolbar )
-	return new StdToolClient( b, this );
-    return new StdClient( b, this );
-}
-
-bool StdFactory::reset( unsigned long mask )
-{
-    bool needHardReset = false;
-
-    // doesn't obey the Border size setting
-    if( mask & ( SettingFont | SettingButtons ))
-        needHardReset = true;
-
-    if( mask & ( SettingFont | SettingColors )) {
-        KDE1::delete_pixmaps();
-        KDE1::create_pixmaps();
-    }
-
-    if( !needHardReset )
-        resetDecorations( mask );
-    return needHardReset;
-}
-
-bool StdFactory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonMenu:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-        case AbilityButtonSpacer:
-            return true;
-        default:
-            return false;
-    };
-}
-
-
-}
-
-extern "C"
-{
-	KDE_EXPORT KDecorationFactory *create_factory()
-	{
-                return new KDE1::StdFactory();
-	}
-}
-
-#include "kde1client.moc"
diff --git a/kwin-styles/kde1/kde1client.h b/kwin-styles/kde1/kde1client.h
deleted file mode 100644
index adedfaaf..00000000
--- a/kwin-styles/kde1/kde1client.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*****************************************************************
-twin - the KDE window manager
-								
-Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
-******************************************************************/
-#ifndef STDCLIENT_H
-#define STDCLIENT_H
-#include <tqlayout.h>
-#include <tqvariant.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-#include <tqtoolbutton.h>
-class TQLabel;
-class TQSpacerItem;
-
-namespace KDE1 {
-
-enum ButtonType {
-    ButtonMenu=0,
-    ButtonSticky,
-    ButtonMinimize,
-    ButtonMaximize,
-    ButtonClose,
-    ButtonHelp,
-    ButtonTypeCount
-};
-
-class StdClient : public KDecoration
-{
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    StdClient( KDecorationBridge* b, KDecorationFactory* f );
-    ~StdClient();
-    void init();
-    TQSize tqminimumSize() const;
-    void borders( int& left, int& right, int& top, int& bottom ) const;
-    void reset( unsigned long mask );
-    void resize( const TQSize& s );
-    void shadeChange() {};
-    Position mousePosition( const TQPoint& p ) const { return KDecoration::mousePosition( p ); }
-protected:
-    bool eventFilter( TQObject* o, TQEvent* e );
-    void resizeEvent( TQResizeEvent* );
-    void paintEvent( TQPaintEvent* );
-
-    void mouseDoubleClickEvent( TQMouseEvent * );
-    void wheelEvent( TQWheelEvent * );
-    void captionChange();
-    void iconChange();
-    void maximizeChange();
-    void desktopChange();
-    void activeChange();
-
-private:
-    void addButtons(TQBoxLayout* hb, const TQString& buttons);
-
-private slots:
-    void menuButtonPressed();
-    void maxButtonClicked( ButtonState );
-
-private:
-    TQToolButton* button[ButtonTypeCount];
-    TQSpacerItem* titlebar;
-};
-
-class StdToolClient : public KDecoration
-{
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    StdToolClient( KDecorationBridge* b, KDecorationFactory* f );
-    ~StdToolClient();
-    void init();
-    TQSize tqminimumSize() const;
-    void borders( int& left, int& right, int& top, int& bottom ) const;
-    void reset( unsigned long mask );
-    void resize( const TQSize& s );
-    void shadeChange() {};
-    void activeChange() {};
-    void iconChange() {};
-    void maximizeChange() {};
-    void desktopChange() {};
-    Position mousePosition( const TQPoint& p ) const { return KDecoration::mousePosition( p ); }
-protected:
-    bool eventFilter( TQObject* o, TQEvent* e );
-    void resizeEvent( TQResizeEvent* );
-    void paintEvent( TQPaintEvent* );
-
-    void mouseDoubleClickEvent( TQMouseEvent * );
-    void wheelEvent( TQWheelEvent * );
-    void captionChange();
-
-private:
-    TQToolButton* closeBtn;
-    TQSpacerItem* titlebar;
-};
-
-
-
-/*
-  Like TQToolButton, but provides a clicked(ButtonState) signals that
-  has the last pressed mouse button as argument
- */
-class ThreeButtonButton: public TQToolButton
-{
-    Q_OBJECT
-  TQ_OBJECT
-public:
-  ThreeButtonButton ( TQWidget *parent = 0, const char* name = 0 )
-      : TQToolButton( parent, name )
-    {
-	connect( this, TQT_SIGNAL( clicked() ), this, TQT_SLOT( handleClicked() ) );
-        setCursor( arrowCursor );
-    }
-    ~ThreeButtonButton () {}
-
-signals:
-    void clicked( ButtonState );
-
-protected:
-    void mousePressEvent( TQMouseEvent* e )
-    {
-	last_button = e->button();
-	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
-	TQToolButton::mousePressEvent( &me );
-    }
-
-    void mouseReleaseEvent( TQMouseEvent* e )
-    {
-	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
-	TQToolButton::mouseReleaseEvent( &me );
-    }
-
-private slots:
-    void handleClicked()
-    {
-	emit clicked( last_button );
-    }
-
-private:
-    ButtonState last_button;
-
-};
-
-class StdFactory : public KDecorationFactory
-{
-public:
-    StdFactory();
-    ~StdFactory();
-    KDecoration* createDecoration( KDecorationBridge* b );
-    bool reset( unsigned long mask );
-    virtual bool supports( Ability ability );
-};
-
-}
-
-#endif
diff --git a/kwin-styles/kde1/kde1client_bitmaps.h b/kwin-styles/kde1/kde1client_bitmaps.h
deleted file mode 100644
index 8b1cb377..00000000
--- a/kwin-styles/kde1/kde1client_bitmaps.h
+++ /dev/null
@@ -1,149 +0,0 @@
-#ifndef __STDCLIENT_BITMAPS_H
-#define __STDCLIENT_BITMAPS_H
-
-/**
- * The standard client has the capability to color it's titlebar buttons
- * according to the new color scheme. In order to do this it needs a bitmap
- * for each shade which it draws into a pixmap with the appropriate color.
- * These are all the bitmaps.
- */
-
-static const unsigned char close_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x04, 0x08, 0x08, 0x04, 0x10, 0x02,
-  0x20, 0x01, 0x40, 0x00, 0x40, 0x00, 0x20, 0x01, 0x10, 0x02, 0x08, 0x04,
-  0x04, 0x08, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char close_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0c,
-  0xc0, 0x06, 0x80, 0x03, 0x80, 0x03, 0xc0, 0x06, 0x60, 0x0c, 0x30, 0x18,
-  0x18, 0x30, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char close_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x1c, 0x38, 0x38, 0x1c, 0x70, 0x0e,
-  0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0x70, 0x0e, 0x38, 0x1c,
-  0x1c, 0x38, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char iconify_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x80, 0x03, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char iconify_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-
-static const unsigned char iconify_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x80, 0x03, 0x80, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximize_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08, 0x04, 0x08,
-  0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0xf4, 0x0f,
-  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximize_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10, 0x08, 0x10,
-  0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
-  0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximize_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18, 0x0c, 0x18,
-  0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0xfc, 0x1f,
-  0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximizedown_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10,
-  0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
-  0x08, 0x10, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximizedown_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08,
-  0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08,
-  0xf4, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximizedown_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18,
-  0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18,
-  0xfc, 0x1f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char menu_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0xfc, 0x3f, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char menu_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x20, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char menu_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0xfc, 0x3f, 0x04, 0x20, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pindown_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xa0, 0x03,
-  0xb0, 0x01, 0x30, 0x01, 0xf0, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pindown_gray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
-  0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pindown_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x10, 0x70, 0x20, 0x50, 0x20,
-  0x48, 0x30, 0xc8, 0x38, 0x08, 0x1f, 0x08, 0x18, 0x10, 0x1c, 0x10, 0x0e,
-  0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pindown_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x1f, 0xf0, 0x3f, 0xf0, 0x3f,
-  0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf0, 0x0f,
-  0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-  
-static const unsigned char pinup_white_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x11,
-  0x3f, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pinup_gray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x80, 0x0a, 0xbf, 0x0a, 0x80, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pinup_dgray_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x40, 0x31, 0x40, 0x2e,
-  0x40, 0x20, 0x40, 0x20, 0x7f, 0x2a, 0x40, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char pinup_mask_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xc0, 0x31, 0xc0, 0x3f,
-  0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xc0, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char help_mask_bits[] = {
- 0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x70,0x0e,0x60,0x0e,0x00,0x0f,0x80,
- 0x07,0xc0,0x03,0xc0,0x01,0x80,0x01,0xc0,0x00,0xc0,0x01,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x4c,0x0b,0x08,0x58,0x65,0x09,0x08,0x90,0x00,0x00,
- 0x00,0x09,0x04,0x00,0x00,0x72,0x6f,0x6f,0x74,0x00,0x24,0x31,0x24,0x47,0x6b,
- 0x65,0x44,0x78,0x63 };
-
-static const unsigned char help_dark_bits[] = {
- 0x00,0x00,0x00,0x00,0xe0,0x03,0x30,0x06,0x30,0x06,0x00,0x06,0x00,0x03,0x80,
- 0x01,0xc0,0x00,0xc0,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x65,0x64,0x28,0x29,0x00,0x00,0x00,0x00,0x90,0x00,0x00,
- 0x00,0x21,0x00,0x00,0x00,0x34,0xfe,0x12,0x2b,0x00,0x00,0xff,0xff,0x58,0xc0,
- 0x01,0x2b,0x45,0xfe };
-
-static const unsigned char help_light_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x40,0x08,0x60,0x08,0x00,0x0c,0x00,
- 0x06,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x4c,0x0b,0x08,0x58,0x65,0x09,0x08,0x90,0x00,0x00,
- 0x00,0x09,0x04,0x00,0x00,0x72,0x6f,0x6f,0x74,0x00,0x24,0x31,0x24,0x47,0x6b,
- 0x65,0x44,0x78,0x63 };
-
-#endif
-
diff --git a/kwin-styles/kstep/CMakeLists.txt b/kwin-styles/kstep/CMakeLists.txt
deleted file mode 100644
index 4d55aa77..00000000
--- a/kwin-styles/kstep/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES kstep.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_kstep ###############################
-
-tde_add_kpart( twin3_kstep AUTOMOC
-  SOURCES nextclient.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/kstep/Makefile.am b/kwin-styles/kstep/Makefile.am
deleted file mode 100644
index 3fff6355..00000000
--- a/kwin-styles/kstep/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-INCLUDES = $(all_includes) 
-
-kde_module_LTLIBRARIES = twin3_kstep.la
-
-twin3_kstep_la_SOURCES = nextclient.cpp
-twin3_kstep_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-#twin_kstep_la_LDFLAGS = $(all_libraries) -avoid-version -module $(KDE_RPATH) $(KDE_MT_LDFLAGS)
-twin3_kstep_la_LIBADD = $(LIB_TDEUI) -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = nextclient.h
-
-lnkdir = $(kde_datadir)/twin/
-lnk_DATA = kstep.desktop
-
-EXTRA_DIST = $(lnk_DATA)
-
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/kstep/kstep.desktop b/kwin-styles/kstep/kstep.desktop
deleted file mode 100644
index 87b9aaae..00000000
--- a/kwin-styles/kstep/kstep.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Name=KStep
-Name[cy]=KCam
-Name[hi]=के-स्टेप
-Name[ne]=केडीई चरण
-Name[sv]=Kstep
-Name[ta]=Kஅடி
-Name[th]=ตัวจัดการหน้าต่างสเต็ป - K
-Name[ven]=Tshitepe tsha K
-Name[xh]=Inqwanqwa le K
-Name[zu]=Izinga le K
-X-KDE-Library=twin3_kstep
diff --git a/kwin-styles/kstep/nextclient.cpp b/kwin-styles/kstep/nextclient.cpp
deleted file mode 100644
index 08867a62..00000000
--- a/kwin-styles/kstep/nextclient.cpp
+++ /dev/null
@@ -1,987 +0,0 @@
-#include "nextclient.h"
-#include <tqdatetime.h>
-#include <tqdrawutil.h>
-#include <tqlayout.h>
-#include <tqpainter.h>
-#include <tqbitmap.h>
-#include <tqlabel.h>
-#include <tqtooltip.h>
-#include <kdebug.h>
-#include <klocale.h>
-#include <kpixmapeffect.h>
-
-namespace KStep {
-
-static const unsigned char close_bits[] = {
-  0x03, 0x03, 0x87, 0x03, 0xce, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x78, 0x00,
-  0xfc, 0x00, 0xce, 0x01, 0x87, 0x03, 0x03, 0x03};
-
-static const unsigned char iconify_bits[] = {
-  0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03,
-  0x03, 0x03, 0x03, 0x03, 0xff, 0x03, 0xff, 0x03};
-
-static const unsigned char question_bits[] = {
-  0x00, 0x00, 0x78, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00,
-  0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00};
-
-static const unsigned char sticky_bits[] = {
-  0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01,
-  0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00};
-
-static const unsigned char unsticky_bits[] = {
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01,
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-
-static const unsigned char maximize_bits[] = {
-   0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x01,
-   0x02, 0x01, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00 };
-
-static const unsigned char shade_bits[] = {
-    0xff,0x03,
-    0xff,0x03,
-    0x03,0x03,
-    0xff,0x03,
-    0xff,0x03,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00 
-};
-    
-static const unsigned char unshade_bits[] = {
-    0xff,0x03,
-    0xff,0x03,
-    0x03,0x03,
-    0x03,0x03,
-    0x03,0x03,
-    0x03,0x03,
-    0x03,0x03,
-    0x03,0x03,
-    0xff,0x03,
-    0xff,0x03 
-};
-
-static const unsigned char keep_above_bits[] = {
-    0x30,0x00,
-    0x78,0x00,
-    0xfc,0x00,
-    0x00,0x00,
-    0xff,0x03,
-    0xff,0x03,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00 
-};
-
-static const unsigned char from_above_bits[] = {
-    0xff,0x03,
-    0xff,0x03,
-    0x00,0x00,
-    0xfc,0x00,
-    0x78,0x00,
-    0x30,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00 
-};
-    
-static const unsigned char keep_below_bits[] = {
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0xff,0x03,
-    0xff,0x03,
-    0x00,0x00,
-    0xfc,0x00,
-    0x78,0x00,
-    0x30,0x00
-};
-
-static const unsigned char from_below_bits[] = {
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x00,0x00,
-    0x30,0x00,
-    0x78,0x00,
-    0xfc,0x00,
-    0x00,0x00,
-    0xff,0x03,
-    0xff,0x03
-};
-
-static const unsigned char resize_bits[] = {
-    0xff, 0x03, 
-    0xff, 0x03, 
-    0x33, 0x03, 
-    0x33, 0x03, 
-    0xf3, 0x03, 
-    0xf3, 0x03,
-    0x03, 0x03, 
-    0x03, 0x03, 
-    0xff, 0x03, 
-    0xff, 0x03
-};
-
-
-// If the maximize graphic above (which I did quickly in about a
-// minute, just so I could have something) doesn't please, maybe one
-// of the following would be better.  IMO it doesn't matter, as long
-// as it's not offensive---people will get used to whatever you use.
-// True NeXT fans won't turn on the maximize button anyway.
-//
-// static const unsigned char maximize_bits[] = {
-//    0xcf, 0x03, 0x87, 0x03, 0xcf, 0x03, 0xfd, 0x02, 0x48, 0x00, 0x48, 0x00,
-//    0xfd, 0x02, 0xcf, 0x03, 0x87, 0x03, 0xcf, 0x03 };
-//
-// static const unsigned char maximize_bits[] = {
-//    0xcf, 0x03, 0x87, 0x03, 0x87, 0x03, 0x79, 0x02, 0x48, 0x00, 0x48, 0x00,
-//    0x79, 0x02, 0x87, 0x03, 0x87, 0x03, 0xcf, 0x03 };
-//
-// static const unsigned char maximize_bits[] = {
-//    0x87, 0x03, 0x03, 0x03, 0xfd, 0x02, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00,
-//    0x84, 0x00, 0xfd, 0x02, 0x03, 0x03, 0x87, 0x03 };
-//
-// static const unsigned char maximize_bits[] = {
-//    0x30, 0x00, 0x78, 0x00, 0xcc, 0x00, 0x86, 0x01, 0x33, 0x03, 0x79, 0x02,
-//    0xcd, 0x02, 0x87, 0x03, 0x03, 0x03, 0x01, 0x02 };
-//
-// static const unsigned char maximize_bits[] = {
-//    0x30, 0x00, 0x78, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfe, 0x01,
-//    0xfe, 0x01, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03 };
-
-
-static KPixmap *aTitlePix;
-static KPixmap *iTitlePix;
-static KPixmap *aFramePix;
-static KPixmap *iFramePix;
-static KPixmap *aHandlePix;
-static KPixmap *iHandlePix;
-static KPixmap *aBtn;
-static KPixmap *aBtnDown;
-static KPixmap *iBtn;
-static KPixmap *iBtnDown;
-static TQColor *btnForeground;
-static bool pixmaps_created = false;
-
-static int titleHeight = 16;
-
-// Precomputed border sizes for accessibility
-// The sizes are applied for tiny -> normal -> large -> very large -> huge -> very huge -> oversized
-static const int borderSizes[] = { 4,  6,  9, 14, 21, 32, 48 };
-
-static int handleSize = 6;	// the resize handle size in pixels
-
-static inline const KDecorationOptions* options()
-{
-    return KDecoration::options();
-}
-
-static void create_pixmaps(NextClientFactory *f)
-{
-    if(pixmaps_created)
-        return;
-    pixmaps_created = true;
-
-    // find preferred border size
-    int i = options()->preferredBorderSize(f);
-    if (i >= 0 && i <= 6) handleSize = borderSizes[i];
-
-    titleHeight = TQFontMetrics(options()->font(true)).height() + 4;
-    if (titleHeight < handleSize) titleHeight = handleSize;
-    titleHeight &= ~1; // Make title height even
-    if (titleHeight < 16) titleHeight = 16;
-
-    aTitlePix = new KPixmap();
-    aTitlePix->resize(32, titleHeight - 2);
-    KPixmapEffect::gradient(*aTitlePix,
-                            options()->color(KDecoration::ColorTitleBar, true),
-                            options()->color(KDecoration::ColorTitleBlend, true),
-                            KPixmapEffect::VerticalGradient);
-    iTitlePix = new KPixmap();
-    iTitlePix->resize(32, titleHeight - 2);
-    KPixmapEffect::gradient(*iTitlePix,
-                            options()->color(KDecoration::ColorTitleBar, false),
-                            options()->color(KDecoration::ColorTitleBlend, false),
-                            KPixmapEffect::VerticalGradient);
-    // Bottom frame gradient
-    aFramePix = new KPixmap();
-    aFramePix->resize(32, handleSize);
-    KPixmapEffect::gradient(*aFramePix,
-                            options()->color(KDecoration::ColorFrame, true).light(150),
-                            options()->color(KDecoration::ColorFrame, true).dark(120),
-                            KPixmapEffect::VerticalGradient);
-    iFramePix = new KPixmap();
-    iFramePix->resize(32, handleSize);
-    KPixmapEffect::gradient(*iFramePix,
-                            options()->color(KDecoration::ColorFrame, false).light(150),
-                            options()->color(KDecoration::ColorFrame, false).dark(120),
-                            KPixmapEffect::VerticalGradient);
-
-    // Handle gradient
-    aHandlePix = new KPixmap();
-    aHandlePix->resize(32, handleSize);
-    KPixmapEffect::gradient(*aHandlePix,
-                            options()->color(KDecoration::ColorHandle, true).light(150),
-                            options()->color(KDecoration::ColorHandle, true).dark(120),
-                            KPixmapEffect::VerticalGradient);
-    iHandlePix = new KPixmap();
-    iHandlePix->resize(32, handleSize);
-    KPixmapEffect::gradient(*iHandlePix,
-                            options()->color(KDecoration::ColorHandle, false).light(150),
-                            options()->color(KDecoration::ColorHandle, false).dark(120),
-                            KPixmapEffect::VerticalGradient);
-
-    int btnWidth = titleHeight;
-    iBtn = new KPixmap;
-    iBtn->resize(btnWidth, btnWidth);
-    iBtnDown = new KPixmap;
-    iBtnDown->resize(btnWidth, btnWidth);
-    aBtn = new KPixmap;
-    aBtn->resize(btnWidth, btnWidth);
-    aBtnDown = new KPixmap;
-    aBtnDown->resize(btnWidth, btnWidth);
-    KPixmap internal;
-    int internalHeight = btnWidth - 6;
-    internal.resize(internalHeight, internalHeight);
-
-    // inactive buttons
-    TQColor c(options()->color(KDecoration::ColorButtonBg, false));
-    KPixmapEffect::gradient(*iBtn, c.light(120), c.dark(120),
-                            KPixmapEffect::DiagonalGradient);
-    KPixmapEffect::gradient(internal, c.dark(120), c.light(120),
-                            KPixmapEffect::DiagonalGradient);
-    bitBlt(TQT_TQPAINTDEVICE(iBtn), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
-
-    KPixmapEffect::gradient(*iBtnDown, c.dark(120), c.light(120),
-                            KPixmapEffect::DiagonalGradient);
-    KPixmapEffect::gradient(internal, c.light(120), c.dark(120),
-                            KPixmapEffect::DiagonalGradient);
-    bitBlt(TQT_TQPAINTDEVICE(iBtnDown), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
-
-    // active buttons
-    c = options()->color(KDecoration::ColorButtonBg, true);
-    KPixmapEffect::gradient(*aBtn, c.light(120), c.dark(120),
-                            KPixmapEffect::DiagonalGradient);
-    KPixmapEffect::gradient(internal, c.dark(120), c.light(120),
-                            KPixmapEffect::DiagonalGradient);
-    bitBlt(TQT_TQPAINTDEVICE(aBtn), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
-
-    KPixmapEffect::gradient(*aBtnDown, c.dark(120), c.light(120),
-                            KPixmapEffect::DiagonalGradient);
-    KPixmapEffect::gradient(internal, c.light(120), c.dark(120),
-                            KPixmapEffect::DiagonalGradient);
-    bitBlt(TQT_TQPAINTDEVICE(aBtnDown), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
-
-    TQPainter p;
-    p.begin(aBtn);
-    p.setPen(TQt::black);
-    p.drawRect(0, 0, btnWidth, btnWidth);
-    p.end();
-    p.begin(iBtn);
-    p.setPen(TQt::black);
-    p.drawRect(0, 0, btnWidth, btnWidth);
-    p.end();
-    p.begin(aBtnDown);
-    p.setPen(TQt::black);
-    p.drawRect(0, 0, btnWidth, btnWidth);
-    p.end();
-    p.begin(iBtnDown);
-    p.setPen(TQt::black);
-    p.drawRect(0, 0, btnWidth, btnWidth);
-    p.end();
-
-    if(tqGray(options()->color(KDecoration::ColorButtonBg, true).rgb()) > 128)
-        btnForeground = new TQColor(TQt::black);
-    else
-        btnForeground = new TQColor(TQt::white);
-}
-
-static void delete_pixmaps()
-{
-    delete aTitlePix;
-    delete iTitlePix;
-    delete aFramePix;
-    delete iFramePix;
-    delete aHandlePix;
-    delete iHandlePix;
-    delete aBtn;
-    delete iBtn;
-    delete aBtnDown;
-    delete iBtnDown;
-    delete btnForeground;
-
-    pixmaps_created = false;
-}
-
-// =====================================
-
-NextButton::NextButton(NextClient *parent, const char *name,
-                       const unsigned char *bitmap, int bw, int bh,
-                       const TQString& tip, const int realizeBtns)
-    : TQButton(parent->widget(), name),
-      deco(NULL), client(parent), last_button(Qt::NoButton)
-{
-    realizeButtons = realizeBtns;
-
-    setBackgroundMode( NoBackground );
-    resize(titleHeight, titleHeight);
-    setFixedSize(titleHeight, titleHeight);
-
-    if(bitmap)
-        setBitmap(bitmap, bw, bh);
-
-    TQToolTip::add(this, tip);
-}
-
-void NextButton::reset()
-{
-    tqrepaint(false);
-}
-
-void NextButton::setBitmap(const unsigned char *bitmap, int w, int h)
-{
-    deco = new TQBitmap(w, h, bitmap, true);
-    deco->setMask(*deco);
-    tqrepaint();
-}
-
-void NextButton::drawButton(TQPainter *p)
-{
-    if(client->isActive())
-        p->drawPixmap(0, 0, isDown() ? *aBtnDown : *aBtn);
-    else
-        p->drawPixmap(0, 0, isDown() ? *iBtnDown : *iBtn);
-
-    // If we have a decoration, draw it; otherwise, we have the menu
-    // button (remember, we set the bitmap to NULL).
-    int offset;
-    if (deco) {
-        offset = (titleHeight - 10) / 2 + (isDown() ? 1 : 0);
-        p->setPen(*btnForeground);
-        p->drawPixmap(offset, offset, *deco);
-    } else {
-        offset = (titleHeight - 16) / 2;
-	KPixmap btnpix = client->icon().pixmap(TQIconSet::Small,
-		client->isActive() ? TQIconSet::Normal : TQIconSet::Disabled);
-        p->drawPixmap( offset, offset, btnpix );
-    }
-}
-
-void NextButton::mousePressEvent( TQMouseEvent* e )
-{
-    last_button = e->button();
-    TQMouseEvent me( e->type(), e->pos(), e->globalPos(),
-                    (e->button()&realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
-    TQButton::mousePressEvent( &me );
-}
-
-void NextButton::mouseReleaseEvent( TQMouseEvent* e )
-{
-    last_button = e->button();
-    TQMouseEvent me( e->type(), e->pos(), e->globalPos(),
-                    (e->button()&realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
-    TQButton::mouseReleaseEvent( &me );
-}
-
-// =====================================
-
-NextClient::NextClient(KDecorationBridge *b, KDecorationFactory *f)
-    : KDecoration(b, f)
-{
-}
-
-void NextClient::init()
-{
-    createMainWidget(WResizeNoErase | WStaticContents);
-    widget()->installEventFilter(this);
-
-    widget()->setBackgroundMode( NoBackground );
-
-    TQVBoxLayout *mainLayout = new TQVBoxLayout(widget());
-    TQBoxLayout  *titleLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-    TQHBoxLayout *windowLayout = new TQHBoxLayout();
-    mainLayout->addLayout(titleLayout);
-    mainLayout->addLayout(windowLayout, 1);
-    mainLayout->addSpacing(mustDrawHandle() ? handleSize : 1);
-
-    windowLayout->addSpacing(1);
-    if (isPreview())
-        windowLayout->addWidget(new TQLabel(i18n(
-			"<center><b>KStep preview</b></center>"), widget()));
-    else
-        windowLayout->addItem(new TQSpacerItem( 0, 0 ));
-
-    windowLayout->addSpacing(1);
-
-    initializeButtonsAndTitlebar(titleLayout);
-}
-
-/**
-   Preconditions:
-       + button is an array of length MAX_NUM_BUTTONS
-
-   Postconditions:
-       + Title bar and buttons have been initialized and laid out
-       + for all i in 0..(MAX_NUM_BUTTONS-1), button[i] points to
-         either (1) a valid NextButton instance, if the corresponding
-         button is selected in the current button scheme, or (2) null
-         otherwise.
- */
-void NextClient::initializeButtonsAndTitlebar(TQBoxLayout* titleLayout)
-{
-    // Null the buttons to begin with (they are not guaranteed to be null).
-    for (int i=0; i<MAX_NUM_BUTTONS; i++) {
-        button[i] = NULL;
-    }
-
-    // The default button positions for other styles do not match the
-    // behavior of older versions of KStep, so we have to set these
-    // manually when customButtonPositions isn't enabled.
-    TQString left, right;
-    if (options()->customButtonPositions()) {
-        left = options()->titleButtonsLeft();
-        right = options()->titleButtonsRight();
-    } else {
-        left = TQString("I");
-        right = TQString("SX");
-    }
-
-    // Do actual creation and addition to titleLayout
-    addButtons(titleLayout, left);
-
-    titlebar = new TQSpacerItem(10, titleHeight, TQSizePolicy::Expanding,
-                               TQSizePolicy::Minimum );
-    titleLayout->addItem(titlebar);
-    addButtons(titleLayout, right);
-
-    // Finally, activate all live buttons
-    for ( int i = 0; i < MAX_NUM_BUTTONS; i++) {
-        if (button[i]) {
-            button[i]->setMouseTracking( TRUE );
-        }
-    }
-}
-
-/** Adds the buttons for one side of the title bar, based on the spec
- * string; see the KWinInternal::KDecoration class, methods
- * titleButtonsLeft and titleBUttonsRight. */
-void NextClient::addButtons(TQBoxLayout* titleLayout, const TQString& spec)
-{
-    for (unsigned int i=0; i<spec.length(); i++) {
-        switch (spec[i].latin1()) {
-        case 'A':
-            if (isMaximizable()) {
-                button[MAXIMIZE_IDX] =
-                    new NextButton(this, "maximize", maximize_bits, 10, 10,
-                                   i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
-                titleLayout->addWidget( button[MAXIMIZE_IDX] );
-                connect( button[MAXIMIZE_IDX], TQT_SIGNAL(clicked()),
-                         this, TQT_SLOT(maximizeButtonClicked()) );
-            }
-            break;
-
-        case 'H':
-	    if (providesContextHelp()) {
-		button[HELP_IDX] = new NextButton(this,
-			"help", question_bits, 10, 10, i18n("Help"));
-		titleLayout->addWidget( button[HELP_IDX] );
-		connect( button[HELP_IDX], TQT_SIGNAL(clicked()),
-			 this, TQT_SLOT(showContextHelp()) );
-	    }
-            break;
-
-        case 'I':
-            if (isMinimizable()) {
-                button[ICONIFY_IDX] =
-                    new NextButton(this, "iconify", iconify_bits, 10, 10,
-                                   i18n("Minimize"));
-                titleLayout->addWidget( button[ICONIFY_IDX] );
-                connect( button[ICONIFY_IDX], TQT_SIGNAL(clicked()),
-                         this, TQT_SLOT(minimize()) );
-            }
-            break;
-
-        case 'M':
-            button[MENU_IDX] =
-                new NextButton(this, "menu", NULL, 10, 10, i18n("Menu"), Qt::LeftButton|Qt::RightButton);
-            titleLayout->addWidget( button[MENU_IDX] );
-            // NOTE DIFFERENCE: capture pressed(), not clicked()
-            connect( button[MENU_IDX], TQT_SIGNAL(pressed()),
-                     this, TQT_SLOT(menuButtonPressed()) );
-            break;
-
-        case 'L':
-            button[SHADE_IDX] =
-                new NextButton(this, "shade", NULL, 0, 0, i18n("Shade"));
-            titleLayout->addWidget( button[SHADE_IDX] );
-            connect( button[SHADE_IDX], TQT_SIGNAL(clicked()),
-                     this, TQT_SLOT(shadeClicked()) );
-            // NOTE DIFFERENCE: set the pixmap separately (2 states)
-	    shadeChange();
-            break;
-	    
-        case 'S':
-            button[STICKY_IDX] =
-                new NextButton(this, "sticky", NULL, 0, 0, i18n("On all desktops"));
-            titleLayout->addWidget( button[STICKY_IDX] );
-            connect( button[STICKY_IDX], TQT_SIGNAL(clicked()),
-                     this, TQT_SLOT(toggleOnAllDesktops()) );
-            // NOTE DIFFERENCE: set the pixmap separately (2 states)
-	    desktopChange();
-            break;
-
-	case 'F':
-            button[ABOVE_IDX] = new NextButton(this, "above", NULL, 0, 0, "");
-            titleLayout->addWidget( button[ABOVE_IDX] );
-            connect( button[ABOVE_IDX], TQT_SIGNAL(clicked()),
-                     this, TQT_SLOT(aboveClicked()) );
-	    connect(this, TQT_SIGNAL(keepAboveChanged(bool)), 
-		    TQT_SLOT(keepAboveChange(bool)));
-	    keepAboveChange(keepAbove());
-	    break;
-	    
-	case 'B':
-            button[BELOW_IDX] = new NextButton(this, "below", NULL, 0, 0, "");
-            titleLayout->addWidget( button[BELOW_IDX] );
-            connect( button[BELOW_IDX], TQT_SIGNAL(clicked()),
-                     this, TQT_SLOT(belowClicked()) );
-	    connect(this, TQT_SIGNAL(keepBelowChanged(bool)), 
-		    TQT_SLOT(keepBelowChange(bool)));
-	    keepBelowChange(keepBelow());
-	    break;
-        
-	case 'X':
-            if (isCloseable()) {
-		button[CLOSE_IDX] =
-		    new NextButton(this, "close", close_bits, 10, 10,
-				   i18n("Close"));
-		titleLayout->addWidget(button[CLOSE_IDX]);
-		connect(button[CLOSE_IDX], TQT_SIGNAL(clicked()),
-			 this, TQT_SLOT(closeWindow()));
-            }
-            break;
-
-	case 'R':
-            if (mustDrawHandle()) {
-		button[RESIZE_IDX] =
-		    new NextButton(this, "resize", resize_bits, 10, 10,
-				   i18n("Resize"));
-		titleLayout->addWidget(button[RESIZE_IDX]);
-		// NOTE DIFFERENCE: capture pressed(), not clicked()
-		connect(button[RESIZE_IDX], TQT_SIGNAL(pressed()),
-			 this, TQT_SLOT(resizePressed()));
-            }
-	    break;
-        case '_':
-            // TODO: Add spacer handling
-            break;
-
-        default:
-            kdDebug() << " Can't happen: unknown button code "
-                      << TQString(spec[i]);
-            break;
-        }
-    }
-}
-
-bool NextClient::mustDrawHandle() const 
-{ 
-    bool drawSmallBorders = !options()->moveResizeMaximizedWindows();
-    if (drawSmallBorders && (maximizeMode() & MaximizeVertical)) {
-	return false;
-    } else {
-	return isResizable();
-    }
-}
-
-void NextClient::iconChange()
-{
-    if (button[MENU_IDX] && button[MENU_IDX]->isVisible())
-	button[MENU_IDX]->tqrepaint(false);
-}
-
-void NextClient::menuButtonPressed()
-{
-    // Probably don't need this null check, but we might as well.
-    if (button[MENU_IDX]) {
-	TQRect menuRect = button[MENU_IDX]->rect();
-        TQPoint menuTop = button[MENU_IDX]->mapToGlobal(menuRect.topLeft());
-        TQPoint menuBottom = button[MENU_IDX]->mapToGlobal(menuRect.bottomRight());
-	menuTop += TQPoint(1, 1);
-	menuBottom += TQPoint(1, 1);
-        KDecorationFactory* f = factory();
-        showWindowMenu(TQRect(menuTop, menuBottom));
-        if( !f->exists( this )) // 'this' was deleted
-            return;
-	button[MENU_IDX]->setDown(false);
-    }
-}
-
-// Copied, with minor edits, from KDEDefaultClient::slotMaximize()
-void NextClient::maximizeButtonClicked()
-{
-    if (button[MAXIMIZE_IDX]) {
-        maximize(button[MAXIMIZE_IDX]->lastButton());
-    }
-}
-
-void NextClient::shadeClicked()
-{
-    setShade(!isSetShade());
-}
-
-void NextClient::aboveClicked()
-{
-    setKeepAbove(!keepAbove());
-}
-
-void NextClient::belowClicked()
-{
-    setKeepBelow(!keepBelow());
-    keepAboveChange(keepAbove());
-    keepBelowChange(keepBelow());
-}
-
-void NextClient::resizePressed()
-{
-    performWindowOperation(ResizeOp);
-}
-
-void NextClient::resizeEvent(TQResizeEvent *)
-{
-    if (widget()->isVisible()) {
-	// TODO ? update border area only?
-        widget()->update();
-#if 0
-        widget()->update(titlebar->tqgeometry());
-        TQPainter p(widget());
-	TQRect t = titlebar->tqgeometry();
-	t.setTop( 0 );
-	TQRegion r = widget()->rect();
-	r = r.subtract( t );
-	p.setClipRegion( r );
-	p.eraseRect(widget()->rect());
-#endif
-    }
-}
-
-void NextClient::captionChange()
-{
-    widget()->tqrepaint(titlebar->tqgeometry(), false);
-}
-
-
-void NextClient::paintEvent( TQPaintEvent* )
-{
-    TQPainter p(widget());
-
-    // Draw black frame
-    TQRect fr = widget()->rect();
-    p.setPen(TQt::black);
-    p.drawRect(fr);
-
-    // Draw title bar
-    TQRect t = titlebar->tqgeometry();
-    t.setTop(1);
-    p.drawTiledPixmap(t.x()+1, t.y()+1, t.width()-2, t.height()-2,
-                      isActive() ? *aTitlePix : *iTitlePix);
-    qDrawShadePanel(&p, t.x(), t.y(), t.width(), t.height()-1,
-                   options()->tqcolorGroup(KDecoration::ColorTitleBar, isActive()));
-    p.drawLine(t.x(), t.bottom(), t.right(), t.bottom());
-
-#if 0
-    // Why setting up a clipping region if it is not used? (setClipping(false))
-    TQRegion r = fr;
-    r = r.subtract( t );
-    p.setClipRegion( r );
-    p.setClipping(false);
-#endif
-
-    t.setTop( 1 );
-    t.setHeight(t.height()-2);
-    t.setLeft( t.left() + 4 );
-    t.setRight( t.right() - 2 );
-
-    p.setPen(options()->color(KDecoration::ColorFont, isActive()));
-    p.setFont(options()->font(isActive()));
-    p.drawText( t, AlignCenter | AlignVCenter, caption() );
-
-    // Draw resize handle
-    if (mustDrawHandle()) {
-        int corner = 16 + 3*handleSize/2;
-	qDrawShadePanel(&p,
-		fr.x() + 1, fr.bottom() - handleSize, corner-1, handleSize,
-		options()->tqcolorGroup(KDecoration::ColorHandle, isActive()),
-		false);
-	p.drawTiledPixmap(fr.x() + 2, fr.bottom() - handleSize + 1,
-		corner - 3, handleSize - 2, isActive() ? *aHandlePix : *iHandlePix);
-
-	qDrawShadePanel(&p,
-		fr.x() + corner, fr.bottom() - handleSize,
-		fr.width() - 2*corner, handleSize,
-		options()->tqcolorGroup(KDecoration::ColorFrame, isActive()),
-		false);
-	p.drawTiledPixmap(fr.x() + corner + 1, fr.bottom() - handleSize + 1,
-		fr.width() - 2*corner - 2, handleSize - 2,
-		isActive() ? *aFramePix : *iFramePix);
-
-	qDrawShadePanel(&p,
-		fr.right() - corner + 1, fr.bottom() - handleSize, corner - 1, handleSize,
-		options()->tqcolorGroup(KDecoration::ColorHandle, isActive()),
-		false);
-	p.drawTiledPixmap(fr.right() - corner + 2, fr.bottom() - handleSize + 1,
-		corner - 3, handleSize - 2, isActive() ? *aHandlePix : *iHandlePix);
-    }
-}
-
-void NextClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-    if (e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-	titlebarDblClickOperation();
-}
-
-void NextClient::wheelEvent( TQWheelEvent * e )
-{
-    if (isSetShade() || TQRect( 0, 0, width(), titleHeight ).contains( e->pos() ) )
-	titlebarMouseWheelOperation( e->delta());
-}
-
-void NextClient::showEvent(TQShowEvent *)
-{
-    widget()->tqrepaint();
-}
-
-void NextClient::desktopChange()
-{
-    bool on = isOnAllDesktops();
-    if (NextButton * b = button[STICKY_IDX]) {
-        b->setBitmap( on ? unsticky_bits : sticky_bits, 10, 10);
-	TQToolTip::remove(b);
-	TQToolTip::add(b, on ? i18n("Not on all desktops") : i18n("On all desktops"));
-    }
-}
-
-void NextClient::maximizeChange()
-{
-    if (button[MAXIMIZE_IDX]) {
-	bool m = maximizeMode() == MaximizeFull;
-	//button[MAXIMIZE_IDX]->setBitmap(m ? minmax_bits : maximize_bits);
-	TQToolTip::remove(button[MAXIMIZE_IDX]);
-	TQToolTip::add(button[MAXIMIZE_IDX],
-		m ? i18n("Restore") : i18n("Maximize"));
-    }
-    //spacer->changeSize(10, mustDrawHandle() ? handleSize : 1,
-    //		    TQSizePolicy::Expanding, TQSizePolicy::Minimum);
-    //mainLayout->activate();
-}
-
-void NextClient::activeChange()
-{
-    widget()->tqrepaint(false);
-    slotReset();
-}
-
-void NextClient::slotReset()
-{
-    for (int i=0; i<MAX_NUM_BUTTONS; i++) {
-        if (button[i]) {
-            button[i]->reset();
-        }
-    }
-}
-
-KDecoration::Position
-NextClient::mousePosition( const TQPoint& p ) const
-{
-  Position m = PositionCenter;
-
-  if (p.y() < (height() - handleSize))
-    m = KDecoration::mousePosition(p);
-
-  else {
-    int corner = 16 + 3*handleSize/2;
-    if (p.x() >= (width() - corner))
-      m = PositionBottomRight;
-    else if (p.x() <= corner)
-      m = PositionBottomLeft;
-    else
-      m = PositionBottom;
-  }
-
-  return m;
-}
-
-void NextClient::borders(int &left, int &right, int &top, int &bottom) const
-{
-    left = right = 1;
-    top = titleHeight; // FRAME is this ok?
-    bottom = mustDrawHandle() ? handleSize : 1;
-}
-
-void NextClient::shadeChange()
-{
-    if (NextButton *b = button[SHADE_IDX]) {
-        b->setBitmap(isSetShade() ? unshade_bits : shade_bits, 10, 10);
-	TQToolTip::remove(b);
-	TQToolTip::add(b, isSetShade() ? i18n("Unshade") : i18n("Shade"));
-    }
-}
-
-void NextClient::keepAboveChange(bool above)
-{
-    if (NextButton *b = button[ABOVE_IDX]) {
-        b->setBitmap(above ? from_above_bits : keep_above_bits, 10, 10);
-	TQToolTip::remove(b);
-	TQToolTip::add(b, above ? 
-		i18n("Do not keep above others") : i18n("Keep above others"));
-	b->tqrepaint(false);
-    }
-}
-
-void NextClient::keepBelowChange(bool below)
-{
-    if (NextButton *b = button[BELOW_IDX]) {
-        b->setBitmap(below ? from_below_bits : keep_below_bits, 10, 10);
-	TQToolTip::remove(b);
-	TQToolTip::add(b, below ? 
-		i18n("Do not keep below others") : i18n("Keep below others"));
-	b->tqrepaint(false);
-    }
-}
-
-TQSize NextClient::tqminimumSize() const
-{
-    return TQSize(titleHeight * 6 + 2, titleHeight + handleSize + 2);
-}
-
-void NextClient::resize(const TQSize& s)
-{
-    widget()->resize(s);
-}
-
-void NextClient::reset(unsigned long)
-{
-    for (int i = 0; i < MAX_NUM_BUTTONS; ++i) {
-        if (button[i])
-            button[i]->reset();
-    }
-    widget()->tqrepaint();
-}
-
-bool NextClient::eventFilter(TQObject *o, TQEvent *e)
-{
-    if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
-	return false;
-    switch (e->type()) {
-    case TQEvent::Resize:
-	resizeEvent(TQT_TQRESIZEEVENT( e ));
-	return true;
-    case TQEvent::Paint:
-	paintEvent(TQT_TQPAINTEVENT( e ));
-	return true;
-    case TQEvent::MouseButtonDblClick:
-	mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ));
-	return true;
-    case TQEvent::Wheel:
-	wheelEvent( TQT_TQWHEELEVENT( e ));
-	return true;
-    case TQEvent::MouseButtonPress:
-	processMousePressEvent(TQT_TQMOUSEEVENT( e ));
-	return true;
-    case TQEvent::Show:
-	showEvent(TQT_TQSHOWEVENT( e ));
-	return true;
-    default:
-	break;
-    }
-    return false;
-}
-
-bool NextClient::drawbound(const TQRect& geom, bool /* clear */)
-{
-    TQPainter p(workspaceWidget());
-    p.setPen(TQPen(TQt::white, 3));
-    p.setRasterOp(TQt::XorROP);
-    p.drawRect(geom);
-    int leftMargin = geom.left() + 2;
-    p.fillRect(leftMargin, geom.top() + titleHeight - 1,
-	    geom.width() - 4, 3, TQt::white);
-    if (mustDrawHandle()) {
-	p.fillRect(leftMargin, geom.bottom() - handleSize - 1,
-		geom.width() - 4, 3, TQt::white);
-    }	    
-    return true;
-}
-
-// =====================================
-
-NextClientFactory::NextClientFactory()
-{
-    create_pixmaps(this);
-}
-
-NextClientFactory::~NextClientFactory()
-{
-    delete_pixmaps();
-}
-
-KDecoration *NextClientFactory::createDecoration(KDecorationBridge *b)
-{
-    return new NextClient(b, this);
-}
-
-bool NextClientFactory::reset(unsigned long /*changed*/)
-{
-    // TODO Do not recreate decorations if it is not needed. Look at
-    // ModernSystem for how to do that
-    delete_pixmaps();
-    create_pixmaps(this);
-    // For now just return true.
-    return true;
-}
-
-bool NextClientFactory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonMenu:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-        case AbilityButtonAboveOthers:
-        case AbilityButtonBelowOthers:
-        case AbilityButtonShade:
-        case AbilityButtonResize:
-            return true;
-        default:
-            return false;
-    };
-}
-
-TQValueList< NextClientFactory::BorderSize >
-NextClientFactory::borderSizes() const
-{
-    // the list must be sorted
-    return TQValueList< BorderSize >() << BorderTiny << BorderNormal <<
-	BorderLarge << BorderVeryLarge <<  BorderHuge <<
-	BorderVeryHuge << BorderOversized;
-}
-
-} // KStep namespace
-
-extern "C" KDE_EXPORT KDecorationFactory* create_factory()
-{
-    return new KStep::NextClientFactory();
-}
-
-#include "nextclient.moc"
-
-// vim: sw=4
diff --git a/kwin-styles/kstep/nextclient.h b/kwin-styles/kstep/nextclient.h
deleted file mode 100644
index b24da66d..00000000
--- a/kwin-styles/kstep/nextclient.h
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef __NEXTCLIENT_H
-#define __NEXTCLIENT_H
-
-#include <tqvariant.h>
-#include <tqbitmap.h>
-#include <kpixmap.h>
-#include <tqlayout.h>
-#include <tqbutton.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQLabel;
-class TQSpacerItem;
-
-namespace KStep {
-
-class NextClient;
-
-class NextButton : public TQButton
-{
-public:
-    NextButton(NextClient *parent=0, const char *name=0,
-               const unsigned char *bitmap=NULL, int bw=0, int bh=0,
-               const TQString& tip=NULL, const int realizeBtns = Qt::LeftButton);
-    void setBitmap(const unsigned char *bitmap, int bw, int bh);
-    void reset();
-    ButtonState lastButton() { return last_button; }
-
-protected:
-    void mousePressEvent( TQMouseEvent* e );
-    void mouseReleaseEvent( TQMouseEvent* e );
-    virtual void drawButton(TQPainter *p);
-    void drawButtonLabel(TQPainter *){;}
-
-    KPixmap aBackground, iBackground;
-    TQBitmap* deco;
-    NextClient *client;
-    ButtonState last_button;
-    int realizeButtons;
-};
-
-class NextClient : public KDecoration
-{
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    NextClient(KDecorationBridge *b, KDecorationFactory *f);
-    ~NextClient() {;}
-    void init();
-    virtual bool drawbound(const TQRect& geom, bool clear);
-protected:
-    bool eventFilter(TQObject *o, TQEvent *e);
-    void resizeEvent( TQResizeEvent* );
-    void paintEvent( TQPaintEvent* );
-    void showEvent( TQShowEvent* );
-
-    void mouseDoubleClickEvent( TQMouseEvent * );
-    void wheelEvent( TQWheelEvent * );
-    void captionChange();
-    void desktopChange();
-    void activeChange();
-    void shadeChange();
-    void iconChange();
-    TQSize tqminimumSize() const;
-    void resize(const TQSize &size);
-    void borders(int &left, int &right, int &top, int &bottom) const;
-    void reset(unsigned long changed);
-    void calcHiddenButtons();
-    void updateActiveBuffer();
-
-    Position mousePosition(const TQPoint &) const;
-    void maximizeChange();
-
-protected slots:
-    void slotReset();
-    void menuButtonPressed();
-    void maximizeButtonClicked();
-    void shadeClicked();
-    void aboveClicked();
-    void belowClicked();
-    void resizePressed();
-
-    void keepAboveChange(bool above);
-    void keepBelowChange(bool below);
-
-private:
-    void initializeButtonsAndTitlebar(TQBoxLayout* titleLayout);
-    void addButtons(TQBoxLayout* titleLayout, const TQString& buttons);
-    bool mustDrawHandle() const;
-
-    TQSpacerItem* titlebar;
-
-    // Helpful constants for buttons in array
-    enum { CLOSE_IDX = 0,
-           HELP_IDX,
-           ICONIFY_IDX,
-           MAXIMIZE_IDX,
-           MENU_IDX,
-           SHADE_IDX,
-           ABOVE_IDX,
-           BELOW_IDX,
-           RESIZE_IDX,
-           STICKY_IDX,
-           MAX_NUM_BUTTONS = STICKY_IDX + 1 };
-
-    // WARNING: button[i] may be null for any given i.  Make sure you
-    // always check for null before doing button[i]->foo().
-    NextButton* button[MAX_NUM_BUTTONS];
-};
-
-class NextClientFactory: public TQObject, public KDecorationFactory
-{
-public:
-    NextClientFactory();
-    virtual ~NextClientFactory();
-    virtual KDecoration *createDecoration(KDecorationBridge *);
-    virtual bool reset(unsigned long changed);
-    virtual bool supports( Ability ability );
-
-    TQValueList< NextClientFactory::BorderSize > borderSizes() const;
-
-};
-
-}
-
-#endif
diff --git a/kwin-styles/openlook/CMakeLists.txt b/kwin-styles/openlook/CMakeLists.txt
deleted file mode 100644
index 061dd697..00000000
--- a/kwin-styles/openlook/CMakeLists.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES openlook.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_openlook ############################
-
-tde_add_kpart( twin3_openlook AUTOMOC
-  SOURCES OpenLook.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/openlook/Makefile.am b/kwin-styles/openlook/Makefile.am
deleted file mode 100644
index 32b41684..00000000
--- a/kwin-styles/openlook/Makefile.am
+++ /dev/null
@@ -1,16 +0,0 @@
-INCLUDES                    = $(all_includes)
-
-kde_module_LTLIBRARIES      = twin3_openlook.la
-
-twin3_openlook_la_SOURCES   = OpenLook.cpp
-twin3_openlook_la_LDFLAGS   = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_openlook_la_LIBADD    = -ltdecorations
-
-noinst_HEADERS              = OpenLook.h
-METASOURCES                 = AUTO
-
-linkdir                     = $(kde_datadir)/twin/
-link_DATA                   = openlook.desktop
-
-EXTRA_DIST                  = $(link_DATA)
-
diff --git a/kwin-styles/openlook/OpenLook.cpp b/kwin-styles/openlook/OpenLook.cpp
deleted file mode 100644
index 46398e30..00000000
--- a/kwin-styles/openlook/OpenLook.cpp
+++ /dev/null
@@ -1,728 +0,0 @@
-/*
-  'OpenLook' twin client
-
-  Porting to trinity.2 API
-    Copyright 2003 Luciano Montanaro <mikelima@cirulla.net>
-
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to
-  deal in the Software without restriction, including without limitation the
-  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-  sell copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
- 
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#include "config.h"
-#include <unistd.h> // for usleep
-#include <math.h>
-
-#include <tqlayout.h>
-#include <tqpainter.h>
-#include <tqdrawutil.h>
-#include <tqtoolbutton.h>
-#include <tqimage.h>
-#include <tqlabel.h>
-#include <tqpixmap.h>
-
-#include <kapplication.h>
-#include <klocale.h>
-
-#include "OpenLook.h"
-
-extern "C" KDE_EXPORT KDecorationFactory* create_factory()
-{
-    return new OpenLook::DecorationFactory();
-}
-
-namespace OpenLook {
-
-static uint openLookCornerSize = 11;
-static uint openLookMargin = 5;
-static const uint openLookTextVMargin = 1;
-static uint titleHeight;
-
-// --------------------------------------- 
-
-DecorationFactory::DecorationFactory()
-{
-}
-
-DecorationFactory::~DecorationFactory()
-{
-}
-
-KDecoration *DecorationFactory::createDecoration(KDecorationBridge *b)
-{
-    return new OpenLook(b, this);
-}
-
-bool DecorationFactory::reset(unsigned long /*changed*/)
-{
-    // TODO Do not recreate decorations if it is not needed. Look at
-    // ModernSystem for how to do that
-    // For now just return true.
-    return true;
-}
-
-bool DecorationFactory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonMinimize:
-            return true;
-        default:
-            return false;
-    };
-}
-
-TQValueList< DecorationFactory::BorderSize > 
-DecorationFactory::borderSizes() const
-{ 
-    // the list must be sorted
-    return TQValueList< BorderSize >() << BorderNormal << 
-	BorderLarge << BorderVeryLarge <<  BorderHuge << 
-	BorderVeryHuge << BorderOversized;
-}
-
-// --------------------------------------- 
-
-static inline const KDecorationOptions* options()
-{
-    return KDecoration::options();
-}
-
-// --------------------------------------- 
-
-OpenLook::OpenLook(KDecorationBridge *b, KDecorationFactory *f) : 
-    KDecoration(b, f), 
-    titleSpacer_    (0),
-    mousePressPoint_(0, 0), // Anywhere outside button rect.
-    buttonDown_     (false)
-{
-}
-
-void OpenLook::init()
-{
-  static const int SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | 
-    NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | 
-    NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | 
-    NET::UtilityMask | NET::SplashMask;
-
-  createMainWidget(WStaticContents | WResizeNoErase | WRepaintNoErase);
-  widget()->installEventFilter(this);
-  widget()->setBackgroundMode(NoBackground);
-  NET::WindowType type = windowType(SUPPORTED_WINDOW_TYPES_MASK);
-  tool_ = (type == NET::Toolbar || type == NET::Utility || type == NET::Menu);
-  TQFontMetrics fm(options()->font(isActive(), tool_));
-
-  titleHeight = fm.height() + openLookTextVMargin * 2;
-  
-  switch(KDecoration::options()->preferredBorderSize(factory())) {
-      case KDecoration::BorderLarge:
-          openLookMargin = 9;
-          break;
-      case KDecoration::BorderVeryLarge:
-          openLookMargin = 13;
-          break;
-      case KDecoration::BorderHuge:
-          openLookMargin = 18;
-          break;
-      case KDecoration::BorderVeryHuge:
-          openLookMargin = 27;
-          break;
-      case KDecoration::BorderOversized:
-          openLookMargin = 40;
-          break;
-      case KDecoration::BorderNormal:
-      default:
-          openLookMargin = 5;
-  }
-  openLookCornerSize = 2*openLookMargin + 1;
-  if (titleHeight <= openLookMargin)
-      titleHeight = openLookMargin+1;
-  
-  doLayout();
-}
-
-OpenLook::~OpenLook()
-{
-  // Empty.
-}
-
-bool OpenLook::eventFilter(TQObject *o, TQEvent *e)
-{
-  if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget())) return false;
-  switch (e->type()) {
-  case TQEvent::Resize:
-    resizeEvent(TQT_TQRESIZEEVENT(e));
-    return true;
-  case TQEvent::Paint:
-    paintEvent(TQT_TQPAINTEVENT(e));
-    return true;
-  case TQEvent::MouseButtonDblClick:
-    mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
-    return true;
-  case TQEvent::Wheel:
-    wheelEvent( TQT_TQWHEELEVENT( e ));
-    return true;
-  case TQEvent::MouseButtonPress:
-    if (!isButtonPress(TQT_TQMOUSEEVENT(e))) {
-      processMousePressEvent(TQT_TQMOUSEEVENT(e));
-    }
-    return true;
-  case TQEvent::MouseButtonRelease:
-    if (isButtonRelease(TQT_TQMOUSEEVENT(e))) {
-      return true;
-    } else {
-      return false;
-    }
-  case TQEvent::Show:
-    showEvent(TQT_TQSHOWEVENT(e));
-    return true;
-  default:
-    break;
-  }
-  return false;
-}
-
-  void 
-OpenLook::borders(int &left, int &right, int &top, int &bottom) const
-{
-    // FRAME XXX Check
-    left = right = bottom = openLookMargin;
-    top = titleHeight + openLookMargin;
-}
-
-  void
-OpenLook::captionChange()
-{
-  widget()->update(titleRect());
-}
-
-  void 
-OpenLook::shadeChange()
-{
-}
-
-TQSize OpenLook::tqminimumSize() const
-{
-    int left, right, top, bottom;
-    borders(left, right, top, bottom);
-    return TQSize(left  + right + 2 * titleHeight, top + bottom); 
-}
-
-  void 
-OpenLook::resize(const TQSize& s)
-{
-    widget()->resize(s);
-    widget()->tqrepaint(); //there is some strange wrong tqrepaint of the frame without
-}
-
-  void
-OpenLook::paintEvent(TQPaintEvent * pe)
-{
-  TQRect tr(titleRect());
-
-  TQPainter p(widget());
-
-  TQRegion clipRegion(pe->region());
-
-  p.setClipRegion(clipRegion);
-
-  paintBorder(p);
-
-  paintTopLeftRect(p);
-  paintTopRightRect(p);
-  paintBottomLeftRect(p);
-  paintBottomRightRect(p);
-
-  p.setClipRegion(clipRegion + buttonRect());
-
-  TQBrush titleBackground(options()->color(KDecoration::ColorTitleBar, true));
-
-  if (isActive())
-    qDrawShadePanel(&p, tr, widget()->tqcolorGroup(), true, 1, &titleBackground);
-  else
-    p.fillRect(tr, widget()->tqcolorGroup().brush(TQColorGroup::Background));
-
-  p.setClipRegion(clipRegion);
-
-  paintButton(p);
-
-  p.setFont(options()->font(isActive(), tool_));
-
-  p.setPen(options()->color(KDecoration::ColorFont, isActive()));
-
-  tr.setLeft(openLookCornerSize + 3 + buttonRect().width() + 2);
-
-  p.drawText(tr, AlignCenter, caption());
-}
-
-  void
-OpenLook::showEvent(TQShowEvent *)
-{
-    widget()->tqrepaint();
-}
-
-  void
-OpenLook::mouseDoubleClickEvent(TQMouseEvent * e)
-{
-  if (e->button() == Qt::LeftButton && titleRect().contains(e->pos()))
-  {
-	  titlebarDblClickOperation();
-  }
-}
-
-  void
-OpenLook::wheelEvent(TQWheelEvent *e)
-{
-  if (isSetShade() || titleRect().contains(e->pos()))
-  {
-          titlebarMouseWheelOperation( e->delta());
-  }
-}
-
-  void 
-OpenLook::resizeEvent(TQResizeEvent* e)
-{
-  widget()->update();
-}
-
-  void
-OpenLook::activeChange()
-{
-  widget()->tqrepaint();
-}
-
-  KDecoration::Position
-OpenLook::mousePosition(const TQPoint & p) const
-{
-  if (topLeftRect().contains(p))
-    return PositionTopLeft;
-  else if (topRightRect().contains(p))
-    return PositionTopRight;
-  else if (bottomLeftRect().contains(p))
-    return PositionBottomLeft;
-  else if (bottomRightRect().contains(p))
-    return PositionBottomRight;
-  else
-    return PositionCenter;
-}
-
-  void 
-OpenLook::iconChange()
-{
-}
-
-  void 
-OpenLook::desktopChange()
-{
-}
-
-  void 
-OpenLook::maximizeChange()
-{
-    widget()->tqrepaint(false);
-}
-
-  void
-OpenLook::doLayout()
-{
-  TQVBoxLayout * tqlayout = new TQVBoxLayout(widget(), openLookMargin);
-
-  titleSpacer_ =
-    new TQSpacerItem
-    (
-     0,
-     titleHeight,
-     TQSizePolicy::Expanding,
-     TQSizePolicy::Fixed
-    );
-
-  tqlayout->addItem(titleSpacer_);
-
-  tqlayout->addSpacing(2);
-
-  TQBoxLayout * midLayout = 
-    new TQBoxLayout(tqlayout, TQBoxLayout::LeftToRight, 0, 0);
- 
-  if (isPreview()) {
-    midLayout->addWidget(new TQLabel(
-          i18n("<center><b>OpenLook preview</b></center>"), 
-          widget()), 
-        1);
-  } else {
-    midLayout->addItem( new TQSpacerItem( 0, 0 ));
-  }
-      
-}
-
-  bool
-OpenLook::animateMinimize(bool /*iconify*/)
-{
-#if 0
-  TQRect icongeom(iconGeometry());
-
-  if (!icongeom.isValid())
-    return false;
-
-  TQRect wingeom(tqgeometry());
-
-  TQPainter p(workspaceWidget());
-
-  p.setRasterOp(TQt::NotROP);
-
-#if 0
-  if (iconify)
-    p.setClipRegion(
-      TQRegion(workspace()->desktopWidget()->rect()) - wingeom
-      );
-#endif
-
-  for (uint count = 0; count < 4; count++)
-  {
-    grabXServer();
-
-    p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
-    p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
-    p.drawLine(wingeom.topLeft(), icongeom.topLeft());
-    p.drawLine(wingeom.topRight(), icongeom.topRight());
-
-    p.flush();
-
-    kapp->syncX();
-
-    usleep(10000);
-
-    p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
-    p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
-    p.drawLine(wingeom.topLeft(), icongeom.topLeft());
-    p.drawLine(wingeom.topRight(), icongeom.topRight());
-
-    p.flush();
-
-    kapp->syncX();
-
-    usleep(10000);
-
-    ungrabXServer();
-  }
-#endif
-  return true;
-}
-
-  TQRect
-OpenLook::topLeftRect() const
-{
-  return TQRect
-    (
-     0,
-     0,
-     openLookCornerSize,
-     openLookCornerSize
-    );
-}
-
-  TQRect
-OpenLook::topRightRect() const
-{
-  return TQRect
-    (
-     width() - openLookCornerSize,
-     0,
-     openLookCornerSize,
-     openLookCornerSize
-    );
-}
-
-  TQRect
-OpenLook::bottomLeftRect() const
-{
-  return TQRect
-    (
-     0,
-     height() - openLookCornerSize,
-     openLookCornerSize,
-     openLookCornerSize
-    );
-}
-
-  TQRect
-OpenLook::bottomRightRect() const
-{
-  return TQRect
-    (
-     width() - openLookCornerSize,
-     height() - openLookCornerSize,
-     openLookCornerSize,
-     openLookCornerSize
-    );
-}
-
-  void
-OpenLook::paintTopLeftRect(TQPainter & p) const
-{
-  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
-
-  TQRect r(topLeftRect());
-
-  int x1(r.left());
-  int y1(r.top());
-  int x2(r.right());
-  int y2(r.bottom());
-
-  p.setPen(widget()->tqcolorGroup().light());
-
-  p.drawLine(x1, y1, x2, y1);
-  p.drawLine(x1, y1 + 1, x1, y2);
-
-  p.fillRect(x1 + 1, y1 + 1, r.width()-2, openLookMargin-2,  handleColour);
-  p.fillRect(x1 + 1, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
-
-  p.setPen(widget()->tqcolorGroup().dark());
-
-  p.drawLine(x2, y1 + 1, x2, y1 + openLookMargin-1);
-
-  p.drawLine(x1 + openLookMargin-1, y1 + openLookMargin-1, x2 - 1, y1 + openLookMargin-1);
-
-  p.drawLine(x1 + openLookMargin-1, y1 + openLookMargin, x1 + openLookMargin-1, y2 - 1);
-
-  p.drawLine(x1 + 1, y2, x1 + openLookMargin-1, y2);
-}
-
-  void
-OpenLook::paintTopRightRect(TQPainter & p) const
-{
-  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
-
-  TQRect r(topRightRect());
-
-  int x1(r.left());
-  int y1(r.top());
-  int x2(r.right());
-  int y2(r.bottom());
-
-  p.setPen(widget()->tqcolorGroup().light());
-
-  p.drawLine(x1, y1, x2, y1);
-  p.drawLine(x1, y1 + 1, x1, y1 + openLookMargin-1);
-  p.drawLine(x2 - openLookMargin+1, y1 + openLookMargin, x2 - openLookMargin+1, y2);
-
-  p.fillRect(x1 + 1, y1 + 1, r.width()-2, openLookMargin-2, handleColour);
-  p.fillRect(x2 - openLookMargin + 2, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
-
-  p.setPen(widget()->tqcolorGroup().dark());
-
-  p.drawLine(x1 + 1, y1 + openLookMargin-1, x2 - openLookMargin+1, y1 + openLookMargin-1);
-  p.drawLine(x2, y1 + 1, x2, y2);
-  p.drawLine(x2 - openLookMargin+1, y2, x2 - 1, y2);
-}
-
-  void
-OpenLook::paintBottomLeftRect(TQPainter & p) const
-{
-  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
-
-  TQRect r(bottomLeftRect());
-
-  int x1(r.left());
-  int y1(r.top());
-  int x2(r.right());
-  int y2(r.bottom());
-
-  p.setPen(widget()->tqcolorGroup().light());
-
-  p.drawLine(x1, y1, x1 + openLookMargin-1, y1);
-  p.drawLine(x1, y1 + 1, x1, y2);
-  p.drawLine(x1 + openLookMargin, y2 - openLookMargin+1, x2, y2 - openLookMargin+1);
-
-  p.fillRect(x1 + 1, y2 - openLookMargin + 2, r.width()-2, openLookMargin-2, handleColour);
-  p.fillRect(x1 + 1, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
-
-  p.setPen(widget()->tqcolorGroup().dark());
-
-  p.drawLine(x1 + openLookMargin-1, y1 + 1, x1 + openLookMargin-1, y2 - openLookMargin);
-  p.drawLine(x1 + 1, y2, x2, y2);
-  p.drawLine(x2, y2 - openLookMargin+2, x2, y2 - 1);
-}
-
-  void
-OpenLook::paintBottomRightRect(TQPainter & p) const
-{
-  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
-
-  TQRect r(bottomRightRect());
-
-  int x1(r.left());
-  int y1(r.top());
-  int x2(r.right());
-  int y2(r.bottom());
-
-  p.setPen(widget()->tqcolorGroup().light());
-
-  p.drawLine(x1, y2 - openLookMargin+1, x1, y2);
-  p.drawLine(x1 + 1, y2 - openLookMargin+1, x2 - openLookMargin+1, y2 - openLookMargin+1);
-  p.drawLine(x2 - openLookMargin+1, y1 + 1, x2 - openLookMargin+1, y2 - openLookMargin);
-  p.drawLine(x2 - openLookMargin+1, y1, x2, y1);
-
-  p.fillRect(x1 + 1, y2 - openLookMargin + 2, r.width()-2, openLookMargin-2,  handleColour);
-  p.fillRect(x2 - openLookMargin + 2, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
-
-  p.setPen(widget()->tqcolorGroup().dark());
-
-  p.drawLine(x1 + 1, y2, x2, y2);
-  p.drawLine(x2, y1 + 1, x2, y2 - 1);
-}
-
-  TQRect
-OpenLook::buttonRect() const
-{
-  return TQRect
-    (
-      openLookCornerSize + 3,
-      titleRect().top(),
-      titleRect().height(),
-      titleRect().height()
-    );
-}
-
-  void
-OpenLook::paintButton(TQPainter & p) const
-{
-  TQRect r(buttonRect());
-
-  p.fillRect
-    (
-     r.left() + 1,
-     r.top() + 1,
-     r.width() - 2,
-     r.height() - 2,
-     buttonDown_
-     ? widget()->tqcolorGroup().dark()
-     : options()->color(KDecoration::ColorButtonBg, isActive())
-    );
-
-  p.setPen(buttonDown_ ? widget()->tqcolorGroup().dark() : widget()->tqcolorGroup().light());
-
-  p.drawLine(r.left() + 1, r.top(), r.right() - 1, r.top());
-  p.drawLine(r.left(), r.top() + 1, r.left(), r.bottom() - 1);
-
-  p.setPen(buttonDown_ ? widget()->tqcolorGroup().light() : widget()->tqcolorGroup().dark());
-
-  p.drawLine(r.right(), r.top() + 1, r.right(), r.bottom() - 1);
-  p.drawLine(r.left() + 1, r.bottom(), r.right() - 1, r.bottom());
-
-  paintArrow(p);
-}
-
-  void
-OpenLook::paintArrow(TQPainter & p) const
-{
-  TQRect br(buttonRect());
-
-  int x = br.left()   + 5;
-  int y = br.top()    + 5;
-  int w = br.width()  - 10;
-  int h = br.height() - 10;
-
-  TQPointArray poly(3);
-
-  p.setBrush(widget()->tqcolorGroup().mid());
-
-  poly.setPoint(0, x, y);
-  poly.setPoint(1, x + w - 1, y);
-  poly.setPoint(2, x + (w / 2), y + h - 1);
-
-  p.drawPolygon(poly);
-
-  p.setPen(widget()->tqcolorGroup().dark());
-
-  p.drawLine(x, y, x + w - 1, y);
-
-  p.drawLine(x, y, x + (w / 2), y + h - 1);
-
-  p.setPen(widget()->tqcolorGroup().light());
-
-  p.drawLine(x + (w / 2), y + h - 1, x + w - 1, y);
-}
-
-  void
-OpenLook::paintBorder(TQPainter & p) const
-{
-  const uint cs(openLookCornerSize);
-
-  uint x = widget()->rect().left();
-  uint y = widget()->rect().top();
-  uint w = widget()->rect().width();
-  uint h = widget()->rect().height();
-  uint r = widget()->rect().right();
-  uint b = widget()->rect().bottom();
-
-  p.fillRect(x + cs, y, w - cs - cs, 2,     widget()->tqcolorGroup().shadow());
-  p.fillRect(x + cs, b - 1, w - cs - cs, 2, widget()->tqcolorGroup().shadow());
-  p.fillRect(x, y + cs, 2, h - cs - cs,     widget()->tqcolorGroup().shadow());
-  p.fillRect(r - 1, y + cs, 2, h - cs - cs, widget()->tqcolorGroup().shadow());
-
-  TQColor frameColour(options()->color(KDecoration::ColorFrame, isActive()));
-
-  p.fillRect(x + cs, y + 2, w - cs - cs, openLookMargin-2, frameColour);
-  p.fillRect(x + cs, b - openLookMargin + 1, w - cs - cs, openLookMargin-2, frameColour);
-  p.fillRect(x + 2, y + cs, openLookMargin-2, h - cs - cs, frameColour);
-  p.fillRect(r - openLookMargin + 1, y + cs, openLookMargin-2, h - cs - cs, frameColour);
-
-  p.fillRect
-    (
-     openLookMargin,
-     titleRect().bottom() + 1,
-     width() - 2 * openLookMargin,
-     2,
-     widget()->tqcolorGroup().background()
-    );
-}
-
-  TQRect
-OpenLook::titleRect() const
-{
-  return titleSpacer_->tqgeometry();
-}
-
-  bool
-OpenLook::isButtonPress(TQMouseEvent * e)
-{
-  mousePressPoint_ = e->pos();
-
-  buttonDown_ = buttonRect().contains(mousePressPoint_);
-
-  widget()->tqrepaint(buttonRect());
-  return buttonDown_;
-}
-
-  bool
-OpenLook::isButtonRelease(TQMouseEvent * e)
-{
-  if (buttonDown_ && buttonRect().contains(e->pos()))
-  {
-    minimize();
-    return true;
-  }
-  buttonDown_ = false;
-  widget()->tqrepaint(buttonRect());
-
-  return false;
-}
-
-}
-
-#include "OpenLook.moc"
-// vim:ts=2:sw=2:tw=78:set et:
diff --git a/kwin-styles/openlook/OpenLook.h b/kwin-styles/openlook/OpenLook.h
deleted file mode 100644
index 98db37af..00000000
--- a/kwin-styles/openlook/OpenLook.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
-  'OpenLook' twin client
-
-  Porting to trinity.2 API 
-    Copyright 2003 Luciano Montanaro <mikelima@cirulla.net>
-  
-  Permission is hereby granted, free of charge, to any person obtaining a copy
-  of this software and associated documentation files (the "Software"), to
-  deal in the Software without restriction, including without limitation the
-  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-  sell copies of the Software, and to permit persons to whom the Software is
-  furnished to do so, subject to the following conditions:
- 
-  The above copyright notice and this permission notice shall be included in
-  all copies or substantial portions of the Software.
-
-  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
-  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/
-
-#ifndef KWIN_WEB_H
-#define KWIN_WEB_H
-
-#include <tqptrlist.h>
-#include <tqbutton.h>
-
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQSpacerItem;
-
-namespace OpenLook
-{
-  class OpenLookButton;
-
-  class OpenLook : public KDecoration
-  {
-    Q_OBJECT
-  TQ_OBJECT
-    public:
-
-      OpenLook(KDecorationBridge *b, KDecorationFactory *f);
-      ~OpenLook();
-      void init();
-
-    protected:
-      bool eventFilter(TQObject *o, TQEvent *e);
-      void resizeEvent(TQResizeEvent *e);
-      void paintEvent(TQPaintEvent *e);
-      void showEvent(TQShowEvent *e);
-
-      virtual void captionChange();
-      void desktopChange();
-      void activeChange();
-      void shadeChange();
-      void iconChange();
-      void maximizeChange();
-      void borders(int &left, int &right, int &top, int &bottom) const;
-      TQSize tqminimumSize() const;
-      void resize( const TQSize& );
-      virtual void mouseDoubleClickEvent(TQMouseEvent *);
-      virtual void wheelEvent(TQWheelEvent *e);
-
-      virtual Position mousePosition(const TQPoint &) const;
-      virtual bool animateMinimize(bool);
-
-    private:
-
-      void doLayout();
-
-      TQRect titleRect() const;
-
-      TQRect topLeftRect() const;
-      TQRect topRightRect() const;
-      TQRect bottomLeftRect() const;
-      TQRect bottomRightRect() const;
-
-      TQRect buttonRect() const;
-
-      void paintBorder(TQPainter &) const;
-
-      void paintTopLeftRect(TQPainter &) const;
-      void paintTopRightRect(TQPainter &) const;
-      void paintBottomLeftRect(TQPainter &) const;
-      void paintBottomRightRect(TQPainter &) const;
-
-      void paintButton(TQPainter &) const;
-      void paintArrow(TQPainter &) const;
-
-      bool isButtonPress(TQMouseEvent *);
-      bool isButtonRelease(TQMouseEvent *);
-
-      TQSpacerItem   * titleSpacer_;
-      TQPoint          mousePressPoint_;
-      bool            tool_;
-      bool            buttonDown_;
-  };
-  
-  class DecorationFactory: public TQObject, public KDecorationFactory
-  {
-  public:
-    DecorationFactory();
-    virtual ~DecorationFactory();
-    virtual KDecoration *createDecoration(KDecorationBridge *);
-    virtual bool reset(unsigned long changed);
-    virtual bool supports( Ability ability );
-    TQValueList< DecorationFactory::BorderSize > borderSizes() const;
-  };
-}
-
-#endif
-// vim:ts=2:sw=2:tw=78:set et:
diff --git a/kwin-styles/openlook/openlook.desktop b/kwin-styles/openlook/openlook.desktop
deleted file mode 100644
index 0ed25dcb..00000000
--- a/kwin-styles/openlook/openlook.desktop
+++ /dev/null
@@ -1,14 +0,0 @@
-[Desktop Entry]
-Name=OpenLook
-Name[af]=Openlook
-Name[cy]=GolwgAgored
-Name[fa]=نگاه‌باز
-Name[hi]=ओपन-लुक
-Name[lt]=Open išvaizda
-Name[lv]=AtvērtsSkats
-Name[ne]=ओपन लूक
-Name[ta]=திறந்தபார்வை
-Name[ven]=Vula wo sedza
-Name[vi]=Hình thức mở
-Name[zu]=Vula Ubone
-X-KDE-Library=twin3_openlook
diff --git a/kwin-styles/riscos/AboveButton.cpp b/kwin-styles/riscos/AboveButton.cpp
deleted file mode 100644
index 7b66e3ba..00000000
--- a/kwin-styles/riscos/AboveButton.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2004
-    Carsten Clever <clushkou@gmx.net>
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  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 "AboveButton.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const above_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"            ",
-" .....      ",
-".+++++.     ",
-".+++++.     ",
-".+++++..... ",
-".+++++.++++.",
-".+++++.++++.",
-" .....+++++.",
-"     .+++++.",
-"     .+++++.",
-"      ..... ",
-"            "};
-
-AboveButton::AboveButton(TQWidget *parent)
-   : Button(parent, i18n("Keep above others"))
-{
-   setPixmap(TQPixmap((const char **)above_xpm));
-}
-
-void AboveButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(above());
-}
-
-} // End namespace
-
-#include "AboveButton.moc"
diff --git a/kwin-styles/riscos/AboveButton.h b/kwin-styles/riscos/AboveButton.h
deleted file mode 100644
index 86fbb0a7..00000000
--- a/kwin-styles/riscos/AboveButton.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-  RISC OS KWin client
-
-  Copyright 2004
-   Carsten Clever <clushkou@gmx.net>
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU General Public
-  License as published by the Free Software Foundation; either
-  version 2 of the License, or (at your option) any later version.
-
-  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 RISC_OS_ABOVE_BUTTON_H
-#define RISC_OS_ABOVE_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class AboveButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      AboveButton(TQWidget *parent);
-
-   signals:
-
-      void above();
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent*);
-};
-
-} // End namespace
-
-#endif
diff --git a/kwin-styles/riscos/Button.cpp b/kwin-styles/riscos/Button.cpp
deleted file mode 100644
index 7bf4f477..00000000
--- a/kwin-styles/riscos/Button.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 <tqtooltip.h>
-#include "Button.h"
-#include "Static.h"
-
-namespace RiscOS
-{
-
-Button::Button(TQWidget *parent, const TQString& tip,
-               const ButtonState realizeButtons)
-  : TQWidget(parent, "Button", 0),
-    realizeButtons_(realizeButtons),
-    lastButton_(Qt::NoButton),
-    alignment_(Left),
-    down_     (false),
-    active_   (false)
-{
-   TQToolTip::add(this, tip);
-   setBackgroundColor(TQt::black);
-
-   setFixedSize(Static::instance()->titleHeight() - 1,
-                Static::instance()->titleHeight());
-}
-
-Button::~Button()
-{
-  // Empty.
-}
-
-void Button::tqsetAlignment(Alignment a)
-{
-   alignment_ = a;
-   tqrepaint();
-}
-
-void Button::setActive(bool b)
-{
-   active_ = b;
-   tqrepaint();
-}
-
-Button::Alignment Button::tqalignment() const
-{
-   return alignment_;
-}
-
-void Button::mousePressEvent(TQMouseEvent *e)
-{
-   down_ = true;
-   lastButton_ = e->button();
-   tqrepaint();
-
-   TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
-                  (e->button()&realizeButtons_) ? Qt::LeftButton : Qt::NoButton,
-                  e->state());
-   TQWidget::mousePressEvent(&me);
-}
-
-void Button::mouseReleaseEvent(TQMouseEvent *e)
-{
-   down_ = false;
-   lastButton_ = e->button();
-   tqrepaint();
-   TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
-                  (e->button()&realizeButtons_) ? Qt::LeftButton : Qt::NoButton,
-                  e->state());
-   TQWidget::mouseReleaseEvent(&me);
-}
-
-void Button::setPixmap(const TQPixmap &p)
-{
-   if (TQPixmap::defaultDepth() <= 8)
-      aPixmap_ = iPixmap_ = p;
-   else
-   {
-      TQRgb light;
-      TQRgb* data = NULL;
-      TQRgb w = tqRgb(255, 255, 255);
-
-      TQImage aTx(p.convertToImage());
-      TQImage iTx(aTx.copy());
-
-      const KDecorationOptions* options = KDecoration::options();
-      light = options->color(KDecoration::ColorButtonBg, true).light(150).rgb();
-
-      if (light == tqRgb(0, 0, 0))
-         light = tqRgb(228, 228, 228);
-
-      data = (TQRgb *)aTx.bits();
-
-      for (int x = 0; x < 144; x++)
-         if (data[x] == w)
-            data[x] = light;
-
-      light = options->color(KDecoration::ColorButtonBg, false).light(150).rgb();
-
-      if (light == tqRgb(0, 0, 0))
-         light = tqRgb(228, 228, 228);
-
-      data = (TQRgb *)iTx.bits();
-
-      for (int x = 0; x < 144; x++)
-         if (data[x] == w)
-            data[x] = light;
-
-      aPixmap_.convertFromImage(aTx);
-      iPixmap_.convertFromImage(iTx);
-
-      if (0 != p.mask())
-      {
-         aPixmap_.setMask(*p.mask());
-         iPixmap_.setMask(*p.mask());
-      }
-   }
-   tqrepaint();
-}
-
-void Button::paintEvent(TQPaintEvent *)
-{
-   bitBlt(this, alignment_ == Left ? 1 : 0, 0,
-          &Static::instance()->buttonBase(active_, down_));
-
-   int i = width() / 2 - 6;
-
-   bitBlt(this, alignment_ == Left ? i + 1 : i,
-          i + 1, active_ ? &aPixmap_ : &iPixmap_);
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-#include "Button.moc"
diff --git a/kwin-styles/riscos/Button.h b/kwin-styles/riscos/Button.h
deleted file mode 100644
index 0c7c66c5..00000000
--- a/kwin-styles/riscos/Button.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_BUTTON_H
-#define RISC_OS_BUTTON_H
-
-#include <tqpixmap.h>
-#include <tqwidget.h>
-#include <klocale.h>
-#include <kdecoration.h>
-
-namespace RiscOS
-{
-
-class Button : public TQWidget
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      enum Type { Lower, Close, Iconify, Maximise, Sticky, Help };
-
-      enum Alignment { Left, Right };
-
-      Button(TQWidget *parent, const TQString &tip,
-             const ButtonState realizeButton = Qt::LeftButton);
-      virtual ~Button();
-
-      void tqsetAlignment(Alignment);
-
-      Alignment tqalignment() const;
-
-   protected slots:
-
-      void setActive(bool);
-
-   protected:
-
-      void paintEvent(TQPaintEvent *);
-
-      void mousePressEvent(TQMouseEvent *);
-      void mouseReleaseEvent(TQMouseEvent *);
-      void mouseMoveEvent(TQMouseEvent *) { /* Empty. */ }
-
-      void setPixmap(const TQPixmap &);
-
-      ButtonState realizeButtons_;
-      ButtonState lastButton_;
-
-   private:
-
-      Alignment   alignment_;
-      bool        down_;
-      bool        active_;
-      TQPixmap     aPixmap_, iPixmap_;
-};
-
-} // End namespace
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/CMakeLists.txt b/kwin-styles/riscos/CMakeLists.txt
deleted file mode 100644
index 5b0e6d54..00000000
--- a/kwin-styles/riscos/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_definitions(
-  -DQT_PLUGIN
-)
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${CMAKE_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES riscos.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_riscos ###############################
-
-
-set( target twin3_riscos )
-
-set( ${target}_SRCS
-  AboveButton.cpp Button.cpp
-  CloseButton.cpp
-  HelpButton.cpp
-  IconifyButton.cpp
-  LowerButton.cpp
-  Manager.cpp
-  MaximiseButton.cpp
-  Static.cpp
-  StickyButton.cpp
-)
-
-tde_add_kpart( ${target} AUTOMOC
-  SOURCES ${${target}_SRCS}
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/riscos/CloseButton.cpp b/kwin-styles/riscos/CloseButton.cpp
deleted file mode 100644
index 1a4c06b5..00000000
--- a/kwin-styles/riscos/CloseButton.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "CloseButton.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const close_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"  .      .  ",
-" .+.    .+. ",
-".+++.  .+++.",
-" .+++..+++. ",
-"  .++++++.  ",
-"   .++++.   ",
-"   .++++.   ",
-"  .++++++.  ",
-" .+++..+++. ",
-".+++.  .+++.",
-" .+.    .+. ",
-"  .      .  "};
-
-CloseButton::CloseButton(TQWidget *parent)
-  : Button(parent, i18n("Close"))
-{
-   setPixmap(TQPixmap((const char **)close_xpm));
-}
-
-void CloseButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(closeWindow());
-}
-
-} // End namespace;
-
-// vim:ts=2:sw=2:tw=78
-#include "CloseButton.moc"
diff --git a/kwin-styles/riscos/CloseButton.h b/kwin-styles/riscos/CloseButton.h
deleted file mode 100644
index 615ea2ed..00000000
--- a/kwin-styles/riscos/CloseButton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_CLOSE_BUTTON_H
-#define RISC_OS_CLOSE_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class CloseButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      CloseButton(TQWidget *parent);
-
-   signals:
-
-      void closeWindow();
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-};
-
-} // End namespace;
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/HelpButton.cpp b/kwin-styles/riscos/HelpButton.cpp
deleted file mode 100644
index 936738eb..00000000
--- a/kwin-styles/riscos/HelpButton.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "HelpButton.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const help_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #FFFFFF",
-"+	c #000000",
-" .  ++++  . ",
-"  .+....+.  ",
-"  +......+  ",
-"..+......+..",
-"  +......+  ",
-"  +......+  ",
-"  .+....+.  ",
-" .  ++ +  . ",
-"    + ++    ",
-"    ++ +    ",
-"    + ++    ",
-"     ++     "};
-
-HelpButton::HelpButton(TQWidget *parent)
-  : Button(parent, i18n("Help"))
-{
-   setPixmap(TQPixmap((const char **)help_xpm));
-}
-
-void HelpButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(help());
-}
-
-} // End namespace;
-
-// vim:ts=2:sw=2:tw=78
-#include "HelpButton.moc"
diff --git a/kwin-styles/riscos/HelpButton.h b/kwin-styles/riscos/HelpButton.h
deleted file mode 100644
index d57b91ce..00000000
--- a/kwin-styles/riscos/HelpButton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_HELP_BUTTON_H
-#define RISC_OS_HELP_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class HelpButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      HelpButton(TQWidget *parent);
-
-   signals:
-
-      void help();
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-};
-
-} // End namespace;
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/IconifyButton.cpp b/kwin-styles/riscos/IconifyButton.cpp
deleted file mode 100644
index b5eef9e5..00000000
--- a/kwin-styles/riscos/IconifyButton.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "IconifyButton.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const iconify_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"            ",
-"            ",
-"            ",
-"            ",
-" .......... ",
-".++++++++++.",
-".++++++++++.",
-" .......... ",
-"            ",
-"            ",
-"            ",
-"            "};
-
-IconifyButton::IconifyButton(TQWidget *parent)
-  : Button(parent, i18n("Minimize"))
-{
-   setPixmap(TQPixmap((const char **)iconify_xpm));
-}
-
-void IconifyButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(iconify());
-}
-
-} // End namespace;
-
-// vim:ts=2:sw=2:tw=78
-#include "IconifyButton.moc"
diff --git a/kwin-styles/riscos/IconifyButton.h b/kwin-styles/riscos/IconifyButton.h
deleted file mode 100644
index 54e44aba..00000000
--- a/kwin-styles/riscos/IconifyButton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_ICONIFY_BUTTON_H
-#define RISC_OS_ICONIFY_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class IconifyButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      IconifyButton(TQWidget *parent);
-
-   signals:
-
-      void iconify();
-  
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-};
-
-} // End namespace;
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/LowerButton.cpp b/kwin-styles/riscos/LowerButton.cpp
deleted file mode 100644
index 7f03e41f..00000000
--- a/kwin-styles/riscos/LowerButton.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "LowerButton.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const lower_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"            ",
-" .....      ",
-".+++++.     ",
-".+++++.     ",
-".+++++..... ",
-".++++.+++++.",
-".++++.+++++.",
-" .....+++++.",
-"     .+++++.",
-"     .+++++.",
-"      ..... ",
-"            "};
-
-LowerButton::LowerButton(TQWidget *parent)
-  : Button(parent, i18n("Keep below others"))
-{
-   setPixmap(TQPixmap((const char **)lower_xpm));
-}
-
-void LowerButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(lower());
-}
-
-} // End namespace;
-
-// vim:ts=2:sw=2:tw=78
-#include "LowerButton.moc"
diff --git a/kwin-styles/riscos/LowerButton.h b/kwin-styles/riscos/LowerButton.h
deleted file mode 100644
index 8616d688..00000000
--- a/kwin-styles/riscos/LowerButton.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_LOWER_BUTTON_H
-#define RISC_OS_LOWER_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class LowerButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      LowerButton(TQWidget *parent);
-
-   signals:
-
-      void lower();
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-};
-
-} // End namespace;
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/Makefile.am b/kwin-styles/riscos/Makefile.am
deleted file mode 100644
index 773c341b..00000000
--- a/kwin-styles/riscos/Makefile.am
+++ /dev/null
@@ -1,39 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-KDE_CXXFLAGS = -DQT_PLUGIN
-
-INCLUDES = $(all_includes) 
-
-twindir = $(kde_datadir)/twin/
-twin_DATA = riscos.desktop
-
-noinst_HEADERS = AboveButton.h \
-                 Button.h \
-                 CloseButton.h \
-                 HelpButton.h \
-                 IconifyButton.h \
-                 LowerButton.h \
-                 Manager.h \
-                 MaximiseButton.h \
-                 Palette.h \
-                 Static.h \
-                 StickyButton.h
-
-kde_module_LTLIBRARIES = twin3_riscos.la
-twin3_riscos_la_SOURCES = AboveButton.cpp \
-                          Button.cpp \
-                          CloseButton.cpp \
-                          HelpButton.cpp \
-                          IconifyButton.cpp \
-                          LowerButton.cpp \
-                          Manager.cpp \
-                          MaximiseButton.cpp \
-                          Static.cpp \
-                          StickyButton.cpp
-
-twin3_riscos_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_riscos_la_LIBADD = $(LIB_TDEUI) -ltdecorations
-twin3_riscos_la_METASOURCES = AUTO
-
-EXTRA_DIST = $(twin_DATA)
-
diff --git a/kwin-styles/riscos/Manager.cpp b/kwin-styles/riscos/Manager.cpp
deleted file mode 100644
index 837bec9c..00000000
--- a/kwin-styles/riscos/Manager.cpp
+++ /dev/null
@@ -1,767 +0,0 @@
-/*
-  RISC OS KWin client
-
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 <unistd.h> // for usleep
-#include <config.h> // for usleep on non-linux platforms
-#include <math.h> // for sin and cos
-
-#include <tqapplication.h>
-#include <tqimage.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqpainter.h>
-
-#include <netwm.h>
-
-#include "Manager.h"
-#include "Static.h"
-#include "AboveButton.h"
-#include "CloseButton.h"
-#include "HelpButton.h"
-#include "IconifyButton.h"
-#include "LowerButton.h"
-#include "MaximiseButton.h"
-#include "StickyButton.h"
-
-extern "C"
-{
-   KDE_EXPORT KDecorationFactory* create_factory()
-   {
-      return new RiscOS::Factory();
-   }
-}
-
-
-namespace RiscOS
-{
-
-Manager::Manager(KDecorationBridge *bridge,
-                 KDecorationFactory *factory)
-  : KDecoration(bridge, factory),
-    topLayout_    (NULL),
-    titleLayout_  (NULL),
-    titleSpacer_  (NULL)
-{
-}
-
-Manager::~Manager()
-{
-}
-
-void Manager::init()
-{
-   createMainWidget(WNoAutoErase);
-
-   widget()->installEventFilter(this);
-   widget()->setBackgroundMode(NoBackground);
-
-   leftButtonList_.setAutoDelete(true);
-   rightButtonList_.setAutoDelete(true);
-
-   resetLayout();
-}
-
-bool Manager::eventFilter(TQObject *o, TQEvent *e)
-{
-   if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget())) return false;
-   switch (e->type())
-   {
-      case TQEvent::Resize:
-         resizeEvent(TQT_TQRESIZEEVENT(e));
-         return true;
-      case TQEvent::Paint:
-         paintEvent(TQT_TQPAINTEVENT(e));
-         return true;
-      case TQEvent::MouseButtonDblClick:
-         mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
-         return true;
-      case TQEvent::MouseButtonPress:
-         processMousePressEvent(TQT_TQMOUSEEVENT(e));
-         return true;
-      case TQEvent::Wheel:
-         wheelEvent( TQT_TQWHEELEVENT( e ));
-         return true;
-      case TQEvent::MouseButtonRelease:
-         return false;
-      case TQEvent::Show:
-         return false;
-      case TQEvent::MouseMove:
-         return false;
-      case TQEvent::Enter:
-         return false;
-      case TQEvent::Leave:
-         return false;
-      case TQEvent::Move:
-         return false;
-      default:
-         return false;
-   }
-}
-
-void Manager::reset(unsigned long /*changed*/)
-{
-   resetLayout();
-}
-
-void Manager::borders(int &left, int &right, int &top, int &bottom) const
-{
-   left = right = 1;
-   top = Static::instance()->titleHeight();
-   bottom = isResizable() ? Static::instance()->resizeHeight() : 1;
-}
-
-void Manager::resize(const TQSize &s)
-{
-   widget()->resize(s);
-}
-
-TQSize Manager::tqminimumSize() const
-{
-   return widget()->tqminimumSize();
-}
-
-void Manager::activeChange()
-{
-   updateTitleBuffer();
-   widget()->tqrepaint();
-   emit(activeChanged(isActive()));
-}
-
-void Manager::captionChange()
-{
-   updateTitleBuffer();
-   widget()->tqrepaint();
-}
-
-void Manager::iconChange()
-{
-}
-
-void Manager::maximizeChange()
-{
-   emit(maximizeChanged(maximizeMode() == MaximizeFull));
-}
-
-void Manager::desktopChange()
-{
-}
-
-void Manager::shadeChange()
-{
-}
-
-void Manager::paintEvent(TQPaintEvent *e)
-{
-   TQPainter p(widget());
-
-   TQRect r(e->rect());
-
-   bool intersectsLeft = r.intersects(TQRect(0, 0, 1, height()));
-
-   bool intersectsRight =
-      r.intersects(TQRect(width() - 1, 0, width(), height()));
-
-   if (intersectsLeft || intersectsRight)
-   {
-      p.setPen(TQt::black);
-
-      if (intersectsLeft)
-         p.drawLine(0, r.top(), 0, r.bottom());
-
-      if (intersectsRight)
-         p.drawLine(width() - 1, r.top(), width() - 1, r.bottom());
-   }
-
-   Static * s = Static::instance();
-
-   bool active = isActive();
-
-   // Title bar.
-
-   TQRect tr = titleSpacer_->tqgeometry();
-   bitBlt(widget(), tr.topLeft(), &titleBuf_);
-
-   // Resize bar.
-
-   if (isResizable())
-   {
-      int rbt = height() - Static::instance()->resizeHeight(); // Resize bar top
-
-      bitBlt(widget(), 0, rbt, &(s->resize(active)));
-      bitBlt(widget(), 30, rbt, &(s->resizeMidLeft(active)));
-
-      p.drawTiledPixmap(32, rbt, width() - 34,
-                        Static::instance()->resizeHeight(),
-                        s->resizeMidMid(active));
-
-      bitBlt(widget(), width() - 32, rbt, &(s->resizeMidRight(active)));
-      bitBlt(widget(), width() - 30, rbt, &(s->resize(active)));
-   }
-   else
-      p.drawLine(1, height() - 1, width() - 2, height() - 1);
-}
-
-void Manager::resizeEvent(TQResizeEvent*)
-{
-   updateButtonVisibility();
-   updateTitleBuffer();
-   widget()->tqrepaint();
-}
-
-void Manager::updateButtonVisibility()
-{
-#if 0
-   enum SizeProblem = { None, Small, Medium, Big };
-   SizeProblem sizeProblem = None;
-
-   if (width() < 80) sizeProblem = Big;
-   else if (width() < 100) sizeProblem = Medium;
-   else if (width() < 180) sizeProblem = Small;
-
-   switch (sizeProblem) {
-
-      case Small:
-         above_    ->hide();
-         lower_    ->hide();
-         sticky_   ->hide();
-         help_     ->hide();
-         iconify_  ->show();
-         maximise_ ->hide();
-         close_    ->show();
-         break;
-
-      case Medium:
-         above_    ->hide();
-         lower_    ->hide();
-         sticky_   ->hide();
-         help_     ->hide();
-         iconify_  ->hide();
-         maximise_ ->hide();
-         close_    ->show();
-         break;
-
-      case Big:
-         above_    ->hide();
-         lower_    ->hide();
-         sticky_   ->hide();
-         help_     ->hide();
-         iconify_  ->hide();
-         maximise_ ->hide();
-         close_    ->hide();
-         break;
-
-      case None:
-      default:
-         above_    ->show();
-         lower_    ->show();
-         sticky_   ->show();
-         if (providesContextHelp())
-           help_->show();
-         iconify_  ->show();
-         maximise_ ->show();
-         close_    ->show();
-         break;
-   }
-
-   tqlayout()->activate();
-#endif
-}
-
-void Manager::updateTitleBuffer()
-{
-   bool active = isActive();
-
-   Static * s = Static::instance();
-
-   TQRect tr = titleSpacer_->tqgeometry();
-
-   if (tr.width() == 0 || tr.height() == 0)
-      titleBuf_.resize(8, 8);
-   else
-      titleBuf_.resize(tr.size());
-
-   TQPainter p(&titleBuf_);
-
-   p.drawPixmap(0, 0, s->titleTextLeft(active));
-
-   p.drawTiledPixmap(3, 0, tr.width() - 6, Static::instance()->titleHeight(),
-                     s->titleTextMid(active));
-
-   p.setPen(options()->color(KDecorationOptions::ColorFont, active));
-
-   p.setFont(options()->font(active));
-
-   p.drawText(4, 2, tr.width() - 8, Static::instance()->titleHeight() - 4,
-              AlignCenter, caption());
-
-   p.drawPixmap(tr.width() - 3, 0, s->titleTextRight(active));
-}
-
-KDecoration::Position Manager::mousePosition(const TQPoint& p) const
-{
-   Position m = PositionCenter;
-
-   // Look out for off-by-one errors here.
-
-   if (isResizable())
-   {
-      if (p.y() > (height() - (Static::instance()->resizeHeight() + 1)))
-      {
-        // Keep order !
-
-         if (p.x() >= (width() - 30))
-            m = PositionBottomRight;
-         else if (p.x() <= 30)
-            m = PositionBottomLeft;
-         else
-            m = PositionBottom;
-      }
-      else
-      {
-         m = PositionCenter;
-         // Client::mousePosition(p);
-      }
-   }
-   else
-   {
-      m = PositionCenter;
-      // Client::mousePosition(p);
-   }
-
-   return m;
-}
-
-void Manager::mouseDoubleClickEvent(TQMouseEvent *e)
-{
-   if (e->button() == Qt::LeftButton && titleSpacer_->tqgeometry().contains(e->pos()))
-      titlebarDblClickOperation();
-}
-
-void Manager::wheelEvent(TQWheelEvent *e)
-{
-    if (isSetShade() || titleLayout_->tqgeometry().contains(e->pos()) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-void Manager::paletteChange(const TQPalette &)
-{
-   resetLayout();
-}
-
-void Manager::stickyChange(bool b)
-{
-   emit(stickyChanged(b));
-}
-
-void Manager::slotToggleSticky()
-{
-   toggleOnAllDesktops();
-   emit(stickyChanged(isOnAllDesktops()));
-}
-
-void Manager::slotAbove()
-{
-   setKeepAbove(!keepAbove());
-}
-
-void Manager::slotLower()
-{
-   setKeepBelow(!keepBelow());
-}
-
-void Manager::slotMaximizeClicked(ButtonState state)
-{
-#if KDE_IS_VERSION(3, 3, 0)
-   maximize(state);
-#else
-   switch (state)
-   {
-      case RightButton:
-         maximize(maximizeMode() ^ MaximizeHorizontal);
-         break;
-
-      case MidButton:
-         maximize(maximizeMode() ^ MaximizeVertical);
-         break;
-
-      case LeftButton:
-      default:
-         maximize(maximizeMode() == MaximizeFull ? MaximizeRestore
-                                                 : MaximizeFull);
-         break;
-   }
-#endif
-   emit(maximizeChanged(maximizeMode() == MaximizeFull));
-}
-
-bool Manager::animateMinimize(bool iconify)
-{
-   int style = Static::instance()->animationStyle();
-
-   switch (style)
-   {
-      case 1:
-      {
-         // Double twisting double back, with pike ;)
-
-         if (!iconify) // No animation for restore.
-            return true;
-
-         // Go away quick.
-         helperShowHide(false);
-         tqApp->syncX();
-
-         TQRect r = iconGeometry();
-
-         if (!r.isValid())
-            return true;
-
-         // Algorithm taken from Window Maker (http://www.windowmaker.org)
-
-         int sx = geometry().x();
-         int sy = geometry().y();
-         int sw = width();
-         int sh = height();
-         int dx = r.x();
-         int dy = r.y();
-         int dw = r.width();
-         int dh = r.height();
-
-         double steps = 12;
-
-         double xstep = double((dx-sx)/steps);
-         double ystep = double((dy-sy)/steps);
-         double wstep = double((dw-sw)/steps);
-         double hstep = double((dh-sh)/steps);
-
-         double cx = sx;
-         double cy = sy;
-         double cw = sw;
-         double ch = sh;
-
-         double finalAngle = 3.14159265358979323846;
-
-         double delta  = finalAngle / steps;
-
-         TQPainter p(workspaceWidget());
-         p.setRasterOp(TQt::NotROP);
-
-         for (double angle = 0; ; angle += delta)
-         {
-            if (angle > finalAngle)
-               angle = finalAngle;
-
-            double dx = (cw / 10) - ((cw / 5) * sin(angle));
-            double dch = (ch / 2) * cos(angle);
-            double midy = cy + (ch / 2);
-
-            TQPoint p1(int(cx + dx), int(midy - dch));
-            TQPoint p2(int(cx + cw - dx), p1.y());
-            TQPoint p3(int(cx + dw + dx), int(midy + dch));
-            TQPoint p4(int(cx - dx), p3.y());
-
-            grabXServer();
-
-            p.drawLine(p1, p2);
-            p.drawLine(p2, p3);
-            p.drawLine(p3, p4);
-            p.drawLine(p4, p1);
-
-            p.flush();
-
-            usleep(500);
-
-            p.drawLine(p1, p2);
-            p.drawLine(p2, p3);
-            p.drawLine(p3, p4);
-            p.drawLine(p4, p1);
-
-            ungrabXServer();
-
-            cx += xstep;
-            cy += ystep;
-            cw += wstep;
-            ch += hstep;
-
-            if (angle >= finalAngle)
-               break;
-         }
-      }
-      break;
-
-      case 2:
-      {
-         // KVirc style ? Maybe. For qwertz.
-
-         if (!iconify) // No animation for restore.
-            return true;
-
-         // Go away quick.
-         helperShowHide(false);
-         tqApp->syncX();
-
-         int stepCount = 12;
-
-         TQRect r(geometry());
-
-         int dx = r.width() / (stepCount * 2);
-         int dy = r.height() / (stepCount * 2);
-
-         TQPainter p(workspaceWidget());
-         p.setRasterOp(TQt::NotROP);
-
-         for (int step = 0; step < stepCount; step++)
-         {
-            r.moveBy(dx, dy);
-            r.setWidth(r.width() - 2 * dx);
-            r.setHeight(r.height() - 2 * dy);
-
-            grabXServer();
-
-            p.drawRect(r);
-            p.flush();
-            usleep(200);
-            p.drawRect(r);
-
-            ungrabXServer();
-         }
-      }
-      break;
-
-
-      default:
-      {
-         TQRect icongeom = iconGeometry();
-
-         if (!icongeom.isValid())
-            return true;
-
-         TQRect wingeom = geometry();
-
-         TQPainter p(workspaceWidget());
-
-         p.setRasterOp(TQt::NotROP);
-#if 0
-         if (iconify)
-            p.setClipRegion(TQRegion(workspaceWidget()->rect()) - wingeom);
-#endif
-         grabXServer();
-
-         p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
-         p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
-         p.drawLine(wingeom.topLeft(), icongeom.topLeft());
-         p.drawLine(wingeom.topRight(), icongeom.topRight());
-
-         p.flush();
-
-         tqApp->syncX();
-
-         usleep(30000);
-
-         p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
-         p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
-         p.drawLine(wingeom.topLeft(), icongeom.topLeft());
-         p.drawLine(wingeom.topRight(), icongeom.topRight());
-
-         ungrabXServer();
-      }
-      break;
-   }
-   return true;
-}
-
-void Manager::createTitle()
-{
-   leftButtonList_.clear();
-   rightButtonList_.clear();
-
-   TQString buttons;
-
-   if (options()->customButtonPositions())
-      buttons = options()->titleButtonsLeft() + "|" +
-                options()->titleButtonsRight();
-   else
-      buttons = "XSH|IA";
-
-   TQPtrList<Button> *buttonList = &leftButtonList_;
-
-   for (unsigned int i = 0; i < buttons.length(); ++i)
-   {
-      Button * tb = NULL;
-
-      switch (buttons[i].latin1())
-      {
-         case 'S': // Sticky
-            tb = new StickyButton(widget());
-            connect(this, TQT_SIGNAL(stickyChanged(bool)),
-                    tb, TQT_SLOT(setOn(bool)));
-            connect(tb, TQT_SIGNAL(toggleSticky()), this, TQT_SLOT(slotToggleSticky()));
-            emit(stickyChanged(isOnAllDesktops()));
-            break;
-
-         case 'H': // Help
-            if (providesContextHelp())
-            {
-               tb = new HelpButton(widget());
-               connect(tb, TQT_SIGNAL(help()), this, TQT_SLOT(showContextHelp()));
-            }
-            break;
-
-         case 'I': // Minimize
-            if (isMinimizable())
-            {
-               tb = new IconifyButton(widget());
-               connect(tb, TQT_SIGNAL(iconify()), this, TQT_SLOT(minimize()));
-            }
-            break;
-
-         case 'A': // Maximize
-            if (isMaximizable())
-            {
-               tb = new MaximiseButton(widget());
-               connect(tb, TQT_SIGNAL(maximizeClicked(ButtonState)),
-                       this, TQT_SLOT(slotMaximizeClicked(ButtonState)));
-               connect(this, TQT_SIGNAL(maximizeChanged(bool)),
-                       tb, TQT_SLOT(setOn(bool)));
-               emit(maximizeChanged(maximizeMode() == MaximizeFull));
-            }
-            break;
-
-         case 'F': // Above
-            tb = new AboveButton(widget());
-            connect(tb, TQT_SIGNAL(above()), this, TQT_SLOT(slotAbove()));
-            break;
-
-         case 'B': // Lower
-            tb = new LowerButton(widget());
-            connect(tb, TQT_SIGNAL(lower()), this, TQT_SLOT(slotLower()));
-            break;
-
-         case 'X': // Close
-            if (isCloseable())
-            {
-               tb = new CloseButton(widget());
-               connect(tb, TQT_SIGNAL(closeWindow()), this, TQT_SLOT(closeWindow()));
-            }
-            break;
-
-         case '|':
-            buttonList = &rightButtonList_;
-            break;
-      }
-
-      if (tb != NULL)
-      {
-         connect(this, TQT_SIGNAL(activeChanged(bool)), tb, TQT_SLOT(setActive(bool)));
-         buttonList->append(tb);
-      }
-   }
-
-   for (TQPtrListIterator<Button> it(leftButtonList_); it.current(); ++it)
-   {
-      it.current()->tqsetAlignment(Button::Left);
-      titleLayout_->addWidget(it.current());
-   }
-
-   titleSpacer_ = new TQSpacerItem(0, Static::instance()->titleHeight(),
-                                  TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-
-   titleLayout_->addItem(titleSpacer_);
-
-   for (TQPtrListIterator<Button> it(rightButtonList_); it.current(); ++it)
-   {
-      it.current()->tqsetAlignment(Button::Right);
-      titleLayout_->addWidget(it.current());
-   }
-}
-
-void Manager::resetLayout()
-{
-   delete topLayout_;
-   topLayout_ = new TQVBoxLayout(widget(), 0, 0);
-   topLayout_->setResizeMode(TQLayout::FreeResize);
-
-   titleLayout_ = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight, 0, 0);
-   titleLayout_->setResizeMode(TQLayout::FreeResize);
-
-   createTitle();
-
-   TQBoxLayout *midLayout = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight,
-                                          0, 0);
-   midLayout->setResizeMode(TQLayout::FreeResize);
-   midLayout->addSpacing(1);
-   if (isPreview())
-      midLayout->addWidget(
-         new TQLabel(i18n("<center><b>RiscOS preview</b></center>"), widget()));
-   midLayout->addSpacing(1);
-
-   if (isResizable())
-      topLayout_->addSpacing(Static::instance()->resizeHeight());
-   else
-      topLayout_->addSpacing(1);
-}
-
-// --------------------
-
-Factory::Factory()
-{
-   (void) RiscOS::Static::instance();
-}
-
-Factory::~Factory()
-{
-   delete RiscOS::Static::instance();
-}
-
-bool Factory::reset(unsigned long /*changed*/)
-{
-   RiscOS::Static::instance()->reset();
-   return true;
-}
-
-bool Factory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-        case AbilityButtonAboveOthers:
-        case AbilityButtonBelowOthers:
-            return true;
-        default:
-            return false;
-    };
-}
-
-KDecoration* Factory::createDecoration(KDecorationBridge *bridge)
-{
-   return new Manager(bridge, this);
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-#include "Manager.moc"
diff --git a/kwin-styles/riscos/Manager.h b/kwin-styles/riscos/Manager.h
deleted file mode 100644
index 5668a7fc..00000000
--- a/kwin-styles/riscos/Manager.h
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_MANAGER_H
-#define RISC_OS_MANAGER_H
-
-#include <tqdict.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQSpacerItem;
-class TQVBoxLayout;
-class TQBoxLayout;
-
-namespace RiscOS
-{
-
-class LowerButton;
-class CloseButton;
-class IconifyButton;
-class MaximiseButton;
-class StickyButton;
-class HelpButton;
-class Button;
-
-class Manager : public KDecoration
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      Manager(KDecorationBridge*, KDecorationFactory*);
-      ~Manager();
-      void init();
-      bool eventFilter(TQObject*, TQEvent*);
-      void reset(unsigned long changed);
-      void borders(int&, int&, int&, int&) const;
-      void resize(const TQSize&);
-      TQSize tqminimumSize() const;
-      void activeChange();
-      void captionChange();
-      void iconChange();
-      void maximizeChange();
-      void desktopChange();
-      void shadeChange();
-
-   signals:
-
-      void maximizeChanged(bool);
-      void stickyChanged(bool);
-      void activeChanged(bool);
-
-   public slots:
-
-      void slotAbove();
-      void slotLower();
-      void slotMaximizeClicked(ButtonState);
-      void slotToggleSticky();
-
-   protected:
-
-      KDecoration::Position mousePosition(const TQPoint &) const;
-      void paletteChange(const TQPalette &);
-      void activeChange(bool);
-      void stickyChange(bool);
-      void paintEvent(TQPaintEvent *);
-      void resizeEvent(TQResizeEvent *);
-      void mouseDoubleClickEvent(TQMouseEvent *);
-      void wheelEvent(TQWheelEvent *e);
-      bool animateMinimize(bool);
-      void updateButtonVisibility();
-      void updateTitleBuffer();
-
-      void createTitle();
-      void resetLayout();
-
-   private:
-
-      TQVBoxLayout       *topLayout_;
-      TQBoxLayout        *titleLayout_;
-      TQSpacerItem       *titleSpacer_;
-
-      TQPixmap           titleBuf_;
-      TQPtrList<Button>  leftButtonList_;
-      TQPtrList<Button>  rightButtonList_;
-};
-
-class Factory : public TQObject, public KDecorationFactory
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-      Factory();
-      ~Factory();
-      virtual bool reset(unsigned long changed);
-      virtual KDecoration* createDecoration(KDecorationBridge*);
-      virtual bool supports( Ability ability );
-};
-
-} // End namespace
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/MaximiseButton.cpp b/kwin-styles/riscos/MaximiseButton.cpp
deleted file mode 100644
index dcc1b52a..00000000
--- a/kwin-styles/riscos/MaximiseButton.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "MaximiseButton.h"
-
-#include <tqtooltip.h>
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const maximise_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"            ",
-"  ........  ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-" .++++++++. ",
-"  ........  ",
-"            "};
-
-/* XPM */
-static const char * const unmaximise_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"            ",
-"            ",
-"   ......   ",
-"  .++++++.  ",
-"  .++++++.  ",
-"  .++++++.  ",
-"  .++++++.  ",
-"  .++++++.  ",
-"  .++++++.  ",
-"   ......   ",
-"            ",
-"            "};
-
-MaximiseButton::MaximiseButton(TQWidget * parent)
-  : Button(parent, i18n("Maximize"),
-           (ButtonState)(Qt::LeftButton|Qt::MidButton|Qt::RightButton)),
-    on_(false)
-{
-   setPixmap(TQPixmap((const char **)maximise_xpm));
-}
-
-void MaximiseButton::setOn(bool on)
-{
-   on_ = on;
-   setPixmap(on_ ? TQPixmap((const char **)unmaximise_xpm)
-                 : TQPixmap((const char **)maximise_xpm));
-   tqrepaint();
-   TQToolTip::remove(this);
-   TQToolTip::add(this, on_ ? i18n("Restore") : i18n("Maximize"));
-}
-
-void MaximiseButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-   emit(maximizeClicked(lastButton_));
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-#include "MaximiseButton.moc"
diff --git a/kwin-styles/riscos/MaximiseButton.h b/kwin-styles/riscos/MaximiseButton.h
deleted file mode 100644
index 770c9370..00000000
--- a/kwin-styles/riscos/MaximiseButton.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_MAXIMISE_BUTTON_H
-#define RISC_OS_MAXIMISE_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class MaximiseButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      MaximiseButton(TQWidget *parent);
-
-   public slots:
-
-      void setOn(bool);
-
-   signals:
-
-      void maximizeClicked(ButtonState);
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-
-   private:
-
-      bool on_;
-};
-
-} // End namespace
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/Palette.h b/kwin-styles/riscos/Palette.h
deleted file mode 100644
index 3fb71ab0..00000000
--- a/kwin-styles/riscos/Palette.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_PALETTE_H
-#define RISC_OS_PALETTE_H
-
-#include <tqmemarray.h>
-#include <tqglobal.h>
-
-namespace RiscOS
-{
-
-class Palette
-{
-   public:
-
-      Palette()
-      {
-         data_.resize(8);
-
-         data_[0] = 0xFFFFFFFF;
-         data_[1] = 0xFFDCDCDC;
-         data_[2] = 0xFFC3C3C3;
-         data_[3] = 0xFFA0A0A0;
-         data_[4] = 0xFF808080;
-         data_[5] = 0xFF585858;
-         data_[6] = 0xFF303030;
-         data_[7] = 0xFF000000;
-      }
-
-      TQRgb& operator [] (int idx)
-      {
-         return data_[idx];
-      }
-
-      TQRgb operator [] (int idx) const
-      {
-         return data_[idx];
-      }
-
-   private:
-
-      TQMemArray<TQRgb> data_;
-};
-
-} // End namespace
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/README b/kwin-styles/riscos/README
deleted file mode 100644
index 39d1d959..00000000
--- a/kwin-styles/riscos/README
+++ /dev/null
@@ -1,90 +0,0 @@
-This theme emulates the look and feel of the RISC OS 'window manager'.
-Actually, RISC OS doesn't have a window manager in the same way X
-does, but if you imagine it does, this is an emulation of that ;)
-
-The look is obviously quite different, but coming anywhere close to
-the unique look of RISC OS would be quite blatantly obvious, so to
-avoid copyright issues, the look of this theme is unique. You may
-consider it to be RISC OS grown up ;)
-
-Functions that will be implemented but are currently missing:
-  Transparent resize.
-  Shading.
-  Backward-resize.
-  NOTE: Backward-resize is an interesting feature and quite useful.
-        If you resize a window such that you hit the screen edge
-        in the process, the window resizes 'backwards' (i.e.
-        moves in the opposite direction to your drag and at the
-        same time continues increasing in size). So instead
-        of having to let go of the resize handle, move the window
-        and resize again, it just does what you want it to do.
-
-Button functions: (Missing functionality is marked with TODO)
-
-Button One:
-
-  Left button: TODO
-               Lower window and drop focus. This is currently unimplemented
-               in twin itself.
-
-Button Two:
-
-  Left button: Close window.
-
-  Right button: TODO, if I can be bothered.
-                Close window.
-                If window is filer window, open another filer window
-                in parent dir.
-                If window is document window, open a filer window in
-                dir containing document.
-                If you hold Shift, the window doesn't close.
-                NOTE:
-                This requires app support.
-                If I were to implement this, I would do it in konqy
-                and probably not bother for other apps.
-
-Titlebar:
-
-  Left button: Raise, focus and move window
-
-  Middle button: Move window
-
-  Right button: Menu
-                Note: Buttons are this way around for compatibility with
-                other twin themes.
-
-Button Three:
-
-  Left button: Iconify window.
-
-Button Four:
-
-  Left button: Maximise or restore window plus raise and focus.
-
-  Middle button: Maximise vertically or restore window plus raise and focus.
-
-  Right button: Maximise or restore window.
-
-Resize bar left/right:
-
-  Left button: Move that corner (resizes window) and raise
-
-  Other buttons: Same without raising
-
-Resize bar centre:
-
-  Left button: Move that edge (resizes window) and raise
-
-  Other buttons: Same without raising
-
-The lower bar is used for resizing. It works in the NeXT style.
-This doesn't exist on RISC OS. In RISC OS, there is a 'resize handle'
-in the lower right corner of the window (actually inside the window).
-
-To emulate this would mean covering part of the window with the decorations,
-which is not acceptable. RISC OS gets away with it by making sure that
-there is a vertical scrollbar visible at all times, which is just stupid.
-It's also an impossibility with X11, as the window manager does not know
-anything about scrollbars - they belong to the application, so don't ask
-me to implement it.
-
diff --git a/kwin-styles/riscos/Static.cpp b/kwin-styles/riscos/Static.cpp
deleted file mode 100644
index 7aac6f5a..00000000
--- a/kwin-styles/riscos/Static.cpp
+++ /dev/null
@@ -1,540 +0,0 @@
-/*
-  RISC OS KWin client
-
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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.
-*/
-
-// for enable-final
-#ifdef Bool
-#undef Bool
-#endif
-
-#include <tqimage.h>
-#include <tqpixmap.h>
-#include <tqpainter.h>
-#include <tqptrlist.h>
-
-#include <kdecoration.h>
-
-// #include <ksimpleconfig.h>
-
-#include "Static.h"
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const texture_xpm[] = {
-"64 12 3 1",
-" 	c None",
-"a	c #000000",
-"b	c #FFFFFF",
-"   b           b         b     b   b b       b        a       b ",
-" b       aa   b  aaa aaa     b   a   b   aab     bb           a ",
-" b     b    a b    b   b             b       aa      b b   aa   ",
-" b b     b     a         a b   b b b  aa  ab             ab     ",
-"         b     b   b b       b                 b   b  ba        ",
-" aaa aaa         aa       b          b b b   b           b      ",
-"   b       b      bb a b     aa  b         a  a  aaa a     b    ",
-" b         b b b b     a b       b       b         b           b",
-"   b b       b              b  a a b  b  aa      b       baa    ",
-"       a     b    a  bb  aa    bb aa aaa  b     aa a            ",
-"   a a       aab       b  b   aa aab          a  b              ",
-" b        a        b   b aaa  a      b      bb     b   b     b b"};
-
-Static* Static::instance_ = NULL;
-
-Static::Static()
-{
-   instance_ = this;
-   _init();
-}
-
-Static::~Static()
-{
-   instance_ = NULL;
-}
-
-const TQPixmap& Static::titleTextLeft(bool active) const
-{
-   return active ? aTitleTextLeft_ : iTitleTextLeft_;
-}
-
-const TQPixmap& Static::titleTextRight(bool active) const
-{
-   return active ? aTitleTextRight_ : iTitleTextRight_;
-}
-
-const TQPixmap& Static::resizeMidLeft(bool active) const
-{
-   return active ? aResizeMidLeft_ : iResizeMidLeft_;
-}
-
-const TQPixmap& Static::resizeMidRight(bool active) const
-{
-   return active ? aResizeMidRight_ : iResizeMidRight_;
-}
-
-const TQPixmap& Static::titleTextMid(bool active) const
-{
-   return active ? aTitleTextMid_ : iTitleTextMid_;
-}
-
-const TQPixmap& Static::resizeMidMid(bool active) const
-{
-   return active ? aResizeMid_ : iResizeMid_;
-}
-
-const TQPixmap& Static::resize(bool active) const
-{
-   return active ? aResize_ : iResize_;
-}
-
-int Static::animationStyle() const
-{
-   return animationStyle_;
-}
-
-int Static::titleHeight() const
-{
-   return titleHeight_;
-}
-
-int Static::resizeHeight() const
-{
-   return resizeHeight_;
-}
-
-void Static::_drawBorder(TQPixmap &pix, int w, int h)
-{
-   // 0111111113
-   // 1122222235
-   // 12      46
-   // 12      46
-   // 12      46
-   // 1344444476
-   // 3566666667
-
-   painter_.begin(&pix);
-   painter_.translate(transx, transy);
-
-   TQColor c0 = down_ ? palette_[7] : palette_[0];
-   TQColor c1 = down_ ? palette_[6] : palette_[1];
-   TQColor c2 = down_ ? palette_[5] : palette_[2];
-   TQColor c3 = down_ ? palette_[4] : palette_[3];
-   TQColor c4 = down_ ? palette_[3] : palette_[4];
-   TQColor c5 = down_ ? palette_[2] : palette_[5];
-   TQColor c6 = down_ ? palette_[2] : palette_[6];
-   TQColor c7 = down_ ? palette_[1] : palette_[7];
-
-   painter_.setPen(c0);
-   painter_.drawPoint(0, 0);
-
-   painter_.setPen(c1);
-   painter_.drawPoint(1, 1);
-   painter_.drawLine(1, 0, w - 1, 0);
-   painter_.drawLine(0, 1, 0, h - 1);
-
-   painter_.setPen(c2);
-   painter_.drawLine(2, 1, w - 2, 1);
-   painter_.drawLine(1, 2, 1, h - 2);
-
-   painter_.setPen(c3);
-   painter_.drawPoint(0, h);
-   painter_.drawPoint(1, h - 1);
-   painter_.drawPoint(w, 0);
-   painter_.drawPoint(w - 1, 1);
-   painter_.fillRect(2, 2, w - 2, h - 2, c3);
-
-   painter_.setPen(c4);
-   painter_.drawLine(2, h - 1, w - 2, h - 1);
-   painter_.drawLine(w - 1, 2, w - 1, h - 2);
-
-   painter_.setPen(c5);
-   painter_.drawPoint(w, 1);
-   painter_.drawPoint(1, h);
-
-   painter_.setPen(c6);
-   painter_.drawLine(w, 2, w, h - 1);
-   painter_.drawLine(2, h, w - 1, h);
-
-   painter_.setPen(c7);
-   painter_.drawPoint(w - 1, h - 1);
-   painter_.drawPoint(w, h);
-
-   painter_.end();
-
-   painter_.resetXForm();
-}
-
-void setPalette(Palette &pal, TQColor c)
-{
-   pal[3] = c.rgb();
-
-   int h, s, v;
-   c.hsv(&h, &s, &v);
-
-   if (v < 72)
-      c.setHsv(h, s, 72);
-
-   pal[0] = c.light(200).rgb();
-   pal[1] = c.light(166).rgb();
-   pal[2] = c.light(125).rgb();
-   pal[4] = c.dark(133).rgb();
-   pal[5] = c.dark(166).rgb();
-   pal[6] = c.dark(200).rgb();
-   pal[7] = c.dark(300).rgb();
-}
-
-void Static::_init()
-{
-   hicolour_ = TQPixmap::defaultDepth() > 8;
-   animationStyle_ = 0;
-   updatePixmaps();
-}
-
-void Static::reset()
-{
-   updatePixmaps();
-//   Workspace::self()->slotResetAllClientsDelayed();
-}
-
-void Static::updatePixmaps()
-{
-   _initSizes();
-
-   _resizeAllPixmaps();
-
-   _blankAllPixmaps();
-
-   if (hicolour_)
-   {
-      _initPalettes();
-      _initTextures();
-   }
-
-   _drawTitleTextAreaSides();
-
-   _drawResizeCentralAreaSides();
-
-   _drawTitleTextAreaBackground();
-
-   _drawResizeCentralAreaBackground();
-
-   _drawResizeHandles();
-
-   _drawButtonBackgrounds();
-}
-
-void Static::_createTexture(TQPixmap &px, int t, bool active)
-{
-   const TQImage texture(TQPixmap((const char **)texture_xpm).convertToImage());
-   const TQRgb w(tqRgb(255, 255, 255));
-   const TQRgb b(tqRgb(0, 0, 0));
-
-   TQColor c(KDecoration::options()->color(KDecoration::ColorType(t), active));
-
-   TQRgb mid    (c.rgb());
-   TQRgb light  (c.light(110).rgb());
-   TQRgb dark   (c.dark(110).rgb());
-
-   TQRgb* data(reinterpret_cast<TQRgb *>(const_cast<TQImage&>(texture).bits()));
-
-   for (int x = 0; x < 64*12; x++)
-      if (data[x] == w)
-         data[x] = light;
-      else if (data[x] == b)
-         data[x] = dark;
-      else
-         data[x] = mid;
-
-   px.convertFromImage(texture);
-}
-
-const TQPixmap& Static::buttonBase(bool active, bool down) const
-{
-   if (active)
-      return down ? aButtonDown_ : aButtonUp_;
-   else
-      return down ? iButtonDown_ : iButtonUp_;
-}
-
-void Static::_initSizes()
-{
-   TQFont f(KDecoration::options()->font(true)); // XXX false doesn't work right at the moment
-
-   TQFontMetrics fm(f);
-
-   int h = fm.height();
-
-   titleHeight_ = h + 6;
-
-   if (titleHeight_ < 20)
-      titleHeight_ = 20;
-
-   buttonSize_ = titleHeight_ - 1;
-
-   resizeHeight_ = 10;
-}
-
-void Static::_resizeAllPixmaps()
-{
-   aResize_        .resize(30, resizeHeight_);
-   iResize_        .resize(30, resizeHeight_);
-   aTitleTextLeft_ .resize( 3, titleHeight_);
-   aTitleTextRight_.resize( 3, titleHeight_);
-   iTitleTextLeft_ .resize( 3, titleHeight_);
-   iTitleTextRight_.resize( 3, titleHeight_);
-   aTitleTextMid_  .resize(64, titleHeight_);
-   iTitleTextMid_  .resize(64, titleHeight_);
-   aResizeMidLeft_ .resize( 3, resizeHeight_);
-   aResizeMidRight_.resize( 3, resizeHeight_);
-   iResizeMidLeft_ .resize( 3, resizeHeight_);
-   iResizeMidRight_.resize( 3, resizeHeight_);
-   aResizeMid_     .resize(64, resizeHeight_);
-   iResizeMid_     .resize(64, resizeHeight_);
-
-   aButtonUp_      .resize(buttonSize_, buttonSize_);
-   iButtonUp_      .resize(buttonSize_, buttonSize_);
-   aButtonDown_    .resize(buttonSize_, buttonSize_);
-   iButtonDown_    .resize(buttonSize_, buttonSize_);
-}
-
-void Static::_blankAllPixmaps()
-{
-   aResize_        .fill(TQt::black);
-   iResize_        .fill(TQt::black);
-   aTitleTextLeft_ .fill(TQt::black);
-   aTitleTextRight_.fill(TQt::black);
-   iTitleTextLeft_ .fill(TQt::black);
-   iTitleTextRight_.fill(TQt::black);
-   aTitleTextMid_  .fill(TQt::black);
-   iTitleTextMid_  .fill(TQt::black);
-   aResizeMidLeft_ .fill(TQt::black);
-   aResizeMidRight_.fill(TQt::black);
-   iResizeMidLeft_ .fill(TQt::black);
-   iResizeMidRight_.fill(TQt::black);
-   aResizeMid_     .fill(TQt::black);
-   iResizeMid_     .fill(TQt::black);
-   aButtonUp_      .fill(TQt::black);
-   iButtonUp_      .fill(TQt::black);
-   aButtonDown_    .fill(TQt::black);
-   iButtonDown_    .fill(TQt::black);
-}
-
-void Static::_initPalettes()
-{
-   const KDecorationOptions* options = KDecoration::options();
-   setPalette(aButPal_, options->color(KDecoration::ColorButtonBg, true));
-   setPalette(iButPal_, options->color(KDecoration::ColorButtonBg, false));
-
-   setPalette(aTitlePal_,  options->color(KDecoration::ColorTitleBar, true));
-   setPalette(iTitlePal_,  options->color(KDecoration::ColorTitleBar, false));
-
-   setPalette(aResizePal_, options->color(KDecoration::ColorTitleBar, true));
-   setPalette(iResizePal_, options->color(KDecoration::ColorTitleBar, false));
-}
-
-void Static::_initTextures()
-{
-   _createTexture(aTexture_,  KDecoration::ColorTitleBar, true);
-   _createTexture(iTexture_,  KDecoration::ColorTitleBar, false);
-   _createTexture(abTexture_, KDecoration::ColorButtonBg, true);
-   _createTexture(ibTexture_, KDecoration::ColorButtonBg, false);
-}
-
-void Static::_drawTitleTextAreaSides()
-{
-   TQPixmap temp(4, titleHeight_);
-   temp.fill(TQt::black);
-
-   transx = transy = 0.0;
-
-   palette_ = aTitlePal_;
-   down_ = false;
-
-   _drawBorder(temp, 4, titleHeight_ - 2);
-
-   painter_.begin(&aTitleTextLeft_);
-   painter_.tqdrawPixmap(1, 1, temp, 0, 1);
-   painter_.end();
-
-   painter_.begin(&aTitleTextRight_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
-   painter_.end();
-
-   palette_ = iTitlePal_;
-   _drawBorder(temp, 4, titleHeight_ - 2);
-
-   painter_.begin(&iTitleTextLeft_);
-   painter_.tqdrawPixmap(1, 1, temp, 0, 1);
-   painter_.end();
-
-   painter_.begin(&iTitleTextRight_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
-   painter_.end();
-}
-
-void Static::_drawResizeCentralAreaSides()
-{
-   TQPixmap temp(4, resizeHeight_);
-   temp.fill(TQt::black);
-
-   transy = 1.0;
-
-   palette_ = aResizePal_;
-
-   _drawBorder(temp, 4, resizeHeight_ - 3);
-
-   painter_.begin(&aResizeMidLeft_);
-   painter_.tqdrawPixmap(0, 1, temp, 0, 1);
-   painter_.end();
-
-   painter_.begin(&aResizeMidRight_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
-   painter_.end();
-
-   palette_ = iResizePal_;
-   _drawBorder(temp, 4, resizeHeight_ - 3);
-
-   painter_.begin(&iResizeMidLeft_);
-   painter_.tqdrawPixmap(0, 1, temp, 0, 1);
-   painter_.end();
-
-   painter_.begin(&iResizeMidRight_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
-   painter_.end();
-}
-
-void Static::_drawTitleTextAreaBackground()
-{
-   TQPixmap temp(70, titleHeight_);
-   temp.fill(TQt::black);
-
-   transx = transy = 0.0;
-
-   palette_ = aTitlePal_;
-   _drawBorder(temp, 70, titleHeight_ - 3);
-
-   painter_.begin(&aTitleTextMid_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 0);
-   if (hicolour_)
-      painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, aTexture_);
-   painter_.end();
-
-   palette_ = iTitlePal_;
-   _drawBorder(temp, 70, titleHeight_ - 3);
-
-   painter_.begin(&iTitleTextMid_);
-   painter_.tqdrawPixmap(0, 1, temp, 2, 0);
-   if (hicolour_)
-      painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, iTexture_);
-   painter_.end();
-}
-
-void Static::_drawResizeCentralAreaBackground()
-{
-   TQPixmap temp(70, titleHeight_);
-   temp.fill(TQt::black);
-
-   transy = 1.0;
-
-   palette_ = aResizePal_;
-   _drawBorder(temp, 70, resizeHeight_ - 3);
-
-   painter_.begin(&aResizeMid_);
-   painter_.tqdrawPixmap(0, 0, temp, 2, 0);
-   if (hicolour_)
-      painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, aTexture_);
-   painter_.end();
-
-   palette_ = iResizePal_;
-   _drawBorder(temp, 70, 7);
-
-   painter_.begin(&iResizeMid_);
-   painter_.tqdrawPixmap(0, 0, temp, 2, 0);
-   if (hicolour_)
-      painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, iTexture_);
-   painter_.end();
-}
-
-void Static::_drawResizeHandles()
-{
-   transx = transy = 1.0;
-
-   down_ = false;
-
-   palette_ = aResizePal_;
-   _drawBorder(aResize_, 28, resizeHeight_ - 3);
-
-   if (hicolour_)
-   {
-      painter_.begin(&aResize_);
-      painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, aTexture_);
-      painter_.end();
-   }
-
-   palette_ = iResizePal_;
-   _drawBorder(iResize_, 28, resizeHeight_ - 3);
-
-   if (hicolour_)
-   {
-      painter_.begin(&iResize_);
-      painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, iTexture_);
-      painter_.end();
-   }
-}
-
-void Static::_drawButtonBackgrounds()
-{
-   buttonSize_ -= 2;
-
-   down_ = false;
-   transx = 0.0;
-   transy = 1.0;
-   palette_ = aButPal_;
-   _drawBorder(aButtonUp_, buttonSize_, buttonSize_);
-   down_ = true;
-   _drawBorder(aButtonDown_, buttonSize_, buttonSize_);
-
-   palette_ = iButPal_;
-   _drawBorder(iButtonDown_, buttonSize_, buttonSize_);
-   down_ = false;
-   _drawBorder(iButtonUp_, buttonSize_, buttonSize_);
-
-   painter_.begin(&aButtonUp_);
-
-   if (hicolour_)
-      painter_.drawTiledPixmap(2, 4, buttonSize_ - 4, buttonSize_ - 5,
-                               abTexture_);
-
-   painter_.end();
-
-   painter_.begin(&iButtonUp_);
-   if (hicolour_)
-      painter_.drawTiledPixmap(2, 4, buttonSize_ - 4, buttonSize_ - 5,
-                               ibTexture_);
-
-   painter_.end();
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-
diff --git a/kwin-styles/riscos/Static.h b/kwin-styles/riscos/Static.h
deleted file mode 100644
index 0a5b4cdb..00000000
--- a/kwin-styles/riscos/Static.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_STATIC_H
-#define RISC_OS_STATIC_H
-
-#include <tqimage.h>
-#include <tqpixmap.h>
-#include <tqpainter.h>
-#include <tqstringlist.h>
-
-#include "Palette.h"
-
-namespace RiscOS
-{
-
-enum SymbolType { Lower, Close, Iconify, Max, Unmax };
-
-class Static
-{
-   public:
-
-      Static();
-
-      ~Static();
-
-      static Static* instance()
-      {
-         if (instance_ == 0)
-         new Static;
-
-         return instance_;
-      }
-
-      void reset();
-      void updatePixmaps();
-
-      const TQPixmap& titleTextLeft(bool active) const;
-      const TQPixmap& titleTextRight(bool active) const;
-      const TQPixmap& resizeMidLeft(bool active) const;
-      const TQPixmap& resizeMidRight(bool active) const;
-      const TQPixmap& titleTextMid(bool active) const;
-      const TQPixmap& resizeMidMid(bool active) const;
-      const TQPixmap& buttonBase(bool active, bool down) const;
-      const TQPixmap& resize(bool active) const;
-
-      int animationStyle() const;
-      int titleHeight() const;
-      int resizeHeight() const;
-
-  private:
-
-      void _init();
-
-      void _drawBorder(TQPixmap&, int, int);
-      void _createTexture(TQPixmap&, int, bool);
-
-      void _initSizes();
-
-      void _resizeAllPixmaps();
-      void _blankAllPixmaps();
-
-      void _initPalettes();
-      void _initTextures();
-
-      void _drawTitleTextAreaSides();
-      void _drawResizeCentralAreaSides();
-      void _drawTitleTextAreaBackground();
-      void _drawResizeCentralAreaBackground();
-      void _drawResizeHandles();
-      void _drawButtonBackgrounds();
-
-      static Static *instance_;
-
-      Palette
-         aTitlePal_,
-         iTitlePal_,
-         aResizePal_,
-         iResizePal_,
-         aButPal_,
-         iButPal_;
-
-      TQPixmap
-         aButtonUp_,         iButtonUp_,
-         aButtonDown_,       iButtonDown_,
-         aResize_,           iResize_,
-         aResizeDown_,       iResizeDown_,
-         aTitleTextLeft_,    iTitleTextLeft_,
-         aTitleTextRight_,   iTitleTextRight_,
-         aTitleTextMid_,     iTitleTextMid_,
-         aResizeMidLeft_,    iResizeMidLeft_,
-         aResizeMidRight_,   iResizeMidRight_,
-         aResizeMid_,        iResizeMid_;
-
-      TQPixmap aTexture_, iTexture_, abTexture_, ibTexture_;
-
-      TQPainter painter_;
-      bool down_;
-      Palette palette_;
-      double transx, transy;
-
-      int animationStyle_;
-
-      int titleHeight_;
-      int buttonSize_;
-      int resizeHeight_;
-
-      bool hicolour_;
-};
-
-} // End namespace
-
-#endif
- 
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/StickyButton.cpp b/kwin-styles/riscos/StickyButton.cpp
deleted file mode 100644
index 2229f915..00000000
--- a/kwin-styles/riscos/StickyButton.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 "StickyButton.h"
-
-#include <tqtooltip.h>
-
-namespace RiscOS
-{
-
-/* XPM */
-static const char * const unsticky_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"    ...     ",
-"   .+++.    ",
-"   .+++.    ",
-"   .+++.    ",
-"   .+++.    ",
-"  .+++++.   ",
-" .+++++++.  ",
-".+++++++++. ",
-".....+..... ",
-"    .+.     ",
-"    .+.     ",
-"     .      "};
-
-/* XPM */
-static const char * const sticky_xpm[] = {
-"12 12 3 1",
-" 	c None",
-".	c #000000",
-"+	c #FFFFFF",
-"        .   ",
-"       .+.  ",
-"      .+++. ",
-"     .+++++.",
-" ....+++++. ",
-"  .++++++.  ",
-"   .++++.   ",
-"   .+++.    ",
-"  .+..+.    ",
-" .+.  ..    ",
-".+.    .    ",
-"..          "};
-
-
-StickyButton::StickyButton(TQWidget *parent)
-  : Button(parent, i18n("On all desktops")), on_(false)
-{
-   setPixmap(TQPixmap((const char **)sticky_xpm));
-}
-
-void StickyButton::setOn(bool on)
-{
-   on_ = on;
-   setPixmap(on_ ? TQPixmap((const char **)unsticky_xpm) :
-                   TQPixmap((const char **)sticky_xpm));
-   tqrepaint();
-   TQToolTip::remove(this);
-   TQToolTip::add(this, on_ ? i18n("Not on all desktops")
-                           : i18n("On all desktops"));
-}
-
-void StickyButton::mouseReleaseEvent(TQMouseEvent *e)
-{
-   Button::mouseReleaseEvent(e);
-
-   if (!rect().contains(e->pos()))
-      return;
-
-   emit(toggleSticky());   
-}
-
-} // End namespace
-
-// vim:ts=2:sw=2:tw=78
-#include "StickyButton.moc"
diff --git a/kwin-styles/riscos/StickyButton.h b/kwin-styles/riscos/StickyButton.h
deleted file mode 100644
index 26c0428e..00000000
--- a/kwin-styles/riscos/StickyButton.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-  RISC OS KWin client
-  
-  Copyright 2000
-    Rik Hemsley <rik@kde.org>
-
-  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 RISC_OS_STICKY_BUTTON_H
-#define RISC_OS_STICKY_BUTTON_H
-
-#include "Button.h"
-
-namespace RiscOS
-{
-
-class StickyButton : public Button
-{
-   Q_OBJECT
-  TQ_OBJECT
-
-   public:
-
-      StickyButton(TQWidget *parent);
-
-   public slots:
-
-      void setOn(bool);
-
-   signals:
-
-      void toggleSticky();
-
-   protected:
-
-      void mouseReleaseEvent(TQMouseEvent *);
-
-   private:
-
-      bool on_;
-};
-
-} // End namespace
-
-#endif
-
-// vim:ts=2:sw=2:tw=78
diff --git a/kwin-styles/riscos/riscos.desktop b/kwin-styles/riscos/riscos.desktop
deleted file mode 100644
index b58aefda..00000000
--- a/kwin-styles/riscos/riscos.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Name=RISC OS
-Name[cs]=Risc OS
-Name[cy]= RISC OS
-Name[hi]=रिस्क ओएस
-Name[ta]=RISC இ.த
-Name[th]=ระบบปฏิบัติการบนชิพ RISC
-Name[uk]=RISC ОС
-Name[xh]=i RISC OS
-Name[zu]=IRISC OS
-X-KDE-Library=twin3_riscos
diff --git a/kwin-styles/smooth-blend/AUTHORS b/kwin-styles/smooth-blend/AUTHORS
deleted file mode 100644
index c96228bb..00000000
--- a/kwin-styles/smooth-blend/AUTHORS
+++ /dev/null
@@ -1 +0,0 @@
-Ryan Nickell p0z3r@users.sourceforge.net
diff --git a/kwin-styles/smooth-blend/CMakeLists.txt b/kwin-styles/smooth-blend/CMakeLists.txt
deleted file mode 100644
index bfd4d79f..00000000
--- a/kwin-styles/smooth-blend/CMakeLists.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( client )
\ No newline at end of file
diff --git a/kwin-styles/smooth-blend/COPYING b/kwin-styles/smooth-blend/COPYING
deleted file mode 100644
index e065ffa0..00000000
--- a/kwin-styles/smooth-blend/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/kwin-styles/smooth-blend/CREDITS b/kwin-styles/smooth-blend/CREDITS
deleted file mode 100644
index a4481ec9..00000000
--- a/kwin-styles/smooth-blend/CREDITS
+++ /dev/null
@@ -1,5 +0,0 @@
-Justin Berstler aka spasemunkie on kdelook.org - spasemunkie at gmail.com : for his buttons!
-Rick aka bitwit on kdelook.org - bitwit at digilanti.org : for his twin_template
-David Johnson - david at usermode.org : for his example twin tutorial
-Thomas Lübking aka thomas12777 on kdelook.org - baghira-style at gmx.net : for answering questions on getting pixmap buttons into code
-Scott Grayban aka sgrayban on kdelook.org : for testing and hosting the files to be downloaded
diff --git a/kwin-styles/smooth-blend/ChangeLog b/kwin-styles/smooth-blend/ChangeLog
deleted file mode 100644
index 7b8fbcf2..00000000
--- a/kwin-styles/smooth-blend/ChangeLog
+++ /dev/null
@@ -1,22 +0,0 @@
-03.16.2005: (1.0 release)
------------
-Double click actions to maximize now show corresponding buttons
-when maximized.
-Windows that open maximized show the correct button and restoring
-changes the button to the restore button as one would expect.
-Removal of the title bar separator line, to complete the feel of 
-a "smooth blend".
-
-02.28.2005: (beta2)
------------
-Added kcontrol config option to remove titlebar separator line.
-Application icons now resize to match the size of the buttons
-instead of being a fixed size 16x16 icon.
-Added button animations for mouse hover; configurable in kcontrol
-to either Intensify or Fade.
-Fixed some title bar drawing that wasn't correctly sectioned off.
-
-
-02.22.2005: (beta1)
------------
-smoothblend-beta1 released.
diff --git a/kwin-styles/smooth-blend/INSTALL b/kwin-styles/smooth-blend/INSTALL
deleted file mode 100644
index 02a4a074..00000000
--- a/kwin-styles/smooth-blend/INSTALL
+++ /dev/null
@@ -1,167 +0,0 @@
-Basic Installation
-==================
-
-   These are generic installation instructions.
-
-   The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
-   If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release.  If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
-   The file `configure.in' is used to create `configure' by a program
-called `autoconf'.  You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
-
-     Running `configure' takes a while.  While running, it prints some
-     messages telling which features it is checking for.
-
-  2. Type `make' to compile the package.
-
-  3. Type `make install' to install the programs and any data files and
-     documentation.
-
-  4. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  
-
-Compilers and Options
-=====================
-
-   Some systems require unusual options for compilation or linking that
-the `configure' script does not know about.  You can give `configure'
-initial values for variables by setting them in the environment.  Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
-     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
-     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
-   You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
-   If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory.  After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
-   By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc.  You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
-   You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.  If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
-   Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
-   For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
-   There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on.  Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
-     CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
-   If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
-   If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
-   `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
-     Use and save the results of the tests in FILE instead of
-     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
-     debugging `configure'.
-
-`--help'
-     Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
-     Do not print messages saying which checks are being made.
-
-`--srcdir=DIR'
-     Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
-
-`--version'
-     Print the version of Autoconf used to generate the `configure'
-     script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
-
diff --git a/kwin-styles/smooth-blend/Makefile.am b/kwin-styles/smooth-blend/Makefile.am
deleted file mode 100644
index 44ac1828..00000000
--- a/kwin-styles/smooth-blend/Makefile.am
+++ /dev/null
@@ -1 +0,0 @@
-SUBDIRS = client
diff --git a/kwin-styles/smooth-blend/NEWS b/kwin-styles/smooth-blend/NEWS
deleted file mode 100644
index e69de29b..00000000
diff --git a/kwin-styles/smooth-blend/README b/kwin-styles/smooth-blend/README
deleted file mode 100644
index 836fbe5d..00000000
--- a/kwin-styles/smooth-blend/README
+++ /dev/null
@@ -1,15 +0,0 @@
-Smooth Blend - a smooth blending of the window background color into the titlebar.
-
-This is my first attempt at a KDE window decoration.
-Any comments would be much appreciated and can be sent
-to me directly at p0z3r@users.sourceforge.net.
-
-Limitations:
-The Frame Width can not be smaller than 2 pixels because it will lose the top gradient.
-The buttonsize can not be larger than the Title Height - Frame Width.
-
-Known Problems:
-The Shade button doesn't work correctly although the code is there for it.
-The Resize button is also afflicted with the same problem.
-Support for the Shade button and Resize buttons may or may not be supported depending
-upon what I find through the kde mailing lists and other documentation.
diff --git a/kwin-styles/smooth-blend/TODO b/kwin-styles/smooth-blend/TODO
deleted file mode 100644
index 6a7bd0a8..00000000
--- a/kwin-styles/smooth-blend/TODO
+++ /dev/null
@@ -1,4 +0,0 @@
-TODO
-----
-Code cleanup and separation of different classes into individual files.
-Use pixmaps instead of images for reducing the drawing impact.
diff --git a/kwin-styles/smooth-blend/client/CMakeLists.txt b/kwin-styles/smooth-blend/client/CMakeLists.txt
deleted file mode 100644
index d59126f9..00000000
--- a/kwin-styles/smooth-blend/client/CMakeLists.txt
+++ /dev/null
@@ -1,38 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_subdirectory( config )
-
-add_definitions(
-  -DQT_PLUGIN
-)
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES smoothblend.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_smoothblend ##########################
-
-tde_add_kpart( twin3_smoothblend AUTOMOC
-  SOURCES smoothblend.cc
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/smooth-blend/client/Makefile.am b/kwin-styles/smooth-blend/client/Makefile.am
deleted file mode 100644
index 056765d6..00000000
--- a/kwin-styles/smooth-blend/client/Makefile.am
+++ /dev/null
@@ -1,20 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-SUBDIRS = config
-
-KDE_CXXFLAGS = -DQT_PLUGIN
-
-INCLUDES = $(all_includes) -I$(kde_includes)/twin
-
-twindir = $(kde_datadir)/twin/
-twin_DATA = smoothblend.desktop
-
-noinst_HEADERS = smoothblend.h buttons.h
-
-kde_module_LTLIBRARIES = twin3_smoothblend.la
-twin3_smoothblend_la_SOURCES = smoothblend.cc
-twin3_smoothblend_la_LIBADD = -ltdecorations
-twin3_smoothblend_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -ltdecore -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin3_smoothblend_la_METASOURCES = AUTO
-
-DISTCLEANFILES = $(twin3_smoothblend_la_METASOURCES)
diff --git a/kwin-styles/smooth-blend/client/buttons.h b/kwin-styles/smooth-blend/client/buttons.h
deleted file mode 100644
index 3d777144..00000000
--- a/kwin-styles/smooth-blend/client/buttons.h
+++ /dev/null
@@ -1,1798 +0,0 @@
-/****************************************************************************
-** Image collection for project 'smoothblend'.
-**
-** Generated from reading image files: 
-**      circle.png
-**      close.png
-**      help.png
-**      keep_above_lit.png
-**      keep_above.png
-**      keep_below_lit.png
-**      keep_below.png
-**      maximize.png
-**      minimize.png
-**      restore.png
-**      shade.png
-**      splat.png
-**      titlealpha.png
-**      window_background.png
-**      window_foreground.png
-**
-** Created: Sun Jul 31 20:04:32 2005
-**      by: The User Interface Compiler ($Id$)
-**
-** WARNING! All changes made in this file will be lost!
-****************************************************************************/
-
-#include <tqimage.h>
-#include <tqdict.h>
-#include <tqmime.h>
-#include <tqdragobject.h>
-
-// circle.png
-static const unsigned char image_0_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x09,0x4c,0x55,0x47,0x14,0x86,
-    0x51,0x2b,0xee,0x28,0x04,0x23,0x31,0x06,0x6d,0x50,0xa3,0x46,0x8d,0x4b,
-    0x24,0xae,0x18,0x8c,0xbb,0x56,0x50,0xc1,0x14,0x63,0xb0,0xda,0x52,0x53,
-    0x44,0xb1,0xb1,0x35,0x8a,0x8a,0x58,0x82,0x1b,0x45,0x52,0xb0,0x01,0xa9,
-    0xb5,0xa4,0x56,0xa0,0xa5,0x54,0x6d,0xc3,0x52,0x89,0xb1,0xd8,0xb2,0xd3,
-    0x57,0x40,0x2b,0xc8,0x8e,0xc8,0x0e,0x56,0x11,0x78,0x50,0x1e,0x6f,0xfa,
-    0x9f,0xf1,0xde,0x97,0x7b,0xe1,0xdd,0xc7,0x43,0x8b,0x30,0xc9,0x17,0x75,
-    0xee,0x3d,0x73,0xfe,0x99,0x3b,0xe7,0x9c,0x99,0xa7,0x89,0x49,0xb7,0x66,
-    0x03,0x3e,0x04,0x61,0x20,0x13,0x3c,0xe8,0x63,0xee,0x83,0x78,0x10,0x00,
-    0x76,0x81,0xb7,0xba,0x4b,0xd2,0x35,0x2b,0x10,0x0a,0x3a,0x00,0x13,0x31,
-    0x33,0x33,0xeb,0xe8,0x4b,0xc6,0x8c,0x19,0x23,0xf3,0x07,0xea,0xc1,0x01,
-    0x60,0xda,0x45,0x9f,0xf5,0xa0,0x41,0x83,0x1a,0xe9,0x1d,0x4b,0x4b,0xcb,
-    0x8e,0xa0,0xa0,0xa0,0xca,0xb4,0xb4,0xb4,0xe2,0x8e,0x8e,0x8e,0xbf,0x19,
-    0x63,0x7d,0x8e,0x5a,0xad,0x7e,0x78,0xfb,0xf6,0xed,0x52,0x1f,0x1f,0x9f,
-    0x1a,0x53,0x53,0xd3,0x4e,0x41,0xeb,0xef,0x92,0x35,0x35,0x87,0xbe,0x47,
-    0xd4,0x7f,0xfc,0xf8,0xf1,0x5a,0x8d,0x46,0xf3,0x46,0x74,0x29,0xd1,0xd4,
-    0xd4,0x94,0x67,0x67,0x67,0xf7,0x42,0xd0,0x19,0x26,0x68,0xfc,0x9c,0xfe,
-    0xbd,0x6f,0xdf,0xbe,0x86,0xfe,0xd4,0x26,0xe5,0xf9,0xf3,0xe7,0x79,0x33,
-    0x67,0xce,0x54,0x0b,0x3a,0xed,0x40,0x2e,0xad,0x6f,0x4b,0x4b,0xcb,0xc3,
-    0xfe,0xd6,0x26,0x25,0x22,0x22,0xe2,0xb1,0xa0,0xd1,0x17,0x68,0x17,0x2f,
-    0x5e,0xdc,0xdc,0xdf,0x9a,0xba,0x52,0x5f,0x5f,0x9f,0x3f,0x78,0xf0,0x60,
-    0x2d,0xf4,0xfd,0x46,0x5a,0x9d,0x9c,0x9c,0xfe,0x41,0xff,0xfd,0x81,0x06,
-    0x62,0x5e,0x23,0xe4,0x26,0xb6,0x6d,0xdb,0xb6,0x46,0xad,0x56,0xab,0x7a,
-    0x55,0x10,0xff,0xaa,0x8a,0x8a,0x8a,0xdc,0xc4,0xc4,0xc4,0x47,0x91,0x91,
-    0x91,0x45,0xc9,0xc9,0xc9,0x79,0x75,0x75,0x75,0x39,0xaf,0x33,0x26,0x31,
-    0x7a,0xf4,0xe8,0x0e,0x51,0xe3,0xd6,0xad,0x5b,0xeb,0xd1,0x97,0xd1,0x5b,
-    0x62,0x63,0x63,0xf3,0xf0,0x0d,0xea,0x47,0x8e,0x1c,0xa9,0xe9,0x92,0xe3,
-    0x38,0xd3,0xa6,0x4d,0x6b,0x39,0x76,0xec,0x58,0x45,0x71,0x71,0x71,0xf6,
-    0xab,0x8c,0x2f,0xd5,0xe8,0xe8,0xe8,0x58,0x87,0xb5,0x4d,0x31,0x96,0x9c,
-    0x9c,0x1c,0xd5,0x8a,0x15,0x2b,0x9e,0x8a,0x5a,0x86,0x0d,0x1b,0x46,0xfb,
-    0x85,0x1d,0x3e,0x7c,0x98,0x9d,0x3d,0x7b,0x96,0xb9,0xbb,0xbb,0x33,0x07,
-    0x07,0x07,0x86,0xfd,0xc4,0x9f,0x23,0x26,0xb5,0x5e,0x5e,0x5e,0x65,0xcd,
-    0xcd,0xcd,0x69,0xbd,0xf1,0x23,0xd5,0x88,0xf1,0x6a,0xd0,0x77,0xcf,0x18,
-    0x10,0x6f,0x0f,0x46,0x8d,0x1a,0xc5,0xd7,0x6d,0xee,0xdc,0xb9,0x2c,0x21,
-    0x21,0x81,0x61,0xce,0x4c,0x5f,0xc3,0x1e,0x60,0xe1,0xe1,0xe1,0xcc,0xc2,
-    0xc2,0x82,0x6b,0x9d,0x3d,0x7b,0x76,0x53,0x69,0x69,0x69,0x9a,0xb1,0xbe,
-    0xa0,0xf1,0x5f,0x51,0xe3,0x96,0x2d,0x5b,0xaa,0xd0,0x77,0xa7,0x27,0xae,
-    0x5e,0xbd,0x9a,0x4b,0xb1,0x86,0x75,0x61,0xd7,0xaf,0x5f,0xd7,0xab,0x4b,
-    0x5f,0xc3,0xfa,0xb1,0x0d,0x1b,0x36,0x70,0x9d,0x13,0x26,0x4c,0x50,0xd7,
-    0xd6,0xd6,0x26,0x19,0xe3,0x0f,0x6b,0xa1,0xd3,0xb8,0x79,0xf3,0xe6,0x4a,
-    0xf4,0xfd,0x6a,0x08,0xd4,0xc6,0xe4,0xe1,0xc3,0x87,0x6b,0x48,0x1f,0xfe,
-    0x6e,0xb4,0x3e,0x69,0xf3,0xf0,0xf0,0xe0,0x3a,0x91,0x9f,0x9f,0xa1,0xfe,
-    0x25,0xf6,0xe4,0x53,0xaa,0x71,0xd3,0xa6,0x4d,0x15,0xe8,0x8b,0x55,0xa2,
-    0xb3,0xb3,0x33,0x76,0xfa,0xf4,0xe9,0xcf,0x50,0x33,0xd9,0xcd,0x9b,0x37,
-    0xbb,0xf9,0xbe,0x7b,0xf7,0x2e,0x73,0x73,0x73,0x63,0xf3,0xe6,0xcd,0x63,
-    0xe6,0xe6,0xe6,0x6c,0xd5,0xaa,0x55,0xec,0xc4,0x89,0x13,0xac,0xb2,0xb2,
-    0x52,0xf6,0x1e,0xed,0x09,0xda,0xa7,0xe4,0xf3,0xc8,0x91,0x23,0x0f,0x0d,
-    0xf9,0x24,0xa4,0x1a,0x37,0x6e,0xdc,0xf8,0x18,0x7d,0xb7,0x94,0xc0,0x19,
-    0x83,0xce,0x68,0xcc,0xd9,0xd9,0x59,0xe6,0xb3,0xb5,0xb5,0x95,0xed,0xdf,
-    0xbf,0x9f,0x91,0x76,0x7a,0x4e,0x7f,0x4e,0x9e,0x3c,0xb9,0x49,0x8c,0xa5,
-    0xb1,0x63,0xc7,0xb2,0x98,0x98,0x18,0x99,0x4d,0x43,0x43,0x03,0xef,0xa7,
-    0xbd,0x86,0xfc,0x14,0x67,0xc8,0x2f,0x34,0xb6,0x8b,0x1a,0xb1,0x57,0xca,
-    0x31,0xc7,0x18,0x25,0xe6,0xcc,0x99,0x53,0x4f,0xfe,0x0b,0x0a,0x0a,0x64,
-    0xfe,0x76,0xee,0xdc,0x29,0xee,0xb1,0x96,0xa8,0xa8,0xa8,0x7b,0x38,0x8f,
-    0xf0,0xf7,0xdb,0xdb,0xdb,0x7f,0xf2,0xf3,0xf3,0xcb,0xc2,0xbe,0xe0,0xb1,
-    0x15,0x1d,0x1d,0x2d,0xb3,0xf3,0xf5,0xf5,0xe5,0x76,0xde,0xde,0xde,0x2a,
-    0x43,0x7e,0xa5,0x1a,0xd7,0xaf,0x5f,0x5f,0x0a,0xd3,0x28,0x7d,0x94,0x97,
-    0x97,0xdf,0xa0,0x38,0x41,0xbd,0x94,0xf9,0x41,0x6e,0xe4,0x7e,0xb0,0x07,
-    0x1a,0xa1,0xed,0x7b,0x7d,0xb6,0xc8,0xe5,0x71,0x43,0x87,0x0e,0xed,0xa4,
-    0xb8,0xc6,0x9a,0xe9,0x6c,0x4b,0x4a,0x4a,0xb8,0xed,0xa2,0x45,0x8b,0xaa,
-    0x94,0xfc,0x12,0xc8,0xbb,0x3a,0x8d,0x6b,0xd7,0xae,0x2d,0x46,0xdf,0x77,
-    0xfa,0x08,0x09,0x09,0xe1,0xf5,0xf2,0xf4,0xe9,0xd3,0x32,0x8d,0xcb,0x96,
-    0x2d,0xa3,0xfc,0xa7,0x45,0xae,0xbc,0xa1,0x64,0x4b,0x1c,0x3c,0x78,0x50,
-    0x45,0xf6,0xe7,0xce,0x9d,0x93,0xd9,0xcf,0x98,0x31,0x83,0xf2,0xaa,0xc6,
-    0x90,0xad,0x54,0xe3,0x9a,0x35,0x6b,0x8a,0xd0,0x17,0xae,0x8f,0xa3,0x47,
-    0x8f,0xa6,0xd2,0x3b,0xd7,0xae,0x5d,0xd3,0x8d,0x8f,0x75,0x63,0xb0,0x67,
-    0xd6,0xd6,0xd6,0x4f,0x95,0xec,0x44,0xb2,0xb3,0xb3,0x7f,0x24,0xfb,0xed,
-    0xdb,0xb7,0xcb,0x34,0x22,0x06,0xf8,0x5a,0x56,0x55,0x55,0x45,0x28,0xd9,
-    0xc2,0x47,0x9b,0xa8,0x71,0xf5,0xea,0xd5,0x05,0xf8,0xfe,0x57,0xf4,0xb1,
-    0x67,0xcf,0x9e,0x3f,0xe9,0x1d,0xca,0xd5,0x62,0x43,0x6d,0xe3,0xe3,0xa3,
-    0xd6,0x14,0x2b,0xd9,0x49,0xa1,0x7d,0x89,0x7c,0x23,0xd3,0xb8,0x7b,0xf7,
-    0x6e,0x3e,0x46,0x4a,0x4a,0x4a,0xb4,0x92,0x9d,0x54,0x23,0x72,0x45,0x3e,
-    0xcc,0x42,0xf4,0x71,0xe8,0xd0,0xa1,0x3f,0xe8,0x1d,0xc4,0x84,0x6e,0x7c,
-    0xe4,0x36,0x86,0x7d,0xc6,0x6c,0x6c,0x6c,0x6a,0x95,0xec,0x44,0x0a,0x0b,
-    0x0b,0xc3,0x85,0xb8,0x94,0x69,0x14,0x73,0x10,0xe6,0x1b,0xae,0x64,0x3b,
-    0x62,0xc4,0x08,0x9d,0x46,0x7b,0x7b,0xfb,0x3c,0xf4,0x05,0xeb,0xe3,0xfc,
-    0xf9,0xf3,0x74,0x67,0x63,0xfe,0xfe,0xfe,0x32,0x1f,0xf3,0xe7,0xcf,0x27,
-    0x9d,0x9a,0x9a,0x9a,0x9a,0xcb,0x4a,0xb6,0xc4,0xa9,0x53,0xa7,0x12,0xc9,
-    0xfe,0xe4,0xc9,0x93,0x32,0xfb,0x05,0x0b,0x16,0xb0,0x21,0x43,0x86,0x74,
-    0x62,0xdf,0x5c,0x52,0xb2,0x95,0x6a,0x5c,0xb9,0x72,0x25,0x9d,0x2b,0x03,
-    0xf5,0xa1,0x52,0xa9,0xae,0xd0,0x3b,0xeb,0xd6,0xad,0x93,0xf9,0x08,0x0e,
-    0x0e,0xe6,0xeb,0xb0,0x70,0xe1,0xc2,0x62,0x25,0x5b,0xe4,0xaa,0xcb,0xc8,
-    0x83,0x6a,0xaa,0x4d,0x45,0x45,0x45,0x3a,0x5b,0x8a,0x71,0xe8,0x63,0x53,
-    0xa7,0x4e,0xad,0x52,0xb2,0x25,0xa0,0x51,0x2d,0x6a,0xc4,0x1d,0xe7,0x01,
-    0xfa,0xfc,0x95,0x98,0x34,0x69,0x52,0x1d,0x8d,0x89,0xb3,0xb1,0xce,0x0f,
-    0x6a,0x0f,0xcd,0x8d,0xeb,0x9c,0x35,0x6b,0x56,0x19,0x62,0x23,0x54,0x6a,
-    0x13,0x1a,0x1a,0xfa,0xc3,0xb8,0x71,0xe3,0x78,0x3e,0x0f,0x08,0x08,0x90,
-    0xcd,0x0f,0xcf,0xb8,0xdd,0xde,0xbd,0x7b,0x93,0x0c,0xf9,0x95,0x6a,0x5c,
-    0xbe,0x7c,0x79,0x2e,0xfa,0xce,0x28,0x81,0xfb,0x18,0xff,0x5e,0x9e,0x9e,
-    0x9e,0x32,0x5f,0xd5,0xd5,0xd5,0xbc,0xfe,0x89,0x75,0x65,0xfc,0xf8,0xf1,
-    0x8d,0x38,0x0b,0x15,0x62,0x3e,0x3c,0x77,0xd3,0xbc,0x68,0x8f,0xd0,0x7c,
-    0xc4,0x46,0x7b,0x19,0xf9,0x80,0x7f,0x67,0xe4,0xad,0x60,0x43,0x7e,0x71,
-    0x3e,0xd0,0x69,0x44,0xae,0xcb,0x41,0xdf,0x67,0x4a,0xe0,0x9e,0xe6,0x87,
-    0x3c,0xfc,0x8c,0xbe,0x59,0x7e,0x7e,0x3e,0xeb,0xda,0x2e,0x5c,0xb8,0x40,
-    0x7b,0x9a,0xc7,0x11,0x8d,0x87,0x7a,0xc8,0x5c,0x5c,0x5c,0x58,0x56,0x56,
-    0x56,0xb7,0x77,0x91,0xcb,0x98,0x50,0x7f,0x53,0x0d,0xf9,0x24,0xa4,0x1a,
-    0x97,0x2e,0x5d,0xfa,0x17,0xfa,0xbc,0x0d,0x81,0xef,0xf3,0x0d,0xea,0xa1,
-    0xd6,0xd2,0xd2,0x92,0x3d,0x79,0xf2,0xa4,0x9b,0x6f,0xb1,0x61,0x3e,0x8a,
-    0xcf,0xe8,0x3c,0x42,0xfe,0x70,0x4f,0x79,0x51,0x56,0x56,0x76,0xa6,0x27,
-    0x9f,0xd0,0xd8,0x2a,0x6a,0x44,0x9d,0x53,0xa1,0xcf,0xab,0x27,0xb0,0x36,
-    0x09,0xf4,0xfe,0xc4,0x89,0x13,0x59,0x66,0x66,0xa6,0xa2,0x16,0x7d,0x8d,
-    0xd6,0x9a,0xce,0xe5,0xa8,0x2d,0xed,0x71,0x71,0x71,0x81,0xc6,0xf8,0x93,
-    0x6a,0xb4,0xb5,0xb5,0xa5,0x8f,0xf2,0xa9,0x31,0xb8,0xba,0xba,0xfe,0x4c,
-    0xeb,0x49,0xdf,0x15,0x75,0x4e,0x16,0x47,0xfa,0x5a,0x46,0x46,0x06,0x5b,
-    0xb2,0x64,0x09,0x5f,0x3f,0xc4,0x78,0x13,0xce,0xc6,0x5f,0x18,0xeb,0x0b,
-    0xf3,0xd1,0x69,0x44,0x6d,0xcf,0x40,0xdf,0xc7,0xc6,0x82,0x3b,0xcb,0x65,
-    0x61,0x8e,0x7c,0x6d,0x50,0xa7,0xf8,0x59,0x86,0xea,0x65,0x7c,0x7c,0x3c,
-    0x0b,0x0b,0x0b,0xe3,0xe7,0x47,0xaa,0x2d,0x62,0x3c,0x41,0x67,0x6a,0x7a,
-    0x7a,0xba,0x4f,0x6f,0xfc,0x48,0x35,0x22,0xc7,0xa5,0xa3,0xef,0x40,0x6f,
-    0x40,0x7c,0x7a,0xe2,0xae,0xf6,0x8b,0x95,0x95,0x55,0x85,0xbe,0x3b,0xa1,
-    0xa0,0xbf,0x93,0xc6,0xbe,0x78,0xf1,0x62,0x50,0x6f,0xc7,0x27,0xa0,0xb1,
-    0x45,0xd4,0x88,0x9c,0x4f,0x31,0xf6,0xd1,0xab,0x92,0x94,0x94,0xe4,0x85,
-    0xf3,0x62,0x10,0xf6,0x41,0x24,0xee,0x46,0xb7,0x90,0xab,0xbe,0x45,0xce,
-    0x09,0xc4,0x39,0xd2,0xfd,0x75,0xc6,0x95,0x6a,0x44,0x8e,0xa3,0xbb,0xa2,
-    0xdb,0x40,0x03,0xb9,0x4e,0xa7,0x11,0x67,0x83,0x6c,0xf4,0xbd,0x37,0x90,
-    0x68,0x6c,0x6c,0xfc,0x00,0x7b,0x85,0x6a,0x41,0x1a,0x28,0x41,0x8c,0xb6,
-    0x60,0x7f,0xb9,0xe2,0xd9,0xae,0x81,0x02,0xce,0xd4,0x67,0x84,0x7d,0x1d,
-    0x08,0xf8,0x99,0x61,0xc7,0x8e,0x1d,0x5f,0xe1,0xd9,0xbb,0x03,0x01,0xec,
-    0x63,0x17,0x9c,0x11,0xee,0x0b,0x1a,0xdf,0x01,0x6f,0x03,0xba,0x97,0x6a,
-    0x90,0x2f,0x28,0x37,0x38,0xf5,0x27,0x38,0xab,0x39,0x23,0x86,0xe3,0x04,
-    0x7d,0x74,0x07,0x10,0x7f,0x6f,0xb6,0x07,0x74,0x97,0x65,0x53,0xa6,0x4c,
-    0x49,0x45,0x4d,0xf8,0x04,0xef,0x3a,0xc2,0xc6,0xe1,0x4d,0xd1,0xd6,0xd6,
-    0xe6,0xe8,0xe1,0xe1,0xe1,0x8b,0x3c,0x5f,0x2d,0xe8,0x2b,0x00,0x16,0x26,
-    0xf2,0x66,0x2b,0xc6,0x90,0x80,0xd6,0xcc,0xcc,0xac,0x1c,0xf7,0xd2,0x9c,
-    0x3e,0x26,0x17,0x67,0xb0,0x3a,0x89,0x5f,0xfa,0xcd,0xfe,0x6b,0x93,0x97,
-    0xff,0xcf,0xa1,0xd4,0xde,0x07,0x5f,0x82,0x0c,0xd0,0xae,0x94,0x9f,0xff,
-    0x67,0xaa,0xc0,0x1d,0x93,0x97,0xbf,0xcd,0x5b,0x76,0x15,0xf4,0x1f,0x5e,
-    0xdb,0x58,0x54
-};
-
-// close.png
-static const unsigned char image_1_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x6b,0x4c,0x14,0x57,0x14,0xc7,
-    0x51,0x09,0xf8,0xc4,0x67,0x51,0x8b,0x60,0xd0,0xc4,0x0f,0x46,0xa2,0xe2,
-    0x5b,0x8c,0xaf,0x88,0x6f,0x03,0x1f,0x68,0x2c,0x49,0x51,0x2c,0x42,0x42,
-    0x02,0x18,0x24,0x88,0xa9,0x48,0x52,0x2a,0xa8,0x10,0x4b,0xb0,0xb6,0xb5,
-    0x49,0xdb,0x14,0x53,0x28,0x6b,0x40,0x62,0x08,0x5a,0x1f,0x60,0xd2,0x92,
-    0x15,0x57,0x58,0x1f,0x6b,0x17,0x90,0xa7,0x02,0x45,0x8b,0x08,0x08,0x08,
-    0xfb,0xbc,0xfd,0x9f,0xc9,0x0c,0x9d,0x0e,0x33,0xbb,0x53,0x13,0x8a,0x37,
-    0xf9,0x7f,0xd8,0xbb,0x73,0xee,0xf9,0xcd,0x7d,0x9c,0x73,0xee,0xb8,0xb8,
-    0x0c,0x6b,0xbe,0x50,0x24,0xf4,0x1d,0xa4,0x83,0x9e,0x8c,0xb0,0x0c,0xd0,
-    0xaf,0xd0,0x97,0x50,0x18,0xe4,0x3a,0x1c,0x69,0xa8,0x79,0x42,0x17,0x20,
-    0x33,0xc4,0x04,0x79,0x78,0x78,0x58,0x46,0x5a,0x62,0x7f,0x50,0x27,0x14,
-    0x0f,0xb9,0x4b,0xf8,0xbc,0xc6,0x8c,0x19,0xd3,0x41,0xcf,0xcc,0x9c,0x39,
-    0xd3,0x92,0x9d,0x9d,0xdd,0x76,0xf7,0xee,0xdd,0x06,0x8b,0xc5,0x62,0x64,
-    0x8c,0xfd,0x31,0xd2,0x1a,0x18,0x18,0x30,0xde,0xbe,0x7d,0xbb,0x29,0x35,
-    0x35,0xf5,0x85,0xbb,0xbb,0xbb,0x8d,0x67,0xad,0x80,0xdc,0x78,0x3e,0x0f,
-    0xf0,0xd1,0x9c,0xb3,0xe3,0xc7,0x8f,0xbf,0x04,0xd7,0x88,0x33,0x39,0x52,
-    0x5f,0x5f,0x9f,0x71,0xeb,0xd6,0xad,0xbd,0x3c,0x67,0x0e,0xcf,0x98,0x46,
-    0xbf,0xc3,0xc3,0xc3,0x3b,0x47,0x93,0x4d,0xc2,0x59,0xed,0xe7,0xe7,0xf7,
-    0x96,0xe7,0x0c,0xa4,0x73,0xe1,0xea,0xea,0x6a,0xef,0xe9,0xe9,0xa9,0x1e,
-    0x6d,0x36,0xb1,0xae,0x5c,0xb9,0xf2,0x8c,0x67,0xcc,0x80,0x6c,0xcb,0x97,
-    0x2f,0x7f,0x3b,0xda,0x4c,0x52,0xd1,0x9c,0x8d,0x1b,0x37,0xce,0xce,0xef,
-    0x4b,0xb6,0x6f,0xdf,0xbe,0x6e,0xf4,0x1b,0xe4,0x64,0xb3,0xd9,0x0c,0x67,
-    0xce,0x9c,0x69,0x0b,0x0a,0x0a,0xea,0xda,0xbc,0x79,0xf3,0x9b,0x93,0x27,
-    0x4f,0xb6,0xdf,0xba,0x75,0xab,0x41,0xe9,0x79,0x25,0x99,0xcd,0xe6,0x27,
-    0x79,0x79,0x79,0xcd,0xc1,0xc1,0xc1,0x5d,0x7b,0xf7,0xee,0xed,0x0e,0x0d,
-    0x0d,0x7d,0x5d,0x57,0x57,0x57,0xe3,0xc8,0x86,0xce,0x2f,0xf8,0x9e,0x12,
-    0xe3,0x9e,0x3d,0x7b,0x5e,0xdb,0xed,0x76,0xbd,0x54,0x26,0x93,0xe9,0xc1,
-    0xd2,0xa5,0x4b,0xfb,0x24,0xb1,0x81,0xd3,0xae,0x5d,0xbb,0xba,0xda,0xdb,
-    0xdb,0x1f,0xcb,0xd9,0x49,0x75,0xf3,0xe6,0xcd,0x5a,0x4f,0x4f,0x4f,0xb3,
-    0x74,0x0c,0x9c,0x55,0x96,0x9c,0x9c,0xdc,0xaa,0x64,0x07,0x46,0xb3,0xc0,
-    0xb8,0x7b,0xf7,0xee,0x4e,0xf4,0xe9,0xa4,0x82,0xfd,0x73,0xfa,0x7f,0xe3,
-    0xc6,0x8d,0x4c,0xa7,0xd3,0xb1,0x8e,0x8e,0x0e,0x96,0x9f,0x9f,0xcf,0xd6,
-    0xaf,0x5f,0xcf,0xf9,0x98,0x38,0x71,0xa2,0x0d,0x73,0x6a,0x94,0xb3,0x15,
-    0x74,0xf6,0xec,0xd9,0xa6,0xb1,0x63,0xc7,0x72,0x3c,0x51,0x51,0x51,0xcc,
-    0x68,0x34,0xb2,0xd6,0xd6,0x56,0xa6,0xd5,0x6a,0xd9,0xbc,0x79,0xf3,0x18,
-    0xad,0x67,0x45,0x45,0x85,0x41,0xce,0x76,0xc6,0x8c,0x19,0x62,0xc6,0x0e,
-    0xcc,0xad,0x56,0x2a,0x1f,0x1f,0x9f,0x01,0x70,0x30,0xec,0x0d,0x26,0x6e,
-    0x56,0xab,0x95,0xa5,0xa5,0xa5,0x31,0x9c,0x35,0xe2,0xb4,0x5e,0xbf,0x7e,
-    0xdd,0x20,0x67,0x9f,0x94,0x94,0xc4,0xed,0xfb,0x39,0x73,0xe6,0xb0,0xfb,
-    0xf7,0xef,0x33,0x69,0x2b,0x28,0x28,0x60,0x7c,0x4c,0xf9,0x53,0xce,0x1e,
-    0x8c,0x26,0x81,0x71,0xe7,0xce,0x9d,0x7f,0xa1,0xef,0x37,0xa9,0x66,0xcd,
-    0x9a,0x65,0x5a,0xb0,0x60,0xc1,0xb0,0xb1,0x85,0x76,0xf9,0xf2,0x65,0x31,
-    0xe7,0x43,0xb1,0x6d,0x62,0x62,0x62,0x13,0x8d,0xed,0xed,0xed,0xcd,0xea,
-    0xeb,0xeb,0x65,0xed,0xab,0xab,0xab,0x39,0xc6,0x90,0x90,0x90,0x76,0x39,
-    0xff,0x62,0xc6,0x1d,0x3b,0x76,0xbc,0x40,0x5f,0xa9,0x54,0x18,0xbf,0x7f,
-    0xd2,0xa4,0x49,0xac,0xbf,0xbf,0x5f,0x15,0x67,0x49,0x49,0x49,0x25,0xd9,
-    0x25,0x24,0x24,0xd4,0xd3,0xb8,0xb4,0x96,0x4a,0x7c,0xd4,0xae,0x5d,0xbb,
-    0xc6,0x31,0x1e,0x38,0x70,0xe0,0xb9,0x9c,0xff,0xe9,0xd3,0xa7,0x0f,0x0a,
-    0x8c,0xdb,0xb7,0x6f,0xa7,0xf7,0xb8,0x21,0x55,0x64,0x64,0x64,0x23,0xfd,
-    0x9f,0x93,0x93,0xa3,0xe8,0x47,0xcc,0x49,0x79,0x2c,0x3a,0x3a,0xba,0x41,
-    0x0d,0x1f,0xb5,0xfd,0xfb,0xf7,0x73,0x8c,0xc5,0xc5,0xc5,0xf7,0xe4,0xfc,
-    0x8b,0x19,0x03,0x03,0x03,0x69,0x3f,0x94,0x48,0xa5,0xd7,0xeb,0xef,0xd0,
-    0x9e,0xc6,0x9a,0xb3,0x96,0x96,0x16,0x55,0x9c,0x6a,0xf9,0x0a,0x0b,0x0b,
-    0xb9,0x67,0xe7,0xcf,0x9f,0xdf,0x8b,0xf8,0x36,0xcc,0x37,0x49,0xcc,0xb8,
-    0x6d,0xdb,0xb6,0x56,0xf4,0x5d,0x95,0xd3,0x89,0x13,0x27,0x1e,0xd3,0x33,
-    0xcb,0x96,0x2d,0x63,0xc8,0x51,0x4e,0x39,0x7d,0x7d,0x7d,0x9d,0xf2,0xd5,
-    0xd6,0xd6,0x52,0x3d,0x45,0xf3,0x6e,0x2d,0x2f,0x2f,0x2f,0x53,0xf2,0x3d,
-    0x6d,0xda,0xb4,0x01,0x81,0x11,0x39,0xbc,0x05,0x67,0xbd,0x50,0x49,0xf4,
-    0x3f,0x3d,0xb7,0x76,0xed,0x5a,0xd6,0xdd,0xdd,0xed,0xd0,0xff,0xe0,0xe0,
-    0xa0,0xc3,0xff,0x2b,0x2b,0x2b,0x19,0xe6,0x87,0x8b,0x45,0x17,0x2f,0x5e,
-    0xd4,0x3a,0xf2,0x2b,0x66,0xdc,0xb2,0x65,0xcb,0x33,0x98,0xe7,0x2b,0x09,
-    0x39,0x42,0x83,0xb9,0x6e,0x16,0x38,0xa5,0xb1,0x48,0x6d,0xab,0xaa,0xaa,
-    0xe2,0xf8,0x10,0x2f,0xed,0xe9,0xe9,0xe9,0xf7,0x1c,0xf9,0x24,0x89,0x19,
-    0x91,0xe3,0x9a,0xd1,0xf7,0xb3,0x23,0x81,0x33,0x17,0xf3,0xd9,0xf4,0xae,
-    0x9c,0x62,0xbe,0x53,0xa7,0x4e,0x69,0x9d,0xf9,0x23,0x4d,0x9d,0x3a,0xf5,
-    0xad,0xc0,0xb8,0x69,0xd3,0xa6,0x46,0xf4,0xfd,0xe4,0x4c,0xe0,0xcc,0xc1,
-    0x9c,0x37,0xfc,0x57,0x4e,0x31,0x1f,0xea,0xd8,0x72,0x35,0xbe,0x48,0x62,
-    0x46,0xe4,0xba,0x06,0xac,0xff,0xf7,0x6a,0x04,0xce,0x1f,0xe6,0xce,0x9d,
-    0xdb,0xcd,0xc7,0x5e,0xa7,0x7c,0xc8,0xf9,0x6c,0xf2,0xe4,0xc9,0xdc,0x19,
-    0x46,0x1d,0xf1,0x48,0xad,0x1f,0x12,0xce,0xd5,0x10,0xe3,0x86,0x0d,0x1b,
-    0xea,0x30,0xdc,0xb7,0x6a,0x84,0x9c,0x5b,0xa1,0x36,0xbe,0x08,0x4d,0xa3,
-    0xd1,0x70,0x71,0x69,0xc2,0x84,0x09,0x66,0x9c,0xfd,0x22,0xb5,0xbe,0xc0,
-    0xd8,0x2f,0x30,0x06,0x04,0x04,0x3c,0x45,0xdf,0x57,0xce,0x74,0xf8,0xf0,
-    0x61,0xed,0x7f,0xe5,0x93,0x72,0x8e,0x1f,0x3f,0xde,0x8c,0xba,0xa4,0x40,
-    0x8d,0x3f,0x31,0x23,0xea,0x98,0x5a,0xf4,0x65,0x39,0x52,0x44,0x44,0x44,
-    0xf9,0xbb,0xf2,0xc9,0x71,0xa2,0x96,0xd4,0x38,0xf3,0x39,0x65,0xca,0x94,
-    0x3e,0x81,0x71,0xdd,0xba,0x75,0x74,0x4f,0xc8,0x54,0xd2,0xd1,0xa3,0x47,
-    0x6f,0xf0,0x7c,0xf6,0x77,0xe5,0x93,0x72,0xba,0xb9,0xb9,0x59,0x8a,0x8a,
-    0x8a,0x2e,0x39,0xf2,0x2b,0x66,0x5c,0xb3,0x66,0x0d,0xd5,0xe7,0xe9,0x72,
-    0xca,0xca,0xca,0xd2,0x50,0xbc,0xf5,0xf2,0xf2,0x62,0x8d,0x8d,0x8d,0x0e,
-    0xfd,0x23,0x77,0x52,0xed,0xeb,0xf4,0xbc,0x83,0x8d,0xe3,0xc4,0x5a,0xf6,
-    0xa1,0x9e,0xcc,0x56,0xf2,0x2d,0x66,0x5c,0xbd,0x7a,0xf5,0x13,0xf4,0xa5,
-    0x4a,0x85,0xda,0xe9,0x1c,0xd6,0xc5,0x84,0x9c,0xc5,0xc5,0x0f,0x47,0x4d,
-    0x88,0x2f,0x6a,0xe3,0x12,0x6a,0x5f,0xee,0xd9,0xc5,0x8b,0x17,0xd7,0xcb,
-    0xf9,0x26,0x21,0x1e,0xf4,0x0a,0x8c,0x2b,0x57,0xae,0xa4,0x1a,0x35,0x45,
-    0xaa,0xb0,0xb0,0x30,0x6e,0x8d,0x71,0x9f,0x51,0xc3,0x67,0xa7,0xf9,0x5e,
-    0xb4,0x68,0x91,0xaa,0xf8,0x89,0xd8,0x42,0xeb,0xc7,0x71,0xa2,0xa6,0xbb,
-    0x20,0xe7,0x5f,0xcc,0xb8,0x62,0xc5,0x8a,0x47,0xe8,0xfb,0x4c,0x2a,0xac,
-    0x6f,0x1b,0xad,0x09,0xdd,0x11,0x54,0xf0,0xd9,0xe3,0xe3,0xe3,0x0b,0x90,
-    0xaf,0x93,0x57,0xad,0x5a,0xf5,0x50,0x0d,0x67,0x6e,0x6e,0x2e,0xc7,0x88,
-    0x7b,0x58,0x99,0x9c,0x7f,0xd4,0xae,0x43,0x8c,0xb8,0xbb,0x52,0x0d,0x9d,
-    0x28,0x15,0xde,0xe3,0xcd,0xc2,0x85,0x0b,0x55,0xf1,0xc5,0xc5,0xc5,0x69,
-    0x04,0x3b,0x70,0x26,0xe1,0xbd,0xf5,0xce,0x38,0x6b,0x6a,0x6a,0x18,0x7f,
-    0x66,0x75,0x72,0xfe,0xc1,0xf8,0x46,0x60,0x44,0xdd,0xa5,0x47,0x5f,0xbc,
-    0x54,0xc8,0x45,0x9d,0x10,0xb3,0x58,0x2c,0xc3,0xc6,0x37,0x18,0x0c,0x43,
-    0x7c,0x31,0x31,0x31,0x79,0x52,0x5b,0x70,0x26,0xf8,0xfb,0xfb,0x57,0xf1,
-    0x73,0xc0,0x5e,0xbd,0x7a,0x35,0x6c,0x8c,0xd2,0xd2,0x52,0xc6,0xe7,0xb9,
-    0xdf,0xe5,0xfc,0x8b,0x19,0x71,0x3f,0xa5,0x03,0x11,0x2b,0x15,0x6a,0x8d,
-    0x32,0xfa,0xff,0xe0,0xc1,0x83,0x0c,0x39,0x90,0x1b,0x97,0x6a,0xb3,0x94,
-    0x94,0x14,0xae,0xb6,0x22,0xbe,0xd8,0xd8,0xd8,0x4b,0x72,0xb6,0x24,0xd8,
-    0xc4,0x2d,0x59,0xb2,0xe4,0x01,0x7f,0x87,0x64,0xe7,0xcf,0x9f,0x1f,0xaa,
-    0xdd,0xba,0xba,0xba,0x18,0xde,0x81,0x63,0xcc,0xc8,0xc8,0xb8,0x20,0x67,
-    0x0f,0x9b,0x1e,0x81,0xd1,0xcf,0xcf,0x8f,0x2e,0x6d,0xd1,0x52,0x35,0x37,
-    0x37,0xd3,0xbb,0xd0,0x73,0x14,0x77,0x19,0xf2,0xb4,0xf8,0x9b,0x5f,0x27,
-    0xea,0xbf,0x0c,0x39,0x3b,0xa9,0x70,0xf6,0x7e,0xc1,0xbe,0xe6,0xbe,0xe1,
-    0x51,0x8c,0xa0,0xba,0x5e,0xa8,0xd9,0x71,0xae,0xf5,0x4a,0x76,0x62,0x46,
-    0xbc,0x2b,0xed,0x87,0x48,0x39,0xe1,0x8e,0x10,0x83,0xf3,0x77,0x07,0xe3,
-    0xb6,0xa2,0x9e,0x7b,0x89,0x73,0x54,0x7f,0xe8,0xd0,0xa1,0x1c,0xf0,0xc7,
-    0x2a,0xd9,0xc8,0xa9,0xac,0xac,0x2c,0x09,0x77,0xe4,0xab,0xb8,0xd7,0xb7,
-    0x61,0x8f,0xb4,0xe3,0x3e,0xdb,0x84,0xdc,0xff,0x23,0xf6,0x51,0x94,0x92,
-    0x8d,0x98,0x11,0x77,0x0a,0x8a,0xe1,0xe1,0xef,0x93,0x7a,0x7b,0x7b,0x23,
-    0x70,0x97,0xa2,0x6f,0x00,0x14,0x23,0x8c,0x98,0xf7,0x41,0xec,0x33,0xfa,
-    0xef,0x93,0xf7,0x45,0x99,0x99,0x99,0xa9,0xfc,0xbe,0xfa,0x06,0xfa,0x9a,
-    0x8f,0x51,0x54,0x57,0x7e,0xfc,0x3e,0xc8,0x6a,0xb5,0x86,0x62,0x6d,0x1f,
-    0xf0,0x8c,0x1f,0x41,0xde,0x50,0x27,0xce,0xa8,0xed,0xd8,0xb1,0x63,0x5f,
-    0xe0,0x99,0x90,0xd1,0x14,0xee,0xb1,0x21,0xc8,0xcd,0xc5,0x3c,0x5f,0xa5,
-    0xcb,0x3f,0xdf,0x9b,0x03,0x20,0xba,0xcb,0x32,0x1f,0x1f,0x1f,0xdd,0xe9,
-    0xd3,0xa7,0x13,0xf1,0x2e,0xc1,0xb0,0x09,0xfa,0xbf,0x84,0x7a,0x3d,0xf8,
-    0xc8,0x91,0x23,0x9f,0xa3,0x8e,0x68,0xe3,0xf9,0xe8,0xfb,0xc3,0x07,0x2e,
-    0xff,0x6e,0xfe,0xfc,0xfe,0x14,0xe2,0x8b,0x1d,0xf1,0xe5,0xf9,0xec,0xd9,
-    0xb3,0x1f,0x8d,0xb0,0x1e,0xe3,0xfc,0xbe,0x14,0xf9,0xa5,0x6f,0xf6,0xf4,
-    0x1d,0xfc,0x43,0x17,0xe5,0xf6,0x29,0xbf,0x47,0xef,0x41,0x26,0x91,0xed,
-    0x48,0xea,0x05,0x44,0xf9,0xe2,0x9c,0xcc,0xdc,0xb9,0xfc,0x0d,0x45,0xac,
-    0x59,0xc3
-};
-
-// help.png
-static const unsigned char image_2_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x54,0x57,0x14,0xc6,
-    0x87,0x45,0x45,0x21,0x4a,0x88,0x62,0x70,0xa9,0x31,0x11,0x81,0x49,0xf9,
-    0x03,0x35,0x51,0x13,0xa8,0x46,0x0c,0x51,0x5c,0x80,0x88,0x0a,0x14,0x65,
-    0x73,0x90,0x56,0x6b,0x42,0x6b,0x95,0x42,0x5a,0x1a,0xda,0x50,0x81,0xa6,
-    0x18,0xa0,0x6c,0x51,0x94,0x68,0x59,0x9a,0x94,0x06,0x2d,0x20,0x18,0x62,
-    0xa1,0x4a,0x0c,0x1d,0xb0,0xa0,0xa3,0x50,0x36,0xab,0x23,0x3b,0x8a,0xd0,
-    0x11,0xcb,0x00,0xb7,0xdf,0x7d,0x1d,0xc8,0xcc,0xe5,0xbd,0x99,0x37,0x29,
-    0x88,0x37,0xf9,0x65,0xc8,0xe1,0xcd,0x39,0xdf,0x9c,0x77,0xee,0xb9,0xe7,
-    0x3d,0x89,0x64,0xda,0x32,0x03,0xfe,0x20,0x11,0xfc,0x02,0xee,0x83,0x07,
-    0xb3,0x8c,0x1c,0x5c,0x04,0x9f,0x80,0x77,0xa7,0x4b,0xd2,0xd1,0x16,0x06,
-    0x9e,0x01,0x32,0x89,0xa5,0xa5,0xe5,0xd8,0xe2,0xc5,0x8b,0xd5,0xb3,0x89,
-    0x99,0x99,0xd9,0x84,0x56,0xcc,0x71,0x90,0x0b,0xde,0x61,0xf4,0x99,0x82,
-    0x32,0x7a,0x8d,0xb9,0xb9,0xf9,0x44,0x4c,0x4c,0x4c,0x4f,0x59,0x59,0x59,
-    0x47,0x67,0x67,0x67,0x13,0x21,0x44,0x31,0xdb,0x8c,0x8d,0x8d,0x29,0xe4,
-    0x72,0x79,0x6b,0x7a,0x7a,0xfa,0x33,0x3b,0x3b,0xbb,0x51,0xaa,0xc3,0xc4,
-    0xc4,0x64,0x18,0x9f,0x0e,0x5a,0x1a,0xcf,0x51,0xfb,0xa6,0x4d,0x9b,0x54,
-    0x83,0x83,0x83,0x8f,0xde,0x84,0x2e,0x21,0x26,0x26,0x26,0x14,0x71,0x71,
-    0x71,0xdd,0xd0,0x48,0x75,0x3e,0x85,0x2e,0x3b,0xe0,0x48,0xf5,0xad,0x59,
-    0xb3,0xe6,0x9f,0xee,0xee,0xee,0x37,0x92,0x37,0x31,0x44,0x45,0x45,0xf5,
-    0x68,0xee,0x7d,0x0e,0x88,0xa4,0x7f,0xa7,0xa5,0xa5,0x3d,0x9b,0x6b,0x5d,
-    0xec,0xfd,0xb7,0xb6,0xb6,0x56,0x23,0x97,0x4a,0xe8,0xfb,0x99,0x6a,0x6c,
-    0x6e,0x6e,0xfe,0x73,0xae,0x75,0xb1,0xec,0xda,0xb5,0xeb,0xa5,0x26,0x97,
-    0x55,0xf4,0x13,0xba,0xef,0xc3,0xae,0x43,0x76,0x76,0xf6,0xd3,0xe5,0xcb,
-    0x97,0x8f,0xd2,0x7d,0x34,0x53,0x2c,0x5c,0xb8,0x70,0x7c,0xc3,0x86,0x0d,
-    0xaa,0xa3,0x47,0x8f,0x0e,0xa4,0xa4,0xa4,0x28,0xd5,0x6a,0xf5,0xb4,0xb8,
-    0x93,0xc8,0x64,0xb2,0x7e,0x46,0x63,0x3d,0xea,0x55,0x07,0xa9,0x54,0xaa,
-    0x32,0x35,0x35,0x25,0x9b,0x37,0x6f,0x9e,0x31,0xb0,0x2f,0xe9,0x5e,0x98,
-    0xea,0x6d,0x4b,0x97,0x2e,0x1d,0xbd,0x71,0xe3,0x46,0x33,0x1b,0x9b,0x12,
-    0x16,0x16,0xd6,0xc3,0x68,0xac,0x85,0x5d,0x07,0x07,0x07,0x07,0x95,0x95,
-    0x95,0x15,0x99,0xe9,0x85,0x58,0xa4,0xb6,0xb6,0x96,0xc4,0xc7,0xc7,0x13,
-    0xf4,0x46,0xb2,0x72,0xe5,0xca,0xd7,0xc8,0xe7,0xb4,0xf8,0xa1,0xa1,0xa1,
-    0xdd,0x8c,0xc6,0x1a,0x7c,0x5d,0x07,0x68,0xfc,0x7b,0x36,0x34,0x6a,0xaf,
-    0xc0,0xc0,0x40,0x2e,0x9f,0x55,0x55,0x55,0x0d,0x6c,0xfc,0x90,0x90,0x90,
-    0x4e,0x6d,0x8d,0xe3,0xe3,0xe3,0xd5,0xb0,0xeb,0xb0,0x7e,0xfd,0xfa,0x59,
-    0xd7,0x78,0xfa,0xf4,0x69,0x4e,0x63,0x45,0x45,0xc5,0x3d,0x36,0x7e,0x70,
-    0x70,0xb0,0x92,0xd1,0x58,0x09,0xbb,0x0e,0xce,0xce,0xce,0x83,0xf4,0x7f,
-    0x8b,0x16,0x2d,0x32,0x1a,0xfa,0xdb,0x4e,0x9d,0x3a,0x25,0x5a,0x23,0x6a,
-    0x52,0xce,0xc6,0xc7,0xbe,0x7a,0xc2,0xdc,0xeb,0x72,0xd8,0x75,0xb8,0x76,
-    0xed,0x5a,0xed,0xd6,0xad,0x5b,0xfb,0x90,0xcf,0x97,0xc6,0x02,0x8d,0x6a,
-    0xea,0x17,0xe7,0x82,0x28,0x8d,0x38,0x7b,0xef,0xb2,0xf1,0x8f,0x1c,0x39,
-    0xf2,0x98,0xc9,0x63,0x09,0xec,0x33,0xc6,0xce,0x9d,0x3b,0xb9,0x5a,0x52,
-    0x2a,0x95,0xa2,0x34,0x96,0x96,0x96,0xde,0x61,0x7d,0xa0,0x56,0xdb,0x99,
-    0x3c,0x16,0xc3,0x3e,0x63,0xb8,0xbb,0xbb,0x2b,0x8d,0xd1,0x58,0x52,0x52,
-    0x52,0xcd,0xfa,0x08,0x08,0x08,0x68,0xd3,0xd6,0x88,0xbd,0x5f,0x84,0xfd,
-    0xfe,0x93,0x21,0xca,0xcb,0xcb,0x2b,0xcf,0x9e,0x3d,0xdb,0xb0,0x67,0xcf,
-    0x9e,0x8e,0xb5,0x6b,0xd7,0x0e,0xae,0x58,0xb1,0x62,0x98,0x0f,0x0b,0x0b,
-    0x0b,0xee,0x5e,0xf7,0xf4,0xf4,0x88,0xd2,0x78,0xfd,0xfa,0xf5,0x5b,0x6c,
-    0x2c,0x7f,0x7f,0xff,0x16,0x26,0x8f,0x85,0xf8,0x4a,0x81,0x3e,0xb0,0xcf,
-    0x14,0xda,0xb3,0xe5,0xfc,0xf9,0xf3,0x89,0xad,0xad,0x2d,0x2f,0x98,0xb1,
-    0x48,0x74,0x74,0xb4,0x5e,0x7d,0xda,0x1a,0x51,0xfb,0x37,0xd9,0x78,0x87,
-    0x0f,0x1f,0x6e,0x66,0x34,0xfe,0x00,0xfb,0x55,0x21,0x12,0x13,0x13,0x6f,
-    0x6b,0xe6,0x23,0x92,0x99,0x99,0x49,0x1a,0x1b,0x1b,0x69,0x0d,0x1b,0xd4,
-    0x60,0x68,0xed,0xd8,0xb1,0x83,0xfe,0xd6,0x71,0xd4,0xc4,0x8f,0x6c,0xcc,
-    0x43,0x87,0x0e,0x3d,0x62,0x34,0xe6,0xc2,0x7e,0x59,0x08,0x9c,0xb1,0xdc,
-    0x7c,0xde,0xda,0xda,0x6a,0x30,0x2e,0xd5,0x3e,0x32,0x32,0xc2,0xcb,0x8b,
-    0x17,0x2f,0x68,0x2f,0x24,0x49,0x49,0x49,0x64,0xe3,0xc6,0x8d,0x5c,0x0e,
-    0x71,0x56,0xf4,0xf2,0xc5,0xf4,0xf5,0xf5,0x55,0x30,0xf5,0x78,0x11,0x35,
-    0x70,0x81,0x8f,0x57,0xaf,0x5e,0xe5,0xcc,0x9b,0x37,0x6f,0xcc,0xc9,0xc9,
-    0xc9,0xa0,0xbe,0xd8,0xd8,0x58,0x42,0xcf,0x78,0xed,0x9a,0xd0,0xc7,0xb6,
-    0x6d,0xdb,0x5a,0x1f,0x3e,0x7c,0x98,0xc7,0x17,0xf7,0xc0,0x81,0x03,0xf7,
-    0x99,0x3c,0x66,0x22,0x44,0x06,0x1f,0xe8,0x71,0xf4,0x79,0x88,0x78,0x7a,
-    0x7a,0x1a,0xd4,0x88,0x99,0x8f,0xde,0x3b,0x35,0xfa,0xff,0x53,0x3e,0x5c,
-    0x5c,0x5c,0xfe,0xc2,0x5e,0xa8,0x4b,0x48,0x48,0xa8,0xa8,0xaf,0xaf,0xbf,
-    0x2a,0x14,0x93,0xe2,0xe3,0xe3,0xd3,0xc0,0x68,0x4c,0x83,0x3d,0x95,0x0f,
-    0x68,0xcc,0x12,0xab,0x71,0xc9,0x92,0x25,0x64,0xd5,0xaa,0x55,0xfd,0x42,
-    0xbe,0x8c,0xc1,0xdb,0xdb,0xfb,0x1e,0xa3,0xf1,0x3c,0xec,0xc9,0x7c,0x74,
-    0x75,0x75,0x7d,0x4f,0xaf,0xa1,0xf5,0xd3,0xd4,0xd4,0xa4,0x17,0x7a,0x06,
-    0x62,0x8e,0xe9,0x13,0xf2,0x65,0x0c,0xfb,0xf7,0xef,0xaf,0x67,0x34,0x7e,
-    0x0b,0x7b,0x12,0x1f,0x43,0x43,0x43,0xdf,0xa1,0x1e,0xd5,0x62,0x6b,0x0c,
-    0x75,0xfb,0x58,0xc8,0x97,0x31,0xec,0xdb,0xb7,0x4f,0xce,0x68,0xfc,0x06,
-    0xf6,0x78,0x21,0x2e,0x5d,0xba,0x74,0x05,0x7d,0xe2,0xde,0x96,0x2d,0x5b,
-    0x14,0xeb,0xd6,0xad,0x7b,0x82,0x1e,0x38,0x80,0xf9,0xf4,0xf9,0xb2,0x65,
-    0xcb,0x9e,0xaf,0x5e,0xbd,0xba,0xdb,0xd1,0xd1,0xb1,0x63,0xfb,0xf6,0xed,
-    0x7f,0xe0,0x7c,0xa9,0xc7,0x9c,0x95,0xa1,0xcf,0x97,0x58,0x70,0x4e,0xd4,
-    0x32,0x1a,0xbf,0x82,0x3d,0x4e,0x08,0xec,0xb3,0x38,0xd4,0xc7,0x6d,0xec,
-    0xd9,0x09,0xa1,0xfc,0xe1,0x6c,0x79,0x9d,0x93,0x93,0x73,0x59,0x9f,0x1f,
-    0x63,0xd8,0xbd,0x7b,0xf7,0x5d,0xa6,0xf7,0xc4,0xc2,0xfe,0x85,0x10,0x7b,
-    0xf7,0xee,0xfd,0x8d,0x5e,0x87,0xe7,0x1b,0x92,0x95,0x95,0x45,0x6a,0x6a,
-    0x6a,0x48,0x7b,0x7b,0x3b,0x69,0x6b,0x6b,0x23,0x85,0x85,0x85,0xe4,0xd8,
-    0xb1,0x63,0xf4,0xfd,0x01,0xa1,0x35,0x81,0x19,0x26,0x55,0x9f,0x2f,0xb1,
-    0xe0,0x99,0xab,0x86,0xc9,0x63,0x0c,0xec,0xd1,0x7c,0x60,0xcf,0x7c,0x89,
-    0x99,0x7e,0x0c,0xf7,0x94,0xa0,0x36,0x89,0xd0,0xca,0xcd,0xcd,0xe5,0xf2,
-    0xe9,0xea,0xea,0xfa,0xbb,0x90,0x2f,0x63,0xf0,0xf0,0xf0,0xb8,0xcd,0xe4,
-    0xf1,0x0c,0xec,0x9f,0xf2,0x91,0x91,0x91,0x91,0x4e,0xaf,0x89,0x8c,0x8c,
-    0x14,0xd4,0x47,0x17,0x3d,0x5f,0xe8,0x7c,0x8b,0x5a,0xed,0x12,0xf2,0x65,
-    0x0c,0x98,0xef,0xaa,0x19,0x8d,0x1f,0xc3,0x1e,0xc9,0x47,0x71,0x71,0x31,
-    0xf7,0xae,0xe5,0xe0,0xc1,0x83,0x7a,0x35,0xf6,0xf6,0xf6,0x72,0xcf,0x7c,
-    0x98,0x87,0x5a,0x84,0x7c,0x19,0x03,0xf6,0xe8,0xaf,0x8c,0x46,0x3a,0xd8,
-    0x7f,0x24,0x04,0x7a,0xf3,0x00,0x8d,0x9f,0x9a,0x9a,0x4a,0xb0,0x7f,0xa6,
-    0xe9,0x53,0xa9,0x54,0xdc,0x7c,0x40,0x7d,0xf9,0xf9,0xf9,0x15,0xe9,0xf3,
-    0x25,0x16,0xf4,0x89,0x5b,0x8c,0xc6,0x0f,0x61,0xff,0x40,0x88,0xfc,0xfc,
-    0xfc,0xaf,0x17,0x2c,0x58,0x30,0x42,0xaf,0x45,0x8f,0x26,0x5e,0x5e,0x5e,
-    0xe4,0xf8,0xf1,0xe3,0x24,0x3c,0x3c,0x9c,0x60,0xde,0x98,0x7a,0x66,0x46,
-    0x5f,0x7a,0x00,0xbd,0x27,0xf4,0xf9,0x12,0x0b,0xce,0xf2,0x4a,0x46,0x63,
-    0x38,0xec,0x32,0x7d,0x54,0x57,0x57,0x9f,0x41,0x7f,0x96,0xe3,0x3c,0x1e,
-    0x61,0xfb,0x8e,0x8d,0x8d,0x4d,0x57,0x50,0x50,0xd0,0x95,0xe1,0xe1,0xe1,
-    0x08,0x43,0x7e,0xc4,0xe2,0xe6,0xe6,0x76,0x53,0xe3,0x9f,0x7b,0xef,0x58,
-    0x57,0x57,0x47,0xf3,0x1b,0x2c,0x96,0xa2,0xa2,0xa2,0xa8,0xbc,0xbc,0xbc,
-    0x98,0x82,0x82,0x82,0x68,0xfc,0xbe,0x10,0x63,0xbe,0x2b,0x16,0xcc,0x20,
-    0x77,0x34,0x1a,0x3f,0xa7,0x9f,0x27,0x4f,0x9e,0x4c,0x81,0x3d,0xf0,0x6d,
-    0x02,0x67,0x7f,0x1f,0xb4,0x0d,0x00,0x57,0xaa,0x11,0xfd,0xa2,0x05,0xbd,
-    0xef,0x7d,0xfc,0xcf,0xef,0x6d,0x20,0x22,0x22,0xe2,0xbc,0x26,0x87,0x45,
-    0x92,0xff,0x16,0xf7,0x7e,0x4f,0x2a,0x95,0xde,0x1a,0x1d,0x1d,0xa5,0x0d,
-    0xc6,0x77,0x2e,0xc1,0x8c,0xfe,0x19,0xce,0x5c,0xfa,0xce,0x59,0x05,0xa4,
-    0x1a,0x8d,0x96,0x80,0x9b,0xd5,0xd0,0x83,0xfb,0x64,0x32,0xd9,0x39,0xcc,
-    0xf5,0x3e,0xb8,0xde,0xeb,0x4d,0x81,0xfe,0xef,0x95,0x9c,0x9c,0x1c,0x69,
-    0x6f,0x6f,0x4f,0x7b,0x22,0x9d,0x09,0xe8,0xbb,0x7b,0x2f,0x89,0xee,0xb2,
-    0x01,0xa9,0x60,0x6a,0x06,0xc3,0x8c,0xd0,0x8f,0xf3,0xb9,0x11,0x34,0xcc,
-    0x26,0x98,0x9d,0x14,0x1a,0x5d,0x93,0x7d,0x82,0x3e,0x0f,0xbe,0x27,0x11,
-    0x5e,0xd6,0x20,0x01,0x54,0x00,0xa5,0x44,0x22,0x6e,0x66,0xfc,0x9f,0xd0,
-    0xfb,0x5a,0x07,0xae,0x80,0x13,0xc0,0x44,0x5b,0xd0,0xbf,0x6f,0xf5,0xde,
-    0xd4
-};
-
-// keep_above_lit.png
-static const unsigned char image_3_data[] = {
-    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x15,0x57,0x14,0xc6,
-    0x11,0x31,0xa2,0x28,0xae,0xb8,0xc7,0xdd,0x58,0x97,0x18,0xe3,0x82,0x1a,
-    0x71,0x89,0x26,0xfd,0x83,0x54,0x6b,0x5d,0x08,0x1a,0xb4,0xb8,0xa0,0x52,
-    0x45,0x2c,0x2e,0x68,0x5d,0x2a,0xc6,0x82,0x40,0x28,0x34,0x48,0x31,0x96,
-    0x96,0x1a,0xaa,0x88,0xd5,0x82,0x28,0x60,0x01,0x2b,0x8b,0x20,0x8b,0xec,
-    0xfb,0xe2,0x82,0x28,0x22,0xa4,0x96,0x36,0x61,0x7f,0xbc,0xe9,0x77,0xa6,
-    0x33,0xe9,0xf5,0xf0,0xa0,0x56,0xfa,0x8a,0x37,0xf9,0x85,0x97,0xf9,0x66,
-    0xe6,0x7c,0x33,0x73,0xef,0x39,0xe7,0x62,0x60,0xd0,0x6e,0xf4,0x00,0x1b,
-    0x80,0x2b,0x08,0x05,0xb9,0x20,0x5f,0xcf,0x64,0x82,0x8b,0xe0,0x08,0x30,
-    0x6f,0x6f,0xa9,0x9d,0xbf,0xf5,0xa0,0x0c,0x48,0x2a,0x7d,0xfa,0xf4,0x69,
-    0x33,0x35,0x35,0x6d,0xd5,0x27,0x46,0x46,0x46,0x5a,0x31,0x26,0x08,0x03,
-    0xd3,0x3a,0xf0,0x49,0xcf,0x23,0x19,0x1a,0x1a,0x6a,0x9d,0x9c,0x9c,0x6a,
-    0xc2,0xc3,0xc3,0x9f,0x54,0x54,0x54,0x94,0x48,0x92,0x54,0xa0,0x6f,0x34,
-    0x1a,0x4d,0x41,0x4e,0x4e,0x4e,0xf9,0x85,0x0b,0x17,0x9e,0x8d,0x1f,0x3f,
-    0xbe,0x99,0x7c,0xf4,0xe8,0xd1,0xa3,0x05,0x7f,0x17,0x32,0x8f,0x0e,0xa4,
-    0x4d,0x99,0x32,0xa5,0xb1,0xa6,0xa6,0xa6,0xf8,0xff,0xf0,0xd6,0x19,0x5e,
-    0x5e,0x5e,0x55,0x3d,0x7b,0xf6,0xd4,0xc2,0x6b,0x1d,0x7c,0xbd,0xa7,0x78,
-    0x34,0x03,0x6d,0x83,0x07,0x0f,0x6e,0x2d,0x29,0x29,0x29,0xed,0x6e,0x8f,
-    0x2a,0x7e,0x7e,0x7e,0xcf,0x95,0x39,0x10,0xad,0xf8,0xa4,0x35,0x23,0x39,
-    0x3b,0x3b,0xbf,0xec,0x6e,0x6f,0x9c,0xa9,0x53,0xa7,0x36,0xe2,0x9d,0x36,
-    0xc1,0x9f,0x31,0xf0,0x25,0x9f,0xd1,0xd1,0xd1,0x8f,0xbb,0xdb,0x17,0x67,
-    0xfb,0xf6,0xed,0xbf,0x2a,0xef,0x74,0x29,0xb8,0x4c,0xbf,0xcb,0xcb,0xcb,
-    0x69,0x5e,0xe6,0xe9,0xa2,0xb5,0xb5,0x35,0xcf,0xd2,0xd2,0xb2,0x6e,0xf4,
-    0xe8,0xd1,0xcd,0xbd,0x7a,0xf5,0xd2,0xd2,0xfa,0xec,0x0a,0xfd,0xfb,0xf7,
-    0xd7,0x4c,0x9f,0x3e,0xbd,0x01,0xeb,0xa6,0xb2,0xa3,0x98,0xc4,0xa9,0x53,
-    0xa7,0x5e,0x28,0x3e,0xd7,0xa8,0x3e,0xcb,0xca,0xca,0xf2,0xb5,0x5a,0x6d,
-    0x26,0x27,0x26,0x26,0xa6,0xa4,0x77,0xef,0xde,0x6d,0x6a,0xce,0xc0,0x6f,
-    0x69,0xd8,0xb0,0x61,0x5d,0x42,0xcc,0x41,0xd3,0xa6,0x4d,0xab,0xc7,0x7a,
-    0x6f,0x17,0x97,0x38,0x79,0xf2,0xe4,0x33,0xee,0xb3,0xb4,0xb4,0x34,0x1b,
-    0x5a,0x9a,0xc8,0x8b,0x17,0x2f,0x32,0xe9,0xfd,0x91,0xbe,0x62,0xc5,0x0a,
-    0xe9,0xc1,0x83,0x07,0x12,0x8e,0x4b,0x5d,0x1d,0xf0,0x25,0x45,0x46,0x46,
-    0x4a,0x63,0xc6,0x8c,0x91,0xbd,0xce,0x9f,0x3f,0xff,0x0f,0x1e,0x9b,0x38,
-    0x71,0xe2,0xc4,0x53,0x1d,0x3e,0x33,0x70,0x8b,0x64,0x11,0x6b,0x6b,0xeb,
-    0x6a,0xd2,0x56,0xaf,0x5e,0xdd,0x65,0x6f,0xba,0x46,0x55,0x55,0x95,0x84,
-    0x3c,0x43,0xb9,0x52,0xaa,0xae,0xae,0x4e,0xe3,0xf1,0x8f,0x1f,0x3f,0xfe,
-    0x84,0xfb,0x44,0x4e,0x4a,0x85,0x96,0x20,0x82,0x9c,0xdb,0x40,0xda,0xfd,
-    0xfb,0xf7,0xf5,0xe2,0x93,0xc6,0xae,0x5d,0xbb,0xe4,0x77,0x8a,0x6f,0x5c,
-    0xce,0xe3,0x1f,0x3b,0x76,0xec,0x21,0xf7,0x59,0x5c,0x5c,0x9c,0x04,0xed,
-    0x8e,0xc8,0xd0,0xa1,0x43,0x29,0x27,0x48,0xb5,0xb5,0xb5,0x7a,0xf3,0xe9,
-    0xe9,0xe9,0x29,0xfb,0xdc,0xba,0x75,0x6b,0x05,0x8f,0x7f,0xf4,0xe8,0xd1,
-    0x32,0x1d,0x3e,0xe3,0xa1,0xfd,0x2c,0xa2,0xfa,0x7c,0xf9,0xf2,0xa5,0xde,
-    0x7c,0xba,0xbb,0xbb,0xcb,0x3e,0xb7,0x6d,0xdb,0xf6,0x88,0xc7,0x3f,0x72,
-    0xe4,0x48,0x31,0xf7,0x59,0x54,0x54,0xf4,0x0b,0xb4,0x08,0x11,0xf8,0x6c,
-    0x24,0x0d,0xeb,0x49,0x6f,0x3e,0xcf,0x9e,0x3d,0xab,0xfa,0x7c,0xc8,0xe3,
-    0x1f,0x3e,0x7c,0xb8,0x90,0xfb,0x2c,0x2c,0x2c,0x8c,0x86,0x76,0x43,0x04,
-    0x3e,0xe5,0xf9,0x39,0x61,0xc2,0x04,0xaa,0xfd,0x7a,0x61,0xc8,0x90,0x21,
-    0xaa,0xcf,0x52,0x1e,0xff,0xd0,0xa1,0x43,0xf9,0xdc,0x67,0x41,0x41,0x41,
-    0x24,0x72,0xc1,0x75,0x11,0xd4,0xad,0x57,0xa4,0x0d,0x18,0x30,0xa0,0x69,
-    0xd0,0xa0,0x41,0x7a,0xa1,0x6f,0xdf,0xbe,0xad,0xca,0x3a,0xca,0xe2,0xf1,
-    0x0f,0x1c,0x38,0x90,0xab,0xc3,0x67,0x38,0x9e,0xe1,0x8a,0xc8,0xd2,0xa5,
-    0x4b,0x9f,0x2a,0xb5,0x2a,0x8c,0x6b,0x1d,0x51,0x5f,0x5f,0x7f,0xb5,0xa9,
-    0xa9,0x29,0xe4,0x4d,0xcf,0x47,0x5f,0x91,0x41,0x31,0x7c,0x7c,0x7c,0x92,
-    0xb8,0x86,0xfe,0x32,0x8b,0xfb,0xcc,0xcf,0xcf,0x0f,0x85,0xf6,0x83,0xc8,
-    0x92,0x25,0x4b,0x2a,0x94,0x5a,0x75,0x9d,0x6b,0xba,0xf0,0xf5,0xf5,0x8d,
-    0x47,0xbd,0xd2,0xa0,0xb7,0x6e,0x09,0x0a,0x0a,0x8a,0x7d,0x93,0x6b,0xf0,
-    0x6d,0xd3,0x29,0x86,0xb7,0xb7,0x77,0x22,0xd7,0xf6,0xef,0xdf,0x9f,0xc1,
-    0x7d,0xe6,0xe5,0xe5,0xfd,0x08,0xed,0x7b,0x11,0x0b,0x0b,0x8b,0x27,0x4a,
-    0x0d,0x08,0xe1,0x1a,0x27,0x22,0x22,0xe2,0x26,0xf5,0xd8,0xa8,0xdd,0xd4,
-    0x6b,0x53,0x7d,0x6d,0x45,0xef,0xdb,0xee,0x9e,0x9c,0x83,0x07,0x0f,0xa6,
-    0x52,0x0c,0xf4,0x9c,0x71,0x5c,0x73,0x74,0x74,0x4c,0xe7,0x3e,0x71,0xcf,
-    0x60,0xcc,0x89,0x00,0x91,0xc5,0x8b,0x17,0x3f,0x52,0x6a,0xc0,0x25,0xae,
-    0x89,0xb4,0xb5,0xb5,0x05,0x8c,0x1b,0x37,0x4e,0xee,0x6d,0xd0,0x0f,0x48,
-    0x81,0x81,0x81,0xf2,0xda,0xa0,0xeb,0x3b,0xbb,0x8e,0xc0,0xb7,0x4d,0xa6,
-    0x73,0x91,0x47,0xef,0x70,0xcd,0xc1,0xc1,0x21,0x85,0xfb,0xcc,0xce,0xce,
-    0x0e,0xc2,0x33,0xf8,0x8b,0x2c,0x5a,0xb4,0xe8,0xa1,0xe2,0xf3,0x22,0xd7,
-    0x44,0xdc,0xdc,0xdc,0x62,0xe8,0xbc,0x8d,0x1b,0x37,0xca,0xb9,0x86,0x7a,
-    0x80,0xd9,0xb3,0x67,0xcb,0xf5,0x30,0x36,0x36,0x36,0xa4,0xb3,0x6b,0xf1,
-    0x6d,0xef,0xd1,0xb5,0xc8,0xa3,0xd1,0x5c,0xdb,0xb3,0x67,0x4f,0xb2,0x0e,
-    0x9f,0x81,0xd0,0x7c,0x45,0x16,0x2e,0x5c,0x58,0xa6,0xd4,0x80,0x6f,0xb9,
-    0xa6,0xd2,0xd2,0xd2,0x72,0x6e,0xe4,0xc8,0x91,0xaf,0xd0,0xaf,0xd1,0xfc,
-    0x90,0xd4,0x11,0x1a,0x1a,0x2a,0xbf,0x53,0xac,0xc5,0xe2,0x8e,0xae,0x25,
-    0xf0,0x6d,0xe3,0xe9,0x3c,0xe4,0xd1,0x28,0xae,0xd9,0xdb,0xdb,0xdf,0xe3,
-    0x3e,0xb3,0xb2,0xb2,0x02,0xa0,0x79,0x8b,0x2c,0x58,0xb0,0xa0,0x54,0xa9,
-    0x01,0x17,0xb8,0xa6,0x82,0xf5,0x1a,0xa3,0xd4,0x3d,0x49,0x1c,0x98,0x0b,
-    0xd2,0x8c,0x19,0x33,0xe4,0x7d,0x61,0x6a,0x6a,0xea,0x77,0x1d,0x5d,0x8f,
-    0x6f,0x7b,0x97,0xae,0x77,0x75,0x75,0x8d,0xe0,0xda,0xee,0xdd,0xbb,0xe3,
-    0xb9,0xcf,0x8c,0x8c,0x8c,0xf3,0xd0,0x3c,0x45,0xcc,0xcd,0xcd,0x4b,0x94,
-    0x1a,0xf0,0x35,0xd7,0x88,0xcb,0x97,0x2f,0x5f,0x42,0xdf,0xa7,0xe9,0xd7,
-    0xaf,0x9f,0x84,0xbd,0xa9,0xc4,0x47,0x70,0x70,0xb0,0xfc,0x4e,0xd1,0xbf,
-    0xd5,0xa0,0x47,0xf0,0xd1,0x75,0x0f,0x7c,0xdb,0x3b,0x74,0xce,0x99,0x33,
-    0x67,0xc2,0xb9,0xb6,0x73,0xe7,0xce,0xbb,0xdc,0x27,0x7a,0xcb,0x73,0xd0,
-    0x5c,0x45,0xe6,0xcd,0x9b,0x57,0xa4,0xe4,0xd6,0xaf,0xb8,0x96,0x90,0x90,
-    0xe0,0x0f,0x7f,0x0d,0xd8,0x17,0x4a,0x58,0xeb,0xed,0x3c,0xaa,0x03,0xb1,
-    0x64,0xaf,0xb8,0x57,0x31,0xde,0xb1,0x1b,0xbf,0x0f,0xbe,0x2d,0xed,0xd3,
-    0xa4,0xd3,0xa7,0x4f,0x87,0x72,0x6d,0xc7,0x8e,0x1d,0xb1,0xdc,0x67,0x7a,
-    0x7a,0x3a,0x3d,0xef,0x69,0x91,0xb9,0x73,0xe7,0x16,0x2a,0x39,0xeb,0x4b,
-    0xf1,0x78,0x5d,0x5d,0x9d,0xab,0x99,0x99,0x99,0xbc,0xbe,0xfd,0xfd,0xfd,
-    0x3b,0xf4,0x48,0xa3,0xb9,0xb9,0x59,0x42,0x1e,0x96,0xbd,0x6e,0xde,0xbc,
-    0xf9,0x0e,0x8f,0x81,0xbe,0xee,0x36,0x69,0xd8,0x63,0x5c,0xe3,0x1a,0x6a,
-    0x69,0x34,0xf7,0x89,0x39,0xe4,0x05,0xed,0xa4,0xc8,0x9c,0x39,0x73,0xe4,
-    0xfa,0x9a,0x9b,0x9b,0xeb,0x21,0x1e,0x5f,0xb6,0x6c,0x99,0x9c,0xd7,0xf6,
-    0xee,0xdd,0xdb,0xa9,0x47,0x75,0xa0,0x46,0x49,0x58,0x6b,0x5a,0xbc,0x7b,
-    0x4d,0x58,0x58,0x98,0x9f,0x78,0x2f,0x3b,0x3b,0xbb,0x08,0xa5,0x6e,0x86,
-    0xf0,0xf8,0xb6,0xb6,0xb6,0xb7,0xb9,0xcf,0x94,0x94,0x14,0x77,0x68,0x9f,
-    0x89,0x20,0xb7,0xe4,0x29,0xb9,0xd5,0x4d,0x3d,0x56,0x59,0x59,0xe9,0xa2,
-    0xf6,0x26,0xf4,0xae,0x68,0x50,0x1e,0xa2,0x9e,0x0a,0x39,0x43,0xde,0x4f,
-    0x24,0x27,0x27,0x4b,0x38,0xef,0xb5,0x3d,0x4a,0x78,0x78,0xb8,0xfa,0xfd,
-    0x73,0xc4,0x18,0xd8,0x53,0xde,0xa4,0xe3,0xe8,0xdd,0x83,0x79,0xfc,0x2d,
-    0x5b,0xb6,0x44,0x72,0x9f,0xb8,0xf7,0x17,0xd0,0x0e,0x89,0xe0,0x9e,0xf4,
-    0xff,0x29,0x29,0x2a,0x2a,0xca,0x43,0x3d,0x86,0x35,0x75,0x0a,0x6b,0x58,
-    0xde,0xd7,0x0d,0x1c,0x38,0x50,0x6b,0x62,0x62,0xf2,0xda,0xbe,0x4c,0x84,
-    0xf2,0xe7,0xc4,0x89,0x13,0xe5,0x75,0x3f,0x73,0xe6,0x4c,0xf9,0xd8,0xe4,
-    0xc9,0x93,0x4b,0xc5,0x18,0xeb,0xd6,0xad,0x93,0xdf,0x99,0x8b,0x8b,0x4b,
-    0x20,0x8f,0x6f,0x63,0x63,0x73,0x93,0xfb,0x4c,0x4a,0x4a,0x72,0x81,0xf6,
-    0xa9,0x08,0x9e,0xe7,0x27,0xd2,0x36,0x6c,0xd8,0x70,0x4b,0x3c,0xee,0xe1,
-    0xe1,0x71,0x7e,0xec,0xd8,0xb1,0x8f,0xb0,0x77,0xac,0x1a,0x31,0x62,0xc4,
-    0xb3,0x51,0xa3,0x46,0x3d,0x85,0x8f,0x1c,0xd4,0xd9,0xa4,0xb5,0x6b,0xd7,
-    0x46,0xae,0x5c,0xb9,0xf2,0xee,0xac,0x59,0xb3,0xb2,0xb1,0xce,0x9f,0xa0,
-    0x8e,0xd6,0x19,0x1b,0x1b,0xd3,0x7a,0xd3,0x60,0x2f,0x54,0x8b,0xba,0xef,
-    0xa5,0xde,0x07,0xfb,0x6d,0x27,0xba,0x5e,0xc9,0x37,0x9f,0xf3,0xf8,0x9b,
-    0x36,0x6d,0xba,0xc1,0x7d,0x26,0x26,0x26,0xd2,0x9c,0x70,0x10,0x49,0x4b,
-    0x4b,0x3b,0x8e,0xbc,0xd3,0x8c,0xf7,0xa2,0x5d,0xb5,0x6a,0x55,0x64,0x63,
-    0x63,0xa3,0x23,0x3f,0xe7,0x6d,0x41,0x0f,0x76,0x18,0x7b,0x62,0xb9,0x6f,
-    0xa3,0xbf,0xba,0xce,0xc1,0x3e,0x32,0x94,0xfb,0x8c,0x8f,0x8f,0xa7,0x39,
-    0x61,0xcf,0x41,0xbf,0xe5,0x45,0x5e,0xe9,0x1c,0xd4,0x9c,0x96,0x49,0x93,
-    0x26,0x15,0xa0,0xbf,0xcd,0xeb,0x0a,0xe8,0xbf,0x9f,0xab,0x73,0x07,0xdf,
-    0xa4,0x12,0xfb,0x1a,0x47,0x5d,0xb1,0xad,0xac,0xac,0xae,0x71,0x9f,0x71,
-    0x71,0x71,0xce,0xd0,0xec,0x74,0x81,0xbe,0x6e,0x1f,0xe6,0x6a,0x22,0xfa,
-    0x5a,0xda,0x27,0xf3,0xff,0x55,0xfe,0x6b,0xf0,0x7d,0xda,0x30,0x27,0xca,
-    0x2c,0x2d,0x2d,0x6f,0xa0,0x57,0xdd,0xd5,0x51,0x5c,0xcc,0xdd,0xab,0x82,
-    0xcf,0x6f,0xe8,0x77,0x40,0x40,0x00,0xcd,0x0f,0xdb,0x7f,0x02,0xb9,0x73,
-    0x07,0xea,0xf8,0x27,0x6f,0x0b,0x9e,0xd9,0xfe,0x4d,0xe2,0x10,0xcb,0x97,
-    0x2f,0xbf,0xa5,0xf8,0x7c,0x1f,0x6c,0xa5,0xdf,0x6b,0xd6,0xac,0xa1,0x7e,
-    0xc9,0xe6,0x5d,0x02,0x6b,0x8c,0xfa,0x0b,0x0d,0x18,0x00,0xc6,0x93,0x4f,
-    0x53,0x53,0xd3,0x2a,0xd4,0xe8,0x8f,0xa1,0x5b,0xbf,0x0b,0xf8,0xf9,0xf9,
-    0x1d,0xc5,0xfc,0x20,0x8f,0x69,0x06,0x7f,0x8f,0x73,0xe4,0x15,0xb9,0x26,
-    0xb3,0xa1,0xa1,0xc1,0x0a,0xe7,0xad,0xef,0x4e,0x90,0xbb,0x1c,0xb1,0x76,
-    0xeb,0xe1,0x89,0xf6,0x78,0x16,0x82,0x4f,0x23,0x83,0xbf,0xfe,0x6f,0x4b,
-    0xfb,0x85,0xdf,0xd1,0xef,0x7a,0xa3,0xd6,0x7d,0x84,0x6b,0x3e,0xfc,0x3f,
-    0x41,0xaf,0xb0,0x0f,0x79,0x37,0x52,0x79,0x8f,0x34,0x2f,0xed,0x0d,0xda,
-    0x0f,0x13,0x70,0x06,0x34,0xaa,0xeb,0x12,0x9e,0x7f,0x1b,0x3e,0x7c,0x78,
-    0x2e,0xc8,0xd1,0x27,0xc8,0x4d,0xf9,0x94,0x03,0x84,0x9c,0x50,0x09,0x3e,
-    0xd0,0xe1,0x51,0x1c,0xfd,0x14,0xbf,0x54,0x5b,0x1f,0xff,0x17,0x79,0xe8,
-    0x0d,0xa0,0xf7,0x97,0x03,0xae,0x00,0x27,0x60,0xc8,0x4d,0xfd,0x09,0xc2,
-    0x58,0x25,0x81
-};
-
-// keep_above.png
-static const unsigned char image_4_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x6b,0x4c,0x54,0x47,0x14,0xc7,
-    0x57,0xf1,0x81,0xe2,0x03,0x71,0xf1,0x85,0x8a,0xf8,0x16,0xc5,0xf7,0x03,
-    0xe5,0x83,0xb1,0xfa,0xc5,0x17,0x35,0xda,0x0f,0x0d,0x41,0xd3,0x10,0x5a,
-    0x62,0x93,0x26,0x6d,0x08,0x58,0x8c,0xb5,0xd4,0x3e,0x68,0x81,0x60,0xb4,
-    0xa8,0x24,0x85,0x56,0xa2,0xb5,0x08,0x02,0xb1,0x46,0x2d,0x52,0x8b,0x0a,
-    0xc5,0xb4,0xe9,0x23,0xed,0xea,0x56,0x40,0x40,0x11,0x76,0x81,0x5d,0x40,
-    0x14,0x5c,0xd8,0x95,0xbd,0xfd,0x9f,0x75,0x86,0x4e,0x67,0xef,0x22,0xa5,
-    0xae,0x78,0x93,0x5f,0x80,0x73,0xee,0xcc,0xfc,0x77,0xe6,0x9c,0x33,0x33,
-    0x8b,0x46,0xe3,0xf4,0xf8,0x81,0x48,0x70,0x04,0xfc,0x04,0x6e,0x3c,0x07,
-    0x0a,0xc1,0x61,0x10,0x01,0x7c,0x9d,0x25,0x75,0x3f,0xde,0xe0,0x33,0x60,
-    0x01,0x0a,0x67,0xd4,0xa8,0x51,0x36,0x77,0x23,0x8e,0x07,0x1e,0x80,0x7d,
-    0xc0,0x4b,0xd2,0xe7,0x33,0x60,0xc0,0x80,0xbb,0x4c,0xd3,0xe3,0xe4,0xe4,
-    0x64,0x43,0x71,0x71,0x71,0xa5,0xd5,0x6a,0xd5,0x2b,0x8a,0x72,0xd3,0xdd,
-    0x74,0x76,0x76,0xea,0x8b,0x8a,0x8a,0xaa,0x12,0x12,0x12,0x8c,0xc3,0x87,
-    0x0f,0x7f,0xcc,0xb4,0xde,0x14,0x74,0x7a,0x82,0x52,0xb2,0x87,0x87,0x87,
-    0x37,0x3f,0x2f,0x5d,0xae,0xb0,0x58,0x2c,0xfa,0xd0,0xd0,0xd0,0xfb,0x4c,
-    0xe7,0x39,0xe0,0x01,0xde,0xa6,0xbf,0xb7,0x6e,0xdd,0xda,0x6a,0xb7,0xdb,
-    0xfb,0x4d,0x9b,0x08,0xcd,0x53,0x48,0x48,0x48,0x1b,0xd3,0x19,0x06,0x2e,
-    0xd0,0xef,0x55,0x55,0x55,0x65,0xfd,0xad,0x4d,0xa4,0xa4,0xa4,0xa4,0x92,
-    0x69,0xfc,0x8a,0x72,0xc4,0xdf,0xdf,0xbf,0xb3,0xbf,0x35,0xc9,0xd8,0x6c,
-    0xb6,0x9b,0x23,0x47,0x8e,0xa4,0xd8,0x74,0x68,0x5d,0xb3,0x66,0xcd,0x43,
-    0xd8,0x75,0xae,0x30,0x1a,0x8d,0xfa,0x15,0x2b,0x56,0xb4,0xf9,0xf8,0xf8,
-    0xd8,0x06,0x0d,0x1a,0x64,0xff,0x3f,0x0c,0x1e,0x3c,0xd8,0xae,0xd5,0x6a,
-    0x6d,0x34,0x66,0x4b,0x4b,0x8b,0xbe,0xa7,0x71,0x67,0xcd,0x9a,0x65,0x41,
-    0x2e,0x3b,0x62,0x73,0xf5,0xea,0xd5,0x0f,0x10,0x8b,0xbf,0xa9,0xb1,0x73,
-    0xe7,0x4e,0x93,0x58,0x1b,0x46,0x8f,0x1e,0xad,0x8c,0x1b,0x37,0xae,0xcf,
-    0x8c,0x18,0x31,0x42,0xac,0x33,0x4a,0x4c,0x4c,0x8c,0xc1,0xd5,0xd8,0xa2,
-    0xc6,0xe0,0xe0,0x60,0xca,0x97,0x9f,0x65,0x92,0x92,0x92,0xaa,0xf1,0x8e,
-    0xe2,0xe5,0xe5,0xa5,0x64,0x66,0x66,0x2a,0x98,0x4f,0xe5,0x59,0x3c,0x3a,
-    0x9d,0x4e,0x89,0x8b,0x8b,0x53,0x30,0xa7,0x0a,0xf5,0x7f,0xfa,0xf4,0xe9,
-    0x32,0xb5,0xf1,0x67,0xce,0x9c,0xf9,0x88,0x6b,0x5c,0xb5,0x6a,0xd5,0x7d,
-    0x34,0x2d,0x95,0x41,0x3c,0xd8,0xa8,0x8f,0xab,0x57,0xaf,0x3e,0x13,0x6d,
-    0xf2,0x73,0xf4,0xe8,0x51,0xc7,0x5c,0xfa,0xf9,0xf9,0x59,0xd4,0xc6,0x87,
-    0xc6,0x76,0xae,0x71,0xe5,0xca,0x95,0x2d,0xb0,0x5d,0x13,0x69,0x6b,0x6b,
-    0x2b,0x21,0x7d,0x73,0xe7,0xce,0x75,0x8b,0x3e,0x7a,0x50,0x63,0x14,0xd4,
-    0x6c,0xc5,0xc3,0xc3,0xc3,0x2e,0x8f,0x4f,0xcc,0x98,0x31,0xa3,0x8d,0x6b,
-    0x44,0x3e,0x34,0xc3,0xf6,0x83,0x48,0x79,0x79,0xf9,0x8f,0xe4,0xdb,0xb2,
-    0x65,0x8b,0xdb,0x34,0xd2,0x33,0x7f,0xfe,0x7c,0xc7,0x7a,0xe3,0xb9,0x2c,
-    0x33,0x7d,0xfa,0xf4,0x6e,0x8d,0xcb,0x97,0x2f,0x6f,0x82,0xad,0x40,0xa4,
-    0xa2,0xa2,0xe2,0x0a,0xf9,0x36,0x6f,0xde,0xec,0x56,0x8d,0xf3,0xe6,0xcd,
-    0xe3,0x1a,0x0b,0x64,0x02,0x02,0x02,0x1e,0x72,0x8d,0xcb,0x96,0x2d,0x33,
-    0xc3,0x76,0x5e,0x04,0x35,0xfd,0x7b,0xf2,0x6d,0xdc,0xb8,0xd1,0xad,0x1a,
-    0xe7,0xcc,0x99,0xc3,0x35,0x9e,0x97,0x81,0xc6,0x07,0x82,0x46,0x13,0x6c,
-    0x67,0x45,0xaa,0xab,0xab,0xbf,0x23,0x1f,0xc5,0x0b,0x6a,0x80,0xdb,0xe0,
-    0xb9,0x2d,0x8f,0x4f,0x4c,0x9b,0x36,0xad,0x5b,0xe3,0x92,0x25,0x4b,0x1a,
-    0x90,0xeb,0xb9,0x22,0x26,0x93,0xe9,0x2c,0xf9,0xd0,0x47,0xd7,0x98,0x31,
-    0x63,0x3a,0xdc,0x05,0xd5,0x75,0xca,0x19,0x79,0x7c,0x02,0xfb,0x5f,0x2b,
-    0xd7,0xb8,0x78,0xf1,0xe2,0x7a,0xe8,0xce,0x12,0x31,0x9b,0xcd,0x67,0x58,
-    0x3e,0x19,0x64,0x5f,0x4f,0x60,0xef,0x38,0xd3,0xd5,0xd5,0xd5,0xeb,0xf7,
-    0x91,0xbb,0xcd,0x43,0x87,0x0e,0xb5,0xa9,0xf9,0xa0,0xf1,0x3e,0xd7,0xb8,
-    0x68,0xd1,0x22,0x2a,0xce,0x27,0x45,0xa0,0x31,0x8b,0xe5,0x53,0x9d,0xec,
-    0x53,0xa3,0xbd,0xbd,0xfd,0x54,0x58,0x58,0x18,0x9d,0xf9,0x94,0xa9,0x53,
-    0xa7,0xb6,0x54,0x56,0x56,0x9e,0xe9,0x4d,0x3b,0xe4,0x6e,0x13,0xd3,0xe8,
-    0xe4,0xa3,0x7e,0xb8,0xc6,0x85,0x0b,0x17,0xd2,0x5c,0x1d,0x17,0x81,0xc6,
-    0xaf,0x59,0xac,0xd6,0xca,0x3e,0x35,0x76,0xec,0xd8,0xa1,0x67,0x67,0x64,
-    0x0b,0x9b,0xff,0x7b,0xbd,0x69,0x87,0xbc,0xe0,0x1a,0x9d,0x7c,0x53,0xa6,
-    0x4c,0xe9,0xd6,0x18,0x14,0x14,0x54,0x87,0xf5,0x4f,0x17,0x69,0x6c,0x6c,
-    0xcc,0x64,0xb1,0x7a,0x4f,0xf6,0xc9,0x5c,0xba,0x74,0x29,0x0f,0x7d,0xd9,
-    0xc7,0x8f,0x1f,0xdf,0x8a,0xb5,0x3e,0x8e,0x7a,0x62,0xa4,0xb6,0x69,0x69,
-    0x69,0x05,0x4f,0x6b,0x8b,0xbc,0x30,0x93,0x46,0x35,0x1f,0x34,0x36,0x73,
-    0x8d,0x0b,0x16,0x2c,0xa0,0xb9,0x3a,0x26,0x02,0x8d,0xe9,0x2c,0x56,0xef,
-    0xca,0x3e,0x19,0xc4,0x4a,0x0d,0xbd,0x9b,0x9e,0x9e,0x7e,0x8e,0xfe,0xc6,
-    0xb9,0xdf,0x11,0x27,0x88,0xb5,0x86,0xa7,0xb5,0x45,0xcc,0x99,0xd8,0x3c,
-    0x3a,0xf9,0x26,0x4f,0x9e,0xdc,0xc4,0x35,0xa2,0xd6,0xd3,0xba,0x7c,0x2e,
-    0x02,0x8d,0x69,0x2c,0x56,0xef,0xc8,0x3e,0x91,0xac,0xac,0x2c,0x47,0x6e,
-    0x61,0xee,0x6a,0x45,0x3b,0xe2,0xb8,0x8a,0xec,0x19,0x19,0x19,0xf9,0x3d,
-    0xb5,0x87,0xc6,0xc6,0x21,0x43,0x86,0x58,0xd5,0x7c,0xd8,0xc7,0xcd,0x5c,
-    0x63,0x60,0x60,0x60,0x0d,0x6c,0x07,0x45,0xa0,0x31,0x95,0xc5,0x6a,0xb5,
-    0xec,0xe3,0x20,0x7f,0x0f,0x62,0xdf,0x37,0xd0,0x7b,0x27,0x4e,0x9c,0xc8,
-    0x16,0x7d,0xd9,0xd9,0xd9,0xdf,0x90,0x7d,0xf6,0xec,0xd9,0xb5,0xae,0xda,
-    0x13,0xc8,0x8b,0x06,0xa6,0xd1,0xc9,0x27,0x6a,0xc4,0x1c,0xd0,0x7a,0x26,
-    0x89,0x34,0x34,0x34,0x1c,0x62,0xb1,0x5a,0x25,0xfb,0x38,0x9b,0x36,0x6d,
-    0xfa,0x95,0xc5,0xc3,0x6d,0x35,0x3f,0x62,0xa8,0x9a,0xfc,0xbb,0x76,0xed,
-    0x2a,0x76,0xd5,0x07,0x62,0x8e,0x6b,0x74,0xf2,0x4d,0x9a,0x34,0xc9,0xc4,
-    0x35,0xe2,0x6c,0x43,0x73,0xf5,0x89,0x48,0x7d,0x7d,0x7d,0x32,0x8b,0xd5,
-    0x4a,0xd9,0x47,0x44,0x45,0x45,0xd1,0xbd,0x5d,0x99,0x30,0x61,0x82,0xa9,
-    0xa6,0xa6,0x26,0x45,0xed,0x1d,0xbd,0x5e,0x7f,0xc8,0xdb,0xdb,0x9b,0xea,
-    0xb0,0x3d,0x31,0x31,0x31,0x47,0xed,0x1d,0xc4,0x5c,0x3d,0xd3,0xe8,0xe4,
-    0x9b,0x38,0x71,0x62,0x23,0xc6,0x68,0xa1,0x71,0xb0,0x67,0xd2,0x5c,0x1d,
-    0x10,0xc1,0x79,0xf6,0x53,0x16,0xab,0xb7,0x65,0x5f,0x6a,0x6a,0xea,0x49,
-    0xf2,0xe1,0x7c,0xf9,0xf0,0xfa,0xf5,0xeb,0x87,0x65,0xbf,0x48,0x4e,0x4e,
-    0xce,0x17,0xd8,0xab,0xac,0xd8,0x4b,0xba,0x90,0x4b,0xa9,0xb2,0x1f,0x1a,
-    0x8d,0x4c,0xa3,0x53,0x5b,0x7c,0xfe,0x06,0xae,0x11,0x31,0x43,0x73,0xb5,
-    0x5f,0x04,0x1a,0x3f,0x62,0xb1,0x5a,0x2e,0xda,0x51,0x9b,0x13,0x70,0x2e,
-    0x6f,0x1b,0x38,0x70,0x60,0x17,0x62,0xee,0x98,0xdc,0x4e,0x8d,0xd8,0xd8,
-    0xd8,0x5c,0xea,0x0b,0xb5,0xf0,0x2e,0xee,0xfb,0xef,0x8b,0x3e,0xc4,0x9c,
-    0x01,0x9f,0xa1,0x53,0xad,0x9d,0xa8,0x11,0x7b,0x3b,0xcd,0xd5,0x5e,0x11,
-    0x83,0xc1,0x10,0xcf,0x62,0xb5,0x4c,0xb4,0x47,0x46,0x46,0x7e,0x4b,0xf6,
-    0xed,0xdb,0xb7,0x5f,0xe6,0x36,0x8c,0xbb,0xaf,0xb8,0xb8,0x38,0x09,0xf7,
-    0x89,0x63,0xb8,0x5f,0x1c,0xcf,0xcb,0xcb,0x3b,0x8c,0xcf,0xf2,0xa1,0xd8,
-    0x8e,0xfa,0xa1,0x76,0x29,0x29,0x29,0x5f,0x8a,0x76,0xc4,0x5c,0x1d,0xd3,
-    0xb8,0x57,0x06,0xf5,0xb6,0x9e,0x6b,0x44,0x6e,0x56,0xc0,0x16,0x23,0x82,
-    0x5a,0x1c,0xc7,0xf6,0xb5,0x3b,0xa2,0x1d,0x77,0x30,0x87,0x46,0xac,0x9d,
-    0x0d,0x75,0xcd,0x42,0xfd,0x4b,0xdf,0xd7,0x74,0x43,0x71,0x88,0xbb,0xa4,
-    0x19,0x63,0x19,0x70,0xd7,0xa2,0xef,0x71,0x94,0xe8,0xe8,0xe8,0x53,0x62,
-    0x7f,0x38,0x57,0x98,0x87,0x0d,0x1b,0xd6,0x2e,0x8f,0x4f,0xe0,0x8e,0x66,
-    0xe4,0x1a,0x51,0x6b,0x69,0x3d,0xdf,0x91,0xc1,0x5c,0xd7,0x62,0x9c,0x2e,
-    0xdc,0xc7,0x0f,0x70,0x1b,0xce,0x43,0xb1,0xc8,0xe7,0x42,0xf2,0xa1,0x0f,
-    0x03,0xfd,0x44,0xfb,0xb2,0xa5,0x4b,0x97,0xfe,0xb2,0x7e,0xfd,0xfa,0x2b,
-    0x98,0xdf,0x0b,0x21,0x21,0x21,0xa5,0x88,0x71,0x3d,0xf9,0xa1,0xad,0x15,
-    0xf1,0x66,0xc1,0xe7,0x79,0xb4,0x61,0xc3,0x86,0xa2,0x8e,0x8e,0x8e,0x68,
-    0xde,0x57,0x6e,0x6e,0x6e,0x22,0x8b,0xb5,0xbf,0xd4,0xc6,0xa7,0xf6,0x5c,
-    0x23,0xf6,0x75,0x5a,0xcf,0xb7,0x64,0x22,0x22,0x22,0x1c,0xfb,0xc5,0xd8,
-    0xb1,0x63,0x8d,0x85,0x85,0x85,0x1f,0xa8,0xbd,0xd3,0x57,0xf2,0xf3,0xf3,
-    0x3f,0xc6,0xde,0xde,0x44,0xfd,0x27,0x24,0x24,0x1c,0x51,0x7b,0xc7,0xd7,
-    0xd7,0xb7,0x5b,0x23,0x62,0xf9,0x16,0x6c,0xbb,0xd5,0xc0,0x7e,0x51,0xca,
-    0xd7,0x0e,0x7d,0x9a,0x11,0xbb,0x37,0x80,0xae,0xaf,0x20,0xae,0x6e,0xd0,
-    0xbc,0xf2,0x3e,0x43,0x43,0x43,0xcf,0xba,0x1a,0x5b,0xab,0xd5,0xd6,0x71,
-    0x8d,0xd8,0xd7,0x69,0xae,0x5f,0x77,0x05,0xf2,0x77,0x3f,0xfa,0xfe,0x13,
-    0x71,0xd3,0xea,0x2a,0xf6,0xfe,0x0b,0xa8,0x0b,0x2d,0x88,0x85,0xdf,0x2f,
-    0x5e,0xbc,0xb8,0xb7,0xa7,0x71,0xb1,0x7e,0xb5,0x4c,0xe3,0x63,0xe8,0xa5,
-    0xbd,0xf0,0xb5,0xde,0x80,0x7a,0x1d,0x85,0x3b,0xe3,0x9b,0x7d,0xa5,0xae,
-    0xae,0xee,0x8d,0xde,0x8e,0xe5,0xe9,0xe9,0x49,0x79,0x46,0x3a,0xaf,0x51,
-    0xfe,0xe9,0x74,0xba,0x28,0xd8,0xc3,0x5f,0x14,0x50,0xfb,0x63,0xd8,0xbc,
-    0xe7,0x00,0x47,0x1d,0x5c,0xbb,0x76,0x6d,0x2e,0x7c,0xaf,0xbe,0x28,0x60,
-    0x7f,0x2e,0x61,0x1a,0x77,0x03,0x2d,0x9b,0x4f,0x3b,0xce,0xfa,0xb4,0x57,
-    0xbd,0xd2,0xdf,0xac,0x5b,0xb7,0x2e,0x8b,0xe9,0xbb,0xa5,0xf9,0xe7,0xfb,
-    0xe6,0x20,0xcd,0x93,0xef,0xca,0x15,0xc4,0x66,0x59,0x7c,0x7c,0xfc,0xbb,
-    0x36,0x9b,0x6d,0x1b,0xde,0x7f,0xf9,0x79,0x61,0xb5,0x5a,0xb7,0xed,0xd9,
-    0xb3,0xe7,0x3d,0x9c,0x41,0xee,0x30,0x7d,0xb4,0x0f,0xfa,0x6b,0xfe,0xfd,
-    0x04,0x82,0x02,0x21,0xff,0xec,0xa8,0xbf,0xb5,0xd8,0x23,0xfe,0x70,0x37,
-    0xc8,0x73,0xa3,0x38,0x2e,0xa0,0x73,0x73,0x80,0xc6,0xf5,0xf3,0x12,0xa0,
-    0xf3,0x2d,0x7d,0xdf,0xd3,0xf1,0x2c,0x6a,0x4d,0x2f,0x78,0x44,0xb9,0xab,
-    0x79,0xf2,0x3f,0x9a,0x60,0x59,0xd0,0xdf,0x12,0xee,0x16,0x45
-};
-
-// keep_below_lit.png
-static const unsigned char image_5_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x54,0x57,0x14,0xc6,
-    0xc1,0x05,0x51,0x5c,0x41,0x05,0x94,0x62,0xdc,0x77,0x5c,0xc0,0x7d,0x01,
-    0x97,0x3f,0x30,0xc6,0x96,0xc4,0xaa,0x98,0x34,0x15,0x1b,0x68,0xda,0x26,
-    0x35,0x69,0x4c,0x0d,0x45,0x5b,0x1b,0x44,0x25,0xb4,0x0d,0x18,0x0b,0x88,
-    0x69,0x6d,0x69,0xdd,0xab,0x2d,0x26,0x4a,0x34,0xed,0x34,0x20,0x55,0x42,
-    0x01,0xed,0x80,0x33,0x30,0x2c,0xca,0x32,0x3a,0x53,0x06,0x65,0x44,0x66,
-    0x86,0x6d,0xe6,0xf6,0x3b,0xcf,0xf7,0xcc,0xf3,0xf2,0x06,0x0d,0x74,0x94,
-    0x97,0xfc,0x32,0x70,0xcf,0xbd,0xf7,0x7c,0x73,0xef,0xb9,0xe7,0x9e,0x37,
-    0x6e,0x6e,0x5d,0x1e,0x6f,0xb0,0x13,0xa4,0x80,0x6b,0xe0,0xce,0x2b,0xa0,
-    0x00,0xa4,0x83,0x68,0x10,0xd8,0x55,0xd2,0xb3,0xc7,0x13,0xec,0x01,0x4d,
-    0x80,0x49,0x0c,0x1f,0x3e,0xbc,0xc3,0xd5,0xc8,0xfd,0x81,0x36,0x90,0x0c,
-    0x7c,0x14,0xf4,0xdd,0xa2,0x3e,0x83,0x07,0x0f,0xb6,0x27,0x24,0x24,0x18,
-    0x54,0x2a,0xd5,0x5d,0x9b,0xcd,0xa6,0x65,0x8c,0x69,0x5c,0x4d,0x7b,0x7b,
-    0xbb,0xf6,0xc6,0x8d,0x1b,0xd5,0xc9,0xc9,0xc9,0x0f,0x46,0x8d,0x1a,0x25,
-    0x68,0x76,0x77,0x77,0x37,0xe0,0xd3,0x57,0xd4,0xe7,0x0e,0xce,0x53,0x7b,
-    0x78,0x78,0x78,0xb3,0xc5,0x62,0x79,0x25,0xba,0x9c,0xd1,0xd1,0xd1,0xa1,
-    0x8d,0x8e,0x8e,0x7e,0x28,0xae,0x29,0xad,0x9b,0x17,0x78,0x93,0xfe,0x0f,
-    0x0e,0x0e,0xb6,0x58,0xad,0xd6,0xd7,0xaa,0x4f,0xce,0xb6,0x6d,0xdb,0xa4,
-    0x98,0xdb,0x07,0x8e,0xd2,0xdf,0x57,0xaf,0x5e,0xbd,0xf7,0xba,0x75,0xc9,
-    0x69,0x68,0x68,0x28,0xc7,0x7e,0x3b,0xa0,0x2d,0x17,0xa8,0x07,0x0d,0x1a,
-    0x64,0xef,0x4b,0x6b,0x28,0x31,0x73,0xe6,0x4c,0x1b,0xf4,0x51,0x7c,0xea,
-    0x03,0x02,0x02,0xda,0xd0,0x56,0xea,0x0c,0xb3,0xd9,0xac,0x59,0xb9,0x72,
-    0xe5,0x93,0x31,0x63,0xc6,0x74,0x0c,0x1c,0x38,0xd0,0x31,0x60,0xc0,0x80,
-    0x5e,0x41,0xe7,0x22,0x24,0x24,0xa4,0x45,0xaf,0xd7,0x6b,0xbb,0xf3,0xbb,
-    0x7e,0xfd,0xfa,0xc7,0xe2,0x7e,0xeb,0xc7,0x8f,0x1f,0xdf,0xe6,0x70,0x38,
-    0x6e,0x29,0xb1,0x77,0xef,0x5e,0x3d,0xd6,0xfc,0x59,0x6e,0x18,0x3a,0x74,
-    0x28,0x1b,0x3b,0x76,0x6c,0x8f,0x19,0x31,0x62,0x84,0x3c,0xcf,0x30,0xc4,
-    0x9d,0xc9,0x99,0xef,0x75,0xeb,0xd6,0x99,0x25,0x8d,0xe3,0xc6,0x8d,0x6b,
-    0x45,0xdb,0xdf,0x3c,0x59,0x59,0x59,0x14,0x13,0x0c,0x6b,0xc7,0x62,0x63,
-    0x63,0x59,0x69,0x29,0x7d,0xbd,0xde,0x3f,0x46,0xa3,0x91,0x65,0x66,0x66,
-    0x32,0x2f,0x2f,0x2f,0xca,0x31,0x0c,0xb9,0xae,0x56,0xc9,0xff,0xda,0xb5,
-    0x6b,0x9b,0xe4,0x1a,0x31,0xf4,0x26,0xcf,0x84,0x09,0x13,0xac,0xd4,0x27,
-    0x35,0x35,0xf5,0x7f,0xd1,0xc6,0x3f,0xb9,0xb9,0xb9,0x82,0x46,0x68,0xed,
-    0x54,0xf2,0xbf,0x66,0xcd,0x9a,0x87,0x32,0x8d,0x36,0xb4,0x5d,0xe7,0xc1,
-    0xfa,0xd9,0x87,0x0c,0x19,0xc2,0x90,0x63,0x5d,0xa2,0x91,0x1e,0x9c,0x0b,
-    0x41,0xa7,0xc9,0x64,0xba,0xc9,0xfb,0x0f,0x0b,0x0b,0x6b,0x94,0x34,0xfa,
-    0xfb,0xfb,0x93,0x46,0x15,0x4f,0xbf,0x7e,0xfd,0xd8,0xac,0x59,0xb3,0x5c,
-    0xa6,0x8f,0x9e,0x4d,0x9b,0x36,0x09,0x71,0x59,0x54,0x54,0x94,0xcf,0xfb,
-    0x0f,0x0d,0x0d,0x35,0xc9,0x34,0x5a,0xd1,0x76,0x8d,0x87,0x34,0xce,0x98,
-    0x31,0xc3,0xa5,0x1a,0x37,0x6e,0xdc,0x28,0x68,0x2c,0x2e,0x2e,0xce,0xe3,
-    0xfd,0xaf,0x5e,0xbd,0xba,0x41,0xd2,0xe8,0xe7,0xe7,0x47,0x1a,0xaf,0xf0,
-    0x40,0xa3,0x63,0xda,0xb4,0x69,0x2e,0xd5,0xb8,0x61,0xc3,0x06,0x41,0xe3,
-    0xed,0xdb,0xb7,0x73,0x78,0xff,0xab,0x56,0xad,0x32,0xca,0x34,0x5a,0xd0,
-    0x76,0x89,0x87,0x34,0xd2,0x99,0x9e,0x3a,0x75,0xaa,0xcb,0xa0,0x78,0x27,
-    0x1d,0x6a,0xb5,0xfa,0x77,0xde,0x3f,0x72,0xb2,0x41,0xd2,0xe8,0xeb,0xeb,
-    0xdb,0x82,0xb3,0x7e,0x91,0xc7,0xc3,0xc3,0xa3,0xb3,0x7f,0xff,0xfe,0x94,
-    0x73,0x5b,0x5d,0x05,0x7c,0xd8,0x49,0x47,0x55,0x55,0xd5,0x15,0xde,0xff,
-    0x8a,0x15,0x2b,0x1e,0x48,0x1a,0x91,0x5b,0x5b,0xa0,0xfb,0x2c,0x0f,0xf2,
-    0x6d,0x2b,0xce,0x7c,0xb3,0x92,0xad,0xad,0xad,0xed,0x1c,0xee,0xcf,0xf3,
-    0xa8,0x53,0xce,0x29,0xd9,0x25,0x2a,0x2a,0x2a,0x2e,0x15,0x16,0x16,0x5e,
-    0xce,0xcf,0xcf,0xcf,0x56,0xb2,0x23,0xe6,0xea,0x49,0x47,0x75,0x75,0x75,
-    0x16,0x6f,0x5b,0xb6,0x6c,0x99,0x5e,0xa6,0xf1,0x09,0xda,0x4e,0xf2,0x40,
-    0xa3,0x0d,0x1a,0x1f,0xcb,0xdb,0xa0,0xed,0x54,0x44,0x44,0x84,0x8e,0xd6,
-    0x57,0xba,0x2b,0x50,0x73,0xb6,0xe3,0xdc,0x35,0x23,0x07,0x34,0xe0,0xbb,
-    0xd7,0x4d,0x9f,0x3e,0xdd,0xe4,0xed,0xed,0x6d,0x91,0xdf,0x4f,0x04,0xf9,
-    0xd1,0xe9,0x74,0x17,0xe5,0xf3,0x21,0xe6,0x6a,0xc5,0x75,0xbc,0xc0,0xfb,
-    0x5f,0xba,0x74,0x69,0xbd,0xa4,0x11,0xf7,0x30,0x69,0xfc,0x91,0x07,0x35,
-    0xb2,0x0d,0xbe,0x1f,0xcb,0xdb,0x0e,0x1f,0x3e,0x7c,0x9d,0xc6,0x4d,0x9c,
-    0x38,0x91,0xe1,0x1e,0x60,0xc8,0x0f,0x6c,0xce,0x9c,0x39,0x0c,0x73,0x30,
-    0x49,0x13,0x7d,0x06,0x06,0x06,0x32,0xe8,0x65,0x5b,0xb7,0x6e,0x65,0x51,
-    0x51,0x51,0x0c,0xf7,0x9a,0x60,0xdb,0xb1,0x63,0x87,0x5a,0x3e,0x1f,0x62,
-    0xae,0x86,0xda,0x2b,0x2b,0x2b,0xcf,0xf1,0xfe,0x97,0x2c,0x59,0x52,0x27,
-    0xd3,0xd8,0x8c,0xfd,0xff,0x8e,0x07,0x1a,0xad,0xd0,0x68,0x96,0xb7,0x9d,
-    0x39,0x73,0xe6,0x32,0x8d,0xc3,0xdc,0xcc,0x6e,0xb7,0x77,0x39,0xa7,0x74,
-    0xcf,0x29,0x3d,0x9b,0x37,0x6f,0x16,0x34,0x26,0x26,0x26,0xfe,0x29,0x9f,
-    0x6f,0xf9,0xf2,0xe5,0xf7,0xa8,0x1d,0x31,0x71,0x8a,0xf7,0xbf,0x78,0xf1,
-    0xe2,0x5a,0x49,0xe3,0xe8,0xd1,0xa3,0x29,0xe6,0xd2,0x79,0x86,0x0d,0x1b,
-    0x66,0xc5,0x99,0x6f,0x92,0xb7,0x41,0x57,0x3a,0xea,0x61,0xe1,0xbb,0xc7,
-    0xc7,0xc7,0x2b,0xea,0xe1,0x9f,0x13,0x27,0x4e,0x08,0xfa,0x10,0x03,0x06,
-    0xdc,0x59,0xc7,0xe4,0xf3,0x21,0xe6,0xaa,0x45,0x8d,0x99,0xbc,0xff,0x45,
-    0x8b,0x16,0xdd,0x93,0x69,0xa4,0xfd,0x3c,0xca,0x43,0x1a,0x71,0xe6,0x9b,
-    0xf8,0xf6,0xc6,0xc6,0xc6,0x63,0x88,0xb7,0x27,0xb4,0xa7,0x58,0xd7,0x6e,
-    0xf5,0xe1,0xac,0x30,0xd4,0xa7,0x0c,0xe7,0xb7,0xa3,0xa0,0xa0,0xe0,0x27,
-    0x7e,0x2e,0xc4,0x5c,0x15,0xe9,0x40,0x9c,0x7e,0xcf,0xdb,0x50,0xbf,0xdd,
-    0x95,0x34,0xfa,0xf8,0xf8,0x90,0xc6,0x64,0x1e,0x68,0xb4,0x40,0xe3,0x23,
-    0x25,0x5b,0x76,0x76,0xf6,0xcf,0x9e,0x9e,0x9e,0xed,0xe4,0x3f,0x2f,0x2f,
-    0x4f,0x51,0x1f,0xea,0x43,0x86,0x58,0x61,0x94,0x67,0xd3,0xd2,0xd2,0x7e,
-    0x53,0x9a,0x07,0xfb,0x59,0x41,0x3a,0xca,0xcb,0xcb,0x33,0x78,0x1b,0xf6,
-    0xab,0x5a,0xa6,0xd1,0x8c,0xb6,0xaf,0x78,0x50,0x2b,0x5a,0x70,0x16,0x1f,
-    0x29,0xd9,0x08,0xd4,0x43,0xbf,0xe0,0x7c,0xdb,0x11,0xcf,0x0e,0xe4,0xa1,
-    0x2e,0x1a,0xa5,0xbb,0x38,0x26,0x26,0x26,0xc7,0xd9,0x1c,0xd8,0x4f,0x1d,
-    0xf5,0x29,0x2b,0x2b,0x4b,0xe3,0x6d,0x0b,0x17,0x2e,0xac,0x94,0x34,0x62,
-    0xdf,0x68,0x3f,0x0f,0xf1,0x90,0x46,0xf8,0x7f,0xa8,0x64,0x93,0xd8,0xb2,
-    0x65,0xcb,0x5f,0x34,0xcf,0xc1,0x83,0x07,0x9f,0xd3,0x87,0x7b,0x43,0x38,
-    0xdf,0x93,0x26,0x4d,0xd2,0x77,0x37,0x1e,0xfb,0x59,0x46,0xe3,0xb5,0x5a,
-    0xed,0x11,0xde,0x36,0x7f,0xfe,0xfc,0x0a,0x4e,0x63,0x3c,0x0f,0x34,0xb6,
-    0x40,0x63,0xa3,0x92,0x4d,0xa2,0xae,0xae,0x2e,0x09,0xf9,0xd1,0x86,0x3b,
-    0xc3,0x81,0x77,0x8a,0x67,0x1a,0xb7,0x6f,0xdf,0x2e,0xac,0x61,0x52,0x52,
-    0xd2,0xd9,0xee,0xc6,0x63,0x3f,0xb5,0xd4,0x4f,0xa3,0xd1,0x7c,0xc3,0xdb,
-    0xe6,0xcd,0x9b,0xa7,0x93,0x34,0x62,0x7e,0xda,0xcf,0x2f,0x78,0x50,0x7b,
-    0xb6,0xe0,0x3c,0x35,0x2a,0xd9,0xe4,0x44,0x46,0x46,0xfe,0x41,0x73,0xc5,
-    0xc5,0xc5,0x09,0xfa,0xe0,0x4f,0x58,0x43,0xe4,0x04,0x63,0x67,0x67,0xe7,
-    0xfe,0xee,0xc6,0x2e,0x58,0xb0,0x40,0x43,0x63,0x51,0xe3,0x27,0xf1,0xb6,
-    0xa0,0xa0,0xa0,0x32,0x4e,0x63,0x1c,0x8f,0xa8,0xd1,0xa4,0x64,0x93,0x63,
-    0x30,0x18,0xbe,0x44,0x5f,0x0b,0xde,0xa7,0x58,0x49,0x49,0x09,0x43,0xfd,
-    0x2c,0xac,0xe1,0x81,0x03,0x07,0x4e,0xbe,0x68,0x2c,0xf6,0xb3,0x94,0xfa,
-    0x62,0xdc,0x21,0xde,0x36,0x77,0xee,0x5c,0xad,0xa4,0x71,0xe4,0xc8,0x91,
-    0x14,0x73,0x9f,0xf2,0x20,0x87,0x37,0xa1,0x2e,0x69,0x51,0xb2,0xf1,0x40,
-    0xcf,0x0f,0xd2,0x1d,0x43,0x9f,0x93,0x27,0x4f,0xae,0x7a,0x99,0x71,0xa8,
-    0x7d,0x84,0x98,0xab,0xa9,0xa9,0xf9,0x9c,0xb7,0xcd,0x9e,0x3d,0x5b,0xc3,
-    0x69,0xfc,0x84,0x07,0xdf,0x43,0x4d,0x7d,0x8e,0x1f,0x3f,0x7e,0x44,0xc9,
-    0xce,0x83,0x3b,0x24,0x03,0x79,0xc0,0x88,0xb9,0x4b,0x10,0xa7,0x9f,0xbd,
-    0xa8,0x3f,0x72,0x53,0x2c,0x6a,0xbf,0x56,0x9c,0x87,0x06,0x25,0x3b,0xee,
-    0xff,0x52,0x49,0x23,0x6a,0x07,0x8a,0xb9,0x8f,0x79,0x52,0x52,0x52,0x8e,
-    0xc0,0xee,0xc0,0xd9,0x31,0x63,0x9d,0xd2,0x95,0xfa,0xf4,0x94,0x9c,0x9c,
-    0x9c,0xfd,0xf8,0x3e,0x42,0x5d,0x83,0x78,0xfe,0x55,0xa9,0x0f,0xde,0x75,
-    0x4a,0x38,0x8d,0x1f,0x2a,0x81,0x9a,0xe0,0x82,0x54,0xb7,0xe0,0xae,0xb0,
-    0x4d,0x99,0x32,0xe5,0x0e,0xf6,0xa7,0xb4,0x37,0xc0,0x1f,0xbd,0xa7,0x08,
-    0x75,0x13,0xea,0x91,0x22,0x67,0xbe,0x71,0x77,0xaa,0x25,0x8d,0x88,0x3b,
-    0x3a,0x17,0x31,0xce,0x50,0xa9,0x54,0xb1,0x78,0xaf,0xb9,0x85,0xf5,0x7c,
-    0x24,0xaf,0xb5,0x7a,0x0a,0x72,0x55,0x33,0xf2,0xe6,0x1d,0xec,0x4d,0x72,
-    0x77,0x7e,0xf1,0x9e,0xf2,0x8f,0x38,0x46,0x87,0x98,0xb0,0xe2,0xae,0xdf,
-    0x89,0xf6,0xa8,0x17,0x81,0x33,0xfc,0x3e,0xee,0xff,0x8f,0x7a,0x4a,0x6d,
-    0x6d,0xed,0x07,0x2f,0xe3,0x87,0x40,0xed,0x5a,0x29,0xae,0xb7,0x70,0x1e,
-    0x33,0x32,0x32,0xf6,0xa1,0xfd,0x9d,0xbe,0xc2,0xfd,0xfb,0xf7,0xdf,0xc3,
-    0x3d,0x4f,0xbf,0x47,0x15,0x83,0x77,0xc5,0x5c,0x51,0x08,0x5b,0x64,0x5f,
-    0x21,0x3c,0x3c,0xfc,0xb4,0xb8,0xcf,0x5f,0xbb,0x3d,0xfd,0x9d,0x59,0x38,
-    0x3f,0xa8,0x9b,0xe9,0x7c,0xbd,0xfd,0xba,0xd9,0xb5,0x6b,0x57,0xa2,0xb8,
-    0xc7,0xff,0x02,0x3f,0xb7,0xa7,0x8f,0x3f,0x10,0xde,0x1d,0x70,0x7e,0xea,
-    0x77,0xef,0xde,0xbd,0x1f,0xef,0x2d,0x11,0xe8,0xff,0xd6,0xab,0x02,0xef,
-    0x6e,0x11,0x09,0x09,0x09,0x7b,0x02,0x02,0x02,0x8a,0xc5,0xf5,0xa3,0xdf,
-    0x9a,0x42,0xdc,0x9e,0x7f,0xde,0x00,0xa7,0xa5,0x9c,0x40,0xe0,0x8e,0x31,
-    0xa2,0x7e,0x54,0xbb,0x1a,0xd4,0xa9,0xf5,0x72,0xbf,0xa0,0x08,0x04,0xb9,
-    0x39,0x7f,0x82,0x01,0xe5,0xee,0x1c,0x71,0xad,0x7b,0x9d,0x6b,0x5e,0x82,
-    0x56,0x90,0x0f,0xbe,0x05,0x51,0xbc,0xa0,0xff,0x00,0xbc,0x45,0x33,0x49
-};
-
-// keep_below.png
-static const unsigned char image_6_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x09,0x4c,0x94,0x47,0x14,0xc7,
-    0x11,0x0f,0x3c,0x22,0xde,0xe2,0x81,0x07,0xb1,0x1a,0xf1,0x46,0x25,0x31,
-    0x6a,0x34,0x31,0xda,0x18,0xa3,0x62,0x0d,0xa1,0x78,0x21,0x31,0x80,0x82,
-    0x80,0x10,0x0b,0x12,0x49,0x94,0x6a,0xe5,0x56,0x42,0x01,0x29,0x02,0x1e,
-    0xad,0x56,0x4b,0x0a,0x96,0xa2,0x80,0xd6,0x03,0xa1,0x55,0x39,0x5c,0x15,
-    0xe4,0x58,0xce,0xe5,0x5c,0x0e,0x2b,0x28,0x16,0x58,0x60,0xf7,0xeb,0xff,
-    0x6d,0xbf,0x35,0xe3,0xb8,0xa8,0x91,0xae,0xfa,0x25,0xbf,0x00,0xef,0xcd,
-    0x7c,0xf3,0xdf,0x99,0x37,0x6f,0xde,0x2c,0x7a,0x7a,0x6f,0x3c,0x0b,0x81,
-    0x27,0x38,0x03,0x1e,0x80,0x27,0x3a,0x26,0x17,0x24,0x02,0x7f,0xf0,0x35,
-    0xd0,0x7f,0x53,0xd2,0xab,0xe7,0x0b,0x10,0x07,0x54,0x40,0x20,0xfa,0xf5,
-    0xeb,0xa7,0x32,0x34,0x34,0xec,0xd2,0x25,0x83,0x07,0x0f,0xee,0xd6,0x8c,
-    0x27,0x52,0x01,0xb6,0x6a,0xd1,0x6a,0xd6,0xa7,0x4f,0x9f,0x76,0x6a,0x33,
-    0x69,0xd2,0x24,0x45,0x54,0x54,0x54,0x8d,0x44,0x22,0x29,0xed,0xee,0xee,
-    0xce,0x17,0x04,0x41,0xe7,0x54,0x55,0x55,0x49,0xaf,0x5c,0xb9,0x22,0xf3,
-    0xf0,0xf0,0x68,0xec,0xdb,0xb7,0xaf,0x66,0x8e,0xe2,0x18,0x7d,0x26,0xd0,
-    0xd7,0xa4,0xaf,0xaf,0xaf,0x0a,0x08,0x08,0x90,0x7f,0x0c,0x4d,0x6f,0xe3,
-    0xe9,0xd3,0xa7,0x45,0xb3,0x67,0xcf,0x6e,0x13,0x75,0x7a,0x89,0x1a,0x2f,
-    0xd3,0xdf,0x9f,0x83,0x3e,0x0d,0x32,0x99,0x4c,0x6a,0x64,0x64,0xd4,0x29,
-    0xc6,0x9d,0x31,0xe6,0xf0,0x39,0xad,0xef,0xa7,0xd6,0xc5,0x73,0xf4,0xe8,
-    0xd1,0x7a,0x71,0x2e,0x6d,0xe9,0xa7,0xb5,0xb5,0x75,0xf3,0xa7,0xd6,0xc4,
-    0x73,0xef,0xde,0xbd,0x32,0x51,0xe3,0x69,0xfa,0x89,0x58,0x6d,0x80,0x3d,
-    0xaf,0x27,0x52,0x52,0x52,0xca,0xe7,0xcc,0x99,0xd3,0x36,0x74,0xe8,0xd0,
-    0x6e,0xda,0xeb,0xbd,0xa1,0x7f,0xff,0xfe,0xaa,0x09,0x13,0x26,0x74,0xae,
-    0x5d,0xbb,0xf6,0x79,0x57,0x57,0x57,0x8f,0x63,0x36,0x34,0x34,0x14,0x88,
-    0x1a,0x29,0x2f,0x09,0xfb,0xf7,0xef,0xaf,0x53,0xa9,0x54,0x12,0x1e,0xa5,
-    0x52,0x29,0x81,0xb6,0x7f,0xd8,0xdc,0x30,0x76,0xec,0xd8,0x5e,0x61,0x60,
-    0x60,0xf0,0xea,0x5d,0x03,0x06,0x0c,0x50,0x25,0x27,0x27,0x17,0x6b,0x1b,
-    0xbb,0xbe,0xbe,0xfe,0x31,0xab,0xd1,0xdd,0xdd,0xbd,0x06,0xf6,0x2c,0x9e,
-    0x65,0xcb,0x96,0xb5,0x90,0xdf,0xd8,0xd8,0x58,0xc0,0xbb,0x04,0xe4,0x22,
-    0xa1,0xb7,0x0f,0xde,0x2b,0xe4,0xe4,0xe4,0x08,0xab,0x56,0xad,0x7a,0x95,
-    0x83,0x91,0x7b,0x24,0xfc,0xd8,0xd0,0x28,0xe1,0x34,0x56,0xa1,0xfb,0x5d,
-    0x96,0x96,0x96,0x96,0x4c,0xec,0x27,0x61,0xe4,0xc8,0x91,0x42,0x5d,0x5d,
-    0x5d,0xaf,0xb5,0x69,0x7b,0x2c,0x2c,0x2c,0xd4,0x3a,0x37,0x6d,0xda,0xd4,
-    0xc8,0x8f,0x0f,0x8d,0x59,0xac,0x46,0x37,0x37,0x37,0x19,0xec,0xe9,0x2c,
-    0xfe,0xfe,0xfe,0x25,0xe4,0x73,0x70,0x70,0xd0,0x89,0x3e,0x7a,0xb0,0x2f,
-    0x04,0x71,0x9d,0xda,0xf8,0xf1,0xe5,0x72,0xf9,0x5d,0x56,0xa3,0xab,0xab,
-    0x6b,0x39,0xec,0x37,0x59,0x9c,0x9c,0x9c,0xe8,0x4c,0x12,0x02,0x03,0x03,
-    0x75,0xa6,0xb1,0xa9,0xa9,0x49,0xad,0x71,0xc4,0x88,0x11,0x0a,0x7e,0x7c,
-    0x68,0x4c,0x67,0x35,0xba,0xb8,0xb8,0x94,0xc2,0x7e,0x8d,0xc5,0xd1,0xd1,
-    0xb1,0x54,0xcc,0xed,0x3a,0xd3,0xd8,0xd8,0xd8,0xc8,0x6a,0x7c,0x6d,0x7c,
-    0xc4,0xd7,0x2d,0x56,0xe3,0xde,0xbd,0x7b,0x8b,0x61,0xbf,0xca,0x82,0x79,
-    0x2c,0x26,0x9f,0x9f,0x9f,0x9f,0xce,0x34,0x22,0xe6,0xd4,0x1a,0x11,0xf3,
-    0x1d,0xfc,0xf8,0xd0,0x78,0x9d,0xd5,0x08,0x3d,0x45,0xb0,0x27,0xb2,0x90,
-    0x8d,0x7c,0xa3,0x46,0x8d,0x12,0xa6,0x4f,0x9f,0xae,0x13,0x4c,0x4c,0x4c,
-    0x34,0xf3,0xd8,0xc1,0x8f,0x0f,0x8d,0x29,0xac,0xc6,0x3d,0x7b,0xf6,0xe4,
-    0x63,0xbf,0xc7,0xb3,0x60,0x8d,0xb3,0xc9,0x37,0x68,0xd0,0xa0,0x2e,0x7a,
-    0x87,0x2e,0x18,0x3e,0x7c,0x78,0x07,0x8d,0x01,0xad,0x2d,0xfc,0xf8,0x35,
-    0x35,0x35,0x49,0xac,0xc6,0xdd,0xbb,0x77,0x53,0x6e,0xbf,0xc4,0x12,0x1b,
-    0x1b,0x7b,0x87,0x7c,0xce,0xce,0xce,0x8f,0x79,0x1f,0xf1,0xf2,0xe5,0xcb,
-    0xb8,0xf6,0xf6,0xf6,0x38,0xe4,0xf9,0x37,0x7c,0x1a,0x50,0xc3,0xfc,0x9a,
-    0x97,0x97,0xf7,0x3b,0xf6,0x6f,0x72,0x45,0x45,0xc5,0x65,0x6d,0x7e,0x1a,
-    0xc3,0xdc,0xdc,0xbc,0x8e,0xf7,0x41,0x63,0x02,0xab,0xd1,0xde,0xde,0x9e,
-    0x74,0x9c,0x67,0x89,0x8e,0x8e,0xbe,0x2d,0xc6,0xea,0x43,0xd6,0x9e,0x98,
-    0x98,0x98,0x8a,0x39,0xd0,0xd4,0x4e,0x02,0xe5,0xd0,0x61,0xc3,0x86,0xb5,
-    0x4f,0x99,0x32,0xa5,0x79,0xc1,0x82,0x05,0xf2,0xa5,0x4b,0x97,0x56,0xd1,
-    0xef,0x43,0x86,0x0c,0x51,0x70,0xb5,0xab,0xb0,0x7a,0xf5,0xea,0x72,0xf6,
-    0x5d,0xd8,0xd7,0xbf,0x90,0x7d,0xf1,0xe2,0xc5,0xb5,0xfc,0xf8,0xd0,0x18,
-    0xc7,0x6a,0xb4,0xb3,0xb3,0x23,0x1d,0x67,0x59,0x4e,0x9d,0x3a,0x75,0x83,
-    0x7c,0xd8,0xdf,0x0f,0x58,0xfb,0xfc,0xf9,0xf3,0xeb,0xc8,0x3e,0x73,0xe6,
-    0xcc,0x86,0xb9,0x73,0xe7,0xca,0x67,0xcd,0x9a,0x55,0x3f,0x6e,0xdc,0xb8,
-    0x17,0x03,0x07,0x0e,0xec,0xd4,0x68,0x41,0x9d,0xaa,0x9c,0x38,0x71,0x62,
-    0x8b,0x99,0x99,0x59,0xed,0x8a,0x15,0x2b,0x2a,0xd6,0xaf,0x5f,0x2f,0xc5,
-    0xe7,0x50,0x7f,0xae,0xec,0xec,0xec,0x78,0xcd,0xbb,0xa0,0xf1,0x02,0xd9,
-    0x16,0x2d,0x5a,0x54,0xc3,0x8f,0x5f,0x5d,0x5d,0x7d,0x91,0xd5,0xb8,0x6b,
-    0xd7,0xae,0x07,0x88,0x81,0x18,0x96,0xc8,0xc8,0xc8,0x6b,0x62,0x1c,0x64,
-    0xb3,0xf6,0x35,0x6b,0xd6,0x48,0xc9,0xee,0xe3,0xe3,0x73,0x87,0xef,0x83,
-    0xb3,0x32,0xa6,0xa4,0xa4,0xe4,0x02,0x6f,0xcf,0xcd,0xcd,0xbd,0x88,0xb8,
-    0x56,0xd0,0xe7,0x68,0x6d,0x6d,0x3d,0xa3,0xb1,0xa3,0x6e,0x38,0x47,0xef,
-    0x5a,0xb8,0x70,0x61,0x35,0xdf,0xa7,0xb2,0xb2,0xf2,0x27,0x56,0xa3,0xad,
-    0xad,0x6d,0x16,0xb4,0x47,0xb2,0x9c,0x3c,0x79,0xf2,0xaa,0x18,0x07,0xf7,
-    0x59,0x7b,0x56,0x56,0xd6,0x05,0x8c,0xa5,0xc0,0x39,0xab,0x4c,0x4b,0x4b,
-    0xbb,0xc4,0xf7,0xe3,0xe9,0xec,0xec,0xfc,0x61,0xc6,0x8c,0x19,0x72,0x7a,
-    0x97,0x97,0x97,0xd7,0x1d,0xd6,0x87,0xfc,0x18,0x43,0x76,0xcc,0x77,0x25,
-    0xdf,0x0f,0x67,0xf8,0x69,0x56,0xe3,0xce,0x9d,0x3b,0x49,0x47,0x18,0x4b,
-    0x44,0x44,0x44,0x92,0x18,0x07,0x77,0x79,0x5f,0x70,0x70,0x70,0x32,0xf9,
-    0x46,0x8f,0x1e,0xfd,0xbc,0xb8,0xb8,0x38,0x96,0xf7,0xb3,0x6c,0xd8,0xb0,
-    0xe1,0x11,0xb5,0x45,0xac,0xca,0x78,0x1f,0xe6,0x31,0xaa,0x27,0x1f,0xe6,
-    0x31,0x9a,0xd5,0xb8,0x63,0xc7,0x0e,0xd2,0x11,0xc2,0x12,0x16,0x16,0xf6,
-    0x9b,0x18,0x07,0x7f,0xf2,0x3e,0x62,0xeb,0xd6,0xad,0xf7,0xc5,0xbc,0x21,
-    0x7f,0xf6,0xec,0x59,0x98,0xb6,0x36,0x98,0x37,0x75,0x1e,0x1e,0x3f,0x7e,
-    0xfc,0xdf,0xc8,0x77,0x11,0xbc,0x1f,0x1a,0x23,0xc8,0x8f,0x18,0xaf,0xe0,
-    0x7d,0xb8,0x2f,0x44,0xb2,0x1a,0xb7,0x6d,0xdb,0x46,0x3a,0x82,0x58,0x42,
-    0x43,0x43,0xe3,0xc5,0x38,0x48,0xe7,0x7d,0x04,0x72,0x4e,0xd0,0xf2,0xe5,
-    0xcb,0xf3,0xa9,0x0d,0xea,0x55,0x09,0xef,0x47,0x5c,0x86,0x23,0x1e,0xba,
-    0x71,0x37,0x6d,0xcf,0xc8,0xc8,0x88,0xd1,0xf6,0x0e,0x9c,0x33,0xa1,0xd4,
-    0x7f,0xde,0xbc,0x79,0xe5,0xbc,0x0f,0xb9,0x2a,0x8c,0xd5,0xb8,0x65,0xcb,
-    0x16,0xd2,0xe1,0xcb,0x72,0xe2,0xc4,0x09,0x75,0x5e,0xb0,0xb1,0xb1,0xb9,
-    0xcd,0xfb,0x34,0x20,0xfe,0x03,0xb0,0x5f,0x5f,0x60,0x1f,0x77,0x67,0x66,
-    0x66,0x46,0xb0,0x3e,0xec,0xe5,0x4c,0xb1,0xa6,0x4a,0xee,0xa9,0x3f,0xea,
-    0x86,0x60,0x6a,0x83,0x3a,0xba,0x94,0xf7,0x95,0x97,0x97,0x87,0xb0,0x1a,
-    0x71,0x9f,0x49,0x83,0xfd,0x08,0xcb,0xf1,0xe3,0xc7,0xd5,0x7b,0x7f,0xfb,
-    0xf6,0xed,0x37,0x79,0x1f,0x8b,0xa7,0xa7,0xa7,0xfa,0x1d,0x2b,0x57,0xae,
-    0x94,0x68,0x6c,0xa5,0xa5,0xa5,0x41,0xa8,0xb1,0x15,0xb8,0xe3,0xbf,0xc0,
-    0x73,0xac,0xa7,0xbe,0x58,0x7f,0xfa,0x6e,0x42,0xc0,0x5d,0xb5,0x84,0xf7,
-    0x41,0x63,0x10,0xab,0xd1,0xca,0xca,0xea,0x16,0xec,0x87,0x58,0x82,0x82,
-    0x82,0xce,0x93,0x0f,0x71,0xf7,0x07,0xef,0x63,0xe9,0xe8,0xe8,0xf0,0x19,
-    0x33,0x66,0x4c,0x13,0x72,0xb9,0x0a,0xf7,0x1e,0x8a,0xcb,0x43,0x1b,0x37,
-    0x6e,0x4c,0x17,0xe3,0x24,0xf5,0x6d,0x7d,0xa1,0xf1,0x18,0xb5,0x43,0x8e,
-    0x2d,0xe6,0x7d,0x65,0x65,0x65,0x7e,0xac,0x46,0x4b,0x4b,0xcb,0x1b,0xb0,
-    0x1f,0x64,0xc1,0x79,0x7d,0x4e,0x8c,0x83,0x6b,0xbc,0x8f,0xe7,0xc8,0x91,
-    0x23,0xea,0xcf,0x33,0x75,0xea,0x54,0x59,0x6a,0x6a,0x6a,0x08,0xad,0x3d,
-    0xce,0x99,0x56,0xec,0x09,0x9f,0xb7,0xf5,0xab,0xad,0xad,0xfd,0x96,0xfa,
-    0x99,0x9a,0x9a,0x4a,0x79,0x1f,0xd6,0xe2,0x28,0xab,0x71,0xf3,0xe6,0xcd,
-    0xa4,0xc3,0x83,0x25,0x24,0x24,0x44,0x9d,0x17,0xd6,0xad,0x5b,0x77,0x8b,
-    0xf7,0x69,0x03,0xe7,0x4e,0x21,0x7b,0xee,0x79,0x7b,0x7b,0xff,0xf8,0xae,
-    0x3e,0x88,0xe1,0xef,0xc4,0x78,0x7c,0xc2,0xfb,0x90,0xd3,0x0e,0xb3,0x1a,
-    0x71,0x9f,0x48,0x81,0xdd,0x9d,0x05,0x73,0x7d,0x10,0xeb,0xa7,0x44,0x0e,
-    0xac,0xc7,0x7a,0xee,0xe7,0xfd,0x3c,0x58,0xb7,0x03,0x38,0x1b,0x1f,0xe1,
-    0xee,0x57,0x87,0x33,0x28,0xe6,0x5d,0xed,0x09,0xe4,0xe5,0x78,0x71,0x1d,
-    0xaf,0xf0,0x3e,0xa9,0x54,0xea,0xcd,0x6a,0x44,0xfc,0x50,0x5d,0xe9,0xc2,
-    0x83,0xdc,0x9a,0x43,0x7e,0xd4,0x7a,0xf9,0x45,0x45,0x45,0x07,0xb4,0xb5,
-    0xf9,0x10,0x14,0x0a,0x85,0x2b,0xe6,0x25,0x89,0xe6,0x00,0xf9,0xa9,0x13,
-    0xe7,0xd5,0x61,0xbe,0x0d,0x8d,0xc7,0x6a,0x44,0x9e,0x48,0x82,0xdd,0x91,
-    0xa7,0xb9,0xb9,0xd9,0x05,0xf9,0x57,0x26,0xd6,0x37,0x4a,0xd4,0xbb,0x72,
-    0xe8,0xcd,0xeb,0x0d,0xd3,0xa6,0x4d,0xcb,0x87,0x2e,0x75,0x4d,0x44,0xfa,
-    0x7c,0x7d,0x7d,0xbf,0xd7,0x36,0x76,0x61,0x61,0xe1,0x37,0xac,0x46,0xc4,
-    0x1c,0xd5,0xbe,0xf6,0xda,0xc0,0x79,0xeb,0x80,0xf3,0xf0,0xec,0xe4,0xc9,
-    0x93,0xa5,0xa4,0x93,0xaf,0xb7,0x3e,0x04,0xd4,0xb6,0x0d,0x38,0xa3,0xff,
-    0x2a,0x28,0x28,0x70,0xeb,0x69,0xdc,0xfc,0xfc,0x7c,0x37,0x56,0xe3,0x92,
-    0x25,0x4b,0x28,0xbf,0xd8,0xbe,0x0f,0x38,0x3f,0x1c,0x11,0xcf,0x4e,0x1f,
-    0x0a,0xce,0x4d,0xbb,0xf7,0x19,0x27,0x21,0x21,0xc1,0x4b,0xd4,0xf8,0x33,
-    0xe8,0xc0,0x1a,0x52,0xdd,0xb1,0xfd,0x73,0x02,0xe7,0x73,0x8c,0xa8,0xd1,
-    0x19,0xd0,0x1d,0x51,0x85,0x7b,0x34,0xe5,0x4e,0xeb,0xcf,0x01,0x9c,0xe3,
-    0x3b,0x50,0xeb,0x57,0x89,0x1a,0x4d,0x81,0x39,0xa0,0x7a,0xb0,0x3d,0x2a,
-    0x2a,0x8a,0x72,0x8c,0xe5,0xa7,0x04,0x79,0xce,0x0a,0xfb,0xea,0xbe,0xa8,
-    0x8f,0xfe,0x6f,0xa0,0x79,0x6c,0x34,0x7b,0x17,0xe7,0xd2,0xf5,0xf0,0xf0,
-    0xf0,0x7d,0x68,0x6f,0xf1,0x31,0x69,0x6b,0x6b,0xfb,0x0a,0xf5,0x4b,0x30,
-    0xea,0xe7,0x67,0xa2,0xbe,0x0c,0x60,0xa0,0xf7,0xfa,0xf3,0xa5,0xde,0x7f,
-    0xdf,0xe9,0x6b,0xee,0x52,0x4a,0x9c,0xc3,0x4f,0x8c,0x8c,0x8c,0x1e,0xeb,
-    0x98,0x5c,0x03,0x03,0x03,0x8d,0x2e,0x82,0xf2,0x52,0x20,0x30,0xd4,0xd3,
-    0xfe,0xd0,0xff,0x1b,0xf6,0x89,0x7b,0xe9,0x21,0xe8,0xfa,0x3f,0x72,0xcd,
-    0x7b,0x50,0x09,0x52,0x81,0xaf,0x36,0x6d,0xff,0x02,0x1b,0x15,0xfd,0xbb
-};
-
-// maximize.png
-static const unsigned char image_7_data[] = {
-    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x99,0x7b,0x2c,0x64,0x57,0x1c,0xc7,
-    0xbd,0x0d,0x4d,0xf8,0x83,0xec,0x56,0x42,0xb2,0x7f,0x14,0xf1,0xb7,0x84,
-    0x15,0x99,0x0d,0x09,0xa5,0x95,0xd5,0x6d,0x42,0x23,0x22,0xed,0x24,0xd2,
-    0x04,0x29,0xeb,0x55,0x15,0xef,0xd7,0xaa,0xdd,0x7a,0x84,0x7a,0xac,0x32,
-    0x35,0x63,0xad,0xf7,0x60,0xbc,0x16,0xeb,0x51,0xb2,0x6b,0xcb,0x5a,0x16,
-    0xab,0xb6,0x96,0xb4,0xdb,0xe9,0x23,0xdd,0x86,0x8a,0x46,0x83,0xce,0xce,
-    0xed,0xf7,0x4c,0x46,0x7b,0x7a,0x66,0xd6,0x1f,0xe5,0x5e,0x4e,0xf2,0x49,
-    0x46,0x7e,0x67,0xe6,0xfb,0xb9,0x77,0xee,0xef,0xb8,0xe7,0x8e,0x91,0x91,
-    0xde,0x30,0x06,0xef,0x82,0x3c,0xd0,0x01,0x16,0xc1,0x13,0x9e,0x59,0x00,
-    0xb7,0x41,0x06,0x78,0x5b,0x5f,0x49,0x6f,0xbc,0xa9,0xf3,0xe2,0x0e,0x11,
-    0x89,0x44,0x2f,0x6d,0x6c,0x6c,0xfe,0xe2,0x13,0x0b,0x0b,0x8b,0x97,0x74,
-    0x26,0x98,0x00,0xee,0xaf,0x70,0x24,0xc7,0xc2,0x19,0x1b,0x1b,0x73,0x57,
-    0xae,0x5c,0xd9,0x96,0xcb,0xe5,0xaa,0xf5,0xf5,0xf5,0x35,0x8e,0xe3,0x56,
-    0xf8,0x46,0xa3,0xd1,0xac,0x60,0x3c,0x93,0x4a,0xa5,0xaa,0x4b,0x97,0x2e,
-    0xfd,0x41,0xf9,0x86,0x31,0x8e,0xef,0x01,0x0d,0x8e,0x4d,0x3d,0x3d,0x3d,
-    0xbd,0x21,0x84,0xdb,0x51,0xf4,0xf6,0xf6,0x7e,0x4f,0xce,0x31,0xce,0xd9,
-    0x1e,0xbc,0x2e,0xea,0x1c,0xcd,0xf0,0xf7,0x8e,0xb5,0xb5,0xb5,0x7a,0x66,
-    0x66,0xe6,0xd4,0x1d,0x0f,0xe9,0xe8,0xe8,0x78,0x6e,0x62,0x62,0xa2,0x81,
-    0xdf,0x92,0xce,0x53,0x4c,0xce,0xb1,0x44,0x22,0xd9,0x3c,0x6d,0x37,0x16,
-    0xb1,0x58,0x7c,0x78,0x0d,0xbc,0x0e,0xd2,0xc9,0x6b,0x99,0x4c,0xa6,0x3a,
-    0x6d,0x2f,0x96,0xb4,0xb4,0xb4,0x5f,0x75,0x9e,0xe4,0xba,0x2c,0x25,0xaf,
-    0x27,0x27,0x27,0xd7,0x51,0x5b,0x7e,0x15,0xa3,0xa3,0xa3,0x1b,0x61,0x61,
-    0x61,0x5b,0x4e,0x4e,0x4e,0xfb,0x0e,0x0e,0x0e,0x07,0xc7,0xc1,0xcd,0xcd,
-    0xed,0xcf,0x88,0x88,0x88,0x4d,0xf4,0xce,0xb7,0x47,0x65,0xd6,0xd6,0xd6,
-    0xaa,0x74,0x9e,0x51,0x87,0x9e,0x13,0x13,0x13,0x4f,0xd1,0x77,0xf3,0x2c,
-    0x6a,0xb5,0x7a,0xde,0xdb,0xdb,0x7b,0x07,0xd7,0x0a,0x47,0xf0,0xf5,0xf5,
-    0xe5,0x02,0x03,0x03,0x8f,0x85,0xab,0xab,0xab,0x76,0x5d,0x21,0x9f,0x17,
-    0x1e,0x1e,0xfe,0x9b,0xa1,0x5c,0x42,0x4d,0x4d,0xcd,0x77,0xac,0xe7,0xf8,
-    0xf8,0x38,0x59,0x1f,0x66,0x59,0xdc,0xdd,0xdd,0x77,0x48,0x3d,0x21,0x21,
-    0x81,0xdb,0xdb,0xdb,0xe3,0x4e,0x6a,0x6c,0x6f,0x6f,0x73,0xa1,0xa1,0xa1,
-    0x5a,0xdf,0xe8,0xe8,0xe8,0x9f,0x0d,0x65,0x57,0x57,0x57,0x6f,0x18,0xf0,
-    0x5c,0xc2,0xdb,0xa7,0x69,0xe6,0x31,0xc8,0xe7,0x64,0x65,0x65,0x9d,0x98,
-    0x1f,0x3d,0xe0,0xc2,0xf9,0xf9,0xf9,0x71,0x96,0x96,0x96,0xe4,0xf5,0x7f,
-    0xb2,0x09,0x55,0x55,0x55,0x6b,0xac,0xe7,0xd8,0xd8,0xd8,0x02,0x6a,0x53,
-    0x34,0x51,0x51,0x51,0x3f,0x90,0x9a,0x4a,0xa5,0xe2,0xc5,0x93,0x8c,0xfe,
-    0xfe,0x7e,0xed,0x9a,0x3e,0x30,0x30,0xb0,0xc8,0xe6,0x57,0x56,0x56,0x3e,
-    0x65,0x3d,0xd1,0x27,0x0f,0x51,0x1b,0xa3,0x09,0x0e,0x0e,0xfe,0xc5,0xdc,
-    0xdc,0x9c,0x37,0x47,0x32,0x56,0x57,0x57,0xb5,0x9e,0x25,0x25,0x25,0xdf,
-    0xb0,0xf9,0x15,0x15,0x15,0x4f,0x58,0xcf,0x91,0x91,0x91,0xaf,0x51,0x1b,
-    0xa6,0x81,0xe7,0x8f,0x66,0x66,0x66,0xbc,0x7a,0xa2,0xe7,0x0f,0x3d,0x97,
-    0xd9,0xfc,0xf2,0xf2,0xf2,0x25,0xd6,0x73,0x78,0x78,0xf8,0x1e,0x6a,0x03,
-    0x34,0xf0,0x54,0x99,0x9a,0x9a,0xf2,0xea,0xb9,0xbc,0xbc,0x7c,0xe8,0xf9,
-    0x98,0xcd,0x2f,0x2b,0x2b,0x5b,0x60,0x3d,0x87,0x86,0x86,0x26,0x51,0x53,
-    0xd2,0x5c,0xbe,0x7c,0xf9,0x39,0xe9,0x23,0xac,0x9b,0xbc,0x41,0xd6,0x29,
-    0x9d,0xe7,0x23,0x36,0xbf,0xb4,0xb4,0xf4,0x11,0xeb,0x39,0x38,0x38,0x38,
-    0x8e,0x9e,0x53,0xd0,0xe0,0xff,0xc1,0x63,0x72,0x3e,0x83,0x82,0x82,0x78,
-    0xc3,0xc7,0xc7,0x47,0xbb,0x36,0x29,0x95,0xca,0xaf,0xd8,0xfc,0xe2,0xe2,
-    0xe2,0x59,0x03,0x9e,0x23,0x38,0x86,0x56,0x9a,0xbc,0xbc,0xbc,0x59,0xdc,
-    0xb7,0x68,0xf8,0xfc,0xde,0xd7,0xd6,0xd6,0xb4,0xe7,0x13,0x7d,0x7f,0x97,
-    0xcd,0xbf,0x71,0xe3,0xc6,0x03,0xd6,0x13,0xf3,0xee,0xa0,0xd6,0x44,0x93,
-    0x9b,0x9b,0xfb,0x40,0x28,0xcf,0xbe,0xbe,0xbe,0x21,0x36,0xff,0xfa,0xf5,
-    0xeb,0xf7,0x58,0x4f,0xcc,0xeb,0x47,0x4d,0x46,0x93,0x9d,0x9d,0x7d,0x5f,
-    0x28,0x4f,0x7c,0xef,0x7a,0xf9,0x45,0x45,0x45,0x53,0xac,0x27,0xe6,0x29,
-    0x71,0x4d,0xd4,0xd3,0x64,0x66,0x66,0x4e,0x09,0xe5,0xd9,0xdd,0xdd,0xad,
-    0x97,0x5f,0x58,0x58,0x38,0xc1,0x7a,0xf6,0xf4,0xf4,0x28,0xf0,0xb6,0x1a,
-    0x9a,0xf4,0xf4,0xf4,0x09,0xa1,0x3c,0xbb,0xba,0xba,0xf4,0xf2,0x0b,0x0a,
-    0x0a,0x46,0x59,0x4f,0x1c,0x4f,0x3b,0x6a,0x9f,0xd3,0xa0,0xdf,0xc7,0x84,
-    0xf2,0xec,0xec,0xec,0xd4,0xcb,0x47,0x1f,0x0f,0xb3,0x9e,0x0a,0x85,0xa2,
-    0x19,0xb5,0x32,0x9a,0xd4,0xd4,0xd4,0x11,0xa1,0x3c,0xb1,0xcf,0x68,0x61,
-    0xf3,0x73,0x72,0x72,0xee,0xb0,0x9e,0x38,0x9e,0x5b,0xa8,0x7d,0x46,0x93,
-    0x92,0x92,0x32,0x24,0x94,0x67,0x5b,0x5b,0x5b,0x13,0x9b,0x8f,0x3e,0xee,
-    0x67,0x3d,0x31,0xaf,0x01,0xb5,0x42,0x9a,0xe4,0xe4,0xe4,0x01,0xa1,0x3c,
-    0x5b,0x5a,0x5a,0x64,0x6c,0x7e,0x46,0x46,0x86,0x92,0xf5,0x6c,0x6d,0x6d,
-    0xad,0x47,0x2d,0x8f,0x26,0x31,0x31,0xb1,0x57,0x28,0xcf,0xe6,0xe6,0x66,
-    0x29,0x9b,0x8f,0xfe,0xe8,0x62,0x3d,0x31,0xaf,0x16,0xb5,0x2c,0x9a,0xf8,
-    0xf8,0xf8,0x1e,0xa1,0x3c,0x9b,0x9a,0x9a,0xbe,0x60,0xf3,0xd1,0x1f,0x9d,
-    0xac,0x27,0xe6,0x55,0xa3,0x96,0x46,0x13,0x17,0x17,0xa7,0x10,0xca,0xb3,
-    0xb1,0xb1,0xb1,0x86,0xcd,0x47,0x7f,0xb4,0xb1,0x9e,0x72,0xb9,0xbc,0x02,
-    0xb5,0x8f,0x69,0x92,0x92,0x92,0x9a,0xc9,0x5e,0x6b,0x7f,0x7f,0x9f,0x37,
-    0xcf,0xb9,0xb9,0x39,0xad,0x67,0x7b,0x7b,0x7b,0x19,0x9b,0x8f,0xfe,0x68,
-    0x66,0x3d,0x1b,0x1a,0x1a,0xc8,0xbc,0x04,0x1a,0xdc,0x3b,0x5f,0xd3,0xad,
-    0xc1,0xbc,0x79,0xe6,0xe7,0xe7,0x93,0xfd,0xd1,0xc1,0xee,0xee,0x6e,0x32,
-    0x9b,0x8f,0x71,0x8b,0xf5,0x94,0x4a,0xa5,0xc5,0xa8,0xc5,0xb2,0x60,0x0f,
-    0xbb,0x6a,0x6d,0x6d,0xad,0x99,0x9a,0x9a,0x3a,0x71,0x47,0xec,0x27,0xc9,
-    0xde,0x58,0x13,0x10,0x10,0x70,0xd7,0x50,0xf6,0xd5,0xab,0x57,0xe5,0xac,
-    0x67,0x5d,0x5d,0x5d,0x11,0x6a,0xd1,0x2c,0x5b,0x5b,0x5b,0xb1,0x17,0x2e,
-    0x5c,0x58,0x27,0x73,0xbc,0xbc,0xbc,0x5e,0xc6,0xc4,0xc4,0x70,0x58,0xd7,
-    0x8e,0x45,0x64,0x64,0x24,0xe7,0xe2,0xe2,0xa2,0x26,0x9f,0xe9,0xe9,0xe9,
-    0x79,0x5f,0xad,0x56,0xc7,0x18,0xca,0x8e,0x8d,0x8d,0xfd,0x92,0xf5,0xbc,
-    0x79,0xf3,0xe6,0x35,0xd4,0x3e,0x7c,0x15,0x12,0x89,0xa4,0x11,0x9e,0xe3,
-    0xe7,0xcf,0x9f,0x7f,0x61,0x67,0x67,0xb7,0xf9,0x7f,0xb1,0xb7,0xb7,0xdf,
-    0x74,0x74,0x74,0x5c,0xf7,0xf6,0xf6,0x1e,0xc3,0x7e,0xf2,0xd3,0xa3,0x32,
-    0x71,0x4e,0xea,0x29,0x4f,0xf2,0xdc,0x98,0xc3,0x3d,0x47,0x29,0x6a,0x92,
-    0xb3,0x44,0x48,0x48,0xc8,0x6d,0x9d,0xe7,0xfb,0xe0,0x2d,0xf2,0x5a,0x2c,
-    0x16,0xf7,0xa1,0x16,0x71,0x96,0x70,0x76,0x76,0x7e,0xa8,0xf3,0x7c,0x03,
-    0xbc,0x06,0x0e,0xac,0xac,0xac,0xb6,0xe6,0xe7,0xe7,0xc9,0xf9,0x0e,0x3b,
-    0x0b,0xe0,0xbe,0x24,0x1e,0x7b,0x33,0xf2,0x9c,0xf6,0x27,0xa3,0x7f,0x87,
-    0xf6,0x99,0xb7,0xad,0xad,0xad,0x6a,0x71,0x71,0xf1,0x03,0xcc,0x0b,0x39,
-    0x4d,0xb0,0x57,0x8b,0x12,0x89,0x44,0xbf,0xc3,0x89,0x3c,0xa7,0x0d,0xa6,
-    0x3c,0xc9,0x6f,0x1c,0xda,0x6b,0xc1,0xdc,0xdc,0x7c,0xd7,0xdf,0xdf,0xbf,
-    0x41,0x26,0x93,0x91,0x1e,0x7c,0x47,0x48,0xea,0xeb,0xeb,0x3f,0xf2,0xf0,
-    0xf0,0x50,0x60,0xad,0x3a,0xd0,0x7d,0xdf,0xb9,0x46,0xfa,0x83,0xb8,0x46,
-    0x83,0x7f,0x9e,0xe3,0x63,0xbf,0xaa,0x3e,0x77,0xee,0xdc,0x32,0x7a,0x7c,
-    0x91,0x4f,0x48,0x06,0xb2,0xe8,0xdf,0x3c,0x5e,0x80,0x70,0x03,0x8e,0xf4,
-    0x10,0x81,0x1c,0xd0,0x0b,0x9e,0xe9,0xce,0x3d,0xc7,0x33,0xc4,0x71,0x05,
-    0x90,0xfb,0x8e,0x4f,0x80,0x19,0x2b,0xf5,0x37,0x31,0x12,0xfd,0x45
-};
-
-// minimize.png
-static const unsigned char image_8_data[] = {
-    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x99,0x6b,0x48,0x5b,0x67,0x18,0xc7,
-    0xe3,0x25,0xd3,0xa9,0x28,0xec,0x83,0x37,0x10,0x11,0xc9,0x27,0x15,0xe6,
-    0x05,0x3f,0x08,0xfa,0x45,0x14,0x41,0x71,0x4c,0xc5,0xe5,0xc3,0x06,0x1b,
-    0xe2,0xc2,0x82,0x73,0x88,0x6e,0x5a,0x75,0x5e,0x9a,0x60,0xd4,0x7a,0x99,
-    0x8e,0x20,0x95,0xc0,0x0c,0xcd,0x24,0x8b,0x76,0xa6,0xce,0x4b,0xaa,0x8d,
-    0x51,0x51,0x43,0x2a,0xd5,0x45,0xd3,0x6e,0xb3,0x71,0x32,0x5b,0xdd,0xd8,
-    0x84,0x52,0x5c,0xa4,0x12,0x93,0xb3,0xe7,0x8d,0xe7,0x94,0xec,0x59,0xec,
-    0x87,0xc5,0xd4,0xf7,0x85,0x1f,0x1c,0xfc,0x27,0x3e,0xbf,0xf7,0xf5,0x9c,
-    0xf7,0xe2,0xe1,0xf1,0x3c,0xb6,0x6c,0xa0,0x09,0x50,0x01,0x9b,0x80,0xc5,
-    0xc7,0x98,0x81,0x71,0x40,0x02,0x94,0x00,0x7e,0x9e,0xb5,0x5e,0xb6,0xb7,
-    0x81,0xbb,0x00,0xc3,0xc1,0xe7,0xf3,0x1d,0xe1,0xe1,0xe1,0x76,0x5f,0x12,
-    0x1c,0x1c,0xec,0x70,0xaf,0xc9,0xba,0x17,0x5e,0xe0,0x48,0xfa,0xe1,0x24,
-    0x9f,0x13,0x08,0x04,0x2f,0x14,0x0a,0xc5,0x93,0xed,0xed,0xed,0xc7,0x4e,
-    0xa7,0xf3,0x21,0xc3,0x30,0x3e,0x67,0x77,0x77,0x77,0x47,0xa9,0x54,0x3e,
-    0x29,0x2b,0x2b,0x7b,0xe6,0xe7,0xe7,0xc7,0xf9,0x4a,0x91,0x63,0x1a,0x64,
-    0x36,0x32,0x76,0x83,0x83,0x83,0x07,0xaf,0xc3,0xeb,0x55,0x1c,0x1e,0x1e,
-    0xfe,0x1c,0x17,0x17,0xf7,0x82,0x75,0xfd,0xc0,0xcd,0xf3,0x3e,0x78,0x3a,
-    0x55,0x2a,0xd5,0xfe,0x55,0x3b,0x72,0x6c,0x6c,0x6c,0x58,0xc3,0xc2,0xc2,
-    0xce,0xc8,0xf8,0x81,0xdf,0x1b,0xc0,0x5b,0x80,0x23,0x33,0x33,0xd3,0x76,
-    0xd5,0x6e,0x18,0x91,0x48,0x74,0xc4,0x8e,0x69,0x1e,0x50,0x4c,0xae,0x6b,
-    0x6b,0x6b,0xff,0xbc,0x6a,0x2f,0x8c,0x5a,0xad,0xde,0x67,0x3d,0xaf,0x03,
-    0x1f,0x91,0xeb,0x81,0x81,0x81,0xa7,0x90,0x6d,0xd3,0x84,0xc9,0x64,0x7a,
-    0xcc,0x7a,0xca,0x39,0xcf,0xfe,0xfe,0xfe,0xdf,0xe0,0xd9,0xde,0xa0,0x09,
-    0xa3,0xd1,0xf8,0x13,0xf6,0xec,0xeb,0xeb,0xfb,0x15,0xb2,0xfb,0x34,0x01,
-    0x9e,0x16,0xec,0xd9,0xdb,0xdb,0x6b,0x85,0xb1,0x5e,0xa3,0x09,0xf0,0xfc,
-    0x11,0x7b,0xf6,0xf4,0xf4,0xfc,0x02,0xd9,0x32,0x4d,0xac,0xad,0xad,0x3d,
-    0xc0,0x9e,0xdd,0xdd,0xdd,0x8f,0x20,0xd3,0xd3,0xc4,0xca,0xca,0x8a,0x09,
-    0x7b,0x76,0x75,0x75,0x59,0x20,0xbb,0x4b,0x13,0xe0,0xb9,0x86,0x3d,0x65,
-    0x32,0x99,0x19,0xb2,0x69,0x9a,0x58,0x86,0x86,0x3d,0x3b,0x3a,0x3a,0x36,
-    0x21,0xbb,0x43,0x13,0x4b,0x4b,0x4b,0x06,0xec,0x29,0x95,0x4a,0x1f,0xc0,
-    0x5c,0x70,0x9b,0x26,0x16,0x17,0x17,0xef,0x61,0x4f,0x89,0x44,0x62,0x82,
-    0x3e,0xa8,0x69,0xc2,0x60,0x30,0xe8,0xb0,0x67,0x7b,0x7b,0xbb,0x11,0x32,
-    0x15,0x4d,0x2c,0x2c,0x2c,0x4c,0x61,0xcf,0xd6,0xd6,0xd6,0x55,0xc8,0x46,
-    0x68,0x42,0xaf,0xd7,0xdf,0xc1,0x9e,0x2d,0x2d,0x2d,0xcb,0x70,0x4f,0x28,
-    0x68,0x62,0x7e,0x7e,0xfe,0x7b,0xec,0xd9,0xdc,0xdc,0x6c,0x80,0x3e,0x0c,
-    0xd1,0xc4,0xdc,0xdc,0x9c,0x06,0x7b,0x36,0x36,0x36,0x92,0x35,0xe0,0x6b,
-    0x9a,0xd0,0xe9,0x74,0xa3,0xd8,0xb3,0xa1,0xa1,0x61,0x0e,0xb2,0x7e,0x9a,
-    0x98,0x9d,0x9d,0xbd,0x85,0x3d,0xeb,0xeb,0xeb,0x75,0x90,0xdd,0xb8,0x88,
-    0x99,0x99,0x99,0x91,0xf2,0xf2,0x72,0x63,0x42,0x42,0xc2,0x61,0x6c,0x6c,
-    0xec,0x5f,0xde,0x10,0x1f,0x1f,0xff,0x7b,0x7e,0x7e,0xfe,0xa6,0x5c,0x2e,
-    0x1f,0x7b,0x55,0xcd,0xe9,0xe9,0xe9,0x11,0xec,0x59,0x57,0x57,0x47,0xd6,
-    0xaa,0x0e,0x4f,0xc0,0x59,0x75,0x95,0x9c,0xf3,0xd8,0xef,0x30,0x11,0x11,
-    0x11,0x5e,0xc1,0xfd,0x1e,0x42,0x4e,0x4e,0x8e,0xf9,0xe0,0xe0,0xa0,0xd7,
-    0x53,0xdd,0xa9,0xa9,0x29,0x05,0xf6,0x84,0xf3,0xd1,0x24,0x64,0xd7,0x31,
-    0x42,0xa1,0xd0,0xb5,0x76,0xc1,0x18,0x30,0xd0,0x3f,0xc6,0x6e,0xb7,0x33,
-    0xde,0x36,0x87,0xc3,0xc1,0xc0,0x9a,0xc8,0xa4,0xa6,0xa6,0xba,0x5c,0x53,
-    0x52,0x52,0x76,0xe0,0x67,0x12,0x5c,0x7b,0x72,0x72,0xf2,0x26,0xf6,0xac,
-    0xa9,0xa9,0xd1,0x42,0xd6,0xe2,0xce,0xde,0xde,0x9e,0x8c,0x8c,0x23,0xfc,
-    0xad,0x98,0xa3,0xa3,0x23,0xaf,0xfd,0x70,0x23,0x7d,0xce,0xca,0xca,0x72,
-    0xb9,0x0e,0x0d,0x0d,0x7d,0x83,0xeb,0x6b,0xb5,0x5a,0x39,0xf6,0xac,0xae,
-    0xae,0xbe,0x0d,0x59,0xa3,0x3b,0x9d,0x9d,0x9d,0x4a,0x92,0x35,0x35,0x35,
-    0x5d,0xba,0x23,0xd7,0x26,0x26,0x26,0x5c,0x9e,0xa5,0xa5,0xa5,0xf7,0x70,
-    0x7d,0xc8,0x06,0xb1,0x67,0x55,0x55,0x95,0x06,0xb2,0xcf,0xdd,0x69,0x6b,
-    0x6b,0x1b,0x61,0xd7,0x54,0x9f,0x79,0x92,0x7b,0x89,0xd4,0x28,0x2a,0x2a,
-    0xd2,0xe3,0xfa,0xe3,0xe3,0xe3,0x7d,0xd8,0x53,0x2c,0x16,0x93,0xb5,0xbf,
-    0xc6,0x9d,0xad,0xad,0xad,0x2f,0x49,0x96,0x98,0x98,0xc8,0xd8,0x6c,0xb6,
-    0x4b,0x77,0x84,0x35,0x87,0xc9,0xcb,0xcb,0x63,0xd8,0x7d,0xe5,0x4d,0x5c,
-    0x5f,0xa3,0xd1,0xdc,0xc0,0x9e,0x22,0x91,0xe8,0x5b,0xc8,0x3e,0xc5,0x64,
-    0x67,0x67,0x2f,0x91,0x3c,0x2d,0x2d,0x8d,0x31,0x9b,0xcd,0x97,0xe6,0x68,
-    0xb5,0x5a,0x99,0xc2,0xc2,0x42,0x97,0x63,0x4c,0x4c,0xcc,0xfe,0xc9,0xc9,
-    0xc9,0x67,0xb8,0xb6,0x5a,0xad,0x96,0x61,0xcf,0xca,0xca,0xca,0x5b,0x90,
-    0x7d,0x82,0x39,0x3d,0x3d,0x15,0x67,0x64,0x64,0xac,0x72,0xf3,0x88,0xbf,
-    0xbf,0x3f,0x93,0x94,0x94,0xc4,0x24,0x27,0x27,0xff,0x6f,0x02,0x03,0x03,
-    0x5f,0xce,0x4b,0x91,0x91,0x91,0x4f,0xd7,0xd7,0xd7,0xeb,0x3d,0xd5,0x1e,
-    0x1d,0x1d,0x95,0x62,0xcf,0x8a,0x8a,0x0a,0xb2,0x47,0xa9,0xbc,0x08,0xb8,
-    0x47,0xbf,0x82,0x79,0x64,0x35,0x34,0x34,0xf4,0x59,0x50,0x50,0xd0,0x89,
-    0x37,0x84,0x84,0x84,0x3c,0x17,0x08,0x04,0xe6,0x92,0x92,0x92,0x31,0x78,
-    0xe6,0x3f,0xbe,0xa8,0xa6,0x4a,0xa5,0x6a,0x77,0xf3,0x2c,0x27,0xd7,0xc5,
-    0xc5,0xc5,0xdf,0x41,0xf6,0x21,0x4d,0xc0,0x19,0xa3,0x8b,0xf5,0xec,0x06,
-    0xe2,0xc8,0x35,0xac,0x87,0xe4,0x7c,0xf4,0x3e,0x4d,0xe4,0xe6,0xe6,0x72,
-    0xfb,0xba,0x77,0x79,0xe7,0x6d,0x27,0x20,0x20,0xe0,0x14,0xc6,0xb9,0x16,
-    0x72,0x21,0x0d,0x58,0x2c,0x96,0x0a,0xb8,0xc7,0xc8,0xff,0x15,0xcf,0x80,
-    0x08,0xd6,0xb3,0x00,0x70,0xc2,0xbd,0xf3,0x1c,0xd6,0x00,0x31,0x7c,0xae,
-    0xec,0x2a,0x39,0x3e,0x3e,0x7e,0x2f,0x3a,0x3a,0xfa,0x11,0x3b,0x96,0x12,
-    0xde,0xbf,0xdb,0x35,0xf6,0x79,0xb6,0xa7,0xa7,0xa7,0x6b,0x87,0x87,0x87,
-    0xc9,0xdc,0xf0,0xce,0xeb,0x44,0xa9,0x54,0x8a,0x0b,0x0a,0x0a,0x14,0x7c,
-    0x3e,0xff,0x98,0x75,0x24,0xef,0x40,0xfc,0x79,0xff,0x6d,0x42,0xe0,0x0f,
-    0x6e,0xce,0x80,0xb5,0xdd,0x01,0xf3,0x86,0x25,0x2a,0x2a,0xca,0xec,0x4b,
-    0xa0,0xc6,0x16,0xd4,0xb2,0xbb,0xed,0xa3,0xfe,0xe6,0x9d,0xbf,0x17,0x0a,
-    0xf2,0xe0,0xc8,0xb5,0x40,0xe0,0x0b,0x60,0x8c,0x77,0xfe,0x7e,0xe4,0xcc,
-    0xed,0xfb,0xbe,0x82,0xec,0x19,0xad,0xc0,0x0f,0x00,0x99,0x8b,0xde,0xc4,
-    0x52,0xff,0x00,0x74,0x7b,0x34,0xdf
-};
-
-// restore.png
-static const unsigned char image_9_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x6b,0x4c,0x54,0x47,0x14,0xc7,
-    0xd1,0x8a,0xe2,0xb2,0x2a,0xe1,0xe5,0x03,0x14,0x51,0x41,0x45,0xf0,0x2d,
-    0xa0,0xc6,0x57,0xaa,0x89,0xf1,0x03,0xf5,0x43,0x3f,0xb4,0x01,0x03,0x58,
-    0x48,0x69,0x42,0x3f,0x68,0x68,0x24,0x84,0x6e,0x00,0x09,0x96,0x20,0x62,
-    0x2b,0xa5,0xc1,0x54,0xfa,0x08,0x41,0xb1,0x25,0x69,0x63,0x4c,0xb1,0xd6,
-    0x12,0x24,0x42,0x30,0xa9,0xda,0xd4,0xc5,0xfa,0x80,0x6e,0x51,0x60,0x65,
-    0x65,0xd1,0x95,0xdd,0x65,0x5f,0x4c,0xff,0x67,0xbb,0xd7,0xdc,0x8e,0x43,
-    0x21,0xcb,0x2e,0x7a,0x93,0x5f,0x94,0xb9,0x37,0x73,0x7e,0x3b,0x77,0xce,
-    0x99,0x99,0xeb,0xe3,0xf3,0xd2,0x15,0x02,0x0e,0x82,0x4f,0xc1,0x65,0x70,
-    0x7b,0x12,0x68,0x07,0x55,0x20,0x03,0x84,0xbd,0xac,0xf4,0xe2,0x52,0x80,
-    0x7c,0x60,0x00,0x4c,0x62,0xf6,0xec,0xd9,0x36,0x6f,0x23,0x8f,0x07,0xcc,
-    0xa0,0x14,0x04,0x08,0xfc,0xe8,0xf7,0x30,0x85,0x42,0x61,0x3f,0x76,0xec,
-    0x58,0x5f,0x53,0x53,0x53,0x97,0xc5,0x62,0xe9,0x60,0x8c,0xa9,0xbd,0x8d,
-    0xd5,0x6a,0xed,0x68,0x69,0x69,0xe9,0x2c,0x2f,0x2f,0xef,0x9d,0x33,0x67,
-    0x8e,0x9d,0x3c,0xa6,0x4c,0x99,0xd2,0x8d,0x7f,0x83,0x5c,0x7e,0x6f,0x80,
-    0x0b,0xd4,0x9e,0x94,0x94,0xf4,0xcc,0x64,0x32,0x4d,0x8a,0xd7,0xff,0xf9,
-    0x1e,0x38,0x70,0x40,0xef,0x1a,0xd3,0x56,0xe0,0x07,0xde,0xa5,0xbf,0xb7,
-    0x6e,0xdd,0x3a,0x34,0x59,0xe3,0x36,0x16,0x23,0x23,0x23,0x6a,0x8c,0xd7,
-    0x53,0x97,0xe7,0x21,0x50,0x43,0xff,0xa7,0xb1,0x7e,0xd5,0x6e,0x72,0x34,
-    0x1a,0xcd,0x5d,0x97,0xe3,0x4f,0xe0,0x81,0x52,0xa9,0xb4,0xdb,0x6c,0xb6,
-    0x57,0xee,0xc5,0xb3,0x78,0xf1,0x62,0x0b,0xe5,0x10,0xe6,0xe6,0x60,0x54,
-    0x54,0xd4,0x30,0xda,0xfe,0x18,0x0b,0xcc,0x85,0xdb,0xd5,0xd5,0xd5,0x0f,
-    0xab,0xaa,0xaa,0xdc,0xa6,0xa6,0xa6,0xa6,0xdb,0xe1,0x70,0x8c,0x19,0x8b,
-    0xc0,0xfc,0x7b,0xee,0xca,0x9f,0xc1,0x65,0xcb,0x96,0x99,0x31,0x07,0x6e,
-    0x88,0xb0,0xdb,0xed,0x37,0x0e,0x1f,0x3e,0xdc,0x3b,0x7d,0xfa,0x74,0x07,
-    0x57,0x23,0x26,0x44,0x48,0x48,0x88,0xb5,0xb9,0xb9,0xf9,0xce,0x68,0x71,
-    0x89,0xcd,0x9b,0x37,0x1b,0x24,0xc7,0xa5,0x4b,0x97,0x9a,0xd0,0x76,0x5d,
-    0xc4,0xda,0xb5,0x6b,0x9d,0xbf,0x25,0x3a,0x3a,0xda,0x98,0x9e,0x9e,0xae,
-    0xad,0xad,0xad,0xbd,0x77,0xf6,0xec,0x59,0xb7,0x39,0x73,0xe6,0xcc,0xfd,
-    0xdd,0xbb,0x77,0xeb,0x11,0xd7,0xe9,0x5a,0x5f,0x5f,0x7f,0x77,0xb4,0xd8,
-    0x70,0x7c,0x26,0x73,0x34,0x62,0x6c,0x5b,0x79,0x8e,0x1e,0x3d,0xda,0x45,
-    0xcf,0xec,0xdb,0xb7,0x4f,0x27,0xba,0x3f,0x11,0xb4,0x5a,0xed,0xf5,0x19,
-    0x33,0x66,0x38,0xa6,0x4d,0x9b,0x36,0x82,0x77,0x25,0x7c,0x26,0x31,0x31,
-    0xf1,0xa9,0xe4,0xb8,0x64,0xc9,0x12,0x72,0xbc,0xca,0x83,0x79,0x3a,0xe4,
-    0xeb,0xeb,0xeb,0x10,0xdd,0xf3,0x04,0xc5,0xc5,0xc5,0xf7,0xc9,0x01,0x63,
-    0xab,0x16,0xdd,0x4f,0x48,0x48,0x18,0x94,0x1c,0x23,0x23,0x23,0x87,0xd0,
-    0x76,0x85,0x07,0xeb,0x94,0x75,0xfe,0xfc,0xf9,0x66,0xd1,0x3d,0x4f,0xd0,
-    0xd3,0xd3,0x73,0x95,0x1c,0x52,0x53,0x53,0xbb,0x45,0xf7,0xe3,0xe3,0xe3,
-    0x07,0x64,0x8e,0xcf,0xd1,0x76,0x89,0x67,0xd6,0xac,0x59,0xd6,0x05,0x0b,
-    0x16,0x18,0x0b,0x0b,0x0b,0x3b,0xd6,0xad,0x5b,0xa7,0x0f,0x0b,0x0b,0x33,
-    0xe2,0x6f,0xd3,0x78,0xa1,0xe7,0x31,0x16,0x4f,0x4e,0x9f,0x3e,0x7d,0x53,
-    0xd4,0xff,0xc0,0xc0,0xc0,0x2f,0xe4,0x80,0x75,0x45,0x23,0xba,0xbf,0x69,
-    0xd3,0xa6,0x27,0x92,0x23,0xea,0x10,0x39,0x5e,0xe4,0x81,0xa3,0x85,0xe6,
-    0x0c,0x3d,0x87,0x1a,0xca,0x76,0xec,0xd8,0xc1,0x76,0xee,0xdc,0x39,0x6e,
-    0xb6,0x6f,0xdf,0xce,0x66,0xce,0x9c,0x49,0x31,0x58,0x6c,0x6c,0xec,0x20,
-    0xdf,0x7f,0x7f,0x7f,0xff,0x25,0x97,0x63,0x97,0x28,0xfe,0xc6,0x8d,0x1b,
-    0x75,0x92,0x63,0x44,0x44,0x84,0x01,0x6d,0x3f,0xf2,0x60,0x3e,0x3b,0xa8,
-    0xff,0xca,0xca,0x4a,0xe6,0xee,0x85,0x5a,0xc8,0x30,0xef,0x9c,0x39,0x8c,
-    0x3c,0xd5,0x9e,0x38,0x71,0xe2,0x37,0x09,0xe4,0xe4,0x2d,0x6a,0x4f,0x49,
-    0x49,0x79,0x20,0x8a,0xbf,0x61,0xc3,0x86,0x7e,0x99,0xe3,0x33,0xe4,0x7a,
-    0x03,0x0f,0xc6,0x90,0x65,0x64,0x64,0xb8,0xed,0x27,0xbf,0xb6,0x6c,0xd9,
-    0xc2,0xa6,0x4e,0x9d,0x2a,0xac,0x95,0xb9,0xb9,0xb9,0xb7,0x44,0xf1,0xd7,
-    0xaf,0x5f,0xff,0x58,0x72,0x5c,0xb4,0x68,0xd1,0x53,0x74,0x73,0x8e,0x07,
-    0x39,0xcd,0x2a,0x2a,0x2a,0x3c,0xe2,0x98,0x95,0x95,0xc5,0x30,0x77,0x50,
-    0x66,0xec,0xf5,0x12,0x46,0xa3,0xf1,0x3b,0x72,0xc0,0x98,0xb6,0x8a,0xe2,
-    0x23,0x07,0xb4,0x92,0xe3,0xc2,0x85,0x0b,0xc9,0xb1,0x96,0xc7,0x0b,0x8e,
-    0x36,0x79,0xff,0xc3,0xc3,0xc3,0x75,0xe4,0x80,0x7d,0x63,0x8b,0x28,0x3e,
-    0xd6,0x8f,0x3e,0x99,0x23,0xcd,0xe7,0xaf,0x79,0xb0,0xfe,0xb1,0xbd,0x7b,
-    0xf7,0x32,0xe4,0xf5,0x84,0xc1,0xfc,0x97,0x1c,0x5f,0xf4,0x0f,0xc7,0x6f,
-    0xc9,0xa1,0xac,0xac,0xac,0x59,0x14,0x7f,0xcd,0x9a,0x35,0xbd,0x92,0x63,
-    0x78,0x78,0xb8,0x1e,0xef,0xff,0x4b,0x1e,0x3f,0x3f,0x3f,0x16,0x1a,0x1a,
-    0xca,0x50,0xe3,0x27,0x4c,0x60,0x60,0x20,0x9b,0x3b,0x77,0xee,0x90,0xbc,
-    0x7f,0xb3,0xd9,0xec,0xdc,0x17,0x96,0x96,0x96,0xfe,0x2a,0x8a,0xbf,0x7a,
-    0xf5,0xea,0x1e,0xc9,0x11,0x75,0x6c,0x00,0xde,0x5f,0xf0,0x50,0xdd,0x39,
-    0x79,0xf2,0xa4,0x47,0xde,0x75,0x76,0x76,0x36,0xad,0xf9,0x3a,0x79,0xff,
-    0x70,0xac,0x26,0x07,0x9c,0x4d,0x2e,0x8b,0xe2,0xc7,0xc5,0xc5,0x3d,0xe4,
-    0x1c,0x4f,0xf1,0x78,0xda,0x11,0x6b,0x6b,0xbf,0xbc,0x7f,0x38,0x7e,0x4e,
-    0x0e,0x25,0x25,0x25,0x8d,0xa2,0xf8,0xa8,0xa9,0xdd,0xae,0xdc,0xd7,0x63,
-    0x4d,0x78,0x82,0xb6,0x0a,0x1e,0x2f,0x38,0x3e,0x96,0xf7,0x0f,0x47,0x3a,
-    0x1f,0x53,0xfd,0xbc,0x28,0x8a,0xbf,0x6a,0xd5,0xaa,0xbf,0x25,0x47,0xac,
-    0xc9,0xf4,0x0e,0xca,0x78,0x3c,0xed,0x88,0x7d,0xea,0x63,0x79,0xff,0x38,
-    0xdf,0x95,0x93,0x43,0x51,0x51,0xd1,0x05,0x51,0xfc,0x98,0x98,0x18,0x0d,
-    0xe7,0x58,0xc2,0xe3,0x69,0x47,0xec,0x01,0xfb,0xe4,0xfd,0xc3,0xf1,0x13,
-    0x72,0x28,0x28,0x28,0xf8,0x41,0x14,0x7f,0xe5,0xca,0x95,0x7f,0x49,0x8e,
-    0xf3,0xe6,0xcd,0xa3,0x79,0x52,0xc4,0xe3,0x69,0x47,0xe4,0x77,0x9f,0xbc,
-    0x7f,0x38,0x16,0x93,0x83,0x4a,0xa5,0x6a,0x10,0xc5,0x5f,0xb1,0x62,0x45,
-    0x97,0xe4,0x88,0x9a,0x40,0xef,0x40,0xc5,0xe3,0x69,0x47,0xec,0xaf,0x7a,
-    0xe5,0xfd,0xc3,0xb1,0x80,0x1c,0xf2,0xf3,0xf3,0xcf,0x8b,0xe2,0x2f,0x5f,
-    0xbe,0xbc,0x93,0x73,0xcc,0xe3,0xf1,0x82,0x63,0x8f,0xbc,0x7f,0xac,0x85,
-    0xf4,0xed,0x86,0xe5,0xe5,0xe5,0x9d,0x13,0xc5,0x47,0xad,0x7a,0x20,0x39,
-    0xa2,0x4e,0x6b,0xd1,0xf6,0x11,0x8f,0xa7,0x1d,0xb1,0x07,0x7c,0x24,0xef,
-    0xbf,0xb3,0xb3,0x53,0xe5,0x7a,0xd7,0xdf,0x88,0xe2,0x23,0xc7,0xee,0x49,
-    0x8e,0x38,0xa3,0xd1,0x3c,0x39,0xc4,0xa3,0x50,0x28,0x2c,0xb4,0xaf,0xf2,
-    0xc4,0x95,0x96,0x96,0x46,0xf3,0xb1,0x4b,0xde,0x7f,0x4e,0x4e,0x8e,0x73,
-    0x2d,0x6c,0x6f,0x6f,0x2f,0x10,0xc5,0x47,0x8e,0x49,0xdf,0x01,0xf4,0xc1,
-    0xc1,0xc1,0x34,0x4f,0x3e,0xe4,0x41,0x3d,0xeb,0xa0,0x75,0x0c,0xf3,0x66,
-    0x42,0x7e,0x3a,0x9d,0x8e,0xd6,0x42,0xc7,0x9e,0x3d,0x7b,0x2e,0x4b,0x7d,
-    0x1f,0x3f,0x7e,0xfc,0x14,0xf6,0xa7,0x56,0xd4,0xe9,0x9b,0xa2,0xd8,0x04,
-    0x62,0xff,0xc9,0x39,0x7e,0xc0,0xd3,0xd8,0xd8,0xa8,0xc2,0x9a,0x6d,0xc1,
-    0xb9,0x86,0x1d,0x39,0x72,0x84,0xd5,0xd5,0xd5,0x31,0x9c,0x3f,0xc7,0x0d,
-    0x3d,0x8f,0xb1,0x62,0xb4,0xee,0xe3,0x9d,0x98,0xb7,0x6d,0xdb,0xd6,0x84,
-    0xbd,0xfc,0x15,0xd4,0x11,0x67,0xdd,0xc3,0xfc,0xbc,0x63,0x30,0x18,0xb2,
-    0x45,0xb1,0x09,0xba,0x2f,0x39,0x06,0x05,0x05,0xd1,0x5c,0xce,0x14,0xd1,
-    0xd6,0xd6,0x96,0x83,0x5a,0x7a,0xc3,0xdf,0xdf,0x7f,0xd8,0x9d,0xb3,0x3e,
-    0xf6,0x4e,0x76,0xcc,0x6b,0x23,0x62,0xf4,0x62,0x2c,0x1e,0x21,0x3f,0x35,
-    0xf0,0xfc,0x39,0x33,0x33,0xf3,0xab,0xd1,0x62,0x4a,0x60,0xfe,0x76,0xb8,
-    0xfa,0x79,0x88,0xdf,0x49,0x67,0x85,0xb4,0xb1,0xc0,0xda,0x75,0x10,0xb9,
-    0xf8,0xde,0x78,0xc1,0xde,0xeb,0xe0,0x78,0xfa,0x1d,0x0d,0xe4,0x09,0xad,
-    0x85,0xf4,0x3d,0xf2,0xbc,0xeb,0x7b,0x01,0xe5,0x52,0xca,0xeb,0x82,0x5a,
-    0xad,0x7e,0x1f,0xfb,0x1d,0x3a,0xef,0xb5,0x80,0x2c,0x72,0x44,0xbd,0xbc,
-    0x86,0x7b,0xef,0xbc,0x2e,0xe0,0x5c,0xd9,0xe0,0x7a,0xcf,0x85,0xc0,0x1f,
-    0x38,0xf3,0x67,0xd7,0xae,0x5d,0x54,0x4b,0xdf,0x7e,0xd5,0x24,0x27,0x27,
-    0x57,0xc2,0x67,0x04,0xd0,0x1e,0x37,0xd8,0xe7,0xdf,0x2b,0x02,0x38,0xcf,
-    0x37,0x01,0x01,0x01,0x1a,0xe4,0xf0,0xc7,0x56,0xab,0x75,0x3f,0x9e,0x7f,
-    0x6b,0xb2,0xb0,0xd9,0x6c,0xfb,0xb1,0xb7,0xc8,0x45,0x5e,0x49,0x35,0x91,
-    0xbe,0x99,0xc5,0xf9,0xfc,0xf7,0x8a,0x04,0xdf,0xbb,0xfc,0x9d,0x39,0x89,
-    0x5c,0xee,0x43,0x1e,0xfe,0xee,0x6d,0x94,0x4a,0xe5,0x23,0x79,0x5c,0x40,
-    0xdf,0x06,0x62,0x7c,0x46,0xbf,0x12,0xc0,0x67,0xa0,0x19,0x98,0xdc,0xa9,
-    0x37,0x6e,0x40,0x75,0xed,0x1a,0xa0,0x77,0xfc,0x26,0x2f,0xf4,0x0f,0x37,
-    0x76,0x25,0x15
-};
-
-// shade.png
-static const unsigned char image_10_data[] = {
-    0x00,0x00,0x1f,0xa4,0x78,0x9c,0xd5,0x99,0xd1,0x4b,0x53,0x51,0x1c,0xc7,
-    0xbd,0xd3,0xa1,0xa0,0xf8,0xa2,0xff,0x81,0xef,0x2a,0xf8,0xe0,0x83,0x0f,
-    0x03,0xc1,0x27,0x21,0x48,0x16,0x14,0x8d,0x22,0xa5,0x51,0x11,0x16,0x44,
-    0x41,0x83,0x51,0xd0,0x46,0x52,0x30,0x50,0x0b,0x82,0x60,0x83,0x61,0x61,
-    0xa0,0x54,0x1b,0x14,0x4b,0x92,0xca,0x32,0xc8,0x32,0x66,0xb9,0x24,0x28,
-    0x5a,0xe4,0x40,0x14,0x7a,0xf0,0x16,0x38,0x37,0x4f,0xbf,0xef,0xb8,0xa3,
-    0xdb,0xe9,0xe7,0x86,0xed,0x6e,0x9e,0x0e,0x7c,0x60,0x3b,0xf7,0xf2,0xfd,
-    0x7e,0xbc,0x5c,0xee,0xae,0xe7,0x08,0x21,0xaa,0x84,0x09,0x1a,0x75,0xc4,
-    0x09,0x22,0x4c,0xbc,0x26,0x74,0x42,0x54,0x10,0xdd,0xe8,0x0d,0x1b,0x1e,
-    0x75,0x42,0x72,0x34,0xb9,0x6a,0x84,0x8b,0x48,0xca,0x39,0x76,0xbb,0x7d,
-    0xab,0x52,0x30,0x7f,0x43,0xd2,0xf0,0xd2,0x18,0xdf,0xf1,0xfc,0x79,0xed,
-    0xed,0xed,0x3f,0x47,0x46,0x46,0xbe,0x4d,0x4f,0x4f,0x7f,0x5a,0x5d,0x5d,
-    0xfd,0x40,0xe7,0xbc,0x2f,0xc0,0xa2,0x95,0xac,0xad,0xad,0x2d,0x51,0xef,
-    0x67,0xea,0x5f,0x86,0x87,0xc9,0x7d,0xdc,0xec,0x4d,0xc3,0x8f,0xf9,0xc6,
-    0xc6,0xc6,0xcd,0x60,0x30,0xf8,0x85,0xe6,0xe2,0xaa,0x00,0x1f,0x78,0x19,
-    0xde,0x7e,0xc3,0xd7,0x81,0xef,0xd5,0xd5,0xd5,0x5b,0xd1,0x68,0xf4,0x23,
-    0xcd,0xcd,0xab,0x06,0xbc,0xe0,0x67,0x78,0xc3,0x37,0x80,0xcf,0x83,0x83,
-    0x83,0xcb,0x74,0xfc,0x55,0x99,0x99,0xfb,0x57,0xc8,0x2f,0x65,0x38,0xc3,
-    0x77,0x1e,0x9f,0xa7,0xa6,0xa6,0xde,0xd1,0xb1,0x97,0xaa,0x02,0x3f,0xc3,
-    0x19,0xbe,0x59,0x5c,0xf7,0x8d,0x8d,0x8d,0xe7,0x74,0x6c,0xa6,0x18,0x99,
-    0x4c,0x66,0x26,0x91,0x48,0xcc,0xbd,0xb1,0x60,0x20,0x87,0xf2,0xd0,0x5b,
-    0x14,0xf2,0x7b,0x61,0xdc,0x1f,0x59,0xe3,0x59,0x96,0xa5,0xf9,0x27,0x85,
-    0xa0,0x7b,0xea,0x6d,0x47,0x47,0xc7,0xf7,0xda,0xda,0xda,0xac,0x95,0xcf,
-    0x63,0xe4,0x21,0x17,0xf9,0x52,0xe7,0x53,0x19,0x78,0x9a,0x9e,0xbf,0x70,
-    0x7e,0xbc,0x1d,0x2e,0x97,0xeb,0x6b,0xfe,0x5c,0x9b,0xcd,0x26,0x5a,0x5a,
-    0x5a,0x44,0x5b,0x5b,0x5b,0xc9,0x20,0x07,0x79,0xf9,0x6c,0xf4,0x14,0xf2,
-    0x60,0x9c,0x63,0x1c,0x3e,0x9f,0x6f,0x11,0xe7,0x34,0x34,0x34,0x88,0xa1,
-    0xa1,0x21,0xa1,0xeb,0xba,0xb0,0x72,0x20,0x0f,0xb9,0xc8,0x47,0x8f,0xdf,
-    0xef,0x4f,0xd0,0xf4,0x23,0x0e,0xc6,0xf9,0x81,0x4c,0x3a,0x9d,0x7e,0x58,
-    0x5f,0x5f,0x9f,0xd6,0x34,0x4d,0x44,0x22,0x11,0x4b,0x5d,0xe5,0x81,0x7c,
-    0xf4,0xa0,0x0f,0xbd,0x9c,0x8f,0xd9,0xb9,0xa6,0xa6,0x06,0xce,0x51,0x19,
-    0xfa,0x3d,0x7a,0x86,0xe3,0xad,0xad,0xad,0x65,0xf5,0xcd,0x0f,0xf4,0xa0,
-    0x0f,0xbd,0x9c,0x0f,0x3c,0x25,0xe7,0xbb,0x32,0xe1,0x70,0x78,0x16,0xc7,
-    0x7b,0x7a,0x7a,0x2a,0xe2,0x8c,0x1e,0xf4,0x8d,0x8d,0x8d,0xcd,0xd2,0xd7,
-    0x7b,0x32,0x8c,0xf3,0x84,0x4c,0x2a,0x95,0x8a,0x18,0xbf,0xe9,0x82,0xde,
-    0x3b,0xca,0xea,0x8b,0x7c,0xf4,0xa0,0x0f,0xbd,0x9c,0x0f,0xe3,0x3c,0xce,
-    0xd1,0xd9,0xd9,0xb9,0x8c,0x73,0xba,0xbb,0xbb,0xc5,0xca,0xca,0x4a,0x59,
-    0x7c,0x91,0x8b,0x7c,0xf4,0xa0,0x8f,0xa6,0xee,0x70,0x30,0xce,0xb7,0x38,
-    0x92,0xc9,0xe4,0x44,0x53,0x53,0xd3,0x8f,0xfc,0xf5,0x76,0xbb,0xdd,0x62,
-    0x74,0x74,0x54,0x84,0x42,0xa1,0x92,0x41,0x0e,0xf2,0xf2,0xd7,0x17,0x3d,
-    0xd4,0x37,0x49,0xbd,0xb7,0x39,0x24,0xe7,0x0c,0xcd,0x85,0xb7,0x63,0x61,
-    0x61,0x61,0xb2,0xab,0xab,0xeb,0xaf,0xf7,0x6a,0x2b,0x41,0x3e,0x7a,0x0a,
-    0x79,0xc0,0x53,0x72,0x0e,0x16,0x23,0x16,0x8b,0xdd,0xf7,0x78,0x3c,0xb3,
-    0x7d,0x7d,0x7d,0x8b,0xbd,0xbd,0xbd,0x4b,0xa5,0x82,0x1c,0xe4,0x21,0x97,
-    0xf2,0x43,0xc5,0x60,0x9c,0x6f,0xaa,0x0e,0xe3,0x7c,0x43,0x75,0x18,0xe7,
-    0x6b,0x16,0x73,0xdd,0x6a,0x18,0xe7,0x61,0xd5,0x31,0x3b,0xd3,0x7b,0x29,
-    0x9c,0x03,0xaa,0x03,0x4f,0xc9,0xf9,0xca,0x2e,0x73,0xb5,0x18,0x8c,0xf3,
-    0x65,0xd5,0x61,0x9c,0x2f,0x15,0xc0,0xa7,0x02,0x8c,0xf3,0x45,0xd5,0x91,
-    0x9c,0x37,0x69,0xce,0xab,0x3a,0xf0,0x94,0x9c,0xcf,0x5b,0x84,0xa7,0x5c,
-    0x30,0xce,0xe7,0x54,0x87,0x71,0x3e,0xa3,0x3a,0x8c,0xf3,0xa9,0x5d,0xe0,
-    0xf4,0x4e,0x60,0x9c,0x4f,0xaa,0x8e,0xd9,0xd9,0x66,0xb3,0xc1,0xf9,0x98,
-    0xc4,0x71,0xd5,0x80,0xa7,0xe4,0x7c,0x54,0x71,0xdc,0x8c,0x73,0xbf,0xea,
-    0x98,0x9c,0xb3,0x9a,0xa6,0x65,0x74,0x5d,0x3f,0x42,0xf3,0x87,0x4a,0xe0,
-    0x70,0x39,0x21,0xbf,0x7e,0x78,0x1a,0xeb,0xa2,0xb9,0xf5,0xe7,0x40,0x20,
-    0x70,0x81,0x8e,0x1d,0x54,0x15,0xf8,0x99,0xd6,0x9f,0x73,0xeb,0xfc,0x0e,
-    0x87,0x03,0xff,0xf3,0xee,0x57,0x15,0xf8,0x55,0xfd,0x5e,0xe7,0xcf,0xed,
-    0xa7,0xe0,0xba,0x7b,0xbd,0x5e,0xbc,0x8b,0x38,0x2b,0xc0,0xbe,0x9d,0x00,
-    0x2f,0xe3,0xbe,0xc8,0xed,0xa7,0x08,0xd3,0xbe,0x95,0xdd,0x6e,0x5f,0x1f,
-    0x18,0x18,0xc0,0xfb,0xf5,0x5e,0x55,0x80,0x0f,0xbc,0x0c,0xdf,0xdc,0xbe,
-    0x95,0x60,0xf6,0x07,0x9b,0x9b,0x9b,0x97,0x9c,0x4e,0xe7,0xb0,0xcf,0xe7,
-    0x3b,0x1b,0x8f,0xc7,0x0f,0xd0,0x39,0x7b,0x2a,0x05,0xfa,0xd0,0x8b,0x7e,
-    0x78,0x98,0xd6,0x6d,0xfe,0xd8,0x1f,0x14,0x45,0xf6,0x61,0xe9,0x19,0x93,
-    0xae,0x14,0xcc,0x1a,0x13,0xbb,0x0f,0x2b,0xfe,0xb3,0xfd,0xee,0x5f,0x4b,
-    0xfc,0x3e,0x57
-};
-
-// splat.png
-static const unsigned char image_11_data[] = {
-    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x59,0x09,0x4c,0x95,0x47,0x10,0xc6,
-    0x03,0x50,0xf1,0x88,0xf1,0xbe,0xa2,0x36,0xd1,0x78,0xd6,0x98,0xaa,0x69,
-    0x88,0xda,0xe2,0x81,0x26,0x52,0x89,0x77,0x63,0x8c,0x82,0x82,0x41,0x11,
-    0x09,0x18,0xad,0xc5,0x70,0x14,0x14,0x0f,0x50,0x6a,0x04,0x41,0x41,0xe4,
-    0x2a,0x88,0x82,0x02,0xfa,0x12,0x88,0x29,0x86,0xc3,0xa2,0x42,0xb9,0x44,
-    0x69,0x25,0x4a,0x2d,0xe2,0x85,0x8a,0xa8,0x60,0xb8,0xde,0xf6,0x9b,0xf5,
-    0xed,0xcb,0xff,0x16,0xde,0x61,0x52,0xd4,0x4d,0xbe,0x04,0xff,0x9d,0xdd,
-    0xf9,0xd8,0x9d,0xf9,0x66,0x56,0xcc,0xcc,0x3a,0x1d,0xf6,0x80,0x1f,0x70,
-    0x1e,0x28,0x03,0x2a,0xba,0x18,0xa5,0x40,0x12,0xe0,0x0d,0xd8,0x75,0x4e,
-    0x49,0x67,0x7c,0x0f,0x14,0x01,0x4c,0xc0,0xd2,0xd2,0xb2,0xbd,0x7f,0xff,
-    0xfe,0xad,0x5d,0x09,0x0b,0x0b,0x8b,0x76,0xa5,0x4f,0x20,0x1f,0xf8,0x56,
-    0x0f,0x47,0x77,0x61,0xb7,0x6c,0xd9,0xb2,0x86,0x98,0x98,0x98,0x9a,0x7b,
-    0x18,0x8c,0xb1,0x3b,0x5d,0x0d,0xb5,0x5a,0x7d,0xa7,0xb2,0xb2,0xb2,0x2a,
-    0x3a,0x3a,0xba,0x66,0xe1,0xc2,0x85,0x6f,0x14,0x7c,0x1d,0x25,0x8e,0x3f,
-    0x00,0xed,0x56,0x56,0x56,0x6d,0x39,0x39,0x39,0x0f,0x3e,0x05,0x37,0x43,
-    0xc8,0xcc,0xcc,0xac,0xee,0xd5,0xab,0x57,0x7b,0xb7,0x6e,0xdd,0x5a,0xc0,
-    0xeb,0x3b,0x0d,0xc7,0xee,0xf8,0xf7,0x0b,0xba,0xdf,0xdc,0xdc,0xdc,0xcf,
-    0xce,0x51,0xe0,0xca,0x95,0x2b,0xff,0xf4,0xec,0xd9,0x53,0x0d,0x7e,0x0f,
-    0x35,0x3c,0xbf,0xa1,0x33,0x5e,0xbb,0x76,0x6d,0xfd,0xe7,0xe6,0x26,0xc3,
-    0xd6,0xd6,0x56,0xc4,0xc0,0x57,0x80,0x07,0xfd,0x7c,0xf2,0xe4,0xc9,0xda,
-    0xae,0xf2,0x17,0x19,0x19,0xf9,0xe8,0xe0,0xc1,0x83,0x4f,0x5a,0x5a,0x5a,
-    0xee,0x7e,0xcc,0xba,0x03,0x07,0x0e,0x3c,0xd1,0xf0,0x74,0x00,0x02,0xe8,
-    0x67,0x95,0x4a,0x45,0x77,0x7e,0xfb,0xff,0xc6,0xd2,0xa5,0x4b,0x1b,0x44,
-    0x5e,0x2c,0x58,0xb0,0xe0,0xcd,0xc7,0xac,0x4d,0x48,0x48,0x78,0xa8,0x59,
-    0xbb,0x4b,0xf0,0xbc,0x7c,0xf9,0xf2,0x3d,0xe4,0x5d,0xb1,0xa9,0xc8,0xcf,
-    0xcf,0xaf,0xac,0xaf,0xaf,0x2f,0x35,0x64,0xb3,0x77,0xef,0xde,0x5a,0xda,
-    0x7b,0xe6,0xcc,0x99,0x6c,0xfa,0xf4,0xe9,0x0c,0x79,0xc0,0x1a,0x1b,0x1b,
-    0x4b,0x4c,0xf5,0x11,0x17,0x17,0x77,0xbf,0x13,0x9e,0x95,0x98,0xbb,0x65,
-    0x0a,0xac,0xad,0xad,0xf9,0x19,0x51,0x9c,0xbb,0xb9,0xb9,0xd5,0xbe,0x7f,
-    0xff,0xbe,0x50,0xb6,0x49,0x4c,0x4c,0xfc,0x9b,0x6c,0x46,0x8d,0x1a,0xc5,
-    0x1e,0x3f,0x7e,0xcc,0x96,0x2f,0x5f,0xce,0xcf,0xb4,0xb6,0xb6,0xb6,0xd8,
-    0x54,0x3f,0xb1,0xb1,0xb1,0x55,0x32,0xcf,0x8c,0x8c,0x8c,0x0a,0x9c,0xf5,
-    0x1f,0xc6,0x40,0x76,0xe2,0x8c,0xc6,0x8c,0x19,0xc3,0x7d,0x4f,0x9c,0x38,
-    0xb1,0xf1,0xfe,0xfd,0xfb,0x45,0xc2,0xa6,0xa2,0xa2,0xa2,0x98,0xf4,0xdb,
-    0xdc,0xdc,0x9c,0x95,0x96,0x96,0x32,0x1a,0x33,0x66,0xcc,0x60,0xa4,0x35,
-    0xf0,0x6f,0xd4,0x87,0x00,0x34,0xfc,0x2f,0x99,0x67,0x7a,0x7a,0x7a,0x19,
-    0xe6,0x72,0x8d,0x21,0x20,0x20,0x80,0xff,0x8e,0x67,0xce,0x9c,0x61,0x38,
-    0x47,0xb6,0x6e,0xdd,0x3a,0xce,0x95,0x6a,0x8a,0xab,0xab,0xeb,0xc3,0x9b,
-    0x37,0x6f,0x16,0x8d,0x1e,0x3d,0xba,0x89,0xbe,0x45,0x45,0x45,0x31,0x31,
-    0xc0,0x9b,0x8d,0x1f,0x3f,0xbe,0xd1,0x14,0x1f,0x02,0xd0,0xfd,0x3b,0x32,
-    0xcf,0xb4,0xb4,0xb4,0x3f,0x31,0xf7,0xbb,0x31,0x9c,0x3f,0x7f,0xbe,0x84,
-    0xec,0xbd,0xbc,0xbc,0xb4,0x1c,0x22,0x22,0x22,0xa8,0xbe,0x2a,0xeb,0x1e,
-    0xf3,0xf0,0xf0,0xd0,0xce,0x3f,0x7b,0xf6,0x8c,0x7f,0x9b,0x3f,0x7f,0x7e,
-    0x9d,0x29,0x3e,0x04,0x70,0x16,0xe5,0x32,0xcf,0x4b,0x97,0x2e,0xdd,0xc2,
-    0x5c,0x96,0x31,0x20,0xbe,0xb2,0x29,0x1f,0x6c,0x6c,0x6c,0x98,0x72,0x20,
-    0xa7,0xd8,0xee,0xdd,0xbb,0x99,0xbd,0xbd,0x3d,0x8b,0x8f,0x8f,0xd7,0x99,
-    0xbb,0x76,0xed,0x1a,0xe7,0xb9,0x79,0xf3,0xe6,0x6a,0x53,0x7c,0x08,0xe0,
-    0x3e,0x4a,0x64,0x9e,0xa9,0xa9,0xa9,0x05,0x98,0x53,0x99,0x02,0xc4,0xe5,
-    0xbb,0x7e,0xfd,0xfa,0x31,0x53,0x47,0x58,0x58,0x18,0xe7,0x19,0x14,0x14,
-    0x54,0x66,0xaa,0x0f,0x02,0x74,0xb7,0x48,0xe6,0x99,0x92,0x92,0x92,0x8f,
-    0xb9,0x74,0x63,0x68,0x6e,0x6e,0xce,0x18,0x3e,0x7c,0x78,0xe3,0xa0,0x41,
-    0x83,0x4c,0xe6,0xb9,0x67,0xcf,0x1e,0xa6,0xb9,0x33,0x93,0x7c,0x08,0x9c,
-    0x3a,0x75,0xea,0x96,0xcc,0x13,0x71,0x97,0x83,0x5c,0x4c,0x25,0x54,0x57,
-    0x57,0x5f,0xd9,0xb0,0x61,0xc3,0x3d,0xf4,0x2e,0x35,0xb3,0x67,0xcf,0x7e,
-    0x3a,0x69,0xd2,0xa4,0x97,0xe3,0xc6,0x8d,0x6b,0x18,0x31,0x62,0xc4,0x3b,
-    0xe4,0x6c,0x2b,0xd9,0x2f,0x5a,0xb4,0xa8,0x53,0x4e,0x75,0x75,0x75,0x6c,
-    0xeb,0xd6,0xad,0x2c,0x39,0x39,0x59,0xfb,0xed,0xf0,0xe1,0xc3,0x9c,0x27,
-    0xe2,0xb8,0x40,0xf8,0x30,0x05,0xe1,0xe1,0xe1,0x05,0x32,0x4f,0xec,0x9b,
-    0x8d,0x2d,0xcf,0x11,0xa0,0x79,0xca,0xde,0x8a,0xf5,0xe8,0xd1,0x83,0x0d,
-    0x18,0x30,0x80,0xe1,0x1c,0x49,0x83,0x98,0xa7,0xa7,0x27,0xcf,0x75,0x31,
-    0xce,0x9d,0x3b,0xc7,0xba,0x77,0xef,0xce,0xb6,0x6f,0xdf,0xce,0x26,0x4f,
-    0x9e,0xcc,0xd7,0x0c,0x19,0x32,0x44,0x3b,0x8f,0x33,0xe0,0xdf,0xf0,0xbb,
-    0xd6,0x43,0x0f,0x54,0xc2,0x8f,0x31,0xa0,0x96,0xe7,0xc9,0x3c,0xe1,0xeb,
-    0x2a,0xe6,0x12,0xda,0xdb,0xdb,0x13,0x90,0xbb,0x6d,0xd0,0x19,0x56,0x56,
-    0x56,0xc6,0xde,0xbe,0x7d,0x6b,0xf4,0x5e,0x71,0xe6,0x3a,0xb9,0x4e,0x20,
-    0x6d,0x15,0x03,0x67,0xc3,0x50,0x9b,0x84,0x7e,0xb5,0xad,0x5e,0xbd,0xba,
-    0xb2,0xaa,0xaa,0x2a,0x95,0xfc,0x19,0x02,0xe2,0x3a,0x47,0xe6,0x89,0xfa,
-    0x91,0x89,0xb9,0x18,0x82,0xa3,0xa3,0x23,0xbd,0x03,0x18,0xf6,0xe3,0x3e,
-    0xf4,0x8d,0xc0,0xc0,0x40,0xae,0xdf,0xa8,0x4b,0x54,0x13,0xd5,0xc8,0xe7,
-    0x52,0xe8,0x55,0x01,0xf4,0xbd,0x0d,0x5a,0xc9,0x5a,0x5b,0x5b,0x75,0xec,
-    0x91,0xab,0xbc,0x3e,0xd1,0xde,0x38,0x7f,0x35,0x62,0xab,0xbc,0xa8,0xa8,
-    0x28,0x55,0xf8,0x95,0x71,0xe2,0xc4,0x89,0x6c,0x99,0x27,0x6a,0xbe,0x0a,
-    0x9c,0xa2,0x08,0xb8,0xd3,0x68,0x9c,0xc7,0x2b,0xfa,0xbe,0x62,0xc5,0x0a,
-    0xd6,0xd4,0xd4,0xd4,0x81,0x23,0x7a,0x1f,0x7e,0xd7,0x64,0x83,0x98,0x68,
-    0xf2,0xf3,0xf3,0xcb,0x11,0xeb,0xc7,0x8e,0x1d,0xfb,0x92,0xbe,0x23,0x9e,
-    0xd9,0x8d,0x1b,0x37,0x74,0xd6,0x21,0x0f,0xb9,0xfe,0x4f,0x98,0x30,0x81,
-    0x69,0x6a,0x6f,0xbb,0x9d,0x9d,0xdd,0x5d,0xf4,0xf3,0x89,0x62,0xbd,0xc0,
-    0xf1,0xe3,0xc7,0xaf,0xca,0x3c,0xa1,0x79,0x94,0x63,0xe1,0x02,0x8f,0x1e,
-    0x3d,0x8a,0x9e,0x32,0x65,0x0a,0xef,0x23,0x66,0xcd,0x9a,0xc5,0x9e,0x3e,
-    0x7d,0xda,0x81,0xab,0xc8,0x8f,0xde,0xbd,0x7b,0x37,0xe7,0xe5,0xe5,0x25,
-    0x89,0xb5,0x87,0x0e,0x1d,0xba,0x4a,0xe7,0x25,0x62,0x40,0x99,0x53,0xca,
-    0x58,0xb8,0x70,0xe1,0x02,0x43,0xed,0x12,0xf1,0xd0,0xba,0x69,0xd3,0xa6,
-    0x42,0x25,0x87,0x90,0x90,0x90,0x4c,0x99,0x27,0x6a,0xfe,0x45,0xcc,0x9d,
-    0x50,0x02,0x67,0x16,0x3a,0x77,0xee,0xdc,0x7b,0x34,0x4f,0xfb,0x15,0x17,
-    0x17,0x77,0xf0,0xe7,0xe3,0xe3,0xc3,0xfd,0xac,0x5a,0xb5,0xaa,0x18,0x67,
-    0x17,0x97,0x95,0x95,0x95,0x48,0x75,0x40,0x70,0xa4,0x3a,0x95,0x9d,0x9d,
-    0xad,0x37,0x76,0x28,0x36,0x90,0xd7,0x6c,0xf0,0xe0,0xc1,0xdc,0x7e,0xc7,
-    0x8e,0x1d,0xb9,0xc2,0xff,0xb1,0x63,0xc7,0x54,0x32,0x4f,0xd4,0xfc,0x0b,
-    0x98,0x0b,0x91,0x81,0xbc,0x0a,0x71,0x70,0x70,0xb8,0x4e,0xf1,0xd7,0xa7,
-    0x4f,0x1f,0x35,0x74,0x56,0xc7,0x0f,0xfa,0x2c,0xbe,0x3f,0xb4,0xe0,0x95,
-    0xe6,0x1e,0xdb,0x44,0xbc,0x90,0x46,0x09,0x5d,0x40,0x6f,0xc2,0xd0,0xa7,
-    0xb1,0xa3,0x47,0x8f,0x32,0xdc,0x27,0xd7,0x7e,0xaa,0xb7,0xc8,0x69,0x16,
-    0x1a,0x1a,0xca,0x76,0xee,0xdc,0xc9,0xf7,0x19,0x39,0x72,0xe4,0x0b,0xe1,
-    0x3b,0x38,0x38,0x38,0x43,0xe6,0x89,0x9a,0x4f,0x5a,0x10,0xa4,0x0f,0xb8,
-    0xe3,0x34,0x9c,0x4d,0x0b,0x9d,0x55,0x49,0x49,0x89,0x96,0x27,0xf9,0x11,
-    0x67,0x87,0x38,0xd1,0xc6,0x2c,0xf1,0x14,0xc3,0xc5,0xc5,0xa5,0x83,0x1e,
-    0xe8,0x03,0xde,0x3f,0x05,0xc2,0xe7,0x91,0x23,0x47,0xd2,0x64,0x9e,0x88,
-    0x6d,0xd2,0x82,0x40,0x43,0x40,0xaf,0x74,0x91,0x6c,0xbd,0xbd,0xbd,0xb5,
-    0x1c,0x28,0x6e,0xe7,0xcd,0x9b,0xc7,0x75,0x87,0xee,0x10,0xfd,0x1d,0xdb,
-    0xb2,0x65,0x0b,0xfb,0xf0,0xa4,0x66,0x3c,0x8f,0x34,0x7a,0xfa,0x0a,0xf7,
-    0x92,0x8d,0xf7,0x47,0x8a,0xbf,0xbf,0xff,0x45,0x5f,0x5f,0xdf,0x34,0x68,
-    0x43,0x06,0xf6,0x4a,0x47,0x0e,0xa6,0xd1,0xde,0xa7,0x4f,0x9f,0xfe,0x4d,
-    0xe9,0x0f,0x71,0x9e,0x22,0xf3,0x84,0x4d,0x2c,0xe6,0xfc,0x0d,0x01,0x71,
-    0x9d,0x48,0xb6,0xf0,0xa3,0x37,0xde,0xe4,0x41,0xb9,0x42,0x6b,0x9c,0x9c,
-    0x9c,0xb2,0x8c,0xed,0x2f,0x03,0xba,0x97,0x2c,0xf3,0x44,0xac,0x44,0x63,
-    0xce,0xc7,0x10,0xd6,0xaf,0x5f,0x7f,0x55,0x53,0x63,0x4d,0xe6,0x89,0xf7,
-    0x09,0xe7,0xb9,0x78,0xf1,0xe2,0x1b,0xc6,0xf6,0x97,0xb1,0x7f,0xff,0xfe,
-    0x24,0x99,0x27,0xe2,0x2c,0x12,0x73,0x5e,0x86,0x30,0x6d,0xda,0xb4,0x4a,
-    0xb2,0xad,0xa9,0xa9,0xd1,0xe1,0x42,0x35,0x8b,0xf2,0x80,0xee,0x9f,0xfa,
-    0x52,0xa5,0xbe,0x93,0xf6,0x52,0x1d,0x80,0x1e,0xff,0x6b,0x6c,0x7f,0x19,
-    0xb8,0xb7,0x04,0x99,0x27,0x72,0x8e,0x34,0x6b,0xb7,0x21,0x20,0xdf,0x1b,
-    0x49,0x9f,0x94,0xa3,0xa0,0xa0,0x80,0x0d,0x1c,0x38,0x50,0xad,0xcc,0x05,
-    0xea,0x01,0x9e,0x3f,0x7f,0xae,0xb5,0xa1,0x37,0x0a,0x7a,0x84,0x36,0xe4,
-    0xfe,0x4f,0xc6,0x7c,0x28,0x81,0x18,0x8e,0x91,0x79,0x42,0x2b,0x42,0x31,
-    0xe7,0xa1,0x0f,0x85,0x85,0x85,0xbe,0x64,0x47,0xef,0x31,0x31,0x28,0xf6,
-    0xa8,0x0f,0x20,0xcd,0x5a,0xb9,0x72,0xa5,0x0a,0xfd,0x80,0x0f,0x6a,0x3d,
-    0xef,0xc5,0x50,0x1f,0xd5,0xa8,0xe1,0xdc,0x0e,0xb1,0xc9,0xf9,0x27,0x25,
-    0x25,0x05,0x1b,0xf2,0x21,0x03,0x39,0x16,0x2d,0xf3,0x44,0x8e,0x1c,0xc7,
-    0x9c,0x9b,0x3e,0x20,0x56,0xc2,0x45,0xae,0x53,0x2d,0x41,0x8e,0xf2,0x77,
-    0x2e,0xb4,0xea,0x3d,0xf2,0x32,0x4c,0x69,0xbb,0x66,0xcd,0x9a,0x34,0x51,
-    0x37,0xcb,0xcb,0xcb,0xb5,0x7d,0x32,0xfa,0xa9,0x04,0x43,0x3e,0x64,0xec,
-    0xdb,0xb7,0x2f,0x52,0xe6,0x09,0xfd,0x3d,0x86,0xb9,0x6d,0xfa,0xe0,0xec,
-    0xec,0x1c,0x4f,0x76,0x54,0x2b,0xa1,0x71,0xdc,0xaf,0x95,0x95,0xd5,0x1b,
-    0xf4,0xbe,0xbf,0x74,0x66,0x8f,0x33,0xe4,0xf6,0x78,0xbf,0xa9,0x6d,0x6d,
-    0x6d,0xb9,0x3d,0xde,0x79,0x67,0x0d,0xf9,0x90,0x01,0xad,0x8b,0x90,0x79,
-    0x42,0x53,0x49,0x5b,0x9d,0xf5,0x01,0xbd,0xf5,0x01,0x65,0x0c,0xe2,0xac,
-    0x1e,0xa0,0xd7,0xd9,0x65,0x68,0x0d,0x6a,0x60,0x24,0x7a,0xa7,0x66,0xb2,
-    0xef,0xdb,0xb7,0xef,0x2b,0x68,0xaa,0xbb,0x21,0x7b,0x19,0x78,0x07,0x84,
-    0x29,0x78,0xfe,0x4c,0x3f,0xbb,0xbb,0xbb,0x53,0x7c,0x3a,0x18,0x02,0xd6,
-    0xfd,0x8a,0x3e,0xf8,0xe6,0x92,0x25,0x4b,0x2e,0xbd,0x7e,0xfd,0xda,0xc9,
-    0x98,0x3d,0x01,0xba,0xbf,0x0d,0xf5,0x2f,0x10,0x79,0xe5,0x6c,0x8a,0xbd,
-    0x12,0x1b,0x37,0x6e,0x14,0xf1,0xe9,0x62,0xf6,0xe1,0xff,0x17,0xd9,0x9c,
-    0x39,0x73,0x48,0x87,0x37,0x7c,0x49,0x98,0x3a,0x75,0x6a,0xbe,0x86,0xe7,
-    0xd7,0x80,0x05,0xd0,0x84,0x7c,0x68,0xb8,0x7e,0xfd,0xba,0x0b,0xe6,0x7f,
-    0xfc,0x12,0xa0,0x52,0xa9,0xdc,0x10,0x33,0x8d,0xe0,0x46,0xbd,0x6c,0x37,
-    0xb3,0x0f,0xc3,0x93,0x78,0xe3,0xad,0xfb,0x04,0xfa,0xe3,0x08,0xbb,0xd5,
-    0x9f,0x13,0x78,0xef,0x3b,0x43,0xab,0x5f,0x68,0xce,0x72,0x9d,0x99,0xee,
-    0x88,0xd2,0xf4,0x65,0x4d,0x36,0x36,0x36,0xf1,0x67,0xcf,0x9e,0xdd,0x8e,
-    0x35,0xf6,0x9f,0x12,0xe8,0xd9,0x5c,0xad,0xad,0xad,0x93,0x51,0x13,0x9a,
-    0x35,0x1c,0x83,0xcc,0x3a,0x0e,0x3a,0x5b,0x67,0xe0,0xb5,0xc8,0x69,0xe8,
-    0x63,0xdb,0xd0,0xa1,0x43,0x6f,0x0f,0x1b,0x36,0xac,0xac,0x2b,0x41,0x3e,
-    0xc8,0x97,0x42,0x4f,0xe8,0x2c,0x37,0x75,0xc2,0x51,0x39,0x2c,0xcd,0x3e,
-    0xfc,0x1d,0x87,0xb4,0x9a,0x7a,0x79,0x9d,0x9a,0xd8,0x45,0xa0,0xbf,0xcb,
-    0x50,0xef,0x90,0x0a,0x78,0x01,0xe6,0x32,0xa9,0xff,0x00,0x99,0xf6,0xbe,
-    0x01
-};
-
-// titlealpha.png
-static const unsigned char image_12_data[] = {
-    0x00,0x00,0x00,0x78,0x78,0x9c,0xe3,0xe7,0xe7,0xaf,0x64,0x00,0x82,0xff,
-    0xff,0xff,0x87,0x02,0x71,0x08,0x10,0x7b,0x01,0xb1,0x33,0x10,0x5b,0x01,
-    0xb1,0x3e,0x10,0x6b,0x00,0xb1,0x02,0x10,0x4b,0x02,0x31,0x27,0x03,0x0e,
-    0x00,0x94,0x63,0x05,0x62,0x09,0x34,0x0c,0xd2,0xa7,0x07,0xc4,0x36,0x50,
-    0x73,0x23,0x3f,0x7c,0xf8,0x20,0xc3,0xcf,0xcf,0xcf,0x06,0x00,0x83,0xf5,
-    0x43,0x25
-};
-
-// window_background.png
-static const unsigned char image_13_data[] = {
-    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x98,0x69,0x4c,0x54,0x57,0x14,0xc7,
-    0x59,0x04,0xdc,0xe2,0xbe,0xf3,0xc1,0x15,0xfc,0x60,0x4c,0xda,0xc4,0x2f,
-    0x96,0x2a,0xa6,0xf1,0x8b,0x24,0x84,0x0f,0xd6,0xa4,0x8d,0x34,0x01,0xa4,
-    0x09,0x54,0x28,0x21,0x85,0x26,0x1a,0x36,0x6b,0xad,0x10,0x2c,0x8b,0x20,
-    0x8b,0xac,0xb2,0x14,0x90,0x1d,0x0a,0x08,0x6d,0xa1,0x92,0x40,0x8a,0x24,
-    0xb6,0x28,0x76,0x18,0x16,0x69,0x3b,0x5a,0x05,0x2d,0x1d,0xc5,0x51,0x96,
-    0x19,0x5e,0xff,0xe7,0x39,0xb7,0xb9,0xdc,0x62,0x99,0xf7,0xa6,0xb4,0xbd,
-    0xc9,0x2f,0x19,0xee,0x99,0x73,0xee,0x7f,0xde,0xbb,0xe7,0x9c,0x7b,0xb1,
-    0xb1,0x99,0x73,0x78,0x81,0x18,0x50,0x06,0x7e,0x00,0xbd,0x0b,0x0c,0xad,
-    0x51,0x02,0xa2,0x80,0xe7,0xdc,0x92,0x66,0x0d,0x77,0xd0,0x0d,0x24,0x86,
-    0x93,0x93,0x93,0x69,0xc5,0x8a,0x15,0xd3,0x0b,0x89,0xa3,0xa3,0xa3,0x89,
-    0x5f,0x13,0x74,0x80,0x37,0x5e,0xa1,0x31,0x88,0x7d,0xcf,0xc3,0xc3,0xe3,
-    0x49,0x7e,0x7e,0xbe,0x4e,0xab,0xd5,0xf6,0xcf,0xcc,0xcc,0xdc,0x91,0x24,
-    0x69,0x41,0xa1,0x35,0x34,0x1a,0xcd,0x40,0x5e,0x5e,0x9e,0xee,0xf0,0xe1,
-    0xc3,0x4f,0x39,0xbd,0x27,0x04,0x8d,0x1e,0xc0,0xb8,0x6c,0xd9,0x32,0x63,
-    0x5b,0x5b,0xdb,0xdd,0x85,0xd6,0x35,0x1f,0xcd,0xcd,0xcd,0xc3,0x8b,0x17,
-    0x2f,0x36,0xd9,0xda,0xda,0x4e,0x43,0xd7,0x5b,0x66,0x8d,0xf8,0xd3,0x76,
-    0x94,0x9e,0xbd,0xb5,0x1a,0x7b,0x7a,0x7a,0x06,0x83,0x83,0x83,0x1f,0x05,
-    0x04,0x04,0x3c,0x56,0xc2,0xc5,0x8b,0x17,0xef,0x8f,0x8c,0x8c,0xf4,0xf1,
-    0xb1,0x9a,0x9a,0x9a,0x86,0x17,0x2d,0x5a,0x34,0x03,0x6d,0x3a,0xb3,0xce,
-    0xd7,0xe8,0x19,0x1f,0x3d,0x7a,0x54,0xaf,0x56,0x1f,0xed,0x8f,0x3d,0x7b,
-    0xf6,0xbc,0x10,0xf6,0x98,0x22,0xec,0xed,0xed,0x25,0x6f,0x6f,0xef,0x31,
-    0x3e,0xee,0x91,0x23,0x47,0x9e,0x98,0xed,0x2e,0xe0,0x43,0xfa,0x4c,0xbf,
-    0x49,0x8d,0x46,0xa3,0xd1,0x78,0x67,0xe5,0xca,0x95,0xa6,0x55,0xab,0x56,
-    0x49,0x35,0x35,0x35,0xd2,0xf8,0xf8,0xb8,0xf4,0xfc,0xf9,0x73,0x45,0x74,
-    0x74,0x74,0x48,0x9e,0x9e,0x9e,0xb2,0xde,0xf0,0xf0,0xf0,0x51,0x16,0xfb,
-    0xfc,0xf9,0xf3,0x0f,0xb8,0x7d,0x1a,0x43,0x9f,0xeb,0xea,0xea,0xe8,0x9d,
-    0xdf,0x56,0x4a,0x76,0x76,0xf6,0x2f,0xe4,0x5f,0x5f,0x5f,0x2f,0x59,0x3b,
-    0x0e,0x1c,0x38,0x20,0x21,0xff,0x4d,0x2c,0x76,0x49,0x49,0xc9,0x4f,0x66,
-    0x9d,0x1f,0x33,0x9d,0xb5,0xb5,0xb5,0x03,0xc8,0xbb,0x9b,0x4a,0xf1,0xf5,
-    0xf5,0x1d,0x25,0x7f,0x83,0xc1,0x60,0xb5,0xce,0xb8,0xb8,0x38,0x09,0x79,
-    0x22,0xb1,0xd8,0xc5,0xc5,0xc5,0x43,0xa2,0xce,0xea,0xea,0xea,0x3e,0xd8,
-    0x6e,0x28,0xc5,0xc7,0xc7,0xe7,0x21,0xf9,0x4f,0x4e,0x4e,0x5a,0xad,0xf3,
-    0xc2,0x85,0x0b,0x4c,0xa7,0x1c,0xbb,0xa8,0xa8,0xa8,0x7f,0x0e,0x9d,0xb4,
-    0x27,0x3a,0x95,0x02,0x9d,0xbf,0x92,0x7f,0x61,0x61,0xa1,0x54,0x5a,0x5a,
-    0x6a,0x15,0xc7,0x8f,0x1f,0xa7,0xbe,0x22,0xb1,0xd8,0x88,0xa9,0x11,0x75,
-    0x56,0x55,0x55,0xdd,0x82,0xad,0x5d,0x29,0x91,0x91,0x91,0x43,0x76,0x76,
-    0x76,0xaa,0xf3,0x5c,0x04,0x35,0x7c,0x86,0xc5,0x2e,0x28,0x28,0xb8,0x23,
-    0xea,0xac,0xac,0xac,0xfc,0x1e,0xb6,0x56,0xa5,0xa4,0xa6,0xa6,0xca,0xb1,
-    0x28,0x6f,0xe9,0xdd,0x5b,0x03,0xbd,0x77,0xd4,0x8d,0x69,0x16,0xfb,0xca,
-    0x95,0x2b,0xb7,0x44,0x9d,0xe5,0xe5,0xe5,0xdd,0xb0,0x35,0x2b,0x25,0x25,
-    0x25,0xa5,0x87,0xfc,0xa7,0xa7,0xa7,0xad,0xde,0x9f,0x89,0x89,0x89,0x4c,
-    0xa7,0x1c,0x1b,0x7d,0xf4,0xa6,0xa8,0xf3,0xea,0xd5,0xab,0xdf,0xc1,0xd6,
-    0x20,0x32,0x31,0x31,0xd1,0x88,0xfa,0x70,0xe3,0xd0,0xa1,0x43,0x0f,0xdc,
-    0xdc,0xdc,0x46,0x44,0x5c,0x5c,0x5c,0xe4,0x5a,0xdc,0xda,0xda,0x2a,0x5d,
-    0xbf,0x7e,0x7d,0x16,0xc3,0xc3,0xc3,0x94,0x13,0x6a,0x74,0xca,0x6b,0xe7,
-    0xe6,0xe6,0x76,0x8b,0x3a,0xcb,0xca,0xca,0x3a,0x60,0xab,0xe5,0x49,0x4f,
-    0x4f,0xef,0xc6,0xde,0x9b,0x99,0x6f,0x4f,0xa1,0xb7,0xbd,0xd2,0xb6,0x61,
-    0xc3,0x06,0x09,0xfd,0x5a,0x89,0xce,0x29,0xb6,0x7e,0x4e,0x4e,0x4e,0x97,
-    0xa8,0x13,0xcf,0xac,0x1d,0xbf,0xbd,0x92,0xd1,0xd7,0xd7,0xd7,0xc8,0xd6,
-    0xda,0xb1,0x63,0x87,0x3e,0x24,0x24,0xe4,0x76,0x58,0x58,0xd8,0xad,0xb9,
-    0x40,0x8f,0xfe,0xd1,0xdf,0xdf,0x5f,0xc3,0xe3,0xe7,0xe7,0xa7,0xd9,0xb6,
-    0x6d,0x9b,0x9e,0xfc,0x29,0xcf,0x3a,0x3b,0x3b,0x2d,0xd2,0x89,0xde,0x36,
-    0xc5,0x34,0x5c,0xbe,0x7c,0xb9,0x53,0xd4,0x89,0x9a,0xda,0x86,0xaf,0x96,
-    0x32,0xf0,0x9e,0xe5,0x3e,0xb3,0x7f,0xff,0xfe,0xfb,0xfc,0xbc,0x52,0x46,
-    0x47,0x47,0x2b,0x48,0xa7,0x97,0x97,0x97,0xc5,0x3a,0x99,0x6f,0x66,0x66,
-    0x66,0xbb,0xa8,0x13,0x35,0xf5,0x6b,0xd8,0x8a,0x18,0x5b,0xb6,0x6c,0x91,
-    0xcf,0x81,0x2d,0x2d,0x2d,0x0d,0xfc,0xbc,0x1a,0x1c,0x1c,0x1c,0x8c,0xbb,
-    0x76,0xed,0x52,0xa2,0x53,0xf6,0xcb,0xc8,0xc8,0xf8,0x56,0xd4,0x89,0x9a,
-    0x4a,0x9b,0x28,0x9f,0xb1,0x79,0xf3,0x66,0x39,0x3f,0x70,0xd6,0xab,0xe1,
-    0xe7,0xd5,0x80,0x1e,0x63,0xdc,0xb9,0x73,0xa7,0xa5,0x3a,0x27,0x99,0x5f,
-    0x5a,0x5a,0xda,0x37,0xa2,0x4e,0xd4,0xaa,0x46,0xec,0x89,0x6c,0xc6,0xa6,
-    0x4d,0x9b,0x64,0x9d,0xa8,0xe3,0x54,0x6f,0x1b,0xac,0x01,0xe7,0x48,0x93,
-    0xa5,0x3a,0x71,0x0e,0x99,0x64,0x1a,0x50,0x9b,0x5b,0x44,0x9d,0xa8,0x55,
-    0x75,0xf8,0x6a,0x3a,0x63,0xeb,0xd6,0xad,0x8f,0xfe,0xa9,0x1e,0x43,0x58,
-    0xa2,0x33,0x3a,0x3a,0x5a,0x5a,0xbf,0x7e,0xbd,0x81,0x69,0x40,0x6d,0x6e,
-    0x12,0x75,0xa2,0x56,0x55,0xc3,0x96,0xc2,0xd8,0xbd,0x7b,0xf7,0x7d,0x36,
-    0xdf,0xdb,0xdb,0x9b,0x6b,0x0d,0x4b,0x97,0x2e,0x9d,0x98,0x4f,0x27,0xf2,
-    0x4d,0xc2,0x5e,0x33,0x1d,0x3c,0x78,0x50,0xcb,0x34,0x24,0x27,0x27,0x7f,
-    0x29,0xea,0xc4,0x39,0xb2,0x82,0x1e,0x3d,0x03,0x3a,0xef,0x99,0xf3,0xa8,
-    0x80,0x9f,0x57,0x03,0x7a,0xf6,0x8b,0x35,0x6b,0xd6,0x48,0x67,0xcf,0x9e,
-    0x9d,0x93,0x63,0xc7,0x8e,0x49,0xc8,0x35,0x69,0xf5,0xea,0xd5,0x86,0xc1,
-    0xc1,0xc1,0x0c,0xe6,0x87,0x51,0x2b,0xea,0xcc,0xca,0xca,0x2a,0x83,0x2d,
-    0x9e,0xe1,0xea,0xea,0x4a,0xf7,0x12,0xaa,0xd1,0x79,0xfc,0xbc,0x1a,0xa0,
-    0xf1,0x09,0x9d,0xd7,0xd6,0xad,0x5b,0xf7,0x0c,0xef,0x55,0x64,0x1c,0x3d,
-    0xed,0x1e,0xea,0x56,0xf7,0xd8,0xd8,0x58,0x22,0xef,0x97,0x90,0x90,0x50,
-    0x25,0xea,0x44,0x0d,0xf8,0x02,0xb6,0xcf,0x18,0xf0,0x95,0xeb,0x27,0xee,
-    0x53,0x59,0xfc,0xbc,0x1a,0xd0,0x93,0x1e,0x53,0xac,0xa1,0xa1,0xa1,0x44,
-    0x25,0x7e,0xf1,0xf1,0xf1,0xe5,0xa2,0x4e,0xd4,0x80,0x42,0xd8,0x3e,0x61,
-    0xa0,0xde,0xfd,0x4c,0xf3,0x0d,0x0d,0x0d,0xe9,0xfc,0xbc,0x1a,0x98,0x4e,
-    0xbc,0xd3,0x78,0x25,0x7e,0x38,0xdf,0x97,0x8a,0x3a,0x2f,0x5d,0xba,0x44,
-    0x35,0x2b,0x8a,0x81,0x7d,0x3f,0x6c,0xf3,0xf2,0xde,0x93,0xca,0xcf,0xab,
-    0x01,0xef,0x56,0xae,0x1d,0x03,0x03,0x03,0xb1,0x4a,0xfc,0x70,0x8f,0x2b,
-    0x16,0x75,0xe2,0xbe,0x99,0x03,0xdb,0x69,0x06,0x7a,0xba,0xac,0x13,0xf7,
-    0xbb,0x64,0x7e,0x5e,0x0d,0xd8,0x97,0xb2,0xce,0xfe,0xfe,0xfe,0x4f,0x95,
-    0xf8,0x9d,0x3b,0x77,0xae,0x40,0xd4,0x99,0x94,0x94,0x94,0x09,0x5b,0x38,
-    0x63,0xfb,0xf6,0xed,0x77,0x69,0x1e,0x77,0xdd,0xcf,0xf9,0x79,0x35,0x40,
-    0xa7,0x7c,0xd7,0xc3,0xd9,0x26,0x5a,0x89,0x1f,0x6a,0x41,0x9e,0xa8,0x13,
-    0xb9,0x95,0x06,0x5b,0x28,0x03,0x75,0x5e,0xbe,0xeb,0xe1,0x3e,0x12,0xc7,
-    0xcf,0xab,0x61,0xed,0xda,0xb5,0x23,0x14,0x4b,0xa3,0xd1,0x44,0x28,0xf1,
-    0x8b,0x89,0x89,0xc9,0x16,0x75,0x22,0xb7,0xa8,0xb6,0x06,0x33,0xb0,0x3f,
-    0xe5,0x3b,0x14,0x7a,0x57,0x12,0x3f,0xaf,0x06,0xf4,0xc2,0x31,0x8a,0xa5,
-    0xd3,0xe9,0xc2,0x94,0xf8,0x45,0x45,0x45,0x65,0x8a,0x3a,0x91,0x5b,0xa4,
-    0x27,0x90,0x81,0xda,0x5b,0x41,0xf3,0x1b,0x37,0x6e,0xd4,0x4d,0x4d,0x4d,
-    0x7d,0xc0,0xdb,0x94,0x10,0x1b,0x1b,0x9b,0x4c,0x71,0x70,0x8f,0x34,0x28,
-    0xf5,0x8d,0x88,0x88,0x48,0x17,0x75,0x22,0xb7,0x68,0x1f,0xbe,0xcf,0xd0,
-    0xeb,0xf5,0x81,0xe8,0x77,0xf2,0x59,0x04,0xe7,0x88,0x29,0xf4,0xb4,0x21,
-    0x67,0x67,0xe7,0x41,0x25,0x2c,0x59,0xb2,0xe4,0xcf,0xff,0x11,0x86,0x86,
-    0x86,0x66,0xf0,0xf1,0x2d,0xe1,0xd4,0xa9,0x53,0xa9,0x9c,0x4e,0x42,0x0a,
-    0x0a,0x0a,0xa2,0xfd,0xe9,0xc3,0xa3,0xd5,0x6a,0x03,0xa1,0x6f,0x00,0xf7,
-    0x0a,0xf1,0xff,0xa8,0x16,0x83,0xe7,0xf8,0xec,0xcc,0x99,0x33,0xf1,0x62,
-    0x6c,0x4b,0xf0,0xf5,0xf5,0xcd,0x31,0xc7,0x39,0x09,0xde,0xa4,0xcf,0xfb,
-    0xf6,0xed,0xfb,0x0a,0x36,0xef,0x57,0x81,0xbc,0xff,0x08,0x77,0xbd,0x70,
-    0x4b,0xa9,0xa8,0xa8,0x08,0xc3,0x1d,0xf4,0xbd,0xbf,0x8b,0x39,0x1f,0x7b,
-    0xf7,0xee,0x65,0xe7,0xf9,0xd7,0x81,0x03,0x30,0xe0,0x77,0x3f,0x6d,0x6f,
-    0x6f,0x0f,0x80,0xfd,0x9d,0xff,0x03,0xd7,0xae,0x5d,0x0b,0xc2,0xd9,0xc4,
-    0x00,0x6d,0xbf,0x03,0x3b,0x9b,0x97,0x23,0x84,0x74,0x2f,0x5f,0xbe,0xfc,
-    0x61,0x57,0x57,0x97,0x1f,0xbe,0xf7,0xf6,0x7f,0x09,0xee,0xd4,0xfe,0xc8,
-    0x0d,0x76,0xfe,0x7d,0xd7,0x66,0xf6,0xc8,0x34,0xe7,0xcc,0x0b,0x77,0x77,
-    0xf7,0x22,0x9c,0x9b,0x4f,0xc2,0xc7,0xeb,0xdf,0x04,0x67,0xdd,0x93,0x6e,
-    0x6e,0x6e,0xa5,0xf6,0xf6,0xf6,0x13,0x66,0x8d,0x09,0x36,0x7f,0x1d,0xb6,
-    0xc0,0x1f,0xe8,0x59,0x0e,0x20,0x7f,0x8c,0x38,0x43,0xdc,0x46,0x6d,0xea,
-    0x59,0x48,0x68,0x0d,0x5a,0x8b,0xcb,0xbf,0xdf,0x80,0xcf,0x1c,0x1a,0xf9,
-    0xe1,0x04,0x22,0x41,0x0d,0xd0,0x02,0xd5,0xb9,0xae,0x00,0x5a,0x83,0xfa,
-    0x0a,0x9d,0x37,0x4f,0x03,0x47,0x51,0xd4,0x1f,0xb7,0x84,0x65,0x15
-};
-
-// window_foreground.png
-static const unsigned char image_14_data[] = {
-    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x7b,0x4c,0x14,0x57,0x14,0x87,
-    0x57,0x79,0xfa,0x42,0xb0,0x44,0xaa,0x86,0x10,0x9b,0xe8,0x1f,0xbc,0x82,
-    0x8a,0x1a,0x8d,0x12,0x89,0x8f,0xf8,0x88,0x02,0x11,0x48,0x37,0xa1,0x29,
-    0x49,0x41,0x45,0x8b,0xb4,0x49,0x49,0x84,0x18,0x22,0xb4,0x68,0x68,0x8b,
-    0x08,0x08,0x08,0x05,0x44,0xd0,0x96,0x05,0x5a,0xd2,0xa6,0x40,0x5a,0x1a,
-    0x2a,0xe5,0x4d,0x8b,0xa5,0x82,0x40,0x8b,0x62,0xd1,0xb2,0x05,0x59,0x44,
-    0x60,0xd9,0x45,0xf6,0x31,0xfd,0xdd,0x75,0xee,0xf6,0x76,0x45,0xca,0xce,
-    0x2e,0xad,0x93,0x7c,0x31,0x9c,0xd9,0x39,0xf3,0x39,0x73,0xef,0xb9,0xe7,
-    0x8e,0x48,0xf4,0xdc,0xf1,0x1a,0x08,0x07,0xd9,0xe0,0x47,0xd0,0x39,0xcf,
-    0x74,0x80,0x2a,0x70,0x11,0xbc,0x01,0x2c,0x9f,0x57,0xd2,0x1f,0x4e,0x20,
-    0x13,0xa8,0x00,0x47,0xb1,0xb3,0xb3,0x53,0xcd,0x37,0xec,0xfd,0x16,0x2c,
-    0x58,0x30,0x8c,0x7f,0xa3,0x80,0xb5,0x81,0x9f,0x33,0xce,0xc9,0xc8,0x6f,
-    0x1c,0x1d,0x1d,0x55,0x69,0x69,0x69,0x03,0xcd,0xcd,0xcd,0xf7,0x54,0x2a,
-    0x55,0x17,0xc7,0x71,0x77,0xe6,0x1b,0xa5,0x52,0xd9,0x55,0x5d,0x5d,0x7d,
-    0xff,0xdc,0xb9,0x73,0x83,0x36,0x36,0x36,0x1a,0xde,0xb7,0x01,0x58,0xf1,
-    0x7e,0xf6,0xf0,0xeb,0x26,0xf1,0xd8,0xd8,0xd8,0x21,0xb5,0x5a,0x3d,0xef,
-    0x4e,0xb3,0x31,0x31,0x31,0xd1,0xbd,0x6b,0xd7,0xae,0x09,0xde,0x33,0x8f,
-    0x77,0x4c,0x22,0x7f,0x87,0x85,0x85,0x8d,0x98,0x92,0x5b,0x2a,0x95,0xf6,
-    0x24,0x27,0x27,0x4b,0x8f,0x1d,0x3b,0x26,0x0b,0x0f,0x0f,0x9f,0x33,0xa7,
-    0x4e,0x9d,0x92,0xb5,0xb7,0xb7,0xdf,0x65,0x73,0x8d,0x8d,0x8d,0x75,0xbb,
-    0xba,0xba,0x2a,0x79,0x4f,0x5f,0x70,0xcb,0xca,0xca,0x4a,0x23,0x97,0xcb,
-    0xbb,0x85,0xfa,0x89,0xc5,0xe2,0x51,0x0b,0x0b,0x0b,0xfd,0x98,0x12,0x82,
-    0xbb,0xbb,0xbb,0xb2,0xb7,0xb7,0xf7,0x37,0x9a,0x53,0x22,0x91,0xf4,0xf3,
-    0xe7,0xce,0x03,0xed,0xe6,0xcd,0x9b,0x27,0x85,0xfa,0x45,0x45,0x45,0x91,
-    0x31,0xce,0x05,0x04,0x04,0x70,0x8d,0x8d,0x8d,0x9c,0x42,0xa1,0xe0,0x30,
-    0xbe,0xe6,0x0c,0xde,0x2d,0x57,0x5e,0x5e,0x4e,0xe6,0x26,0xe7,0xe0,0xe0,
-    0xa0,0xd6,0x68,0x34,0xba,0xbc,0x23,0x23,0x23,0xdd,0x0b,0x17,0x2e,0xd4,
-    0x22,0x77,0x1d,0x9f,0x7f,0x14,0xf1,0x0e,0x21,0x2c,0x5b,0xb6,0x4c,0xb3,
-    0x7b,0xf7,0x6e,0xce,0xd4,0xa3,0xac,0xac,0x4c,0xf7,0x3c,0x4b,0x4a,0x4a,
-    0x7e,0xa7,0xb9,0x97,0x2f,0x5f,0x4e,0xe6,0x7c,0x17,0x89,0xfb,0xf9,0xf9,
-    0x8d,0x68,0xb5,0xda,0x5b,0x42,0xc0,0x38,0xe1,0x2e,0x5d,0xba,0x64,0xb2,
-    0xe3,0xe3,0xc7,0x8f,0x75,0x8e,0x27,0x4f,0x9e,0x1c,0xa4,0xb9,0x59,0xc7,
-    0x23,0x47,0x8e,0xc8,0x10,0x6b,0x15,0x82,0xa5,0xa5,0x25,0x77,0xf9,0xf2,
-    0x65,0x93,0x1d,0x31,0x4f,0x74,0x8e,0x11,0x11,0x11,0x52,0x9a,0x1b,0x8e,
-    0xd3,0x8c,0xe3,0x23,0xfc,0xac,0x51,0x08,0xe4,0x39,0x86,0x86,0x86,0x72,
-    0xc5,0xc5,0xc5,0x26,0x91,0x9f,0x9f,0x4f,0x1d,0xff,0xa0,0xb9,0x31,0x46,
-    0xf5,0x8e,0x87,0x0f,0x1f,0x1e,0x42,0xec,0x07,0x21,0x2c,0x5a,0xb4,0x48,
-    0x6b,0xca,0x7c,0x66,0xc1,0x1c,0xe1,0x12,0x13,0x13,0x7b,0x69,0x6e,0xd6,
-    0xf1,0xd0,0xa1,0x43,0x83,0x88,0xd5,0x08,0x61,0xe9,0xd2,0xa5,0x6a,0xac,
-    0x4b,0xdc,0xf4,0xf4,0xb4,0x49,0x3c,0x79,0xf2,0x44,0xe7,0x99,0x9b,0x9b,
-    0xdb,0x41,0x73,0xb3,0x8e,0x07,0x0f,0x1e,0x94,0x22,0xf6,0x8d,0x10,0x96,
-    0x2c,0x59,0xa2,0xce,0xc8,0xc8,0x30,0x79,0x3c,0x4e,0x4e,0x4e,0xea,0x1c,
-    0x73,0x72,0x72,0x7e,0xa6,0xb9,0x51,0x33,0x9e,0x52,0xc7,0x03,0x07,0x0e,
-    0x90,0x31,0x50,0x31,0x13,0x53,0x53,0x53,0x95,0x85,0x85,0x85,0xad,0x67,
-    0xce,0x9c,0xb9,0x33,0x13,0xb6,0xb6,0xb6,0x1a,0x73,0x3a,0x66,0x67,0x67,
-    0xb7,0xd1,0x7b,0xb3,0x8e,0xfb,0xf7,0xef,0x7f,0x88,0xd8,0x97,0x86,0x04,
-    0x07,0x07,0xf7,0x61,0x2d,0x9f,0x75,0x0c,0x91,0x79,0x6d,0x4e,0xc7,0xac,
-    0xac,0xac,0x56,0x7a,0x7f,0xd6,0x71,0xdf,0xbe,0x7d,0xfd,0x98,0xeb,0x9f,
-    0xb3,0xf8,0xfb,0xfb,0xf7,0x91,0x73,0xf6,0xf6,0xf6,0xca,0xe3,0xc7,0x8f,
-    0x77,0x55,0x56,0x56,0xd6,0x54,0x55,0x55,0x3d,0x07,0xe6,0x8c,0x59,0xdf,
-    0x75,0x66,0x66,0x66,0x13,0x75,0x80,0xe3,0x14,0x75,0xdc,0xbb,0x77,0x2f,
-    0xa9,0xed,0xc5,0x2c,0x78,0x3e,0x9a,0x55,0xab,0x56,0x4d,0x18,0xc6,0x0d,
-    0xc1,0x78,0x54,0x99,0xd3,0x11,0xb5,0xb6,0x9e,0xe6,0xc6,0x7c,0xd4,0x3b,
-    0xee,0xd9,0xb3,0xa7,0x0f,0xb1,0xeb,0x14,0xac,0x95,0xc5,0xfc,0x1a,0xf9,
-    0x2b,0x1b,0x9f,0x09,0x73,0x3b,0xa6,0xa7,0xa7,0xd7,0xd2,0xdc,0xac,0x23,
-    0xd6,0xdb,0x7b,0x88,0x15,0x50,0x86,0x86,0x86,0x6e,0x90,0x78,0x50,0x50,
-    0xd0,0x1d,0x36,0x3e,0x13,0xe6,0x76,0x4c,0x4d,0x4d,0xfd,0x9e,0xe6,0x86,
-    0xa3,0x92,0x3a,0xfa,0xfa,0xfa,0xf6,0xe2,0xfd,0xe7,0x52,0x86,0x87,0x87,
-    0xaf,0x91,0xf8,0xf6,0xed,0xdb,0xef,0x63,0x4e,0x57,0xcc,0x86,0xb9,0xc7,
-    0x63,0x4a,0x4a,0xca,0x77,0xd4,0x03,0xff,0x7f,0xbd,0x23,0xfa,0x5e,0xf2,
-    0x4e,0xb3,0x28,0xa8,0xa7,0x9f,0xcc,0x75,0x6d,0x20,0x6b,0x21,0xd6,0x06,
-    0x93,0x1d,0x07,0x06,0x06,0x68,0xed,0xa9,0xa0,0x1e,0xac,0xa3,0x8f,0x8f,
-    0x4f,0x0f,0x62,0xe9,0x14,0xf4,0x74,0x64,0xef,0xc5,0x45,0x47,0x47,0xd7,
-    0x74,0x76,0x76,0xe6,0xcf,0xc6,0xc6,0x8d,0x1b,0xef,0xaf,0x59,0xb3,0x46,
-    0x2b,0x93,0xc9,0x4c,0x72,0x3c,0x7d,0xfa,0x34,0x87,0x3e,0x59,0xfb,0xe0,
-    0xc1,0x83,0x1c,0xea,0x01,0x47,0x05,0x75,0xdc,0xb9,0x73,0x27,0xe9,0xc1,
-    0x53,0x28,0x70,0x4c,0x23,0xf1,0x0b,0x17,0x2e,0x7c,0xcd,0xc6,0x67,0xa2,
-    0xa7,0xa7,0x27,0x1b,0xf5,0x49,0x41,0x9e,0xe7,0xd1,0xa3,0x47,0xb9,0xf8,
-    0xf8,0x78,0xa3,0x88,0x8b,0x8b,0xe3,0x3c,0x3c,0x3c,0xb4,0xa4,0x0e,0xc7,
-    0xc4,0xc4,0x7c,0xcb,0xe6,0x66,0x1d,0x77,0xec,0xd8,0x41,0xe6,0xc6,0x47,
-    0x94,0xf1,0xf1,0x71,0xb2,0xd7,0x25,0xef,0xf0,0x2b,0x36,0xfe,0x22,0xd0,
-    0xfb,0xa5,0xa0,0x07,0x6d,0x5d,0xbf,0x7e,0xfd,0x43,0x27,0x27,0xa7,0xf1,
-    0x95,0x2b,0x57,0xea,0xc1,0x3e,0x53,0x6e,0x6d,0x6d,0xcd,0xad,0x58,0xb1,
-    0x62,0x92,0x8d,0x53,0x50,0xdf,0xc6,0x30,0xd6,0x3a,0xda,0xda,0xda,0xb2,
-    0x0d,0xf3,0x2e,0x5e,0xbc,0x58,0xef,0x88,0xb9,0x41,0xd6,0xf1,0xf3,0x14,
-    0x38,0xea,0xf6,0x61,0x09,0x09,0x09,0x5f,0xb0,0x71,0x21,0xb4,0xb4,0xb4,
-    0x64,0x90,0x5c,0x05,0x05,0x05,0x45,0xc6,0x5e,0xcb,0x3a,0x6e,0xdb,0xb6,
-    0xed,0x36,0x62,0x09,0x14,0xf4,0x9b,0x89,0x24,0x8e,0xfd,0x6e,0x19,0x1b,
-    0x17,0x42,0x53,0x53,0x53,0x2a,0xc9,0x85,0xfe,0xb0,0xc0,0xd8,0x6b,0xe1,
-    0x38,0x49,0x1d,0xb7,0x6e,0xdd,0xda,0x8e,0x58,0x1c,0x05,0x8e,0x09,0x24,
-    0x8e,0xb1,0x22,0x61,0xe3,0x42,0xc0,0x3e,0xec,0x22,0xdf,0x73,0xe5,0x19,
-    0x7b,0x2d,0xea,0x9a,0xde,0x71,0xcb,0x96,0x2d,0xa4,0x1f,0x8a,0xa5,0xa0,
-    0xf6,0xc4,0x91,0xf8,0xd9,0xb3,0x67,0x3f,0x65,0xe3,0x42,0x68,0x68,0x68,
-    0xf8,0x90,0xef,0xb9,0x72,0x8c,0xbd,0x96,0x75,0xf4,0xf6,0xf6,0x26,0xfd,
-    0x50,0x34,0x05,0x8e,0x31,0xa2,0x67,0xdf,0x2d,0x8a,0xd8,0xb8,0x10,0xea,
-    0xea,0xea,0xc8,0xfe,0x98,0xbb,0x72,0xe5,0x4a,0xa6,0xb1,0xd7,0xc2,0x51,
-    0x4e,0x1d,0x37,0x6d,0xda,0xf4,0x13,0x62,0xef,0x52,0xe0,0x18,0x4d,0xe2,
-    0xe8,0x0f,0x0b,0xd8,0xb8,0x10,0x6a,0x6b,0x6b,0xdf,0xe7,0xfb,0x99,0x74,
-    0x63,0xaf,0x45,0x6f,0xaa,0x77,0xdc,0xb0,0x61,0x03,0xe9,0xd9,0x22,0x29,
-    0xd8,0xc7,0x47,0xa1,0x5e,0x69,0x4f,0x9c,0x38,0x71,0x83,0x8d,0x0b,0xa1,
-    0xb4,0xb4,0x54,0xf7,0x1c,0xf3,0xf2,0xf2,0x3e,0x36,0xf6,0x5a,0xd6,0xd1,
-    0xcb,0xcb,0xab,0x05,0xb1,0x08,0x16,0xac,0x1d,0x7d,0xa8,0x75,0xfd,0xa8,
-    0x43,0x6f,0x1b,0x9e,0x33,0x06,0xd4,0xb5,0x9b,0xe8,0xf3,0x9e,0x0a,0xc9,
-    0x03,0xc7,0x09,0xea,0xe8,0xe9,0xe9,0xd9,0x84,0x58,0x38,0x4b,0x51,0x51,
-    0x51,0x3c,0xc9,0x8d,0xfa,0xab,0xc0,0xbc,0xbf,0x19,0x12,0x12,0x72,0xdd,
-    0x18,0xc4,0x62,0xf1,0x67,0xab,0x57,0xaf,0xbe,0x2b,0x7a,0xf6,0xbd,0xeb,
-    0xaa,0x61,0xfe,0xb9,0xc0,0x3a,0xae,0x5d,0xbb,0x96,0xd4,0xc7,0x50,0x43,
-    0xea,0xeb,0xeb,0xdf,0x71,0x73,0x73,0x6b,0xc2,0x5e,0x7c,0x10,0x6b,0x9d,
-    0xd2,0x18,0x6c,0x6c,0x6c,0xe4,0xeb,0xd6,0xad,0xbb,0x25,0x91,0x48,0x62,
-    0x67,0xca,0xfd,0x6f,0x8c,0x8e,0x8e,0x86,0x61,0x2f,0x4b,0xbe,0x53,0x90,
-    0x6f,0xc9,0xbd,0xc8,0xa9,0x90,0xcb,0xe5,0x6f,0xe2,0x5c,0xc8,0xcb,0x02,
-    0xd6,0xe1,0x0f,0xf8,0xde,0x8a,0xf4,0x0e,0xe4,0xbb,0x37,0x17,0x18,0x18,
-    0x48,0x6a,0xec,0xeb,0x2f,0x03,0xd8,0x6f,0x8b,0x9d,0x9d,0x9d,0x6f,0xf3,
-    0x8e,0xfe,0xc0,0x05,0x8c,0x62,0x1e,0xab,0xd1,0x77,0xc4,0xe3,0x37,0x81,
-    0xff,0x27,0x1a,0x8d,0x26,0x08,0xb5,0xb0,0x82,0xf7,0x6b,0x11,0xfd,0xfd,
-    0xbd,0xd9,0x07,0x90,0x7d,0x22,0xe7,0xe2,0xe2,0xd2,0x9c,0x94,0x94,0xf4,
-    0x9e,0x5a,0xad,0xf6,0xc7,0x35,0x7e,0xff,0x15,0xd8,0xc7,0xfb,0x47,0x46,
-    0x46,0x26,0x60,0x7f,0x20,0xe5,0xfd,0xc8,0x7c,0x7b,0x45,0xf4,0xcf,0xc3,
-    0x1b,0xd0,0xe7,0x4b,0xd0,0xda,0xd9,0xd9,0xf5,0xa3,0xfe,0xfc,0x32,0xcf,
-    0xdc,0x46,0xef,0xf0,0x88,0xb9,0x2f,0xf9,0x66,0x7f,0x15,0xbc,0x2a,0x7a,
-    0xf1,0xf1,0x16,0xc8,0xe0,0x9f,0xf3,0xd3,0xb9,0xee,0x19,0x4c,0xe4,0x4f,
-    0x50,0x03,0x92,0x81,0xa3,0xa1,0xd0,0x5f,0x5b,0xa8,0xfc,0xc8
-};
-
-static struct EmbedImage {
-    int width, height, depth;
-    const unsigned char *data;
-    ulong compressed;
-    int numColors;
-    const TQRgb *colorTable;
-    bool alpha;
-    const char *name;
-} embed_image_vec[] = {
-    { 41, 41, 32, (const unsigned char*)image_0_data, 1781, 0, 0, TRUE, "circle.png" },
-    { 41, 41, 32, (const unsigned char*)image_1_data, 1724, 0, 0, TRUE, "close.png" },
-    { 41, 41, 32, (const unsigned char*)image_2_data, 1555, 0, 0, TRUE, "help.png" },
-    { 42, 41, 32, (const unsigned char*)image_3_data, 1879, 0, 0, TRUE, "keep_above_lit.png" },
-    { 41, 41, 32, (const unsigned char*)image_4_data, 1734, 0, 0, TRUE, "keep_above.png" },
-    { 41, 41, 32, (const unsigned char*)image_5_data, 1750, 0, 0, TRUE, "keep_below_lit.png" },
-    { 41, 41, 32, (const unsigned char*)image_6_data, 1848, 0, 0, TRUE, "keep_below.png" },
-    { 42, 41, 32, (const unsigned char*)image_7_data, 1343, 0, 0, TRUE, "maximize.png" },
-    { 42, 41, 32, (const unsigned char*)image_8_data, 1141, 0, 0, TRUE, "minimize.png" },
-    { 41, 41, 32, (const unsigned char*)image_9_data, 1529, 0, 0, TRUE, "restore.png" },
-    { 45, 45, 32, (const unsigned char*)image_10_data, 885, 0, 0, TRUE, "shade.png" },
-    { 42, 41, 32, (const unsigned char*)image_11_data, 2017, 0, 0, TRUE, "splat.png" },
-    { 1, 30, 32, (const unsigned char*)image_12_data, 72, 0, 0, TRUE, "titlealpha.png" },
-    { 42, 41, 32, (const unsigned char*)image_13_data, 1609, 0, 0, TRUE, "window_background.png" },
-    { 41, 41, 32, (const unsigned char*)image_14_data, 1566, 0, 0, TRUE, "window_foreground.png" },
-    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
-};
-
-static TQImage uic_findImage( const TQString& name )
-{
-    for ( int i=0; embed_image_vec[i].data; i++ ) {
-	if ( TQString::fromUtf8(embed_image_vec[i].name) == name ) {
-	    TQByteArray baunzip;
-	    baunzip = tqUncompress( embed_image_vec[i].data, 
-		embed_image_vec[i].compressed );
-	    TQImage img((uchar*)baunzip.data(),
-			embed_image_vec[i].width,
-			embed_image_vec[i].height,
-			embed_image_vec[i].depth,
-			(TQRgb*)embed_image_vec[i].colorTable,
-			embed_image_vec[i].numColors,
-			TQImage::BigEndian
-		);
-	    img = img.copy();
-	    if ( embed_image_vec[i].alpha )
-		img.setAlphaBuffer(TRUE);
-	    return img;
-        }
-    }
-    return TQImage();
-}
-
-class MimeSourceFactory_smoothblend : public TQMimeSourceFactory
-{
-public:
-    MimeSourceFactory_smoothblend() {}
-    ~MimeSourceFactory_smoothblend() {}
-    const TQMimeSource* data( const TQString& abs_name ) const {
-	const TQMimeSource* d = TQMimeSourceFactory::data( abs_name );
-	if ( d || abs_name.isNull() ) return d;
-	TQImage img = uic_findImage( abs_name );
-	if ( !img.isNull() )
-	    ((TQMimeSourceFactory*)this)->setImage( abs_name, img );
-	return TQMimeSourceFactory::data( abs_name );
-    };
-};
-
-static TQMimeSourceFactory* bfactory = 0;
-
-void qInitImages_smoothblend()
-{
-    if ( !bfactory ) {
-	bfactory = new MimeSourceFactory_smoothblend;
-	TQMimeSourceFactory::defaultFactory()->addFactory( bfactory );
-    }
-}
-
-void qCleanupImages_smoothblend()
-{
-    if ( bfactory ) {
-	TQMimeSourceFactory::defaultFactory()->removeFactory( bfactory );
-	delete bfactory;
-	bfactory = 0;
-    }
-}
-
-class StaticInitImages_smoothblend
-{
-public:
-    StaticInitImages_smoothblend() { qInitImages_smoothblend(); }
-#if defined(Q_OS_SCO) || defined(Q_OS_UNIXWARE)
-    ~StaticInitImages_smoothblend() { }
-#else
-    ~StaticInitImages_smoothblend() { qCleanupImages_smoothblend(); }
-#endif
-};
-
-static StaticInitImages_smoothblend staticImages;
diff --git a/kwin-styles/smooth-blend/client/config/CMakeLists.txt b/kwin-styles/smooth-blend/client/config/CMakeLists.txt
deleted file mode 100644
index 7a38efbb..00000000
--- a/kwin-styles/smooth-blend/client/config/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-add_definitions(
-  -DQT_PLUGIN
-)
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### twin_smoothblend_config (module) ##########
-
-tde_add_kpart( twin_smoothblend_config AUTOMOC
-  SOURCES configdialog.ui smoothblendconfig.cc
-  LINK tdeui-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/smooth-blend/client/config/Makefile.am b/kwin-styles/smooth-blend/client/config/Makefile.am
deleted file mode 100644
index ba5cd314..00000000
--- a/kwin-styles/smooth-blend/client/config/Makefile.am
+++ /dev/null
@@ -1,15 +0,0 @@
-AUTOMAKE_OPTIONS = foreign
-
-KDE_CXXFLAGS = -DQT_PLUGIN
-
-INCLUDES = $(all_includes)
-
-noinst_HEADERS = smoothblendconfig.h
-
-kde_module_LTLIBRARIES = twin_smoothblend_config.la
-twin_smoothblend_config_la_SOURCES = configdialog.ui smoothblendconfig.cc
-twin_smoothblend_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-twin_smoothblend_config_la_LIBADD = $(LIB_TDEUI)
-twin_smoothblend_config_la_METASOURCES = AUTO
-
-DISTCLEANFILES = $(twin_smoothblend_config_la_METASOURCES)
diff --git a/kwin-styles/smooth-blend/client/config/configdialog.ui b/kwin-styles/smooth-blend/client/config/configdialog.ui
deleted file mode 100644
index 09af45f6..00000000
--- a/kwin-styles/smooth-blend/client/config/configdialog.ui
+++ /dev/null
@@ -1,421 +0,0 @@
-<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
-<class>ConfigDialog</class>
-<widget class="TQWidget">
-    <property name="name">
-        <cstring>ConfigDialog</cstring>
-    </property>
-    <property name="geometry">
-        <rect>
-            <x>0</x>
-            <y>0</y>
-            <width>634</width>
-            <height>371</height>
-        </rect>
-    </property>
-    <property name="sizePolicy">
-        <sizepolicy>
-            <hsizetype>5</hsizetype>
-            <vsizetype>5</vsizetype>
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-        </sizepolicy>
-    </property>
-    <property name="caption">
-        <string>Config Dialog</string>
-    </property>
-    <grid>
-        <property name="name">
-            <cstring>unnamed</cstring>
-        </property>
-        <property name="margin">
-            <number>0</number>
-        </property>
-        <widget class="TQGroupBox" row="1" column="0">
-            <property name="name">
-                <cstring>buttongroup</cstring>
-            </property>
-            <property name="title">
-                <string>Buttons</string>
-            </property>
-            <grid>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="TQSpinBox" row="0" column="2" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>buttonsize</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>7</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="suffix">
-                        <string> pixels</string>
-                    </property>
-                    <property name="specialValueText">
-                        <string>1 pixel</string>
-                    </property>
-                    <property name="buttonSymbols">
-                        <enum>UpDownArrows</enum>
-                    </property>
-                    <property name="maxValue">
-                        <number>64</number>
-                    </property>
-                    <property name="minValue">
-                        <number>1</number>
-                    </property>
-                    <property name="value">
-                        <number>16</number>
-                    </property>
-                </widget>
-                <widget class="TQCheckBox" row="1" column="0" rowspan="1" colspan="4">
-                    <property name="name">
-                        <cstring>animatebuttons</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="text">
-                        <string>Animate buttons</string>
-                    </property>
-                    <property name="accel">
-                        <string></string>
-                    </property>
-                    <property name="checked">
-                        <bool>true</bool>
-                    </property>
-                    <property name="whatsThis" stdset="0">
-                        <string>Check this option if you want to use button animations when hovering with the mouse.</string>
-                    </property>
-                </widget>
-                <widget class="TQLabel" row="0" column="0" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>textLabel4</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Button size:</string>
-                    </property>
-                </widget>
-                <widget class="TQCheckBox" row="3" column="0" rowspan="1" colspan="4">
-                    <property name="name">
-                        <cstring>menuClose</cstring>
-                    </property>
-                    <property name="enabled">
-                        <bool>true</bool>
-                    </property>
-                    <property name="text">
-                        <string>Close window when menu double clicked</string>
-                    </property>
-                    <property name="accel">
-                        <string></string>
-                    </property>
-                </widget>
-                <spacer row="2" column="0">
-                    <property name="name">
-                        <cstring>spacer3</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Fixed</enum>
-                    </property>
-                    <property name="tqsizeHint">
-                        <size>
-                            <width>30</width>
-                            <height>20</height>
-                        </size>
-                    </property>
-                </spacer>
-                <widget class="TQComboBox" row="2" column="3">
-                    <item>
-                        <property name="text">
-                            <string>Intensify</string>
-                        </property>
-                    </item>
-                    <item>
-                        <property name="text">
-                            <string>Fade</string>
-                        </property>
-                    </item>
-                    <property name="name">
-                        <cstring>btnComboBox</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>7</hsizetype>
-                            <vsizetype>0</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                </widget>
-                <widget class="TQLabel" row="2" column="1" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>textLabel2</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Animation style:</string>
-                    </property>
-                </widget>
-                <spacer row="0" column="4" rowspan="4" colspan="1">
-                    <property name="name">
-                        <cstring>spacer2</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Expanding</enum>
-                    </property>
-                    <property name="tqsizeHint">
-                        <size>
-                            <width>180</width>
-                            <height>140</height>
-                        </size>
-                    </property>
-                </spacer>
-            </grid>
-        </widget>
-        <widget class="TQGroupBox" row="0" column="0">
-            <property name="name">
-                <cstring>titlegroup</cstring>
-            </property>
-            <property name="title">
-                <string>Title Bar</string>
-            </property>
-            <grid>
-                <property name="name">
-                    <cstring>unnamed</cstring>
-                </property>
-                <widget class="TQLabel" row="0" column="0">
-                    <property name="name">
-                        <cstring>textLabel1_3</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Text tqalignment:</string>
-                    </property>
-                </widget>
-                <widget class="TQLabel" row="3" column="0">
-                    <property name="name">
-                        <cstring>textLabel1_2</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Frame width:</string>
-                    </property>
-                </widget>
-                <widget class="TQLabel" row="1" column="0" rowspan="2" colspan="1">
-                    <property name="name">
-                        <cstring>textLabel1</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Title height:</string>
-                    </property>
-                </widget>
-                <widget class="TQSpinBox" row="2" column="1" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>titlesize</cstring>
-                    </property>
-                    <property name="suffix">
-                        <string> pixels</string>
-                    </property>
-                    <property name="maxValue">
-                        <number>64</number>
-                    </property>
-                    <property name="minValue">
-                        <number>16</number>
-                    </property>
-                </widget>
-                <widget class="TQSpinBox" row="3" column="1" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>framesize</cstring>
-                    </property>
-                    <property name="suffix">
-                        <string> pixels</string>
-                    </property>
-                    <property name="specialValueText">
-                        <string>1 pixel</string>
-                    </property>
-                    <property name="maxValue">
-                        <number>64</number>
-                    </property>
-                    <property name="minValue">
-                        <number>1</number>
-                    </property>
-                    <property name="value">
-                        <number>4</number>
-                    </property>
-                </widget>
-                <widget class="TQButtonGroup" row="0" column="1" rowspan="2" colspan="2">
-                    <property name="name">
-                        <cstring>titlealign</cstring>
-                    </property>
-                    <property name="sizePolicy">
-                        <sizepolicy>
-                            <hsizetype>1</hsizetype>
-                            <vsizetype>1</vsizetype>
-                            <horstretch>0</horstretch>
-                            <verstretch>0</verstretch>
-                        </sizepolicy>
-                    </property>
-                    <property name="frameShape">
-                        <enum>GroupBoxPanel</enum>
-                    </property>
-                    <property name="frameShadow">
-                        <enum>Sunken</enum>
-                    </property>
-                    <property name="lineWidth">
-                        <number>0</number>
-                    </property>
-                    <property name="title">
-                        <string></string>
-                    </property>
-                    <property name="tqalignment">
-                        <set>AlignTop</set>
-                    </property>
-                    <property name="toolTip" stdset="0">
-                        <string></string>
-                    </property>
-                    <property name="whatsThis" stdset="0">
-                        <string>Use these buttons to set the tqalignment of the window title</string>
-                    </property>
-                    <hbox>
-                        <property name="name">
-                            <cstring>unnamed</cstring>
-                        </property>
-                        <property name="margin">
-                            <number>0</number>
-                        </property>
-                        <widget class="TQLayoutWidget">
-                            <property name="name">
-                                <cstring>tqlayout14</cstring>
-                            </property>
-                            <hbox>
-                                <property name="name">
-                                    <cstring>unnamed</cstring>
-                                </property>
-                                <widget class="TQRadioButton">
-                                    <property name="name">
-                                        <cstring>AlignLeft</cstring>
-                                    </property>
-                                    <property name="text">
-                                        <string>Left</string>
-                                    </property>
-                                    <property name="toolTip" stdset="0">
-                                        <string></string>
-                                    </property>
-                                </widget>
-                                <widget class="TQRadioButton">
-                                    <property name="name">
-                                        <cstring>AlignHCenter</cstring>
-                                    </property>
-                                    <property name="text">
-                                        <string>Center</string>
-                                    </property>
-                                    <property name="checked">
-                                        <bool>true</bool>
-                                    </property>
-                                    <property name="toolTip" stdset="0">
-                                        <string></string>
-                                    </property>
-                                </widget>
-                                <widget class="TQRadioButton">
-                                    <property name="name">
-                                        <cstring>AlignRight</cstring>
-                                    </property>
-                                    <property name="text">
-                                        <string>Right</string>
-                                    </property>
-                                    <property name="toolTip" stdset="0">
-                                        <string></string>
-                                    </property>
-                                </widget>
-                            </hbox>
-                        </widget>
-                    </hbox>
-                </widget>
-                <spacer row="0" column="3" rowspan="4" colspan="1">
-                    <property name="name">
-                        <cstring>spacer1</cstring>
-                    </property>
-                    <property name="orientation">
-                        <enum>Horizontal</enum>
-                    </property>
-                    <property name="sizeType">
-                        <enum>Expanding</enum>
-                    </property>
-                    <property name="tqsizeHint">
-                        <size>
-                            <width>231</width>
-                            <height>71</height>
-                        </size>
-                    </property>
-                </spacer>
-                <widget class="TQCheckBox" row="4" column="2" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>roundCorners</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Round top corners</string>
-                    </property>
-                    <property name="accel">
-                        <string></string>
-                    </property>
-                    <property name="checked">
-                        <bool>true</bool>
-                    </property>
-                </widget>
-                <widget class="TQCheckBox" row="4" column="0" rowspan="1" colspan="2">
-                    <property name="name">
-                        <cstring>titleshadow</cstring>
-                    </property>
-                    <property name="text">
-                        <string>Use shadowed text</string>
-                    </property>
-                    <property name="accel">
-                        <string></string>
-                    </property>
-                    <property name="checked">
-                        <bool>true</bool>
-                    </property>
-                    <property name="whatsThis" stdset="0">
-                        <string>Check this option if you want the titlebar text to have a 3D look with a shadow behind it.</string>
-                    </property>
-                </widget>
-            </grid>
-        </widget>
-    </grid>
-</widget>
-<connections>
-    <connection>
-        <sender>animatebuttons</sender>
-        <signal>toggled(bool)</signal>
-        <receiver>textLabel2</receiver>
-        <slot>setEnabled(bool)</slot>
-    </connection>
-    <connection>
-        <sender>animatebuttons</sender>
-        <signal>toggled(bool)</signal>
-        <receiver>btnComboBox</receiver>
-        <slot>setEnabled(bool)</slot>
-    </connection>
-</connections>
-<tabstops>
-    <tabstop>AlignLeft</tabstop>
-    <tabstop>AlignHCenter</tabstop>
-    <tabstop>AlignRight</tabstop>
-    <tabstop>titlesize</tabstop>
-    <tabstop>framesize</tabstop>
-    <tabstop>titleshadow</tabstop>
-    <tabstop>roundCorners</tabstop>
-    <tabstop>buttonsize</tabstop>
-    <tabstop>animatebuttons</tabstop>
-    <tabstop>btnComboBox</tabstop>
-    <tabstop>menuClose</tabstop>
-</tabstops>
-<layoutdefaults spacing="6" margin="11"/>
-</UI>
diff --git a/kwin-styles/smooth-blend/client/config/smoothblendconfig.cc b/kwin-styles/smooth-blend/client/config/smoothblendconfig.cc
deleted file mode 100644
index f2ec3e68..00000000
--- a/kwin-styles/smooth-blend/client/config/smoothblendconfig.cc
+++ /dev/null
@@ -1,180 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendconfig.cc
-// -------------------
-// Config module for Smooth Blend window decoration
-// -------------------
-// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
-// Please see the header file for copyright and license information.
-//////////////////////////////////////////////////////////////////////////////
-
-#include <kconfig.h>
-#include <klocale.h>
-#include <kglobal.h>
-#include <tqbuttongroup.h>
-#include <tqgroupbox.h>
-#include <tqradiobutton.h>
-#include <tqcheckbox.h>
-#include <tqspinbox.h>
-#include <tqwhatsthis.h>
-#include <tqcombobox.h>
-
-#include "smoothblendconfig.h"
-#include "configdialog.h"
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendConfig()
-// -------------
-// Constructor
-
-smoothblendConfig::smoothblendConfig(KConfig* config, TQWidget* parent)
-        : TQObject(parent), config_(0), dialog_(0) {
-    // create the configuration object
-    config_ = new KConfig("twinsmoothblendrc");
-    KGlobal::locale()->insertCatalogue("twin_smoothblend_config");
-
-    // create and show the configuration dialog
-    dialog_ = new ConfigDialog(parent);
-    dialog_->show();
-
-    // load the configuration
-    load(config_);
-
-    // setup the connections for title align
-    connect(dialog_->titlealign, TQT_SIGNAL(clicked(int)),this, TQT_SLOT(selectionChanged(int)));
-    // setup the connections for corner rounding
-    connect(dialog_->roundCorners, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    // setup title shadow
-    connect(dialog_->titleshadow, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    // setup button actions
-    connect(dialog_->animatebuttons, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    connect(dialog_->btnComboBox, TQT_SIGNAL(activated(int)),this,TQT_SLOT(selectionChanged(int)));
-    // setup the connections for spin boxes
-    connect(dialog_->titlesize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    connect(dialog_->buttonsize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    connect(dialog_->framesize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
-    // double click the menu 
-    connect(dialog_->menuClose, TQT_SIGNAL(stateChanged(int)),this, TQT_SLOT(selectionChanged(int)));
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// ~smoothblendConfig()
-// --------------
-// Destructor
-
-smoothblendConfig::~smoothblendConfig() {
-    if (dialog_)
-    {
-        delete dialog_;
-    }
-    if (config_)
-    {
-        delete config_;
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// selectionChanged()
-// ------------------
-// Selection has changed
-
-void smoothblendConfig::selectionChanged(int) {
-
-    if(dialog_->buttonsize->value() + dialog_->framesize->value() > dialog_->titlesize->value())
-    {
-        dialog_->buttonsize->setValue(dialog_->titlesize->value()- dialog_->framesize->value());
-    }
-    // setting the framesize to less than 2 will lose the top gradient and look flat
-    if(dialog_->framesize->value() < 2)
-    {
-        dialog_->framesize->setValue(2);
-    }
-    emit changed();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// load()
-// ------
-// Load configuration data
-
-void smoothblendConfig::load(KConfig*) {
-    config_->setGroup("General");
-
-    TQString value = config_->readEntry("TitleAlignment", "AlignHCenter");
-    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->child(value.latin1());
-    if (button)
-    {
-        button->setChecked(true);
-    }
-
-    dialog_->titlesize->setValue( config_->readNumEntry("TitleSize",30 ) );
-    dialog_->buttonsize->setValue( config_->readNumEntry("ButtonSize",26 ) );
-    dialog_->framesize->setValue( config_->readNumEntry("FrameSize",4 ) );
-
-    bool cornersFlag = config_->readBoolEntry("RoundCorners", true);
-    dialog_->roundCorners->setChecked( cornersFlag );
-    bool titleshadow = config_->readBoolEntry("TitleShadow", true);
-    dialog_->titleshadow->setChecked(titleshadow);
-    bool animatebuttons = config_->readBoolEntry("AnimateButtons", true);
-    dialog_->animatebuttons->setChecked(animatebuttons);
-    dialog_->btnComboBox->setCurrentItem(config_->readNumEntry("ButtonComboBox",0));
-    bool menuClose = config_->readBoolEntry("CloseOnMenuDoubleClick");
-    dialog_->menuClose->setChecked(menuClose);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// save()
-// ------
-// Save configuration data
-
-void smoothblendConfig::save(KConfig*) {
-    config_->setGroup("General");
-
-    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->selected();
-    if (button)
-    {
-        config_->writeEntry("TitleAlignment", TQString(button->name()));
-    }
-    config_->writeEntry("RoundCorners", dialog_->roundCorners->isChecked() );
-    config_->writeEntry("TitleSize", dialog_->titlesize->value() );
-    config_->writeEntry("ButtonSize", dialog_->buttonsize->value() );
-    config_->writeEntry("FrameSize", dialog_->framesize->value() );
-    config_->writeEntry("TitleShadow", dialog_->titleshadow->isChecked() );
-    config_->writeEntry("AnimateButtons", dialog_->animatebuttons->isChecked() );
-    config_->writeEntry("ButtonComboBox", dialog_->btnComboBox->currentItem());
-    config_->writeEntry("CloseOnMenuDoubleClick", dialog_->menuClose->isChecked() );
-
-    config_->sync();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// defaults()
-// ----------
-// Set configuration defaults
-
-void smoothblendConfig::defaults() {
-    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->child("AlignHCenter");
-    if (button)
-    {
-        button->setChecked(true);
-    }
-    dialog_->roundCorners->setChecked( true );
-    dialog_->titlesize->setValue( 30 );
-    dialog_->buttonsize->setValue( 26 );
-    dialog_->framesize->setValue( 4 );
-    dialog_->titleshadow->setChecked( true );
-    dialog_->animatebuttons->setChecked( true );
-    dialog_->btnComboBox->setCurrentItem( 0 );
-    dialog_->menuClose->setChecked( false );
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// Plugin Stuff                                                             //
-//////////////////////////////////////////////////////////////////////////////
-
-extern "C" {
-    TQObject* allocate_config(KConfig* config, TQWidget* parent) {
-        return (new smoothblendConfig(config, parent));
-    }
-}
-
-#include "smoothblendconfig.moc"
diff --git a/kwin-styles/smooth-blend/client/config/smoothblendconfig.h b/kwin-styles/smooth-blend/client/config/smoothblendconfig.h
deleted file mode 100644
index 4f2add87..00000000
--- a/kwin-styles/smooth-blend/client/config/smoothblendconfig.h
+++ /dev/null
@@ -1,56 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendconfig.h
-// -------------------
-// Config module for Smooth Blend window decoration
-// -------------------
-// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
-// 
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// 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 SMOOTHBLENDCONFIG_H
-#define SMOOTHBLENDCONFIG_H
-
-#include <tqobject.h>
-
-class KConfig;
-class ConfigDialog;
-
-class smoothblendConfig : public TQObject {
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    smoothblendConfig(KConfig* config, TQWidget* parent);
-    ~smoothblendConfig();
-
-signals:
-    void changed();
-
-public slots:
-    void load(KConfig*);
-    void save(KConfig*);
-    void defaults();
-
-protected slots:
-    void selectionChanged(int);
-
-private:
-    KConfig *config_;
-    ConfigDialog *dialog_;
-};
-
-#endif // SMOOTHBLENDCONFIG_H
diff --git a/kwin-styles/smooth-blend/client/smoothblend.cc b/kwin-styles/smooth-blend/client/smoothblend.cc
deleted file mode 100644
index 02efd047..00000000
--- a/kwin-styles/smooth-blend/client/smoothblend.cc
+++ /dev/null
@@ -1,1396 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// smoothblend.cc
-// -------------------
-// Smooth Blend window decoration for KDE
-// -------------------
-// Copyright (c) 2005 Ryan Nickell
-// Please see the header file for copyright and license information.
-//////////////////////////////////////////////////////////////////////////////
-
-#include <kconfig.h>
-#include <kdeversion.h>
-#include <kglobal.h>
-#include <kglobalsettings.h>
-#include <klocale.h>
-#include <kpixmap.h>
-#include <kimageeffect.h>
-#include <kpixmapeffect.h>
-#include <kpixmap.h>
-
-#include <tqbitmap.h>
-#include <tqlabel.h>
-#include <tqlayout.h>
-#include <tqpainter.h>
-#include <tqtooltip.h>
-#include <tqtimer.h>
-#include <tqapplication.h>
-
-#include "smoothblend.h"
-#include "buttons.h"
-
-using namespace smoothblend;
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendFactory Class
-//////////////////////////////////////////////////////////////////////////////
-smoothblendFactory* factory=NULL;
-
-bool smoothblendFactory::initialized_              = false;
-TQt::AlignmentFlags smoothblendFactory::titlealign_ = TQt::AlignHCenter;
-bool smoothblendFactory::cornerflags_               = true;
-int smoothblendFactory::titlesize_                 = 30;
-int smoothblendFactory::buttonsize_                = 26;
-int smoothblendFactory::framesize_                 = 4;
-int smoothblendFactory::roundsize_                 = 50;
-bool smoothblendFactory::titleshadow_              = true;
-bool smoothblendFactory::animatebuttons            = true;
-int smoothblendFactory::btnComboBox                = 0;
-bool smoothblendFactory::menuClose                 = false;
-
-// global constants
-static const int TOPMARGIN       = 4; // do not change
-static const int DECOHEIGHT      = 4; // do not change
-static const int SIDETITLEMARGIN = 2;
-// Default button tqlayout
-const char default_left[]  = "M";
-const char default_right[] = "HIAX";
-
-static const uint TIMERINTERVAL = 50; // msec
-static const uint ANIMATIONSTEPS = 4;
-
-extern "C" KDecorationFactory* create_factory() {
-    return new smoothblend::smoothblendFactory();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendFactory()
-// ----------------
-// Constructor
-
-smoothblendFactory::smoothblendFactory() {
-    readConfig();
-    initialized_ = true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// ~smoothblendFactory()
-// -----------------
-// Destructor
-
-smoothblendFactory::~smoothblendFactory() {
-    initialized_ = false;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// createDecoration()
-// -----------------
-// Create the decoration
-
-KDecoration* smoothblendFactory::createDecoration(KDecorationBridge* b) {
-    return new smoothblendClient(b, this);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// reset()
-// -------
-// Reset the handler. Returns true if decorations need to be remade, false if
-// only a tqrepaint is necessary
-
-bool smoothblendFactory::reset(unsigned long changed) {
-    // read in the configuration
-    initialized_ = false;
-    bool confchange = readConfig();
-    initialized_ = true;
-
-    if (confchange ||
-            (changed & (SettingDecoration | SettingButtons | SettingBorder))) {
-        return true;
-    } else {
-        resetDecorations(changed);
-        return false;
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// readConfig()
-// ------------
-// Read in the configuration file
-
-bool smoothblendFactory::readConfig() {
-    // create a config object
-    KConfig config("twinsmoothblendrc");
-    config.setGroup("General");
-
-    // grab settings
-    TQString value = config.readEntry("TitleAlignment", "AlignHCenter");
-    if (value == "AlignLeft")
-        titlealign_ = TQt::AlignLeft;
-    else if (value == "AlignHCenter")
-        titlealign_ = TQt::AlignHCenter;
-    else if (value == "AlignRight")
-        titlealign_ = TQt::AlignRight;
-
-    cornerflags_ = config.readBoolEntry("RoundCorners", true);
-    titlesize_ = config.readNumEntry("TitleSize",30);
-    buttonsize_ = config.readNumEntry("ButtonSize",26);
-    framesize_ = config.readNumEntry("FrameSize",4);
-    roundsize_ = config.readNumEntry("RoundPercent",50);
-    titleshadow_ = config.readBoolEntry("TitleShadow", true);
-    animatebuttons = config.readBoolEntry("AnimateButtons", true);
-    btnComboBox = config.readNumEntry("ButtonComboBox", 0);
-    menuClose = config.readBoolEntry("CloseOnMenuDoubleClick");
-
-    if(buttonsize_ > titlesize_ - framesize_)
-    {
-        buttonsize_ = titlesize_-framesize_;
-    }
-
-    return true;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendButton Class 
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendButton()
-// ---------------
-// Constructor
-smoothblendButton::smoothblendButton(smoothblendClient *parent, const char *name, const TQString& tip, ButtonType type, int button_size, bool toggle): TQButton(parent->widget(), name), 
-     client_(parent), 
-     type_(type), 
-     size_(button_size), 
-     deco_(0), 
-     lastmouse_(Qt::NoButton), 
-     hover_(false)
-{
-    setBackgroundMode(NoBackground);
-    setFixedSize( ::factory->buttonSize(), ::factory->buttonSize());
-    setCursor(arrowCursor);
-    TQToolTip::add(this, tip);
-    setToggleButton(toggle);
-    //button animation setup
-    animTmr = new TQTimer(this);
-    connect(animTmr, TQT_SIGNAL(timeout() ), this, TQT_SLOT(animate() ) );
-    connect(this, TQT_SIGNAL(pressed() ), this, TQT_SLOT(buttonClicked() ) );
-    connect(this, TQT_SIGNAL(released() ), this, TQT_SLOT(buttonReleased() ) );
-    animProgress = 0;
-    m_clicked=false;
-}
-
-smoothblendButton::~smoothblendButton() {
-    if ( deco_ )
-        delete deco_;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// tqsizeHint()
-// ----------
-// Return size hint
-
-TQSize smoothblendButton::tqsizeHint() const {
-    return TQSize(::factory->buttonSize(), ::factory->buttonSize());
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// buttonClicked()
-// ----------
-// Button animation progress reset so we don't get any leave event animation
-// when the mouse is still pressed
-void smoothblendButton::buttonClicked() {
-    m_clicked=true;
-    animProgress=0;
-}
-void smoothblendButton::buttonReleased() {
-    //This doesn't work b/c a released() signal is thrown when a leaveEvent occurs
-    //m_clicked=false;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// animate()
-// ----------
-// Button animation timing
-void smoothblendButton::animate() {
-    animTmr->stop();
-
-    if(hover_) {
-        if(animProgress < ANIMATIONSTEPS) {
-            if (::factory->animateButtons() ) {
-                animProgress++;
-            } else {
-                animProgress = ANIMATIONSTEPS;
-            }
-            animTmr->start(TIMERINTERVAL, true); // single-shot
-        }
-    } else {
-        if(animProgress > 0) {
-            if (::factory->animateButtons() ) {
-                animProgress--;
-            } else {
-                animProgress = 0;
-            }
-            animTmr->start(TIMERINTERVAL, true); // single-shot
-        }
-    }
-    tqrepaint(false);
-}
-//////////////////////////////////////////////////////////////////////////////
-// enterEvent()
-// ------------
-// Mouse has entered the button
-
-void smoothblendButton::enterEvent(TQEvent *e) {
-    // we wanted to pass on the event
-    TQButton::enterEvent(e);
-    // we want to do mouseovers, so keep track of it here
-    hover_=true;
-    if(!m_clicked)
-    {
-        animate();
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// leaveEvent()
-// ------------
-// Mouse has left the button
-
-void smoothblendButton::leaveEvent(TQEvent *e) {
-    // we wanted to pass on the event
-    TQButton::leaveEvent(e);
-    // we want to do mouseovers, so keep track of it here
-    hover_=false; 
-    if(!m_clicked)
-    {
-        animate();
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// mousePressEvent()
-// -----------------
-// Button has been pressed
-
-void smoothblendButton::mousePressEvent(TQMouseEvent* e) {
-    lastmouse_ = e->button();
-
-    // translate and pass on mouse event
-    int button = Qt::LeftButton;
-    if ((type_ != ButtonMax) && (e->button() != Qt::LeftButton)) {
-        button = Qt::NoButton; // middle & right buttons inappropriate
-    }
-    TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
-                   button, e->state());
-    TQButton::mousePressEvent(&me);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// mouseReleaseEvent()
-// -----------------
-// Button has been released
-
-void smoothblendButton::mouseReleaseEvent(TQMouseEvent* e) {
-    lastmouse_ = e->button();
-
-    // translate and pass on mouse event
-    int button = Qt::LeftButton;
-    if ((type_ != ButtonMax) && (e->button() != Qt::LeftButton)) {
-        button = Qt::NoButton; // middle & right buttons inappropriate
-    }
-    TQMouseEvent me(e->type(), e->pos(), e->globalPos(), button, e->state());
-    TQButton::mouseReleaseEvent(&me);
-    if(m_clicked)
-    {
-        m_clicked=false;
-    }
-}
-
-void smoothblendButton::setOn(bool on)
-{
-    TQButton::setOn(on);
-}
-
-void smoothblendButton::setDown(bool on)
-{
-    TQButton::setDown(on);
-}
-
-//////////////////////////////////////////////////////////
-// getButtonImage()
-// ----------------
-// get the button TQImage based on type and window mode
-TQImage smoothblendButton::getButtonImage(ButtonType type)
-{
-    TQImage finalImage;
-    switch(type) {
-        case ButtonClose:
-            finalImage = uic_findImage( "close.png" );
-            break;
-        case ButtonHelp:
-            finalImage = uic_findImage( "help.png" );
-            break;
-        case ButtonMin:
-            finalImage = uic_findImage( "minimize.png" );
-            break;
-        case ButtonMax:
-            if(client_->maximizeMode() == KDecorationDefines::MaximizeFull)
-            {
-                finalImage = uic_findImage( "restore.png" );
-            }
-            else
-            {
-                finalImage = uic_findImage( "maximize.png" );
-            }
-            break;
-        case ButtonSticky:
-            if(client_->isOnAllDesktops())
-            {
-                finalImage = uic_findImage( "splat.png" );
-            }
-            else
-            {
-                finalImage = uic_findImage( "circle.png" );
-            }
-            break;
-        case ButtonShade:
-            if(client_->isShade())
-            {
-                finalImage = uic_findImage( "shade.png" );
-            }
-            else
-            {
-                finalImage = uic_findImage( "shade.png" );
-            }
-            break;
-        case ButtonAbove:
-            if(client_->keepAbove())
-            {
-                finalImage = uic_findImage( "keep_above_lit.png" );
-            }
-            else
-            {
-                finalImage = uic_findImage( "keep_above.png" );
-            }
-            break;
-        case ButtonBelow:
-            if(client_->keepBelow())
-            {
-                finalImage = uic_findImage( "keep_below_lit.png" );
-            }
-            else
-            {
-                finalImage = uic_findImage( "keep_below.png" );
-            }
-            break;
-        default:
-            finalImage = uic_findImage( "splat.png" );
-            break;
-    }
-    return finalImage;
-}
-
-//////////////////////////////////////////////////////////
-// drawButton()
-// -------------------------
-// draw the pixmap button
-
-void smoothblendButton::drawButton( TQPainter *painter ) {
-    if ( !smoothblendFactory::initialized() )
-        return ;
-    
-    int newWidth = width() - 2;
-    int newHeight = height() - 2;
-    int dx = (width() - newWidth) / 2;
-    int dy = (height() - newHeight) / 2;
-    TQImage tmpResult;
-    TQColorGroup group;
-    TQColor redColor(red);
-    bool active = client_->isActive();
-    TQPixmap backgroundTile = client_->getTitleBarTile(active);
-    group = KDecoration::options()->tqcolorGroup(KDecoration::ColorTitleBar, active);
-
-    //draw the titlebar behind the buttons and app icons
-    if ((client_->maximizeMode()==client_->MaximizeFull) && !KDecoration::options()->moveResizeMaximizedWindows())
-    {
-        painter->drawTiledPixmap(0, 0, width(), height(), backgroundTile);
-    }
-    else
-    {
-        painter->drawTiledPixmap(0, 0, width(), height(), backgroundTile, 0, y()-::factory->frameSize());
-    }
-    
-    TQImage buttonImage = getButtonImage(type_).smoothScale( width(),height());
-    buttonImage = KImageEffect::blend( group.background(), buttonImage, .50);
-    if (type_ == ButtonMenu) {
-        //slight movement to show the menu button is depressed
-        if (isDown()) {
-            dx++;
-            dy++;
-        }
-        TQPixmap menuButtonPixmap(client_->icon().pixmap(TQIconSet::Large, TQIconSet::Normal));
-        TQImage menuButtonImage(menuButtonPixmap.convertToImage());
-        //draw the menu button the same size as the other buttons
-        //using TQIconSet::Large gives us a 32x32 icon to resize, resizing larger than
-        //that may produce pixilation of the image
-        painter->drawImage( dx, dy, menuButtonImage.smoothScale(newWidth, newHeight) );
-    } else {
-        //highlight on a mouse over tqrepaint
-        double factor = animProgress * 0.13;
-
-        if(!isDown())
-        {
-            switch(::factory->getBtnComboBox())
-            {
-                case 0:
-                    tmpResult = KImageEffect::intensity( buttonImage, factor);
-                    break;
-                case 1:
-                    tmpResult = KImageEffect::fade( buttonImage, factor, group.background());
-                    break;
-            }
-        }
-        else
-        {
-            tmpResult = buttonImage;
-        }
-        painter->drawPixmap( 0, 0, TQPixmap( tmpResult ) );
-    }
-}
-
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendClient Class
-//////////////////////////////////////////////////////////////////////////////
-
-//////////////////////////////////////////////////////////////////////////////
-// smoothblendClient()
-// ---------------
-// Constructor
-
-smoothblendClient::smoothblendClient(KDecorationBridge *b, KDecorationFactory *f)
-    : KDecoration(b, f),
-    mainLayout_(0),
-    titleLayout_(0),
-    topSpacer_(0),
-    titleSpacer_(0),
-    leftTitleSpacer_(0), rightTitleSpacer_(0),
-    decoSpacer_(0),
-    leftSpacer_(0), rightSpacer_(0),
-    bottomSpacer_(0), windowSpacer_(0),
-    aCaptionBuffer(0), iCaptionBuffer(0),
-    aTitleBarTile(0), iTitleBarTile(0), aTitleBarTopTile(0), iTitleBarTopTile(0),
-    pixmaps_created(false),
-    //captionBufferDirty(true),
-    s_titleHeight(0),
-    s_titleFont(TQFont()),
-    closing(false)
-    {
-        aCaptionBuffer = new TQPixmap();
-        iCaptionBuffer = new TQPixmap();
-        //s_titleFont = isTool()?smoothblendFactory::titleFontTool():smoothblendFactory::titleFont();
-        s_titleFont = options()->font();
-        s_titleHeight = smoothblendFactory::titleSize();
-    }
-//////////////////////////////////////////////////////////////////////////////////
-// ~smoothblendClient()
-// --------------------
-// Destructor
-smoothblendClient::~smoothblendClient() {
-    delete aCaptionBuffer;
-    delete iCaptionBuffer;
-}
-
-void smoothblendClient::create_pixmaps() {
-    if(pixmaps_created)
-        return;
-    KPixmap tempPixmap;
-    TQPainter painter;
-    TQColorGroup group,widgetGroup;
-    int FRAMESIZE = ::factory->frameSize();
-    // Get the color groups we need for the gradients
-    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, true);
-    widgetGroup = widget()->tqcolorGroup();
-    
-    // active top title bar tile
-    tempPixmap.resize(1, TOPMARGIN);
-    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
-                                                   group.background(),
-                                                   widgetGroup.background(),
-                                                   KPixmapEffect::VerticalGradient,
-                                                   100,
-                                                   -100);
-    aTitleBarTopTile = new TQPixmap(1, TOPMARGIN);
-    painter.begin(aTitleBarTopTile);
-    painter.drawPixmap(0, 0, tempPixmap);
-    painter.end();
-    
-    // inactive top title bar tile
-    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, false);
-    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
-                                                   group.background(),
-                                                   widgetGroup.background(),
-                                                   KPixmapEffect::VerticalGradient,
-                                                   100,
-                                                   -100);
-    iTitleBarTopTile = new TQPixmap(1, TOPMARGIN);
-    painter.begin(iTitleBarTopTile);
-    painter.drawPixmap(0, 0, tempPixmap);
-    painter.end();
-    
-    // active title bar tile
-    tempPixmap.resize(1, s_titleHeight+FRAMESIZE);
-    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, true);
-    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
-                                                   group.background(),
-                                                   widgetGroup.background(),
-                                                   KPixmapEffect::VerticalGradient,
-                                                   100,
-                                                   200);
-    aTitleBarTile = new TQPixmap(1, s_titleHeight+FRAMESIZE);
-    painter.begin(aTitleBarTile);
-    painter.drawPixmap(0, 0, tempPixmap);
-    painter.end();
-    
-    // inactive title bar tile
-    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, false);
-    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
-                                                   group.background(),
-                                                   widgetGroup.background(),
-                                                   KPixmapEffect::VerticalGradient,
-                                                   100,
-                                                   200);
-    iTitleBarTile = new TQPixmap(1, s_titleHeight+FRAMESIZE);
-    painter.begin(iTitleBarTile);
-    painter.drawPixmap(0, 0, tempPixmap);
-    painter.end();
-
-    pixmaps_created = true;
-}
-
-void smoothblendClient::delete_pixmaps() {
-    delete aTitleBarTopTile;
-    aTitleBarTopTile = 0;
-
-    delete iTitleBarTopTile;
-    iTitleBarTopTile = 0;
-
-    delete aTitleBarTile;
-    aTitleBarTile = 0;
-
-    delete iTitleBarTile;
-    iTitleBarTile = 0;
-
-    pixmaps_created = false;
-}
-//////////////////////////////////////////////////////////////////////////////
-// init()
-// ------
-// Actual initializer for class
-
-void smoothblendClient::init() {
-    createMainWidget(WResizeNoErase | WRepaintNoErase);
-    widget()->installEventFilter(this);
-    handlebar = ::factory->frameSize() < 4 ? 4 - ::factory->frameSize() : 0;
-    // for flicker-free redraws
-    widget()->setBackgroundMode(NoBackground);
-
-    _resetLayout();
-
-    create_pixmaps();
-}
-void smoothblendClient::_resetLayout()
-{
-    // basic tqlayout:
-    //  _______________________________________________________________
-    // |                         topSpacer                             |
-    // |_______________________________________________________________|
-    // | leftTitleSpacer | btns |  titlebar   | bts | rightTitleSpacer |
-    // |_________________|______|_____________|_____|__________________|
-    // |                         decoSpacer                            |
-    // |_______________________________________________________________|
-    // | |                                                           | |
-    // | |                      windowWrapper                        | |
-    // | |                                                           | |
-    // |leftSpacer                                          rightSpacer|
-    // |_|___________________________________________________________|_|
-    // |                           bottomSpacer                        |
-    // |_______________________________________________________________|
-    //
-    if (!::factory->initialized()) return;
-    
-    delete mainLayout_;
-    delete titleLayout_;
-    delete topSpacer_;
-    delete titleSpacer_;
-    delete leftTitleSpacer_;
-    delete rightTitleSpacer_;
-    delete decoSpacer_;
-    delete leftSpacer_;
-    delete rightSpacer_;
-    delete bottomSpacer_;
-    delete windowSpacer_;
-
-    mainLayout_ = new TQVBoxLayout(widget());
-    // title
-    titleLayout_ = new TQHBoxLayout();
-    TQHBoxLayout *windowLayout_ = new TQHBoxLayout();
-    int FRAMESIZE = ::factory->frameSize();
-
-    topSpacer_        = new TQSpacerItem(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    titlebar_         = new TQSpacerItem(1, ::factory->buttonSize(),
-                                        TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    leftTitleSpacer_  = new TQSpacerItem(FRAMESIZE, s_titleHeight,
-                                        TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-    rightTitleSpacer_ = new TQSpacerItem(FRAMESIZE, s_titleHeight,
-                                        TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-    decoSpacer_       = new TQSpacerItem(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    leftSpacer_       = new TQSpacerItem(::factory->frameSize(), 1,
-                                        TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-    rightSpacer_      = new TQSpacerItem(::factory->frameSize(), 1,
-                                        TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-    bottomSpacer_     = new TQSpacerItem(1, ::factory->frameSize(),
-                                        TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    
-    // sizeof(...) is calculated at compile time
-    memset(button, 0, sizeof(smoothblendButton *) * ButtonTypeCount);
-
-    // message in preview widget
-    if (isPreview()) {
-        windowLayout_->addWidget(
-            new TQLabel( i18n("<b><center>Smooth Blend</center></b>"), widget() ), 1 ); 
-    } else {
-        windowLayout_->addItem(new TQSpacerItem(0, 0));
-    }
-
-    // setup titlebar buttons
-    for (int n=0; n<ButtonTypeCount; n++)
-        button[n] = 0;
-    //Deal with the title and buttons
-    titleLayout_->addItem(leftTitleSpacer_);
-    addButtons(titleLayout_,
-               options()->customButtonPositions() ? options()->titleButtonsLeft() : TQString(default_left),
-               ::factory->titleSize()-1);
-    titleLayout_->addItem(titlebar_);
-    addButtons(titleLayout_,
-               options()->customButtonPositions() ? options()->titleButtonsRight() : TQString(default_right),
-               ::factory->titleSize()-1);
-    titleLayout_->addItem(rightTitleSpacer_);
-
-    //Mid - left side, middle contents and right side
-    TQHBoxLayout * midLayout_   = new TQHBoxLayout();
-    midLayout_->addItem(leftSpacer_);
-    midLayout_->addLayout(windowLayout_);
-    midLayout_->addItem(rightSpacer_);
-
-    //Layout order
-    mainLayout_->addItem( topSpacer_ );
-    mainLayout_->addLayout( titleLayout_ );
-    mainLayout_->addItem( decoSpacer_ );
-    mainLayout_->addLayout( midLayout_ );
-    mainLayout_->addItem( bottomSpacer_ );
-    
-    // connections
-    connect(this, TQT_SIGNAL(keepAboveChanged(bool)), TQT_SLOT(keepAboveChange(bool)));
-    connect(this, TQT_SIGNAL(keepBelowChanged(bool)), TQT_SLOT(keepBelowChange(bool)));
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// addButtons()
-// ------------
-// Add buttons to title tqlayout
-
-void smoothblendClient::addButtons(TQBoxLayout *tqlayout, const TQString& s, int button_size) {
-    TQString tip;
-    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 smoothblendButton(this, "splat.png", i18n("Menu"),ButtonMenu,button_size);
-                    connect(button[ButtonMenu], TQT_SIGNAL(pressed()), this, TQT_SLOT(menuButtonPressed()));
-                    connect(button[ButtonMenu], TQT_SIGNAL(released()), this, TQT_SLOT(menuButtonReleased()));
-                    tqlayout->addWidget(button[ButtonMenu]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'S': // Sticky button
-                if (!button[ButtonSticky]) {
-                    if (isOnAllDesktops()) {
-                        tip = i18n("Un-Sticky");
-                    } else {
-                        tip = i18n("Sticky");
-                    }
-                    button[ButtonSticky] =
-                        new smoothblendButton(this, "circle.png", tip, ButtonSticky, button_size, true);
-                    connect(button[ButtonSticky], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(toggleOnAllDesktops()));
-                    tqlayout->addWidget(button[ButtonSticky]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'H': // Help button
-                if ((!button[ButtonHelp]) && providesContextHelp()) {
-                    button[ButtonHelp] =
-                        new smoothblendButton(this, "help.png", i18n("Help"), ButtonHelp, button_size);
-                    connect(button[ButtonHelp], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(showContextHelp()));
-                    tqlayout->addWidget(button[ButtonHelp]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'I': // Minimize button
-                if ((!button[ButtonMin]) && isMinimizable())  {
-                    button[ButtonMin] =
-                        new smoothblendButton(this, "minimize.png", i18n("Minimize"), ButtonMin, button_size);
-                    connect(button[ButtonMin], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(minimize()));
-                    tqlayout->addWidget(button[ButtonMin]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'A': // Maximize button
-                if ((!button[ButtonMax]) && isMaximizable()) {
-                    if (maximizeMode() == MaximizeFull) {
-                        tip = i18n("Restore");
-                    } else {
-                        tip = i18n("Maximize");
-                    }
-                    button[ButtonMax]  =
-                        new smoothblendButton(this, "maximize.png", tip, ButtonMax, button_size, true);
-                    connect(button[ButtonMax], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(maxButtonPressed()));
-                    tqlayout->addWidget(button[ButtonMax]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'X': // Close button
-                if ((!button[ButtonClose]) && isCloseable()) {
-                    button[ButtonClose] =
-                        new smoothblendButton(this, "close.png", i18n("Close"), ButtonClose, button_size);
-                    connect(button[ButtonClose], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(closeWindow()));
-                    tqlayout->addWidget(button[ButtonClose]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'F': // Above button
-                if ((!button[ButtonAbove])) {
-                    button[ButtonAbove] =
-                        new smoothblendButton(this, "keep_above.png",
-                                          i18n("Keep Above Others"), ButtonAbove, button_size, true);
-                    connect(button[ButtonAbove], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(aboveButtonPressed()));
-                    tqlayout->addWidget(button[ButtonAbove]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'B': // Below button
-                if ((!button[ButtonBelow])) {
-                    button[ButtonBelow] =
-                        new smoothblendButton(this, "keep_below.png",
-                                          i18n("Keep Below Others"), ButtonBelow, button_size, true);
-                    connect(button[ButtonBelow], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(belowButtonPressed()));
-                    tqlayout->addWidget(button[ButtonBelow]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case 'L': // Shade button
-                if ((!button[ButtonShade]) && isShadeable()) {
-                    if ( isSetShade()) {
-                        tip = i18n("Unshade");
-                    } else {
-                        tip = i18n("Shade");
-                    }
-                    button[ButtonShade] =
-                        new smoothblendButton(this, "shade.png", tip, ButtonShade, button_size, true);
-                    connect(button[ButtonShade], TQT_SIGNAL(clicked()),
-                            this, TQT_SLOT(shadeButtonPressed()));
-                    tqlayout->addWidget(button[ButtonShade]);
-                    if (n < s.length()-1) tqlayout->addSpacing(1);
-                }
-                break;
-
-            case '_': // Spacer item
-                tqlayout->addSpacing(::factory->frameSize());
-            }
-        }
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// activeChange()
-// --------------
-// window active state has changed
-
-void smoothblendClient::activeChange() {
-    for (int n=0; n<ButtonTypeCount; n++)
-        if (button[n])
-            button[n]->reset();
-    widget()->tqrepaint(false);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// captionChange()
-// ---------------
-// The title has changed
-
-void smoothblendClient::captionChange() {
-    widget()->tqrepaint(titlebar_->tqgeometry(), false);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// desktopChange()
-// ---------------
-// Called when desktop/sticky changes
-
-void smoothblendClient::desktopChange() {
-    bool d = isOnAllDesktops();
-    if (button[ButtonSticky]) {
-        TQToolTip::remove(button[ButtonSticky]);
-        TQToolTip::add(button[ButtonSticky], d ? i18n("Un-Sticky") : i18n("Sticky"));
-        button[ButtonSticky]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// iconChange()
-// ------------
-// The title has changed
-
-void smoothblendClient::iconChange() {
-    if (button[ButtonMenu]) {
-        button[ButtonMenu]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// maximizeChange()
-// ----------------
-// Maximized state has changed
-
-void smoothblendClient::maximizeChange() {
-    bool m = (maximizeMode() == MaximizeFull);
-    if (button[ButtonMax]) {
-        TQToolTip::remove(button[ButtonMax]);
-        TQToolTip::add(button[ButtonMax], m ? i18n("Restore") : i18n("Maximize"));
-        button[ButtonMax]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// shadeChange()
-// -------------
-// Called when window shading changes
-
-void smoothblendClient::shadeChange() {
-    bool s = isSetShade();
-    if (button[ButtonShade]) {
-        TQToolTip::remove(button[ButtonShade]);
-        TQToolTip::add(button[ButtonShade], s ? i18n("Unshade") : i18n("Shade"));
-        button[ButtonShade]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// keepAboveChange()
-// ------------
-// The above state has changed
-
-void smoothblendClient::keepAboveChange(bool a) {
-    if (button[ButtonAbove]) {
-        button[ButtonAbove]->setOn(a);
-        button[ButtonAbove]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// keepBelowChange()
-// ------------
-// The below state has changed
-
-void smoothblendClient::keepBelowChange(bool b) {
-    if (button[ButtonBelow]) {
-        button[ButtonBelow]->setOn(b);
-        button[ButtonBelow]->tqrepaint(false);
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// borders()
-// ----------
-// Get the size of the borders
-
-void smoothblendClient::borders(int &left, int &right, int &top, int &bottom) const {
-    int FRAMESIZE = ::factory->frameSize();
-
-    if ((maximizeMode()==MaximizeFull) && !options()->moveResizeMaximizedWindows()) {
-        left = right = bottom = 0;
-        top = ::factory->buttonSize();
-
-        // update tqlayout etc.
-        topSpacer_->changeSize(1, 0, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-        decoSpacer_->changeSize(1, 0, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-        leftSpacer_->changeSize(left, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-        leftTitleSpacer_->changeSize(left, top, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-        rightSpacer_->changeSize(right, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-        rightTitleSpacer_->changeSize(right, top, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-        bottomSpacer_->changeSize(1, bottom, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    } else {
-        left = right = bottom = ::factory->frameSize();
-        top = ::factory->titleSize() + (FRAMESIZE*2);
-
-        // update tqlayout etc.
-        topSpacer_->changeSize(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-        decoSpacer_->changeSize(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-        leftSpacer_->changeSize(left, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-        leftTitleSpacer_->changeSize(left, s_titleHeight, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-        rightSpacer_->changeSize(right, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
-        rightTitleSpacer_->changeSize(right,s_titleHeight,TQSizePolicy::Fixed, TQSizePolicy::Fixed);
-        bottomSpacer_->changeSize(1, bottom, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
-    }
-    widget()->tqlayout()->activate();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// resize()
-// --------
-// Called to resize the window
-
-void smoothblendClient::resize(const TQSize &size) {
-    widget()->resize(size);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// tqminimumSize()
-// -------------
-// Return the minimum allowable size for this window
-
-TQSize smoothblendClient::tqminimumSize() const {
-    return widget()->tqminimumSize();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// mousePosition()
-// ---------------
-// Return logical mouse position
-
-KDecoration::Position smoothblendClient::mousePosition(const TQPoint &point) const {
-    const int corner = 24;
-    Position pos;
-    int fs = ::factory->frameSize() + handlebar;
-    //int fs = ::factory->frameSize();
-
-    if (point.y() <= fs) {
-        // 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()-fs*2)) {
-        // inside handle
-        if (point.x() <= corner)
-            pos = PositionBottomLeft;
-        else if (point.x() >= (width()-corner))
-            pos = PositionBottomRight;
-        else
-            pos = PositionBottom;
-    } else if (point.x() <= fs ) {
-        // 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()-fs) {
-        // 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 smoothblendClient::eventFilter(TQObject *obj, TQEvent *e) {
-    if (TQT_BASE_OBJECT(obj) != TQT_BASE_OBJECT(widget()))
-        return false;
-
-    switch (e->type()) {
-    case TQEvent::MouseButtonDblClick: {
-            mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
-            return true;
-        }
-    case TQEvent::MouseButtonPress: {
-            processMousePressEvent(TQT_TQMOUSEEVENT(e));
-            return true;
-        }
-    case TQEvent::Paint: {
-            paintEvent(TQT_TQPAINTEVENT(e));
-            return true;
-        }
-    case TQEvent::Resize: {
-            resizeEvent(TQT_TQRESIZEEVENT(e));
-            return true;
-        }
-    case TQEvent::Show: {
-            showEvent(TQT_TQSHOWEVENT(e));
-            return true;
-        }
-    case TQEvent::Wheel: {
-            wheelEvent(TQT_TQWHEELEVENT( e ));
-            return true;
-        }
-    default: {
-            return false;
-        }
-    }
-
-    return false;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// mouseDoubleClickEvent()
-// -----------------------
-// Doubleclick on title
-
-void smoothblendClient::mouseDoubleClickEvent(TQMouseEvent *e) {
-    if (titlebar_->tqgeometry().contains(e->pos()))
-        titlebarDblClickOperation();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// wheelEvent()
-// ------------
-// Mouse wheel on titlebar
-
-void smoothblendClient::wheelEvent(TQWheelEvent *e)
-{
-    if (titleLayout_->tqgeometry().contains(e->pos()) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// paintEvent()
-// ------------
-// Repaint the window
-
-void smoothblendClient::paintEvent(TQPaintEvent*) {
-    if (!::factory->initialized())
-    {
-        return;
-    }
-    
-    //int FRAMESIZE = ::factory->frameSize();
-    const uint maxCaptionLength = 300; // truncate captions longer than this!
-    TQString captionText(caption());
-    if (captionText.length() > maxCaptionLength) {
-        captionText.truncate(maxCaptionLength);
-        captionText.append(" [...]");
-    }
-
-    TQColor blackColor(black);
-    TQColor redColor(red);
-    TQColorGroup group,widgetGroup;
-    TQPainter painter(widget());
-    bool active = isActive();
-    //get group information first
-    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, isActive());
-    widgetGroup = widget()->tqcolorGroup();
-
-    TQRect topRect( topSpacer_->tqgeometry() );
-    TQRect titleRect( titleLayout_->tqgeometry() );
-    TQRect textRect( titlebar_->tqgeometry() );
-    TQRect Rltitle( leftTitleSpacer_->tqgeometry() );
-    TQRect Rrtitle( rightTitleSpacer_->tqgeometry() );
-    TQRect Rdeco( decoSpacer_->tqgeometry() );
-    TQRect Rleft( leftSpacer_->tqgeometry() );
-    TQRect Rright( rightSpacer_->tqgeometry() );
-    TQRect Rbottom( bottomSpacer_->tqgeometry() );
-    TQRect tempRect;
-    
-    
-    /*
-    if(active)
-    {
-        qDebug("paintEvent() topRect.y()   = %i\tbottom() = %i",topRect.top(),topRect.bottom());
-        qDebug("paintEvent() titleRect.y() = %i\tbottom() = %i",titleRect.top(),titleRect.bottom());
-        qDebug("paintEvent() textRect.y()  = %i\tbottom() = %i",textRect.top(),textRect.bottom());
-        qDebug("paintEvent() Rltitle.y()   = %i\tbottom() = %i",Rltitle.top(),Rltitle.bottom());
-        qDebug("paintEvent() Rrtitle.y()   = %i\tbottom() = %i",Rrtitle.top(),Rrtitle.bottom());
-        qDebug("paintEvent() Rdeco.y()     = %i\tbottom() = %i",Rdeco.top(),Rdeco.bottom());
-        qDebug("paintEvent() Rleft.y()     = %i\tbottom() = %i",Rleft.top(),Rleft.bottom());
-        qDebug("paintEvent() Rright.y()    = %i\tbottom() = %i",Rright.top(),Rright.bottom());
-        qDebug("paintEvent() Rbottom.y()   = %i\tbottom() = %i",Rbottom.top(),Rbottom.bottom());
-    }
-    */
-
-    // top
-    painter.drawTiledPixmap(topRect, active ? *aTitleBarTopTile:*iTitleBarTopTile);
-    painter.drawTiledPixmap(titleRect.x(),
-                            titleRect.y(),
-                            titleRect.width(),
-                            titleRect.height() + Rdeco.height(),
-                            active ? *aTitleBarTile:*iTitleBarTile);
-
-    textRect.setRect(textRect.x()+SIDETITLEMARGIN,
-                     textRect.y(),
-                     textRect.width()-SIDETITLEMARGIN*2,
-                     textRect.height());
-    TQRect shadowRect(textRect.x()+1,textRect.y()+1,textRect.width(),textRect.height());
-    //if we are shadowing title bar text
-    if(::factory->titleShadow())
-    {
-        //shadow text
-        painter.setFont(options()->font(isActive(), false));
-        painter.setPen(blackColor);
-        painter.drawText(shadowRect,
-                         ::factory->titleAlign() | AlignVCenter | TQt::SingleLine,
-                         captionText);
-    }
-    // draw title text
-    painter.setFont(options()->font(isActive(), false));
-    painter.setPen(options()->color(KDecoration::ColorFont, isActive()));
-    painter.drawText(textRect,
-                     ::factory->titleAlign() | AlignVCenter | TQt::SingleLine,
-                     captionText);
-    
-    //left of buttons and title
-    painter.drawTiledPixmap(Rltitle.x(),
-                            Rltitle.y(),
-                            Rltitle.width(),
-                            Rltitle.height()+Rdeco.height(),
-                            active ? *aTitleBarTile:*iTitleBarTile);
-    // left mid tqlayout
-    painter.fillRect(Rleft,widgetGroup.background());
-
-    // right of buttons and title
-    painter.drawTiledPixmap(Rrtitle.x(),
-                            Rrtitle.y(),
-                            Rrtitle.width(),
-                            Rrtitle.height()+Rdeco.height(),
-                            active ? *aTitleBarTile:*iTitleBarTile);
-    // right mid tqlayout
-    painter.fillRect(Rright,widgetGroup.background());
-    
-    // bottom
-    /*
-    if(isShade())
-    {
-        frame.setRect(0,::factory->titleSize()+FRAMESIZE, width(), FRAMESIZE);
-    }
-    else
-    {
-        frame.setRect(0, height() - (FRAMESIZE*2), width(),  (FRAMESIZE*2));
-    }
-    */
-    painter.fillRect(Rbottom, widgetGroup.background());
-
-    //draw a line between title bar and window contents
-    painter.setPen(group.background());
-
-    // outline outside the frame but not the corners if they are rounded
-    tempRect = widget()->rect();
-    painter.drawRect(tempRect);
-
-    bool cornersFlag = ::factory->roundedCorners();
-    if(cornersFlag) {
-        // local temp right and bottom
-        int r(width());
-        painter.setPen(group.background());
-        painter.drawPoint(4, 1);
-        painter.drawPoint(3, 1);
-        painter.drawPoint(2, 2);
-        painter.drawPoint(1, 3);
-        painter.drawPoint(1, 4);
-        painter.drawPoint(r - 5, 1);
-        painter.drawPoint(r - 4, 1);
-        painter.drawPoint(r - 3, 2);
-        painter.drawPoint(r - 2, 3);
-        painter.drawPoint(r - 2, 4);
-    } 
-
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// updateMask()
-// ------------
-// update the frame mask
-void smoothblendClient::updateMask() {
-    bool cornersFlag = ::factory->roundedCorners();
-    if ( (!options()->moveResizeMaximizedWindows() && maximizeMode() == MaximizeFull ) ) 
-    {
-        setMask(TQRegion(widget()->rect()));
-        return;
-    }
-
-    int r(width());
-    int b(height());
-    TQRegion mask;
-
-    mask=TQRegion(widget()->rect());
-
-   // Remove top-left corner.
-    if(cornersFlag) {
-        mask -= TQRegion(0, 0, 5, 1);
-        mask -= TQRegion(0, 1, 3, 1);
-        mask -= TQRegion(0, 2, 2, 1);
-        mask -= TQRegion(0, 3, 1, 2);
-        mask -= TQRegion(r - 5, 0, 5, 1);
-        mask -= TQRegion(r - 3, 1, 3, 1);
-        mask -= TQRegion(r - 2, 2, 2, 1);
-        mask -= TQRegion(r - 1, 3, 1, 2);
-    }
-    //always remove one corner pixel so it simulates a soft corner like plastik
-    mask -= TQRegion(0,0,1,1);
-    mask -= TQRegion(r-1,0,1,1);
-    mask -= TQRegion(0, b-1, 1,1);
-    mask -= TQRegion(r-1,b-1,1,1);
-
-    setMask(mask);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// resizeEvent()
-// -------------
-// Window is being resized
-
-void smoothblendClient::resizeEvent(TQResizeEvent *) {
-    if (widget()->isShown()) {
-        TQRegion region = widget()->rect();
-        region = region.subtract(titlebar_->tqgeometry());
-        widget()->erase(region);
-        updateMask();
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// showEvent()
-// -----------
-// Window is being shown
-
-void smoothblendClient::showEvent(TQShowEvent *) {
-    updateMask();
-    widget()->tqrepaint();
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// maxButtonPressed()
-// -----------------
-// Max button was pressed
-
-void smoothblendClient::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 smoothblendClient::shadeButtonPressed() {
-    if (button[ButtonShade]) {
-        setShade( !isSetShade());
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// aboveButtonPressed()
-// -----------------
-// Above button was pressed
-
-void smoothblendClient::aboveButtonPressed() {
-    if (button[ButtonAbove]) {
-        setKeepAbove( !keepAbove());
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// belowButtonPressed()
-// -----------------
-// Below button was pressed
-
-void smoothblendClient::belowButtonPressed() {
-    if (button[ButtonBelow]) {
-        setKeepBelow( !keepBelow());
-    }
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// menuButtonPressed()
-// -------------------
-// Menu button was pressed (popup the menu)
-
-void smoothblendClient::menuButtonPressed() {
-    static TQTime* t = NULL;
-    static smoothblendClient* lastClient = NULL;
-    if (t == NULL)
-        t = new TQTime;
-    bool dbl = (lastClient==this && t->elapsed() <= TQApplication::doubleClickInterval());
-    lastClient = this;
-    t->start();
-    //if (button[ButtonMenu] && !dbl && !::factory->menuClosed()) {
-    if ( !dbl || !::factory->menuClosed()) {
-        TQPoint 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;
-    }
-}
-
-void smoothblendClient::menuButtonReleased()
-{
-    if(closing)
-    {
-        closeWindow();
-    }
-}
-
-#include "smoothblend.moc"
diff --git a/kwin-styles/smooth-blend/client/smoothblend.desktop b/kwin-styles/smooth-blend/client/smoothblend.desktop
deleted file mode 100644
index 6f26b6e0..00000000
--- a/kwin-styles/smooth-blend/client/smoothblend.desktop
+++ /dev/null
@@ -1,40 +0,0 @@
-# KDE Desktop Entry
-[Desktop Entry]
-Name=Smooth Blend
-Name[ca]=Barreja suau
-Name[cs]=Jemný přechod
-Name[cy]=Cymysgedd Llyfn
-Name[da]=Glat blanding
-Name[el]=Ομαλή μείξη
-Name[eo]=Glata Miksaĵo
-Name[es]=Mezcla suave
-Name[et]=Mahe ühtesulamine
-Name[fa]=ترکیب یکدست
-Name[fi]=Pehmeä sekoitus
-Name[fr]=Fusion douce
-Name[fy]=Sêfte ferminging
-Name[gl]=Mistura Suave
-Name[hu]=Sima színátmenet
-Name[is]=Mjúk blöndun
-Name[it]=Mistura scorrevole
-Name[ja]=綺麗なブレンド
-Name[ka]=გლუვი და რბილი
-Name[mk]=Рамномерно мешање
-Name[nb]=Jevn overgang
-Name[nds]=Week Mischen
-Name[ne]=महिन मिश्रण
-Name[nl]=Zachte vermenging
-Name[nn]=Jamn overgang
-Name[pl]=Gładkie łączenie kolorów
-Name[pt]=Mistura Suave
-Name[pt_BR]=Mistura Suave
-Name[ru]=Полутона
-Name[sl]=Enakomeren preliv
-Name[sr]=Глатко претапање
-Name[sr@Latn]=Glatko pretapanje
-Name[sv]=Jämn blandning
-Name[tr]=Düz Karışım
-Name[uk]=Гладке змішання
-Name[vi]=Trộn màu Mượt mà
-Name[zh_TW]=平順混合
-X-KDE-Library=twin3_smoothblend
diff --git a/kwin-styles/smooth-blend/client/smoothblend.h b/kwin-styles/smooth-blend/client/smoothblend.h
deleted file mode 100644
index 4abd32cb..00000000
--- a/kwin-styles/smooth-blend/client/smoothblend.h
+++ /dev/null
@@ -1,256 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-// smoothblend.h
-// -------------------
-// Smooth Blend window decoration for KDE
-// -------------------
-// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// 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 SMOOTHBLEND_H
-#define SMOOTHBLEND_H
-
-#include <tqbutton.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-class TQSpacerItem;
-class TQPoint;
-
-namespace smoothblend {
-
-class smoothblendClient;
-
-enum ButtonType {
-    ButtonHelp=0,
-    ButtonMax,
-    ButtonMin,
-    ButtonClose,
-    ButtonMenu,
-    ButtonSticky,
-    ButtonAbove,
-    ButtonBelow,
-    ButtonShade,
-    ButtonTypeCount
-};
-
-// smoothblendFactory /////////////////////////////////////////////////////////
-//
-// add variables and flags for config like...
-//
-// public:  type function()
-// private: type var_
-// inline type function(){ return var_ };
-//
-
-class smoothblendFactory: public KDecorationFactory {
-public:
-    smoothblendFactory();
-    virtual ~smoothblendFactory();
-    virtual KDecoration *createDecoration(KDecorationBridge *b);
-    virtual bool reset(unsigned long changed);
-    static bool initialized();
-    static TQt::AlignmentFlags titleAlign();
-    static bool roundedCorners();
-    static int titleSize();
-    static int buttonSize();
-    static int frameSize();
-    static int roundSize();
-    static TQFont titleFontTool() { return m_titleFontTool; }
-    static bool titleShadow();
-    static bool animateButtons() { return animatebuttons; }
-    static int getBtnComboBox() { return btnComboBox; }
-    static bool menuClosed() { return menuClose; }
-
-private:
-    bool readConfig();
-
-private:
-    static bool initialized_;
-    static TQt::AlignmentFlags titlealign_;
-    static bool cornerflags_;
-    static int titlesize_;
-    static int buttonsize_;
-    static int framesize_;
-    static int roundsize_;
-    static TQFont m_titleFontTool;
-    static bool titleshadow_;
-    static bool animatebuttons;
-    static int btnComboBox;
-    static bool menuClose;
-};
-
-inline bool smoothblendFactory::initialized() {
-    return initialized_;
-}
-inline TQt::AlignmentFlags smoothblendFactory::titleAlign() {
-    return titlealign_;
-}
-inline bool smoothblendFactory::roundedCorners() {
-    return cornerflags_;
-}
-inline int smoothblendFactory::titleSize() {
-    return titlesize_;
-}
-inline int smoothblendFactory::buttonSize() {
-    return buttonsize_;
-}
-inline int smoothblendFactory::frameSize() {
-    return framesize_;
-}
-inline int smoothblendFactory::roundSize() {
-    return roundsize_;
-}
-inline bool smoothblendFactory::titleShadow() {
-    return titleshadow_;
-}
-
-// smoothblendButton //////////////////////////////////////////////////////////
-
-class smoothblendButton : public TQButton {
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    smoothblendButton(smoothblendClient *parent=0, const char *name=0,
-                  const TQString &tip=NULL,
-                  ButtonType type=ButtonHelp,
-                  int button_size=18,
-                  bool toggle=false);
-                  //const unsigned char *bitmap=0);
-    ~smoothblendButton();
-
-    void setBitmap(const unsigned char *bitmap);
-    TQSize tqsizeHint() const;
-    ButtonState lastMousePress() const;
-    void reset();
-    TQImage getButtonImage(ButtonType type);
-    virtual void setOn(bool on);
-    virtual void setDown(bool on);
-
-protected slots:
-    void animate();
-    void buttonClicked();
-    void buttonReleased();
-
-private:
-    void enterEvent(TQEvent *e);
-    void leaveEvent(TQEvent *e);
-    void mousePressEvent(TQMouseEvent *e);
-    void mouseReleaseEvent(TQMouseEvent *e);
-    void drawButton(TQPainter *painter);
-
-private:
-    smoothblendClient *client_;
-    ButtonType type_;
-    int size_;
-    TQBitmap *deco_;
-    TQPixmap *pixmap[2][4];
-    ButtonState lastmouse_;
-    bool hover_;
-    bool m_clicked;
-    TQTimer *animTmr;
-    uint animProgress;
-};
-
-inline TQt::ButtonState smoothblendButton::lastMousePress() const {
-    return lastmouse_;
-}
-inline void smoothblendButton::reset() {
-    tqrepaint(false);
-}
-
-// smoothblendClient //////////////////////////////////////////////////////////
-
-class smoothblendClient : public KDecoration {
-    Q_OBJECT
-  TQ_OBJECT
-public:
-    smoothblendClient(KDecorationBridge *b, KDecorationFactory *f);
-    virtual ~smoothblendClient();
-
-    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 TQSize &size);
-    virtual TQSize tqminimumSize() const;
-    virtual Position mousePosition(const TQPoint &point) const;
-
-    TQPixmap getTitleBarTile(bool active) const
-    {
-        return active ? *aTitleBarTile : *iTitleBarTile;
-    }
-
-private:
-    void addButtons(TQBoxLayout* tqlayout, const TQString& buttons, int buttonSize = 18);
-    bool eventFilter(TQObject *obj, TQEvent *e);
-    void mouseDoubleClickEvent(TQMouseEvent *e);
-    void wheelEvent(TQWheelEvent *e);
-    void paintEvent(TQPaintEvent *e);
-    void resizeEvent(TQResizeEvent *);
-    void showEvent(TQShowEvent *);
-    void updateMask();
-    void _resetLayout();
-    TQVBoxLayout *mainLayout_;
-    TQHBoxLayout *titleLayout_;
-    TQSpacerItem *topSpacer_,
-                *titleSpacer_,
-                *leftTitleSpacer_, *rightTitleSpacer_,
-                *decoSpacer_,
-                *leftSpacer_, *rightSpacer_,
-                *bottomSpacer_, *windowSpacer_;
-    TQPixmap *aCaptionBuffer, *iCaptionBuffer;
-
-private slots:
-    void maxButtonPressed();
-    void menuButtonPressed();
-    void menuButtonReleased();
-    void aboveButtonPressed();
-    void belowButtonPressed();
-    void shadeButtonPressed();
-    void keepAboveChange(bool);
-    void keepBelowChange(bool);
-
-signals:
-    void keepAboveChanged(bool);
-    void keepBelowChanged(bool);
-
-private:
-    TQPixmap *aTitleBarTile, *iTitleBarTile, *aTitleBarTopTile, *iTitleBarTopTile;
-    smoothblendButton *button[ButtonTypeCount];
-    TQSpacerItem *titlebar_;
-    bool pixmaps_created;
-    int s_titleHeight;
-    TQFont s_titleFont;
-    int handlebar;
-    bool closing;
-
-    void create_pixmaps();
-    void delete_pixmaps();
-};
-
-} // namespace smoothblend
-
-#endif // SMOOTHBLEND_H
diff --git a/kwin-styles/system/CMakeLists.txt b/kwin-styles/system/CMakeLists.txt
deleted file mode 100644
index 09a3a966..00000000
--- a/kwin-styles/system/CMakeLists.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-#################################################
-#
-#  (C) 2011 Golubev Alexander
-#  fatzer2 (AT) gmail.com
-#
-#  Improvements and feedback are welcome
-#
-#  This file is released under GPL >= 2
-#
-#################################################
-
-include_directories(
-  ${CMAKE_CURRENT_BINARY_DIR}
-  ${TDE_INCLUDE_DIR}
-  ${TQT_INCLUDE_DIRS}
-)
-
-link_directories(
-  ${TQT_LIBRARY_DIRS}
-)
-
-##### other data ################################
-
-install( FILES system.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
-
-##### twin3_system ###############################
-
-tde_add_kpart( twin3_system AUTOMOC
-  SOURCES systemclient.cpp
-  LINK tdecorations-shared
-  DESTINATION ${PLUGIN_INSTALL_DIR}
-)
diff --git a/kwin-styles/system/Makefile.am b/kwin-styles/system/Makefile.am
deleted file mode 100644
index 5b401370..00000000
--- a/kwin-styles/system/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-
-INCLUDES = $(all_includes)
-
-kde_module_LTLIBRARIES = twin3_system.la
-
-twin3_system_la_SOURCES = systemclient.cpp
-twin3_system_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
-#twin_system_la_LDFLAGS = $(all_libraries) -avoid-version -module $(KDE_RPATH) $(KDE_MT_LDFLAGS)
-twin3_system_la_LIBADD = $(LIB_TDEUI) -ltdecorations
-
-METASOURCES = AUTO
-noinst_HEADERS = systemclient.h
-
-lnkdir = $(kde_datadir)/twin/
-lnk_DATA = system.desktop
-
-EXTRA_DIST = $(lnk_DATA)
-
-###KMAKE-start (don't edit or delete this block)
-
-###KMAKE-end
diff --git a/kwin-styles/system/system.desktop b/kwin-styles/system/system.desktop
deleted file mode 100644
index 94156b29..00000000
--- a/kwin-styles/system/system.desktop
+++ /dev/null
@@ -1,27 +0,0 @@
-[Desktop Entry]
-Name=System++
-Name[br]=Reizhiad++
-Name[cs]=Systém++
-Name[cy]=Cysawd++
-Name[eo]=Sistem++
-Name[fa]=سیستم++
-Name[fi]=Järjestelmä++
-Name[fr]=Système++
-Name[fy]=Systeem++
-Name[hi]=सिस्टम++
-Name[it]=Sistem++
-Name[ja]=システム++
-Name[lt]=Sistema++
-Name[lv]=Sistēma++
-Name[nds]=Systeem++
-Name[nl]=Systeem++
-Name[pa]=ਸਿਸਟਮ++
-Name[sl]=Sistem++
-Name[ta]=தளம்++
-Name[tg]=Системаи++
-Name[th]=แบบ System++
-Name[tr]=Sistem++
-Name[ven]=Sisitemu++
-Name[xh]=Indlela esetyenziswayo++
-Name[zu]=Indlela esetshenziswayo++
-X-KDE-Library=twin3_system
diff --git a/kwin-styles/system/systemclient.cpp b/kwin-styles/system/systemclient.cpp
deleted file mode 100644
index a676a02a..00000000
--- a/kwin-styles/system/systemclient.cpp
+++ /dev/null
@@ -1,737 +0,0 @@
-#include "systemclient.h"
-
-#include <tqlayout.h>
-#include <tqdrawutil.h>
-#include <tqbitmap.h>
-#include <tqtooltip.h>
-#include <tqlabel.h>
-#include <tqcursor.h>
-
-#include <kpixmapeffect.h>
-#include <kdrawutil.h>
-#include <klocale.h>
-#include <kapplication.h>
-#include <kdebug.h>
-
-// Default button tqlayout
-const char default_left[]  = "X";
-const char default_right[] = "HSIA";
-
-namespace System {
-
-static unsigned char iconify_bits[] = {
-    0x00, 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00};
-
-static unsigned char maximize_bits[] = {
-    0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00};
-
-static unsigned char r_minmax_bits[] = {
-    0x0c, 0x18, 0x33, 0x67, 0xcf, 0x9f, 0x3f, 0x3f};
-
-static unsigned char l_minmax_bits[] = {
-    0x30, 0x18, 0xcc, 0xe6, 0xf3, 0xf9, 0xfc, 0xfc};    
-    
-static unsigned char unsticky_bits[] = {
-    0x00, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x00};
-
-static unsigned char sticky_bits[] = {
-    0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00};
-
-static unsigned char question_bits[] = {
-    0x3c, 0x66, 0x60, 0x30, 0x18, 0x00, 0x18, 0x18};
-
-static KPixmap *aUpperGradient=0;
-static KPixmap *iUpperGradient=0;
-
-static KPixmap *btnPix=0;
-static KPixmap *btnPixDown=0;
-static KPixmap *iBtnPix=0;
-static KPixmap *iBtnPixDown=0;
-static TQColor *btnForeground;
-
-static bool pixmaps_created = false;
-
-static void drawButtonFrame(KPixmap *pix, const TQColorGroup &g)
-{
-    TQPainter p;
-    p.begin(pix);
-    p.setPen(g.mid());
-    p.drawLine(0, 0, 13, 0);
-    p.drawLine(0, 0, 0, 13);
-    p.setPen(g.light());
-    p.drawLine(13, 0, 13, 13);
-    p.drawLine(0, 13, 13, 13);
-    p.setPen(g.dark());
-    p.drawRect(1, 1, 12, 12);
-    p.end();
-}
-
-static void create_pixmaps()
-{
-    if(pixmaps_created)
-        return;
-    pixmaps_created = true;
-
-    if(TQPixmap::defaultDepth() > 8){
-        // titlebar
-        aUpperGradient = new KPixmap;
-        aUpperGradient->resize(32, 18);
-        iUpperGradient = new KPixmap;
-        iUpperGradient->resize(32, 18);
-        TQColor bgColor = kapp->tqpalette().active().background();
-        KPixmapEffect::gradient(*aUpperGradient,
-                                KDecoration::options()->color(KDecorationOptions::ColorFrame, true).light(130),
-                                bgColor,
-                                KPixmapEffect::VerticalGradient);
-        KPixmapEffect::gradient(*iUpperGradient,
-                                KDecoration::options()->color(KDecorationOptions::ColorFrame, false).light(130),
-                                bgColor,
-                                KPixmapEffect::VerticalGradient);
-
-        // buttons
-        KPixmap aPix;
-        aPix.resize(12, 12);
-        KPixmap iPix;
-        iPix.resize(12, 12);
-        KPixmap aInternal;
-        aInternal.resize(8, 8);
-        KPixmap iInternal;
-        iInternal.resize(8, 8);
-
-        TQColor hColor(KDecoration::options()->color(KDecorationOptions::ColorButtonBg, false));
-        KPixmapEffect::gradient(iInternal,
-                                hColor.dark(120),
-                                hColor.light(120),
-                                KPixmapEffect::DiagonalGradient);
-        KPixmapEffect::gradient(iPix,
-                                hColor.light(150),
-                                hColor.dark(150),
-                                KPixmapEffect::DiagonalGradient);
-
-        hColor =KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true);
-        KPixmapEffect::gradient(aInternal,
-                                hColor.dark(120),
-                                hColor.light(120),
-                                KPixmapEffect::DiagonalGradient);
-        KPixmapEffect::gradient(aPix,
-                                hColor.light(150),
-                                hColor.dark(150),
-                                KPixmapEffect::DiagonalGradient);
-        bitBlt(TQT_TQPAINTDEVICE(&aPix), 1, 1, TQT_TQPAINTDEVICE(&aInternal), 0, 0, 8, 8, TQt::CopyROP, true);
-        bitBlt(TQT_TQPAINTDEVICE(&iPix), 1, 1, TQT_TQPAINTDEVICE(&iInternal), 0, 0, 8, 8, TQt::CopyROP, true);
-
-        // normal buttons
-        btnPix = new KPixmap;
-        btnPix->resize(14, 14);
-        bitBlt(TQT_TQPAINTDEVICE(btnPix), 2, 2, TQT_TQPAINTDEVICE(&aPix), 0, 0, 10, 10, TQt::CopyROP, true);
-        drawButtonFrame(btnPix, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame, true));
-
-        iBtnPix = new KPixmap;
-        iBtnPix->resize(14, 14);
-        bitBlt(TQT_TQPAINTDEVICE(iBtnPix), 2, 2, TQT_TQPAINTDEVICE(&iPix), 0, 0, 10, 10, TQt::CopyROP, true);
-        drawButtonFrame(iBtnPix, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame, false));
-
-
-        // pressed buttons
-        hColor = KDecoration::options()->color(KDecorationOptions::ColorButtonBg, false);
-        KPixmapEffect::gradient(iInternal,
-                                hColor.light(130),
-                                hColor.dark(130),
-                                KPixmapEffect::DiagonalGradient);
-        KPixmapEffect::gradient(iPix,
-                                hColor.light(150),
-                                hColor.dark(150),
-                                KPixmapEffect::DiagonalGradient);
-
-        hColor =KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true);
-        KPixmapEffect::gradient(aInternal,
-                                hColor.light(130),
-                                hColor.dark(130),
-                                KPixmapEffect::DiagonalGradient);
-        KPixmapEffect::gradient(aPix,
-                                hColor.light(150),
-                                hColor.dark(150),
-                                KPixmapEffect::DiagonalGradient);
-        bitBlt(TQT_TQPAINTDEVICE(&aPix), 1, 1, TQT_TQPAINTDEVICE(&aInternal), 0, 0, 8, 8, TQt::CopyROP, true);
-        bitBlt(TQT_TQPAINTDEVICE(&iPix), 1, 1, TQT_TQPAINTDEVICE(&iInternal), 0, 0, 8, 8, TQt::CopyROP, true);
-
-        btnPixDown = new KPixmap;
-        btnPixDown->resize(14, 14);
-        bitBlt(TQT_TQPAINTDEVICE(btnPixDown), 2, 2, TQT_TQPAINTDEVICE(&aPix), 0, 0, 10, 10, TQt::CopyROP, true);
-        drawButtonFrame(btnPixDown, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
-                                                        true));
-
-        iBtnPixDown = new KPixmap;
-        iBtnPixDown->resize(14, 14);
-        bitBlt(TQT_TQPAINTDEVICE(iBtnPixDown), 2, 2, TQT_TQPAINTDEVICE(&iPix), 0, 0, 10, 10, TQt::CopyROP, true);
-        drawButtonFrame(iBtnPixDown, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
-                                                         false));
-    }
-    if(tqGray(KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true).rgb()) > 128)
-        btnForeground = new TQColor(TQt::black);
-    else
-        btnForeground = new TQColor(TQt::white);
-}
-
-static void delete_pixmaps()
-{
-    if(aUpperGradient){
-        delete aUpperGradient;
-        delete iUpperGradient;
-        delete btnPix;
-        delete btnPixDown;
-        delete iBtnPix;
-        delete iBtnPixDown;
-        aUpperGradient = 0;
-    }
-    delete btnForeground;
-    pixmaps_created = false;
-}
-
-SystemButton::SystemButton(SystemClient *parent, const char *name,
-                           const unsigned char *bitmap, const TQString& tip)
-: TQButton(parent->widget(), name)
-{
-   setTipText(tip);
-   setBackgroundMode( NoBackground );
-   setCursor(ArrowCursor);
-   resize(14, 14);
-   if(bitmap)
-      setBitmap(bitmap);
-   client = parent;
-}
-
-void SystemButton::setTipText(const TQString &tip)
-{
-   if (KDecoration::options()->showTooltips())
-   {
-      TQToolTip::remove(this );
-      TQToolTip::add(this, tip );
-   }
-}
-
-
-TQSize SystemButton::tqsizeHint() const
-{
-    return(TQSize(14, 14));
-}
-
-void SystemButton::reset()
-{
-   tqrepaint(false);
-}
-
-void SystemButton::setBitmap(const unsigned char *bitmap)
-{
-    deco = TQBitmap(8, 8, bitmap, true);
-    deco.setMask(deco);
-    tqrepaint();
-}
-
-void SystemButton::drawButton(TQPainter *p)
-{
-    if(btnPixDown){
-        if(client->isActive())
-            p->drawPixmap(0, 0, isDown() ? *btnPixDown : *btnPix);
-        else
-            p->drawPixmap(0, 0, isDown() ? *iBtnPixDown : *iBtnPix);
-    }
-    else{
-        TQColorGroup g = KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
-                                            client->isActive());
-        int x2 = width()-1;
-        int y2 = height()-1;
-        // outer frame
-        p->setPen(g.mid());
-        p->drawLine(0, 0, x2, 0);
-        p->drawLine(0, 0, 0, y2);
-        p->setPen(g.light());
-        p->drawLine(x2, 0, x2, y2);
-        p->drawLine(0, x2, y2, x2);
-        p->setPen(g.dark());
-        p->drawRect(1, 1, width()-2, height()-2);
-        // inner frame
-        g = KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, client->isActive());
-        p->fillRect(3, 3, width()-6, height()-6, g.background());
-        p->setPen(isDown() ? g.mid() : g.light());
-        p->drawLine(2, 2, x2-2, 2);
-        p->drawLine(2, 2, 2, y2-2);
-        p->setPen(isDown() ? g.light() : g.mid());
-        p->drawLine(x2-2, 2, x2-2, y2-2);
-        p->drawLine(2, x2-2, y2-2, x2-2);
-
-    }
-
-    if(!deco.isNull()){
-        p->setPen(*btnForeground);
-        p->drawPixmap(isDown() ? 4 : 3, isDown() ? 4 : 3, deco);
-    }
-}
-
-void SystemButton::mousePressEvent( TQMouseEvent* e )
-{
-   last_button = e->button();
-   TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
-   TQButton::mousePressEvent( &me );
-}
-
-void SystemButton::mouseReleaseEvent( TQMouseEvent* e )
-{
-   last_button = e->button();
-   TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
-   TQButton::mouseReleaseEvent( &me );
-}
-
-
-
-SystemClient::SystemClient(KDecorationBridge* bridge, KDecorationFactory* factory)
-    : KDecoration(bridge, factory)
-{}
-
-SystemClient::~SystemClient()
-{
-    for (int n=0; n<ButtonTypeCount; n++) {
-        if (button[n]) delete button[n];
-    }
-}
-
-void SystemClient::init()
-{
-   createMainWidget(0);
-   widget()->installEventFilter( this );
-
-   TQGridLayout* g = new TQGridLayout(widget(), 0, 0, 2);
-
-   if (isPreview())
-   {
-      g->addWidget(new TQLabel(i18n("<center><b>System++ preview</b></center>"), widget()), 1, 1);
-   }
-   else
-   {
-      g->addItem(new TQSpacerItem( 0, 0 ), 1, 1); // no widget in the middle
-   }
-//   g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
-   g->setRowStretch(1, 10);
-
-   g->addColSpacing(0, 2);
-   g->addColSpacing(2, 2);
-   g->addRowSpacing(2, 6);
-
-   TQBoxLayout* hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
-   hb->setResizeMode(TQLayout::FreeResize);
-   g->addLayout( hb, 0, 1 );
-   hb->addSpacing(3);   
-   
-   titlebar = new TQSpacerItem(10, 14, TQSizePolicy::Expanding,
-                              TQSizePolicy::Minimum);    
-
-    // setup titlebar buttons
-    for (int n=0; n<ButtonTypeCount; n++) button[n] = 0;
-    addButtons(hb, KDecoration::options()->customButtonPositions() ? 
-                   KDecoration::options()->titleButtonsLeft() : TQString(default_left));
-    hb->addSpacing(2);    
-    hb->addItem(titlebar);
-    hb->addSpacing(3);
-    addButtons(hb, KDecoration::options()->customButtonPositions() ? 
-                   KDecoration::options()->titleButtonsRight() : TQString(default_right));
-    hb->addSpacing(2);
-
-   widget()->setBackgroundMode(TQWidget::NoBackground);
-   recalcTitleBuffer();
-}
-
-void SystemClient::addButtons(TQBoxLayout *hb, const TQString& s)
-{
-    unsigned char *minmax_bits;
-    int l_max = KDecoration::options()->titleButtonsLeft().find('A');
-    if (s.length() > 0) {
-        for (unsigned n=0; n < s.length(); n++) {
-            switch (s[n]) {
-              case 'X': // Close button
-                  if ((!button[ButtonClose]) && isCloseable()) {
-                      button[ButtonClose] = new SystemButton(this, "close", NULL, i18n("Close"));
-                      connect( button[ButtonClose], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
-                      hb->addWidget(button[ButtonClose]);
-                      hb->addSpacing(1);
-                  }
-                  break;
-                  
-              case 'S': // Sticky button
-                  if (!button[ButtonSticky]) {
-                     button[ButtonSticky] = new SystemButton(this, "sticky", NULL, i18n("On all desktops"));
-                     if(isOnAllDesktops())
-                         button[ButtonSticky]->setBitmap(unsticky_bits);
-                     else
-                         button[ButtonSticky]->setBitmap(sticky_bits);
-                     connect( button[ButtonSticky], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( toggleOnAllDesktops() ) ) );
-                     hb->addWidget(button[ButtonSticky]);
-                     hb->addSpacing(1);
-                  }
-                  break;
-
-              case 'I': // Minimize button
-                  if ((!button[ButtonMinimize]) && isMinimizable())  {
-                      button[ButtonMinimize] = new SystemButton(this, "iconify", iconify_bits, i18n("Minimize"));
-                      connect( button[ButtonMinimize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( minimize() ) ) );
-                      hb->addWidget(button[ButtonMinimize]);
-                      hb->addSpacing(1);
-                  }
-                  break;
-
-              case 'A': // Maximize button
-                  if ((!button[ButtonMaximize]) && isMaximizable()) {
-                      if (maximizeMode()==MaximizeFull) {
-                          if (KDecoration::options()->customButtonPositions() && (l_max>-1))
-                              minmax_bits = l_minmax_bits;
-                          else
-                              minmax_bits = r_minmax_bits;
-                          button[ButtonMaximize] = new SystemButton(this, "maximize", minmax_bits, i18n("Restore"));
-                      }
-                      else
-                          button[ButtonMaximize] = new SystemButton(this, "maximize", maximize_bits, i18n("Maximize"));
-                      connect( button[ButtonMaximize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( maxButtonClicked() ) ) );
-                      hb->addWidget(button[ButtonMaximize]);
-                      hb->addSpacing(1);
-                  }
-                  break;
-
-              case 'H': // Help button
-                  if ((!button[ButtonHelp]) && providesContextHelp()) {
-                      button[ButtonHelp] = new SystemButton(this, "help", question_bits, i18n("Help"));
-                      connect( button[ButtonHelp], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( showContextHelp() ) ) );
-                      hb->addWidget(button[ButtonHelp]);
-                      hb->addSpacing(1);
-                  }
-                  break;
-            
-            }
-        }
-    }
-}
-
-bool SystemClient::eventFilter( TQObject* o, TQEvent* e )
-{
-    if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
-       return false;
-    switch( e->type())
-    {
-    case TQEvent::Resize:
-       resizeEvent(TQT_TQRESIZEEVENT( e ) );
-       return true;
-    case TQEvent::Paint:
-       paintEvent(TQT_TQPAINTEVENT( e ) );
-       return true;
-    case TQEvent::MouseButtonDblClick:
-       mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ) );
-       return true;
-    case TQEvent::MouseButtonPress:
-       processMousePressEvent(TQT_TQMOUSEEVENT( e ) );
-       return true;
-    case TQEvent::Wheel:
-       wheelEvent( TQT_TQWHEELEVENT( e ));
-       return true;
-    default:
-        break;
-    }
-    return false;
-}
-
-void SystemClient::reset(unsigned long)
-{
-   titleBuffer.resize(0, 0);
-   recalcTitleBuffer();
-   widget()->tqrepaint();
-   if (button[ButtonClose])
-       button[ButtonClose]->reset();
-   if (button[ButtonSticky])
-       button[ButtonSticky]->reset();
-   if (button[ButtonMinimize])
-       button[ButtonMinimize]->reset();
-   if (button[ButtonMaximize])
-       button[ButtonMaximize]->reset();
-   if (button[ButtonHelp])
-       button[ButtonHelp]->reset();
-}
-
-void SystemClient::maxButtonClicked()
-{
-   maximize( button[ButtonMaximize]->last_button );
-}
-
-void SystemClient::resizeEvent( TQResizeEvent* )
-{
-    //Client::resizeEvent( e );
-    recalcTitleBuffer();
-    doShape();
-    /*
-    if ( isVisibleToTLW() && !testWFlags( WStaticContents )) {
-        TQPainter p( this );
-	TQRect t = titlebar->tqgeometry();
-	t.setTop( 0 );
-	TQRegion r = rect();
-	r = r.subtract( t );
-	p.setClipRegion( r );
-	p.eraseRect( rect() );
-        }*/
-}
-
-void SystemClient::resize( const TQSize& s )
-{
-   widget()->resize( s );
-}
-
-
-TQSize SystemClient::tqminimumSize() const
-{
-   return widget()->tqminimumSize();
-}
-
-
-void SystemClient::recalcTitleBuffer()
-{
-    if(oldTitle == caption() && width() == titleBuffer.width())
-        return;
-    TQFontMetrics fm(options()->font(true));
-    titleBuffer.resize(width(), 18);
-    TQPainter p;
-    p.begin(&titleBuffer);
-    if(aUpperGradient)
-        p.drawTiledPixmap(0, 0, width(), 18, *aUpperGradient);
-    else
-        p.fillRect(0, 0, width(), 18,
-                   options()->tqcolorGroup(KDecorationOptions::ColorFrame, true).
-                   brush(TQColorGroup::Button));
-
-    TQRect t = titlebar->tqgeometry();
-    t.setTop( 2 );
-    t.setLeft( t.left() + 4 );
-    t.setRight( t.right() - 2 );
-
-    TQRegion r(t.x(), 0, t.width(), 18);
-    r -= TQRect(t.x()+((t.width()-fm.width(caption()))/2)-4,
-               0, fm.width(caption())+8, 18);
-    p.setClipRegion(r);
-    int i, ly;
-    for(i=0, ly=4; i < 4; ++i, ly+=3){
-        p.setPen(options()->color(KDecorationOptions::ColorTitleBar, true).light(150));
-        p.drawLine(0, ly, width()-1, ly);
-        p.setPen(options()->color(KDecorationOptions::ColorTitleBar, true).dark(120));
-        p.drawLine(0, ly+1, width()-1, ly+1);
-    }
-    p.setClipRect(t);
-    p.setPen(options()->color(KDecorationOptions::ColorFont, true));
-    p.setFont(options()->font(true));
-
-    p.drawText(t.x()+((t.width()-fm.width(caption()))/2)-4,
-               0, fm.width(caption())+8, 18, AlignCenter, caption());
-    p.setClipping(false);
-    p.end();
-    oldTitle = caption();
-}
-
-void SystemClient::captionChange()
-{
-   recalcTitleBuffer();
-   widget()->tqrepaint(titlebar->tqgeometry(), false);
-}
-
-void SystemClient::drawRoundFrame(TQPainter &p, int x, int y, int w, int h)
-{
-   kDrawRoundButton(&p, x, y, w, h,
-                    options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()), false);
-
-}
-
-void SystemClient::paintEvent( TQPaintEvent* )
-{
-    TQPainter p(widget());
-    TQRect t = titlebar->tqgeometry();
-
-    TQBrush fillBrush(TQBrush(widget()->tqcolorGroup().brush(TQColorGroup::Background)).pixmap() ?
-                     widget()->tqcolorGroup().brush(TQColorGroup::Background) :
-                     options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).
-                     brush(TQColorGroup::Button));
-
-    p.fillRect(1, 18, width()-2, height()-19, fillBrush);
-
-    t.setTop( 2 );
-    t.setLeft( t.left() + 4 );
-    t.setRight( t.right() - 2 );
-
-    if(isActive())
-        p.drawPixmap(0, 0, titleBuffer);
-    else{
-        if(iUpperGradient)
-            p.drawTiledPixmap(0, 0, width(), 18, *iUpperGradient);
-        else
-            p.fillRect(0, 0, width(), 18, fillBrush);
-        p.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
-        p.setFont(options()->font(isActive()));
-        p.drawText(t, AlignCenter, caption() );
-    }
-
-    p.setPen(options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).light());
-    p.drawLine(width()-20, height()-7, width()-10,  height()-7);
-    p.drawLine(width()-20, height()-5, width()-10,  height()-5);
-    p.setPen(options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).dark());
-    p.drawLine(width()-20, height()-6, width()-10,  height()-6);
-    p.drawLine(width()-20, height()-4, width()-10,  height()-4);
-
-    drawRoundFrame(p, 0, 0, width(), height());
-}
-
-#define TQCOORDARRLEN(x) sizeof(x)/(sizeof(TQCOORD)*2)
-
-void SystemClient::doShape()
-{
-    // using a bunch of TQRect lines seems much more efficent than bitmaps or
-    // point arrays
-
-    TQRegion mask;
-    kRoundMaskRegion(mask, 0, 0, width(), height());
-    setMask(mask);
-}
-
-void SystemClient::showEvent(TQShowEvent *)
-{
-//    Client::showEvent(ev);
-    doShape();
-    widget()->show();
-//    widget()->tqrepaint();
-}
-
-/*void SystemClient::windowWrapperShowEvent( TQShowEvent* )
-{
-    doShape();
-}*/
-
-void SystemClient::mouseDoubleClickEvent( TQMouseEvent * e )
-{
-   if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
-      titlebarDblClickOperation();
-}
-
-void SystemClient::wheelEvent( TQWheelEvent *e )
-{
-    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
-        titlebarMouseWheelOperation( e->delta());
-}
-
-void SystemClient::maximizeChange()
-{
-    unsigned char *minmax_bits;
-    int l_max = KDecoration::options()->titleButtonsLeft().find('A');
-    if (KDecoration::options()->customButtonPositions() && (l_max>-1))
-        minmax_bits = l_minmax_bits;
-    else
-        minmax_bits = r_minmax_bits;
-    if (button[ButtonMaximize]) {
-        button[ButtonMaximize]->setBitmap((maximizeMode()==MaximizeFull) ? minmax_bits : maximize_bits);
-        button[ButtonMaximize]->setTipText((maximizeMode()==MaximizeFull) ? i18n("Restore") : i18n("Maximize"));
-    }
-}
-
-void SystemClient::activeChange()
-{
-    widget()->tqrepaint(false);
-    if (button[ButtonClose])
-        button[ButtonClose]->reset();
-    if (button[ButtonSticky])
-        button[ButtonSticky]->reset();
-    if (button[ButtonMinimize])
-        button[ButtonMinimize]->reset();
-    if (button[ButtonMaximize])
-        button[ButtonMaximize]->reset();
-    if (button[ButtonHelp])
-        button[ButtonHelp]->reset();
-}
-
-void SystemClient::iconChange()
-{
-//   if (button[BtnMenu] && button[BtnMenu]->isVisible())
-//      button[BtnMenu]->tqrepaint(false);
-}
-
-void SystemClient::desktopChange()
-{
-   if (button[ButtonSticky]) {
-       button[ButtonSticky]->setBitmap(isOnAllDesktops() ? unsticky_bits : sticky_bits);
-       button[ButtonSticky]->setTipText(isOnAllDesktops() ? i18n("Not on all desktops") : i18n("On all desktops"));
-   }
-}
-
-/*void SystemClient::stickyChange(bool on)
-{
-}*/
-
-KDecoration::Position SystemClient::mousePosition(const TQPoint &p) const
-{
-   return KDecoration::mousePosition(p);
-}
-
-void SystemClient::borders(int& left, int& right, int& top, int& bottom) const
-{
-    left = 4;
-    right = 4;
-    top =  18;
-    bottom = 8;
-
-/*    if ((maximizeMode()==MaximizeFull) && !options()->moveResizeMaximizedWindows()) {
-        left = right = bottom = 0;
-        top = 1 + titleHeight + (borderSize-1);
-    }*/
-}
-
-SystemDecoFactory::SystemDecoFactory()
-{
-   create_pixmaps();
-}
-
-SystemDecoFactory::~SystemDecoFactory()
-{
-   delete_pixmaps();
-}
-
-KDecoration *SystemDecoFactory::createDecoration( KDecorationBridge *b )
-{
-   return new SystemClient(b, this);
-}
-
-bool SystemDecoFactory::reset( unsigned long changed )
-{
-   System::delete_pixmaps();
-   System::create_pixmaps();
-   // Ensure changes in tooltip state get applied
-   resetDecorations(changed);
-   return true;
-}
-
-bool SystemDecoFactory::supports( Ability ability )
-{
-    switch( ability )
-    {
-        case AbilityAnnounceButtons:
-        case AbilityButtonOnAllDesktops:
-        case AbilityButtonHelp:
-        case AbilityButtonMinimize:
-        case AbilityButtonMaximize:
-        case AbilityButtonClose:
-            return true;
-        default:
-            return false;
-    };
-}
-
-TQValueList<KDecorationFactory::BorderSize> SystemDecoFactory::borderSizes() const
-{ // the list must be sorted
-   return TQValueList< BorderSize >() << BorderNormal;
-}
-
-}
-
-extern "C" KDE_EXPORT KDecorationFactory *create_factory()
-{
-   return new System::SystemDecoFactory();
-}
-
-#include "systemclient.moc"
diff --git a/kwin-styles/system/systemclient.h b/kwin-styles/system/systemclient.h
deleted file mode 100644
index ecaf25ee..00000000
--- a/kwin-styles/system/systemclient.h
+++ /dev/null
@@ -1,113 +0,0 @@
-#ifndef __SYSTEMCLIENT_H
-#define __SYSTEMCLIENT_H
-
-#include <tqvariant.h>
-#include <tqbitmap.h>
-#include <tqbutton.h>
-
-#include <kpixmap.h>
-#include <kdecoration.h>
-#include <kdecorationfactory.h>
-
-
-class TQLabel;
-class TQSpacerItem;
-class TQBoxLayout;
-
-namespace System {
-
-class SystemButton;
-
-enum ButtonType {
-    ButtonClose=0,
-    ButtonSticky,
-    ButtonMinimize,
-    ButtonMaximize,
-    ButtonHelp,
-    ButtonTypeCount
-};
-
-class SystemClient : public KDecoration
-{
-   Q_OBJECT
-  TQ_OBJECT
-   public:
-      SystemClient(KDecorationBridge* bridge, KDecorationFactory* factory);
-      ~SystemClient();
-      virtual Position mousePosition(const TQPoint& p) const;
-      virtual void resize(const TQSize&);
-      virtual bool eventFilter(TQObject* o, TQEvent* e);
-      virtual void init();
-   protected:
-      virtual void maximizeChange();
-      virtual void captionChange();
-      virtual void shadeChange() {};
-      virtual void iconChange();
-      virtual void desktopChange();
-      virtual void activeChange();
-      virtual TQSize tqminimumSize() const;
-      virtual void borders(int&, int&, int&, int&) const;
-      virtual void reset( unsigned long changed );
-      void drawRoundFrame(TQPainter &p, int x, int y, int w, int h);
-      void resizeEvent( TQResizeEvent* );
-      void paintEvent( TQPaintEvent* );
-      void showEvent( TQShowEvent* );
-      void mouseDoubleClickEvent( TQMouseEvent * );
-      void wheelEvent(TQWheelEvent *e);
-      void doShape();
-      void recalcTitleBuffer();
-   private:
-      void addButtons(TQBoxLayout* hb, const TQString& buttons);
-   private slots:
-      void maxButtonClicked();
-
-   private:
-      SystemButton* button[ButtonTypeCount];
-      TQSpacerItem* titlebar;
-      TQPixmap titleBuffer;
-      TQString oldTitle;
-};
-
-class SystemButton : public TQButton
-{
-   public:
-      SystemButton(SystemClient *parent=0, const char *name=0,
-                   const unsigned char *bitmap=NULL, const TQString& tip=NULL);
-      void setBitmap(const unsigned char *bitmap);
-      void reset();
-      TQSize tqsizeHint() const;
-      void setTipText(const TQString &tip);
-      ButtonState last_button;
-   protected:
-      virtual void drawButton(TQPainter *p);
-      void drawButtonLabel(TQPainter *){}
-      TQBitmap deco;
-
-      void mousePressEvent( TQMouseEvent* e );
-      void mouseReleaseEvent( TQMouseEvent* e );
-
-   private:
-      SystemClient* client;
-};
-
-
-class SystemDecoFactory : public TQObject, public KDecorationFactory
-{
-   Q_OBJECT
-  TQ_OBJECT
-   public:
-      SystemDecoFactory();
-      virtual ~SystemDecoFactory();
-      virtual KDecoration *createDecoration(KDecorationBridge *);
-      virtual bool reset(unsigned long);
-      virtual bool supports( Ability ability );
-      virtual TQValueList< BorderSize > borderSizes() const;
-   private:
-      void readConfig();
-};
-
-
-
-}
-
-#endif
diff --git a/twin-styles/CMakeLists.txt b/twin-styles/CMakeLists.txt
new file mode 100644
index 00000000..255bbf18
--- /dev/null
+++ b/twin-styles/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include( "${TDE_CMAKE_DIR}/twin.cmake" )
+
+add_subdirectory( cde )
+add_subdirectory( glow )
+add_subdirectory( icewm )
+add_subdirectory( kde1 )
+add_subdirectory( kstep )
+add_subdirectory( openlook )
+add_subdirectory( riscos )
+add_subdirectory( smooth-blend )
+add_subdirectory( system )
diff --git a/twin-styles/Makefile.am b/twin-styles/Makefile.am
new file mode 100644
index 00000000..76abee7d
--- /dev/null
+++ b/twin-styles/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = kstep glow cde icewm openlook kde1 system riscos smooth-blend
+
+messages:
+	$(XGETTEXT) `find . -name \*.cpp` -o $(podir)/twin_art_clients.pot
diff --git a/twin-styles/cde/CMakeLists.txt b/twin-styles/cde/CMakeLists.txt
new file mode 100644
index 00000000..790ff84c
--- /dev/null
+++ b/twin-styles/cde/CMakeLists.txt
@@ -0,0 +1,34 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( config )
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES cde.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_cde ##################################
+
+tde_add_kpart( twin3_cde AUTOMOC
+  SOURCES cdeclient.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/cde/Makefile.am b/twin-styles/cde/Makefile.am
new file mode 100644
index 00000000..129a22bc
--- /dev/null
+++ b/twin-styles/cde/Makefile.am
@@ -0,0 +1,22 @@
+
+INCLUDES = $(all_includes) 
+
+SUBDIRS = . config
+
+kde_module_LTLIBRARIES = twin3_cde.la
+
+twin3_cde_la_SOURCES = cdeclient.cpp
+twin3_cde_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_cde_la_LIBADD = -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = cdeclient.h
+
+lnkdir = $(kde_datadir)/twin/
+lnk_DATA = cde.desktop
+
+EXTRA_DIST = $(lnk_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/cde/cde.desktop b/twin-styles/cde/cde.desktop
new file mode 100644
index 00000000..a5f1ac66
--- /dev/null
+++ b/twin-styles/cde/cde.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=CDE
+Name[af]=Cde
+Name[hi]=सीडीई
+Name[ne]=सीडीई
+X-KDE-Library=twin3_cde
diff --git a/twin-styles/cde/cdeclient.cpp b/twin-styles/cde/cdeclient.cpp
new file mode 100644
index 00000000..03eb14fa
--- /dev/null
+++ b/twin-styles/cde/cdeclient.cpp
@@ -0,0 +1,863 @@
+/*
+ *	$Id$
+ *
+ *	CDE KWin client - emulates the look and feel
+ *	of dtwm, the CDE window manager.
+ *
+ *	Copyright (c) 2000-2001, 2002
+ *		Chris Lee       <lee@azsites.com>
+ *		Lennart Kudling <kudling@kde.org>
+ *      	Fredrik H�glund <fredrik@kde.org>
+ *
+ *	Copyright (c) 2003,2004
+ *		Luciano Montanaro <mikelima@cirulla.net>
+ *
+ *	Originally based on the KStep client.
+ *
+ *	Distributed under the terms of the BSD license.
+ */
+
+#include "cdeclient.h"
+#include <tqdatetime.h>
+#include <tqlayout.h>
+#include <tqbutton.h>
+#include <tqcursor.h>
+#include <tqlabel.h>
+#include <tqtooltip.h>
+#include <tqdrawutil.h>
+#include <tqpainter.h>
+#include <tqapplication.h>
+#include <klocale.h>
+#include <kconfig.h>
+
+extern "C" KDE_EXPORT KDecorationFactory* create_factory()
+{
+    return new CDE::CdeClientFactory();
+}
+
+namespace CDE {
+
+static int s_frameWidth = 5;
+static int s_buttonSize = 19;
+static bool titlebarButtonMode = true;
+static bool coloredFrame = true;
+static TQt::AlignmentFlags textAlignment = TQt::AlignHCenter;
+
+// Precomputed border sizes for accessibility
+// The sizes are applied for tiny -> normal -> large -> very large -> huge ->
+// very huge -> oversized
+static const int borderSizes[] = { 4, 6, 9, 12, 18, 26, 42 };
+
+// Parameters needed to draw the widgets (offsets from the border)
+static int s_o1 = 4;
+static int s_o2 = 7;
+static int s_w1 = 11;
+static int s_w2 = 5;
+
+// These are the line segments for the X on the close button
+
+static const int NUM_CLOSEL_COORDS = 2 * 14;
+static const TQCOORD closeLLinesTemplate[NUM_CLOSEL_COORDS] =
+    { 14,3, 12,3,  12,3, 9,6,  5,3, 3,3,  3,3, 3,5,
+      3,5, 6,8, 6,9, 3,12,  3,12, 3,14 };
+
+static const int NUM_CLOSED_COORDS = 2 * 18;
+static const TQCOORD closeDLinesTemplate[NUM_CLOSED_COORDS] =
+    { 5,3, 8,6,  14,4, 14,5,  14,5, 11,8,  11,9, 14,12,  14,12, 14,14,
+      14,14, 12,14,  12,14, 9,11,  8,11, 5,14,  5,14, 4,14 };
+
+static TQCOORD closeLLines[NUM_CLOSEL_COORDS];
+
+static TQCOORD closeDLines[NUM_CLOSED_COORDS];
+
+// These are the line segments for the ? on the help button
+static const int NUM_HELPL_COORDS = 2 * 16;
+static const TQCOORD helpLLinesTemplate[NUM_HELPL_COORDS] =
+    { 4,6, 4,5,  4,5, 6,3,  6,3, 9,3,  10,3, 11,4,
+      9,7, 7,9,  7,9, 7,10,  7,14, 7,13,  8,12, 9,12  };
+
+static const int NUM_HELPD_COORDS = 2 * 14;
+static const TQCOORD helpDLinesTemplate[NUM_HELPD_COORDS] =
+    {  5,7, 8,6,  12,5, 12,8,  12,8, 10,10,  10,10, 10,11,
+       10,11, 8,11,  10,14, 10,13,  9,15, 8,15 };
+
+static TQCOORD helpLLines[NUM_HELPL_COORDS];
+
+static TQCOORD helpDLines[NUM_HELPD_COORDS];
+
+
+// This question mark is taller than the one above and
+// is positioned one pixel higher on the button
+/*
+static const TQCOORD helpLLines[] =
+    { 4,5, 4,4,  4,4, 6,2,  6,2, 9,2,  10,2, 11,3,
+      9,6, 7,8,  7,9, 7,10,  7,13, 8,12,  8,12, 9,12  };
+
+static const TQCOORD helpDLines[] =
+    {  5,6, 8,5,  12,4, 12,7,  12,7, 10,9,  10,10, 10,11,
+       10,11, 8,11,  10,13, 9,14,  9,14, 8,14 };
+*/
+// Same as the one above but with a larger dot under
+// the question mark
+/*
+static const TQCOORD helpLLines[] =
+    { 4,5, 4,4,  4,4, 6,2,  6,2, 9,2,  10,2, 11,3,
+      9,6, 7,8,  7,9, 7,10,  7,14, 7,13,  8,12, 9,12  };
+
+static const TQCOORD helpDLines[] =
+    {  5,6, 8,5,  12,4, 12,7,  12,7, 10,9,  10,10, 10,11,
+       10,11, 8,11,  10,13, 10,14,  9,15, 8,15 };
+*/
+
+static inline const KDecorationOptions* options()
+{
+    return KDecoration::options();
+}
+
+static void fixColorGroup(TQColorGroup & tqcolorGroup)
+{
+    TQColor light = tqcolorGroup.light();
+
+    int hue, saturation, value;
+
+    light.hsv(&hue, &saturation, &value);
+
+    if (value < 128)
+    {
+      light.setHsv(hue, saturation, 128);
+      tqcolorGroup.setColor(TQColorGroup::Light, light);
+    }
+
+    TQColor dark = tqcolorGroup.dark();
+
+    dark.hsv(&hue, &saturation, &value);
+
+    if (value < 84)
+    {
+      dark.setHsv(hue, saturation, 84);
+      tqcolorGroup.setColor(TQColorGroup::Dark, dark);
+    }
+}
+
+// scaling helper function used to scale the close 'X' glyph
+
+static int scaleCoord(int c)
+{
+    if (c < 6) return c;
+    if (c <= 11) return c + (s_buttonSize - 19) / 2;
+    return c + s_buttonSize - 19;
+}
+
+static void readConfig(CdeClientFactory *f)
+{
+    KConfig conf( "twincderc" );
+
+    conf.setGroup("General");
+    coloredFrame = conf.readBoolEntry( "UseTitleBarBorderColors", true );
+    titlebarButtonMode = conf.readBoolEntry( "TitlebarButtonMode", true );
+
+    TQString value = conf.readEntry( "TextAlignment", "AlignHCenter" );
+    if ( value == "AlignLeft" )
+	textAlignment = TQt::AlignLeft;
+    else if ( value == "AlignHCenter" )
+	textAlignment = TQt::AlignHCenter;
+    else if ( value == "AlignRight" )
+	textAlignment = TQt::AlignRight;
+
+
+    // find preferred border size
+    int i = options()->preferredBorderSize(f);
+    if (i >= 0 && i <= 6) s_frameWidth = borderSizes[i];
+
+    // Do not allow malicious users or corrupt config files to
+    // go past the domain of the valid border sizes.
+
+    // Size limit increased for accessability. LM
+    if (s_frameWidth < 0)  s_frameWidth = 0;
+    if (s_frameWidth > 30) s_frameWidth = 30;
+
+    // Force button size to be in a reasonable range.
+    // If the frame width is large, the button size must be large too.
+    s_buttonSize = TQFontMetrics(options()->font( true )).height() + 2;
+    if (s_buttonSize < 19) s_buttonSize = 19;
+    if (s_buttonSize < s_frameWidth) s_buttonSize = s_frameWidth;
+    s_buttonSize |= 1; // Be sure the button size is odd.
+
+    // Calculate widths and offsets for the button icons
+    s_o1 = s_buttonSize * 4 / 19;
+    s_o2 = s_buttonSize * 7 / 19;
+    s_w1 = s_buttonSize - 2 * s_o1;
+    s_w2 = s_buttonSize - 2 * s_o2;
+
+    // Copy and scale the close icon
+    int offset = (s_buttonSize - 19) / 2;
+    for (int i = 0; i < NUM_CLOSEL_COORDS; i++) {
+	closeLLines[i] = scaleCoord(closeLLinesTemplate[i]);
+    }
+    for (int i = 0; i < NUM_CLOSED_COORDS; i++) {
+	closeDLines[i] = scaleCoord(closeDLinesTemplate[i]);
+    }
+    // Copy and center the help icon
+    for (int i = 0; i < NUM_HELPL_COORDS; i++) {
+	helpLLines[i] = helpLLinesTemplate[i] + offset;
+    }
+    for (int i = 0; i < NUM_HELPD_COORDS; i++) {
+	helpDLines[i] = helpDLinesTemplate[i] + offset;
+    }
+}
+
+// ---------------------------------------
+
+CdeClientFactory::CdeClientFactory()
+{
+    CDE::readConfig(this);
+}
+
+CdeClientFactory::~CdeClientFactory()
+{
+}
+
+KDecoration *CdeClientFactory::createDecoration(KDecorationBridge *b)
+{
+    return new CdeClient(b, this);
+}
+
+bool CdeClientFactory::reset(unsigned long /*changed*/)
+{
+    // TODO Do not recreate decorations if it is not needed. Look at
+    // ModernSystem for how to do that
+    // For now just return true.
+    CDE::readConfig(this);
+    return true;
+}
+
+bool CdeClientFactory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonMenu:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+            return true;
+        default:
+            return false;
+    };
+}
+
+TQValueList< CdeClientFactory::BorderSize >
+CdeClientFactory::borderSizes() const
+{
+    // the list must be sorted
+    return TQValueList< BorderSize >() << BorderTiny << BorderNormal <<
+	BorderLarge << BorderVeryLarge <<  BorderHuge <<
+	BorderVeryHuge << BorderOversized;
+}
+
+// ---------------------------------------
+
+CdeClient::CdeClient(KDecorationBridge *b, KDecorationFactory *f)
+    : KDecoration(b, f)
+{
+}
+
+void CdeClient::init()
+{
+    createMainWidget(WStaticContents | WResizeNoErase | WRepaintNoErase);
+    widget()->installEventFilter(this);
+
+    widget()->setBackgroundMode(NoBackground);
+
+    mainLayout = new TQVBoxLayout(widget());
+    TQBoxLayout* windowLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+    titleLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+
+    // TODO Check if this stuff can be simplified.
+    // Border sizes are from a fixed set now.
+    if ( s_frameWidth > 1 )
+    {
+       // the style normally draws a black frame around the window, so we
+       // need 1 line of space for that in addition to the normal window frame
+    	mainLayout->setMargin( s_frameWidth+1 );
+    }
+    else
+    {
+	// but if the frame is set to just 1 pixel we just draw the black frame
+	// instead of the normal window frame, so no extra space is needed. if
+	// its 0 we don't draw anything.
+    	mainLayout->setMargin( s_frameWidth );
+    }
+
+    mainLayout->addLayout( titleLayout );
+    mainLayout->addLayout( windowLayout, 1 );
+
+    if (isPreview())
+        windowLayout->addWidget(new TQLabel(i18n(
+			"<center><b>CDE preview</b></center>"), widget()), 1);
+    else
+    	windowLayout->addItem( new TQSpacerItem( 0, 0 ));
+
+    for ( int i=0; i < BtnCount; i++ )
+        button[i] = NULL;
+
+    addClientButtons( options()->titleButtonsLeft() );
+
+    titlebar = new TQSpacerItem( 10, 16, TQSizePolicy::Expanding, TQSizePolicy::Minimum );
+    titleLayout->addItem( titlebar );
+
+    addClientButtons( options()->titleButtonsRight() );
+
+    titlebarPressed = false;
+    closing = false;
+}
+
+void CdeClient::addClientButtons( const TQString& s )
+{
+    if ( s.length() > 0 )
+        for ( unsigned int i = 0; i < s.length(); i++ )
+        {
+            switch( s[i].latin1() )
+            {
+                // Menu button
+                case 'M':
+                    if ( ! button[BtnMenu] )
+                    {
+                        button[BtnMenu] = new CdeButton( this, "menu", BtnMenu, i18n("Menu"), Qt::LeftButton|Qt::RightButton );
+                        connect( button[BtnMenu], TQT_SIGNAL(pressed()), TQT_SLOT(menuButtonPressed()) );
+                        connect( button[BtnMenu], TQT_SIGNAL(released()), TQT_SLOT(menuButtonReleased()) );
+                        titleLayout->addWidget( button[BtnMenu] );
+                    }
+                    break;
+
+                //Help button
+                case 'H':
+                    if ( providesContextHelp() && (! button[BtnHelp] ) )
+                    {
+                        button[BtnHelp] = new CdeButton( this, "help", BtnHelp, i18n("Help") );
+                        connect(button[BtnHelp],
+				TQT_SIGNAL(clicked()), TQT_SLOT(showContextHelp()));
+                        titleLayout->addWidget( button[BtnHelp] );
+                    }
+                    break;
+
+		//Minimize button
+                case 'I':
+                    if ( (! button[BtnIconify] ) && isMinimizable() )
+                    {
+                        button[BtnIconify] = new CdeButton( this, "iconify", BtnIconify, i18n("Minimize") );
+                        connect(button[BtnIconify],
+				TQT_SIGNAL(clicked()), TQT_SLOT(minimize()));
+                        titleLayout->addWidget( button[BtnIconify] );
+                    }
+                    break;
+
+                // Maximize button
+                case 'A':
+                    if ( (! button[BtnMax] ) && isMaximizable() )
+                    {
+                        button[BtnMax] = new CdeButton(this, "maximize", BtnMax, i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
+                        connect(button[BtnMax], TQT_SIGNAL(clicked()),
+				TQT_SLOT(maximizeButtonClicked()));
+                        titleLayout->addWidget( button[BtnMax] );
+                    }
+                    break;
+
+                // Close button
+                case 'X':
+                    if ( !button[BtnClose] && isCloseable())
+                    {
+                        button[BtnClose] = new CdeButton(this, "close", BtnClose, i18n("Close"));
+                        connect( button[BtnClose], TQT_SIGNAL( clicked()), TQT_SLOT(closeWindow()) );
+                        titleLayout->addWidget( button[BtnClose] );
+                    }
+		// Add onAlldesktops button and spacers
+            }
+        }
+
+}
+
+void CdeClient::captionChange()
+{
+    widget()->tqrepaint(titlebar->tqgeometry(), false);
+}
+
+void CdeClient::activeChange()
+{
+    for ( int i=0; i < BtnCount; i++ )
+	if ( button[i] ) button[i]->reset();
+
+    widget()->tqrepaint(false);
+}
+
+void CdeClient::maximizeChange()
+{
+    if ( button[BtnMax] ) {
+	bool m = maximizeMode() == MaximizeFull;
+	TQToolTip::remove(button[BtnMax]);
+	TQToolTip::add(button[BtnMax], m ? i18n("Restore") : i18n("Maximize"));
+	button[BtnMax]->tqrepaint();
+    }
+}
+
+void CdeClient::iconChange()
+{
+}
+
+void CdeClient::shadeChange()
+{
+}
+
+void CdeClient::showEvent(TQShowEvent *)
+{
+    widget()->tqrepaint();
+}
+
+void CdeClient::desktopChange()
+{
+    // Nothing to do yet
+}
+
+TQSize CdeClient::tqminimumSize() const
+{
+    return TQSize(2 * (s_buttonSize + s_frameWidth),
+	         2 * s_frameWidth + s_buttonSize);
+}
+
+void CdeClient::resize(const TQSize& s)
+{
+    widget()->resize(s);
+}
+
+void CdeClient::maximizeButtonClicked()
+{
+    if (button[BtnMax]) {
+	maximize(button[BtnMax]->lastButton());
+    }
+}
+
+void CdeClient::menuButtonPressed()
+{
+    static TQTime* t = NULL;
+    static CdeClient* lastClient = NULL;
+    if( t == NULL )
+	t = new TQTime;
+    bool dbl = ( lastClient == this && t->elapsed() <= TQApplication::doubleClickInterval());
+    lastClient = this;
+    t->start();
+    if( !dbl )
+    {
+	TQRect menuRect = button[BtnMenu]->rect();
+        TQPoint menuTop = button[BtnMenu]->mapToGlobal(menuRect.topLeft());
+        TQPoint menuBottom = 
+	    button[BtnMenu]->mapToGlobal(menuRect.bottomRight());
+        KDecorationFactory* f = factory();
+        showWindowMenu(TQRect(menuTop, menuBottom));
+        if( !f->exists( this )) // 'this' was deleted
+            return;
+	button[BtnMenu]->setDown(false);
+    }
+    else
+       closing = true;
+}
+
+void CdeClient::menuButtonReleased()
+{
+    if( closing )
+        closeWindow();
+}
+
+void CdeClient::resizeEvent( TQResizeEvent* e)
+{
+    if (widget()->isVisibleToTLW()) {
+        widget()->update();
+        int dx = 0;
+        int dy = 0;
+
+	    if ( e->oldSize().width() != width() )
+	       dx = 32 + TQABS( e->oldSize().width() -  width() );
+
+	    if ( e->oldSize().height() != height() )
+	       dy = 8 + TQABS( e->oldSize().height() -  height() );
+
+	    if ( dy )
+	       widget()->update( 0, height() - dy + 1, width(), dy );
+
+        if ( dx )
+        {
+	    widget()->update( width() - dx + 1, 0, dx, height() );
+	    widget()->update( TQRect( TQPoint(4,4),
+	    titlebar->tqgeometry().bottomLeft() - TQPoint(1,0) ) );
+	    widget()->update(TQRect(titlebar->tqgeometry().topRight(),
+			TQPoint(width() - 4, titlebar->tqgeometry().bottom())));
+
+	    // Titlebar needs no paint event
+	    TQApplication::postEvent( this, new TQPaintEvent( titlebar->tqgeometry(), false ) );
+	}
+    }
+}
+
+void CdeClient::paintEvent( TQPaintEvent* )
+{
+    TQPainter p(widget());
+
+    TQColorGroup tqcolorGroup;
+
+    if ( coloredFrame )
+	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorTitleBar, isActive() );
+    else
+	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorFrame, isActive() );
+
+    fixColorGroup( tqcolorGroup );
+
+    TQRect trect = titlebar->tqgeometry();
+    TQRect mrect = widget()->rect();
+
+    if ( s_frameWidth > 0 )
+    {
+	// draw black frame:
+	p.setPen( TQt::black );
+	p.drawRect( mrect );
+    }
+
+    p.setPen( TQt::NoPen );
+    p.setBrush( tqcolorGroup.background() );
+
+
+    if ( s_frameWidth > 1 )
+    {
+	bool shaded = isShade();
+	int longSide = s_frameWidth + s_buttonSize;
+
+	// draw frame-background:
+	p.drawRect( 1, 1,
+    		mrect.width() - 2, s_frameWidth );
+	p.drawRect( 1, mrect.height() - s_frameWidth - 1,
+		mrect.width() - 2, s_frameWidth );
+	p.drawRect( 1, s_frameWidth + 1,
+		s_frameWidth, mrect.height() - 2*s_frameWidth - 2 );
+	p.drawRect( mrect.width() - s_frameWidth - 1, s_frameWidth + 1,
+		s_frameWidth, mrect.height() - 2*s_frameWidth - 2 );
+
+	if ( ! shaded )
+	{
+	    // draw left  and right frames:
+	    qDrawShadePanel( &p, 1, longSide + 1,
+		s_frameWidth, mrect.height() - 2 * (longSide + 1),
+		tqcolorGroup );
+
+	    qDrawShadePanel( &p, mrect.width() - s_frameWidth - 1, longSide + 1,
+		s_frameWidth, mrect.height() - 2 * (longSide + 1),
+		tqcolorGroup );
+	}
+
+	// draw top and bottom frames:
+	qDrawShadePanel( &p, longSide + 1, 1,
+	    mrect.width() - 2 * (longSide + 1), s_frameWidth,
+	    tqcolorGroup );
+
+	qDrawShadePanel( &p, longSide + 1, mrect.height() - s_frameWidth - 1,
+	    mrect.width() - 2 * (longSide + 1), s_frameWidth,
+	    tqcolorGroup );
+
+	// draw light corner parts:
+	p.setPen( tqcolorGroup.light() );
+
+	// tl corner:
+	p.drawLine( 1, 1, longSide - 1, 1 );
+	p.drawLine( 1, 1, 1, longSide - 1 );
+
+	// tr corner:
+	p.drawLine( mrect.width() - 3, 1, mrect.width() - longSide - 1, 1 );
+	p.drawLine( mrect.width() - longSide - 1, 1,
+	    mrect.width() - longSide - 1, s_frameWidth - 1 );
+	p.drawLine( mrect.width() - s_frameWidth - 1, s_frameWidth,
+	    mrect.width() - s_frameWidth - 1, longSide - 1 );
+
+	// br corner:
+	if ( !shaded )
+	{
+	    p.drawLine( mrect.width() - 3, mrect.height() - longSide - 1,
+		mrect.width() - s_frameWidth - 1, mrect.height() - longSide - 1 );
+	}
+	p.drawLine( mrect.width() - s_frameWidth - 1, mrect.height() - longSide,
+	    mrect.width() - s_frameWidth - 1, mrect.height() - s_frameWidth - 1 );
+	p.drawLine( mrect.width() - s_frameWidth - 2, mrect.height() - s_frameWidth - 1,
+	    mrect.width() - longSide - 1, mrect.height() - s_frameWidth - 1 );
+	p.drawLine( mrect.width() - longSide - 1, mrect.height() - s_frameWidth,
+	    mrect.width() - longSide - 1, mrect.height() - 2 );
+
+	// bl corner:
+	if ( !shaded )
+	{
+	    p.drawLine( s_frameWidth-1, mrect.height() - longSide - 1,
+		2, mrect.height() - longSide - 1 );
+	}
+	p.drawLine( 1, mrect.height() - longSide - 1,
+	    1, mrect.height() - 3 );
+	p.drawLine( longSide - 1, mrect.height() - s_frameWidth - 1,
+	    s_frameWidth + 1, mrect.height() - s_frameWidth - 1 );
+
+	// draw dark corner parts:
+	p.setPen( tqcolorGroup.dark() );
+
+	// tl corner:
+	if ( !shaded )
+	    p.drawLine( 1, longSide, s_frameWidth, longSide );
+	p.drawLine( s_frameWidth, longSide - 1, s_frameWidth, s_frameWidth );
+	p.drawLine( s_frameWidth + 1, s_frameWidth, longSide, s_frameWidth );
+	p.drawLine( s_frameWidth + s_buttonSize, s_frameWidth, longSide, 1 );
+
+	// tr corner:
+	p.drawLine( mrect.width() - longSide - 1, s_frameWidth,
+	    mrect.width() - s_frameWidth - 2, s_frameWidth );
+	if ( !shaded )
+	{
+	    p.drawLine( mrect.width() - s_frameWidth - 1, longSide,
+		mrect.width() - 2, longSide );
+	}
+	p.drawLine( mrect.width() - 2, longSide, mrect.width() - 2, 1 );
+
+	// br corner:
+	p.drawLine( mrect.width() - longSide - 1, mrect.height() - 2,
+	    mrect.width() - 3, mrect.height() - 2 );
+	p.drawLine( mrect.width() - 2, mrect.height() - 2,
+	    mrect.width() - 2, mrect.height() - longSide - 2 );
+
+	// bl corner:
+	p.drawLine( 1, mrect.height() - 2,
+		longSide, mrect.height() - 2 );
+	p.drawLine( s_frameWidth + s_buttonSize, mrect.height() - 3,
+		longSide, mrect.height() - s_frameWidth - 1 );
+	p.drawLine( s_frameWidth, mrect.height() - s_frameWidth - 1,
+		s_frameWidth, mrect.height() - longSide - 1 );
+    }
+
+
+    p.setPen( TQt::NoPen );
+
+    if ( !coloredFrame )
+    {
+	tqcolorGroup = options()->tqcolorGroup( KDecoration::ColorTitleBar, isActive() );
+	fixColorGroup( tqcolorGroup );
+	p.setBrush( tqcolorGroup.background() );
+    }
+
+    // draw titlebar:
+    p.drawRect( trect );
+    qDrawShadePanel( &p, trect, tqcolorGroup, titlebarPressed );
+
+    // draw caption:
+    if ( titlebarPressed ) // move the caption right and down if the titlebar is pressed
+	trect.moveBy( 1,1 ); // Note: the real Mwm doesn't actually do this
+
+    p.setFont( options()->font( true ) );
+    p.setPen( options()->color( KDecoration::ColorFont, isActive() ) );
+    if ( p.fontMetrics().width( caption() ) > trect.width() - 6 )
+    {
+	// left align the text if its too wide to fit in the titlebar
+	p.drawText( trect.x() + 3, trect.y(),
+	    trect.width() - 6, trect.height(),
+	    AlignLeft | AlignVCenter, caption() );
+    }
+    else
+    {
+	// otherwise we'll draw it according to the user settings
+	p.drawText( trect.x() + 3, trect.y(),
+	    trect.width() - 6, trect.height(),
+	    textAlignment | AlignVCenter, caption() );
+    }
+
+    // Draw a line behind the wrapped window to prevent having
+    // unpainted areas when we're shaded.
+    p.setPen( tqcolorGroup.dark() );
+    p.drawLine(s_frameWidth + 1, mrect.height() - s_frameWidth - 2,
+               mrect.width() - s_frameWidth - 2, mrect.height() - s_frameWidth - 2);
+
+}
+
+KDecoration::Position CdeClient::mousePosition( const TQPoint& p ) const
+{
+    const int range = s_frameWidth + s_buttonSize;
+    const int border = s_frameWidth + 1;
+
+    Position m = PositionCenter;
+
+    if ((p.x() > border && p.x() < width() - border)
+         && (p.y() > border && p.y() < height() - border))
+        return PositionCenter;
+
+    if (p.y() < range && p.x() <= range)
+        m = PositionTopLeft;
+    else if (p.y() >= height() - range && p.x() >= width() - range)
+        m = PositionBottomRight;
+    else if (p.y() >= height()-range && p.x() <= range)
+        m = PositionBottomLeft;
+    else if (p.y() < range && p.x() >= width() - range)
+        m = PositionTopRight;
+    else if (p.y() < border)
+        m = PositionTop;
+    else if (p.y() >= height() - border)
+        m = PositionBottom;
+    else if (p.x() <= border)
+        m = PositionLeft;
+    else if (p.x() >= width() - border)
+        m = PositionRight;
+    else
+        m = PositionCenter;
+    return m;
+}
+
+void CdeClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+	titlebarDblClickOperation();
+}
+
+void CdeClient::wheelEvent( TQWheelEvent * e )
+{
+    if (isSetShade() || titleLayout->tqgeometry().contains( e->pos() ) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+void CdeClient::mousePressEvent( TQMouseEvent * e )
+{
+    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+    {
+	if ( titlebarButtonMode )
+	{
+	    titlebarPressed = true;
+	    widget()->tqrepaint(titlebar->tqgeometry(), false);
+	}
+    }
+}
+
+void CdeClient::borders(int &left, int &right, int &top, int &bottom) const
+{
+    left = right = bottom = s_frameWidth + 1;
+    top = s_buttonSize + s_frameWidth + 1;
+}
+
+void CdeClient::mouseReleaseEvent( TQMouseEvent * e )
+{
+    if ( e->button() == Qt::LeftButton && titlebarPressed )
+    {
+	titlebarPressed = false;
+	widget()->tqrepaint(titlebar->tqgeometry(), false);
+    }
+}
+
+bool CdeClient::eventFilter(TQObject *o, TQEvent *e)
+{
+    if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
+	return false;
+    switch (e->type()) {
+    case TQEvent::Resize:
+	resizeEvent(TQT_TQRESIZEEVENT(e));
+	return true;
+    case TQEvent::Paint:
+	paintEvent(TQT_TQPAINTEVENT(e));
+	return true;
+    case TQEvent::MouseButtonDblClick:
+	mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
+	return true;
+    case TQEvent::MouseButtonPress:
+	processMousePressEvent(TQT_TQMOUSEEVENT(e));
+	return true;
+    case TQEvent::Show:
+	showEvent(TQT_TQSHOWEVENT(e));
+	return true;
+    case TQEvent::Wheel:
+	wheelEvent( TQT_TQWHEELEVENT( e ));
+	return true;
+    default:
+	break;
+    }
+    return false;
+}
+
+// ---------------------------------------
+
+CdeButton::CdeButton(CdeClient* parent,
+	const char* name, int btnType, const TQString& tip, int realize_btns)
+    : TQButton(parent->widget(), name), m_btnType(btnType), last_button(Qt::NoButton)
+{
+    setBackgroundMode( TQWidget::NoBackground );
+    setFixedSize( s_buttonSize, s_buttonSize );
+    resize( s_buttonSize, s_buttonSize );
+    m_parent = parent;
+
+    setCursor(ArrowCursor);
+    TQToolTip::add(this, tip);
+
+    m_realize_buttons = realize_btns;
+}
+
+void CdeButton::reset()
+{
+    tqrepaint( false );
+}
+
+void CdeButton::drawButton( TQPainter* p )
+{
+    p->setBrush( options()->color( KDecoration::ColorTitleBar, m_parent->isActive() ) );
+    p->drawRect( 0, 0, s_buttonSize, s_buttonSize );
+
+    TQColorGroup tqcolorGroup =
+      options()->tqcolorGroup( KDecoration::ColorTitleBar, m_parent->isActive() );
+
+    fixColorGroup(tqcolorGroup);
+
+    qDrawShadePanel( p, 0, 0, s_buttonSize, s_buttonSize,
+		    tqcolorGroup, isDown() );
+
+    switch ( m_btnType )
+    {
+        case (BtnMenu):
+            qDrawShadePanel( p, s_o1, s_o2, s_w1, s_w2, tqcolorGroup );
+	break;
+	case (BtnHelp):
+	    p->setPen( tqcolorGroup.light() );
+	    p->drawLineSegments( TQPointArray(16, helpLLines) );
+	    p->setPen( tqcolorGroup.dark() );
+	    p->drawLineSegments( TQPointArray(14, helpDLines) );
+	break;
+	case (BtnIconify):
+	    qDrawShadePanel( p, s_o2, s_o2, s_w2, s_w2, tqcolorGroup );
+	break;
+	case (BtnMax):
+	    qDrawShadePanel( p, s_o1, s_o1, s_w1, s_w1, tqcolorGroup,
+		    m_parent->maximizeMode() == KDecoration::MaximizeFull );
+	break;
+	case (BtnClose):
+	    p->setPen( tqcolorGroup.dark() );
+	    p->drawLineSegments( TQPointArray(18, closeDLines) );
+	    p->setPen( tqcolorGroup.light() );
+	    p->drawLineSegments( TQPointArray(15, closeLLines) );
+	break;
+    }
+}
+
+void CdeButton::mousePressEvent(TQMouseEvent *e)
+{
+    last_button = e->button();
+    TQMouseEvent me(e->type(), e->pos(),
+	    e->globalPos(), (e->button()&m_realize_buttons)?Qt::LeftButton:Qt::NoButton, e->state());
+    TQButton::mousePressEvent(&me);
+}
+
+void CdeButton::mouseReleaseEvent(TQMouseEvent * e)
+{
+    last_button = e->button();
+    TQMouseEvent me(e->type(), e->pos(),
+	    e->globalPos(), (e->button()&m_realize_buttons)?Qt::LeftButton:Qt::NoButton, e->state());
+    TQButton::mouseReleaseEvent(&me);
+}
+
+} // CDE namespace
+
+#include "cdeclient.moc"
+
+// vim: sw=4
diff --git a/twin-styles/cde/cdeclient.h b/twin-styles/cde/cdeclient.h
new file mode 100644
index 00000000..e3a0e9ad
--- /dev/null
+++ b/twin-styles/cde/cdeclient.h
@@ -0,0 +1,119 @@
+/*
+ *	CDE KWin client - emulates the look and feel
+ *	of dtwm, the CDE window manager.
+ *
+ *	Copyright (c) 2000-2001, 2002
+ *		Chris Lee       <lee@azsites.com>
+ *		Lennart Kudling <kudling@kde.org>
+ *      	Fredrik H�glund <fredrik@kde.org>
+ *
+ *	Copyright (c) 2003
+ *		Luciano Montanaro <mikelima@cirulla.net>
+ *
+ *	Originally based on the KStep client.
+ *
+ *	Distributed under the terms of the BSD license.
+ */
+
+#ifndef __CDECLIENT_H
+#define __CDECLIENT_H
+
+#include <tqbutton.h>
+#include <tqbitmap.h>
+#include <kpixmap.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQLabel;
+class TQBoxLayout;
+class TQVBoxLayout;
+class TQSpacerItem;
+
+namespace CDE {
+
+class CdeClient;
+
+enum Buttons { BtnMenu=0, BtnHelp, BtnIconify, BtnMax, BtnClose, BtnCount };
+
+class CdeButton : public TQButton
+{
+public:
+    CdeButton( CdeClient* parent=0, const char* name=0, int btnType=0,
+               const TQString& tip=NULL, int realize_btns = Qt::LeftButton );
+    void reset();
+    ButtonState lastButton() { return last_button; }
+
+protected:
+    void mousePressEvent(TQMouseEvent *e);
+    void mouseReleaseEvent(TQMouseEvent *e);
+    virtual void drawButton(TQPainter *p);
+
+private:
+    CdeClient *m_parent;
+    int m_btnType;
+    int m_realize_buttons;
+    ButtonState last_button;
+};
+
+class CdeClient : public KDecoration
+{
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    CdeClient(KDecorationBridge *b, KDecorationFactory *f);
+    ~CdeClient() {};
+    void init();
+
+protected:
+    bool eventFilter(TQObject *o, TQEvent *e);
+    void resizeEvent( TQResizeEvent* );
+    void paintEvent( TQPaintEvent* );
+
+    void showEvent(TQShowEvent *);
+    void addClientButtons( const TQString& );
+    void mouseDoubleClickEvent( TQMouseEvent* );
+    void wheelEvent( TQWheelEvent * );
+    void captionChange();
+    void desktopChange();
+    void activeChange();
+    void shadeChange();
+    void iconChange();
+    TQSize tqminimumSize() const;
+    void resize(const TQSize &size);
+    void borders(int &left, int &right, int &top, int &bottom) const;
+    void mousePressEvent( TQMouseEvent* );
+    void mouseReleaseEvent( TQMouseEvent* );
+    void maximizeChange();
+    Position mousePosition( const TQPoint& p ) const;
+
+protected slots:
+    void menuButtonPressed();
+    void menuButtonReleased();
+    void maximizeButtonClicked();
+
+private:
+    CdeButton* button[BtnCount];
+    TQVBoxLayout* mainLayout;
+    TQBoxLayout*  titleLayout;
+    TQSpacerItem* titlebar;
+    bool titlebarPressed;
+    bool closing;
+};
+
+class CdeClientFactory: public TQObject, public KDecorationFactory
+{
+public:
+    CdeClientFactory();
+    virtual ~CdeClientFactory();
+    virtual KDecoration *createDecoration(KDecorationBridge *);
+    virtual bool supports( Ability ability );
+    virtual bool reset(unsigned long changed);
+
+    TQValueList< CdeClientFactory::BorderSize > borderSizes() const;
+
+};
+
+}
+
+#endif
+
diff --git a/twin-styles/cde/config/CMakeLists.txt b/twin-styles/cde/config/CMakeLists.txt
new file mode 100644
index 00000000..5faec263
--- /dev/null
+++ b/twin-styles/cde/config/CMakeLists.txt
@@ -0,0 +1,28 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### twin_cde_config (module) ###################
+
+tde_add_kpart( twin_cde_config AUTOMOC
+  SOURCES config.cpp
+  LINK tdeui-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/cde/config/Makefile.am b/twin-styles/cde/config/Makefile.am
new file mode 100644
index 00000000..3e5bd243
--- /dev/null
+++ b/twin-styles/cde/config/Makefile.am
@@ -0,0 +1,17 @@
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = twin_cde_config.la
+
+twin_cde_config_la_SOURCES = config.cpp
+twin_cde_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin_cde_config_la_LIBADD  = $(LIB_TDEUI)
+
+METASOURCES = AUTO
+noinst_HEADERS = config.h
+
+lnkdir = $(kde_datadir)/twin/
+
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/cde/config/config.cpp b/twin-styles/cde/config/config.cpp
new file mode 100644
index 00000000..fcd2de42
--- /dev/null
+++ b/twin-styles/cde/config/config.cpp
@@ -0,0 +1,131 @@
+// $Id$
+#include "config.h"
+#include <kapplication.h>
+#include <kglobal.h>
+#include <tqwhatsthis.h>
+#include <tqvbox.h>
+#include <klocale.h>
+
+extern "C" KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
+{
+	return new CdeConfig(conf, parent);
+}
+
+
+/* NOTE: 
+ * 'conf' 	is a pointer to the twindecoration modules open twin config,
+ *			and is by default set to the "Style" group.
+ *
+ * 'parent'	is the parent of the TQObject, which is a VBox inside the
+ *			Configure tab in twindecoration
+ */
+
+CdeConfig::CdeConfig( KConfig* conf, TQWidget* parent )
+	: TQObject( parent )
+{
+	cdeConfig = new KConfig("twincderc");
+	KGlobal::locale()->insertCatalogue("twin_art_clients");
+	
+	groupBox = new TQVBox( parent );
+	
+	bgAlign = new TQButtonGroup( 3, Qt::Horizontal, i18n("Text &Alignment"), groupBox );
+	bgAlign->setExclusive( true );
+	TQWhatsThis::add( bgAlign, i18n("Use these buttons to set the tqalignment of the titlebar caption text.") );
+	new TQRadioButton( i18n("Left"), bgAlign, "AlignLeft" );
+	TQRadioButton *radio2 = new TQRadioButton( i18n("Centered"), bgAlign, "AlignHCenter" );
+	radio2->setChecked( true );
+	new TQRadioButton( i18n("Right"), bgAlign, "AlignRight" );
+	
+	cbColorBorder = new TQCheckBox( i18n("Draw window frames using &titlebar colors"), groupBox );
+	TQWhatsThis::add( cbColorBorder, i18n("When selected, the window decoration borders "
+					     "are drawn using the titlebar colors. Otherwise, they are "
+					     "drawn using normal border colors instead.") );
+	
+//	cbTitlebarButton = new TQCheckBox( i18n("Titlebar acts like a &pushbutton when clicked"), groupBox );
+//	TQWhatsThis::add( cbTitlebarButton, i18n("When selected, this option causes the window titlebar to behave "
+//						"as if it was a pushbutton when you click it to move the window.") );
+	
+	(void) new TQLabel( i18n("Tip: If you want the look of the original Motif(tm) Window Manager,\n"
+				"click the \"Buttons\" tab above and remove the help\n"
+				"and close buttons from the titlebar."), groupBox );
+	
+	// Load configuration options
+	load( conf );
+
+	// Ensure we track user changes properly
+	connect( cbColorBorder, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
+//	connect( cbTitlebarButton, TQT_SIGNAL(clicked()), TQT_SLOT(slotSelectionChanged()) );
+	connect( bgAlign, TQT_SIGNAL(clicked(int)), TQT_SLOT(slotSelectionChanged(int)) );
+
+	// Make the widgets visible in twindecoration
+	groupBox->show();
+}
+
+
+CdeConfig::~CdeConfig()
+{
+	delete bgAlign;
+	delete groupBox;
+	delete cdeConfig;
+}
+
+
+void CdeConfig::slotSelectionChanged()
+{
+	emit changed();
+}
+
+void CdeConfig::slotSelectionChanged( int )
+{
+	emit changed();
+}
+
+// Loads the configurable options from the twinrc config file
+// It is passed the open config from twindecoration to improve efficiency
+void CdeConfig::load( KConfig* /*conf*/ )
+{
+	cdeConfig->setGroup("General");
+
+	TQString value = cdeConfig->readEntry( "TextAlignment", "AlignHCenter" );
+	TQRadioButton *button = (TQRadioButton*)bgAlign->child( (const char *)value.latin1() );
+	if ( button )
+	    button->setChecked( true );
+
+	bool coloredFrame = cdeConfig->readBoolEntry( "UseTitleBarBorderColors", true );
+	cbColorBorder->setChecked( coloredFrame );
+
+//	bool titlebarButton = cdeConfig->readBoolEntry( "TitlebarButtonMode", true );
+//	cbTitlebarButton->setChecked( titlebarButton );
+}
+
+
+// Saves the configurable options to the twinrc config file
+void CdeConfig::save( KConfig* /*conf*/ )
+{
+	cdeConfig->setGroup("General");
+
+	TQRadioButton *button = (TQRadioButton*)bgAlign->selected();
+	if ( button )
+	    cdeConfig->writeEntry( "TextAlignment", TQString(button->name()) );
+
+	cdeConfig->writeEntry( "UseTitleBarBorderColors", cbColorBorder->isChecked() );
+//	cdeConfig->writeEntry( "TitlebarButtonMode", cbTitlebarButton->isChecked() );
+	
+	// Ensure others trying to read this config get updated
+	cdeConfig->sync();
+}
+
+
+// Sets UI widget defaults which must correspond to style defaults
+void CdeConfig::defaults()
+{
+	TQRadioButton *button = (TQRadioButton*)bgAlign->child( "AlignHCenter" );
+	if ( button )
+	    button->setChecked( true );
+
+	cbColorBorder->setChecked( true );
+//	cbTitlebarButton->setChecked( true );
+}
+
+#include "config.moc"
+// vim: ts=4
diff --git a/twin-styles/cde/config/config.h b/twin-styles/cde/config/config.h
new file mode 100644
index 00000000..fc7fa136
--- /dev/null
+++ b/twin-styles/cde/config/config.h
@@ -0,0 +1,52 @@
+#ifndef __KDE_CDECONFIG_H
+#define __KDE_CDECONFIG_H
+
+#include <tqcheckbox.h>
+#include <tqgroupbox.h>
+#include <tqbuttongroup.h>
+#include <tqlabel.h>
+#include <tqradiobutton.h>
+#include <tqhbox.h>
+#include <kconfig.h>
+
+class TQCheckBox;
+class TQGroupBox;
+class TQVBox;
+class TQLabel;
+class TQRadioButton;
+
+class CdeConfig: public TQObject
+{
+	Q_OBJECT
+  TQ_OBJECT
+
+	public:
+		CdeConfig( KConfig* conf, TQWidget* parent );
+		~CdeConfig();
+
+	// These public signals/slots work similar to KCM modules
+	signals:
+		void changed();
+
+	public slots:
+		void load( KConfig* conf );	
+		void save( KConfig* conf );
+		void defaults();
+
+	protected slots:
+		void slotSelectionChanged();	// Internal use
+		void slotSelectionChanged( int );
+		
+	private:
+		KConfig*   	cdeConfig;
+		TQCheckBox* 	cbColorBorder;
+//		TQCheckBox* 	cbTitlebarButton;
+		TQHBox* 	        groupBox;
+		TQGroupBox* 	gbSlider;
+		TQButtonGroup*	bgAlign;
+};
+
+
+#endif
+
+// vim: ts=4
diff --git a/twin-styles/configure.in.in b/twin-styles/configure.in.in
new file mode 100644
index 00000000..e93b34e6
--- /dev/null
+++ b/twin-styles/configure.in.in
@@ -0,0 +1,3 @@
+if test "x$kde_use_qt_mac" = "xyes"; then
+	DO_NOT_COMPILE="$DO_NOT_COMPILE twin-styles"
+fi
diff --git a/twin-styles/glow/CMakeLists.txt b/twin-styles/glow/CMakeLists.txt
new file mode 100644
index 00000000..76d0a23e
--- /dev/null
+++ b/twin-styles/glow/CMakeLists.txt
@@ -0,0 +1,35 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( config )
+add_subdirectory( themes )
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES glow.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_glow ################################
+
+tde_add_kpart( twin3_glow AUTOMOC
+  SOURCES glowbutton.cpp glowclient.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/glow/Makefile.am b/twin-styles/glow/Makefile.am
new file mode 100644
index 00000000..bb624e59
--- /dev/null
+++ b/twin-styles/glow/Makefile.am
@@ -0,0 +1,22 @@
+
+INCLUDES = $(all_includes)
+
+SUBDIRS = . config themes
+
+kde_module_LTLIBRARIES = twin3_glow.la
+
+twin3_glow_la_SOURCES = glowclient.cpp glowbutton.cpp
+twin3_glow_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_glow_la_LIBADD  = $(LIB_TDECORE) -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = glowclient.h glowbutton.h resources.h
+
+linkdir = $(kde_datadir)/twin/
+link_DATA = glow.desktop
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/config/CMakeLists.txt b/twin-styles/glow/config/CMakeLists.txt
new file mode 100644
index 00000000..bfcc2633
--- /dev/null
+++ b/twin-styles/glow/config/CMakeLists.txt
@@ -0,0 +1,28 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### twin_glow_config (module) ##################
+
+tde_add_kpart( twin_glow_config AUTOMOC
+  SOURCES glowconfigdialog.cpp
+  LINK tdeui-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/glow/config/Makefile.am b/twin-styles/glow/config/Makefile.am
new file mode 100644
index 00000000..bf3d334b
--- /dev/null
+++ b/twin-styles/glow/config/Makefile.am
@@ -0,0 +1,17 @@
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = twin_glow_config.la
+
+twin_glow_config_la_SOURCES = glowconfigdialog.cpp
+twin_glow_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin_glow_config_la_LIBADD = $(LIB_TDEUI)
+
+METASOURCES = AUTO
+noinst_HEADERS = glowconfigdialog.h
+
+lnkdir = $(kde_datadir)/twin/
+
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/config/bitmaps.h b/twin-styles/glow/config/bitmaps.h
new file mode 100644
index 00000000..7ecb262a
--- /dev/null
+++ b/twin-styles/glow/config/bitmaps.h
@@ -0,0 +1,55 @@
+/***************************************************************************
+                          bitmaps.h  -  description
+                             -------------------
+    begin                : Thu Sep 12 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef BITMAPS_H
+#define BITMAPS_H
+
+#define BITMAP_SIZE 17
+
+static unsigned char close_bits[] = {
+ 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0xf8,0x00,0x00,0x0c,0x10,0x10,0x60,
+ 0x30,0x18,0x00,0x60,0x0c,0xc8,0xc0,0x07,0x16,0x80,0x03,0x60,0xc0,0x07,0x00,
+ 0x60,0x0c,0x00,0x30,0x18,0xf8,0x10,0x10,0x00,0x00,0x00,0x46,0x00,0x00,0xfe,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x89,0xf3,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
+static unsigned char help_bits[] = {
+ 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x80,0x07,0xb6,
+ 0x40,0x0c,0x00,0x00,0x0c,0xc8,0x00,0x0c,0x16,0x00,0x06,0xb6,0x00,0x03,0x00,
+ 0x00,0x01,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x00,0x00,0xac,0x00,0x00,0xfe,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x24,0xc4,0x3f,0x40,0x01,0xf3,0x00,0x00,
+ 0x70,0xb9,0x65,0x40,0x70,0xb9,0x65,0x40 };
+static unsigned char maximizeoff_bits[] = {
+ 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0xf0,0x1f,0x60,
+ 0xf0,0x1f,0x00,0x10,0x10,0xc8,0x10,0x10,0x16,0x10,0x10,0x60,0x10,0x10,0x00,
+ 0x10,0x10,0x00,0x10,0x10,0x1e,0xf0,0x1f,0x00,0x00,0x00,0x50,0x00,0x00,0xfe,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x68,0xb9,0x65,0x40,0x01,0xf2,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xe0,0xb1,0x65,0x40 };
+static unsigned char minimize_bits[] = {
+ 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x10,0x00,0x00,0x0c,0x00,0x00,0xb6,
+ 0xe0,0x0f,0x00,0x00,0x00,0xc8,0x20,0x08,0x16,0x60,0x0c,0xb6,0xc0,0x06,0x00,
+ 0x80,0x03,0x00,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x00,0xb2,0x00,0x00,0xfe,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
+static unsigned char stickyoff_bits[] = {
+ 0x00,0x00,0x16,0x00,0x00,0x16,0x00,0x00,0x1e,0x00,0x00,0x0c,0x50,0x15,0x60,
+ 0xe0,0x00,0x00,0xf0,0x11,0xc8,0xe0,0x00,0x16,0x50,0x15,0x60,0x00,0x00,0x00,
+ 0x10,0x11,0x00,0x00,0x00,0x1e,0x50,0x15,0x00,0x00,0x00,0x46,0x00,0x00,0xfe,
+ 0x00,0x00,0x0a,0x00,0x00,0x00,0x00,0x00,0x00,0x0a,0x08,0x31,0xf2,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x29,0xf2,0x00,0x00 };
+
+#endif
+
diff --git a/twin-styles/glow/config/glowconfigdialog.cpp b/twin-styles/glow/config/glowconfigdialog.cpp
new file mode 100644
index 00000000..f8ff62fd
--- /dev/null
+++ b/twin-styles/glow/config/glowconfigdialog.cpp
@@ -0,0 +1,369 @@
+/***************************************************************************
+                          glowconfigdialog.cpp  -  description
+                             -------------------
+    begin                : Thu Sep 12 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include <tqbitmap.h>
+#include <tqbuttongroup.h>
+#include <tqcheckbox.h>
+#include <tqcombobox.h>
+#include <tqdir.h>
+#include <tqfileinfo.h>
+#include <tqgroupbox.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqlistview.h>
+#include <tqpushbutton.h>
+#include <tqsignalmapper.h>
+#include <tqstringlist.h>
+#include <kconfig.h>
+#include <kcolorbutton.h>
+#include <kdebug.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kpixmap.h>
+#include <kpixmapeffect.h>
+#include <kstandarddirs.h>
+#include "bitmaps.h"
+#include "glowconfigdialog.h"
+#include "../resources.h"
+
+#define NUMBER_OF_BUTTONS 5
+
+extern "C"
+{
+	KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
+	{
+		return(new GlowConfigDialog(conf, parent));
+	}
+}
+
+GlowConfigDialog::GlowConfigDialog( KConfig * conf, TQWidget * parent )
+	: TQObject(parent)
+{
+	_glowConfig = new KConfig("twinglowrc");
+	KGlobal::locale()->insertCatalogue("twin_glow_config");
+
+	_main_group_box = new TQWidget(parent);
+	TQVBoxLayout *main_group_boxLayout = new TQVBoxLayout(_main_group_box);
+	main_group_boxLayout->tqsetAlignment(TQt::AlignTop | TQt::AlignLeft);
+	main_group_boxLayout->setSpacing(6);
+
+	//-------------------------------------------------------------------------
+	// themes
+
+	_theme_list_view = new TQListView (_main_group_box, "theme_list_view");
+	_theme_list_view->addColumn (i18n("Theme"));
+	_theme_list_view->addColumn (i18n("Button Size"));
+        _theme_list_view->setAllColumnsShowFocus(true);
+        _theme_list_view->setResizeMode(TQListView::AllColumns);
+
+	main_group_boxLayout->addWidget (_theme_list_view);
+	TQObject::connect (_theme_list_view, TQT_SIGNAL(selectionChanged()),
+			this, TQT_SLOT(slotThemeListViewSelectionChanged()));
+	slotLoadThemeList();
+
+	_button_glow_color_group_box = new TQGroupBox(
+		0, Qt::Horizontal, i18n("Button Glow Colors"), _main_group_box);
+	TQHBoxLayout *colorHBoxLayout =
+		new TQHBoxLayout(_button_glow_color_group_box->tqlayout());
+
+	// create buttons
+	TQSize buttonSize(BITMAP_SIZE, BITMAP_SIZE);
+	TQPixmap pm(buttonSize);
+	pm.fill(TQt::black);
+
+	_stickyButton = new TQPushButton(_button_glow_color_group_box);
+	pm.setMask(TQBitmap(buttonSize, stickyoff_bits, true));
+	_stickyButton->setPixmap(pm);
+	colorHBoxLayout->addWidget(_stickyButton);
+	_titleButtonList.push_back(_stickyButton);
+
+	_helpButton = new TQPushButton(_button_glow_color_group_box);
+	pm.setMask(TQBitmap(buttonSize, help_bits, true));
+	_helpButton->setPixmap(pm);
+	colorHBoxLayout->addWidget(_helpButton);
+	_titleButtonList.push_back(_helpButton);
+
+	_iconifyButton = new TQPushButton(_button_glow_color_group_box);
+	pm.setMask(TQBitmap(buttonSize, minimize_bits, true));
+	_iconifyButton->setPixmap(pm);
+	colorHBoxLayout->addWidget(_iconifyButton);
+	_titleButtonList.push_back(_iconifyButton);
+
+	_maximizeButton = new TQPushButton(_button_glow_color_group_box);
+	pm.setMask(TQBitmap(buttonSize, maximizeoff_bits, true));
+	_maximizeButton->setPixmap(pm);
+	colorHBoxLayout->addWidget(_maximizeButton);
+	_titleButtonList.push_back(_maximizeButton);
+
+	_closeButton = new TQPushButton(_button_glow_color_group_box);
+	pm.setMask(TQBitmap(buttonSize, close_bits, true));
+	_closeButton->setPixmap(pm);
+	colorHBoxLayout->addWidget(_closeButton);
+	_titleButtonList.push_back(_closeButton);
+
+	// create signal mapper
+	_titleButtonMapper = new TQSignalMapper(this);
+	for( uint i=0; i<_titleButtonList.size(); i++ ) {
+		_titleButtonMapper->setMapping(TQT_TQOBJECT(_titleButtonList[i]), i);
+		connect(_titleButtonList[i], TQT_SIGNAL(clicked()),_titleButtonMapper, TQT_SLOT(map()));
+	}
+	connect(_titleButtonMapper, TQT_SIGNAL(mapped(int)),this, TQT_SLOT(slotTitleButtonClicked(int)));
+
+	_colorButton = new KColorButton(_button_glow_color_group_box);
+	_colorButton->setEnabled(false);
+	connect(_colorButton, TQT_SIGNAL(changed(const TQColor&)),
+		this, TQT_SLOT(slotColorButtonChanged(const TQColor&)));
+
+	colorHBoxLayout->addItem(new TQSpacerItem(
+		200, 20, TQSizePolicy::Expanding, TQSizePolicy::Minimum));
+	colorHBoxLayout->addWidget(_colorButton);
+
+	main_group_boxLayout->addWidget(_button_glow_color_group_box);
+
+	TQHBoxLayout *titlebarGradientTypeLayout = new TQHBoxLayout();
+	_titlebarGradientTypeComboBox = new TQComboBox(_main_group_box);
+
+    KConfig *c = KGlobal::config();
+    KConfigGroupSaver cgs( c, TQString::tqfromLatin1("WM") );
+    TQColor activeBackground = c->readColorEntry("activeBackground");
+    TQColor activeBlend = c->readColorEntry("activeBlend");
+
+	// If the colors are equal, change one to get a gradient effect
+	if (activeBackground==activeBlend) {
+		activeBackground = activeBackground.dark();
+	}
+	for (int i=0; i< KPixmapEffect::EllipticGradient; i++ ) {
+		KPixmap gradPixmap(TQSize(196,20));
+		KPixmapEffect::gradient(gradPixmap, activeBackground,
+								activeBlend, (KPixmapEffect::GradientType) i);
+
+		_titlebarGradientTypeComboBox->insertItem(gradPixmap, i);
+	}
+
+	connect(_titlebarGradientTypeComboBox, TQT_SIGNAL(activated(int)),
+		this, TQT_SLOT(slotTitlebarGradientTypeChanged(int)));
+	titlebarGradientTypeLayout->addWidget(
+		new TQLabel(i18n("Titlebar gradient:"), _main_group_box));
+	titlebarGradientTypeLayout->addWidget(_titlebarGradientTypeComboBox, 0, TQt::AlignLeft);
+        titlebarGradientTypeLayout->addStretch(10);
+	main_group_boxLayout->addLayout(titlebarGradientTypeLayout);
+
+
+	_showResizeHandleCheckBox = new TQCheckBox(
+			i18n("Show resize handle"),	_main_group_box);
+	connect(_showResizeHandleCheckBox, TQT_SIGNAL(clicked()),
+		this, TQT_SLOT(slotResizeHandleCheckBoxChanged()));
+	main_group_boxLayout->addWidget(_showResizeHandleCheckBox);
+
+	// load config and update user interface
+	load(conf);
+
+	_main_group_box->show();
+}
+
+GlowConfigDialog::~GlowConfigDialog()
+{
+	delete _main_group_box;
+	delete _glowConfig;
+	delete[] _buttonConfigMap;
+}
+
+void GlowConfigDialog::load( KConfig* /* conf */ )
+{
+	TQColor color;
+	const TQColor defaultCloseButtonColor(DEFAULT_CLOSE_BUTTON_COLOR);
+	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
+	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
+	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
+	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
+
+	_glowConfig->setGroup("General");
+
+	_buttonConfigMap = new TQColor[NUMBER_OF_BUTTONS];
+	color = _glowConfig->readColorEntry("stickyButtonGlowColor",
+			&defaultStickyButtonColor);
+	_buttonConfigMap[stickyButton] = color;
+
+	color = _glowConfig->readColorEntry("helpButtonGlowColor",
+			&defaultHelpButtonColor);
+	_buttonConfigMap[helpButton] = color;
+
+	color = _glowConfig->readColorEntry("iconifyButtonGlowColor",
+			&defaultIconifyButtonColor);
+	_buttonConfigMap[iconifyButton] = color;
+
+	color = _glowConfig->readColorEntry("maximizeButtonGlowColor",
+			&defaultMaximizeButtonColor);
+	_buttonConfigMap[maximizeButton] = color;
+
+	color = _glowConfig->readColorEntry("closeButtonGlowColor",
+			&defaultCloseButtonColor);
+	_buttonConfigMap[closeButton] = color;
+
+	_showResizeHandle = _glowConfig->readBoolEntry("showResizeHandle", true);
+	_titlebarGradientType = static_cast<KPixmapEffect::GradientType>
+							(_glowConfig->readNumEntry("titlebarGradientType",
+							KPixmapEffect::DiagonalGradient));
+
+	_showResizeHandleCheckBox->setChecked(_showResizeHandle);
+	_titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType);
+
+	_theme_name = _glowConfig->readEntry ("themeName", "default");
+	_theme_list_view->setSelected (
+			_theme_list_view->findItem (_theme_name, 0), true);
+        slotTitleButtonClicked(0);
+}
+
+void GlowConfigDialog::save( KConfig* /* conf */ )
+{
+	_glowConfig->setGroup("General");
+
+	_glowConfig->writeEntry("stickyButtonGlowColor", _buttonConfigMap[stickyButton]);
+	_glowConfig->writeEntry("helpButtonGlowColor", _buttonConfigMap[helpButton]);
+	_glowConfig->writeEntry("iconifyButtonGlowColor", _buttonConfigMap[iconifyButton]);
+	_glowConfig->writeEntry("maximizeButtonGlowColor", _buttonConfigMap[maximizeButton]);
+	_glowConfig->writeEntry("closeButtonGlowColor", _buttonConfigMap[closeButton]);
+
+	_glowConfig->writeEntry("showResizeHandle", _showResizeHandle);
+	_glowConfig->writeEntry("titlebarGradientType", _titlebarGradientType);
+
+	_glowConfig->writeEntry ("themeName", _theme_name);
+
+	_glowConfig->sync();
+}
+
+void GlowConfigDialog::defaults()
+{
+	const TQColor defaultCloseButtonColor = DEFAULT_CLOSE_BUTTON_COLOR;
+	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
+	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
+	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
+	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
+
+	_buttonConfigMap[stickyButton] = defaultStickyButtonColor;
+	_buttonConfigMap[helpButton] = defaultHelpButtonColor;
+	_buttonConfigMap[iconifyButton] = defaultIconifyButtonColor;
+	_buttonConfigMap[maximizeButton] = defaultMaximizeButtonColor;
+	_buttonConfigMap[closeButton] = defaultCloseButtonColor;
+
+	_showResizeHandle = true;
+	_titlebarGradientType = KPixmapEffect::DiagonalGradient;
+
+	_showResizeHandleCheckBox->setChecked(_showResizeHandle);
+	_titlebarGradientTypeComboBox->setCurrentItem(_titlebarGradientType);
+
+	_theme_list_view->setSelected (
+			_theme_list_view->findItem("default", 0), true);
+}
+
+void GlowConfigDialog::slotLoadThemeList ()
+{
+	TQStringList dir_list=KGlobal::dirs()->findDirs("data", "twin/glow-themes");
+
+	TQStringList::ConstIterator it;
+
+	_theme_list_view->clear();
+	new TQListViewItem (_theme_list_view, "default", "17x17");
+
+	for (it=dir_list.begin(); it!=dir_list.end(); ++it)
+	{
+		TQDir dir (*it, TQString("*"), TQDir::Unsorted,
+				TQDir::Dirs | TQDir::Readable);
+		if (dir.exists())
+		{
+			TQFileInfoListIterator it2(*dir.entryInfoList());
+			TQFileInfo * finfo;
+
+			while ((finfo=it2.current()))
+			{
+				if (finfo->fileName() == "." || finfo->fileName() == "..") {
+					++it2;
+					continue;
+				}
+
+				if (! _theme_list_view->findItem (finfo->fileName(), 0))
+				{
+					KConfig conf (dir.path() + "/" + finfo->fileName() + "/" +
+							finfo->fileName() + ".theme");
+					TQSize button_size = conf.readSizeEntry (
+						"buttonSize", new TQSize (-1, -1));
+					if (button_size.width() == -1)
+					{
+						++it2;
+						continue;
+					}
+					TQString size_string = TQString("") +
+						TQString::number(button_size.width()) +
+						"x" + TQString::number(button_size.height());
+					new TQListViewItem (_theme_list_view,
+							finfo->fileName(), size_string);
+				}
+
+				++it2;
+			}
+		}
+	}
+}
+
+void GlowConfigDialog::slotTitlebarGradientTypeChanged(int index)
+{
+	_titlebarGradientType = static_cast<KPixmapEffect::GradientType>(index);
+	emit changed();
+}
+
+void GlowConfigDialog::slotResizeHandleCheckBoxChanged()
+{
+	_showResizeHandle = _showResizeHandleCheckBox->isChecked();
+	emit changed();
+}
+
+void GlowConfigDialog::slotTitleButtonClicked(int index)
+{
+	for( int i=0; i< ((int) _titleButtonList.size()); i++ ) {
+		_titleButtonList[i]->setDown(i==index);
+	}
+	_colorButton->setEnabled(true);
+	_colorButton->setColor(_buttonConfigMap[index]);
+}
+
+void GlowConfigDialog::slotColorButtonChanged(const TQColor& glowColor)
+{
+	if( _stickyButton->isDown() ) {
+		_buttonConfigMap[stickyButton] = glowColor;
+	} else if( _helpButton->isDown() ) {
+		_buttonConfigMap[helpButton] = glowColor;
+	} else if( _iconifyButton->isDown() ) {
+		_buttonConfigMap[iconifyButton] = glowColor;
+	} else if( _maximizeButton->isDown() ) {
+		_buttonConfigMap[maximizeButton] = glowColor;
+	} else {
+		_buttonConfigMap[closeButton] = glowColor;
+	}
+	emit changed();
+}
+
+void GlowConfigDialog::slotThemeListViewSelectionChanged ()
+{
+	if( _theme_list_view->selectedItem() != 0 ) {
+		_theme_name = _theme_list_view->selectedItem()->text (0);
+
+		emit changed();
+	}
+}
+
+#include "glowconfigdialog.moc"
diff --git a/twin-styles/glow/config/glowconfigdialog.h b/twin-styles/glow/config/glowconfigdialog.h
new file mode 100644
index 00000000..81747a4c
--- /dev/null
+++ b/twin-styles/glow/config/glowconfigdialog.h
@@ -0,0 +1,92 @@
+/***************************************************************************
+                          glowconfigdialog.h  -  description
+                             -------------------
+    begin                : Thu Sep 12 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef GLOW_CONFIG_DIALOG_H
+#define GLOW_CONFIG_DIALOG_H
+
+#include <tqvaluevector.h>
+#include <tqobject.h>
+
+class TQListView;
+class TQPushButton;
+class TQSignalMapper;
+class TQCheckBox;
+class TQComboBox;
+class KConfig;
+class KColorButton;
+
+class GlowConfigDialog : public TQObject
+{
+	Q_OBJECT
+  TQ_OBJECT
+
+public:
+	GlowConfigDialog( KConfig* conf, TQWidget* parent );
+	~GlowConfigDialog();
+
+signals:
+	void changed();
+
+public slots:
+	void load( KConfig* conf );
+	void save( KConfig* conf );
+	void defaults();
+
+protected slots:
+	void slotTitleButtonClicked(int);
+	void slotColorButtonChanged(const TQColor&);
+	void slotTitlebarGradientTypeChanged(int);
+	void slotResizeHandleCheckBoxChanged();
+	void slotThemeListViewSelectionChanged ();
+
+private slots:
+	void slotLoadThemeList ();
+	
+private:
+	enum ButtonType{stickyButton, helpButton, iconifyButton,
+		maximizeButton, closeButton };
+
+	KConfig *_glowConfig;
+
+	bool _showResizeHandle;
+	KPixmapEffect::GradientType _titlebarGradientType;
+	TQString _theme_name;
+
+	TQWidget *_main_group_box;
+	TQGroupBox *_button_glow_color_group_box;
+	TQGroupBox *_theme_group_box;
+
+	TQListView * _theme_list_view;
+
+	TQCheckBox *_showResizeHandleCheckBox;
+	TQComboBox *_titlebarGradientTypeComboBox;
+
+	TQPushButton *_stickyButton;
+	TQPushButton *_helpButton;
+	TQPushButton *_iconifyButton;
+	TQPushButton *_maximizeButton;
+	TQPushButton *_closeButton;
+	TQSignalMapper *_titleButtonMapper;
+
+	TQColor* _buttonConfigMap;
+	TQValueVector<TQPushButton*> _titleButtonList;
+	
+	KColorButton *_colorButton;
+};
+
+#endif
+
diff --git a/twin-styles/glow/glow.desktop b/twin-styles/glow/glow.desktop
new file mode 100644
index 00000000..9659e5d6
--- /dev/null
+++ b/twin-styles/glow/glow.desktop
@@ -0,0 +1,49 @@
+[Desktop Entry]
+Name=Glow
+Name[af]=Gloei
+Name[br]=Lufrus
+Name[ca]=Lluïssor
+Name[cs]=Záře
+Name[cy]=Gwrid
+Name[da]=Glød
+Name[el]=Λάμψη
+Name[es]=Brillo
+Name[et]=Helendus
+Name[eu]=Dirdira
+Name[fa]=درخشندگی
+Name[fi]=Hehku
+Name[fr]=Lueur
+Name[fy]=Gloede
+Name[hi]=ग्लो
+Name[is]=Glóð
+Name[it]=Bagliore
+Name[ja]=輝き
+Name[ka]=გავარვარება
+Name[lt]=Švytėjimas
+Name[lv]=Kvēlot
+Name[mk]=Отсјај
+Name[ms]=Kilau
+Name[mt]=Dija
+Name[nb]=Glød
+Name[ne]=चमक
+Name[nl]=Gloed
+Name[nn]=Glød
+Name[pl]=Blask
+Name[ro]=Licărire
+Name[ru]=Зарево
+Name[sk]=Plameň
+Name[sl]=Lesk
+Name[sr]=Сијање
+Name[sr@Latn]=Sijanje
+Name[sv]=Glöd
+Name[ta]=ஒளிப்பெற்று
+Name[tg]=Шафақ
+Name[th]=เรืองแสง
+Name[tr]=Parlama
+Name[uk]=Заграва
+Name[ven]=Tshedza
+Name[vi]=Hào quang
+Name[xh]=Qukuqela
+Name[zh_CN]=光芒
+Name[zu]=Khanya
+X-KDE-Library=twin3_glow
diff --git a/twin-styles/glow/glowbutton.cpp b/twin-styles/glow/glowbutton.cpp
new file mode 100644
index 00000000..87079c2e
--- /dev/null
+++ b/twin-styles/glow/glowbutton.cpp
@@ -0,0 +1,339 @@
+/***************************************************************************
+                          glowbutton.cpp  -  description
+                             -------------------
+    begin                : Thu Sep 6 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include <math.h>
+#include <iostream>
+#include <vector>
+#include <tqmap.h>
+#include <tqpixmap.h>
+#include <tqpixmapcache.h>
+#include <tqbitmap.h>
+#include <tqpainter.h>
+#include <tqimage.h>
+#include <tqtimer.h>
+#include <tqtooltip.h>
+#include <kdecoration.h>
+#include <kiconeffect.h>
+#include "glowbutton.h"
+
+namespace Glow
+{
+
+//-----------------------------------------------------------------------------
+// PixmapCache
+//-----------------------------------------------------------------------------
+
+TQMap<TQString, const TQPixmap*> PixmapCache::m_pixmapMap;
+
+const TQPixmap* PixmapCache::find(const TQString& key)
+{
+	TQMap<TQString, const TQPixmap*>::const_iterator it =
+		m_pixmapMap.find(key);
+	if( it != m_pixmapMap.end() )
+		return *it;
+	else
+		return 0;
+}
+
+void PixmapCache::insert(const TQString& key, const TQPixmap *pixmap)
+{
+	m_pixmapMap[key] = pixmap;
+}
+
+void PixmapCache::erase(const TQString& key)
+{
+	TQMap<TQString, const TQPixmap*>::iterator it =
+		m_pixmapMap.find(key);
+	if (it != m_pixmapMap.end())
+	{
+		delete *it;
+		m_pixmapMap.erase(it);
+	}
+}
+
+void PixmapCache::clear()
+{
+	// delete all pixmaps in the cache
+	TQMap<TQString, const TQPixmap*>::const_iterator it
+		= m_pixmapMap.begin();
+	for(; it != m_pixmapMap.end(); ++it)
+		delete *it;
+	m_pixmapMap.clear();
+}
+
+//-----------------------------------------------------------------------------
+// GlowButton
+//-----------------------------------------------------------------------------
+
+GlowButton::GlowButton(TQWidget *parent, const char *name,
+	const TQString& tip, const int realizeBtns)
+	: TQButton(parent, name)
+{
+	m_realizeButtons = realizeBtns;
+
+	_steps = 0;
+	m_updateTime = 50;
+	m_pixmapName = TQString();
+
+	m_timer = new TQTimer(this);
+	connect(m_timer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotTimeout()));
+	m_pos = 0;
+	m_timertqStatus = Stop;
+
+	setTipText (tip);
+	setCursor(arrowCursor);
+}
+
+GlowButton::~GlowButton()
+{
+}
+
+void GlowButton::setTipText( const TQString& tip )
+{
+	if (KDecoration::options()->showTooltips())
+	{
+	    TQToolTip::remove( this );
+	    TQToolTip::add( this, tip );
+	}
+}
+
+TQString GlowButton::getPixmapName() const
+{
+	return m_pixmapName;
+}
+
+TQt::ButtonState GlowButton::lastButton() const
+{
+	return _last_button;
+}
+
+void GlowButton::setPixmapName(const TQString& pixmapName)
+{
+	m_pixmapName = pixmapName;
+
+	const TQPixmap *pixmap = PixmapCache::find(pixmapName);
+	if( ! pixmap )
+		return;
+
+	// set steps
+	_steps = pixmap->height()/pixmap->width() - 1;
+
+	tqrepaint(false);
+}
+
+void GlowButton::paintEvent( TQPaintEvent *e )
+{
+ 	TQWidget::paintEvent(e);
+	const TQPixmap *pixmap = PixmapCache::find(m_pixmapName);
+	if( pixmap != 0 )
+	{
+		int pos = m_pos>=0?m_pos:-m_pos;
+		TQPainter p;
+		TQPixmap pm (pixmap->size());
+		p.begin(&pm);
+		const TQPixmap * bg_pixmap = PixmapCache::find(
+				TQString::number(parentWidget()->winId()));
+		p.drawPixmap (0, 0, *bg_pixmap, x(), y(), width(), height());
+		p.drawPixmap (0, 0, *pixmap, 0, pos*height(), width(), height());
+		p.end();
+		p.begin(this);
+		p.drawPixmap (0, 0, pm);
+		p.end();
+	}
+}
+
+void GlowButton::enterEvent( TQEvent *e )
+{
+	if( m_pos<0 )
+		m_pos=-m_pos;
+	m_timertqStatus = Run;
+	if( ! m_timer->isActive() )
+		m_timer->start(m_updateTime);
+	TQButton::enterEvent(e);
+}
+
+void GlowButton::leaveEvent( TQEvent *e )
+{
+	m_timertqStatus = Stop;
+	if( ! m_timer->isActive() )
+		m_timer->start(m_updateTime);
+	TQButton::leaveEvent(e);
+}
+
+void GlowButton::mousePressEvent( TQMouseEvent *e )
+{
+	_last_button = e->button();
+	if( m_timer->isActive() )
+		m_timer->stop();
+	m_pos = _steps;
+	tqrepaint(false);
+	// without pretending LeftButton, clicking on the button with MidButton
+	// or RightButton would cause unwanted titlebar action
+	TQMouseEvent me (e->type(), e->pos(), e->globalPos(),
+			(e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state());
+	TQButton::mousePressEvent(&me);
+}
+
+void GlowButton::mouseReleaseEvent( TQMouseEvent *e )
+{
+	_last_button = e->button();
+	TQPoint p = mapToParent(mapFromGlobal(e->globalPos()));
+	if( ! m_timer->isActive() ) {
+		m_timer->start(m_updateTime);
+	}
+	if( ! tqgeometry().contains(p) ) {
+		m_timertqStatus = Stop;
+	}
+	TQMouseEvent me (e->type(), e->pos(), e->globalPos(),
+			(e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state());
+	TQButton::mouseReleaseEvent(&me);
+}
+
+void GlowButton::slotTimeout()
+{
+	tqrepaint(false);
+
+	if( m_pos>=_steps-1 ) {
+		m_pos = -m_pos;
+	}
+	if( m_timertqStatus==Stop ) {
+		if( m_pos==0 ) {
+			m_timer->stop();
+			return;
+		} else if( m_pos>0 ) {
+			m_pos = -m_pos;
+		}
+	}
+
+	m_pos++;
+}
+
+//-----------------------------------------------------------------------------
+// GlowButtonFactory
+//-----------------------------------------------------------------------------
+
+GlowButtonFactory::GlowButtonFactory()
+{
+	_steps = 20;
+}
+
+int GlowButtonFactory::getSteps()
+{
+	return _steps;
+}
+
+void GlowButtonFactory::setSteps(int steps)
+{
+	_steps = steps;
+}
+
+TQPixmap * GlowButtonFactory::createGlowButtonPixmap(
+				const TQImage & bg_image,
+				const TQImage & fg_image,
+				const TQImage & glow_image,
+				const TQColor & color,
+				const TQColor & glow_color)
+{
+		if (bg_image.size() != fg_image.size()
+			|| fg_image.size() != glow_image.size()) {
+				std::cerr << "Image size error" << std::endl;
+				return new TQPixmap();
+		}
+
+		TQImage colorized_bg_image = bg_image.copy();
+		KIconEffect::colorize (colorized_bg_image, color, 1.0);
+
+		int w = colorized_bg_image.width();
+		int h = colorized_bg_image.height();
+
+		TQImage image (w, (_steps+1)*h, 32);
+		image.setAlphaBuffer (true);
+		for (int i=0; i<_steps+1; ++i) {
+			for (int y=0; y<h; ++y) {
+				uint * src1_line = (uint*) colorized_bg_image.scanLine (y);
+				uint * src2_line = (uint*) fg_image.scanLine (y);
+				uint * dst_line = (uint*) image.scanLine (i*h+y);
+				for (int x=0; x<w; ++x) {
+					int r = tqRed (*(src1_line+x));
+					int g = tqGreen (*(src1_line+x));
+					int b = tqBlue (*(src1_line+x));
+					int a = TQMAX (tqAlpha(*(src1_line+x)),tqGray(*(src2_line+x)));
+					*(dst_line+x) = tqRgba (r, g, b, a);
+				}
+			}
+		}
+		TQPixmap * pixmap = new TQPixmap (image);
+		TQPainter painter (pixmap);
+
+		bool dark = (tqGray(color.rgb()) <= 127);
+		TQImage fg_img (w, h, 32);
+		fg_img.setAlphaBuffer (true);
+		for (int y=0; y<h; ++y) {
+			uint * src_line = (uint*) fg_image.scanLine (y);
+			uint * dst_line = (uint*) fg_img.scanLine (y);
+			for (int x=0; x<w; ++x) {
+				int alpha = tqGray (*(src_line+x));
+				if (dark)
+						*(dst_line+x) = tqRgba (255, 255, 255, alpha);
+				else
+						*(dst_line+x) = tqRgba (0, 0, 0, alpha);
+			}
+		}
+
+		int r = glow_color.red();
+		int g = glow_color.green();
+		int b = glow_color.blue();
+		TQImage glow_img (w, h, 32);
+		glow_img.setAlphaBuffer (true);
+		for (int i=0; i<_steps; ++i) {
+			painter.drawImage (0, i*h, fg_img);
+			for (int y=0; y<h; ++y) {
+				uint * src_line = (uint*) glow_image.scanLine(y);
+				uint * dst_line = (uint*) glow_img.scanLine(y);
+				for (int x=0; x<w; ++x) {
+					int alpha =
+							(int) (tqGray (*(src_line+x)) * ((double) i/_steps));
+					*(dst_line+x) = tqRgba (r, g, b, alpha);
+				}
+			}
+			painter.drawImage (0, i*h, glow_img);
+		}
+		painter.drawImage (0, _steps*h, fg_img);
+		for (int y=0; y<h; ++y) {
+				uint * src_line = (uint*) glow_image.scanLine (y);
+				uint * dst_line = (uint*) glow_img.scanLine (y);
+				for (int x=0; x<w; ++x) {
+					int alpha = tqGray (*(src_line+x));
+					*(dst_line+x) = tqRgba (r, g, b, alpha);
+				}
+		}
+		painter.drawImage (0, _steps*h, glow_img);
+
+		return pixmap;
+}
+
+GlowButton* GlowButtonFactory::createGlowButton(
+	TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns)
+{
+	GlowButton *glowButton = new GlowButton(parent, name, tip, realizeBtns);
+	return glowButton;
+}
+
+}
+
+#include "glowbutton.moc"
+
diff --git a/twin-styles/glow/glowbutton.h b/twin-styles/glow/glowbutton.h
new file mode 100644
index 00000000..d2e83beb
--- /dev/null
+++ b/twin-styles/glow/glowbutton.h
@@ -0,0 +1,129 @@
+/***************************************************************************
+                          glowbutton.h  -  description
+                             -------------------
+    begin                : Thu Sep 14 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef GLOW_BUTTON_H
+#define GLOW_BUTTON_H
+
+#include <vector>
+#include <tqmap.h>
+#include <tqbutton.h>
+
+class TQPixmap;
+class TQBitmap;
+class TQTimer;
+class TQString;
+
+namespace Glow
+{
+
+class PixmapCache
+{
+public:
+	static const TQPixmap* find(const TQString& key);
+	static void insert(const TQString& key, const TQPixmap *pixmap);
+	static void erase(const TQString& key);
+	static void clear();
+private:
+	static TQMap<TQString, const TQPixmap*> m_pixmapMap;
+};
+
+
+//-----------------------------------------------------------------------------
+
+class GlowButton : public TQButton
+{
+	Q_OBJECT
+  TQ_OBJECT
+
+public:
+	GlowButton(TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns);
+	~GlowButton();
+
+	void setTipText( const TQString& tip );
+
+	TQString getPixmapName() const;
+	ButtonState lastButton() const;
+
+	/** Sets the name of the pixmap in the pixmap cache.
+	 * If no background pixmap is wanted use TQString() as name. */
+	void setPixmapName(const TQString& pixmapName);
+
+protected:
+	virtual void paintEvent( TQPaintEvent * );
+	virtual void enterEvent( TQEvent * );
+	virtual void leaveEvent( TQEvent * );
+	virtual void mousePressEvent( TQMouseEvent * );
+	virtual void mouseReleaseEvent( TQMouseEvent * );
+
+protected slots:
+	void slotTimeout();
+
+private:
+	enum TimertqStatus { Run, Stop };
+
+	int m_updateTime;
+	int _steps;
+	TQString m_pixmapName;
+
+	TQTimer *m_timer;
+	int m_pos;
+	TimertqStatus m_timertqStatus;
+
+	int m_realizeButtons;
+	ButtonState _last_button;
+};
+
+//-----------------------------------------------------------------------------
+
+class GlowButtonFactory
+{
+public:
+	GlowButtonFactory();
+
+	int getSteps();
+
+	/**
+	 * Sets the number of pixmaps used to create the glow effect of the
+	 * glow buttons.
+	 */
+	void setSteps(int steps);
+
+	/**
+	 * Creates a background pixmap for a glow button.
+	 * The pixmap will consist of sub pixmaps of the size of the button which
+	 * are placed one below the other. Each sub pixmap is copied on the button
+	 * in succession to create the glow effect. The last sub pixmap is used
+	 * when the button is pressed.
+	 */
+	TQPixmap * createGlowButtonPixmap(
+				const TQImage & bg_image,
+//				const TQImage & bg_alpha_image,
+				const TQImage & fg_image,
+				const TQImage & glow_image,
+				const TQColor & color,
+				const TQColor & glow_color);
+
+	GlowButton* createGlowButton(
+		TQWidget *parent, const char* name, const TQString& tip, const int realizeBtns = Qt::LeftButton);
+
+private:
+	int _steps;
+};
+
+} // namespace
+
+#endif
diff --git a/twin-styles/glow/glowclient.cpp b/twin-styles/glow/glowclient.cpp
new file mode 100644
index 00000000..98133221
--- /dev/null
+++ b/twin-styles/glow/glowclient.cpp
@@ -0,0 +1,902 @@
+/***************************************************************************
+                          glowclient.cpp  -  description
+                             -------------------
+    begin                : Thu Sep 6 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include <tqapplication.h>
+#include <tqbitmap.h>
+#include <tqimage.h>
+#include <tqlayout.h>
+#include <tqpainter.h>
+#include <tqpixmap.h>
+#include <kconfig.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kpixmapeffect.h>
+#include <kpixmap.h>
+#include <kstandarddirs.h>
+#include <tqlabel.h>
+#include "resources.h"
+#include "glowclient.h"
+#include "glowbutton.h"
+
+namespace Glow
+{
+
+static int titleHeight;
+static int SIDE_MARGIN;
+static int BOTTOM_MARGIN;
+static const int TITLE_MARGIN = 2;
+static const int TITLE_SPACING = 1;
+static int RESIZE_HANDLE_HEIGHT;
+
+//-----------------------------------------------------------------------------
+
+GlowClientConfig::GlowClientConfig()
+{
+	themeName = "default";
+}
+
+void GlowClientConfig::load(KDecorationFactory *factory)
+{
+	KConfig conf("twinglowrc");
+	conf.setGroup("General");
+
+	const TQColor defaultCloseButtonColor(DEFAULT_CLOSE_BUTTON_COLOR);
+	const TQColor defaultMaximizeButtonColor(DEFAULT_MAXIMIZE_BUTTON_COLOR);
+	const TQColor defaultIconifyButtonColor(DEFAULT_ICONIFY_BUTTON_COLOR);
+	const TQColor defaultHelpButtonColor(DEFAULT_HELP_BUTTON_COLOR);
+	const TQColor defaultStickyButtonColor(DEFAULT_STICKY_BUTTON_COLOR);
+
+	stickyButtonGlowColor = conf.readColorEntry(
+		"stickyButtonGlowColor", &defaultStickyButtonColor);
+
+	helpButtonGlowColor = conf.readColorEntry(
+		"helpButtonGlowColor", &defaultHelpButtonColor);
+
+	iconifyButtonGlowColor = conf.readColorEntry(
+		"iconifyButtonGlowColor", &defaultIconifyButtonColor);
+
+	maximizeButtonGlowColor = conf.readColorEntry(
+		"maximizeButtonGlowColor", &defaultMaximizeButtonColor);
+
+	closeButtonGlowColor = conf.readColorEntry(
+		"closeButtonGlowColor", &defaultCloseButtonColor);
+
+	showResizeHandle = conf.readBoolEntry("showResizeHandle", true);
+	titlebarGradientType = conf.readNumEntry("titlebarGradientType",
+		KPixmapEffect::DiagonalGradient);
+
+	themeName = conf.readEntry ("themeName", "default");
+
+	switch(KDecoration::options()->preferredBorderSize (factory)) {
+	case KDecoration::BorderLarge:
+		SIDE_MARGIN = 8;
+		BOTTOM_MARGIN = 6;
+		RESIZE_HANDLE_HEIGHT = 10;
+		break;
+	case KDecoration::BorderVeryLarge:
+		SIDE_MARGIN = 12;
+		BOTTOM_MARGIN = 12;
+		RESIZE_HANDLE_HEIGHT = 18;
+		break;
+	case KDecoration::BorderHuge:
+		SIDE_MARGIN = 18;
+		BOTTOM_MARGIN = 18;
+		RESIZE_HANDLE_HEIGHT = 27;
+		break;
+	case KDecoration::BorderVeryHuge:
+		SIDE_MARGIN = 27;
+		BOTTOM_MARGIN = 27;
+		RESIZE_HANDLE_HEIGHT = 40;
+		break;
+	case KDecoration::BorderOversized:
+		SIDE_MARGIN = 40;
+		BOTTOM_MARGIN = 40;
+		RESIZE_HANDLE_HEIGHT = 60;
+		break;
+	case KDecoration::BorderNormal:
+	default:
+		SIDE_MARGIN = 4;
+		BOTTOM_MARGIN = 2;
+		RESIZE_HANDLE_HEIGHT = 4;
+	}
+}
+
+//-----------------------------------------------------------------------------
+
+GlowClientGlobals::~GlowClientGlobals()
+{
+	deletePixmaps();
+	m_instance = 0;
+}
+
+TQString GlowClientGlobals::getPixmapName(PixmapType type, bool isActive)
+{
+	TQString s = getPixmapTypeName(static_cast<PixmapType>(type));
+	s += "|";
+	s += isActive ? "Active" : "NotActive";
+	return s;
+}
+
+GlowClientGlobals::GlowClientGlobals()
+	: KDecorationFactory()
+{
+	_button_factory = new GlowButtonFactory();
+	readConfig();
+	readTheme ();
+	if (!createPixmaps())
+	{
+		deletePixmaps();
+		delete _theme;
+		config()->themeName = "default";
+		readTheme();
+		createPixmaps();
+	}
+}
+
+void GlowClientGlobals::readConfig()
+{
+	_config = new GlowClientConfig();
+	_config->load(this);
+}
+
+TQValueList< GlowClientGlobals::BorderSize >
+GlowClientGlobals::borderSizes() const
+{
+    // the list must be sorted
+    return TQValueList< BorderSize >() << BorderNormal <<
+	BorderLarge << BorderVeryLarge <<  BorderHuge <<
+	BorderVeryHuge << BorderOversized;
+}
+
+void GlowClientGlobals::readTheme()
+{
+	TQString theme_config_file = KGlobal::dirs()->findResource ("data",
+			TQString("twin/glow-themes/") + config()->themeName + "/" +
+			config()->themeName + ".theme");
+	if (theme_config_file.isNull())
+	{
+		config()->themeName = "default";
+		return;
+	}
+
+	KConfig conf (theme_config_file);
+	_theme = new GlowTheme(default_glow_theme);
+
+	_theme->buttonSize = conf.readSizeEntry ("buttonSize",
+			&_theme->buttonSize);
+	_theme->stickyOnPixmap = conf.readEntry ("stickyOnPixmap",
+			_theme->stickyOnPixmap);
+	_theme->stickyOffPixmap = conf.readEntry ("stickyOffPixmap",
+			_theme->stickyOffPixmap);
+	_theme->maximizeOnPixmap = conf.readEntry ("maximizeOnPixmap",
+			_theme->maximizeOnPixmap);
+	_theme->maximizeOffPixmap = conf.readEntry ("maximizeOffPixmap",
+			_theme->maximizeOffPixmap);
+	_theme->helpPixmap = conf.readEntry ("helpPixmap",
+			_theme->helpPixmap);
+	_theme->closePixmap = conf.readEntry ("closePixmap",
+			_theme->closePixmap);
+	_theme->iconifyPixmap = conf.readEntry ("iconifyPixmap",
+			_theme->iconifyPixmap);
+	_theme->stickyOnGlowPixmap = conf.readEntry ("stickyOnGlowPixmap",
+			_theme->stickyOnGlowPixmap);
+	_theme->stickyOffGlowPixmap = conf.readEntry ("stickyOffGlowPixmap",
+			_theme->stickyOffGlowPixmap);
+	_theme->maximizeOnGlowPixmap = conf.readEntry ("maximizeOnGlowPixmap",
+			_theme->maximizeOnGlowPixmap);
+	_theme->maximizeOffGlowPixmap = conf.readEntry ("maximizeOffGlowPixmap",
+			_theme->maximizeOffGlowPixmap);
+	_theme->helpGlowPixmap = conf.readEntry ("helpGlowPixmap",
+			_theme->helpGlowPixmap);
+	_theme->closeGlowPixmap = conf.readEntry ("closeGlowPixmap",
+			_theme->closeGlowPixmap);
+	_theme->iconifyGlowPixmap = conf.readEntry ("iconifyGlowPixmap",
+			_theme->iconifyGlowPixmap);
+
+	titleHeight = TQFontMetrics(KDecoration::options()->font(true)).height();
+	if (titleHeight < SIDE_MARGIN)
+		titleHeight = SIDE_MARGIN;
+	if (titleHeight < _theme->buttonSize.height())
+		titleHeight = _theme->buttonSize.height();
+}
+
+bool GlowClientGlobals::reset( unsigned long /*changed*/ )
+{
+	deletePixmaps();
+	delete _config;
+	readConfig();
+	delete _theme;
+	readTheme ();
+	if (! createPixmaps())
+	{
+		deletePixmaps();
+		delete _theme;
+		_config->themeName = "default";
+		readTheme();
+		createPixmaps();
+	}
+	return true; // FRAME
+}
+
+bool GlowClientGlobals::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonSpacer:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+            return true;
+        default:
+            return false;
+    };
+}
+
+bool GlowClientGlobals::createPixmaps()
+{
+	for( int type=0; type<=Close; type++ ) {
+		if (! createPixmap(static_cast<PixmapType>(type), false))
+			return false;
+		if (! createPixmap(static_cast<PixmapType>(type), true))
+			return false;
+	}
+
+	return true;
+}
+
+void GlowClientGlobals::deletePixmaps()
+{
+	PixmapCache::clear();
+}
+
+const TQString GlowClientGlobals::getPixmapTypeName(PixmapType type)
+{
+	switch(type) {
+		case (StickyOn):
+			return "StickyOn";
+		case(StickyOff ):
+			return "StickyOff";
+		case(Help):
+			return "Help";
+		case(Iconify):
+			return "Iconify";
+		case(MaximizeOn):
+			return "MaximizeOn";
+		case(MaximizeOff):
+			return "MaximizeOff";
+		case(Close):
+			return "Close";
+		default:
+			return TQString();
+	}
+}
+
+bool GlowClientGlobals::createPixmap(PixmapType type, bool isActive)
+{
+	TQString theme_dir = KGlobal::dirs()->findResource ("data",
+			TQString("twin/glow-themes/") + _config->themeName + "/");
+
+	TQColor glow_color;
+	TQColor color = options()->color(ColorButtonBg, isActive);
+
+	TQImage bg_image (theme_dir+_theme->backgroundPixmap);
+	TQImage fg_image;
+	TQImage glow_image;
+
+	switch(type) {
+		case (StickyOn):
+		{
+			fg_image = TQImage (theme_dir+_theme->stickyOnPixmap);
+			glow_image = TQImage (theme_dir+_theme->stickyOnGlowPixmap);
+			glow_color = _config->stickyButtonGlowColor;
+			break;
+		}
+		case (StickyOff):
+		{
+			fg_image = TQImage (theme_dir+_theme->stickyOffPixmap);
+			glow_image = TQImage (theme_dir+_theme->stickyOffGlowPixmap);
+			glow_color = _config->stickyButtonGlowColor;
+			break;
+		}
+		case (Help):
+		{
+			fg_image = TQImage (theme_dir+_theme->helpPixmap);
+			glow_image = TQImage (theme_dir+_theme->helpGlowPixmap);
+			glow_color = _config->helpButtonGlowColor;
+			break;
+		}
+		case (Iconify):
+		{
+			fg_image = TQImage (theme_dir+_theme->iconifyPixmap);
+			glow_image = TQImage (theme_dir+_theme->iconifyGlowPixmap);
+			glow_color = _config->iconifyButtonGlowColor;
+			break;
+		}
+		case (MaximizeOn):
+		{
+			fg_image = TQImage (theme_dir+_theme->maximizeOnPixmap);
+			glow_image = TQImage (theme_dir+_theme->maximizeOnGlowPixmap);
+			glow_color = _config->maximizeButtonGlowColor;
+			break;
+		}
+		case (MaximizeOff):
+		{
+			fg_image = TQImage (theme_dir+_theme->maximizeOffPixmap);
+			glow_image = TQImage (theme_dir+_theme->maximizeOffGlowPixmap);
+			glow_color = _config->maximizeButtonGlowColor;
+			break;
+		}
+		case (Close):
+		{
+			fg_image = TQImage (theme_dir+_theme->closePixmap);
+			glow_image = TQImage (theme_dir+_theme->closeGlowPixmap);
+			glow_color = _config->closeButtonGlowColor;
+			break;
+		}
+	}
+
+	if (bg_image.size() != _theme->buttonSize
+			|| fg_image.size() != _theme->buttonSize
+			|| glow_image.size() != _theme->buttonSize)
+		return false;
+
+	TQPixmap * glowPm = buttonFactory()->createGlowButtonPixmap(
+		bg_image, fg_image, glow_image,
+		color, glow_color);
+	if (glowPm->isNull())
+		return false;
+	PixmapCache::insert(getPixmapName(type, isActive), glowPm);
+	return true;
+}
+
+GlowClientGlobals *GlowClientGlobals::m_instance = 0;
+
+GlowClientGlobals *GlowClientGlobals::instance()
+{
+	if( ! m_instance )
+	{
+		m_instance = new GlowClientGlobals();
+	}
+	return m_instance;
+}
+
+//-----------------------------------------------------------------------------
+
+GlowClient::GlowClient( KDecorationBridge* b, KDecorationFactory* f )
+	: KDecoration( b, f ),
+		m_stickyButton(0), m_helpButton(0), m_minimizeButton(0),
+		m_maximizeButton(0), m_closeButton(0),
+		m_leftButtonLayout(0), m_rightButtonLayout(0), _main_layout(0)
+{
+}
+
+void GlowClient::init()
+{
+	createMainWidget(WResizeNoErase | WStaticContents | WRepaintNoErase);
+	widget()->installEventFilter(this);
+
+	createButtons();
+	resetLayout();
+}
+
+GlowClient::~GlowClient()
+{
+	PixmapCache::erase(TQString::number(widget()->winId()));
+}
+
+void GlowClient::resizeEvent( TQResizeEvent * )
+{
+	doShape();
+	widget()->tqrepaint(false);
+}
+
+void GlowClient::paintEvent( TQPaintEvent * )
+{
+	GlowClientConfig *conf = GlowClientGlobals::instance()->config();
+	TQRect r_this = widget()->rect();
+	TQRect r_title = _title_spacer->tqgeometry();
+	TQColorGroup titleCg = options()->tqcolorGroup(ColorTitleBar, isActive());
+	TQColorGroup titleBlendCg=options()->tqcolorGroup(ColorTitleBlend, isActive());
+	TQColorGroup cg = widget()->tqcolorGroup();
+	TQColor titleColor = options()->color(ColorTitleBar, isActive());
+	TQColor titleBlendColor = options()->color(ColorTitleBlend, isActive());
+	TQColor bgColor = widget()->tqcolorGroup().background();
+	TQPainter p;
+	TQPointArray pArray, pArray2, pArray3, pArray4;
+
+	// pixmap for title bar
+	TQSize tBSize(width(), r_title.height());
+	TQSize gradientPixmapSize (tBSize-TQSize(3,3));
+	if (! gradientPixmapSize.isValid())
+		gradientPixmapSize = TQSize(0,0);
+	KPixmap gradientPixmap(gradientPixmapSize);
+	if (! gradientPixmapSize.isNull())
+		KPixmapEffect::gradient(gradientPixmap, titleColor, titleBlendColor,
+			(KPixmapEffect::GradientType) conf->titlebarGradientType);
+
+	TQPixmap  * title_buffer = new TQPixmap(tBSize);
+	p.begin(title_buffer);
+	if (! gradientPixmap.isNull())
+		p.drawPixmap(2, 2, gradientPixmap);
+
+	if (tBSize.width()>=3 && tBSize.height()>=3)
+	{
+		// draw caption
+		p.setFont(options()->font(isActive()));
+		p.setPen(options()->color(ColorFont, isActive()));
+		p.drawText(r_title.x(), 0,
+			r_title.width(), r_title.height(),
+			TQt::AlignLeft | TQt::AlignVCenter | TQt::SingleLine, caption());
+	
+		// draw split color beneath buttons top right
+		pArray4 = TQPointArray(4);
+		pArray4.setPoint(0, tBSize.width()-1, tBSize.height()/2-1);
+		pArray4.setPoint(1, r_title.x()+r_title.width()-1+tBSize.height()/2,
+			tBSize.height()/2-1);
+		pArray4.setPoint(2, r_title.x()+r_title.width()-1, tBSize.height());
+		pArray4.setPoint(3, tBSize.width()-1, tBSize.height());
+		p.setPen(TQt::NoPen);
+		p.setBrush(bgColor);
+		p.drawPolygon(pArray4);
+				
+		// draw borders
+		pArray = TQPointArray(3);
+		pArray.setPoint(0, tBSize.width()-1, tBSize.height()/2-1);
+		pArray.setPoint(1, r_title.x()+r_title.width()-1+tBSize.height()/2,
+			tBSize.height()/2-1);
+		pArray.setPoint(2, r_title.x()+r_title.width()-1, tBSize.height()-1);
+		p.setPen(titleCg.mid());
+		p.drawPolyline(pArray);
+		p.drawLine (0, tBSize.height()-1, r_title.x()+r_title.width()-1, tBSize.height()-1);
+
+		pArray2 = TQPointArray(3);
+		pArray2.setPoint(0, 1, tBSize.height()-2);
+		pArray2.setPoint(1, 1, 1);
+		pArray2.setPoint(2, tBSize.width()-2, 1);
+		p.setPen(titleCg.light());
+		p.drawPolyline(pArray2);
+	}
+
+	pArray3 = TQPointArray(4);
+	pArray3.setPoint(0, 0, tBSize.height()-1);
+	pArray3.setPoint(1, 0, 0);
+	pArray3.setPoint(2, tBSize.width()-1, 0);
+	pArray3.setPoint(3, tBSize.width()-1, tBSize.height()-1);
+	p.setPen(TQt::black);
+	p.drawPolyline(pArray3);
+	p.end();
+
+	// insert title buffer in cache; before that, remove old buffer
+	PixmapCache::erase(TQString::number(widget()->winId()));
+	PixmapCache::insert(TQString::number(widget()->winId()), title_buffer);
+
+	bitBlt(widget(), 0, 0, title_buffer);
+	for (unsigned int i=0; i<m_buttonList.size(); ++i)
+		m_buttonList[i]->tqrepaint(false);
+
+	p.begin(widget());
+	p.setPen(TQt::black);
+	//-----
+	// draw borders
+	p.drawLine(0,tBSize.height(),0,r_this.height()-1);
+	p.drawLine(0,r_this.height()-1,r_this.width()-1,r_this.height()-1);
+	p.drawLine(r_this.width()-1,r_this.height()-1,
+		r_this.width()-1,tBSize.height()/2);
+	//-----
+	// fill content widget
+	p.fillRect(1, tBSize.height(),
+		r_this.width()-2, r_this.height()-tBSize.height()-1,
+		options()->tqcolorGroup(ColorFrame, isActive()).background());
+	p.end();
+
+	// paint resize handle if necessary
+	if(conf->showResizeHandle && isResizable() && ! isShade()
+			&& width()>=2 && height() >= RESIZE_HANDLE_HEIGHT)
+	{
+		p.begin(widget());
+		p.setPen (TQt::black);
+		p.drawLine (1, height() - RESIZE_HANDLE_HEIGHT,
+			width()-2, height() - RESIZE_HANDLE_HEIGHT);
+		p.end();
+	}
+}
+
+void GlowClient::showEvent( TQShowEvent * )
+{
+	doShape();
+	widget()->tqrepaint(false);
+}
+
+void GlowClient::mouseDoubleClickEvent( TQMouseEvent *e )
+{
+	if(e->button() == Qt::LeftButton && _title_spacer->tqgeometry().contains(e->pos()))
+		titlebarDblClickOperation();
+}
+
+void GlowClient::wheelEvent( TQWheelEvent *e )
+{
+    if (isSetShade() || TQRect( 0, 0, width(), titleHeight ).contains(e->pos()))
+        titlebarMouseWheelOperation( e->delta());
+}
+
+void GlowClient::activeChange()
+{
+	updateButtonPixmaps();
+	widget()->tqrepaint(false);
+}
+
+void GlowClient::iconChange()
+{
+	// we have no (t yet an) icon button, so do nothing
+}
+
+void GlowClient::shadeChange()
+{
+}
+
+void GlowClient::captionChange()
+{
+    widget()->update(_title_spacer->tqgeometry());
+}
+
+TQSize GlowClient::tqminimumSize() const
+{
+    return widget()->tqminimumSize();
+}
+
+void GlowClient::resize( const TQSize& s )
+{
+    widget()->resize( s );
+}
+
+void GlowClient::borders( int& left, int& right, int& top, int& bottom ) const
+{
+	left = right = SIDE_MARGIN;
+	top = titleHeight + TITLE_MARGIN + 1;
+	if (GlowClientGlobals::instance()->config()->showResizeHandle
+		&& isResizable())
+		bottom = RESIZE_HANDLE_HEIGHT;
+	else
+		bottom = BOTTOM_MARGIN;
+}
+
+void GlowClient::desktopChange()
+{
+	if (isOnAllDesktops()) {
+		m_stickyButton->setPixmapName(
+			GlowClientGlobals::instance()->getPixmapName(
+				GlowClientGlobals::StickyOn, isActive()));
+		m_stickyButton->setTipText(i18n("Not on all desktops"));
+	} else {
+		m_stickyButton->setPixmapName(
+			GlowClientGlobals::instance()->getPixmapName(
+				GlowClientGlobals::StickyOff, isActive()));
+		m_stickyButton->setTipText(i18n("On all desktops"));
+	}
+}
+
+void GlowClient::maximizeChange()
+{
+    if (maximizeMode() == MaximizeFull) {
+		m_maximizeButton->setPixmapName(
+			GlowClientGlobals::instance()->getPixmapName(
+				GlowClientGlobals::MaximizeOn, isActive()));
+		m_maximizeButton->setTipText(i18n("Restore"));
+	} else {
+		m_maximizeButton->setPixmapName(
+			GlowClientGlobals::instance()->getPixmapName(
+				GlowClientGlobals::MaximizeOff, isActive()));
+		m_maximizeButton->setTipText(i18n("Maximize"));
+	}
+}
+
+KDecoration::Position GlowClient::mousePosition(const TQPoint &pos) const
+{
+	Position m = PositionCenter;
+
+	int bottomSize
+		= (GlowClientGlobals::instance()->config()->showResizeHandle)
+		? RESIZE_HANDLE_HEIGHT : BOTTOM_MARGIN;
+
+	const int range = 14 + 3*SIDE_MARGIN/2;
+
+	if ( ( pos.x() > SIDE_MARGIN && pos.x() < width() - SIDE_MARGIN )
+		&& ( pos.y() > 4 && pos.y() < height() - bottomSize ) )
+		m = PositionCenter;
+	else if ( pos.y() <= range && pos.x() <= range)
+		m = PositionTopLeft;
+	else if ( pos.y() >= height()-range && pos.x() >= width()-range)
+		m = PositionBottomRight;
+	else if ( pos.y() >= height()-range && pos.x() <= range)
+		m = PositionBottomLeft;
+	else if ( pos.y() <= range && pos.x() >= width()-range)
+		m = PositionTopRight;
+	else if ( pos.y() <= 4 )
+		m = PositionTop;
+	else if ( pos.y() >= height()-bottomSize )
+		m = PositionBottom;
+	else if ( pos.x() <= SIDE_MARGIN )
+		m = PositionLeft;
+	else if ( pos.x() >= width()-SIDE_MARGIN )
+		m = PositionRight;
+	else
+		m = PositionCenter;
+
+	return m;
+}
+
+void GlowClient::createButtons()
+{
+	GlowClientGlobals *globals = GlowClientGlobals::instance();
+	GlowButtonFactory *factory = globals->buttonFactory();
+	TQSize size = globals->theme()->buttonSize;
+
+	m_stickyButton = factory->createGlowButton(widget(),
+					"StickyButton", isOnAllDesktops()?i18n("Not on all desktops"):i18n("On all desktops"), Qt::LeftButton|Qt::RightButton);
+	m_stickyButton->setFixedSize(size);
+	connect(m_stickyButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(toggleOnAllDesktops()));
+	m_buttonList.insert(m_buttonList.end(), m_stickyButton);
+
+	m_helpButton = factory->createGlowButton(widget(),
+					"HelpButton", i18n("Help"));
+	m_helpButton->setFixedSize(size);
+	connect(m_helpButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(showContextHelp()));
+	m_buttonList.insert(m_buttonList.end(), m_helpButton);
+
+	m_minimizeButton = factory->createGlowButton(widget(),
+					"IconifyButton", i18n("Minimize"));
+	m_minimizeButton->setFixedSize(size);
+	connect(m_minimizeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(minimize()));
+	m_buttonList.insert(m_buttonList.end(), m_minimizeButton);
+
+	m_maximizeButton=factory->createGlowButton(widget(),
+					"MaximizeButton", i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
+	m_maximizeButton->setFixedSize(size);
+	connect(m_maximizeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotMaximize()));
+	m_buttonList.insert(m_buttonList.end(), m_maximizeButton);
+
+	m_closeButton = factory->createGlowButton(widget(),
+					"CloseButton", i18n("Close"));
+	m_closeButton->setFixedSize(size);
+	connect(m_closeButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(closeWindow()));
+	m_buttonList.insert(m_buttonList.end(), m_closeButton);
+}
+
+void GlowClient::resetLayout()
+{
+	_main_layout = new TQVBoxLayout(widget(), 0, 0);
+	_main_layout->setResizeMode (TQLayout::FreeResize);
+
+	// update button positions and colors
+	updateButtonPositions();
+	updateButtonPixmaps();
+
+	TQBoxLayout * topLayout = new TQBoxLayout(_main_layout,
+			TQBoxLayout::LeftToRight, 0, 0);
+	topLayout->setMargin(0);
+	topLayout->setSpacing(TITLE_SPACING);
+	topLayout->addSpacing(SIDE_MARGIN);
+	TQVBoxLayout *outerLeftLayout = new TQVBoxLayout(topLayout);
+	outerLeftLayout->addSpacing(TITLE_MARGIN);
+	outerLeftLayout->addItem(m_leftButtonLayout);
+	outerLeftLayout->addSpacing(1);
+	topLayout->addSpacing(SIDE_MARGIN);
+
+	_title_spacer = new TQSpacerItem(0, titleHeight + TITLE_MARGIN + 1,
+		TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+	topLayout->addItem(_title_spacer);
+
+	topLayout->addSpacing(SIDE_MARGIN);
+	TQVBoxLayout *outerRightLayout = new TQVBoxLayout(topLayout);
+	outerRightLayout->addSpacing(TITLE_MARGIN);
+	outerRightLayout->addItem(m_rightButtonLayout);
+	outerRightLayout->addSpacing(1);
+	topLayout->addSpacing(SIDE_MARGIN);
+
+	TQBoxLayout *midLayout = new TQBoxLayout(
+			_main_layout, TQBoxLayout::LeftToRight, 0, 0);
+	midLayout->addSpacing(SIDE_MARGIN);
+	if(isPreview())
+		midLayout->addWidget(
+				new TQLabel( i18n( "<b><center>Glow preview</center></b>" ), widget()));
+	else
+		midLayout->addItem( new TQSpacerItem( 0, 0 ));
+	midLayout->addSpacing(SIDE_MARGIN);
+
+	if(GlowClientGlobals::instance()->config()->showResizeHandle
+		&& isResizable() ) {
+		_bottom_spacer = new TQSpacerItem(SIDE_MARGIN*2,
+			RESIZE_HANDLE_HEIGHT, TQSizePolicy::Expanding, TQSizePolicy::Minimum);
+	} else {
+		_bottom_spacer = new TQSpacerItem(SIDE_MARGIN*2,
+			BOTTOM_MARGIN, TQSizePolicy::Expanding, TQSizePolicy::Minimum);
+	}
+	_main_layout->addItem (_bottom_spacer);
+	_main_layout->setStretchFactor(topLayout, 0);
+	_main_layout->setStretchFactor(midLayout, 1);
+}
+
+void GlowClient::updateButtonPositions()
+{
+	TQString buttons = options()->titleButtonsLeft() + "|"
+		+ options()->titleButtonsRight();
+	bool leftButtons=true;
+
+	// hide all buttons
+	for( unsigned int i=0; i<m_buttonList.size(); i++ )
+		m_buttonList[i]->hide();
+
+	m_leftButtonList.clear();
+	m_rightButtonList.clear();
+
+	// reset left and right button tqlayout
+	if(m_leftButtonLayout)
+		delete m_leftButtonLayout;
+	m_leftButtonLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+	m_leftButtonLayout->setMargin(0);
+	m_leftButtonLayout->setSpacing(TITLE_SPACING);
+	if(m_rightButtonLayout)
+		delete m_rightButtonLayout;
+	m_rightButtonLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+	m_rightButtonLayout->setMargin(0);
+	m_rightButtonLayout->setSpacing(TITLE_SPACING);
+
+	for( unsigned int i=0; i<buttons.length(); i++ )
+	{
+		char c = buttons[i].latin1();
+		GlowButton *button = 0;
+		if( c=='S' ) // sticky
+			button = m_stickyButton;
+		else if( c=='H' && providesContextHelp() ) // help
+			button = m_helpButton;
+		else if( c=='I' && isMinimizable() ) // iconify
+			button = m_minimizeButton;
+		else if( c=='A' && isMaximizable() ) // maximize
+			button = m_maximizeButton;
+		else if( c=='X' && isCloseable() ) // close
+			button= m_closeButton;
+		else if( c=='_' ) // spacer item
+		{
+			if(leftButtons)
+				m_leftButtonLayout->addSpacing(4);
+			else
+				m_rightButtonLayout->addSpacing(4);
+		}
+		else if( c=='|' )
+			leftButtons = false;
+
+		if (button) {
+			button->show(); // show visible buttons
+			if (leftButtons) {
+				m_leftButtonList.insert(m_leftButtonList.end(), button);
+				m_leftButtonLayout->addWidget(button);
+			} else {
+				m_rightButtonList.insert(m_rightButtonList.end(), button);
+				m_rightButtonLayout->addWidget(button);
+			}
+		}
+	}
+}
+
+void GlowClient::updateButtonPixmaps()
+{
+	GlowClientGlobals *globals = GlowClientGlobals::instance();
+
+	if ( isOnAllDesktops() ) {
+		m_stickyButton->setPixmapName(globals->getPixmapName(
+			GlowClientGlobals::StickyOn, isActive()));
+	} else {
+		m_stickyButton->setPixmapName(globals->getPixmapName(
+			GlowClientGlobals::StickyOff, isActive()));
+	}
+	m_helpButton->setPixmapName(globals->getPixmapName(
+		GlowClientGlobals::Help, isActive()));
+
+	m_minimizeButton->setPixmapName(globals->getPixmapName(
+		GlowClientGlobals::Iconify, isActive()));
+
+	if ( maximizeMode() == MaximizeFull ) {
+		m_maximizeButton->setPixmapName(globals->getPixmapName(
+			GlowClientGlobals::MaximizeOn, isActive()));
+	} else {
+		m_maximizeButton->setPixmapName(globals->getPixmapName(
+			GlowClientGlobals::MaximizeOff, isActive()));
+	}
+	m_closeButton->setPixmapName(globals->getPixmapName(
+		GlowClientGlobals::Close, isActive()));
+}
+
+void GlowClient::doShape()
+{
+	TQRegion mask(widget()->rect());
+	// edges
+
+	mask -= TQRegion(width()-1,0,1,1);
+	mask -= TQRegion(0,height()-1,1,1);
+	mask -= TQRegion(width()-1,height()-1,1,1);
+	setMask(mask);
+}
+
+bool GlowClient::isLeft(GlowButton *button)
+{
+	for( unsigned int i=0; i<m_leftButtonList.size(); i++ )
+		if( m_leftButtonList[i] == button )
+			return true;
+	return false;
+}
+
+bool GlowClient::isRight(GlowButton *button)
+{
+	for( unsigned int i=0; i<m_rightButtonList.size(); i++ )
+		if( m_rightButtonList[i] == button )
+			return true;
+	return false;
+}
+
+void GlowClient::slotMaximize()
+{
+	maximize(m_maximizeButton->lastButton());
+}
+
+bool GlowClient::eventFilter( TQObject* o, TQEvent* e )
+{
+	if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
+		return false;
+	switch( e->type())
+	{
+	case TQEvent::Resize:
+	    resizeEvent( TQT_TQRESIZEEVENT( e ));
+	    return true;
+	case TQEvent::Paint:
+	    paintEvent( TQT_TQPAINTEVENT( e ));
+	    return true;
+	case TQEvent::MouseButtonDblClick:
+	    mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ));
+	    return true;
+	case TQEvent::MouseButtonPress:
+	    processMousePressEvent( TQT_TQMOUSEEVENT( e ));
+	    return true;
+	case TQEvent::Show:
+	    showEvent( TQT_TQSHOWEVENT( e ));
+	    return true;
+	case TQEvent::Wheel:
+	    wheelEvent( TQT_TQWHEELEVENT( e ));
+	    return true;
+	default:
+	    break;
+	}
+    return false;
+}
+
+KDecoration* GlowClientGlobals::createDecoration( KDecorationBridge* bridge )
+{
+	return new GlowClient( bridge, this );
+}
+
+} // end of namespace
+
+extern "C"
+KDE_EXPORT KDecorationFactory* create_factory()
+{
+	return Glow::GlowClientGlobals::instance();
+}
+
+#include "glowclient.moc"
+
diff --git a/twin-styles/glow/glowclient.h b/twin-styles/glow/glowclient.h
new file mode 100644
index 00000000..9129dce0
--- /dev/null
+++ b/twin-styles/glow/glowclient.h
@@ -0,0 +1,206 @@
+/***************************************************************************
+                          glowclient.h  -  description
+                             -------------------
+    begin                : Thu Sep 6 2001
+    copyright            : (C) 2001 by Henning Burchardt
+    email                : h_burchardt@gmx.net
+ ***************************************************************************/
+
+/***************************************************************************
+ *                                                                         *
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef GLOW_CLIENT_H
+#define GLOW_CLIENT_H
+
+#include <vector>
+#include <map>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQPixmap;
+class TQBitmap;
+class TQTimer;
+class TQBoxLayout;
+class TQGridLayout;
+class TQVBoxLayout;
+class TQSpacerItem;
+
+namespace Glow
+{
+
+class GlowButton;
+class GlowButtonFactory;
+
+//-----------------------------------------------------------------------------
+// GlowTheme
+//-----------------------------------------------------------------------------
+
+struct GlowTheme
+{
+	TQSize buttonSize;
+	
+	TQString backgroundPixmap;
+	TQString backgroundAlphaPixmap;
+
+	TQString stickyOnPixmap;
+	TQString stickyOffPixmap;
+	TQString maximizeOnPixmap;
+	TQString maximizeOffPixmap;
+	TQString helpPixmap;
+	TQString closePixmap;
+	TQString iconifyPixmap;
+
+	TQString stickyOnGlowPixmap;
+	TQString stickyOffGlowPixmap;
+	TQString maximizeOnGlowPixmap;
+	TQString maximizeOffGlowPixmap;
+	TQString helpGlowPixmap;
+	TQString closeGlowPixmap;
+	TQString iconifyGlowPixmap;
+};
+
+static GlowTheme default_glow_theme = {
+	TQSize (17, 17),
+	"background.png", "background_alpha.png",
+	"stickyon.png", "stickyoff.png",
+	"maximizeon.png", "maximizeoff.png",
+	"help.png", "close.png", "iconify.png",
+	"stickyon_glow.png", "stickyoff_glow.png",
+	"maximizeon_glow.png", "maximizeoff_glow.png",
+	"help_glow.png", "close_glow.png", "iconify_glow.png" };
+
+//-----------------------------------------------------------------------------
+// GlowClientConfig
+//-----------------------------------------------------------------------------
+
+class GlowClientConfig
+{
+public:
+	GlowClientConfig();
+
+	void load (KDecorationFactory *factory);
+
+	TQColor stickyButtonGlowColor;
+	TQColor helpButtonGlowColor;
+	TQColor iconifyButtonGlowColor;
+	TQColor maximizeButtonGlowColor;
+	TQColor closeButtonGlowColor;
+	bool showResizeHandle;
+	int titlebarGradientType;
+	TQString themeName;
+};
+
+//-----------------------------------------------------------------------------
+// GlowClientGlobals
+//-----------------------------------------------------------------------------
+
+class GlowClientGlobals : public KDecorationFactory
+{
+public:
+	enum PixmapType { StickyOn, StickyOff, Help, Iconify, MaximizeOn,
+		MaximizeOff, Close };
+
+	static GlowClientGlobals *instance();
+	
+	~GlowClientGlobals();
+
+	virtual KDecoration* createDecoration( KDecorationBridge* b );
+	virtual bool reset( unsigned long changed );
+    virtual bool supports( Ability ability );
+	TQValueList< GlowClientGlobals::BorderSize >  borderSizes() const;
+	
+	TQString getPixmapName(PixmapType type, bool isActive);
+
+	GlowTheme * theme() const { return _theme; }
+	GlowClientConfig * config() const { return _config; }
+	GlowButtonFactory * buttonFactory() { return _button_factory; }
+
+private:
+	static GlowClientGlobals *m_instance;
+	
+	GlowTheme * _theme;
+	GlowClientConfig * _config;
+	GlowButtonFactory * _button_factory;
+
+	GlowClientGlobals();
+	void readConfig();
+	void readTheme ();
+	bool createPixmaps();
+	void deletePixmaps();
+	bool createPixmap(PixmapType type,bool isActive);
+	const TQString getPixmapTypeName(PixmapType type);
+};
+
+//-----------------------------------------------------------------------------
+// GlowClient
+//-----------------------------------------------------------------------------
+
+class GlowClient : public KDecoration
+{
+	Q_OBJECT
+  TQ_OBJECT
+public:
+	GlowClient( KDecorationBridge* b, KDecorationFactory* f );
+	~GlowClient();
+	
+	virtual void init();
+	virtual void borders( int&, int&, int&, int& ) const;
+	virtual void resize( const TQSize& );
+	virtual TQSize tqminimumSize() const;
+
+protected:
+	virtual void resizeEvent( TQResizeEvent * );
+	virtual void paintEvent( TQPaintEvent * );
+	virtual void showEvent( TQShowEvent * );
+	virtual void mouseDoubleClickEvent( TQMouseEvent * );
+	virtual void wheelEvent( TQWheelEvent * );
+	virtual void maximizeChange();
+	virtual void activeChange();
+	virtual void iconChange();
+	virtual void desktopChange();
+	virtual void shadeChange();
+	virtual void captionChange();
+	virtual Position mousePosition(const TQPoint &) const;
+	virtual bool eventFilter( TQObject* o, TQEvent* e );
+
+private:
+	std::vector<GlowButton*> m_buttonList;
+	std::vector<GlowButton*> m_leftButtonList;
+	std::vector<GlowButton*> m_rightButtonList;
+	GlowButton *m_stickyButton;
+	GlowButton *m_helpButton;
+	GlowButton *m_minimizeButton;
+	GlowButton *m_maximizeButton;
+	GlowButton *m_closeButton;
+	TQBoxLayout *m_leftButtonLayout;
+	TQBoxLayout *m_rightButtonLayout;
+	TQSpacerItem * _bottom_spacer;
+	TQSpacerItem * _title_spacer;
+	TQVBoxLayout * _main_layout;
+
+	void createButtons();
+	void updateButtonPositions();
+	/**
+	 * Before this method is called we have to update the button
+	 * positions with updateButtonPositions() because the pixmaps
+	 * depend on the position
+	 */
+	void updateButtonPixmaps();
+	void resetLayout();
+	void doShape();
+	bool isLeft(GlowButton *button);
+	bool isRight(GlowButton *button);
+
+protected slots:
+	void slotMaximize();
+};
+
+} // namespace
+
+#endif
diff --git a/twin-styles/glow/resources.h b/twin-styles/glow/resources.h
new file mode 100644
index 00000000..a304b822
--- /dev/null
+++ b/twin-styles/glow/resources.h
@@ -0,0 +1,11 @@
+#ifndef RESOURCES_H
+#define RESOURCES_H
+
+#define DEFAULT_CLOSE_BUTTON_COLOR TQt::red
+#define DEFAULT_MAXIMIZE_BUTTON_COLOR TQt::yellow
+#define DEFAULT_ICONIFY_BUTTON_COLOR TQt::green
+#define DEFAULT_HELP_BUTTON_COLOR TQt::white
+#define DEFAULT_STICKY_BUTTON_COLOR TQt::white
+
+#endif
+
diff --git a/twin-styles/glow/themes/CMakeLists.txt b/twin-styles/glow/themes/CMakeLists.txt
new file mode 100644
index 00000000..2f725214
--- /dev/null
+++ b/twin-styles/glow/themes/CMakeLists.txt
@@ -0,0 +1,17 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( default )
+add_subdirectory( glass )
+add_subdirectory( glass_huge )
+add_subdirectory( glass_large )
+add_subdirectory( glass_verylarge )
+add_subdirectory( square )
\ No newline at end of file
diff --git a/twin-styles/glow/themes/Makefile.am b/twin-styles/glow/themes/Makefile.am
new file mode 100644
index 00000000..ec2725a7
--- /dev/null
+++ b/twin-styles/glow/themes/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS=default glass square glass_large glass_verylarge glass_huge
diff --git a/twin-styles/glow/themes/default/CMakeLists.txt b/twin-styles/glow/themes/default/CMakeLists.txt
new file mode 100644
index 00000000..433e22b6
--- /dev/null
+++ b/twin-styles/glow/themes/default/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    default.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/default )
diff --git a/twin-styles/glow/themes/default/Makefile.am b/twin-styles/glow/themes/default/Makefile.am
new file mode 100644
index 00000000..b3ef0fa5
--- /dev/null
+++ b/twin-styles/glow/themes/default/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/default
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+default.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/default/background.png b/twin-styles/glow/themes/default/background.png
new file mode 100644
index 00000000..3fcbcdf5
Binary files /dev/null and b/twin-styles/glow/themes/default/background.png differ
diff --git a/twin-styles/glow/themes/default/close.png b/twin-styles/glow/themes/default/close.png
new file mode 100644
index 00000000..898a368a
Binary files /dev/null and b/twin-styles/glow/themes/default/close.png differ
diff --git a/twin-styles/glow/themes/default/close_glow.png b/twin-styles/glow/themes/default/close_glow.png
new file mode 100644
index 00000000..69b36e92
Binary files /dev/null and b/twin-styles/glow/themes/default/close_glow.png differ
diff --git a/twin-styles/glow/themes/default/default.theme b/twin-styles/glow/themes/default/default.theme
new file mode 100644
index 00000000..26f00feb
--- /dev/null
+++ b/twin-styles/glow/themes/default/default.theme
@@ -0,0 +1,19 @@
+buttonSize=17,17
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/default/help.png b/twin-styles/glow/themes/default/help.png
new file mode 100644
index 00000000..c3ed65ee
Binary files /dev/null and b/twin-styles/glow/themes/default/help.png differ
diff --git a/twin-styles/glow/themes/default/help_glow.png b/twin-styles/glow/themes/default/help_glow.png
new file mode 100644
index 00000000..79a5006a
Binary files /dev/null and b/twin-styles/glow/themes/default/help_glow.png differ
diff --git a/twin-styles/glow/themes/default/iconify.png b/twin-styles/glow/themes/default/iconify.png
new file mode 100644
index 00000000..94fc6338
Binary files /dev/null and b/twin-styles/glow/themes/default/iconify.png differ
diff --git a/twin-styles/glow/themes/default/iconify_glow.png b/twin-styles/glow/themes/default/iconify_glow.png
new file mode 100644
index 00000000..8b4d1413
Binary files /dev/null and b/twin-styles/glow/themes/default/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/default/maximizeoff.png b/twin-styles/glow/themes/default/maximizeoff.png
new file mode 100644
index 00000000..e60cdc97
Binary files /dev/null and b/twin-styles/glow/themes/default/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/default/maximizeoff_glow.png b/twin-styles/glow/themes/default/maximizeoff_glow.png
new file mode 100644
index 00000000..25f4c8ec
Binary files /dev/null and b/twin-styles/glow/themes/default/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/default/maximizeon.png b/twin-styles/glow/themes/default/maximizeon.png
new file mode 100644
index 00000000..3976411f
Binary files /dev/null and b/twin-styles/glow/themes/default/maximizeon.png differ
diff --git a/twin-styles/glow/themes/default/maximizeon_glow.png b/twin-styles/glow/themes/default/maximizeon_glow.png
new file mode 100644
index 00000000..941ed849
Binary files /dev/null and b/twin-styles/glow/themes/default/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/default/stickyoff.png b/twin-styles/glow/themes/default/stickyoff.png
new file mode 100644
index 00000000..3600e326
Binary files /dev/null and b/twin-styles/glow/themes/default/stickyoff.png differ
diff --git a/twin-styles/glow/themes/default/stickyoff_glow.png b/twin-styles/glow/themes/default/stickyoff_glow.png
new file mode 100644
index 00000000..5c9861a0
Binary files /dev/null and b/twin-styles/glow/themes/default/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/default/stickyon.png b/twin-styles/glow/themes/default/stickyon.png
new file mode 100644
index 00000000..a84941a3
Binary files /dev/null and b/twin-styles/glow/themes/default/stickyon.png differ
diff --git a/twin-styles/glow/themes/default/stickyon_glow.png b/twin-styles/glow/themes/default/stickyon_glow.png
new file mode 100644
index 00000000..905653e5
Binary files /dev/null and b/twin-styles/glow/themes/default/stickyon_glow.png differ
diff --git a/twin-styles/glow/themes/glass/CMakeLists.txt b/twin-styles/glow/themes/glass/CMakeLists.txt
new file mode 100644
index 00000000..279668d3
--- /dev/null
+++ b/twin-styles/glow/themes/glass/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    glass.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass )
diff --git a/twin-styles/glow/themes/glass/Makefile.am b/twin-styles/glow/themes/glass/Makefile.am
new file mode 100644
index 00000000..aeff2c35
--- /dev/null
+++ b/twin-styles/glow/themes/glass/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/glass
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+glass.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/glass/background.png b/twin-styles/glow/themes/glass/background.png
new file mode 100644
index 00000000..97d278a0
Binary files /dev/null and b/twin-styles/glow/themes/glass/background.png differ
diff --git a/twin-styles/glow/themes/glass/close.png b/twin-styles/glow/themes/glass/close.png
new file mode 100644
index 00000000..8b61cfd2
Binary files /dev/null and b/twin-styles/glow/themes/glass/close.png differ
diff --git a/twin-styles/glow/themes/glass/close_glow.png b/twin-styles/glow/themes/glass/close_glow.png
new file mode 100644
index 00000000..2be50e89
Binary files /dev/null and b/twin-styles/glow/themes/glass/close_glow.png differ
diff --git a/twin-styles/glow/themes/glass/glass.theme b/twin-styles/glow/themes/glass/glass.theme
new file mode 100644
index 00000000..9facf271
--- /dev/null
+++ b/twin-styles/glow/themes/glass/glass.theme
@@ -0,0 +1,19 @@
+buttonSize=19,19
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/glass/help.png b/twin-styles/glow/themes/glass/help.png
new file mode 100644
index 00000000..7a12fe88
Binary files /dev/null and b/twin-styles/glow/themes/glass/help.png differ
diff --git a/twin-styles/glow/themes/glass/help_glow.png b/twin-styles/glow/themes/glass/help_glow.png
new file mode 100644
index 00000000..77976ff1
Binary files /dev/null and b/twin-styles/glow/themes/glass/help_glow.png differ
diff --git a/twin-styles/glow/themes/glass/iconify.png b/twin-styles/glow/themes/glass/iconify.png
new file mode 100644
index 00000000..55b9f6a9
Binary files /dev/null and b/twin-styles/glow/themes/glass/iconify.png differ
diff --git a/twin-styles/glow/themes/glass/iconify_glow.png b/twin-styles/glow/themes/glass/iconify_glow.png
new file mode 100644
index 00000000..ff741dbe
Binary files /dev/null and b/twin-styles/glow/themes/glass/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/glass/maximizeoff.png b/twin-styles/glow/themes/glass/maximizeoff.png
new file mode 100644
index 00000000..b08d34c1
Binary files /dev/null and b/twin-styles/glow/themes/glass/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/glass/maximizeoff_glow.png b/twin-styles/glow/themes/glass/maximizeoff_glow.png
new file mode 100644
index 00000000..8ff43447
Binary files /dev/null and b/twin-styles/glow/themes/glass/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass/maximizeon.png b/twin-styles/glow/themes/glass/maximizeon.png
new file mode 100644
index 00000000..8894007e
Binary files /dev/null and b/twin-styles/glow/themes/glass/maximizeon.png differ
diff --git a/twin-styles/glow/themes/glass/maximizeon_glow.png b/twin-styles/glow/themes/glass/maximizeon_glow.png
new file mode 100644
index 00000000..7fe3c840
Binary files /dev/null and b/twin-styles/glow/themes/glass/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/glass/stickyoff.png b/twin-styles/glow/themes/glass/stickyoff.png
new file mode 100644
index 00000000..d87cfe9d
Binary files /dev/null and b/twin-styles/glow/themes/glass/stickyoff.png differ
diff --git a/twin-styles/glow/themes/glass/stickyoff_glow.png b/twin-styles/glow/themes/glass/stickyoff_glow.png
new file mode 100644
index 00000000..f682df78
Binary files /dev/null and b/twin-styles/glow/themes/glass/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass/stickyon.png b/twin-styles/glow/themes/glass/stickyon.png
new file mode 100644
index 00000000..f044c134
Binary files /dev/null and b/twin-styles/glow/themes/glass/stickyon.png differ
diff --git a/twin-styles/glow/themes/glass/stickyon_glow.png b/twin-styles/glow/themes/glass/stickyon_glow.png
new file mode 100644
index 00000000..0b468787
Binary files /dev/null and b/twin-styles/glow/themes/glass/stickyon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/CMakeLists.txt b/twin-styles/glow/themes/glass_huge/CMakeLists.txt
new file mode 100644
index 00000000..92021eff
--- /dev/null
+++ b/twin-styles/glow/themes/glass_huge/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    glass_huge.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_huge )
diff --git a/twin-styles/glow/themes/glass_huge/Makefile.am b/twin-styles/glow/themes/glass_huge/Makefile.am
new file mode 100644
index 00000000..244f67a0
--- /dev/null
+++ b/twin-styles/glow/themes/glass_huge/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/glass_huge
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+glass_huge.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/glass_huge/background.png b/twin-styles/glow/themes/glass_huge/background.png
new file mode 100644
index 00000000..f69e109b
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/background.png differ
diff --git a/twin-styles/glow/themes/glass_huge/close.png b/twin-styles/glow/themes/glass_huge/close.png
new file mode 100644
index 00000000..3f1c7369
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/close.png differ
diff --git a/twin-styles/glow/themes/glass_huge/close_glow.png b/twin-styles/glow/themes/glass_huge/close_glow.png
new file mode 100644
index 00000000..00b647dc
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/close_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/glass_huge.theme b/twin-styles/glow/themes/glass_huge/glass_huge.theme
new file mode 100644
index 00000000..d8c41f52
--- /dev/null
+++ b/twin-styles/glow/themes/glass_huge/glass_huge.theme
@@ -0,0 +1,19 @@
+buttonSize=40,40
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/glass_huge/help.png b/twin-styles/glow/themes/glass_huge/help.png
new file mode 100644
index 00000000..a391ce94
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/help.png differ
diff --git a/twin-styles/glow/themes/glass_huge/help_glow.png b/twin-styles/glow/themes/glass_huge/help_glow.png
new file mode 100644
index 00000000..a8237795
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/help_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/iconify.png b/twin-styles/glow/themes/glass_huge/iconify.png
new file mode 100644
index 00000000..b3219692
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/iconify.png differ
diff --git a/twin-styles/glow/themes/glass_huge/iconify_glow.png b/twin-styles/glow/themes/glass_huge/iconify_glow.png
new file mode 100644
index 00000000..a5950bcc
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/maximizeoff.png b/twin-styles/glow/themes/glass_huge/maximizeoff.png
new file mode 100644
index 00000000..b6ca8c0b
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/glass_huge/maximizeoff_glow.png b/twin-styles/glow/themes/glass_huge/maximizeoff_glow.png
new file mode 100644
index 00000000..deb8b29f
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/maximizeon.png b/twin-styles/glow/themes/glass_huge/maximizeon.png
new file mode 100644
index 00000000..bcccef1f
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/maximizeon.png differ
diff --git a/twin-styles/glow/themes/glass_huge/maximizeon_glow.png b/twin-styles/glow/themes/glass_huge/maximizeon_glow.png
new file mode 100644
index 00000000..410296b1
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/stickyoff.png b/twin-styles/glow/themes/glass_huge/stickyoff.png
new file mode 100644
index 00000000..db79fec8
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/stickyoff.png differ
diff --git a/twin-styles/glow/themes/glass_huge/stickyoff_glow.png b/twin-styles/glow/themes/glass_huge/stickyoff_glow.png
new file mode 100644
index 00000000..ff8377b1
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_huge/stickyon.png b/twin-styles/glow/themes/glass_huge/stickyon.png
new file mode 100644
index 00000000..c6b1f6bc
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/stickyon.png differ
diff --git a/twin-styles/glow/themes/glass_huge/stickyon_glow.png b/twin-styles/glow/themes/glass_huge/stickyon_glow.png
new file mode 100644
index 00000000..46d8470b
Binary files /dev/null and b/twin-styles/glow/themes/glass_huge/stickyon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/CMakeLists.txt b/twin-styles/glow/themes/glass_large/CMakeLists.txt
new file mode 100644
index 00000000..597d15c1
--- /dev/null
+++ b/twin-styles/glow/themes/glass_large/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    glass_large.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_large )
diff --git a/twin-styles/glow/themes/glass_large/Makefile.am b/twin-styles/glow/themes/glass_large/Makefile.am
new file mode 100644
index 00000000..353e4b6f
--- /dev/null
+++ b/twin-styles/glow/themes/glass_large/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/glass_large
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+glass_large.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/glass_large/background.png b/twin-styles/glow/themes/glass_large/background.png
new file mode 100644
index 00000000..860e346f
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/background.png differ
diff --git a/twin-styles/glow/themes/glass_large/close.png b/twin-styles/glow/themes/glass_large/close.png
new file mode 100644
index 00000000..4e180281
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/close.png differ
diff --git a/twin-styles/glow/themes/glass_large/close_glow.png b/twin-styles/glow/themes/glass_large/close_glow.png
new file mode 100644
index 00000000..59976dd3
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/close_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/glass_large.theme b/twin-styles/glow/themes/glass_large/glass_large.theme
new file mode 100644
index 00000000..1fdf6832
--- /dev/null
+++ b/twin-styles/glow/themes/glass_large/glass_large.theme
@@ -0,0 +1,19 @@
+buttonSize=23,23
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/glass_large/help.png b/twin-styles/glow/themes/glass_large/help.png
new file mode 100644
index 00000000..464a7d49
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/help.png differ
diff --git a/twin-styles/glow/themes/glass_large/help_glow.png b/twin-styles/glow/themes/glass_large/help_glow.png
new file mode 100644
index 00000000..21e94cd0
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/help_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/iconify.png b/twin-styles/glow/themes/glass_large/iconify.png
new file mode 100644
index 00000000..c148f4bb
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/iconify.png differ
diff --git a/twin-styles/glow/themes/glass_large/iconify_glow.png b/twin-styles/glow/themes/glass_large/iconify_glow.png
new file mode 100644
index 00000000..9daa831b
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/maximizeoff.png b/twin-styles/glow/themes/glass_large/maximizeoff.png
new file mode 100644
index 00000000..40580530
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/glass_large/maximizeoff_glow.png b/twin-styles/glow/themes/glass_large/maximizeoff_glow.png
new file mode 100644
index 00000000..164aadbf
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/maximizeon.png b/twin-styles/glow/themes/glass_large/maximizeon.png
new file mode 100644
index 00000000..34e9425a
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/maximizeon.png differ
diff --git a/twin-styles/glow/themes/glass_large/maximizeon_glow.png b/twin-styles/glow/themes/glass_large/maximizeon_glow.png
new file mode 100644
index 00000000..6038c045
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/stickyoff.png b/twin-styles/glow/themes/glass_large/stickyoff.png
new file mode 100644
index 00000000..a29cde1a
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/stickyoff.png differ
diff --git a/twin-styles/glow/themes/glass_large/stickyoff_glow.png b/twin-styles/glow/themes/glass_large/stickyoff_glow.png
new file mode 100644
index 00000000..76c4781e
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_large/stickyon.png b/twin-styles/glow/themes/glass_large/stickyon.png
new file mode 100644
index 00000000..c805faf4
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/stickyon.png differ
diff --git a/twin-styles/glow/themes/glass_large/stickyon_glow.png b/twin-styles/glow/themes/glass_large/stickyon_glow.png
new file mode 100644
index 00000000..7a6b9ec4
Binary files /dev/null and b/twin-styles/glow/themes/glass_large/stickyon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/CMakeLists.txt b/twin-styles/glow/themes/glass_verylarge/CMakeLists.txt
new file mode 100644
index 00000000..5fd50a91
--- /dev/null
+++ b/twin-styles/glow/themes/glass_verylarge/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    glass_verylarge.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/glass_verylarge )
diff --git a/twin-styles/glow/themes/glass_verylarge/Makefile.am b/twin-styles/glow/themes/glass_verylarge/Makefile.am
new file mode 100644
index 00000000..ab67c5db
--- /dev/null
+++ b/twin-styles/glow/themes/glass_verylarge/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/glass_verylarge
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+glass_verylarge.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/glass_verylarge/background.png b/twin-styles/glow/themes/glass_verylarge/background.png
new file mode 100644
index 00000000..ed032232
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/background.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/close.png b/twin-styles/glow/themes/glass_verylarge/close.png
new file mode 100644
index 00000000..15dc4b50
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/close.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/close_glow.png b/twin-styles/glow/themes/glass_verylarge/close_glow.png
new file mode 100644
index 00000000..9207e37e
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/close_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/glass_verylarge.theme b/twin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
new file mode 100644
index 00000000..36368a8d
--- /dev/null
+++ b/twin-styles/glow/themes/glass_verylarge/glass_verylarge.theme
@@ -0,0 +1,19 @@
+buttonSize=30,30
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/glass_verylarge/help.png b/twin-styles/glow/themes/glass_verylarge/help.png
new file mode 100644
index 00000000..3a2d0c9d
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/help.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/help_glow.png b/twin-styles/glow/themes/glass_verylarge/help_glow.png
new file mode 100644
index 00000000..29e6edf9
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/help_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/iconify.png b/twin-styles/glow/themes/glass_verylarge/iconify.png
new file mode 100644
index 00000000..2d760e3d
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/iconify.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/iconify_glow.png b/twin-styles/glow/themes/glass_verylarge/iconify_glow.png
new file mode 100644
index 00000000..01f474e5
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/maximizeoff.png b/twin-styles/glow/themes/glass_verylarge/maximizeoff.png
new file mode 100644
index 00000000..4224aa05
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png b/twin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png
new file mode 100644
index 00000000..9327994a
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/maximizeon.png b/twin-styles/glow/themes/glass_verylarge/maximizeon.png
new file mode 100644
index 00000000..2d90482f
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/maximizeon.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/maximizeon_glow.png b/twin-styles/glow/themes/glass_verylarge/maximizeon_glow.png
new file mode 100644
index 00000000..3b9a6bf4
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/stickyoff.png b/twin-styles/glow/themes/glass_verylarge/stickyoff.png
new file mode 100644
index 00000000..a2c26583
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/stickyoff.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/stickyoff_glow.png b/twin-styles/glow/themes/glass_verylarge/stickyoff_glow.png
new file mode 100644
index 00000000..c6e57e21
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/stickyon.png b/twin-styles/glow/themes/glass_verylarge/stickyon.png
new file mode 100644
index 00000000..56cde081
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/stickyon.png differ
diff --git a/twin-styles/glow/themes/glass_verylarge/stickyon_glow.png b/twin-styles/glow/themes/glass_verylarge/stickyon_glow.png
new file mode 100644
index 00000000..f3778479
Binary files /dev/null and b/twin-styles/glow/themes/glass_verylarge/stickyon_glow.png differ
diff --git a/twin-styles/glow/themes/square/CMakeLists.txt b/twin-styles/glow/themes/square/CMakeLists.txt
new file mode 100644
index 00000000..0343fa2a
--- /dev/null
+++ b/twin-styles/glow/themes/square/CMakeLists.txt
@@ -0,0 +1,22 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    background.png
+    help.png help_glow.png
+    close.png close_glow.png
+    iconify.png iconify_glow.png
+    maximizeoff.png maximizeoff_glow.png
+    maximizeon.png maximizeon_glow.png
+    stickyon.png stickyon_glow.png
+    stickyoff.png stickyoff_glow.png
+    square.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/glow-themes/square )
diff --git a/twin-styles/glow/themes/square/Makefile.am b/twin-styles/glow/themes/square/Makefile.am
new file mode 100644
index 00000000..01193d98
--- /dev/null
+++ b/twin-styles/glow/themes/square/Makefile.am
@@ -0,0 +1,17 @@
+linkdir = $(kde_datadir)/twin/glow-themes/square
+link_DATA = \
+background.png \
+help.png help_glow.png \
+close.png close_glow.png \
+iconify.png iconify_glow.png \
+maximizeoff.png maximizeoff_glow.png \
+maximizeon.png maximizeon_glow.png \
+stickyon.png stickyon_glow.png \
+stickyoff.png stickyoff_glow.png \
+square.theme
+
+EXTRA_DIST = $(link_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/glow/themes/square/background.png b/twin-styles/glow/themes/square/background.png
new file mode 100644
index 00000000..225af3a5
Binary files /dev/null and b/twin-styles/glow/themes/square/background.png differ
diff --git a/twin-styles/glow/themes/square/close.png b/twin-styles/glow/themes/square/close.png
new file mode 100644
index 00000000..898a368a
Binary files /dev/null and b/twin-styles/glow/themes/square/close.png differ
diff --git a/twin-styles/glow/themes/square/close_glow.png b/twin-styles/glow/themes/square/close_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/close_glow.png differ
diff --git a/twin-styles/glow/themes/square/help.png b/twin-styles/glow/themes/square/help.png
new file mode 100644
index 00000000..c3ed65ee
Binary files /dev/null and b/twin-styles/glow/themes/square/help.png differ
diff --git a/twin-styles/glow/themes/square/help_glow.png b/twin-styles/glow/themes/square/help_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/help_glow.png differ
diff --git a/twin-styles/glow/themes/square/iconify.png b/twin-styles/glow/themes/square/iconify.png
new file mode 100644
index 00000000..94fc6338
Binary files /dev/null and b/twin-styles/glow/themes/square/iconify.png differ
diff --git a/twin-styles/glow/themes/square/iconify_glow.png b/twin-styles/glow/themes/square/iconify_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/iconify_glow.png differ
diff --git a/twin-styles/glow/themes/square/maximizeoff.png b/twin-styles/glow/themes/square/maximizeoff.png
new file mode 100644
index 00000000..e60cdc97
Binary files /dev/null and b/twin-styles/glow/themes/square/maximizeoff.png differ
diff --git a/twin-styles/glow/themes/square/maximizeoff_glow.png b/twin-styles/glow/themes/square/maximizeoff_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/maximizeoff_glow.png differ
diff --git a/twin-styles/glow/themes/square/maximizeon.png b/twin-styles/glow/themes/square/maximizeon.png
new file mode 100644
index 00000000..3976411f
Binary files /dev/null and b/twin-styles/glow/themes/square/maximizeon.png differ
diff --git a/twin-styles/glow/themes/square/maximizeon_glow.png b/twin-styles/glow/themes/square/maximizeon_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/maximizeon_glow.png differ
diff --git a/twin-styles/glow/themes/square/square.theme b/twin-styles/glow/themes/square/square.theme
new file mode 100644
index 00000000..26f00feb
--- /dev/null
+++ b/twin-styles/glow/themes/square/square.theme
@@ -0,0 +1,19 @@
+buttonSize=17,17
+
+backgroundPixmap=background.png
+
+stickyOnPixmap=stickyon.png
+stickyOffPixmap=stickyoff.png
+maximizeOnPixmap=maximizeon.png
+maximizeOffPixmap=maximizeoff.png
+helpPixmap=help.png
+closePixmap=close.png
+iconifyPixmap=iconify.png
+
+stickyOnGlowPixmap=stickyon_glow.png
+stickyOffGlowPixmap=stickyoff_glow.png
+maximizeOnGlowPixmap=maximizeon_glow.png
+maximizeOffGlowPixmap=maximizeoff_glow.png
+helpGlowPixmap=help_glow.png
+closeGlowPixmap=close_glow.png
+iconifyGlowPixmap=iconify_glow.png
diff --git a/twin-styles/glow/themes/square/stickyoff.png b/twin-styles/glow/themes/square/stickyoff.png
new file mode 100644
index 00000000..3600e326
Binary files /dev/null and b/twin-styles/glow/themes/square/stickyoff.png differ
diff --git a/twin-styles/glow/themes/square/stickyoff_glow.png b/twin-styles/glow/themes/square/stickyoff_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/stickyoff_glow.png differ
diff --git a/twin-styles/glow/themes/square/stickyon.png b/twin-styles/glow/themes/square/stickyon.png
new file mode 100644
index 00000000..a84941a3
Binary files /dev/null and b/twin-styles/glow/themes/square/stickyon.png differ
diff --git a/twin-styles/glow/themes/square/stickyon_glow.png b/twin-styles/glow/themes/square/stickyon_glow.png
new file mode 100644
index 00000000..4cd1f1cb
Binary files /dev/null and b/twin-styles/glow/themes/square/stickyon_glow.png differ
diff --git a/twin-styles/icewm/CMakeLists.txt b/twin-styles/icewm/CMakeLists.txt
new file mode 100644
index 00000000..d59f42c9
--- /dev/null
+++ b/twin-styles/icewm/CMakeLists.txt
@@ -0,0 +1,35 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( config )
+add_subdirectory( icewm-themes )
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES icewm.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_icewm ###############################
+
+tde_add_kpart( twin3_icewm AUTOMOC
+  SOURCES icewm.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/icewm/Makefile.am b/twin-styles/icewm/Makefile.am
new file mode 100644
index 00000000..e067c531
--- /dev/null
+++ b/twin-styles/icewm/Makefile.am
@@ -0,0 +1,21 @@
+INCLUDES = $(all_includes)
+
+SUBDIRS = . config icewm-themes
+
+kde_module_LTLIBRARIES = twin3_icewm.la
+
+twin3_icewm_la_SOURCES = icewm.cpp
+twin3_icewm_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_icewm_la_LIBADD  = $(LIB_TDEUI) -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = icewm.h
+
+lnkdir = $(kde_datadir)/twin/
+lnk_DATA = icewm.desktop
+
+EXTRA_DIST = $(lnk_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/icewm/config/CMakeLists.txt b/twin-styles/icewm/config/CMakeLists.txt
new file mode 100644
index 00000000..9e2e118d
--- /dev/null
+++ b/twin-styles/icewm/config/CMakeLists.txt
@@ -0,0 +1,28 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### twin_icewm_config (module) ################
+
+tde_add_kpart( twin_icewm_config AUTOMOC
+  SOURCES config.cpp
+  LINK tdeui-shared kio-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/icewm/config/Makefile.am b/twin-styles/icewm/config/Makefile.am
new file mode 100644
index 00000000..ca2d2552
--- /dev/null
+++ b/twin-styles/icewm/config/Makefile.am
@@ -0,0 +1,16 @@
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = twin_icewm_config.la
+
+twin_icewm_config_la_SOURCES = config.cpp
+twin_icewm_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin_icewm_config_la_LIBADD = $(LIB_TDEUI) $(LIB_KIO) 
+
+METASOURCES = AUTO
+noinst_HEADERS = config.h
+
+lnkdir = $(kde_datadir)/twin/
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/icewm/config/config.cpp b/twin-styles/icewm/config/config.cpp
new file mode 100644
index 00000000..a0a2a8db
--- /dev/null
+++ b/twin-styles/icewm/config/config.cpp
@@ -0,0 +1,271 @@
+/*
+ *	$Id$
+ *
+ *	This file contains the IceWM configuration widget
+ *
+ *	Copyright (c) 2001
+ *		Karol Szwed <gallium@kde.org>
+ *		http://gallium.n3.net/
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  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 <tqdir.h>
+#include <tqregexp.h>
+#include <tqvbox.h>
+#include <tqwhatsthis.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kstandarddirs.h>
+#include <kdialog.h>
+#include <kdirwatch.h>
+#include <kapplication.h>
+
+
+extern "C"
+{
+	KDE_EXPORT TQObject* allocate_config( KConfig* conf, TQWidget* parent )
+	{
+		return(new IceWMConfig(conf, parent));
+	}
+}
+
+
+// NOTE:
+// ==========================================================================
+// 'conf' 		is a pointer to the twindecoration modules open twin config,
+//				and is by default set to the "Style" group.
+//
+// 'parent'		is the parent of the TQObject, which is a VBox inside the
+//				Configure tab in twindecoration
+// ==========================================================================
+
+IceWMConfig::IceWMConfig( KConfig* conf, TQWidget* parent )
+	: TQObject( parent )
+{
+	icewmConfig = new KConfig("twinicewmrc");
+	KGlobal::locale()->insertCatalogue("twin_art_clients");
+
+	mainWidget = new TQVBox( parent );
+	mainWidget->setSpacing( KDialog::spacingHint() );
+
+	themeListBox = new TQListBox( mainWidget );
+	TQWhatsThis::add( themeListBox,
+				i18n("Make your IceWM selection by clicking on a theme here. ") );
+
+	cbThemeTitleTextColors = new TQCheckBox(
+				i18n("Use theme &title text colors"), mainWidget );
+
+	TQWhatsThis::add( cbThemeTitleTextColors,
+				i18n("When selected, titlebar colors will follow those set "
+				"in the IceWM theme. If not selected, the current KDE "
+				"titlebar colors will be used instead.") );
+
+	cbTitleBarOnTop = new TQCheckBox(
+				i18n("&Show title bar on top of windows"), mainWidget );
+
+	TQWhatsThis::add( cbTitleBarOnTop,
+				i18n("When selected, all window titlebars will be shown "
+				"at the top of each window, otherwise they will be "
+				"shown at the bottom.") );
+
+	cbShowMenuButtonIcon = new TQCheckBox(
+				i18n("&Menu button always shows application mini icon"), mainWidget );
+
+	TQWhatsThis::add( cbShowMenuButtonIcon,
+				i18n("When selected, all titlebar menu buttons will have "
+				"the application icon shown. If not selected, the current "
+				"theme's defaults are used instead.") );
+
+	urlLabel = new KURLLabel( mainWidget );
+	urlLabel->setText( i18n("Open KDE's IceWM theme folder") );
+
+	themeLabel = new TQLabel(
+				i18n("Clicking on the link above will cause a window to appear "
+                                "showing the KDE IceWM theme folder. You can "
+				"add or remove native IceWM themes by "
+				"uncompressing <b>http://icewm.themes.org/</b> theme files "
+				"into this folder, or by creating folder symlinks to "
+				"existing IceWM themes on your system."), mainWidget );
+
+	// Load configuration options
+	load( conf );
+
+	// Ensure we track user changes properly
+	connect( themeListBox, TQT_SIGNAL(selectionChanged()),
+			 this, TQT_SLOT(slotSelectionChanged()) );
+
+	connect( urlLabel, TQT_SIGNAL(leftClickedURL(const TQString&)),
+			 this, TQT_SLOT(callURL(const TQString&)));
+
+	connect( cbThemeTitleTextColors, TQT_SIGNAL(clicked()),
+			 this, TQT_SLOT(slotSelectionChanged()) );
+
+	connect( cbTitleBarOnTop, TQT_SIGNAL(clicked()),
+			 this, TQT_SLOT(slotSelectionChanged()) );
+
+	connect( cbShowMenuButtonIcon, TQT_SIGNAL(clicked()),
+			 this, TQT_SLOT(slotSelectionChanged()) );
+
+	// Create the theme directory (if not found) ... and obtain the path as we do so.
+	localThemeString = KGlobal::dirs()->saveLocation("data", "twin");
+	localThemeString += "/icewm-themes";
+	if (!TQFile::exists(localThemeString))
+		TQDir().mkdir(localThemeString);
+
+	// Watch the icewm theme directory for theme additions/removals
+	KDirWatch::self()->addDir(localThemeString);
+	connect( KDirWatch::self(), TQT_SIGNAL(dirty(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+	connect( KDirWatch::self(), TQT_SIGNAL(created(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+	connect( KDirWatch::self(), TQT_SIGNAL(deleted(const TQString&)), this, TQT_SLOT(findIceWMThemes()) );
+
+	// Set the konqui link url
+	TQString urlThemeString = TQString("file://") + localThemeString;
+	urlThemeString.replace( TQRegExp("~"), "$HOME" );
+	urlLabel->setURL( urlThemeString );
+
+	// Make the widgets visible in twindecoration
+	mainWidget->show();
+
+	KDirWatch::self()->startScan();
+}
+
+
+IceWMConfig::~IceWMConfig()
+{
+	KDirWatch::self()->removeDir(localThemeString);
+	KDirWatch::self()->stopScan();
+	delete icewmConfig;
+	delete mainWidget;
+}
+
+
+// Searches for all installed IceWM themes, and adds them to the listBox.
+void IceWMConfig::findIceWMThemes()
+{
+	TQStringList dirList = KGlobal::dirs()->findDirs("data", "twin/icewm-themes");
+	TQStringList::ConstIterator it;
+
+	// Remove any old themes in the list (if any)
+	themeListBox->clear();
+	themeListBox->insertItem( i18n("Infadel #2 (default)") );
+
+	// Step through all twin/icewm-themes directories...
+	for( it = dirList.begin(); it != dirList.end(); it++)
+	{
+		// List all directory names only...
+		TQDir d(*it, TQString("*"), TQDir::Unsorted, TQDir::Dirs | TQDir::Readable );
+		if (d.exists())
+		{
+			TQFileInfoListIterator it2( *d.entryInfoList() );
+			TQFileInfo* finfo;
+
+			// Step through all directories within the twin/icewm-themes directory
+			while( (finfo = it2.current()) )
+			{
+				// Ignore . and .. directories
+				if ( (finfo->fileName() == ".") || (finfo->fileName() == "..") )
+				{
+					++it2;
+					continue;
+				}
+
+				if ( !themeListBox->findItem( finfo->fileName()) )
+					themeListBox->insertItem( finfo->fileName() );
+
+				++it2;
+			}
+		}
+	}
+
+	// Sort the items
+	themeListBox->sort();
+
+	// Select the currently used IceWM theme
+	TQString themeName = icewmConfig->readEntry("CurrentTheme");
+
+	// Provide a theme alias
+	if (themeName == "default")
+		themeName = "";
+
+	if (themeName.isEmpty())
+		themeListBox->setCurrentItem(
+			themeListBox->findItem( i18n("Infadel #2 (default)") ) );
+	else
+		themeListBox->setCurrentItem( themeListBox->findItem(themeName) );
+}
+
+
+void IceWMConfig::callURL( const TQString& s )
+{
+	kapp->invokeBrowser( s );
+}
+
+
+void IceWMConfig::slotSelectionChanged()
+{
+	emit changed();
+}
+
+
+// Loads the configurable options from the twinicewmrc config file
+void IceWMConfig::load( KConfig* )
+{
+	icewmConfig->setGroup("General");
+
+	bool override = icewmConfig->readBoolEntry( "ThemeTitleTextColors", true );
+	cbThemeTitleTextColors->setChecked( override );
+
+	override = icewmConfig->readBoolEntry( "TitleBarOnTop", true );
+	cbTitleBarOnTop->setChecked( override );
+
+	override = icewmConfig->readBoolEntry( "ShowMenuButtonIcon", false );
+	cbShowMenuButtonIcon->setChecked( override );
+
+	findIceWMThemes();
+}
+
+
+// Saves the configurable options to the twinicewmrc config file
+void IceWMConfig::save( KConfig* )
+{
+	icewmConfig->setGroup("General");
+	icewmConfig->writeEntry( "ThemeTitleTextColors", cbThemeTitleTextColors->isChecked() );
+	icewmConfig->writeEntry( "TitleBarOnTop", cbTitleBarOnTop->isChecked() );
+	icewmConfig->writeEntry( "ShowMenuButtonIcon", cbShowMenuButtonIcon->isChecked() );
+
+	if (themeListBox->currentText() == i18n("Infadel #2 (default)"))
+		icewmConfig->writeEntry("CurrentTheme", "default");
+	else
+		icewmConfig->writeEntry("CurrentTheme", themeListBox->currentText() );
+
+	icewmConfig->sync();
+}
+
+
+// Sets UI widget defaults which must correspond to config defaults
+void IceWMConfig::defaults()
+{
+	cbThemeTitleTextColors->setChecked( true );
+	cbTitleBarOnTop->setChecked( true );
+	cbShowMenuButtonIcon->setChecked( false );
+	themeListBox->setCurrentItem( themeListBox->findItem(i18n("Infadel #2 (default)")) );
+}
+
+#include "config.moc"
+// vim: ts=4
diff --git a/twin-styles/icewm/config/config.h b/twin-styles/icewm/config/config.h
new file mode 100644
index 00000000..c9c5b2d0
--- /dev/null
+++ b/twin-styles/icewm/config/config.h
@@ -0,0 +1,77 @@
+/*
+ *	$Id$
+ *
+ *	This file contains the IceWM configuration widget
+ *
+ *	Copyright (c) 2001
+ *		Karol Szwed <gallium@kde.org>
+ *		http://gallium.n3.net/
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2 of the License, or (at your option) any later version.
+ *
+ *  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 _ICEWMCONFIG_H
+#define _ICEWMCONFIG_H
+
+#include <tqwidget.h>
+#include <tqcheckbox.h>
+#include <tqgroupbox.h>
+#include <tqlistbox.h>
+#include <tqlabel.h>
+#include <kurllabel.h>
+#include <kconfig.h>
+
+class TQVBox;
+
+class IceWMConfig: public TQObject
+{
+	Q_OBJECT
+  TQ_OBJECT
+
+	public:
+		IceWMConfig( KConfig* conf, TQWidget* parent );
+		~IceWMConfig();
+
+	// These public signals/slots work similar to KCM modules
+	signals:
+		void changed();
+
+	public slots:
+		void load( KConfig* conf );
+		void save( KConfig* conf );
+		void defaults();
+
+	protected slots:
+		void slotSelectionChanged();	// Internal use
+		void callURL( const TQString& s );
+		void findIceWMThemes();
+
+	private:
+		KConfig*   icewmConfig;
+		TQCheckBox* cbThemeTitleTextColors;
+		TQCheckBox* cbTitleBarOnTop;
+		TQCheckBox* cbShowMenuButtonIcon;
+		TQListBox*  themeListBox;
+		TQLabel*	   themeLabel;
+		KURLLabel* urlLabel;
+		TQString    localThemeString;
+		TQVBox*     mainWidget;
+};
+
+
+#endif
+// vim: ts=4
diff --git a/twin-styles/icewm/icewm-themes/CMakeLists.txt b/twin-styles/icewm/icewm-themes/CMakeLists.txt
new file mode 100644
index 00000000..367553ab
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/CMakeLists.txt
@@ -0,0 +1,21 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+install( FILES
+    titleAB.xpm titleAJ.xpm titleAM.xpm titleAP.xpm titleAQ.xpm
+    titleAR.xpm titleAS.xpm titleAT.xpm titleIB.xpm titleIJ.xpm
+    titleIM.xpm titleIQ.xpm titleIR.xpm titleIS.xpm titleIT.xpm
+    titleIP.xpm closeA.xpm closeI.xpm depthA.xpm depthI.xpm
+    maximizeA.xpm maximizeI.xpm menuButtonA.xpm menuButtonI.xpm
+    minimizeA.xpm minimizeI.xpm restoreA.xpm restoreI.xpm
+    rolldownA.xpm rolldownI.xpm rollupA.xpm rollupI.xpm
+    default.theme
+  DESTINATION ${DATA_INSTALL_DIR}/twin/icewm-themes )
diff --git a/twin-styles/icewm/icewm-themes/Makefile.am b/twin-styles/icewm/icewm-themes/Makefile.am
new file mode 100644
index 00000000..dcd5463a
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/Makefile.am
@@ -0,0 +1,12 @@
+pics_DATA = titleAB.xpm titleAJ.xpm titleAM.xpm titleAP.xpm titleAQ.xpm \
+			titleAR.xpm titleAS.xpm titleAT.xpm titleIB.xpm titleIJ.xpm \
+			titleIM.xpm titleIQ.xpm titleIR.xpm titleIS.xpm titleIT.xpm \
+			titleIP.xpm closeA.xpm closeI.xpm depthA.xpm depthI.xpm \
+			maximizeA.xpm maximizeI.xpm menuButtonA.xpm menuButtonI.xpm \
+			minimizeA.xpm minimizeI.xpm restoreA.xpm restoreI.xpm \
+			rolldownA.xpm rolldownI.xpm rollupA.xpm rollupI.xpm \
+			default.theme 
+
+picsdir = $(kde_datadir)/twin/icewm-themes
+
+
diff --git a/twin-styles/icewm/icewm-themes/closeA.xpm b/twin-styles/icewm/icewm-themes/closeA.xpm
new file mode 100644
index 00000000..cc202bcd
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/closeA.xpm
@@ -0,0 +1,69 @@
+/* XPM */
+static char * closeA_xpm[] = {
+"15 34 32 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #798EAA",
+"(	c #7E96B6",
+"_	c #C7CDD4",
+":	c #FEFEFE",
+"<	c #8CA3C5",
+"[	c #435165",
+"}	c #3C4553",
+"|	c #323F4F",
+"1	c #0D0E13",
+"2	c #363636",
+"3	c #677B98",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/_>^]{~",
+":*)^>!(<'!_^[*:",
+"~%}^>!/*/_>^}%~",
+",%}[->*!,>;^}%,",
+"&%|[^$>_>;^}=%&",
+"@$]|1[&^^^}|]$@",
+"+)$]|&}[)||=$)+",
+"..**']=|=]]**..",
+"{{{$1*'''*1${{{",
+"####=%%%%1=####",
+")))))))))))))))",
+"2222222=2222222",
+"...............",
+"+++++++++++++++",
+"@@@@)1%%%$)@@@@",
+"&&&*'})[)}]*&&&",
+",,*=)[^-^^}2*,,",
+"~{'}[^;>;-[}'{~",
+":$=}[^>31+[|=*:",
+"~%=}[^;$;^+|=%~",
+",%]|}^1-^+}|]%,",
+"&%'2|1[[/)|2'%&",
+"@1']%|}.}|2]'1@",
+"+)1']=.==]]'1)+",
+"..$$*.]]''*$1..",
+"{{{11$***$1${{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"222222222222222"};
diff --git a/twin-styles/icewm/icewm-themes/closeI.xpm b/twin-styles/icewm/icewm-themes/closeI.xpm
new file mode 100644
index 00000000..4529b06f
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/closeI.xpm
@@ -0,0 +1,69 @@
+/* XPM */
+static char * closeI_xpm[] = {
+"15 34 32 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #8A8A8A",
+"(	g #929292",
+"_	g #CBCBCB",
+":	g #FEFEFE",
+"<	g #9F9F9F",
+"[	g #4F4F4F",
+"}	g #434343",
+"|	g #3C3C3C",
+"1	g #0E0E0E",
+"2	g #363636",
+"3	g #787878",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/_>^]{~",
+":*)^>!(<'!_^[*:",
+"~%}^>!/*/_>^}%~",
+",%}[->*!,>;^}%,",
+"&%|[^$>_>;^}=%&",
+"@$]|1[&^^^}|]$@",
+"+)$]|&}[)||=$)+",
+"..**']=|=]]**..",
+"{{{$1*'''*1${{{",
+"####=%%%%1=####",
+")))))))))))))))",
+"2222222=2222222",
+"...............",
+"+++++++++++++++",
+"@@@@)1%%%$)@@@@",
+"&&&*'})[)}]*&&&",
+",,*=)[^-^^}2*,,",
+"~{'}[^;>;-[}'{~",
+":$=}[^>31+[|=*:",
+"~%=}[^;$;^+|=%~",
+",%]|}^1-^+}|]%,",
+"&%'2|1[[/)|2'%&",
+"@1']%|}.}|2]'1@",
+"+)1']=.==]]'1)+",
+"..$$*.]]''*$1..",
+"{{{11$***$1${{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"222222222222222"};
diff --git a/twin-styles/icewm/icewm-themes/default.theme b/twin-styles/icewm/icewm-themes/default.theme
new file mode 100644
index 00000000..945a3824
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/default.theme
@@ -0,0 +1,48 @@
+# Xerithane:
+#
+# Well, Artwiz inspired me (dirty lil blackbox user <g>)
+# So, I ripped his font (snap.pcf), and then got the chrome style idea and 
+# adapted the theme as a rip of the e.t.o page (get it, Infadel..)
+# Some of the borrowed style is from Area 51 (by RudeSka, herald of #icewm)
+# Also borrowed are some icons from Area 51.
+#
+# tbf:
+#
+# Extended Artwiz's snap font, added cursors, polished the applets.
+# Invented depth, hide, rollup and rolldown buttons. Redraw the others.
+# Reduced number of colors.
+
+# closeI.xpm depthI.xpm maximizeI.xpm minimizeI.xpm restoreI.xpm hideI.xpm 
+# rollupI.xpm rolldownI.xpm menuButtonI.xpm 
+# closeA.xpm depthA.xpm maximizeA.xpm minimizeA.xpm restoreA.xpm hideA.xpm
+# rollupA.xpm rolldownA.xpm menuButtonA.xpm
+
+# PLEASE NOTE:
+# ============
+# Heavily modified by gallium for the purposes of twin-icewm. 
+# Please do not use this for icewm. Use the original icewm Infadel #2 instead.
+# The full Infadel #2 theme will still work with twin-icewm as well, but
+# this trimmed version is included here for space reasons.
+
+ThemeDescription="Infadel/1.0.7(twin)"
+ThemeAuthor="xerithane@nerdfarm.org"
+Look=pixmap
+
+TitleButtonsLeft="s"
+TitleButtonsRight="xmi"
+TitleButtonsSupported="sxmihrd"
+TitleBarCentered=1
+TitleBarHeight=17
+
+# Modified border sizes so they're more user "grip" friendly
+BorderSizeX=3
+BorderSizeY=3
+CornerSizeX=28
+CornerSizeY=28
+
+ColorNormalTitleBarText="#c0c0c0"
+ColorActiveTitleBarText="#ffffff"
+ColorActiveBorder="#868687"
+ColorNormalBorder="#575757"
+
+ShowMenuButtonIcon=0
diff --git a/twin-styles/icewm/icewm-themes/depthA.xpm b/twin-styles/icewm/icewm-themes/depthA.xpm
new file mode 100644
index 00000000..67a2e1e6
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/depthA.xpm
@@ -0,0 +1,69 @@
+/* XPM */
+static char * depthA_xpm[] = {
+"15 34 32 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #363636",
+"$	c #0D0E13",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #4A4A4A",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #5D6E86",
+">	c #D6D6D6",
+",	c #4D5868",
+"'	c #677B98",
+")	c #6E809C",
+"!	c #58667E",
+"~	c #EAEAEA",
+"{	c #232D3A",
+"]	c #798EAA",
+"^	c #7E96B6",
+"/	c #FEFEFE",
+"(	c #3C4553",
+"_	c #8CA3C5",
+":	c #111214",
+"<	c #323F4F",
+"[	c #435165",
+"}	c #C7CDD4",
+"|	c #717273",
+"1	c #181C22",
+"2	c #1D2632",
+"3	c #5D5D5E",
+"...............",
+"+++++++++++++++",
+"@@@@.#$%$#.@@@@",
+"&&&*=-;;;-=*&&&",
+">>,*-;')';!*,>>",
+"~@{,;)]^]);,{@~",
+"/*(-;)^_^);,(,/",
+"~:(,;)<(<);,*:~",
+">%([!=)))}![(%>",
+"&:=*[-}}&-,[=$&",
+"@#=<*[,-,[(<{#@",
+"+|:{<(((*(<=:|+",
+"..#1{=<==={1#..",
+"|||{$12221$=|||",
+"3333(1%%%1(3333",
+"***************",
+"###############",
+"...............",
+"+++++++++++++++",
+"@@@@|{$%%=|@@@@",
+"&&&(2**[[(2(&&&",
+">>*=([,3,,*#*>>",
+"~+1([3!;!,[(2+~",
+"/(#([,;'!-[(#(/",
+"~:=([,{={,[<=:~",
+">%{<(2,-,+(<=%>",
+"&$2#((^+.[<=2$&",
+"@=2{=#<<(<#{1=@",
+"+3$2{===={{2$!+",
+"..=:122{221:=..",
+"|||{%1111:$2|||",
+"3333#1%%%:*3333",
+"***************",
+"###############"};
diff --git a/twin-styles/icewm/icewm-themes/depthI.xpm b/twin-styles/icewm/icewm-themes/depthI.xpm
new file mode 100644
index 00000000..e4fe17a9
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/depthI.xpm
@@ -0,0 +1,69 @@
+/* XPM */
+static char * depthI_xpm[] = {
+"15 34 32 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #363636",
+"$	g #0E0E0E",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #4A4A4A",
+"=	g #323232",
+"-	g #626262",
+";	g #6B6B6B",
+">	g #D6D6D6",
+",	g #565656",
+"'	g #787878",
+")	g #7D7D7D",
+"!	g #646464",
+"~	g #EAEAEA",
+"{	g #2B2B2B",
+"]	g #8A8A8A",
+"^	g #929292",
+"/	g #FEFEFE",
+"(	g #434343",
+"_	g #9F9F9F",
+":	g #111111",
+"<	g #3C3C3C",
+"[	g #4F4F4F",
+"}	g #CBCBCB",
+"|	g #717171",
+"1	g #1B1B1B",
+"2	g #242424",
+"3	g #5D5D5D",
+"...............",
+"+++++++++++++++",
+"@@@@.#$%$#.@@@@",
+"&&&*=-;;;-=*&&&",
+">>,*-;')';!*,>>",
+"~@{,;)]^]);,{@~",
+"/*(-;)^_^);,(,/",
+"~:(,;)<(<);,*:~",
+">%([!=)))}![(%>",
+"&:=*[-}}&-,[=$&",
+"@#=<*[,-,[(<{#@",
+"+|:{<(((*(<=:|+",
+"..#1{=<==={1#..",
+"|||{$12221$=|||",
+"3333(1%%%1(3333",
+"***************",
+"###############",
+"...............",
+"+++++++++++++++",
+"@@@@|{$%%=|@@@@",
+"&&&(2**[[(2(&&&",
+">>*=([,3,,*#*>>",
+"~+1([3!;!,[(2+~",
+"/(#([,;'!-[(#(/",
+"~:=([,{={,[<=:~",
+">%{<(2,-,+(<=%>",
+"&$2#((^+.[<=2$&",
+"@=2{=#<<(<#{1=@",
+"+3$2{===={{2$!+",
+"..=:122{221:=..",
+"|||{%1111:$2|||",
+"3333#1%%%:*3333",
+"***************",
+"###############"};
diff --git a/twin-styles/icewm/icewm-themes/maximizeA.xpm b/twin-styles/icewm/icewm-themes/maximizeA.xpm
new file mode 100644
index 00000000..c34304dc
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/maximizeA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * maximizeA_xpm[] = {
+"15 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #798EAA",
+"(	c #7E96B6",
+"_	c #FEFEFE",
+":	c #7A91B1",
+"<	c #3C4553",
+"[	c #435165",
+"}	c #C7CDD4",
+"|	c #323F4F",
+"1	c #0D0E13",
+"2	c #363636",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>!(~:!>-)*_",
+"~%<^>!,@,!>^<%~",
+",%<[-}@@@};^|%,",
+"&%|[^%%%%%^<|%&",
+"@$]|<^^^^^<|]$@",
+"+)$]|<<[<<|]$)+",
+"..**'==|=]]**..",
+"{{{$1*'''*1${{{",
+"####=%%%%1=####",
+")))))))))))))))",
+"222222222222222",
+"...............",
+"+++++++++++++++",
+"@@@@)1%%%$)@@@@",
+"&&&*'<)[)['*}&&",
+",,*2<^^^^[<2*,,",
+"~{'<[^>>;-)<*{~",
+"_$=|[->+;-[<2*_",
+"~%=<[^+.+^[|=%~",
+",%]|<+.!!+<|]%,",
+"&%'=|%%%%%|2'%&",
+"@1']=||<||2]'1@",
+"+)1']==2=]]'1)+",
+"..$1*'''''*$1..",
+"{{{11$***$1${{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"222222222222222"};
diff --git a/twin-styles/icewm/icewm-themes/maximizeI.xpm b/twin-styles/icewm/icewm-themes/maximizeI.xpm
new file mode 100644
index 00000000..d857672b
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/maximizeI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * maximizeI_xpm[] = {
+"15 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #8A8A8A",
+"(	g #929292",
+"_	g #FEFEFE",
+":	g #8D8D8D",
+"<	g #434343",
+"[	g #4F4F4F",
+"}	g #CBCBCB",
+"|	g #3C3C3C",
+"1	g #0E0E0E",
+"2	g #363636",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>!(~:!>-)*_",
+"~%<^>!,@,!>^<%~",
+",%<[-}@@@};^|%,",
+"&%|[^%%%%%^<|%&",
+"@$]|<^^^^^<|]$@",
+"+)$]|<<[<<|]$)+",
+"..**'==|=]]**..",
+"{{{$1*'''*1${{{",
+"####=%%%%1=####",
+")))))))))))))))",
+"222222222222222",
+"...............",
+"+++++++++++++++",
+"@@@@)1%%%$)@@@@",
+"&&&*'<)[)['*}&&",
+",,*2<^^^^[<2*,,",
+"~{'<[^>>;-)<*{~",
+"_$=|[->+;-[<2*_",
+"~%=<[^+.+^[|=%~",
+",%]|<+.!!+<|]%,",
+"&%'=|%%%%%|2'%&",
+"@1']=||<||2]'1@",
+"+)1']==2=]]'1)+",
+"..$1*'''''*$1..",
+"{{{11$***$1${{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"222222222222222"};
diff --git a/twin-styles/icewm/icewm-themes/menuButtonA.xpm b/twin-styles/icewm/icewm-themes/menuButtonA.xpm
new file mode 100644
index 00000000..e4b5e0ed
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/menuButtonA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * menuButtonA_xpm[] = {
+"17 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #363636",
+"$	c #0D0E13",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #4A4A4A",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #5D6E86",
+">	c #D6D6D6",
+",	c #4D5868",
+"'	c #677B98",
+")	c #6E809C",
+"!	c #58667E",
+"~	c #EAEAEA",
+"{	c #232D3A",
+"]	c #798EAA",
+"^	c #7E96B6",
+"/	c #FEFEFE",
+"(	c #3C4553",
+"_	c #8CA3C5",
+":	c #111214",
+"<	c #435165",
+"[	c #323F4F",
+"}	c #717273",
+"|	c #181C22",
+"1	c #1D2632",
+"2	c #5D5D5E",
+".................",
+"+++++++++++++++++",
+"@@@@@.#$%$#.@@@@@",
+"&&&&*=-;;;-=*&&&&",
+">>>,*-;')';!*,>>>",
+"~~@{,;)]^]);,{@~~",
+"//*(-;)^_^);,(,//",
+"~~:(,;)]^]);,*:~~",
+">>%(<%%%%%%%<(%>>",
+"&&$=<@&&&&&@<=$&&",
+"@@#{[*<,,,,([=#@@",
+"++}|{[((<(([=:}++",
+"...#|{{=[={{|#...",
+"}}}}{$|111|$=}}}}",
+"22222(|%%$|(22222",
+"*****************",
+"#################",
+".................",
+"+++++++++++++++++",
+"@@@@@}{$%%=}@@@@@",
+"&&&&(1**<<(1(&&&&",
+">>>*=(<,-2<*#*>>>",
+"~~+|(<,-;-,<(1+~~",
+"//(#(<-;'!-<(#(//",
+"~~$=[*,!;-,<[=:~~",
+">>%{[%%%%%%%[{%>>",
+"&&$1#.]..]..#1$&&",
+"@@=1{=[((([#{1=@@",
+"++2$1{====={|$2++",
+"...{:|11{11|:=...",
+"}}}}{%:|||:$1}}}}",
+"22222(|%%%|(22222",
+"*****************",
+"#################"};
diff --git a/twin-styles/icewm/icewm-themes/menuButtonI.xpm b/twin-styles/icewm/icewm-themes/menuButtonI.xpm
new file mode 100644
index 00000000..854ea273
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/menuButtonI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * menuButtonI_xpm[] = {
+"17 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #363636",
+"$	g #0E0E0E",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #4A4A4A",
+"=	g #323232",
+"-	g #626262",
+";	g #6B6B6B",
+">	g #D6D6D6",
+",	g #565656",
+"'	g #787878",
+")	g #7D7D7D",
+"!	g #646464",
+"~	g #EAEAEA",
+"{	g #2B2B2B",
+"]	g #8A8A8A",
+"^	g #929292",
+"/	g #FEFEFE",
+"(	g #434343",
+"_	g #9F9F9F",
+":	g #111111",
+"<	g #4F4F4F",
+"[	g #3C3C3C",
+"}	g #717171",
+"|	g #1B1B1B",
+"1	g #242424",
+"2	g #5D5D5D",
+".................",
+"+++++++++++++++++",
+"@@@@@.#$%$#.@@@@@",
+"&&&&*=-;;;-=*&&&&",
+">>>,*-;')';!*,>>>",
+"~~@{,;)]^]);,{@~~",
+"//*(-;)^_^);,(,//",
+"~~:(,;)]^]);,*:~~",
+">>%(<%%%%%%%<(%>>",
+"&&$=<@&&&&&@<=$&&",
+"@@#{[*<,,,,([=#@@",
+"++}|{[((<(([=:}++",
+"...#|{{=[={{|#...",
+"}}}}{$|111|$=}}}}",
+"22222(|%%$|(22222",
+"*****************",
+"#################",
+".................",
+"+++++++++++++++++",
+"@@@@@}{$%%=}@@@@@",
+"&&&&(1**<<(1(&&&&",
+">>>*=(<,-2<*#*>>>",
+"~~+|(<,-;-,<(1+~~",
+"//(#(<-;'!-<(#(//",
+"~~$=[*,!;-,<[=:~~",
+">>%{[%%%%%%%[{%>>",
+"&&$1#.]..]..#1$&&",
+"@@=1{=[((([#{1=@@",
+"++2$1{====={|$2++",
+"...{:|11{11|:=...",
+"}}}}{%:|||:$1}}}}",
+"22222(|%%%|(22222",
+"*****************",
+"#################"};
diff --git a/twin-styles/icewm/icewm-themes/minimizeA.xpm b/twin-styles/icewm/icewm-themes/minimizeA.xpm
new file mode 100644
index 00000000..bcbfa3a7
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/minimizeA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * minimizeA_xpm[] = {
+"15 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #798EAA",
+"(	c #7E96B6",
+"_	c #FEFEFE",
+":	c #8CA3C5",
+"<	c #3C4553",
+"[	c #323F4F",
+"}	c #0D0E13",
+"|	c #435165",
+"1	c #363636",
+"2	c #677B98",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>!(:(!>-)*_",
+"~%<^>,,,,,>^<%~",
+",%<^-%@@@%-^[%,",
+"&%[<^-}@%-^<[%&",
+"@}][<|^%^|<[]$@",
+"+|$][<<|<<[=$)+",
+"..**]==[=]]**..",
+"{{{$}*'''*}${{{",
+"####=%%%%}]####",
+")))))))))))))))",
+"111111111111111",
+"...............",
+"+++++++++++++++",
+"@@@@)}%%%}^@@@@",
+"&&&*'<)|)<'*&&&",
+",,*1||^-^|)1*,,",
+"~{*[|^;>;^|<'{~",
+"_*1<|->2>-|<=*_",
+"~%=[|+++++|[=%~",
+",%=[<%!.!%<[]%,",
+"&%'1[<%.%)[1'%&",
+"@}']11[%[[1]'}@",
+"+)}']==1==]'})+",
+"..}$*'''''*$}..",
+"{{{$}$**$$}}{{{",
+"####]%%%%}]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/minimizeI.xpm b/twin-styles/icewm/icewm-themes/minimizeI.xpm
new file mode 100644
index 00000000..e2e954a2
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/minimizeI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * minimizeI_xpm[] = {
+"15 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #8A8A8A",
+"(	g #929292",
+"_	g #FEFEFE",
+":	g #9F9F9F",
+"<	g #434343",
+"[	g #3C3C3C",
+"}	g #0E0E0E",
+"|	g #4F4F4F",
+"1	g #363636",
+"2	g #787878",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>!(:(!>-)*_",
+"~%<^>,,,,,>^<%~",
+",%<^-%@@@%-^[%,",
+"&%[<^-}@%-^<[%&",
+"@}][<|^%^|<[]$@",
+"+|$][<<|<<[=$)+",
+"..**]==[=]]**..",
+"{{{$}*'''*}${{{",
+"####=%%%%}]####",
+")))))))))))))))",
+"111111111111111",
+"...............",
+"+++++++++++++++",
+"@@@@)}%%%}^@@@@",
+"&&&*'<)|)<'*&&&",
+",,*1||^-^|)1*,,",
+"~{*[|^;>;^|<'{~",
+"_*1<|->2>-|<=*_",
+"~%=[|+++++|[=%~",
+",%=[<%!.!%<[]%,",
+"&%'1[<%.%)[1'%&",
+"@}']11[%[[1]'}@",
+"+)}']==1==]'})+",
+"..}$*'''''*$}..",
+"{{{$}$**$$}}{{{",
+"####]%%%%}]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/restoreA.xpm b/twin-styles/icewm/icewm-themes/restoreA.xpm
new file mode 100644
index 00000000..93481afe
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/restoreA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * restoreA_xpm[] = {
+"15 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #798EAA",
+"(	c #FEFEFE",
+"_	c #3C4553",
+":	c #0D0E13",
+"<	c #323F4F",
+"[	c #C7CDD4",
+"}	c #435165",
+"|	c #363636",
+"1	c #8CA3C5",
+"2	c #7E96B6",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/,/!>^]{~",
+"(*)^>!,@,!>-)*(",
+"~%_^>,@@@,>^_%~",
+",%_^;%:%%%-^<%,",
+"&%<_^[[[[[^_<%&",
+"@:]<_:@@@%_<]$@",
+"+}$]<<%@%_<]$)+",
+"..**]]=%=]]**..",
+"{{{$:*'''*:${{{",
+"####=%%%%:=####",
+")))))))))))))))",
+"|||||||||||||||",
+"...............",
+"+++++++++++++++",
+"@@@@):%%%$)@@@@",
+"&&&*'_)})}'*[&&",
+",,*|_^^^^}_|*,,",
+"~{'_}^>1;#}<'{~",
+"($=<}-+.+^}_=*(",
+"~%=_)+!..+}<=%~",
+",%=<_%%%%%)|]%,",
+"&%'<<++2+/_=]%&",
+"@:*]=%.{.%|]*:@",
+"+):'']%{%]]':)+",
+"..$$*''%''*$$..",
+"{{{$:$***$::{{{",
+"####]%%%%:]####",
+")))))))))))))))",
+"|||||||||||||||"};
diff --git a/twin-styles/icewm/icewm-themes/restoreI.xpm b/twin-styles/icewm/icewm-themes/restoreI.xpm
new file mode 100644
index 00000000..b1408657
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/restoreI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * restoreI_xpm[] = {
+"15 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #8A8A8A",
+"(	g #FEFEFE",
+"_	g #434343",
+":	g #0E0E0E",
+"<	g #3C3C3C",
+"[	g #CBCBCB",
+"}	g #4F4F4F",
+"|	g #363636",
+"1	g #9F9F9F",
+"2	g #929292",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/,/!>^]{~",
+"(*)^>!,@,!>-)*(",
+"~%_^>,@@@,>^_%~",
+",%_^;%:%%%-^<%,",
+"&%<_^[[[[[^_<%&",
+"@:]<_:@@@%_<]$@",
+"+}$]<<%@%_<]$)+",
+"..**]]=%=]]**..",
+"{{{$:*'''*:${{{",
+"####=%%%%:=####",
+")))))))))))))))",
+"|||||||||||||||",
+"...............",
+"+++++++++++++++",
+"@@@@):%%%$)@@@@",
+"&&&*'_)})}'*[&&",
+",,*|_^^^^}_|*,,",
+"~{'_}^>1;#}<'{~",
+"($=<}-+.+^}_=*(",
+"~%=_)+!..+}<=%~",
+",%=<_%%%%%)|]%,",
+"&%'<<++2+/_=]%&",
+"@:*]=%.{.%|]*:@",
+"+):'']%{%]]':)+",
+"..$$*''%''*$$..",
+"{{{$:$***$::{{{",
+"####]%%%%:]####",
+")))))))))))))))",
+"|||||||||||||||"};
diff --git a/twin-styles/icewm/icewm-themes/rolldownA.xpm b/twin-styles/icewm/icewm-themes/rolldownA.xpm
new file mode 100644
index 00000000..e7b70845
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/rolldownA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * rolldownA_xpm[] = {
+"15 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #798EAA",
+"(	c #7E96B6",
+"_	c #FEFEFE",
+":	c #3C4553",
+"<	c #323F4F",
+"[	c #0D0E13",
+"}	c #C7CDD4",
+"|	c #435165",
+"1	c #363636",
+"2	c #8CA3C5",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>,,~,,>-)*_",
+"~%:^>%@@@%>^:%~",
+",%:^->%@%>;^<%,",
+"&%<:^;>%>-^:<%&",
+"@[]<&&}}}&&<][@",
+"+|$]%%%%%%%=$)+",
+"..**]]====]**..",
+"{{{$[*']'*[${{{",
+"####=%%%%%=####",
+")))))))))))))))",
+"111111=11111111",
+"...............",
+"+++++++++++++++",
+"@@@@)[%%%[^@@@@",
+"&&&*':)|):'*&&&",
+",,*=)|^-^|)1*,,",
+"~{':|^;>;^|:'{~",
+"_$=:|+2+2+|:=*_",
+"~%=:|%...%)<=%~",
+",%]<:|%.%|)<]%,",
+"&%'1<:)%):<<'%&",
+"@[''+/+/+(.]*[@",
+"+)['%%%%%%%'[)+",
+"..$$*'''''*$$..",
+"{{{[[$***$[[{{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/rolldownI.xpm b/twin-styles/icewm/icewm-themes/rolldownI.xpm
new file mode 100644
index 00000000..993e561b
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/rolldownI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * rolldownI_xpm[] = {
+"15 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #8A8A8A",
+"(	g #929292",
+"_	g #FEFEFE",
+":	g #434343",
+"<	g #3C3C3C",
+"[	g #0E0E0E",
+"}	g #CBCBCB",
+"|	g #4F4F4F",
+"1	g #363636",
+"2	g #9F9F9F",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^>!/(/!>^]{~",
+"_*)^>,,~,,>-)*_",
+"~%:^>%@@@%>^:%~",
+",%:^->%@%>;^<%,",
+"&%<:^;>%>-^:<%&",
+"@[]<&&}}}&&<][@",
+"+|$]%%%%%%%=$)+",
+"..**]]====]**..",
+"{{{$[*']'*[${{{",
+"####=%%%%%=####",
+")))))))))))))))",
+"111111=11111111",
+"...............",
+"+++++++++++++++",
+"@@@@)[%%%[^@@@@",
+"&&&*':)|):'*&&&",
+",,*=)|^-^|)1*,,",
+"~{':|^;>;^|:'{~",
+"_$=:|+2+2+|:=*_",
+"~%=:|%...%)<=%~",
+",%]<:|%.%|)<]%,",
+"&%'1<:)%):<<'%&",
+"@[''+/+/+(.]*[@",
+"+)['%%%%%%%'[)+",
+"..$$*'''''*$$..",
+"{{{[[$***$[[{{{",
+"####]%%%%%]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/rollupA.xpm b/twin-styles/icewm/icewm-themes/rollupA.xpm
new file mode 100644
index 00000000..32311d6a
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/rollupA.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * rollupA_xpm[] = {
+"15 34 31 1",
+" 	c None",
+".	c #858686",
+"+	c #9A9A9A",
+"@	c #AEAEAE",
+"#	c #5D5D5E",
+"$	c #111214",
+"%	c #040404",
+"&	c #C2C2C2",
+"*	c #181C22",
+"=	c #2D333D",
+"-	c #56657A",
+";	c #58667E",
+">	c #5D6E86",
+",	c #D6D6D6",
+"'	c #1D2632",
+")	c #4A4A4A",
+"!	c #6E809C",
+"~	c #EAEAEA",
+"{	c #717273",
+"]	c #232D3A",
+"^	c #4D5868",
+"/	c #C7CDD4",
+"(	c #FEFEFE",
+"_	c #0D0E13",
+":	c #435165",
+"<	c #3C4553",
+"[	c #677B98",
+"}	c #798EAA",
+"|	c #323F4F",
+"1	c #363636",
+"2	c #8CA3C5",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^/,,,,,/^]{~",
+"(*)^_%__%_%^:*(",
+"~%<^;[},}!>^<%~",
+",%<^;>,@/[-^<%,",
+"&%|<^/@@@/^<=%&",
+"@_]|<_%%%%<|]$@",
+"+)*]|<<<<||=$)+",
+"..$*'=||==]**..",
+"{{{$_**''*_${{{",
+"##-#=_%%%%=####",
+")))))))))))))))",
+"111111=11111111",
+"...............",
+"+++++++++++++++",
+"@@@@)_%%%_^@@@@",
+"&&&*'<):)<'*&&&",
+",,*=):^-^^)1*,,",
+"~{'|+2+2+++<'{~",
+"($=<%%%%%%%<=*(",
+"~%=|:^;+;^:|=%~",
+",%=|<:+.+:<|]%,",
+"&%'1<+!!.+|1'%&",
+"@_']=%%%%%1]'_@",
+"+)_*]====]]'_)+",
+"..$$*'']''*$_..",
+"{{{__$$*$$_${{{",
+"####]%%%%_]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/rollupI.xpm b/twin-styles/icewm/icewm-themes/rollupI.xpm
new file mode 100644
index 00000000..31b81973
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/rollupI.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char * rollupI_xpm[] = {
+"15 34 31 1",
+" 	g None",
+".	g #858585",
+"+	g #9A9A9A",
+"@	g #AEAEAE",
+"#	g #5D5D5D",
+"$	g #111111",
+"%	g #040404",
+"&	g #C2C2C2",
+"*	g #1B1B1B",
+"=	g #323232",
+"-	g #626262",
+";	g #646464",
+">	g #6B6B6B",
+",	g #D6D6D6",
+"'	g #242424",
+")	g #4A4A4A",
+"!	g #7D7D7D",
+"~	g #EAEAEA",
+"{	g #717171",
+"]	g #2B2B2B",
+"^	g #565656",
+"/	g #CBCBCB",
+"(	g #FEFEFE",
+"_	g #0E0E0E",
+":	g #4F4F4F",
+"<	g #434343",
+"[	g #787878",
+"}	g #8A8A8A",
+"|	g #3C3C3C",
+"1	g #363636",
+"2	g #9F9F9F",
+"...............",
+"+++++++++++++++",
+"@@@@#$%%%$#@@@@",
+"&&&*=-;>;-=*&&&",
+",,')->!!!>;)',,",
+"~{]^/,,,,,/^]{~",
+"(*)^_%__%_%^:*(",
+"~%<^;[},}!>^<%~",
+",%<^;>,@/[-^<%,",
+"&%|<^/@@@/^<=%&",
+"@_]|<_%%%%<|]$@",
+"+)*]|<<<<||=$)+",
+"..$*'=||==]**..",
+"{{{$_**''*_${{{",
+"##-#=_%%%%=####",
+")))))))))))))))",
+"111111=11111111",
+"...............",
+"+++++++++++++++",
+"@@@@)_%%%_^@@@@",
+"&&&*'<):)<'*&&&",
+",,*=):^-^^)1*,,",
+"~{'|+2+2+++<'{~",
+"($=<%%%%%%%<=*(",
+"~%=|:^;+;^:|=%~",
+",%=|<:+.+:<|]%,",
+"&%'1<+!!.+|1'%&",
+"@_']=%%%%%1]'_@",
+"+)_*]====]]'_)+",
+"..$$*'']''*$_..",
+"{{{__$$*$$_${{{",
+"####]%%%%_]####",
+")))))))))))))))",
+"111111111111111"};
diff --git a/twin-styles/icewm/icewm-themes/titleAB.xpm b/twin-styles/icewm/icewm-themes/titleAB.xpm
new file mode 100644
index 00000000..f153f2af
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAB.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * titleAS_xpm[] = {
+"1 17 12 1",
+" 	c None",
+".	c #868687",
+"+	c #9A9A9B",
+"@	c #AEAEAF",
+"#	c #C2C2C3",
+"$	c #D6D6D7",
+"%	c #EAEAEB",
+"&	c #FFFFFF",
+"*	c #727273",
+"=	c #5E5E5F",
+"-	c #4A4A4B",
+";	c #363637",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"%",
+"$",
+"#",
+"@",
+"+",
+".",
+"*",
+"=",
+"-",
+";"};
diff --git a/twin-styles/icewm/icewm-themes/titleAJ.xpm b/twin-styles/icewm/icewm-themes/titleAJ.xpm
new file mode 100644
index 00000000..0ef284c1
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAJ.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAJ_xpm[] = {
+"3 17 17 1",
+" 	c None",
+".	c #858687",
+"+	c #4F4F51",
+"@	c #999A9A",
+"#	c #AEAEAE",
+"$	c #5E5E5E",
+"%	c #C2C2C2",
+"&	c #717172",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #FEFEFE",
+";	c #909090",
+">	c #717374",
+",	c #5C5F64",
+"'	c #373739",
+")	c #494B4D",
+"!	c #343638",
+"..+",
+"@@+",
+"##$",
+"%%&",
+"**&",
+"==&",
+"--;",
+"==&",
+"**&",
+"%%&",
+"##$",
+"@@+",
+"..+",
+">>+",
+",,'",
+"))'",
+"!!'"};
diff --git a/twin-styles/icewm/icewm-themes/titleAM.xpm b/twin-styles/icewm/icewm-themes/titleAM.xpm
new file mode 100644
index 00000000..808458a4
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAM.xpm
@@ -0,0 +1,73 @@
+/* XPM */
+static char * titleAM_xpm[] = {
+"18 17 53 1",
+" 	c None",
+".	c #868687",
+"+	c #4E4E4F",
+"@	c #484848",
+"#	c #9A9A9B",
+"$	c #575758",
+"%	c #344066",
+"&	c #515151",
+"*	c #AEAEAF",
+"=	c #606061",
+"-	c #425076",
+";	c #606060",
+">	c #C2C2C3",
+",	c #68686A",
+"'	c #526185",
+")	c #707070",
+"!	c #D6D6D7",
+"~	c #717173",
+"{	c #607194",
+"]	c #808080",
+"^	c #EAEAEB",
+"/	c #7A7A7C",
+"(	c #7081A3",
+"_	c #8E8E8E",
+":	c #FFFFFF",
+"<	c #838385",
+"[	c #7284A6",
+"}	c #9B9B9B",
+"|	c #7587A9",
+"1	c #A9A9A9",
+"2	c #66779A",
+"3	c #B7B7B7",
+"4	c #57668A",
+"5	c #C5C5C5",
+"6	c #4A597D",
+"7	c #D2D2D2",
+"8	c #3D4A70",
+"9	c #303C63",
+"0	c #A7A7A7",
+"a	c #727273",
+"b	c #454547",
+"c	c #273259",
+"d	c #7F7F7F",
+"e	c #5E5E5F",
+"f	c #3C3C3E",
+"g	c #969696",
+"h	c #848484",
+"i	c #6B6B6B",
+"j	c #575757",
+"k	c #4A4A4B",
+"l	c #333335",
+"m	c #363637",
+"n	c #2A2A2C",
+"..............+...",
+"@@@@@@@@@@@@@#$###",
+"%%%%%%%%%%%%&*=***",
+"------------;>,>>>",
+"'''''''''''')!~!!!",
+"{{{{{{{{{{{{]^/^^^",
+"((((((((((((_:<:::",
+"[[[[[[[[[[[[}^/^^^",
+"||||||||||||1!~!!!",
+"2222222222223>,>>>",
+"4444444444445*=***",
+"6666666666667#$###",
+"8888888888885.+...",
+"9999999999990abaaa",
+"ccccccccccccdefeee",
+"}}}}}}}}}ghijklkkk",
+"mmmmmmmmmmmmmmnmmm"};
diff --git a/twin-styles/icewm/icewm-themes/titleAP.xpm b/twin-styles/icewm/icewm-themes/titleAP.xpm
new file mode 100644
index 00000000..a4ae203a
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAP.xpm
@@ -0,0 +1,73 @@
+/* XPM */
+static char * titleAP_xpm[] = {
+"18 17 53 1",
+" 	c None",
+".	c #868687",
+"+	c #4E4E4F",
+"@	c #9A9A9B",
+"#	c #575758",
+"$	c #484848",
+"%	c #AEAEAF",
+"&	c #606061",
+"*	c #515151",
+"=	c #344066",
+"-	c #C2C2C3",
+";	c #68686A",
+">	c #606060",
+",	c #425076",
+"'	c #D6D6D7",
+")	c #717173",
+"!	c #707070",
+"~	c #526185",
+"{	c #EAEAEB",
+"]	c #7A7A7C",
+"^	c #808080",
+"/	c #607194",
+"(	c #FFFFFF",
+"_	c #838385",
+":	c #8E8E8E",
+"<	c #7081A3",
+"[	c #9B9B9B",
+"}	c #7284A6",
+"|	c #A9A9A9",
+"1	c #7587A9",
+"2	c #B7B7B7",
+"3	c #66779A",
+"4	c #C5C5C5",
+"5	c #57668A",
+"6	c #D2D2D2",
+"7	c #4A597D",
+"8	c #3D4A70",
+"9	c #727273",
+"0	c #454547",
+"a	c #A7A7A7",
+"b	c #303C63",
+"c	c #5E5E5F",
+"d	c #3C3C3E",
+"e	c #7F7F7F",
+"f	c #273259",
+"g	c #4A4A4B",
+"h	c #333335",
+"i	c #575757",
+"j	c #6B6B6B",
+"k	c #848484",
+"l	c #969696",
+"m	c #363637",
+"n	c #2A2A2C",
+"...+..............",
+"@@@#@$$$$$$$$$$$$$",
+"%%%&%*============",
+"---;->,,,,,,,,,,,,",
+"''')'!~~~~~~~~~~~~",
+"{{{]{^////////////",
+"(((_(:<<<<<<<<<<<<",
+"{{{]{[}}}}}}}}}}}}",
+"''')'|111111111111",
+"---;-2333333333333",
+"%%%&%4555555555555",
+"@@@#@6777777777777",
+"...+.4888888888888",
+"99909abbbbbbbbbbbb",
+"cccdceffffffffffff",
+"ggghgijkl[[[[[[[[[",
+"mmmnmmmmmmmmmmmmmm"};
diff --git a/twin-styles/icewm/icewm-themes/titleAQ.xpm b/twin-styles/icewm/icewm-themes/titleAQ.xpm
new file mode 100644
index 00000000..8bc6cd28
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAQ.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAQ_xpm[] = {
+"2 17 17 1",
+" 	c None",
+".	c #4F4F51",
+"+	c #858687",
+"@	c #999A9A",
+"#	c #5E5E5E",
+"$	c #AEAEAE",
+"%	c #717172",
+"&	c #C2C2C2",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #909090",
+";	c #FEFEFE",
+">	c #717374",
+",	c #373739",
+"'	c #5C5F64",
+")	c #494B4D",
+"!	c #343638",
+".+",
+".@",
+"#$",
+"%&",
+"%*",
+"%=",
+"-;",
+"%=",
+"%*",
+"%&",
+"#$",
+".@",
+".+",
+".>",
+",'",
+",)",
+",!"};
diff --git a/twin-styles/icewm/icewm-themes/titleAR.xpm b/twin-styles/icewm/icewm-themes/titleAR.xpm
new file mode 100644
index 00000000..8bc6cd28
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAR.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAQ_xpm[] = {
+"2 17 17 1",
+" 	c None",
+".	c #4F4F51",
+"+	c #858687",
+"@	c #999A9A",
+"#	c #5E5E5E",
+"$	c #AEAEAE",
+"%	c #717172",
+"&	c #C2C2C2",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #909090",
+";	c #FEFEFE",
+">	c #717374",
+",	c #373739",
+"'	c #5C5F64",
+")	c #494B4D",
+"!	c #343638",
+".+",
+".@",
+"#$",
+"%&",
+"%*",
+"%=",
+"-;",
+"%=",
+"%*",
+"%&",
+"#$",
+".@",
+".+",
+".>",
+",'",
+",)",
+",!"};
diff --git a/twin-styles/icewm/icewm-themes/titleAS.xpm b/twin-styles/icewm/icewm-themes/titleAS.xpm
new file mode 100644
index 00000000..f153f2af
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAS.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * titleAS_xpm[] = {
+"1 17 12 1",
+" 	c None",
+".	c #868687",
+"+	c #9A9A9B",
+"@	c #AEAEAF",
+"#	c #C2C2C3",
+"$	c #D6D6D7",
+"%	c #EAEAEB",
+"&	c #FFFFFF",
+"*	c #727273",
+"=	c #5E5E5F",
+"-	c #4A4A4B",
+";	c #363637",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"%",
+"$",
+"#",
+"@",
+"+",
+".",
+"*",
+"=",
+"-",
+";"};
diff --git a/twin-styles/icewm/icewm-themes/titleAT.xpm b/twin-styles/icewm/icewm-themes/titleAT.xpm
new file mode 100644
index 00000000..84f06879
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleAT.xpm
@@ -0,0 +1,38 @@
+/* XPM */
+static char * titleAT_xpm[] = {
+"1 17 18 1",
+" 	c None",
+".	c #868687",
+"+	c #484848",
+"@	c #344066",
+"#	c #425076",
+"$	c #526185",
+"%	c #607194",
+"&	c #7081A3",
+"*	c #7284A6",
+"=	c #7587A9",
+"-	c #66779A",
+";	c #57668A",
+">	c #4A597D",
+",	c #3D4A70",
+"'	c #303C63",
+")	c #273259",
+"!	c #9B9B9B",
+"~	c #363637",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"*",
+"=",
+"-",
+";",
+">",
+",",
+"'",
+")",
+"!",
+"~"};
diff --git a/twin-styles/icewm/icewm-themes/titleIB.xpm b/twin-styles/icewm/icewm-themes/titleIB.xpm
new file mode 100644
index 00000000..f153f2af
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIB.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * titleAS_xpm[] = {
+"1 17 12 1",
+" 	c None",
+".	c #868687",
+"+	c #9A9A9B",
+"@	c #AEAEAF",
+"#	c #C2C2C3",
+"$	c #D6D6D7",
+"%	c #EAEAEB",
+"&	c #FFFFFF",
+"*	c #727273",
+"=	c #5E5E5F",
+"-	c #4A4A4B",
+";	c #363637",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"%",
+"$",
+"#",
+"@",
+"+",
+".",
+"*",
+"=",
+"-",
+";"};
diff --git a/twin-styles/icewm/icewm-themes/titleIJ.xpm b/twin-styles/icewm/icewm-themes/titleIJ.xpm
new file mode 100644
index 00000000..0ef284c1
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIJ.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAJ_xpm[] = {
+"3 17 17 1",
+" 	c None",
+".	c #858687",
+"+	c #4F4F51",
+"@	c #999A9A",
+"#	c #AEAEAE",
+"$	c #5E5E5E",
+"%	c #C2C2C2",
+"&	c #717172",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #FEFEFE",
+";	c #909090",
+">	c #717374",
+",	c #5C5F64",
+"'	c #373739",
+")	c #494B4D",
+"!	c #343638",
+"..+",
+"@@+",
+"##$",
+"%%&",
+"**&",
+"==&",
+"--;",
+"==&",
+"**&",
+"%%&",
+"##$",
+"@@+",
+"..+",
+">>+",
+",,'",
+"))'",
+"!!'"};
diff --git a/twin-styles/icewm/icewm-themes/titleIM.xpm b/twin-styles/icewm/icewm-themes/titleIM.xpm
new file mode 100644
index 00000000..575b63c4
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIM.xpm
@@ -0,0 +1,66 @@
+/* XPM */
+static char * titleIM_xpm[] = {
+"18 17 46 1",
+" 	c None",
+".	c #868686",
+"+	c #4E4E4E",
+"@	c #484848",
+"#	c #9A9A9A",
+"$	c #575757",
+"%	c #4D4D4D",
+"&	c #515151",
+"*	c #AEAEAE",
+"=	c #606060",
+"-	c #5C5C5C",
+";	c #C2C2C2",
+">	c #696969",
+",	c #6B6B6B",
+"'	c #707070",
+")	c #D6D6D6",
+"!	c #727272",
+"~	c #7A7A7A",
+"{	c #808080",
+"]	c #EAEAEA",
+"^	c #7B7B7B",
+"/	c #898989",
+"(	c #8E8E8E",
+"_	c #FFFFFF",
+":	c #848484",
+"<	c #8C8C8C",
+"[	c #9B9B9B",
+"}	c #8F8F8F",
+"|	c #A9A9A9",
+"1	c #B7B7B7",
+"2	c #C5C5C5",
+"3	c #636363",
+"4	c #D2D2D2",
+"5	c #565656",
+"6	c #494949",
+"7	c #A7A7A7",
+"8	c #464646",
+"9	c #404040",
+"0	c #7F7F7F",
+"a	c #5E5E5E",
+"b	c #3D3D3D",
+"c	c #969696",
+"d	c #4A4A4A",
+"e	c #343434",
+"f	c #363636",
+"g	c #2B2B2B",
+"..............+...",
+"@@@@@@@@@@@@@#$###",
+"%%%%%%%%%%%%&*=***",
+"------------=;>;;;",
+",,,,,,,,,,,,')!)))",
+"~~~~~~~~~~~~{]^]]]",
+"////////////(_:___",
+"<<<<<<<<<<<<[]^]]]",
+"}}}}}}}}}}}}|)!)))",
+"{{{{{{{{{{{{1;>;;;",
+"''''''''''''2*=***",
+"3333333333334#$###",
+"5555555555552.+...",
+"6666666666667!8!!!",
+"9999999999990abaaa",
+"[[[[[[[[[c:,$deddd",
+"ffffffffffffffgfff"};
diff --git a/twin-styles/icewm/icewm-themes/titleIP.xpm b/twin-styles/icewm/icewm-themes/titleIP.xpm
new file mode 100644
index 00000000..170d1b2a
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIP.xpm
@@ -0,0 +1,66 @@
+/* XPM */
+static char * titleIP_xpm[] = {
+"18 17 46 1",
+" 	c None",
+".	c #868686",
+"+	c #4E4E4E",
+"@	c #9A9A9A",
+"#	c #575757",
+"$	c #484848",
+"%	c #AEAEAE",
+"&	c #606060",
+"*	c #515151",
+"=	c #4D4D4D",
+"-	c #C2C2C2",
+";	c #696969",
+">	c #5C5C5C",
+",	c #D6D6D6",
+"'	c #727272",
+")	c #707070",
+"!	c #6B6B6B",
+"~	c #EAEAEA",
+"{	c #7B7B7B",
+"]	c #808080",
+"^	c #7A7A7A",
+"/	c #FFFFFF",
+"(	c #848484",
+"_	c #8E8E8E",
+":	c #898989",
+"<	c #9B9B9B",
+"[	c #8C8C8C",
+"}	c #A9A9A9",
+"|	c #8F8F8F",
+"1	c #B7B7B7",
+"2	c #C5C5C5",
+"3	c #D2D2D2",
+"4	c #636363",
+"5	c #565656",
+"6	c #464646",
+"7	c #A7A7A7",
+"8	c #494949",
+"9	c #5E5E5E",
+"0	c #3D3D3D",
+"a	c #7F7F7F",
+"b	c #404040",
+"c	c #4A4A4A",
+"d	c #343434",
+"e	c #969696",
+"f	c #363636",
+"g	c #2B2B2B",
+"...+..............",
+"@@@#@$$$$$$$$$$$$$",
+"%%%&%*============",
+"---;-&>>>>>>>>>>>>",
+",,,',)!!!!!!!!!!!!",
+"~~~{~]^^^^^^^^^^^^",
+"///(/_::::::::::::",
+"~~~{~<[[[[[[[[[[[[",
+",,,',}||||||||||||",
+"---;-1]]]]]]]]]]]]",
+"%%%&%2))))))))))))",
+"@@@#@3444444444444",
+"...+.2555555555555",
+"'''6'7888888888888",
+"99909abbbbbbbbbbbb",
+"cccdc#!(e<<<<<<<<<",
+"fffgffffffffffffff"};
diff --git a/twin-styles/icewm/icewm-themes/titleIQ.xpm b/twin-styles/icewm/icewm-themes/titleIQ.xpm
new file mode 100644
index 00000000..8bc6cd28
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIQ.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAQ_xpm[] = {
+"2 17 17 1",
+" 	c None",
+".	c #4F4F51",
+"+	c #858687",
+"@	c #999A9A",
+"#	c #5E5E5E",
+"$	c #AEAEAE",
+"%	c #717172",
+"&	c #C2C2C2",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #909090",
+";	c #FEFEFE",
+">	c #717374",
+",	c #373739",
+"'	c #5C5F64",
+")	c #494B4D",
+"!	c #343638",
+".+",
+".@",
+"#$",
+"%&",
+"%*",
+"%=",
+"-;",
+"%=",
+"%*",
+"%&",
+"#$",
+".@",
+".+",
+".>",
+",'",
+",)",
+",!"};
diff --git a/twin-styles/icewm/icewm-themes/titleIR.xpm b/twin-styles/icewm/icewm-themes/titleIR.xpm
new file mode 100644
index 00000000..8bc6cd28
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIR.xpm
@@ -0,0 +1,37 @@
+/* XPM */
+static char * titleAQ_xpm[] = {
+"2 17 17 1",
+" 	c None",
+".	c #4F4F51",
+"+	c #858687",
+"@	c #999A9A",
+"#	c #5E5E5E",
+"$	c #AEAEAE",
+"%	c #717172",
+"&	c #C2C2C2",
+"*	c #D6D6D6",
+"=	c #E9EAEA",
+"-	c #909090",
+";	c #FEFEFE",
+">	c #717374",
+",	c #373739",
+"'	c #5C5F64",
+")	c #494B4D",
+"!	c #343638",
+".+",
+".@",
+"#$",
+"%&",
+"%*",
+"%=",
+"-;",
+"%=",
+"%*",
+"%&",
+"#$",
+".@",
+".+",
+".>",
+",'",
+",)",
+",!"};
diff --git a/twin-styles/icewm/icewm-themes/titleIS.xpm b/twin-styles/icewm/icewm-themes/titleIS.xpm
new file mode 100644
index 00000000..f153f2af
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIS.xpm
@@ -0,0 +1,32 @@
+/* XPM */
+static char * titleAS_xpm[] = {
+"1 17 12 1",
+" 	c None",
+".	c #868687",
+"+	c #9A9A9B",
+"@	c #AEAEAF",
+"#	c #C2C2C3",
+"$	c #D6D6D7",
+"%	c #EAEAEB",
+"&	c #FFFFFF",
+"*	c #727273",
+"=	c #5E5E5F",
+"-	c #4A4A4B",
+";	c #363637",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"%",
+"$",
+"#",
+"@",
+"+",
+".",
+"*",
+"=",
+"-",
+";"};
diff --git a/twin-styles/icewm/icewm-themes/titleIT.xpm b/twin-styles/icewm/icewm-themes/titleIT.xpm
new file mode 100644
index 00000000..ddcab757
--- /dev/null
+++ b/twin-styles/icewm/icewm-themes/titleIT.xpm
@@ -0,0 +1,38 @@
+/* XPM */
+static char * titleIT_xpm[] = {
+"1 17 18 1",
+" 	c None",
+".	c #868686",
+"+	c #484848",
+"@	c #4D4D4D",
+"#	c #5C5C5C",
+"$	c #6B6B6B",
+"%	c #7A7A7A",
+"&	c #898989",
+"*	c #8C8C8C",
+"=	c #8F8F8F",
+"-	c #808080",
+";	c #707070",
+">	c #636363",
+",	c #565656",
+"'	c #494949",
+")	c #404040",
+"!	c #9B9B9B",
+"~	c #363636",
+".",
+"+",
+"@",
+"#",
+"$",
+"%",
+"&",
+"*",
+"=",
+"-",
+";",
+">",
+",",
+"'",
+")",
+"!",
+"~"};
diff --git a/twin-styles/icewm/icewm.cpp b/twin-styles/icewm/icewm.cpp
new file mode 100644
index 00000000..4b9a064b
--- /dev/null
+++ b/twin-styles/icewm/icewm.cpp
@@ -0,0 +1,1703 @@
+/*
+  $Id$
+
+  Gallium-IceWM themeable KWin client
+
+  Copyright 2001
+	Karol Szwed <gallium@kde.org>
+	http://gallium.n3.net/
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  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.
+
+  -----------------------------------------------------------------------------
+  This client loads most icewm 1.0.X pixmap themes, without taking into account
+  specific font settings for clients, or coloured mouse cursors. Titlebar
+  fonts can be changed via the kde control center. Bi-colour mouse cursors
+  may be added in future if requested by users, as well as theme font support.
+  Any styles using inbuilt icewm titlebar drawing without using pixmaps (e.g.
+  Warp4, win95 etc.) are not fully supported, and may cause drawing errors,
+  as these themes use in-built icewm drawing mechanisms.
+
+  When a pixmap theme is not present (or a corrupt one is present) then very
+  plain title decorations are painted instead, so that users don't see
+  non-painted window areas where possible ;)
+
+  At a later date, frame shaping may be added if really requested, and an
+  update to support the latest icewm 1.1.X theme format may be made.
+
+*/
+
+#include <kconfig.h>
+#include <kstandarddirs.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <kdrawutil.h>
+#include <tqapplication.h>
+#include <tqlabel.h>
+#include <tqdrawutil.h>
+#include <tqdatetime.h>
+#include <tqbitmap.h>
+#include <tqcursor.h>
+#include <tqstring.h>
+#include <tqtooltip.h>
+#include <tqregexp.h>
+#include "icewm.h"
+
+namespace IceWM {
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// Here's the global pixmap stuff - as memory efficient as it can be :)
+////////////////////////////////////////////////////////////////////////////////////////////
+
+// IceWM frame pixmaps
+TQPixmap* frameTL[] = {NULL, NULL};
+TQPixmap* frameT [] = {NULL, NULL};
+TQPixmap* frameTR[] = {NULL, NULL};
+TQPixmap* frameL [] = {NULL, NULL};
+TQPixmap* frameR [] = {NULL, NULL};
+TQPixmap* frameBL[] = {NULL, NULL};
+TQPixmap* frameB [] = {NULL, NULL};
+TQPixmap* frameBR[] = {NULL, NULL};
+
+// Button pixmaps
+TQPixmap* closePix[]      = {NULL, NULL};
+TQPixmap* depthPix[]      = {NULL, NULL};
+TQPixmap* maximizePix[]   = {NULL, NULL};
+TQPixmap* minimizePix[]   = {NULL, NULL};
+TQPixmap* restorePix[]    = {NULL, NULL};
+TQPixmap* hidePix[]       = {NULL, NULL};
+TQPixmap* rollupPix[]     = {NULL, NULL};
+TQPixmap* rolldownPix[]   = {NULL, NULL};
+TQPixmap* menuButtonPix[] = {NULL, NULL};
+
+// Titlebar pixmaps
+TQPixmap* titleJ[] = {NULL, NULL};
+TQPixmap* titleL[] = {NULL, NULL};
+TQPixmap* titleS[] = {NULL, NULL};
+TQPixmap* titleP[] = {NULL, NULL};
+TQPixmap* titleT[] = {NULL, NULL};
+TQPixmap* titleM[] = {NULL, NULL};
+TQPixmap* titleB[] = {NULL, NULL};
+TQPixmap* titleR[] = {NULL, NULL};
+TQPixmap* titleQ[] = {NULL, NULL};
+
+ThemeHandler* clientHandler;
+
+TQString* titleButtonsLeft;
+TQString* titleButtonsRight;
+
+TQColor* colorActiveBorder;
+TQColor* colorInActiveBorder;
+TQColor* colorActiveButton;
+TQColor* colorInActiveButton;
+TQColor* colorActiveTitleBarText;
+TQColor* colorInActiveTitleBarText;
+TQColor* colorActiveTitleBar;
+TQColor* colorInActiveTitleBar;
+TQColor* colorActiveTitleTextShadow;
+TQColor* colorInActiveTitleTextShadow;
+
+int  cornerSizeX;
+int  cornerSizeY;
+int  titleBarHeight;
+int  borderSizeX;
+int  borderSizeY;
+
+bool validframe  			= false;
+bool useActiveShadow 		= false;
+bool useInActiveShadow 		= false;
+
+// KControl Settings - Read from twinicewmrc config file or icewm theme
+bool themeTitleTextColors 	= true;		// Allow theme to set colors.
+										// kcontrol will have no effect
+
+bool titleBarOnTop 		  	= true;		// Titlebars can be below windows too :)
+bool showMenuButtonIcon   	= false;	// Draw a mini icon over the menu pixmap.
+bool customButtonPositions 	= false;	// Let the theme dictate the btn pos.
+bool titleBarCentered 	  	= true;
+
+enum styles {OTHER, WARP3, WARP4, MOTIF, WIN95, NICE} themeLook;
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// General utility functions
+////////////////////////////////////////////////////////////////////////////////////////////
+
+// Returns true if both active and inactive pixmaps are valid, and not null
+bool validPixmaps( TQPixmap* p[] )
+{
+	return ( p[Active]   && ( !p[Active]->isNull()   ) &&
+			 p[InActive] && ( !p[InActive]->isNull() ) );
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// ThemeHandler class
+//
+// This class allows us to free dynamic memory upon being reset, or unloaded
+// from twin, so we don't leak big images everywhere, and handles the theme
+// initialisation / destruction in general.
+////////////////////////////////////////////////////////////////////////////////////////////
+
+ThemeHandler::ThemeHandler()
+{
+	initialized = false;
+
+	// Prevent having globals objects (use pointers to objects)
+	titleButtonsLeft 	= new TQString();
+	titleButtonsRight 	= new TQString();
+
+	colorActiveBorder 			= new TQColor();
+	colorInActiveBorder 		= new TQColor();
+	colorActiveButton 	        = new TQColor();
+	colorInActiveButton 		= new TQColor();
+	colorActiveTitleBarText 	= new TQColor();
+	colorInActiveTitleBarText	= new TQColor();
+	colorActiveTitleBar 		= new TQColor();
+	colorInActiveTitleBar 		= new TQColor();
+	colorActiveTitleTextShadow	= new TQColor();
+	colorInActiveTitleTextShadow = new TQColor();
+
+	// Initialize
+	readConfig();
+	initTheme();
+	validframe = isFrameValid();
+	initialized = true;
+}
+
+
+ThemeHandler::~ThemeHandler()
+{
+	if (initialized)
+		freePixmaps();
+
+	delete colorInActiveTitleTextShadow;
+	delete colorActiveTitleTextShadow;
+	delete colorInActiveBorder;
+	delete colorActiveTitleBarText;
+	delete colorInActiveTitleBarText;
+	delete colorActiveTitleBar;
+	delete colorInActiveTitleBar;
+	delete colorActiveBorder;
+	delete colorActiveButton;
+	delete colorInActiveButton;
+
+	delete titleButtonsRight;
+	delete titleButtonsLeft;
+}
+
+
+KDecoration* ThemeHandler::createDecoration( KDecorationBridge* bridge )
+{
+	return new IceWMClient( bridge, this );
+}
+
+
+// Converts KDE style button strings to icewm style button strings
+void ThemeHandler::convertButtons( TQString& s )
+{
+	s.replace( TQRegExp("_"), "");	// Spacer	(ignored)
+	s.replace( TQRegExp("H"), "");	// Help		(ignored)
+	s.replace( TQRegExp("M"), "s");	// Sysmenu
+	s.replace( TQRegExp("S"), "d");	// Sticky/OnAllDesktops
+	s.replace( TQRegExp("I"), "i");	// Minimize
+	s.replace( TQRegExp("A"), "m");	// Maximize
+	s.replace( TQRegExp("X"), "x");	// Close
+}
+
+
+// Reverses all characters in a TQString
+TQString ThemeHandler::reverseString( TQString s )
+{
+	if (s.length() <= 1)
+		return s;
+
+	TQString tmpStr;
+	for(int i = s.length()-1; i >= 0; i--)
+	{
+		tmpStr += s[(unsigned int)i];
+	}
+
+	return tmpStr;
+}
+
+
+// This function reads the twinicewmrc config file
+void ThemeHandler::readConfig()
+{
+	KConfig conf("twinicewmrc");
+	conf.setGroup("General");
+	themeName = conf.readEntry("CurrentTheme");
+	themeTitleTextColors = conf.readBoolEntry("ThemeTitleTextColors", true);
+	showMenuButtonIcon = conf.readBoolEntry("ShowMenuButtonIcon", false);
+	titleBarOnTop = conf.readBoolEntry("TitleBarOnTop", true);
+
+	customButtonPositions = KDecoration::options()->customButtonPositions();
+	if (customButtonPositions)
+	{
+		*titleButtonsLeft  = KDecoration::options()->titleButtonsLeft();
+		*titleButtonsRight = KDecoration::options()->titleButtonsRight();
+
+		// Convert KDE to icewm style buttons
+		convertButtons( *titleButtonsLeft );
+		convertButtons( *titleButtonsRight );
+	}
+
+	// Provide a default theme alias
+	if (themeName == "default")
+		themeName = "";
+}
+
+
+// This creates the dynamic pixmaps upon loading the style
+// into the pixmap buffers above, and configures the dimensioning stuff.
+void ThemeHandler::initTheme()
+{
+	// Add a slash if required
+	if ( !themeName.isEmpty() )
+		themeName += "/";
+
+	// We use kconfig to read icewm config files...
+	// this is easy since icewm uses key=value pairs!
+	KConfig config( locate("data", TQString("twin/icewm-themes/") +
+					themeName + TQString("default.theme")) );
+
+	// Load specifics, or use IceWM defaults instead.
+	borderSizeX = config.readNumEntry("BorderSizeX", 6);
+	borderSizeY = config.readNumEntry("BorderSizeY", 6);
+	cornerSizeX = config.readNumEntry("CornerSizeX", 24);
+	cornerSizeY = config.readNumEntry("CornerSizeY", 24);
+	titleBarCentered = (bool) config.readNumEntry("TitleBarCentered", 0);
+
+	// Check if readConfig() hasn't overridden this value...
+	if (!showMenuButtonIcon)
+		showMenuButtonIcon = (bool) config.readNumEntry("ShowMenuButtonIcon", 0);
+	titleBarHeight = config.readNumEntry("TitleBarHeight", 20);
+
+	if (!customButtonPositions)
+	{
+		// Read in the button configuration, stripping any quotes
+		// Ignore on all desktops 'd' on the left buttons
+		// (some themes look bad with it on by default)
+		*titleButtonsLeft = config.readEntry("TitleButtonsLeft", "s");
+		*titleButtonsLeft = titleButtonsLeft->replace( TQRegExp(TQString("\"")), "");
+		*titleButtonsRight = config.readEntry("TitleButtonsRight", "xmir");
+		*titleButtonsRight = titleButtonsRight->replace( TQRegExp(TQString("\"")), "");
+
+		// I have no idea why the right side buttons in icewm are reversed
+		*titleButtonsRight = reverseString( *titleButtonsRight );
+	}
+
+	// Read the default border and text colours from the config file
+	// And use IceWM defaults if not found
+	TQString s;
+
+	s = config.readEntry("Look", "other");
+	if (s=="motif") themeLook = MOTIF;
+	else if (s=="warp3") themeLook = WARP3;
+	else if (s=="warp4") themeLook = WARP4;
+	else if (s=="win95") themeLook = WIN95;
+	else if (s=="nice") themeLook = NICE;
+	else themeLook = OTHER;
+
+	s = config.readEntry("ColorActiveBorder", "#C0C0C0");
+	*colorActiveBorder = decodeColor( s );
+	s = config.readEntry("ColorNormalBorder", "#C0C0C0");
+	*colorInActiveBorder = decodeColor( s );
+	s = config.readEntry("ColorActiveButton", "#C0C0C0");
+	*colorActiveButton = decodeColor( s );
+	s = config.readEntry("ColorNormalButton", "#C0C0C0");
+	*colorInActiveButton = decodeColor( s );
+
+	// Use these as a last resort
+	s = config.readEntry("ColorActiveTitleBar", "#0000A0");
+	*colorActiveTitleBar = decodeColor( s );
+	s = config.readEntry("ColorNormalTitleBar", "#808080");
+	*colorInActiveTitleBar = decodeColor( s );
+
+	// Read titlebar text colours
+	s = config.readEntry("ColorActiveTitleBarText", "#FFFFFF");
+	*colorActiveTitleBarText = decodeColor( s );
+	s = config.readEntry("ColorNormalTitleBarText", "#000000");
+	*colorInActiveTitleBarText = decodeColor( s );
+
+	// Use title text shadows only with theme title text colors
+	if ( themeTitleTextColors )
+	{
+		s = config.readEntry("ColorActiveTitleBarShadow");
+		if (!s.isEmpty())
+		{
+			*colorActiveTitleTextShadow = decodeColor( s );
+			useActiveShadow = true;
+		} else
+			useActiveShadow = false;
+
+		s = config.readEntry("ColorNormalTitleBarShadow");
+		if (!s.isEmpty())
+		{
+			*colorInActiveTitleTextShadow = decodeColor( s );
+			useInActiveShadow = true;
+		} else
+			useInActiveShadow = false;
+	} else
+		{
+			useActiveShadow = false;
+			useInActiveShadow = false;
+		}
+
+	// Stretch pixmaps for speed, where required
+	setPixmap( titleJ, "title", "J.xpm" );
+	setPixmap( titleL, "title", "L.xpm" );
+	setPixmap( titleS, "title", "S.xpm", true );
+
+	setPixmap( titleP, "title", "P.xpm" );
+	setPixmap( titleT, "title", "T.xpm", true );
+	setPixmap( titleM, "title", "M.xpm" );
+	setPixmap( titleB, "title", "B.xpm", true );
+	setPixmap( titleR, "title", "R.xpm" );
+	setPixmap( titleQ, "title", "Q.xpm" );
+
+	setPixmapButton( closePix,     "close",     ".xpm" );
+	setPixmapButton( depthPix,     "depth",     ".xpm" );
+	setPixmapButton( maximizePix,  "maximize",  ".xpm" );
+	setPixmapButton( minimizePix,  "minimize",  ".xpm" );
+	setPixmapButton( restorePix,   "restore",   ".xpm" );
+	setPixmapButton( hidePix,      "hide",      ".xpm" );
+	setPixmapButton( rollupPix,    "rollup",    ".xpm" );
+	setPixmapButton( rolldownPix,  "rolldown",  ".xpm" );
+	setPixmapButton( menuButtonPix,"menuButton",".xpm" );
+
+	// Top
+	setPixmap( frameTL, "frame", "TL.xpm" );
+	setPixmap( frameT,  "frame", "T.xpm", true );
+	setPixmap( frameTR, "frame", "TR.xpm" );
+
+	// Sides
+	setPixmap( frameL, "frame", "L.xpm", true,Qt::Vertical );
+	setPixmap( frameR, "frame", "R.xpm", true,Qt::Vertical );
+
+	// Bottom
+	setPixmap( frameBL, "frame", "BL.xpm" );
+	setPixmap( frameB,  "frame", "B.xpm", true );
+	setPixmap( frameBR, "frame", "BR.xpm" );
+
+    // Make sure border sizes are at least reasonable...
+	if (borderSizeX < 0)
+		borderSizeX = 0;
+	if (borderSizeY < 0)
+		borderSizeY = 0;
+	// ...and titleBarHeight as well
+	if (titleBarHeight < 0)
+		titleBarHeight = 0;
+
+	// This is a work-around for some themes
+	if (!titleT[Active])
+		titleT[Active] = duplicateValidPixmap( Active );
+
+	if (!titleB[Active])
+		titleB[Active] = duplicateValidPixmap( Active );
+
+
+	if (titleL[Active] && !titleL[InActive])
+		titleL[InActive] = duplicateValidPixmap( InActive, titleL[Active]->width() );
+
+	if (titleS[Active] && !titleS[InActive])
+		titleS[InActive] = duplicateValidPixmap( InActive, titleS[Active]->width() );
+
+	if (titleP[Active] && !titleP[InActive])
+		titleP[InActive] = duplicateValidPixmap( InActive, titleP[Active]->width() );
+
+	if (titleT[Active] && !titleT[InActive])
+		titleT[InActive] = duplicateValidPixmap( InActive, titleT[Active]->width() );
+
+	if (titleM[Active] && !titleM[InActive])
+		titleM[InActive] = duplicateValidPixmap( InActive, titleM[Active]->width() );
+
+	if (titleB[Active] && !titleB[InActive])
+		titleB[InActive] = duplicateValidPixmap( InActive, titleB[Active]->width() );
+
+	if (titleR[Active] && !titleR[InActive])
+		titleR[InActive] = duplicateValidPixmap( InActive, titleR[Active]->width() );
+}
+
+
+TQPixmap* ThemeHandler::duplicateValidPixmap( bool act, int size )
+{
+	TQPixmap* p1 = NULL;
+	// Use the stretch or title pixmaps instead
+	if ( titleS[act] )
+		p1 = new TQPixmap( *titleS[act] );
+	else if ( titleB[act] )
+		p1 = new TQPixmap( *titleB[act] );
+	else if ( titleT[act] )
+		p1 = new TQPixmap( *titleT[act] );
+
+	// Stretch if required
+	if ( (size != -1) && p1 && (!p1->isNull()) )
+		p1 = stretchPixmap( p1, true, size );
+
+	return p1;
+}
+
+
+// Frees all memory used by pixmaps.
+void ThemeHandler::freePixmaps()
+{
+	freePixmapGroup( frameTL );
+	freePixmapGroup( frameT );
+	freePixmapGroup( frameTR );
+	freePixmapGroup( frameL );
+	freePixmapGroup( frameR );
+	freePixmapGroup( frameBL );
+	freePixmapGroup( frameB );
+	freePixmapGroup( frameBR );
+
+	freePixmapGroup( closePix );
+	freePixmapGroup( depthPix );
+	freePixmapGroup( maximizePix );
+	freePixmapGroup( minimizePix );
+	freePixmapGroup( restorePix );
+	freePixmapGroup( hidePix );
+	freePixmapGroup( rollupPix );
+	freePixmapGroup( rolldownPix );
+	freePixmapGroup( menuButtonPix );
+
+	freePixmapGroup( titleJ );
+	freePixmapGroup( titleL );
+	freePixmapGroup( titleS );
+	freePixmapGroup( titleP );
+	freePixmapGroup( titleT );
+	freePixmapGroup( titleM );
+	freePixmapGroup( titleB );
+	freePixmapGroup( titleR );
+	freePixmapGroup( titleQ );
+}
+
+
+// Frees a dynamic pixmap group from the heap.
+void ThemeHandler::freePixmapGroup( TQPixmap* p[] )
+{
+	if (p)
+	{
+		if (p[Active])   delete p[Active];
+		if (p[InActive]) delete p[InActive];
+		p[Active] = NULL;
+		p[InActive] = NULL;
+	} else
+		qWarning("twin-icewm: freePixmapGroup - invalid TQPixmap** 'p'\n");
+}
+
+
+// Converts icewm colors #C0C0C0 or rgb:C0/C0/C0 to TQColors
+TQColor ThemeHandler::decodeColor( TQString& s )
+{
+	// Make rgb:C0/C0/C0, or #C0/C0/C0  -> C0C0C0
+	s.replace( TQRegExp("r"), "");
+	s.replace( TQRegExp("g"), "");
+	s.replace( TQRegExp("b"), "");
+	s.replace( TQRegExp("#"), "");
+	s.replace( TQRegExp("/"), "");
+	s.replace( TQRegExp(":"), "");
+	s.replace( TQRegExp("\\"), "");
+	s.replace( TQRegExp("\""), "");
+
+	// Wierd error - return grey
+	if (s.length() != 6)
+		return TQColor( 0xC0, 0xC0, 0xC0 );
+
+	// TQt makes this conversion very easy
+	return TQColor( TQString("#") + s );
+}
+
+
+// Stretches tiny pixmaps vertically or horizontally, taking into account
+// repetition in patterns, so as not to make them mismatched
+TQPixmap* ThemeHandler::stretchPixmap( TQPixmap* src, bool stretchHoriz, int stretchSize )
+{
+	if (!src) return NULL;
+	if (src->isNull()) return NULL;
+
+	int s_inc, size;
+
+	// If its the right size already, just return
+	if (stretchSize == -1)
+	{
+		if (stretchHoriz)
+			s_inc = src->width();
+		else
+			s_inc = src->height();
+
+		size = s_inc;
+		if (size >= 100)
+			return src;
+
+		// Stretch an appropriate amount - taking care of pattern repetition
+		while( size < 100 )
+			size += s_inc;
+	} else
+		size = stretchSize;
+
+	TQPixmap* p = new TQPixmap();
+	if ( stretchHoriz )
+		p->resize( size, src->height() );
+	else
+		p->resize( src->width(), size );
+
+	TQPainter pnt( p );
+	if ( stretchHoriz )
+		pnt.drawTiledPixmap( 0, 0, size, src->height(), *src);
+	else
+		pnt.drawTiledPixmap( 0, 0, src->width(), size, *src);
+	pnt.end();
+
+	delete src;
+	return p;
+}
+
+static void draw3DRect(TQPainter &pnt, TQColor &col, int x, int y, int w, int h, bool up) {
+	TQColor light = col.light(135);
+	TQColor dark = col.dark(140);
+	pnt.setPen(up ? light : dark);
+	pnt.drawLine(x, y, x+w, y);
+	pnt.drawLine(x, y, x, y+h);
+	pnt.setPen(up ? dark : light);
+	pnt.drawLine(x, y+h, x+w, y+h);
+	pnt.drawLine(x+w, y, x+w, y+h);
+	pnt.setPen(col);
+	pnt.drawPoint(x+w, y);
+	pnt.drawPoint(x, y+h);
+}
+
+void ThemeHandler::setPixmapButton( TQPixmap* p[], TQString s1, TQString s2)
+{
+	if ( p[Active] )
+		qWarning("twin-icewm: setPixmap - should be null (1)\n");
+	if ( p[InActive] )
+		qWarning("twin-icewm: setPixmap - should be null (2)\n");
+
+	TQString str = locate("appdata", TQString("icewm-themes/")
+				+ themeName + s1 + "A" + s2);
+	if (str.isEmpty())
+		str = locate("appdata", TQString("icewm-themes/")
+				+ themeName + s1 + s2);
+
+        TQPixmap *qp = new TQPixmap(str);
+	TQColor cActive = themeLook == WIN95 ? *colorActiveTitleBar : *colorActiveButton;
+	TQColor cInActive = themeLook == WIN95 ? *colorInActiveTitleBar : *colorInActiveButton;
+
+	if (!qp->isNull() && themeLook > 0) {
+		int w = qp->width();
+		if (themeLook > 0 && titleBarHeight > w) w = titleBarHeight;
+		p[Active] = new TQPixmap(w, 2*titleBarHeight );
+		p[Active] -> fill(cActive);
+
+		TQPainter pnt( p[Active] );
+
+		int offX = (w - qp->width())/2;
+		int offY = (titleBarHeight - qp->height())/2;
+		if (offY < 0) offY = 0;
+
+		if (themeLook == WIN95) {
+			draw3DRect(pnt, *colorActiveButton, offX-1, offY-1,
+				   qp->width()+1, qp->height()+1, true);
+			draw3DRect(pnt, *colorActiveButton, offX-1, offY-1 + titleBarHeight,
+				   qp->width()+1, qp->height()+1, false);
+		} else if (themeLook != WARP4) {
+			draw3DRect(pnt, *colorActiveButton, 0, 0,
+				   w-1, titleBarHeight-1, true);
+			draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
+				   w-1, 2*titleBarHeight-1, false);
+		}
+
+		pnt.drawPixmap(offX, offY, *qp);
+		if (qp->height() <= titleBarHeight) {
+			pnt.drawPixmap(offX, titleBarHeight+offY, *qp);
+		}
+		pnt.end();
+		delete qp;
+	} else {
+		p[Active] = qp;
+	}
+
+	str = locate("appdata", TQString("icewm-themes/")
+		     + themeName + s1 + "I" + s2);
+	if (str.isEmpty())
+		str = locate("appdata", TQString("icewm-themes/")
+			     + themeName + s1 + s2);
+
+        qp = new TQPixmap(str);
+	if (!qp->isNull() && themeLook > 0) {
+		int w = qp->width();
+		if (titleBarHeight > w) w = titleBarHeight;
+		p[InActive] = new TQPixmap(w, 2*titleBarHeight );
+		p[InActive] -> fill(cInActive);
+
+		TQPainter pnt( p[InActive] );
+
+		int offX = (w - qp->width())/2;
+		int offY = (titleBarHeight - qp->height())/2;
+		if (offY < 0) offY = 0;
+
+		if (themeLook == WIN95) {
+			draw3DRect(pnt, *colorInActiveButton, offX-1, offY-1,
+				   qp->width()+1, qp->height()+1, true);
+			draw3DRect(pnt, *colorInActiveButton, offX-1, offY-1 + titleBarHeight,
+				   qp->width()+1, qp->height()+1, false);
+ 		} else if (themeLook != WARP4) {
+			draw3DRect(pnt, *colorInActiveButton, 0, 0,
+				   w-1, titleBarHeight-1, true);
+			draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
+				   w-1, 2*titleBarHeight-1, false);
+		}
+		pnt.drawPixmap(offX, offY, *qp);
+		if (qp->height() <= titleBarHeight) {
+			pnt.drawPixmap(offX, titleBarHeight+offY, *qp);
+		}
+		pnt.end();
+		delete qp;
+	} else {
+		p[InActive] = qp;
+	}
+}
+
+
+
+
+// Loads the specified Active/InActive files into the specific pixmaps, and
+// can perform horizontal / vertical stretching if required for speed.
+// Tries to implement some icewm specific pixmap handling for some dodgy themes
+void ThemeHandler::setPixmap( TQPixmap* p[], TQString s1, TQString s2,
+							  bool stretch, bool stretchHoriz )
+{
+	if ( p[Active] )
+		qWarning("twin-icewm: setPixmap - should be null (1)\n");
+	if ( p[InActive] )
+		qWarning("twin-icewm: setPixmap - should be null (2)\n");
+
+	p[Active]   = new TQPixmap( locate("data", TQString("twin/icewm-themes/")
+								+ themeName + s1 + "A" + s2) );
+	p[InActive] = new TQPixmap( locate("data", TQString("twin/icewm-themes/")
+								+ themeName + s1 + "I" + s2) );
+
+	// Stretch the pixmap if requested.
+	if ( stretch )
+	{
+		if (p[Active])
+			p[Active] = stretchPixmap( p[Active], stretchHoriz );
+		if (p[InActive])
+			p[InActive] = stretchPixmap( p[InActive], stretchHoriz );
+	}
+
+	if ( p[Active] && p[InActive] )
+	{
+		// Make sure active and inactive pixmaps are the same width for proper painting
+		if (p[Active]->width() > p[InActive]->width())
+			p[InActive] = stretchPixmap( p[InActive], true, p[Active]->width() );
+	}
+
+}
+
+
+// returns true if there were enough pixmaps loaded to
+// draw the pixmap frame properly.
+bool ThemeHandler::isFrameValid()
+{
+	return
+	  ( validPixmaps( frameTL ) &&
+		validPixmaps( frameT )  &&
+		validPixmaps( frameTR ) &&
+		validPixmaps( frameL )  &&
+		validPixmaps( frameR )  &&
+		validPixmaps( frameBL ) &&
+		validPixmaps( frameB )  &&
+		validPixmaps( frameBR ) );
+}
+
+
+// Resets the theme, and re-clients all twin's wrapped windows.
+bool ThemeHandler::reset( unsigned long)
+{
+	initialized = false;
+	freePixmaps();
+	readConfig();
+	initTheme();
+	validframe = isFrameValid();
+	initialized = true;
+
+	// recreate all clients
+	return true;
+}
+
+bool ThemeHandler::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonMenu:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+            return true;
+        default:
+            return false;
+    };
+}
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// IceWM button class
+////////////////////////////////////////////////////////////////////////////////////////////
+
+IceWMButton::IceWMButton(IceWMClient *parent, const char *name, TQPixmap* (*p)[2],
+	  bool isToggle, const TQString& tip, const int realizeBtns )
+    : TQButton(parent->widget(), name)
+{
+	m_realizeButtons = realizeBtns;
+	setTipText(tip);
+	setCursor(ArrowCursor);
+	// Eliminate any possible background flicker
+	setBackgroundMode( TQWidget::NoBackground );
+	client = parent;
+	usePixmap( p );
+	setFixedSize( tqsizeHint() );
+	setToggleButton( isToggle );
+}
+
+
+void IceWMButton::setTipText(const TQString &tip) {
+	if(KDecoration::options()->showTooltips()) {
+		TQToolTip::remove(this );
+		TQToolTip::add(this, tip );
+	}
+}
+
+
+TQSize IceWMButton::tqsizeHint() const
+{
+	// Check for invalid data
+	if ( validPixmaps( (TQPixmap**) (*pix) ) )  // Cast to avoid dumb warning
+	{
+		TQPixmap* p = (*pix)[ client->isActive() ? Active : InActive ];
+		return( TQSize(p->width(), titleBarHeight) );
+	} else
+		return( TQSize(0, 0) );
+}
+
+
+void IceWMButton::usePixmap( TQPixmap* (*p)[2] )
+{
+	if (validPixmaps( *p )) {
+		pix = p;
+		setFixedSize( (*pix)[Active]->width(), titleBarHeight );
+		tqrepaint( false );
+	} else
+		pix = NULL;
+}
+
+
+void IceWMButton::drawButton(TQPainter *pnt)
+{
+	if ( pix && validPixmaps(*pix) )
+	{
+		TQPixmap* p = (*pix)[ client->isActive() ? Active : InActive ];
+
+		if( p && (!p->isNull()) )
+		{
+			int width = p->width();
+
+			// Only draw the lower pixmap 1/2 for down, and upper 1/2 for up state
+			if( isDown() || isOn() )
+				pnt->drawPixmap(0, 0, *p, 0, titleBarHeight, width, titleBarHeight);
+			else
+				pnt->drawPixmap(0, 0, *p, 0, 0, width, titleBarHeight);
+		}
+	} else
+		qWarning("twin-icewm: Can't paint a null pixmap button");
+}
+
+
+void IceWMButton::turnOn( bool isOn )
+{
+	if ( isToggleButton() )
+		setOn( isOn );
+}
+
+
+void IceWMButton::mousePressEvent( TQMouseEvent* e )
+{
+	last_button = e->button();
+	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(),
+					 (e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
+	TQButton::mousePressEvent( &me );
+}
+
+
+void IceWMButton::mouseReleaseEvent( TQMouseEvent* e )
+{
+	last_button = e->button();
+	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(),
+					 (e->button()&m_realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
+	TQButton::mouseReleaseEvent( &me );
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+// IceWMClient class
+////////////////////////////////////////////////////////////////////////////////////////////
+
+IceWMClient::IceWMClient( KDecorationBridge* bridge, KDecorationFactory* factory )
+    : KDecoration (bridge, factory),
+      m_closing(false)
+{
+}
+
+
+IceWMClient::~IceWMClient()
+{
+	// Free the menu pixmaps if previously allocated
+	if ( menuButtonWithIconPix[Active] )
+		delete menuButtonWithIconPix[Active];
+	if ( menuButtonWithIconPix[InActive] )
+		delete menuButtonWithIconPix[InActive];
+}
+
+
+void IceWMClient::init()
+{
+	createMainWidget( WNoAutoErase | WStaticContents );
+	widget()->installEventFilter( this );
+
+	// Set button pointers to null so we can track things
+	for(int i= IceWMClient::BtnSysMenu; i < IceWMClient::BtnCount; i++)
+		button[i] = NULL;
+
+	// Make sure we can track the menu pixmaps too.
+	menuButtonWithIconPix[Active] = NULL;
+	menuButtonWithIconPix[InActive] = NULL;
+
+	// No flicker thanks
+	widget()->setBackgroundMode( NoBackground );
+
+	// Pack the windowWrapper() window within a grid tqlayout
+	grid = new TQGridLayout(widget(), 0, 0, 0);
+	grid->setResizeMode(TQLayout::FreeResize);
+	grid->addRowSpacing(0, borderSizeY);	// Top grab bar
+
+	// Do something IceWM can't do :)
+	if (titleBarOnTop) {
+        	if( isPreview())
+			grid->addWidget( new TQLabel( i18n( "<center><b>IceWM preview</b></center>" ), widget() ), 2, 1);
+                else
+			grid->addItem( new TQSpacerItem( 0, 0 ), 2, 1);
+		// no shade flicker
+    	grid->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed,									   TQSizePolicy::Expanding ) );
+    }
+	else {
+		// no shade flicker
+    	grid->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed,									   TQSizePolicy::Expanding ) );
+        	if( isPreview())
+			grid->addWidget( new TQLabel( i18n( "<center><b>IceWM preview</b></center>" ), widget() ), 1, 1);
+                else
+			grid->addItem( new TQSpacerItem( 0, 0 ), 1, 1);
+    }
+
+	grid->setRowStretch(1, 10);
+	grid->setRowStretch(2, 10);
+	grid->setColStretch(1, 10);
+	grid->addRowSpacing(3, borderSizeY);
+	grid->addColSpacing(0, borderSizeX);
+	grid->addColSpacing(2, borderSizeX);
+
+	// Pack the titlebar with spacers and buttons
+	hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+	hb->setResizeMode( TQLayout::FreeResize );
+
+	titleSpacerJ = addPixmapSpacer( titleJ );
+
+	addClientButtons( *titleButtonsLeft );
+	titleSpacerL = addPixmapSpacer( titleL );
+
+	// Centre titlebar if required.
+	TQSizePolicy::SizeType spTitleBar;
+	spTitleBar = titleBarCentered ? TQSizePolicy::Expanding : TQSizePolicy::Maximum;
+	titleSpacerS = addPixmapSpacer( titleS, spTitleBar, 1 );
+	titleSpacerP = addPixmapSpacer( titleP );
+
+	titlebar = new TQSpacerItem( titleTextWidth(caption()), titleBarHeight,
+								TQSizePolicy::Preferred, TQSizePolicy::Fixed );
+	hb->addItem(titlebar);
+
+	titleSpacerM = addPixmapSpacer( titleM );
+	titleSpacerB = addPixmapSpacer( titleB, TQSizePolicy::Expanding, 1 );
+	titleSpacerR = addPixmapSpacer( titleR );
+
+	addClientButtons( *titleButtonsRight );
+
+	titleSpacerQ = addPixmapSpacer( titleQ );
+
+	if (titleBarOnTop)
+		grid->addLayout ( hb, 1, 1 );
+	else
+		grid->addLayout ( hb, 2, 1 );
+}
+
+
+// Adds the buttons to the hbox tqlayout as per the buttons specified
+// in the button string 's'
+void IceWMClient::addClientButtons( const TQString& s )
+{
+	if (!s.isEmpty())
+		for(unsigned int i = 0; i < s.length(); i++)
+		{
+			switch ( s[i].latin1() )
+			{
+				case 's':
+					// Create the menu icons, and render with the current mini-icon
+					// if explicitly requested by the theme.
+					if ( (validPixmaps(menuButtonPix) || showMenuButtonIcon) && !button[BtnSysMenu])
+					{
+						if (showMenuButtonIcon) {
+							renderMenuIcons();
+							button[BtnSysMenu] = new IceWMButton(this, "menu",
+								&menuButtonWithIconPix, false, i18n("Menu"), Qt::LeftButton|Qt::RightButton);
+						}
+						else
+							button[BtnSysMenu] = new IceWMButton(this, "menu",
+								&menuButtonPix, false, i18n("Menu"));
+
+						connect( button[BtnSysMenu], TQT_SIGNAL(pressed()),
+								 this, TQT_SLOT(menuButtonPressed()));
+						connect( button[BtnSysMenu], TQT_SIGNAL(released()),
+								 this, TQT_SLOT(menuButtonReleased()));
+						hb->addWidget( button[BtnSysMenu] );
+					}
+					break;
+
+				case 'x':
+					if ( validPixmaps(closePix) && !button[BtnClose] && isCloseable())
+					{
+						button[BtnClose] = new IceWMButton(this, "close",
+								&closePix, false, i18n("Close"));
+						hb->addWidget( button[BtnClose] );
+						connect( button[BtnClose], TQT_SIGNAL(clicked()),
+								 this, TQT_SLOT(closeWindow()));
+					}
+					break;
+
+				case 'm':
+					if ( validPixmaps(maximizePix) && !button[BtnMaximize] && isMaximizable() )
+					{
+						button[BtnMaximize] = new IceWMButton(this, "maximize",
+								&maximizePix, false, i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
+						hb->addWidget( button[BtnMaximize] );
+						connect( button[BtnMaximize], TQT_SIGNAL(clicked()),
+								 this, TQT_SLOT(slotMaximize()));
+					}
+					break;
+
+				case 'i':
+					if ( validPixmaps(minimizePix) && !button[BtnMinimize] &&
+						 isMinimizable() )
+					{
+						button[BtnMinimize] = new IceWMButton(this, "minimize",
+								&minimizePix, false, i18n("Minimize"));
+						hb->addWidget( button[BtnMinimize] );
+						connect( button[BtnMinimize], TQT_SIGNAL(clicked()),
+								 this, TQT_SLOT(minimize()));
+					}
+					break;
+
+				/* Not yet implemented - how's hide useful anyway?
+				case 'h':
+					if ( button[BtnHide]  && !button[BtnHide] )
+						hb->addWidget( button[BtnHide] );
+					break; */
+
+				case 'r':
+					// NOTE: twin doesn't have toggleShade() in clients.h !
+				    if ( validPixmaps(rollupPix) && !button[BtnRollup] )
+				    {
+						button[BtnRollup] = new IceWMButton(this, "shade",
+							isSetShade() ? &rolldownPix : &rollupPix,
+										    false, i18n("Rollup"));
+						hb->addWidget( button[BtnRollup] );
+						connect( button[BtnRollup], TQT_SIGNAL(clicked()),
+								 this, TQT_SLOT(toggleShade()));
+					}
+					break;
+
+				case 'd':
+					// Make depth == on all desktops
+					if ( validPixmaps(depthPix) && !button[BtnDepth] )
+					{
+						button[BtnDepth] = new IceWMButton(this, "on_all_desktops",
+								&depthPix, true, isOnAllDesktops()?i18n("Not on all desktops"):i18n("On all desktops"));
+						button[BtnDepth]->turnOn( isOnAllDesktops() );
+						hb->addWidget( button[BtnDepth] );
+						connect( button[BtnDepth], TQT_SIGNAL(clicked()),
+								 this, TQT_SLOT(toggleOnAllDesktops()));
+					}
+					break;
+			}
+		}
+}
+
+
+// Adds a pixmap to the titlebar tqlayout via the use of a nice TQSpacerItem
+TQSpacerItem* IceWMClient::addPixmapSpacer( TQPixmap* p[], TQSizePolicy::SizeType s, int hsize )
+{
+	TQSpacerItem* sp;
+
+	// Add a null spacer for zero image
+	if ( p && p[Active] )
+	{
+		int w = (hsize == -1) ? p[Active]->width(): hsize;
+		sp = new TQSpacerItem( w, titleBarHeight, s, TQSizePolicy::Fixed );
+	}
+	else
+		sp = new TQSpacerItem(0, 0, TQSizePolicy::Maximum, TQSizePolicy::Fixed );
+
+	hb->addItem( sp );
+	return sp;
+}
+
+
+void IceWMClient::renderMenuIcons()
+{
+	TQPixmap miniIcon( icon().pixmap( TQIconSet::Small, TQIconSet::Normal) );
+
+	if (!miniIcon.isNull())
+	         for(int i = 0; i < 2; i++) {
+                       if ( menuButtonWithIconPix[i] )
+                              delete menuButtonWithIconPix[i];
+
+                       // Try to be more friendly to dodgy themes - icewm assumes a square menu button
+                       // but some pixmap themes don't provide a square menu button.
+                       int w = titleBarHeight;
+                       if (validPixmaps(menuButtonPix) && menuButtonPix[i]->width() > w)
+                               w = menuButtonPix[i]->width();
+                       menuButtonWithIconPix[i] = new TQPixmap(w, 2*titleBarHeight );
+                       if (themeLook != WIN95)
+                               menuButtonWithIconPix[i] -> fill((i==0) ? *colorInActiveButton : *colorActiveButton);
+                       else
+                               menuButtonWithIconPix[i] -> fill((i==0) ? *colorInActiveTitleBar : *colorActiveTitleBar);
+                       TQPainter pnt( menuButtonWithIconPix[i] );
+
+                       if (themeLook > 0 && themeLook != WIN95 && themeLook != WARP4) {
+                               draw3DRect(pnt, *colorActiveButton, 0, 0,
+                                          w-1, titleBarHeight-1, true);
+                               draw3DRect(pnt, *colorActiveButton, 0, titleBarHeight,
+                                          w-1, 2*titleBarHeight-1, false);
+                       }
+                       if (validPixmaps(menuButtonPix)) {
+                               pnt.drawPixmap(0, 0, *menuButtonPix[i]);
+                       }
+                       int offset = (titleBarHeight - miniIcon.width())/2;
+                       if (offset<0) offset = 0;
+                       // Paint the mini icon over the menu pixmap in the centre
+                       pnt.drawPixmap( offset, offset, miniIcon );
+                       pnt.drawPixmap( offset, titleBarHeight+offset, miniIcon );
+                       pnt.end();
+                }
+
+}
+
+
+void IceWMClient::slotMaximize()
+{
+	maximize(button[BtnMaximize]->last_button);
+}
+
+void IceWMClient::toggleShade()
+{
+        setShade(!isSetShade());
+}
+
+int IceWMClient::titleTextWidth( const TQString& s )
+{
+	// Obtains the actual width of the text, using the titlebar font
+	TQSize size;
+	TQFontMetrics fm( options()->font(true) );
+	size = fm.size( 0, s );
+	return size.width();
+}
+
+
+void IceWMClient::borders(int& left, int& right, int& top, int& bottom) const
+{
+	left = borderSizeX;
+	right = borderSizeX;
+	if( titleBarOnTop ) {
+		top = titleBarHeight + borderSizeY;
+		bottom = borderSizeY;
+	} else {
+		top = borderSizeY;
+		bottom = titleBarHeight + borderSizeY;
+	}
+}
+
+
+void IceWMClient::resize( const TQSize& s )
+{
+	widget()->resize( s );
+}
+
+
+TQSize IceWMClient::tqminimumSize() const
+{
+	return widget()->tqminimumSize();
+}
+
+
+// Repaint nicely upon resize to minimise flicker.
+void IceWMClient::resizeEvent( TQResizeEvent* e )
+{
+	calcHiddenButtons();
+
+	if (widget()->isVisibleToTLW())
+	{
+		 widget()->update(widget()->rect());
+		int dx = 0;
+		int dy = 0;
+
+		if ( e->oldSize().width() != widget()->width() )
+			dx = 32 + TQABS( e->oldSize().width() -  width() );
+
+		if ( e->oldSize().height() != height() )
+			dy = 8 + TQABS( e->oldSize().height() -  height() );
+
+		if ( dy )
+			widget()->update( 0, height() - dy + 1, width(), dy );
+
+		if ( dx )
+		{
+			widget()->update( width() - dx + 1, 0, dx, height() );
+			widget()->update( TQRect( TQPoint(4,4), titlebar->tqgeometry().bottomLeft() - TQPoint(1,0) ) );
+			widget()->update( TQRect( titlebar->tqgeometry().topRight(), TQPoint( width() - 4, titlebar->tqgeometry().bottom() ) ) );
+			widget()->tqrepaint(titlebar->tqgeometry(), false);
+		}
+	}
+}
+
+
+// IceWM Paint magic goes here.
+void IceWMClient::paintEvent( TQPaintEvent* )
+{
+	TQColor colorTitleShadow;
+	TQColor colorTitle;
+	TQColor c1;
+	int rx, rw;
+
+	TQPainter p( widget() );
+	int act = isActive() ? Active: InActive;
+
+	// Determine titlebar shadow colors
+	bool useShadow = isActive() ? useActiveShadow : useInActiveShadow;
+	if ( useShadow )
+		colorTitleShadow = isActive() ? *colorActiveTitleTextShadow : *colorInActiveTitleTextShadow;
+
+	if ( themeTitleTextColors )
+ 		colorTitle = isActive()? *colorActiveTitleBarText : *colorInActiveTitleBarText;
+	else
+		colorTitle = options()->color(ColorFont, isActive());
+
+	// Obtain widget bounds.
+	TQRect r;
+	r = widget()->rect();
+	int fillWidth  = r.width()  - 2*borderSizeX;
+	int y = r.y();
+	int x = r.x();
+	int w = r.width();
+	int h = r.height();
+
+	// Do we have pixmaps for the frame?
+	if (validframe)
+	{
+		// Top corner
+		p.drawPixmap(0, 0, *frameTL[ act ], 0, 0, cornerSizeX, borderSizeY);
+		p.drawPixmap(0, 0, *frameTL[ act ], 0, 0, borderSizeX, cornerSizeY);
+
+		// Top right corner
+		p.drawPixmap(w-cornerSizeX, 0, *frameTR[ act ],
+					 frameTR[act]->width()-cornerSizeX, 0, cornerSizeX, borderSizeY);
+		p.drawPixmap(w-borderSizeX, 0, *frameTR[ act ],
+					 frameTR[act]->width()-borderSizeX, 0, borderSizeX, cornerSizeY);
+
+		// Top bar
+		p.drawTiledPixmap( cornerSizeX, 0, w-(2*cornerSizeX), borderSizeY, *frameT[ act ] );
+
+		// Left bar
+		p.drawTiledPixmap( 0, cornerSizeY, borderSizeX, h-(2*cornerSizeY), *frameL[ act ] );
+
+		// Right bar
+		p.drawTiledPixmap( w-borderSizeX, cornerSizeY, borderSizeX, h-(2*cornerSizeY),
+						   *frameR[ act ],frameR[act]->width()-borderSizeX );
+
+		// Bottom left corner
+		p.drawPixmap(0, h-borderSizeY, *frameBL[ act ],
+					 0, frameBL[act]->height()-borderSizeY, cornerSizeX, borderSizeY);
+		p.drawPixmap(0, h-cornerSizeY, *frameBL[ act ],
+					 0, frameBL[act]->height()-cornerSizeY, borderSizeX, cornerSizeY);
+
+		// Bottom right corner
+		p.drawPixmap(w-cornerSizeX, h-borderSizeY, *frameBR[ act ],
+					 frameBR[act]->width()-cornerSizeX, frameBR[act]->height()-borderSizeY,
+					 cornerSizeX, borderSizeY);
+
+		p.drawPixmap(w-borderSizeX, h-cornerSizeY, *frameBR[ act ],
+					 frameBR[act]->width()-borderSizeX, frameBR[act]->height()-cornerSizeY,
+					 borderSizeX, cornerSizeY);
+
+		// Bottom bar
+		p.drawTiledPixmap(cornerSizeX, h-borderSizeY, w-(2*cornerSizeX), borderSizeY,
+						  *frameB[ act ], 0, frameB[ act ]->height()-borderSizeY );
+
+		// Ensure uncovered areas during shading are painted with something
+		p.setPen( *colorInActiveBorder );
+		if (titleBarOnTop)
+	        p.drawLine( x+borderSizeX, y+h-borderSizeY-1,
+						x+w-borderSizeX-1, y+h-borderSizeY-1);
+		else
+	        p.drawLine( x+borderSizeX, y+borderSizeY,
+						x+w-borderSizeX-1, y+borderSizeY);
+
+	} else
+	{
+		// Draw a stock IceWM frame instead of a pixmap frame
+		c1 = isActive() ? *colorActiveBorder : *colorInActiveBorder;
+
+		if (themeLook == WARP3 || themeLook == MOTIF) {
+			draw3DRect(p, c1, x, y, w-1, h-1, true);
+			p.setPen(c1);
+			p.drawRect(x+1, y+1, w-2, h-2);
+		} else {
+			p.setPen( c1.light(135) );
+			p.drawLine(0, 0, w-2, 0);
+			p.drawLine(0, 0, 0, h-2);
+
+			p.setPen(c1);
+			p.drawLine(1, 1, w-3, 1);
+			p.drawLine(1, 1, 1, h-3);
+
+			p.setPen( c1.dark(140) );
+			p.drawLine(1, h-2, w-2, h-2);
+			p.drawLine(w-2, 1, w-2, h-2);
+
+			p.setPen( TQt::black );
+			p.drawLine(w-1, 0, w-1, h-1);
+			p.drawLine(0, h-1, w-1, h-1);
+		}
+
+
+		// Fill frame border if required
+		if (borderSizeX > 2)
+		{
+			// FillQt::Vertical sizes
+			p.fillRect( x+2, y+2, borderSizeX-2, h-4, c1);
+			p.fillRect( w-borderSizeX, y+2, borderSizeX-2, h-4, c1);
+		}
+
+		if (borderSizeY > 2)
+		{
+			// Fill horizontal frame parts
+			p.fillRect( x+borderSizeX, y+2, fillWidth, borderSizeY-2, c1);
+			p.fillRect( x+borderSizeX, h-borderSizeY, fillWidth, borderSizeY-2, c1);
+		}
+
+		if (themeLook == WARP3 || themeLook == MOTIF) {
+			draw3DRect(p, c1, x+borderSizeX-1, y+borderSizeY-1,
+				    w+1-2*borderSizeX, h+1-2*borderSizeY, false);
+		}
+		if (themeLook == MOTIF && !isShade()) {
+			int xext = titleBarHeight + borderSizeX - 1;
+			int yext = titleBarHeight + borderSizeY - 1;
+
+			int xext2 = w-xext-2;
+			int yext2 = h-yext-2;
+
+			int bX = w - borderSizeX-1;
+			int bY = h - borderSizeY-1;
+
+			p.setPen( c1.dark(140) );
+			p.drawLine(xext, 0, xext, borderSizeY);
+			p.drawLine(xext2, 0, xext2, borderSizeY);
+			p.drawLine(xext, bY, xext, h-1);
+			p.drawLine(xext2, bY, xext2, h-1);
+
+			p.drawLine(0, yext, borderSizeX, yext);
+			p.drawLine(0, yext2, borderSizeX, yext2);
+			p.drawLine(bX, yext, w-1, yext);
+			p.drawLine(bX, yext2, w-1, yext2);
+
+			p.setPen( c1.light(135) );
+
+			++xext; ++yext; ++xext2; ++yext2;
+
+			p.drawLine(xext, 0, xext, borderSizeY);
+			p.drawLine(xext2, 0, xext2, borderSizeY);
+			p.drawLine(xext, bY, xext, h-1);
+			p.drawLine(xext2, bY, xext2, h-1);
+
+			p.drawLine(0, yext, borderSizeX, yext);
+			p.drawLine(0, yext2, borderSizeX, yext2);
+			p.drawLine(bX, yext, w-1, yext);
+			p.drawLine(bX, yext2, w-1, yext2);
+
+
+		}
+
+		// Ensure uncovered areas during shading are painted with something
+		p.setPen( *colorInActiveBorder );
+		if (titleBarOnTop)
+	        p.drawLine( x+borderSizeX, y+h-borderSizeY-1,
+						x+w-borderSizeX-1, y+h-borderSizeY-1);
+		else
+	        p.drawLine( x+borderSizeX, y+borderSizeY,
+						x+w-borderSizeX-1, y+borderSizeY);
+	}
+
+	// Draw the title elements, if we need to draw a titlebar.
+	if (titleBarHeight > 0)
+	{
+		TQPixmap* titleBuffer = new TQPixmap( width()-(2*borderSizeX), titleBarHeight );
+		TQPainter p2( titleBuffer, this );
+		titleBuffer->fill( act ? *colorActiveTitleBar : *colorInActiveTitleBar );
+
+		r = titleSpacerJ->tqgeometry();
+		if (!r.isEmpty() && titleJ[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleJ[ act ]);
+
+		r = titleSpacerL->tqgeometry();
+		if (!r.isEmpty() && titleL[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleL[ act ]);
+
+		r = titleSpacerS->tqgeometry();
+		if (!r.isEmpty() && titleS[ act ])
+			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleS[ act ]);
+
+		r = titleSpacerP->tqgeometry();
+		if (!r.isEmpty() && titleP[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleP[ act ]);
+
+		r = titlebar->tqgeometry();
+		if (!r.isEmpty() && titleT[ act ] )
+			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleT[ act ]);
+
+		r = titleSpacerM->tqgeometry();
+		if (!r.isEmpty() && titleM[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleM[ act ], 0, 0, r.width(), r.height());
+
+		r = titleSpacerB->tqgeometry();
+		if (!r.isEmpty() && titleB[ act ])
+			p2.drawTiledPixmap( r.x()-borderSizeX, 0, r.width(), titleBarHeight, *titleB[ act ]);
+
+		r = titleSpacerR->tqgeometry();
+		if (!r.isEmpty() && titleR[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleR[ act ], 0, 0, r.width(), r.height());
+
+		r = titleSpacerQ->tqgeometry();
+		if (!r.isEmpty() && titleQ[ act ])
+			p2.drawPixmap( r.x()-borderSizeX, 0, *titleQ[ act ], 0, 0, r.width(), r.height());
+
+		p2.setFont( options()->font(true) );
+
+		// Pre-compute as much as possible
+		r = titlebar->tqgeometry();
+		rx = r.x() - borderSizeX;
+		rw = width()-(2*borderSizeX)-r.x();
+
+		// Paint a title text shadow if requested
+		if ( useShadow )
+		{
+			p2.setPen( colorTitleShadow );
+			p2.drawText(rx+1, 1, rw, titleBarHeight, AlignLeft|AlignVCenter, caption());
+		}
+
+		// Draw the title text
+		p2.setPen( colorTitle );
+		p2.drawText(rx, 0, rw, titleBarHeight, AlignLeft|AlignVCenter, caption());
+		p2.end();
+
+		bitBlt( widget(), borderSizeX, hb->tqgeometry().y(), titleBuffer );
+
+		delete titleBuffer;
+	}
+}
+
+
+void IceWMClient::showEvent(TQShowEvent *ev)
+{
+	calcHiddenButtons();
+
+	titlebar->changeSize( titleTextWidth(caption()), titleBarHeight,
+						  TQSizePolicy::Preferred, TQSizePolicy::Fixed );
+	grid->activate();
+	widget()->show();
+	IceWMClient::showEvent(ev);
+}
+
+
+void IceWMClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+	if( e->button() != Qt::LeftButton )
+		return;
+
+	TQRect r;
+	if (titleBarOnTop)
+		r.setRect( borderSizeX, borderSizeY, width()-(2*borderSizeX), titleBarHeight);
+	else
+		r.setRect( borderSizeX, height()-borderSizeY-titleBarHeight,
+				   width()-(2*borderSizeX), titleBarHeight);
+
+	if (r.contains( e->pos() ) )
+		titlebarDblClickOperation();
+
+}
+
+
+void IceWMClient::wheelEvent(TQWheelEvent *e)
+{
+	if (isSetShade() || TQRect( 0, 0, width(), titleBarHeight ).contains( e->pos() ) )
+		titlebarMouseWheelOperation( e->delta());
+}
+
+
+// Called via Client class when the miniIcon() changes
+void IceWMClient::iconChange()
+{
+	if (validPixmaps(menuButtonPix) && showMenuButtonIcon)
+	{
+		if (button[BtnSysMenu])
+		{
+			renderMenuIcons();
+			button[BtnSysMenu]->usePixmap( &menuButtonWithIconPix );
+			if (button[BtnSysMenu]->isVisible())
+				button[BtnSysMenu]->tqrepaint(false);
+		}
+	}
+}
+
+
+void IceWMClient::desktopChange()
+{
+	if (button[BtnDepth])
+	{
+		button[BtnDepth]->turnOn( isOnAllDesktops() );
+		button[BtnDepth]->tqrepaint(false);
+		button[BtnDepth]->setTipText(isOnAllDesktops() ? i18n("Not on all desktops") : i18n("On all desktops"));
+	}
+}
+
+
+// Please don't modify the following unless you want tqlayout problems
+void IceWMClient::captionChange()
+{
+	TQRect r( 0, borderSizeY, geometry().width(), titleBarHeight);
+
+	titlebar->changeSize( titleTextWidth( caption() ), titleBarHeight,
+						  TQSizePolicy::Preferred, TQSizePolicy::Fixed );
+	titlebar->invalidate();
+    grid->activate();
+    widget()->tqrepaint( r, false );
+}
+
+
+void IceWMClient::maximizeChange()
+{
+	// Change the button pixmap to restore if required
+	if (button[BtnMaximize] && validPixmaps(restorePix))
+	{
+		button[BtnMaximize]->usePixmap( (maximizeMode()==MaximizeFull) ? &restorePix : &maximizePix );
+		button[BtnMaximize]->setTipText( (maximizeMode()==MaximizeFull) ? i18n("Restore") : i18n("Maximize"));
+	}
+}
+
+
+void IceWMClient::shadeChange()
+{
+	// Change the button pixmap to rolldown if required
+	if (button[BtnRollup] && validPixmaps(rolldownPix))
+	{
+		button[BtnRollup]->usePixmap( isSetShade() ? &rolldownPix : &rollupPix );
+		button[BtnRollup]->setTipText( isSetShade() ? i18n("Rolldown") : i18n("Rollup"));
+	}
+
+}
+
+
+void IceWMClient::activeChange()
+{
+	widget()->tqrepaint(false);
+
+    // Reset the button pixmaps.
+	for(int i= IceWMClient::BtnSysMenu; i < IceWMClient::BtnCount; i++)
+		if(button[i])
+			button[i]->tqrepaint( false );
+}
+
+
+// This does the showing / hiding button magic
+// for variable positioned buttons.
+void IceWMClient::calcHiddenButtons()
+{
+	const int minwidth = 220; // Minimum width where all buttons are shown
+	const int btn_width = 20; // Average width
+
+	// Show/Hide buttons in this order - OnAllDesktops, Maximize, Menu, Rollup, Minimize, Close.
+	IceWMButton* btnArray[] = { button[BtnDepth], button[BtnMaximize], button[BtnSysMenu],
+								button[BtnRollup], button[BtnMinimize], button[BtnClose] };
+
+	int current_width = width();
+	int count = 0;
+	int i;
+
+	// Find out how many buttons we have to hide.
+	while (current_width < minwidth)
+	{
+		current_width += btn_width;
+		count++;
+	}
+
+	// Bound the number of buttons to hide
+	if (count > 6) count = 6;
+
+	// Hide the required buttons...
+	for(i = 0; i < count; i++)
+	{
+		if (btnArray[i] && btnArray[i]->isVisible() )
+			btnArray[i]->hide();
+	}
+
+	// Show the rest of the buttons...
+	for(i = count; i < 6; i++)
+	{
+		if (btnArray[i] && (!btnArray[i]->isVisible()) )
+			btnArray[i]->show();
+	}
+}
+
+
+// Mouse position code modified from that in workspace.cpp
+IceWMClient::Position IceWMClient::mousePosition( const TQPoint& p ) const
+{
+    int rangeX = cornerSizeX;
+    int rangeY = cornerSizeY;
+    int borderX = borderSizeX;
+    int borderY = borderSizeY;
+
+    Position m = PositionCenter;
+
+    if ((p.x()  > borderX && p.x() < width()  - borderX) &&
+	    ( p.y() > borderY && p.y() < height() - borderY))
+	return PositionCenter;
+
+    if ( p.y() <= rangeY && p.x() <= rangeX)
+		m = PositionTopLeft;
+    else if ( p.y() >= height()-rangeY && p.x() >= width()-rangeX)
+		m = PositionBottomRight;
+    else if ( p.y() >= height()-rangeX && p.x() <= rangeX)
+		m = PositionBottomLeft;
+    else if ( p.y() <= rangeY && p.x() >= width()-rangeX)
+		m = PositionTopRight;
+    else if ( p.y() <= borderY )
+		m = PositionTop;
+    else if ( p.y() >= height()-borderY )
+		m = PositionBottom;
+    else if ( p.x() <= borderX )
+		m = PositionLeft;
+    else if ( p.x() >= width()-borderX )
+    	m = PositionRight;
+    else
+		m = PositionCenter;
+	return m;
+}
+
+
+void IceWMClient::menuButtonPressed()
+{
+	static TQTime t;
+	static IceWMClient* lastClient = NULL;
+	bool dbl = ( lastClient == this && t.elapsed() <= TQApplication::doubleClickInterval());
+	lastClient = this;
+	t.start();
+
+	if (dbl)
+	{
+		m_closing = true;
+		return;
+    }
+
+	TQPoint menuPoint ( button[BtnSysMenu]->rect().bottomLeft() );
+
+	// Move to right if menu on rhs, otherwise on left
+	// and make this depend on windowWrapper(), not button.
+
+        KDecorationFactory* f = factory();
+	showWindowMenu( button[BtnSysMenu]->mapToGlobal(menuPoint) );
+        if( !f->exists( this )) // 'this' was deleted
+            return;
+	button[BtnSysMenu]->setDown(false);
+}
+
+void IceWMClient::menuButtonReleased()
+{
+	if (m_closing)
+		closeWindow();
+}
+
+bool IceWMClient::eventFilter( TQObject* o, TQEvent* e )
+{
+	if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
+	return false;
+	switch( e->type())
+	{
+	case TQEvent::Resize:
+		resizeEvent(TQT_TQRESIZEEVENT( e ) );
+		return true;
+	case TQEvent::Paint:
+		paintEvent(TQT_TQPAINTEVENT( e ) );
+		return true;
+	case TQEvent::MouseButtonDblClick:
+		mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ) );
+		return true;
+	case TQEvent::MouseButtonPress:
+		processMousePressEvent(TQT_TQMOUSEEVENT( e ) );
+		return true;
+	case TQEvent::Wheel:
+		wheelEvent( TQT_TQWHEELEVENT( e ));
+		return true;
+	default:
+		break;
+	}
+	return false;
+}
+
+}
+
+extern "C"
+{
+	KDE_EXPORT KDecorationFactory *create_factory()
+	{
+		IceWM::clientHandler = new IceWM::ThemeHandler;
+		return IceWM::clientHandler;
+	}
+}
+
+
+#include "icewm.moc"
+
+// vim: ts=4
diff --git a/twin-styles/icewm/icewm.desktop b/twin-styles/icewm/icewm.desktop
new file mode 100644
index 00000000..eeffdcc0
--- /dev/null
+++ b/twin-styles/icewm/icewm.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=IceWM
+Name[cy]=RhewWM
+Name[hi]=आइस-डबल्यूएम
+Name[sv]=Ice-fönsterhanterare
+Name[ta]=பனிக்கட்டிWM
+Name[th]=ตัวจัดการหน้าต่าง IceWM
+Name[vi]=Nước đá WM
+Name[xh]=UmkhenkceWM
+Name[zu]=Iqhwa leWM
+X-KDE-Library=twin3_icewm
diff --git a/twin-styles/icewm/icewm.h b/twin-styles/icewm/icewm.h
new file mode 100644
index 00000000..f343912c
--- /dev/null
+++ b/twin-styles/icewm/icewm.h
@@ -0,0 +1,193 @@
+/*
+  $Id$
+
+  Gallium-IceWM themeable KWin client
+
+  Copyright 2001
+	Karol Szwed <gallium@kde.org>
+	http://gallium.n3.net/
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  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.
+
+  -----------------------------------------------------------------------------
+  This client loads most icewm 1.0.X pixmap themes, without taking into account
+  specific font settings for clients, or coloured mouse cursors. Titlebar
+  fonts can be changed via the kde control center. Bi-colour mouse cursors
+  may be added in future if requested by users, as well as theme font support.
+  Any styles using inbuilt icewm titlebar drawing without using pixmaps (e.g.
+  Warp4, win95 etc.) are not fully supported, and may cause drawing errors,
+  as these themes use in-built icewm drawing mechanisms.
+
+  When a pixmap theme is not present (or a corrupt one is present) then very
+  plain title decorations are painted instead, so that users don't see
+  non-painted window areas where possible ;)
+
+  At a later date, frame shaping may be added if really requested, and an
+  update to support the latest icewm 1.1.X theme format may be made.
+*/
+
+#ifndef __KDEGALLIUM_ICEWM_H
+#define __KDEGALLIUM_ICEWM_H
+
+#include <tqbutton.h>
+#include <tqlayout.h>
+#include <kpixmap.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+#include <tqbutton.h>
+class TQLabel;
+class TQSpacerItem;
+class TQBoxLayout;
+class TQGridLayout;
+
+namespace IceWM {
+
+class IceWMClient;
+
+// Pixmap group
+enum { InActive=0, Active };
+// Pixmap stretching mode
+enum { Vertical=0, Horizontal=1 };
+
+
+// Handles the resetClients() signal from the Options class,
+// and manages the dynamic pixmaps, configuration and theme changing
+class ThemeHandler: public KDecorationFactory
+{
+	public:
+		ThemeHandler();
+		~ThemeHandler();
+
+		virtual KDecoration* createDecoration( KDecorationBridge* );
+		virtual bool reset( unsigned long changed );
+		virtual bool supports( Ability ability );
+
+	private:
+		bool initialized;
+		TQString themeName;
+
+		void readConfig();
+		TQColor decodeColor( TQString& s );
+		bool isFrameValid();
+		void initTheme();
+		void freePixmaps();
+		void freePixmapGroup( TQPixmap* p[] );
+		void setPixmap( TQPixmap* p[], TQString s1, TQString s2, bool
+						stretch=false, bool stretchHoriz=true );
+		void setPixmapButton( TQPixmap* p[], TQString s1, TQString s2);
+		TQPixmap* stretchPixmap( TQPixmap* src, bool stretchHoriz=true,
+								int stretchSize=-1);
+		TQPixmap* duplicateValidPixmap( bool act, int size = -1 );
+		void convertButtons( TQString& s );
+		TQString reverseString( TQString s );
+};
+
+
+class IceWMButton : public TQButton
+{
+	public:
+		IceWMButton( IceWMClient *parent=0, const char *name=0,
+					 TQPixmap* (*p)[2]=0L, bool isToggle=false,
+					 const TQString& tip=NULL, const int realizeBtns = Qt::LeftButton );
+		void setTipText(const TQString &tip);
+		void  usePixmap( TQPixmap* (*p)[2] );
+		TQSize tqsizeHint() const;
+		void  turnOn( bool isOn );
+		ButtonState   last_button;
+
+	protected:
+		void mousePressEvent( TQMouseEvent* e );
+		void mouseReleaseEvent( TQMouseEvent* e );
+
+		void drawButton( TQPainter *p );
+		void drawButtonLabel( TQPainter * ) {;}
+
+	private:
+		int m_realizeButtons;
+		IceWMClient* client;
+		TQPixmap* (*pix)[2]; // Points to active/inactive pixmap array
+};
+
+
+class IceWMClient : public KDecoration
+{
+    Q_OBJECT
+  TQ_OBJECT
+	public:
+	    IceWMClient( KDecorationBridge* bridge, KDecorationFactory* factory );
+	    ~IceWMClient();
+
+		virtual void init();
+		virtual void resize(const TQSize&);
+		virtual bool eventFilter( TQObject* o, TQEvent* e );
+
+	protected:
+	    void resizeEvent( TQResizeEvent* );
+	    void paintEvent( TQPaintEvent* );
+	    void showEvent( TQShowEvent* );
+	    void mouseDoubleClickEvent( TQMouseEvent * );
+	    void wheelEvent( TQWheelEvent * );
+	    virtual void captionChange();
+	    virtual void maximizeChange();
+	    virtual void shadeChange();
+	    virtual void activeChange();
+	//	void shadeChange(bool);     /* KWin Client class doesn't provide this yet */
+	    Position mousePosition( const TQPoint& ) const;
+		void renderMenuIcons();
+		void iconChange();
+		virtual void desktopChange( );
+		virtual void borders(int&, int&, int&, int&) const;
+		virtual TQSize tqminimumSize() const;
+
+	protected slots:
+	    void slotMaximize();
+	    void menuButtonPressed();
+	    void menuButtonReleased();
+	    void toggleShade();
+
+	private:
+	    // These are all the icewm button types :)
+	    enum Buttons{ BtnSysMenu=0, BtnClose, BtnMaximize, BtnMinimize,
+					  BtnHide, BtnRollup, BtnDepth, BtnCount };
+
+		TQString shortenCaption( const TQString* s );
+		void calcHiddenButtons();
+	    int  titleTextWidth( const TQString& s );
+		void addClientButtons( const TQString& s );
+		TQSpacerItem* addPixmapSpacer( TQPixmap* p[],
+			TQSizePolicy::SizeType = TQSizePolicy::Maximum, int hsize = -1 );
+
+	    IceWMButton* button[ IceWMClient::BtnCount ];
+	    TQPixmap*     menuButtonWithIconPix[2];
+	    TQSpacerItem* titleSpacerJ;
+	    TQSpacerItem* titleSpacerL;
+	    TQSpacerItem* titleSpacerS;
+	    TQSpacerItem* titleSpacerP;
+	    TQSpacerItem* titlebar;
+	    TQSpacerItem* titleSpacerM;
+	    TQSpacerItem* titleSpacerB;
+    	TQSpacerItem* titleSpacerR;
+	    TQSpacerItem* titleSpacerQ;
+	    TQBoxLayout*  hb;
+	    TQGridLayout* grid;
+	    bool m_closing;
+};
+
+}
+
+#endif
+
+// vim: ts=4
diff --git a/twin-styles/kde1/CMakeLists.txt b/twin-styles/kde1/CMakeLists.txt
new file mode 100644
index 00000000..2cbae1eb
--- /dev/null
+++ b/twin-styles/kde1/CMakeLists.txt
@@ -0,0 +1,32 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES kde1.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_cde ##################################
+
+tde_add_kpart( twin3_kde1 AUTOMOC
+  SOURCES kde1client.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/kde1/Makefile.am b/twin-styles/kde1/Makefile.am
new file mode 100644
index 00000000..131b71a4
--- /dev/null
+++ b/twin-styles/kde1/Makefile.am
@@ -0,0 +1,16 @@
+
+INCLUDES = $(all_includes) 
+
+kde_module_LTLIBRARIES = twin3_kde1.la
+
+twin3_kde1_la_SOURCES = kde1client.cpp
+twin3_kde1_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_kde1_la_LIBADD  = -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = kde1client.h
+
+lnkdir = $(kde_datadir)/twin/
+lnk_DATA = kde1.desktop
+EXTRA_DIST = $(lnk_DATA)
+
diff --git a/twin-styles/kde1/kde1.desktop b/twin-styles/kde1/kde1.desktop
new file mode 100644
index 00000000..e0a1ffad
--- /dev/null
+++ b/twin-styles/kde1/kde1.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Name=KDE 1
+Name[fa]=KDE ۱
+Name[hi]=केडीई 1
+Name[ne]=केडीई १
+Name[th]=โปรแกรมจัดการหน้าต่าง KDE 1
+X-KDE-Library=twin3_kde1
diff --git a/twin-styles/kde1/kde1client.cpp b/twin-styles/kde1/kde1client.cpp
new file mode 100644
index 00000000..c6a7db98
--- /dev/null
+++ b/twin-styles/kde1/kde1client.cpp
@@ -0,0 +1,809 @@
+/*****************************************************************
+twin - the KDE window manager
+								
+Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
+******************************************************************/
+#include "kde1client.h"
+#include <tqcursor.h>
+#include <tqlayout.h>
+#include <tqtoolbutton.h>
+#include <tqlabel.h>
+#include <tqdrawutil.h>
+#include <tqbitmap.h>
+#include <kdrawutil.h>
+#include <klocale.h>
+#include <kpixmap.h>
+#include <tqdatetime.h>
+#include <tqimage.h>
+#include <tqtooltip.h>
+
+#include "kde1client_bitmaps.h"
+
+// Default button tqlayout
+const char default_left[]  = "MS";
+const char default_right[] = "H_IAX";
+
+namespace KDE1
+{
+
+TQPixmap* close_pix = 0;
+TQPixmap* maximize_pix = 0;
+TQPixmap* minimize_pix = 0;
+TQPixmap* normalize_pix = 0;
+TQPixmap* pinup_pix = 0;
+TQPixmap* pindown_pix = 0;
+TQPixmap* menu_pix = 0;
+TQPixmap* question_mark_pix = 0;
+
+TQPixmap* dis_close_pix = 0;
+TQPixmap* dis_maximize_pix = 0;
+TQPixmap* dis_minimize_pix = 0;
+TQPixmap* dis_normalize_pix = 0;
+TQPixmap* dis_pinup_pix = 0;
+TQPixmap* dis_pindown_pix = 0;
+TQPixmap* dis_menu_pix = 0;
+TQPixmap* dis_question_mark_pix = 0;
+
+TQPixmap* titleBuffer = 0;
+
+bool pixmaps_created = FALSE;
+
+inline const KDecorationOptions* options() { return KDecoration::options(); }
+
+void create_pixmaps()
+{
+    if ( pixmaps_created )
+        return;
+    pixmaps_created = true;
+    TQColorGroup aGrp = options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, true);
+    TQColorGroup iGrp = options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, false);
+
+    TQPainter aPainter, iPainter;
+    close_pix = new TQPixmap(16, 16);
+    dis_close_pix = new TQPixmap(16, 16);
+    aPainter.begin(close_pix); iPainter.begin(dis_close_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, close_white_bits,
+                  NULL, NULL, close_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, close_white_bits,
+                  NULL, NULL, close_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    close_pix->setMask(TQBitmap(16, 16, close_mask_bits, true));
+    dis_close_pix->setMask(*close_pix->mask());
+
+    minimize_pix = new TQPixmap(16, 16);
+    dis_minimize_pix = new TQPixmap(16, 16);
+    aPainter.begin(minimize_pix); iPainter.begin(dis_minimize_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, iconify_white_bits,
+                  NULL, NULL, iconify_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, iconify_white_bits,
+                  NULL, NULL, iconify_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    minimize_pix->setMask(TQBitmap(16, 16, iconify_mask_bits, true));
+    dis_minimize_pix->setMask(*minimize_pix->mask());
+
+    maximize_pix = new TQPixmap(16, 16);
+    dis_maximize_pix = new TQPixmap(16, 16);
+    aPainter.begin(maximize_pix); iPainter.begin(dis_maximize_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, maximize_white_bits,
+                  NULL, NULL, maximize_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, maximize_white_bits,
+                  NULL, NULL, maximize_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    maximize_pix->setMask(TQBitmap(16, 16, maximize_mask_bits, true));
+    dis_maximize_pix->setMask(*maximize_pix->mask());
+
+    normalize_pix = new TQPixmap(16, 16);
+    dis_normalize_pix = new TQPixmap(16, 16);
+    aPainter.begin(normalize_pix); iPainter.begin(dis_normalize_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, maximizedown_white_bits,
+                  NULL, NULL, maximizedown_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, maximizedown_white_bits,
+                  NULL, NULL, maximizedown_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    normalize_pix->setMask(TQBitmap(16, 16, maximizedown_mask_bits, true));
+    dis_normalize_pix->setMask(*normalize_pix->mask());
+
+    menu_pix = new TQPixmap(16, 16);
+    dis_menu_pix = new TQPixmap(16, 16);
+    aPainter.begin(menu_pix); iPainter.begin(dis_menu_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, menu_white_bits,
+                  NULL, NULL, menu_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, menu_white_bits,
+                  NULL, NULL, menu_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    menu_pix->setMask(TQBitmap(16, 16, menu_mask_bits, true));
+    dis_menu_pix->setMask(*menu_pix->mask());
+
+    pinup_pix = new TQPixmap(16, 16);
+    dis_pinup_pix = new TQPixmap(16, 16);
+    aPainter.begin(pinup_pix); iPainter.begin(dis_pinup_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, pinup_white_bits,
+                  pinup_gray_bits, NULL, pinup_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, pinup_white_bits,
+                  pinup_gray_bits, NULL, pinup_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    pinup_pix->setMask(TQBitmap(16, 16, pinup_mask_bits, true));
+    dis_pinup_pix->setMask(*pinup_pix->mask());
+
+    pindown_pix = new TQPixmap(16, 16);
+    dis_pindown_pix = new TQPixmap(16, 16);
+    aPainter.begin(pindown_pix); iPainter.begin(dis_pindown_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, pindown_white_bits,
+                  pindown_gray_bits, NULL, pindown_dgray_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, pindown_white_bits,
+                  pindown_gray_bits, NULL, pindown_dgray_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    pindown_pix->setMask(TQBitmap(16, 16, pindown_mask_bits, true));
+    dis_pindown_pix->setMask(*pindown_pix->mask());
+
+    question_mark_pix = new TQPixmap(16, 16);
+    dis_question_mark_pix = new TQPixmap(16, 16);
+    aPainter.begin(question_mark_pix); iPainter.begin(dis_question_mark_pix);
+    kColorBitmaps(&aPainter, aGrp, 0, 0, 16, 16, true, help_light_bits,
+                  NULL, NULL, help_dark_bits, NULL, NULL);
+    kColorBitmaps(&iPainter, iGrp, 0, 0, 16, 16, true, help_light_bits,
+                  NULL, NULL, help_dark_bits, NULL, NULL);
+    aPainter.end(); iPainter.end();
+    question_mark_pix->setMask(TQBitmap(16, 16, help_mask_bits, true));
+    dis_question_mark_pix->setMask(*question_mark_pix->mask());
+
+    titleBuffer = new KPixmap;
+}
+
+void delete_pixmaps()
+{
+    delete close_pix;
+    delete maximize_pix;
+    delete minimize_pix;
+    delete normalize_pix;
+    delete pinup_pix;
+    delete pindown_pix;
+    delete menu_pix;
+    delete question_mark_pix;
+    delete dis_close_pix;
+    delete dis_maximize_pix;
+    delete dis_minimize_pix;
+    delete dis_normalize_pix;
+    delete dis_pinup_pix;
+    delete dis_pindown_pix;
+    delete dis_menu_pix;
+    delete dis_question_mark_pix;
+    delete titleBuffer;
+    pixmaps_created = false;
+}
+
+void drawGradient
+(
+  TQPainter & p,
+  const TQRect & t,
+  const TQColor & c1,
+  const TQColor & c2
+)
+{
+  // Don't draw a million vertical lines if we don't need to.
+
+  if (c1 == c2  || TQPixmap::defaultDepth() <= 8)
+  {
+    p.fillRect(t, c1);
+    return;
+  }
+
+  // rikkus: Adapted from KPixmapEffect::gradient().
+
+  int rca = c1.red();
+  int gca = c1.green();
+  int bca = c1.blue();
+
+  int rDiff = c2.red()   - rca;
+  int gDiff = c2.green() - gca;
+  int bDiff = c2.blue()  - bca;
+
+  int rl = rca << 16;
+  int gl = gca << 16;
+  int bl = bca << 16;
+
+  int rcdelta = ((1 << 16) / t.width()) * rDiff;
+  int gcdelta = ((1 << 16) / t.width()) * gDiff;
+  int bcdelta = ((1 << 16) / t.width()) * bDiff;
+
+  for (int x = 0; x < t.width(); x++)
+  {
+    rl += rcdelta;
+    gl += gcdelta;
+    bl += bcdelta;
+
+    p.setPen(TQColor(rl >> 16, gl >> 16, bl >> 16));
+
+    p.drawLine(t.x() + x, 0, t.x() + x, t.y() + t.height() - 1);
+  }
+}
+
+
+void StdClient::reset( unsigned long )
+{
+    if (button[ButtonMenu] && (icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull()))
+        button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
+    if (button[ButtonSticky])
+        button[ButtonSticky]->setIconSet(isOnAllDesktops() ? isActive() ? *pindown_pix : *dis_pindown_pix :
+                                         isActive() ? *pinup_pix : *dis_pinup_pix );
+    if (button[ButtonMinimize])
+        button[ButtonMinimize]->setIconSet(isActive() ? *minimize_pix : *dis_minimize_pix);
+    if (button[ButtonMaximize])
+        button[ButtonMaximize]->setIconSet(isActive() ? *maximize_pix : *dis_maximize_pix);
+    if (button[ButtonClose])
+        button[ButtonClose]->setIconSet(isActive() ? *close_pix : *dis_close_pix);
+    if (button[ButtonHelp])
+        button[ButtonHelp]->setIconSet(isActive() ? *question_mark_pix : *dis_question_mark_pix);
+
+    widget()->setFont(options()->font(true));
+}
+
+
+StdClient::StdClient( KDecorationBridge* b, KDecorationFactory* f )
+    : KDecoration( b, f )
+{
+}
+
+void StdClient::init()
+{
+    createMainWidget();
+    widget()->installEventFilter( this );
+
+    widget()->setFont(options()->font(isActive() ));
+
+    TQGridLayout* g = new TQGridLayout( widget(), 0, 0, 3, 2 );
+    g->setRowStretch( 1, 10 );
+    if( isPreview())
+        g->addWidget( new TQLabel( i18n( "<center><b>KDE 1 preview</b></center>" ), widget()), 1, 1 );
+    else
+        g->addItem( new TQSpacerItem( 0, 0 ), 1, 1 ); //no widget in the middle
+    g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
+
+    g->addColSpacing(0, 1);
+    g->addColSpacing(2, 1);
+    g->addRowSpacing(2, 1);
+
+    int fh = widget()->fontMetrics().lineSpacing();
+    titlebar = new TQSpacerItem(10, fh, TQSizePolicy::Expanding,
+			       TQSizePolicy::Minimum );
+
+    TQBoxLayout* hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+    g->addLayout( hb, 0, 1 );
+
+    // setup titlebar buttons
+    for (int n=0; n<ButtonTypeCount; n++) button[n] = 0;
+    addButtons(hb, options()->customButtonPositions() ? options()->titleButtonsLeft() : TQString(default_left));
+    hb->addItem(titlebar);
+    addButtons(hb, options()->customButtonPositions() ? options()->titleButtonsRight() : TQString(default_right));
+
+    for (int n=0; n<ButtonTypeCount; n++) {
+	if ( !button[n] )
+	    continue;
+	button[n]->setBackgroundMode( PaletteBackground );
+	button[n]->setMouseTracking( FALSE );
+	button[n]->setAutoRaise( TRUE );
+	button[n]->setFocusPolicy( TQ_NoFocus );
+	button[n]->setFixedSize( 20, 20 );
+    }
+
+#if 0 // not sure what this is supposed to mean (and why)
+    if ( isTransient() ) {
+	// lighter decoration for transient windows
+	button[1]->hide();
+//	button[2]->hide();
+	button[3]->hide();
+	button[4]->hide();
+    }
+#endif
+}
+
+void StdClient::addButtons(TQBoxLayout *hb, const TQString& s)
+{
+    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 TQToolButton( widget(), 0 );
+                      TQToolTip::add( button[ButtonMenu], i18n("Menu") );
+                      button[ButtonMenu]->setCursor(ArrowCursor);
+                      if( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull())
+                          button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
+                      else
+                          button[ButtonMenu]->setIconSet( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ));
+                      connect( button[0], TQT_SIGNAL( pressed() ), this, TQT_SLOT( menuButtonPressed() ) );
+                      hb->addWidget(button[ButtonMenu]);
+                  }
+                  break;
+
+              case 'S': // Sticky button
+                  if (!button[ButtonSticky]) {
+                     button[ButtonSticky] = new TQToolButton( widget(), 0 );
+                     button[ButtonSticky]->setIconSet( isOnAllDesktops()?*pindown_pix:*pinup_pix );
+                     TQToolTip::add( button[ButtonSticky], isOnAllDesktops()?i18n("Not On All Desktops"):i18n("On All Desktops")  );
+                     button[ButtonSticky]->setCursor(ArrowCursor);
+                     button[ButtonSticky]->setIconSet(isOnAllDesktops() ? isActive() ? *pindown_pix : *dis_pindown_pix :
+                                                      isActive() ? *pinup_pix : *dis_pinup_pix );
+                     connect( button[ButtonSticky], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( toggleOnAllDesktops() ) ) );
+                     hb->addWidget(button[ButtonSticky]);
+                  }
+                  break;
+
+              case 'H': // Help button
+                  if ((!button[ButtonHelp]) && providesContextHelp()) {
+                      button[ButtonHelp] = new TQToolButton( widget(), 0 );
+                      TQToolTip::add( button[ButtonHelp], i18n("Help") );
+                      button[ButtonHelp]->setIconSet( isActive() ? *question_mark_pix : *dis_question_mark_pix);
+                      connect( button[ButtonHelp], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( showContextHelp() ) ) );
+                      button[ButtonHelp]->setCursor(ArrowCursor);
+                      hb->addWidget(button[ButtonHelp]);
+                  }
+                  break;
+
+              case 'I': // Minimize button
+                  if ((!button[ButtonMinimize]) && isMinimizable())  {
+                      button[ButtonMinimize] = new TQToolButton( widget(), 0 );
+                      TQToolTip::add( button[ButtonMinimize], i18n("Minimize") );
+                      button[ButtonMinimize]->setCursor(ArrowCursor);
+                      button[ButtonMinimize]->setIconSet(isActive() ? *minimize_pix : *dis_minimize_pix);
+                      connect( button[ButtonMinimize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( minimize() ) ) );
+                      hb->addWidget(button[ButtonMinimize]);
+                  }
+                  break;
+
+              case 'A': // Maximize button
+                  if ((!button[ButtonMaximize]) && isMaximizable()) {
+                      const bool max = maximizeMode()!=MaximizeRestore;
+                      button[ButtonMaximize] = new ThreeButtonButton( widget(), 0 );
+                      TQToolTip::add( button[ButtonMaximize], max?i18n("Restore"):i18n("Maximize") );
+                      button[ButtonMaximize]->setCursor(ArrowCursor);
+                      button[ButtonMaximize]->setIconSet( max?(isActive() ? *normalize_pix : *dis_normalize_pix):(isActive() ? *maximize_pix : *dis_maximize_pix) );
+                      connect( button[ButtonMaximize], TQT_SIGNAL( clicked(ButtonState) ),
+                               this, ( TQT_SLOT( maxButtonClicked(ButtonState) ) ) );
+                      hb->addWidget(button[ButtonMaximize]);
+                  }
+                  break;
+
+              case 'X': // Close button
+                  if ((!button[ButtonClose]) && isCloseable()) {
+                      button[ButtonClose] = new TQToolButton( widget(), 0 );
+                      TQToolTip::add( button[ButtonClose], i18n("Close") );
+                      button[ButtonClose]->setCursor(ArrowCursor);
+                      button[ButtonClose]->setIconSet(isActive() ? *close_pix : *dis_close_pix);
+                      connect( button[ButtonClose], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
+                      hb->addWidget(button[ButtonClose]);
+                  }
+                  break;
+
+              case '_': // Spacer item
+	          hb->addItem( new TQSpacerItem( 5, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
+            }
+        }
+    }
+}
+
+void StdClient::activeChange()
+{
+    bool on = isActive();
+    if (button[ButtonMenu] && (icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull()))
+        button[ButtonMenu]->setIconSet(on ? *menu_pix : *dis_menu_pix);
+    if (button[ButtonSticky])
+        button[ButtonSticky]->setIconSet(isOnAllDesktops() ? on ? *pindown_pix : *dis_pindown_pix :
+                          on ? *pinup_pix : *dis_pinup_pix );
+    if (button[ButtonMinimize])
+        button[ButtonMinimize]->setIconSet(on ? *minimize_pix : *dis_minimize_pix);
+    if (button[ButtonMaximize])
+        button[ButtonMaximize]->setIconSet(on ? *maximize_pix : *dis_maximize_pix);
+    if (button[ButtonClose])
+        button[ButtonClose]->setIconSet(on ? *close_pix : *dis_close_pix);
+    if (button[ButtonHelp])
+        button[ButtonHelp]->setIconSet(on ? *question_mark_pix : *dis_question_mark_pix);
+    widget()->tqrepaint( titlebar->tqgeometry(), false );
+}
+
+
+StdClient::~StdClient()
+{
+    for (int n=0; n<ButtonTypeCount; n++) {
+        if (button[n]) delete button[n];
+    }
+}
+
+
+void StdClient::resizeEvent( TQResizeEvent* )
+{
+    TQRegion rr = widget()->rect();
+    TQRect t = titlebar->tqgeometry();
+//     t.setTop( 0 );
+//     TQRegion r = rr.subtract( TQRect( t.x()+1, 0, t.width()-2, 1 ) );
+//     setMask( r );
+
+    if ( widget()->isVisibleToTLW() && !widget()->testWFlags( WStaticContents )) {
+	// manual clearing without the titlebar (we selected WResizeNoErase )
+	TQRect cr( 2, 2, width()-4, height()- 4 );
+	widget()->erase( TQRegion( cr ).subtract( t ) );
+    }
+}
+
+/*!\reimp
+ */
+void StdClient::captionChange()
+{
+    widget()->tqrepaint( titlebar->tqgeometry(), FALSE );
+}
+
+
+/*!\reimp
+ */
+void StdClient::maximizeChange()
+{
+    bool m = maximizeMode() == MaximizeFull;
+    if (button[ButtonMaximize]) {
+        button[ButtonMaximize]->setIconSet( m?*normalize_pix:*maximize_pix  );
+        TQToolTip::remove( button[ButtonMaximize] );
+        TQToolTip::add( button[ButtonMaximize], m ? i18n("Restore") : i18n("Maximize") );
+    }
+}
+
+
+/*!\reimp
+ */
+void StdClient::desktopChange()
+{
+    bool s = isOnAllDesktops();
+    if (button[ButtonSticky]) {
+        button[ButtonSticky]->setIconSet( s?*pindown_pix:*pinup_pix );
+        TQToolTip::remove( button[ButtonSticky] );
+        TQToolTip::add( button[ButtonSticky], s ? i18n("Not On All Desktops") : i18n("On All Desktops") );
+    }
+}
+
+void StdClient::paintEvent( TQPaintEvent* )
+{
+    TQPainter p( widget() );
+    TQRect t = titlebar->tqgeometry();
+    TQRegion r = widget()->rect();
+    r = r.subtract( t );
+    p.setClipRegion( r );
+    qDrawWinPanel( &p, widget()->rect(), widget()->tqcolorGroup() );
+//     t.setTop( 1 );
+//     p.setClipRegion( t );
+//     t.setTop( 0 );
+
+    TQRect titleRect( 0, 0, t.width(), t.height() );
+    titleBuffer->resize( titleRect.width(), titleRect.height() );
+    TQPainter p2( titleBuffer );
+
+    drawGradient(p2, titleRect, options()->color(KDecorationOptions::ColorTitleBar, isActive()),
+        options()->color(KDecorationOptions::ColorTitleBlend, isActive()));
+//     p.setPen( options()->color(KDecorationOptions::ColorTitleBar, isActive()).light() );
+//     p.drawLine(t.left(), t.top()+1,  t.right(), t.top()+1);
+    if ( isActive() )
+	qDrawShadePanel( &p2, 0, 0, titleRect.width(), titleRect.height(),
+			 widget()->tqcolorGroup(), true, 1 );
+    titleRect.setLeft( 4 );
+    titleRect.setWidth( titleRect.width() - 2 );
+    p2.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
+    p2.setFont(options()->font(isActive()));
+    p2.drawText( titleRect, AlignLeft|AlignVCenter|SingleLine, caption() );
+    p2.end();
+    p.end();
+    bitBlt( widget(), t.topLeft(), titleBuffer );
+}
+
+
+void StdClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+	titlebarDblClickOperation();
+}
+
+
+void StdClient::wheelEvent( TQWheelEvent * e )
+{
+    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+
+void StdClient::iconChange()
+{
+    if (button[ButtonMenu]) {
+        if ( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ).isNull())
+            button[ButtonMenu]->setIconSet(isActive() ? *menu_pix : *dis_menu_pix);
+        else
+            button[ButtonMenu]->setIconSet( icon().pixmap( TQIconSet::Small, TQIconSet::Normal ) );
+        button[ButtonMenu]->tqrepaint( FALSE );
+    }
+}
+
+
+/*!
+  Indicates that the menu button has been clicked. One press shows
+  the window operation menu, a double click closes the window.
+ */
+void StdClient::menuButtonPressed()
+{
+    TQRect menuRect = button[ButtonMenu]->rect();
+    menuRect.addCoords(-1, 0, +1, +2);
+    TQPoint menuTop = button[ButtonMenu]->mapToGlobal(menuRect.topLeft());
+    TQPoint menuBottom = button[ButtonMenu]->mapToGlobal(menuRect.bottomRight());
+    KDecorationFactory* f = factory(); // needs to be saved before
+    showWindowMenu( TQRect(menuTop, menuBottom) );
+    if( !f->exists( this )) // destroyed, return immediately
+        return;
+    button[ButtonMenu]->setDown(false);
+}
+
+
+void StdClient::maxButtonClicked( ButtonState button )
+{
+    maximize( button );
+}
+
+bool StdClient::eventFilter( TQObject* o, TQEvent* e )
+{
+    if ( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()) )
+	return false;
+
+    switch ( e->type() ) {
+    case TQEvent::Resize:
+	resizeEvent( TQT_TQRESIZEEVENT( e ) );
+	return true;
+
+    case TQEvent::Paint:
+	paintEvent( TQT_TQPAINTEVENT( e ) );
+	return true;
+
+    case TQEvent::MouseButtonDblClick:
+	mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ) );
+	return true;
+
+    case TQEvent::MouseButtonPress:
+	processMousePressEvent( TQT_TQMOUSEEVENT( e ) );
+	return true;
+
+    case TQEvent::Wheel:
+	wheelEvent( TQT_TQWHEELEVENT( e ));
+	return true;
+
+    default:
+	return false;
+    }
+}
+
+TQSize StdClient::tqminimumSize() const
+{
+    return widget()->tqminimumSize().expandedTo( TQSize( 100, 50 ));
+}
+
+void StdClient::borders( int& left, int& right, int& top, int& bottom ) const
+{
+    left = right = bottom = 6;
+    top = 6 + widget()->fontMetrics().lineSpacing()+2;
+}
+
+void StdClient::resize( const TQSize& s )
+{
+    widget()->resize( s );
+}
+
+StdToolClient::StdToolClient( KDecorationBridge* b, KDecorationFactory* f )
+    : KDecoration( b, f )
+{
+}
+
+void StdToolClient::init()
+{
+    createMainWidget();
+    widget()->installEventFilter( this );
+
+    widget()->setFont(options()->font(isActive(), true ));
+
+    TQGridLayout* g = new TQGridLayout( widget(), 0, 0, 2 );
+    g->setRowStretch( 1, 10 );
+    if( isPreview())
+        g->addWidget( new TQLabel( i18n( "<center><b>KDE 1 decoration</b></center>" ), widget()), 1, 1 );
+    else
+        g->addItem( new TQSpacerItem( 0, 0 ), 1, 1 ); //no widget in the middle
+    g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
+
+    g->addColSpacing(0, 1);
+    g->addColSpacing(2, 1);
+    g->addRowSpacing(2, 1);
+
+    closeBtn = new TQToolButton( widget(), 0 );
+    TQToolTip::add( closeBtn, i18n("Close") );
+    connect( closeBtn, TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
+    closeBtn->setFixedSize( 13, 13);
+    reset( -1U );
+
+    TQHBoxLayout* hb = new TQHBoxLayout;
+    g->addLayout( hb, 0, 1 );
+
+    int fh = widget()->fontMetrics().lineSpacing()+2;
+
+    titlebar = new TQSpacerItem(10, fh, TQSizePolicy::Expanding,
+			       TQSizePolicy::Minimum );
+    hb->addItem( titlebar );
+    hb->addWidget( closeBtn );
+}
+
+StdToolClient::~StdToolClient()
+{
+}
+
+void StdToolClient::resizeEvent( TQResizeEvent* )
+{
+//     TQRegion r = rect();
+//     TQRect t = titlebar->tqgeometry();
+//     t.setTop( 0 );
+//     r = r.subtract( TQRect(0, 0, width(), 1) );
+//     r = r.subtract (TQRect( 0, 0, 1, t.height() ) );
+//     r = r.subtract (TQRect( width()-1, 0, 1, t.height() ) );
+//     setMask( r );
+}
+
+void StdToolClient::paintEvent( TQPaintEvent* )
+{
+    TQPainter p( widget() );
+    TQRect t = titlebar->tqgeometry();
+    TQRect r = widget()->rect();
+    qDrawWinPanel( &p, r, widget()->tqcolorGroup() );
+    r.setTop( t.bottom()+1 );
+    qDrawWinPanel( &p, r, widget()->tqcolorGroup() );
+    p.fillRect( TQRect( TQPoint(t.topLeft() ), TQPoint( width() - t.left(), t.bottom() ) ),
+		options()->color(KDecorationOptions::ColorTitleBar, isActive()));
+    p.setPen( options()->color(KDecorationOptions::ColorTitleBar, isActive()).light() );
+    t.setLeft( t.left() + 4 );
+    t.setRight( t.right() - 2 );
+    p.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
+    p.setFont(options()->font(isActive(), true));
+    p.drawText( t, AlignLeft|AlignVCenter|SingleLine, caption() );
+}
+
+
+void StdToolClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+    if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+        titlebarDblClickOperation();
+}
+
+void StdToolClient::wheelEvent( TQWheelEvent * e )
+{
+    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+void StdToolClient::captionChange()
+{
+    widget()->tqrepaint( titlebar->tqgeometry(), FALSE );
+}
+
+void StdToolClient::reset( unsigned long )
+{
+    TQImage img = close_pix->convertToImage();
+    img = img.smoothScale( 12, 12 );
+    TQPixmap pm;
+    pm.convertFromImage( img );
+    closeBtn->setPixmap( pm );
+    widget()->setFont(options()->font(isActive(), true ));
+}
+
+bool StdToolClient::eventFilter( TQObject* o, TQEvent* e )
+{
+    if ( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()) )
+	return false;
+
+    switch ( e->type() ) {
+    case TQEvent::Resize:
+	resizeEvent( TQT_TQRESIZEEVENT( e ) );
+	return true;
+
+    case TQEvent::Paint:
+	paintEvent( TQT_TQPAINTEVENT( e ) );
+	return true;
+
+    case TQEvent::MouseButtonDblClick:
+	mouseDoubleClickEvent( TQT_TQMOUSEEVENT( e ) );
+	return true;
+
+    case TQEvent::MouseButtonPress:
+	processMousePressEvent( TQT_TQMOUSEEVENT( e ) );
+	return true;
+
+    case TQEvent::Wheel:
+	wheelEvent( TQT_TQWHEELEVENT( e ));
+	return true;
+
+    default:
+	return false;
+    }
+}
+
+TQSize StdToolClient::tqminimumSize() const
+{
+    return widget()->tqminimumSize().expandedTo( TQSize( 100, 50 ));
+}
+
+void StdToolClient::borders( int& left, int& right, int& top, int& bottom ) const
+{
+    left = right = bottom = 6;
+    top = 6 + widget()->fontMetrics().lineSpacing();
+}
+
+void StdToolClient::resize( const TQSize& s )
+{
+    widget()->resize( s );
+}
+
+StdFactory::StdFactory()
+{
+    create_pixmaps();
+}
+
+StdFactory::~StdFactory()
+{
+    delete_pixmaps();
+}
+
+const int SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | NET::DesktopMask | NET::DockMask
+    | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask
+    | NET::UtilityMask | NET::SplashMask;
+
+KDecoration* StdFactory::createDecoration( KDecorationBridge* b )
+{
+    NET::WindowType type = windowType( SUPPORTED_WINDOW_TYPES_MASK, b );
+    if( type == NET::Utility || type == NET::Menu || type == NET::Toolbar )
+	return new StdToolClient( b, this );
+    return new StdClient( b, this );
+}
+
+bool StdFactory::reset( unsigned long mask )
+{
+    bool needHardReset = false;
+
+    // doesn't obey the Border size setting
+    if( mask & ( SettingFont | SettingButtons ))
+        needHardReset = true;
+
+    if( mask & ( SettingFont | SettingColors )) {
+        KDE1::delete_pixmaps();
+        KDE1::create_pixmaps();
+    }
+
+    if( !needHardReset )
+        resetDecorations( mask );
+    return needHardReset;
+}
+
+bool StdFactory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonMenu:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+        case AbilityButtonSpacer:
+            return true;
+        default:
+            return false;
+    };
+}
+
+
+}
+
+extern "C"
+{
+	KDE_EXPORT KDecorationFactory *create_factory()
+	{
+                return new KDE1::StdFactory();
+	}
+}
+
+#include "kde1client.moc"
diff --git a/twin-styles/kde1/kde1client.h b/twin-styles/kde1/kde1client.h
new file mode 100644
index 00000000..adedfaaf
--- /dev/null
+++ b/twin-styles/kde1/kde1client.h
@@ -0,0 +1,158 @@
+/*****************************************************************
+twin - the KDE window manager
+								
+Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
+******************************************************************/
+#ifndef STDCLIENT_H
+#define STDCLIENT_H
+#include <tqlayout.h>
+#include <tqvariant.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+#include <tqtoolbutton.h>
+class TQLabel;
+class TQSpacerItem;
+
+namespace KDE1 {
+
+enum ButtonType {
+    ButtonMenu=0,
+    ButtonSticky,
+    ButtonMinimize,
+    ButtonMaximize,
+    ButtonClose,
+    ButtonHelp,
+    ButtonTypeCount
+};
+
+class StdClient : public KDecoration
+{
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    StdClient( KDecorationBridge* b, KDecorationFactory* f );
+    ~StdClient();
+    void init();
+    TQSize tqminimumSize() const;
+    void borders( int& left, int& right, int& top, int& bottom ) const;
+    void reset( unsigned long mask );
+    void resize( const TQSize& s );
+    void shadeChange() {};
+    Position mousePosition( const TQPoint& p ) const { return KDecoration::mousePosition( p ); }
+protected:
+    bool eventFilter( TQObject* o, TQEvent* e );
+    void resizeEvent( TQResizeEvent* );
+    void paintEvent( TQPaintEvent* );
+
+    void mouseDoubleClickEvent( TQMouseEvent * );
+    void wheelEvent( TQWheelEvent * );
+    void captionChange();
+    void iconChange();
+    void maximizeChange();
+    void desktopChange();
+    void activeChange();
+
+private:
+    void addButtons(TQBoxLayout* hb, const TQString& buttons);
+
+private slots:
+    void menuButtonPressed();
+    void maxButtonClicked( ButtonState );
+
+private:
+    TQToolButton* button[ButtonTypeCount];
+    TQSpacerItem* titlebar;
+};
+
+class StdToolClient : public KDecoration
+{
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    StdToolClient( KDecorationBridge* b, KDecorationFactory* f );
+    ~StdToolClient();
+    void init();
+    TQSize tqminimumSize() const;
+    void borders( int& left, int& right, int& top, int& bottom ) const;
+    void reset( unsigned long mask );
+    void resize( const TQSize& s );
+    void shadeChange() {};
+    void activeChange() {};
+    void iconChange() {};
+    void maximizeChange() {};
+    void desktopChange() {};
+    Position mousePosition( const TQPoint& p ) const { return KDecoration::mousePosition( p ); }
+protected:
+    bool eventFilter( TQObject* o, TQEvent* e );
+    void resizeEvent( TQResizeEvent* );
+    void paintEvent( TQPaintEvent* );
+
+    void mouseDoubleClickEvent( TQMouseEvent * );
+    void wheelEvent( TQWheelEvent * );
+    void captionChange();
+
+private:
+    TQToolButton* closeBtn;
+    TQSpacerItem* titlebar;
+};
+
+
+
+/*
+  Like TQToolButton, but provides a clicked(ButtonState) signals that
+  has the last pressed mouse button as argument
+ */
+class ThreeButtonButton: public TQToolButton
+{
+    Q_OBJECT
+  TQ_OBJECT
+public:
+  ThreeButtonButton ( TQWidget *parent = 0, const char* name = 0 )
+      : TQToolButton( parent, name )
+    {
+	connect( this, TQT_SIGNAL( clicked() ), this, TQT_SLOT( handleClicked() ) );
+        setCursor( arrowCursor );
+    }
+    ~ThreeButtonButton () {}
+
+signals:
+    void clicked( ButtonState );
+
+protected:
+    void mousePressEvent( TQMouseEvent* e )
+    {
+	last_button = e->button();
+	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
+	TQToolButton::mousePressEvent( &me );
+    }
+
+    void mouseReleaseEvent( TQMouseEvent* e )
+    {
+	TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
+	TQToolButton::mouseReleaseEvent( &me );
+    }
+
+private slots:
+    void handleClicked()
+    {
+	emit clicked( last_button );
+    }
+
+private:
+    ButtonState last_button;
+
+};
+
+class StdFactory : public KDecorationFactory
+{
+public:
+    StdFactory();
+    ~StdFactory();
+    KDecoration* createDecoration( KDecorationBridge* b );
+    bool reset( unsigned long mask );
+    virtual bool supports( Ability ability );
+};
+
+}
+
+#endif
diff --git a/twin-styles/kde1/kde1client_bitmaps.h b/twin-styles/kde1/kde1client_bitmaps.h
new file mode 100644
index 00000000..8b1cb377
--- /dev/null
+++ b/twin-styles/kde1/kde1client_bitmaps.h
@@ -0,0 +1,149 @@
+#ifndef __STDCLIENT_BITMAPS_H
+#define __STDCLIENT_BITMAPS_H
+
+/**
+ * The standard client has the capability to color it's titlebar buttons
+ * according to the new color scheme. In order to do this it needs a bitmap
+ * for each shade which it draws into a pixmap with the appropriate color.
+ * These are all the bitmaps.
+ */
+
+static const unsigned char close_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x04, 0x10, 0x04, 0x08, 0x08, 0x04, 0x10, 0x02,
+  0x20, 0x01, 0x40, 0x00, 0x40, 0x00, 0x20, 0x01, 0x10, 0x02, 0x08, 0x04,
+  0x04, 0x08, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char close_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0c,
+  0xc0, 0x06, 0x80, 0x03, 0x80, 0x03, 0xc0, 0x06, 0x60, 0x0c, 0x30, 0x18,
+  0x18, 0x30, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char close_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x0c, 0x30, 0x1c, 0x38, 0x38, 0x1c, 0x70, 0x0e,
+  0xe0, 0x07, 0xc0, 0x03, 0xc0, 0x03, 0xe0, 0x07, 0x70, 0x0e, 0x38, 0x1c,
+  0x1c, 0x38, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char iconify_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0x03, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char iconify_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+
+static const unsigned char iconify_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0x03, 0x80, 0x02, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximize_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08, 0x04, 0x08,
+  0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0xf4, 0x0f,
+  0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximize_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10, 0x08, 0x10,
+  0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
+  0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximize_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18, 0x0c, 0x18,
+  0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0xfc, 0x1f,
+  0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximizedown_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x08, 0x10,
+  0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10, 0x08, 0x10,
+  0x08, 0x10, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximizedown_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0x04, 0x00, 0x04, 0x08,
+  0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08, 0x04, 0x08,
+  0xf4, 0x0f, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximizedown_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xfc, 0x1f, 0x0c, 0x18,
+  0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18, 0x0c, 0x18,
+  0xfc, 0x1f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char menu_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xfc, 0x3f, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char menu_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x20, 0xf8, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char menu_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0xfc, 0x3f, 0x04, 0x20, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pindown_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x80, 0x1f, 0xa0, 0x03,
+  0xb0, 0x01, 0x30, 0x01, 0xf0, 0x00, 0x70, 0x00, 0x20, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pindown_gray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c,
+  0x00, 0x0e, 0x00, 0x06, 0x00, 0x00, 0x80, 0x07, 0xc0, 0x03, 0xe0, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pindown_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x10, 0x70, 0x20, 0x50, 0x20,
+  0x48, 0x30, 0xc8, 0x38, 0x08, 0x1f, 0x08, 0x18, 0x10, 0x1c, 0x10, 0x0e,
+  0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pindown_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc0, 0x1f, 0xf0, 0x3f, 0xf0, 0x3f,
+  0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x1f, 0xf8, 0x1f, 0xf0, 0x1f, 0xf0, 0x0f,
+  0xe0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+  
+static const unsigned char pinup_white_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x11,
+  0x3f, 0x15, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pinup_gray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x80, 0x0a, 0xbf, 0x0a, 0x80, 0x15, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pinup_dgray_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x40, 0x31, 0x40, 0x2e,
+  0x40, 0x20, 0x40, 0x20, 0x7f, 0x2a, 0x40, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char pinup_mask_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0xc0, 0x31, 0xc0, 0x3f,
+  0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xc0, 0x3f, 0xc0, 0x31, 0xc0, 0x20,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char help_mask_bits[] = {
+ 0x00,0x00,0x00,0x00,0xe0,0x03,0xf0,0x07,0x70,0x0e,0x60,0x0e,0x00,0x0f,0x80,
+ 0x07,0xc0,0x03,0xc0,0x01,0x80,0x01,0xc0,0x00,0xc0,0x01,0x80,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x4c,0x0b,0x08,0x58,0x65,0x09,0x08,0x90,0x00,0x00,
+ 0x00,0x09,0x04,0x00,0x00,0x72,0x6f,0x6f,0x74,0x00,0x24,0x31,0x24,0x47,0x6b,
+ 0x65,0x44,0x78,0x63 };
+
+static const unsigned char help_dark_bits[] = {
+ 0x00,0x00,0x00,0x00,0xe0,0x03,0x30,0x06,0x30,0x06,0x00,0x06,0x00,0x03,0x80,
+ 0x01,0xc0,0x00,0xc0,0x00,0x00,0x00,0xc0,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x65,0x64,0x28,0x29,0x00,0x00,0x00,0x00,0x90,0x00,0x00,
+ 0x00,0x21,0x00,0x00,0x00,0x34,0xfe,0x12,0x2b,0x00,0x00,0xff,0xff,0x58,0xc0,
+ 0x01,0x2b,0x45,0xfe };
+
+static const unsigned char help_light_bits[] = {
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x40,0x08,0x60,0x08,0x00,0x0c,0x00,
+ 0x06,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0x00,0x00,0x01,0x80,0x01,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x4c,0x0b,0x08,0x58,0x65,0x09,0x08,0x90,0x00,0x00,
+ 0x00,0x09,0x04,0x00,0x00,0x72,0x6f,0x6f,0x74,0x00,0x24,0x31,0x24,0x47,0x6b,
+ 0x65,0x44,0x78,0x63 };
+
+#endif
+
diff --git a/twin-styles/kstep/CMakeLists.txt b/twin-styles/kstep/CMakeLists.txt
new file mode 100644
index 00000000..4d55aa77
--- /dev/null
+++ b/twin-styles/kstep/CMakeLists.txt
@@ -0,0 +1,32 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES kstep.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_kstep ###############################
+
+tde_add_kpart( twin3_kstep AUTOMOC
+  SOURCES nextclient.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/kstep/Makefile.am b/twin-styles/kstep/Makefile.am
new file mode 100644
index 00000000..3fff6355
--- /dev/null
+++ b/twin-styles/kstep/Makefile.am
@@ -0,0 +1,22 @@
+
+INCLUDES = $(all_includes) 
+
+kde_module_LTLIBRARIES = twin3_kstep.la
+
+twin3_kstep_la_SOURCES = nextclient.cpp
+twin3_kstep_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+#twin_kstep_la_LDFLAGS = $(all_libraries) -avoid-version -module $(KDE_RPATH) $(KDE_MT_LDFLAGS)
+twin3_kstep_la_LIBADD = $(LIB_TDEUI) -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = nextclient.h
+
+lnkdir = $(kde_datadir)/twin/
+lnk_DATA = kstep.desktop
+
+EXTRA_DIST = $(lnk_DATA)
+
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/kstep/kstep.desktop b/twin-styles/kstep/kstep.desktop
new file mode 100644
index 00000000..87b9aaae
--- /dev/null
+++ b/twin-styles/kstep/kstep.desktop
@@ -0,0 +1,12 @@
+[Desktop Entry]
+Name=KStep
+Name[cy]=KCam
+Name[hi]=के-स्टेप
+Name[ne]=केडीई चरण
+Name[sv]=Kstep
+Name[ta]=Kஅடி
+Name[th]=ตัวจัดการหน้าต่างสเต็ป - K
+Name[ven]=Tshitepe tsha K
+Name[xh]=Inqwanqwa le K
+Name[zu]=Izinga le K
+X-KDE-Library=twin3_kstep
diff --git a/twin-styles/kstep/nextclient.cpp b/twin-styles/kstep/nextclient.cpp
new file mode 100644
index 00000000..08867a62
--- /dev/null
+++ b/twin-styles/kstep/nextclient.cpp
@@ -0,0 +1,987 @@
+#include "nextclient.h"
+#include <tqdatetime.h>
+#include <tqdrawutil.h>
+#include <tqlayout.h>
+#include <tqpainter.h>
+#include <tqbitmap.h>
+#include <tqlabel.h>
+#include <tqtooltip.h>
+#include <kdebug.h>
+#include <klocale.h>
+#include <kpixmapeffect.h>
+
+namespace KStep {
+
+static const unsigned char close_bits[] = {
+  0x03, 0x03, 0x87, 0x03, 0xce, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x78, 0x00,
+  0xfc, 0x00, 0xce, 0x01, 0x87, 0x03, 0x03, 0x03};
+
+static const unsigned char iconify_bits[] = {
+  0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0x03, 0x03, 0x03, 0x03,
+  0x03, 0x03, 0x03, 0x03, 0xff, 0x03, 0xff, 0x03};
+
+static const unsigned char question_bits[] = {
+  0x00, 0x00, 0x78, 0x00, 0xcc, 0x00, 0xc0, 0x00, 0x60, 0x00, 0x30, 0x00,
+  0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00};
+
+static const unsigned char sticky_bits[] = {
+  0x00, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+  0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00};
+
+static const unsigned char unsticky_bits[] = {
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01, 0xfe, 0x01,
+  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+static const unsigned char maximize_bits[] = {
+   0x30, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfe, 0x01, 0x00, 0x00, 0xfe, 0x01,
+   0x02, 0x01, 0x84, 0x00, 0x48, 0x00, 0x30, 0x00 };
+
+static const unsigned char shade_bits[] = {
+    0xff,0x03,
+    0xff,0x03,
+    0x03,0x03,
+    0xff,0x03,
+    0xff,0x03,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00 
+};
+    
+static const unsigned char unshade_bits[] = {
+    0xff,0x03,
+    0xff,0x03,
+    0x03,0x03,
+    0x03,0x03,
+    0x03,0x03,
+    0x03,0x03,
+    0x03,0x03,
+    0x03,0x03,
+    0xff,0x03,
+    0xff,0x03 
+};
+
+static const unsigned char keep_above_bits[] = {
+    0x30,0x00,
+    0x78,0x00,
+    0xfc,0x00,
+    0x00,0x00,
+    0xff,0x03,
+    0xff,0x03,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00 
+};
+
+static const unsigned char from_above_bits[] = {
+    0xff,0x03,
+    0xff,0x03,
+    0x00,0x00,
+    0xfc,0x00,
+    0x78,0x00,
+    0x30,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00 
+};
+    
+static const unsigned char keep_below_bits[] = {
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0xff,0x03,
+    0xff,0x03,
+    0x00,0x00,
+    0xfc,0x00,
+    0x78,0x00,
+    0x30,0x00
+};
+
+static const unsigned char from_below_bits[] = {
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x00,0x00,
+    0x30,0x00,
+    0x78,0x00,
+    0xfc,0x00,
+    0x00,0x00,
+    0xff,0x03,
+    0xff,0x03
+};
+
+static const unsigned char resize_bits[] = {
+    0xff, 0x03, 
+    0xff, 0x03, 
+    0x33, 0x03, 
+    0x33, 0x03, 
+    0xf3, 0x03, 
+    0xf3, 0x03,
+    0x03, 0x03, 
+    0x03, 0x03, 
+    0xff, 0x03, 
+    0xff, 0x03
+};
+
+
+// If the maximize graphic above (which I did quickly in about a
+// minute, just so I could have something) doesn't please, maybe one
+// of the following would be better.  IMO it doesn't matter, as long
+// as it's not offensive---people will get used to whatever you use.
+// True NeXT fans won't turn on the maximize button anyway.
+//
+// static const unsigned char maximize_bits[] = {
+//    0xcf, 0x03, 0x87, 0x03, 0xcf, 0x03, 0xfd, 0x02, 0x48, 0x00, 0x48, 0x00,
+//    0xfd, 0x02, 0xcf, 0x03, 0x87, 0x03, 0xcf, 0x03 };
+//
+// static const unsigned char maximize_bits[] = {
+//    0xcf, 0x03, 0x87, 0x03, 0x87, 0x03, 0x79, 0x02, 0x48, 0x00, 0x48, 0x00,
+//    0x79, 0x02, 0x87, 0x03, 0x87, 0x03, 0xcf, 0x03 };
+//
+// static const unsigned char maximize_bits[] = {
+//    0x87, 0x03, 0x03, 0x03, 0xfd, 0x02, 0x84, 0x00, 0x84, 0x00, 0x84, 0x00,
+//    0x84, 0x00, 0xfd, 0x02, 0x03, 0x03, 0x87, 0x03 };
+//
+// static const unsigned char maximize_bits[] = {
+//    0x30, 0x00, 0x78, 0x00, 0xcc, 0x00, 0x86, 0x01, 0x33, 0x03, 0x79, 0x02,
+//    0xcd, 0x02, 0x87, 0x03, 0x03, 0x03, 0x01, 0x02 };
+//
+// static const unsigned char maximize_bits[] = {
+//    0x30, 0x00, 0x78, 0x00, 0x78, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0xfe, 0x01,
+//    0xfe, 0x01, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03 };
+
+
+static KPixmap *aTitlePix;
+static KPixmap *iTitlePix;
+static KPixmap *aFramePix;
+static KPixmap *iFramePix;
+static KPixmap *aHandlePix;
+static KPixmap *iHandlePix;
+static KPixmap *aBtn;
+static KPixmap *aBtnDown;
+static KPixmap *iBtn;
+static KPixmap *iBtnDown;
+static TQColor *btnForeground;
+static bool pixmaps_created = false;
+
+static int titleHeight = 16;
+
+// Precomputed border sizes for accessibility
+// The sizes are applied for tiny -> normal -> large -> very large -> huge -> very huge -> oversized
+static const int borderSizes[] = { 4,  6,  9, 14, 21, 32, 48 };
+
+static int handleSize = 6;	// the resize handle size in pixels
+
+static inline const KDecorationOptions* options()
+{
+    return KDecoration::options();
+}
+
+static void create_pixmaps(NextClientFactory *f)
+{
+    if(pixmaps_created)
+        return;
+    pixmaps_created = true;
+
+    // find preferred border size
+    int i = options()->preferredBorderSize(f);
+    if (i >= 0 && i <= 6) handleSize = borderSizes[i];
+
+    titleHeight = TQFontMetrics(options()->font(true)).height() + 4;
+    if (titleHeight < handleSize) titleHeight = handleSize;
+    titleHeight &= ~1; // Make title height even
+    if (titleHeight < 16) titleHeight = 16;
+
+    aTitlePix = new KPixmap();
+    aTitlePix->resize(32, titleHeight - 2);
+    KPixmapEffect::gradient(*aTitlePix,
+                            options()->color(KDecoration::ColorTitleBar, true),
+                            options()->color(KDecoration::ColorTitleBlend, true),
+                            KPixmapEffect::VerticalGradient);
+    iTitlePix = new KPixmap();
+    iTitlePix->resize(32, titleHeight - 2);
+    KPixmapEffect::gradient(*iTitlePix,
+                            options()->color(KDecoration::ColorTitleBar, false),
+                            options()->color(KDecoration::ColorTitleBlend, false),
+                            KPixmapEffect::VerticalGradient);
+    // Bottom frame gradient
+    aFramePix = new KPixmap();
+    aFramePix->resize(32, handleSize);
+    KPixmapEffect::gradient(*aFramePix,
+                            options()->color(KDecoration::ColorFrame, true).light(150),
+                            options()->color(KDecoration::ColorFrame, true).dark(120),
+                            KPixmapEffect::VerticalGradient);
+    iFramePix = new KPixmap();
+    iFramePix->resize(32, handleSize);
+    KPixmapEffect::gradient(*iFramePix,
+                            options()->color(KDecoration::ColorFrame, false).light(150),
+                            options()->color(KDecoration::ColorFrame, false).dark(120),
+                            KPixmapEffect::VerticalGradient);
+
+    // Handle gradient
+    aHandlePix = new KPixmap();
+    aHandlePix->resize(32, handleSize);
+    KPixmapEffect::gradient(*aHandlePix,
+                            options()->color(KDecoration::ColorHandle, true).light(150),
+                            options()->color(KDecoration::ColorHandle, true).dark(120),
+                            KPixmapEffect::VerticalGradient);
+    iHandlePix = new KPixmap();
+    iHandlePix->resize(32, handleSize);
+    KPixmapEffect::gradient(*iHandlePix,
+                            options()->color(KDecoration::ColorHandle, false).light(150),
+                            options()->color(KDecoration::ColorHandle, false).dark(120),
+                            KPixmapEffect::VerticalGradient);
+
+    int btnWidth = titleHeight;
+    iBtn = new KPixmap;
+    iBtn->resize(btnWidth, btnWidth);
+    iBtnDown = new KPixmap;
+    iBtnDown->resize(btnWidth, btnWidth);
+    aBtn = new KPixmap;
+    aBtn->resize(btnWidth, btnWidth);
+    aBtnDown = new KPixmap;
+    aBtnDown->resize(btnWidth, btnWidth);
+    KPixmap internal;
+    int internalHeight = btnWidth - 6;
+    internal.resize(internalHeight, internalHeight);
+
+    // inactive buttons
+    TQColor c(options()->color(KDecoration::ColorButtonBg, false));
+    KPixmapEffect::gradient(*iBtn, c.light(120), c.dark(120),
+                            KPixmapEffect::DiagonalGradient);
+    KPixmapEffect::gradient(internal, c.dark(120), c.light(120),
+                            KPixmapEffect::DiagonalGradient);
+    bitBlt(TQT_TQPAINTDEVICE(iBtn), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
+
+    KPixmapEffect::gradient(*iBtnDown, c.dark(120), c.light(120),
+                            KPixmapEffect::DiagonalGradient);
+    KPixmapEffect::gradient(internal, c.light(120), c.dark(120),
+                            KPixmapEffect::DiagonalGradient);
+    bitBlt(TQT_TQPAINTDEVICE(iBtnDown), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
+
+    // active buttons
+    c = options()->color(KDecoration::ColorButtonBg, true);
+    KPixmapEffect::gradient(*aBtn, c.light(120), c.dark(120),
+                            KPixmapEffect::DiagonalGradient);
+    KPixmapEffect::gradient(internal, c.dark(120), c.light(120),
+                            KPixmapEffect::DiagonalGradient);
+    bitBlt(TQT_TQPAINTDEVICE(aBtn), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
+
+    KPixmapEffect::gradient(*aBtnDown, c.dark(120), c.light(120),
+                            KPixmapEffect::DiagonalGradient);
+    KPixmapEffect::gradient(internal, c.light(120), c.dark(120),
+                            KPixmapEffect::DiagonalGradient);
+    bitBlt(TQT_TQPAINTDEVICE(aBtnDown), 3, 3, TQT_TQPAINTDEVICE(&internal), 0, 0, internalHeight, internalHeight, TQt::CopyROP, true);
+
+    TQPainter p;
+    p.begin(aBtn);
+    p.setPen(TQt::black);
+    p.drawRect(0, 0, btnWidth, btnWidth);
+    p.end();
+    p.begin(iBtn);
+    p.setPen(TQt::black);
+    p.drawRect(0, 0, btnWidth, btnWidth);
+    p.end();
+    p.begin(aBtnDown);
+    p.setPen(TQt::black);
+    p.drawRect(0, 0, btnWidth, btnWidth);
+    p.end();
+    p.begin(iBtnDown);
+    p.setPen(TQt::black);
+    p.drawRect(0, 0, btnWidth, btnWidth);
+    p.end();
+
+    if(tqGray(options()->color(KDecoration::ColorButtonBg, true).rgb()) > 128)
+        btnForeground = new TQColor(TQt::black);
+    else
+        btnForeground = new TQColor(TQt::white);
+}
+
+static void delete_pixmaps()
+{
+    delete aTitlePix;
+    delete iTitlePix;
+    delete aFramePix;
+    delete iFramePix;
+    delete aHandlePix;
+    delete iHandlePix;
+    delete aBtn;
+    delete iBtn;
+    delete aBtnDown;
+    delete iBtnDown;
+    delete btnForeground;
+
+    pixmaps_created = false;
+}
+
+// =====================================
+
+NextButton::NextButton(NextClient *parent, const char *name,
+                       const unsigned char *bitmap, int bw, int bh,
+                       const TQString& tip, const int realizeBtns)
+    : TQButton(parent->widget(), name),
+      deco(NULL), client(parent), last_button(Qt::NoButton)
+{
+    realizeButtons = realizeBtns;
+
+    setBackgroundMode( NoBackground );
+    resize(titleHeight, titleHeight);
+    setFixedSize(titleHeight, titleHeight);
+
+    if(bitmap)
+        setBitmap(bitmap, bw, bh);
+
+    TQToolTip::add(this, tip);
+}
+
+void NextButton::reset()
+{
+    tqrepaint(false);
+}
+
+void NextButton::setBitmap(const unsigned char *bitmap, int w, int h)
+{
+    deco = new TQBitmap(w, h, bitmap, true);
+    deco->setMask(*deco);
+    tqrepaint();
+}
+
+void NextButton::drawButton(TQPainter *p)
+{
+    if(client->isActive())
+        p->drawPixmap(0, 0, isDown() ? *aBtnDown : *aBtn);
+    else
+        p->drawPixmap(0, 0, isDown() ? *iBtnDown : *iBtn);
+
+    // If we have a decoration, draw it; otherwise, we have the menu
+    // button (remember, we set the bitmap to NULL).
+    int offset;
+    if (deco) {
+        offset = (titleHeight - 10) / 2 + (isDown() ? 1 : 0);
+        p->setPen(*btnForeground);
+        p->drawPixmap(offset, offset, *deco);
+    } else {
+        offset = (titleHeight - 16) / 2;
+	KPixmap btnpix = client->icon().pixmap(TQIconSet::Small,
+		client->isActive() ? TQIconSet::Normal : TQIconSet::Disabled);
+        p->drawPixmap( offset, offset, btnpix );
+    }
+}
+
+void NextButton::mousePressEvent( TQMouseEvent* e )
+{
+    last_button = e->button();
+    TQMouseEvent me( e->type(), e->pos(), e->globalPos(),
+                    (e->button()&realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
+    TQButton::mousePressEvent( &me );
+}
+
+void NextButton::mouseReleaseEvent( TQMouseEvent* e )
+{
+    last_button = e->button();
+    TQMouseEvent me( e->type(), e->pos(), e->globalPos(),
+                    (e->button()&realizeButtons)?Qt::LeftButton:Qt::NoButton, e->state() );
+    TQButton::mouseReleaseEvent( &me );
+}
+
+// =====================================
+
+NextClient::NextClient(KDecorationBridge *b, KDecorationFactory *f)
+    : KDecoration(b, f)
+{
+}
+
+void NextClient::init()
+{
+    createMainWidget(WResizeNoErase | WStaticContents);
+    widget()->installEventFilter(this);
+
+    widget()->setBackgroundMode( NoBackground );
+
+    TQVBoxLayout *mainLayout = new TQVBoxLayout(widget());
+    TQBoxLayout  *titleLayout = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+    TQHBoxLayout *windowLayout = new TQHBoxLayout();
+    mainLayout->addLayout(titleLayout);
+    mainLayout->addLayout(windowLayout, 1);
+    mainLayout->addSpacing(mustDrawHandle() ? handleSize : 1);
+
+    windowLayout->addSpacing(1);
+    if (isPreview())
+        windowLayout->addWidget(new TQLabel(i18n(
+			"<center><b>KStep preview</b></center>"), widget()));
+    else
+        windowLayout->addItem(new TQSpacerItem( 0, 0 ));
+
+    windowLayout->addSpacing(1);
+
+    initializeButtonsAndTitlebar(titleLayout);
+}
+
+/**
+   Preconditions:
+       + button is an array of length MAX_NUM_BUTTONS
+
+   Postconditions:
+       + Title bar and buttons have been initialized and laid out
+       + for all i in 0..(MAX_NUM_BUTTONS-1), button[i] points to
+         either (1) a valid NextButton instance, if the corresponding
+         button is selected in the current button scheme, or (2) null
+         otherwise.
+ */
+void NextClient::initializeButtonsAndTitlebar(TQBoxLayout* titleLayout)
+{
+    // Null the buttons to begin with (they are not guaranteed to be null).
+    for (int i=0; i<MAX_NUM_BUTTONS; i++) {
+        button[i] = NULL;
+    }
+
+    // The default button positions for other styles do not match the
+    // behavior of older versions of KStep, so we have to set these
+    // manually when customButtonPositions isn't enabled.
+    TQString left, right;
+    if (options()->customButtonPositions()) {
+        left = options()->titleButtonsLeft();
+        right = options()->titleButtonsRight();
+    } else {
+        left = TQString("I");
+        right = TQString("SX");
+    }
+
+    // Do actual creation and addition to titleLayout
+    addButtons(titleLayout, left);
+
+    titlebar = new TQSpacerItem(10, titleHeight, TQSizePolicy::Expanding,
+                               TQSizePolicy::Minimum );
+    titleLayout->addItem(titlebar);
+    addButtons(titleLayout, right);
+
+    // Finally, activate all live buttons
+    for ( int i = 0; i < MAX_NUM_BUTTONS; i++) {
+        if (button[i]) {
+            button[i]->setMouseTracking( TRUE );
+        }
+    }
+}
+
+/** Adds the buttons for one side of the title bar, based on the spec
+ * string; see the KWinInternal::KDecoration class, methods
+ * titleButtonsLeft and titleBUttonsRight. */
+void NextClient::addButtons(TQBoxLayout* titleLayout, const TQString& spec)
+{
+    for (unsigned int i=0; i<spec.length(); i++) {
+        switch (spec[i].latin1()) {
+        case 'A':
+            if (isMaximizable()) {
+                button[MAXIMIZE_IDX] =
+                    new NextButton(this, "maximize", maximize_bits, 10, 10,
+                                   i18n("Maximize"), Qt::LeftButton|Qt::MidButton|Qt::RightButton);
+                titleLayout->addWidget( button[MAXIMIZE_IDX] );
+                connect( button[MAXIMIZE_IDX], TQT_SIGNAL(clicked()),
+                         this, TQT_SLOT(maximizeButtonClicked()) );
+            }
+            break;
+
+        case 'H':
+	    if (providesContextHelp()) {
+		button[HELP_IDX] = new NextButton(this,
+			"help", question_bits, 10, 10, i18n("Help"));
+		titleLayout->addWidget( button[HELP_IDX] );
+		connect( button[HELP_IDX], TQT_SIGNAL(clicked()),
+			 this, TQT_SLOT(showContextHelp()) );
+	    }
+            break;
+
+        case 'I':
+            if (isMinimizable()) {
+                button[ICONIFY_IDX] =
+                    new NextButton(this, "iconify", iconify_bits, 10, 10,
+                                   i18n("Minimize"));
+                titleLayout->addWidget( button[ICONIFY_IDX] );
+                connect( button[ICONIFY_IDX], TQT_SIGNAL(clicked()),
+                         this, TQT_SLOT(minimize()) );
+            }
+            break;
+
+        case 'M':
+            button[MENU_IDX] =
+                new NextButton(this, "menu", NULL, 10, 10, i18n("Menu"), Qt::LeftButton|Qt::RightButton);
+            titleLayout->addWidget( button[MENU_IDX] );
+            // NOTE DIFFERENCE: capture pressed(), not clicked()
+            connect( button[MENU_IDX], TQT_SIGNAL(pressed()),
+                     this, TQT_SLOT(menuButtonPressed()) );
+            break;
+
+        case 'L':
+            button[SHADE_IDX] =
+                new NextButton(this, "shade", NULL, 0, 0, i18n("Shade"));
+            titleLayout->addWidget( button[SHADE_IDX] );
+            connect( button[SHADE_IDX], TQT_SIGNAL(clicked()),
+                     this, TQT_SLOT(shadeClicked()) );
+            // NOTE DIFFERENCE: set the pixmap separately (2 states)
+	    shadeChange();
+            break;
+	    
+        case 'S':
+            button[STICKY_IDX] =
+                new NextButton(this, "sticky", NULL, 0, 0, i18n("On all desktops"));
+            titleLayout->addWidget( button[STICKY_IDX] );
+            connect( button[STICKY_IDX], TQT_SIGNAL(clicked()),
+                     this, TQT_SLOT(toggleOnAllDesktops()) );
+            // NOTE DIFFERENCE: set the pixmap separately (2 states)
+	    desktopChange();
+            break;
+
+	case 'F':
+            button[ABOVE_IDX] = new NextButton(this, "above", NULL, 0, 0, "");
+            titleLayout->addWidget( button[ABOVE_IDX] );
+            connect( button[ABOVE_IDX], TQT_SIGNAL(clicked()),
+                     this, TQT_SLOT(aboveClicked()) );
+	    connect(this, TQT_SIGNAL(keepAboveChanged(bool)), 
+		    TQT_SLOT(keepAboveChange(bool)));
+	    keepAboveChange(keepAbove());
+	    break;
+	    
+	case 'B':
+            button[BELOW_IDX] = new NextButton(this, "below", NULL, 0, 0, "");
+            titleLayout->addWidget( button[BELOW_IDX] );
+            connect( button[BELOW_IDX], TQT_SIGNAL(clicked()),
+                     this, TQT_SLOT(belowClicked()) );
+	    connect(this, TQT_SIGNAL(keepBelowChanged(bool)), 
+		    TQT_SLOT(keepBelowChange(bool)));
+	    keepBelowChange(keepBelow());
+	    break;
+        
+	case 'X':
+            if (isCloseable()) {
+		button[CLOSE_IDX] =
+		    new NextButton(this, "close", close_bits, 10, 10,
+				   i18n("Close"));
+		titleLayout->addWidget(button[CLOSE_IDX]);
+		connect(button[CLOSE_IDX], TQT_SIGNAL(clicked()),
+			 this, TQT_SLOT(closeWindow()));
+            }
+            break;
+
+	case 'R':
+            if (mustDrawHandle()) {
+		button[RESIZE_IDX] =
+		    new NextButton(this, "resize", resize_bits, 10, 10,
+				   i18n("Resize"));
+		titleLayout->addWidget(button[RESIZE_IDX]);
+		// NOTE DIFFERENCE: capture pressed(), not clicked()
+		connect(button[RESIZE_IDX], TQT_SIGNAL(pressed()),
+			 this, TQT_SLOT(resizePressed()));
+            }
+	    break;
+        case '_':
+            // TODO: Add spacer handling
+            break;
+
+        default:
+            kdDebug() << " Can't happen: unknown button code "
+                      << TQString(spec[i]);
+            break;
+        }
+    }
+}
+
+bool NextClient::mustDrawHandle() const 
+{ 
+    bool drawSmallBorders = !options()->moveResizeMaximizedWindows();
+    if (drawSmallBorders && (maximizeMode() & MaximizeVertical)) {
+	return false;
+    } else {
+	return isResizable();
+    }
+}
+
+void NextClient::iconChange()
+{
+    if (button[MENU_IDX] && button[MENU_IDX]->isVisible())
+	button[MENU_IDX]->tqrepaint(false);
+}
+
+void NextClient::menuButtonPressed()
+{
+    // Probably don't need this null check, but we might as well.
+    if (button[MENU_IDX]) {
+	TQRect menuRect = button[MENU_IDX]->rect();
+        TQPoint menuTop = button[MENU_IDX]->mapToGlobal(menuRect.topLeft());
+        TQPoint menuBottom = button[MENU_IDX]->mapToGlobal(menuRect.bottomRight());
+	menuTop += TQPoint(1, 1);
+	menuBottom += TQPoint(1, 1);
+        KDecorationFactory* f = factory();
+        showWindowMenu(TQRect(menuTop, menuBottom));
+        if( !f->exists( this )) // 'this' was deleted
+            return;
+	button[MENU_IDX]->setDown(false);
+    }
+}
+
+// Copied, with minor edits, from KDEDefaultClient::slotMaximize()
+void NextClient::maximizeButtonClicked()
+{
+    if (button[MAXIMIZE_IDX]) {
+        maximize(button[MAXIMIZE_IDX]->lastButton());
+    }
+}
+
+void NextClient::shadeClicked()
+{
+    setShade(!isSetShade());
+}
+
+void NextClient::aboveClicked()
+{
+    setKeepAbove(!keepAbove());
+}
+
+void NextClient::belowClicked()
+{
+    setKeepBelow(!keepBelow());
+    keepAboveChange(keepAbove());
+    keepBelowChange(keepBelow());
+}
+
+void NextClient::resizePressed()
+{
+    performWindowOperation(ResizeOp);
+}
+
+void NextClient::resizeEvent(TQResizeEvent *)
+{
+    if (widget()->isVisible()) {
+	// TODO ? update border area only?
+        widget()->update();
+#if 0
+        widget()->update(titlebar->tqgeometry());
+        TQPainter p(widget());
+	TQRect t = titlebar->tqgeometry();
+	t.setTop( 0 );
+	TQRegion r = widget()->rect();
+	r = r.subtract( t );
+	p.setClipRegion( r );
+	p.eraseRect(widget()->rect());
+#endif
+    }
+}
+
+void NextClient::captionChange()
+{
+    widget()->tqrepaint(titlebar->tqgeometry(), false);
+}
+
+
+void NextClient::paintEvent( TQPaintEvent* )
+{
+    TQPainter p(widget());
+
+    // Draw black frame
+    TQRect fr = widget()->rect();
+    p.setPen(TQt::black);
+    p.drawRect(fr);
+
+    // Draw title bar
+    TQRect t = titlebar->tqgeometry();
+    t.setTop(1);
+    p.drawTiledPixmap(t.x()+1, t.y()+1, t.width()-2, t.height()-2,
+                      isActive() ? *aTitlePix : *iTitlePix);
+    qDrawShadePanel(&p, t.x(), t.y(), t.width(), t.height()-1,
+                   options()->tqcolorGroup(KDecoration::ColorTitleBar, isActive()));
+    p.drawLine(t.x(), t.bottom(), t.right(), t.bottom());
+
+#if 0
+    // Why setting up a clipping region if it is not used? (setClipping(false))
+    TQRegion r = fr;
+    r = r.subtract( t );
+    p.setClipRegion( r );
+    p.setClipping(false);
+#endif
+
+    t.setTop( 1 );
+    t.setHeight(t.height()-2);
+    t.setLeft( t.left() + 4 );
+    t.setRight( t.right() - 2 );
+
+    p.setPen(options()->color(KDecoration::ColorFont, isActive()));
+    p.setFont(options()->font(isActive()));
+    p.drawText( t, AlignCenter | AlignVCenter, caption() );
+
+    // Draw resize handle
+    if (mustDrawHandle()) {
+        int corner = 16 + 3*handleSize/2;
+	qDrawShadePanel(&p,
+		fr.x() + 1, fr.bottom() - handleSize, corner-1, handleSize,
+		options()->tqcolorGroup(KDecoration::ColorHandle, isActive()),
+		false);
+	p.drawTiledPixmap(fr.x() + 2, fr.bottom() - handleSize + 1,
+		corner - 3, handleSize - 2, isActive() ? *aHandlePix : *iHandlePix);
+
+	qDrawShadePanel(&p,
+		fr.x() + corner, fr.bottom() - handleSize,
+		fr.width() - 2*corner, handleSize,
+		options()->tqcolorGroup(KDecoration::ColorFrame, isActive()),
+		false);
+	p.drawTiledPixmap(fr.x() + corner + 1, fr.bottom() - handleSize + 1,
+		fr.width() - 2*corner - 2, handleSize - 2,
+		isActive() ? *aFramePix : *iFramePix);
+
+	qDrawShadePanel(&p,
+		fr.right() - corner + 1, fr.bottom() - handleSize, corner - 1, handleSize,
+		options()->tqcolorGroup(KDecoration::ColorHandle, isActive()),
+		false);
+	p.drawTiledPixmap(fr.right() - corner + 2, fr.bottom() - handleSize + 1,
+		corner - 3, handleSize - 2, isActive() ? *aHandlePix : *iHandlePix);
+    }
+}
+
+void NextClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+    if (e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+	titlebarDblClickOperation();
+}
+
+void NextClient::wheelEvent( TQWheelEvent * e )
+{
+    if (isSetShade() || TQRect( 0, 0, width(), titleHeight ).contains( e->pos() ) )
+	titlebarMouseWheelOperation( e->delta());
+}
+
+void NextClient::showEvent(TQShowEvent *)
+{
+    widget()->tqrepaint();
+}
+
+void NextClient::desktopChange()
+{
+    bool on = isOnAllDesktops();
+    if (NextButton * b = button[STICKY_IDX]) {
+        b->setBitmap( on ? unsticky_bits : sticky_bits, 10, 10);
+	TQToolTip::remove(b);
+	TQToolTip::add(b, on ? i18n("Not on all desktops") : i18n("On all desktops"));
+    }
+}
+
+void NextClient::maximizeChange()
+{
+    if (button[MAXIMIZE_IDX]) {
+	bool m = maximizeMode() == MaximizeFull;
+	//button[MAXIMIZE_IDX]->setBitmap(m ? minmax_bits : maximize_bits);
+	TQToolTip::remove(button[MAXIMIZE_IDX]);
+	TQToolTip::add(button[MAXIMIZE_IDX],
+		m ? i18n("Restore") : i18n("Maximize"));
+    }
+    //spacer->changeSize(10, mustDrawHandle() ? handleSize : 1,
+    //		    TQSizePolicy::Expanding, TQSizePolicy::Minimum);
+    //mainLayout->activate();
+}
+
+void NextClient::activeChange()
+{
+    widget()->tqrepaint(false);
+    slotReset();
+}
+
+void NextClient::slotReset()
+{
+    for (int i=0; i<MAX_NUM_BUTTONS; i++) {
+        if (button[i]) {
+            button[i]->reset();
+        }
+    }
+}
+
+KDecoration::Position
+NextClient::mousePosition( const TQPoint& p ) const
+{
+  Position m = PositionCenter;
+
+  if (p.y() < (height() - handleSize))
+    m = KDecoration::mousePosition(p);
+
+  else {
+    int corner = 16 + 3*handleSize/2;
+    if (p.x() >= (width() - corner))
+      m = PositionBottomRight;
+    else if (p.x() <= corner)
+      m = PositionBottomLeft;
+    else
+      m = PositionBottom;
+  }
+
+  return m;
+}
+
+void NextClient::borders(int &left, int &right, int &top, int &bottom) const
+{
+    left = right = 1;
+    top = titleHeight; // FRAME is this ok?
+    bottom = mustDrawHandle() ? handleSize : 1;
+}
+
+void NextClient::shadeChange()
+{
+    if (NextButton *b = button[SHADE_IDX]) {
+        b->setBitmap(isSetShade() ? unshade_bits : shade_bits, 10, 10);
+	TQToolTip::remove(b);
+	TQToolTip::add(b, isSetShade() ? i18n("Unshade") : i18n("Shade"));
+    }
+}
+
+void NextClient::keepAboveChange(bool above)
+{
+    if (NextButton *b = button[ABOVE_IDX]) {
+        b->setBitmap(above ? from_above_bits : keep_above_bits, 10, 10);
+	TQToolTip::remove(b);
+	TQToolTip::add(b, above ? 
+		i18n("Do not keep above others") : i18n("Keep above others"));
+	b->tqrepaint(false);
+    }
+}
+
+void NextClient::keepBelowChange(bool below)
+{
+    if (NextButton *b = button[BELOW_IDX]) {
+        b->setBitmap(below ? from_below_bits : keep_below_bits, 10, 10);
+	TQToolTip::remove(b);
+	TQToolTip::add(b, below ? 
+		i18n("Do not keep below others") : i18n("Keep below others"));
+	b->tqrepaint(false);
+    }
+}
+
+TQSize NextClient::tqminimumSize() const
+{
+    return TQSize(titleHeight * 6 + 2, titleHeight + handleSize + 2);
+}
+
+void NextClient::resize(const TQSize& s)
+{
+    widget()->resize(s);
+}
+
+void NextClient::reset(unsigned long)
+{
+    for (int i = 0; i < MAX_NUM_BUTTONS; ++i) {
+        if (button[i])
+            button[i]->reset();
+    }
+    widget()->tqrepaint();
+}
+
+bool NextClient::eventFilter(TQObject *o, TQEvent *e)
+{
+    if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
+	return false;
+    switch (e->type()) {
+    case TQEvent::Resize:
+	resizeEvent(TQT_TQRESIZEEVENT( e ));
+	return true;
+    case TQEvent::Paint:
+	paintEvent(TQT_TQPAINTEVENT( e ));
+	return true;
+    case TQEvent::MouseButtonDblClick:
+	mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ));
+	return true;
+    case TQEvent::Wheel:
+	wheelEvent( TQT_TQWHEELEVENT( e ));
+	return true;
+    case TQEvent::MouseButtonPress:
+	processMousePressEvent(TQT_TQMOUSEEVENT( e ));
+	return true;
+    case TQEvent::Show:
+	showEvent(TQT_TQSHOWEVENT( e ));
+	return true;
+    default:
+	break;
+    }
+    return false;
+}
+
+bool NextClient::drawbound(const TQRect& geom, bool /* clear */)
+{
+    TQPainter p(workspaceWidget());
+    p.setPen(TQPen(TQt::white, 3));
+    p.setRasterOp(TQt::XorROP);
+    p.drawRect(geom);
+    int leftMargin = geom.left() + 2;
+    p.fillRect(leftMargin, geom.top() + titleHeight - 1,
+	    geom.width() - 4, 3, TQt::white);
+    if (mustDrawHandle()) {
+	p.fillRect(leftMargin, geom.bottom() - handleSize - 1,
+		geom.width() - 4, 3, TQt::white);
+    }	    
+    return true;
+}
+
+// =====================================
+
+NextClientFactory::NextClientFactory()
+{
+    create_pixmaps(this);
+}
+
+NextClientFactory::~NextClientFactory()
+{
+    delete_pixmaps();
+}
+
+KDecoration *NextClientFactory::createDecoration(KDecorationBridge *b)
+{
+    return new NextClient(b, this);
+}
+
+bool NextClientFactory::reset(unsigned long /*changed*/)
+{
+    // TODO Do not recreate decorations if it is not needed. Look at
+    // ModernSystem for how to do that
+    delete_pixmaps();
+    create_pixmaps(this);
+    // For now just return true.
+    return true;
+}
+
+bool NextClientFactory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonMenu:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+        case AbilityButtonAboveOthers:
+        case AbilityButtonBelowOthers:
+        case AbilityButtonShade:
+        case AbilityButtonResize:
+            return true;
+        default:
+            return false;
+    };
+}
+
+TQValueList< NextClientFactory::BorderSize >
+NextClientFactory::borderSizes() const
+{
+    // the list must be sorted
+    return TQValueList< BorderSize >() << BorderTiny << BorderNormal <<
+	BorderLarge << BorderVeryLarge <<  BorderHuge <<
+	BorderVeryHuge << BorderOversized;
+}
+
+} // KStep namespace
+
+extern "C" KDE_EXPORT KDecorationFactory* create_factory()
+{
+    return new KStep::NextClientFactory();
+}
+
+#include "nextclient.moc"
+
+// vim: sw=4
diff --git a/twin-styles/kstep/nextclient.h b/twin-styles/kstep/nextclient.h
new file mode 100644
index 00000000..b24da66d
--- /dev/null
+++ b/twin-styles/kstep/nextclient.h
@@ -0,0 +1,126 @@
+#ifndef __NEXTCLIENT_H
+#define __NEXTCLIENT_H
+
+#include <tqvariant.h>
+#include <tqbitmap.h>
+#include <kpixmap.h>
+#include <tqlayout.h>
+#include <tqbutton.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQLabel;
+class TQSpacerItem;
+
+namespace KStep {
+
+class NextClient;
+
+class NextButton : public TQButton
+{
+public:
+    NextButton(NextClient *parent=0, const char *name=0,
+               const unsigned char *bitmap=NULL, int bw=0, int bh=0,
+               const TQString& tip=NULL, const int realizeBtns = Qt::LeftButton);
+    void setBitmap(const unsigned char *bitmap, int bw, int bh);
+    void reset();
+    ButtonState lastButton() { return last_button; }
+
+protected:
+    void mousePressEvent( TQMouseEvent* e );
+    void mouseReleaseEvent( TQMouseEvent* e );
+    virtual void drawButton(TQPainter *p);
+    void drawButtonLabel(TQPainter *){;}
+
+    KPixmap aBackground, iBackground;
+    TQBitmap* deco;
+    NextClient *client;
+    ButtonState last_button;
+    int realizeButtons;
+};
+
+class NextClient : public KDecoration
+{
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    NextClient(KDecorationBridge *b, KDecorationFactory *f);
+    ~NextClient() {;}
+    void init();
+    virtual bool drawbound(const TQRect& geom, bool clear);
+protected:
+    bool eventFilter(TQObject *o, TQEvent *e);
+    void resizeEvent( TQResizeEvent* );
+    void paintEvent( TQPaintEvent* );
+    void showEvent( TQShowEvent* );
+
+    void mouseDoubleClickEvent( TQMouseEvent * );
+    void wheelEvent( TQWheelEvent * );
+    void captionChange();
+    void desktopChange();
+    void activeChange();
+    void shadeChange();
+    void iconChange();
+    TQSize tqminimumSize() const;
+    void resize(const TQSize &size);
+    void borders(int &left, int &right, int &top, int &bottom) const;
+    void reset(unsigned long changed);
+    void calcHiddenButtons();
+    void updateActiveBuffer();
+
+    Position mousePosition(const TQPoint &) const;
+    void maximizeChange();
+
+protected slots:
+    void slotReset();
+    void menuButtonPressed();
+    void maximizeButtonClicked();
+    void shadeClicked();
+    void aboveClicked();
+    void belowClicked();
+    void resizePressed();
+
+    void keepAboveChange(bool above);
+    void keepBelowChange(bool below);
+
+private:
+    void initializeButtonsAndTitlebar(TQBoxLayout* titleLayout);
+    void addButtons(TQBoxLayout* titleLayout, const TQString& buttons);
+    bool mustDrawHandle() const;
+
+    TQSpacerItem* titlebar;
+
+    // Helpful constants for buttons in array
+    enum { CLOSE_IDX = 0,
+           HELP_IDX,
+           ICONIFY_IDX,
+           MAXIMIZE_IDX,
+           MENU_IDX,
+           SHADE_IDX,
+           ABOVE_IDX,
+           BELOW_IDX,
+           RESIZE_IDX,
+           STICKY_IDX,
+           MAX_NUM_BUTTONS = STICKY_IDX + 1 };
+
+    // WARNING: button[i] may be null for any given i.  Make sure you
+    // always check for null before doing button[i]->foo().
+    NextButton* button[MAX_NUM_BUTTONS];
+};
+
+class NextClientFactory: public TQObject, public KDecorationFactory
+{
+public:
+    NextClientFactory();
+    virtual ~NextClientFactory();
+    virtual KDecoration *createDecoration(KDecorationBridge *);
+    virtual bool reset(unsigned long changed);
+    virtual bool supports( Ability ability );
+
+    TQValueList< NextClientFactory::BorderSize > borderSizes() const;
+
+};
+
+}
+
+#endif
diff --git a/twin-styles/openlook/CMakeLists.txt b/twin-styles/openlook/CMakeLists.txt
new file mode 100644
index 00000000..061dd697
--- /dev/null
+++ b/twin-styles/openlook/CMakeLists.txt
@@ -0,0 +1,33 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES openlook.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_openlook ############################
+
+tde_add_kpart( twin3_openlook AUTOMOC
+  SOURCES OpenLook.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/openlook/Makefile.am b/twin-styles/openlook/Makefile.am
new file mode 100644
index 00000000..32b41684
--- /dev/null
+++ b/twin-styles/openlook/Makefile.am
@@ -0,0 +1,16 @@
+INCLUDES                    = $(all_includes)
+
+kde_module_LTLIBRARIES      = twin3_openlook.la
+
+twin3_openlook_la_SOURCES   = OpenLook.cpp
+twin3_openlook_la_LDFLAGS   = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_openlook_la_LIBADD    = -ltdecorations
+
+noinst_HEADERS              = OpenLook.h
+METASOURCES                 = AUTO
+
+linkdir                     = $(kde_datadir)/twin/
+link_DATA                   = openlook.desktop
+
+EXTRA_DIST                  = $(link_DATA)
+
diff --git a/twin-styles/openlook/OpenLook.cpp b/twin-styles/openlook/OpenLook.cpp
new file mode 100644
index 00000000..46398e30
--- /dev/null
+++ b/twin-styles/openlook/OpenLook.cpp
@@ -0,0 +1,728 @@
+/*
+  'OpenLook' twin client
+
+  Porting to trinity.2 API
+    Copyright 2003 Luciano Montanaro <mikelima@cirulla.net>
+
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to
+  deal in the Software without restriction, including without limitation the
+  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+  sell copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+ 
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "config.h"
+#include <unistd.h> // for usleep
+#include <math.h>
+
+#include <tqlayout.h>
+#include <tqpainter.h>
+#include <tqdrawutil.h>
+#include <tqtoolbutton.h>
+#include <tqimage.h>
+#include <tqlabel.h>
+#include <tqpixmap.h>
+
+#include <kapplication.h>
+#include <klocale.h>
+
+#include "OpenLook.h"
+
+extern "C" KDE_EXPORT KDecorationFactory* create_factory()
+{
+    return new OpenLook::DecorationFactory();
+}
+
+namespace OpenLook {
+
+static uint openLookCornerSize = 11;
+static uint openLookMargin = 5;
+static const uint openLookTextVMargin = 1;
+static uint titleHeight;
+
+// --------------------------------------- 
+
+DecorationFactory::DecorationFactory()
+{
+}
+
+DecorationFactory::~DecorationFactory()
+{
+}
+
+KDecoration *DecorationFactory::createDecoration(KDecorationBridge *b)
+{
+    return new OpenLook(b, this);
+}
+
+bool DecorationFactory::reset(unsigned long /*changed*/)
+{
+    // TODO Do not recreate decorations if it is not needed. Look at
+    // ModernSystem for how to do that
+    // For now just return true.
+    return true;
+}
+
+bool DecorationFactory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonMinimize:
+            return true;
+        default:
+            return false;
+    };
+}
+
+TQValueList< DecorationFactory::BorderSize > 
+DecorationFactory::borderSizes() const
+{ 
+    // the list must be sorted
+    return TQValueList< BorderSize >() << BorderNormal << 
+	BorderLarge << BorderVeryLarge <<  BorderHuge << 
+	BorderVeryHuge << BorderOversized;
+}
+
+// --------------------------------------- 
+
+static inline const KDecorationOptions* options()
+{
+    return KDecoration::options();
+}
+
+// --------------------------------------- 
+
+OpenLook::OpenLook(KDecorationBridge *b, KDecorationFactory *f) : 
+    KDecoration(b, f), 
+    titleSpacer_    (0),
+    mousePressPoint_(0, 0), // Anywhere outside button rect.
+    buttonDown_     (false)
+{
+}
+
+void OpenLook::init()
+{
+  static const int SUPPORTED_WINDOW_TYPES_MASK = NET::NormalMask | 
+    NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | 
+    NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | 
+    NET::UtilityMask | NET::SplashMask;
+
+  createMainWidget(WStaticContents | WResizeNoErase | WRepaintNoErase);
+  widget()->installEventFilter(this);
+  widget()->setBackgroundMode(NoBackground);
+  NET::WindowType type = windowType(SUPPORTED_WINDOW_TYPES_MASK);
+  tool_ = (type == NET::Toolbar || type == NET::Utility || type == NET::Menu);
+  TQFontMetrics fm(options()->font(isActive(), tool_));
+
+  titleHeight = fm.height() + openLookTextVMargin * 2;
+  
+  switch(KDecoration::options()->preferredBorderSize(factory())) {
+      case KDecoration::BorderLarge:
+          openLookMargin = 9;
+          break;
+      case KDecoration::BorderVeryLarge:
+          openLookMargin = 13;
+          break;
+      case KDecoration::BorderHuge:
+          openLookMargin = 18;
+          break;
+      case KDecoration::BorderVeryHuge:
+          openLookMargin = 27;
+          break;
+      case KDecoration::BorderOversized:
+          openLookMargin = 40;
+          break;
+      case KDecoration::BorderNormal:
+      default:
+          openLookMargin = 5;
+  }
+  openLookCornerSize = 2*openLookMargin + 1;
+  if (titleHeight <= openLookMargin)
+      titleHeight = openLookMargin+1;
+  
+  doLayout();
+}
+
+OpenLook::~OpenLook()
+{
+  // Empty.
+}
+
+bool OpenLook::eventFilter(TQObject *o, TQEvent *e)
+{
+  if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget())) return false;
+  switch (e->type()) {
+  case TQEvent::Resize:
+    resizeEvent(TQT_TQRESIZEEVENT(e));
+    return true;
+  case TQEvent::Paint:
+    paintEvent(TQT_TQPAINTEVENT(e));
+    return true;
+  case TQEvent::MouseButtonDblClick:
+    mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
+    return true;
+  case TQEvent::Wheel:
+    wheelEvent( TQT_TQWHEELEVENT( e ));
+    return true;
+  case TQEvent::MouseButtonPress:
+    if (!isButtonPress(TQT_TQMOUSEEVENT(e))) {
+      processMousePressEvent(TQT_TQMOUSEEVENT(e));
+    }
+    return true;
+  case TQEvent::MouseButtonRelease:
+    if (isButtonRelease(TQT_TQMOUSEEVENT(e))) {
+      return true;
+    } else {
+      return false;
+    }
+  case TQEvent::Show:
+    showEvent(TQT_TQSHOWEVENT(e));
+    return true;
+  default:
+    break;
+  }
+  return false;
+}
+
+  void 
+OpenLook::borders(int &left, int &right, int &top, int &bottom) const
+{
+    // FRAME XXX Check
+    left = right = bottom = openLookMargin;
+    top = titleHeight + openLookMargin;
+}
+
+  void
+OpenLook::captionChange()
+{
+  widget()->update(titleRect());
+}
+
+  void 
+OpenLook::shadeChange()
+{
+}
+
+TQSize OpenLook::tqminimumSize() const
+{
+    int left, right, top, bottom;
+    borders(left, right, top, bottom);
+    return TQSize(left  + right + 2 * titleHeight, top + bottom); 
+}
+
+  void 
+OpenLook::resize(const TQSize& s)
+{
+    widget()->resize(s);
+    widget()->tqrepaint(); //there is some strange wrong tqrepaint of the frame without
+}
+
+  void
+OpenLook::paintEvent(TQPaintEvent * pe)
+{
+  TQRect tr(titleRect());
+
+  TQPainter p(widget());
+
+  TQRegion clipRegion(pe->region());
+
+  p.setClipRegion(clipRegion);
+
+  paintBorder(p);
+
+  paintTopLeftRect(p);
+  paintTopRightRect(p);
+  paintBottomLeftRect(p);
+  paintBottomRightRect(p);
+
+  p.setClipRegion(clipRegion + buttonRect());
+
+  TQBrush titleBackground(options()->color(KDecoration::ColorTitleBar, true));
+
+  if (isActive())
+    qDrawShadePanel(&p, tr, widget()->tqcolorGroup(), true, 1, &titleBackground);
+  else
+    p.fillRect(tr, widget()->tqcolorGroup().brush(TQColorGroup::Background));
+
+  p.setClipRegion(clipRegion);
+
+  paintButton(p);
+
+  p.setFont(options()->font(isActive(), tool_));
+
+  p.setPen(options()->color(KDecoration::ColorFont, isActive()));
+
+  tr.setLeft(openLookCornerSize + 3 + buttonRect().width() + 2);
+
+  p.drawText(tr, AlignCenter, caption());
+}
+
+  void
+OpenLook::showEvent(TQShowEvent *)
+{
+    widget()->tqrepaint();
+}
+
+  void
+OpenLook::mouseDoubleClickEvent(TQMouseEvent * e)
+{
+  if (e->button() == Qt::LeftButton && titleRect().contains(e->pos()))
+  {
+	  titlebarDblClickOperation();
+  }
+}
+
+  void
+OpenLook::wheelEvent(TQWheelEvent *e)
+{
+  if (isSetShade() || titleRect().contains(e->pos()))
+  {
+          titlebarMouseWheelOperation( e->delta());
+  }
+}
+
+  void 
+OpenLook::resizeEvent(TQResizeEvent* e)
+{
+  widget()->update();
+}
+
+  void
+OpenLook::activeChange()
+{
+  widget()->tqrepaint();
+}
+
+  KDecoration::Position
+OpenLook::mousePosition(const TQPoint & p) const
+{
+  if (topLeftRect().contains(p))
+    return PositionTopLeft;
+  else if (topRightRect().contains(p))
+    return PositionTopRight;
+  else if (bottomLeftRect().contains(p))
+    return PositionBottomLeft;
+  else if (bottomRightRect().contains(p))
+    return PositionBottomRight;
+  else
+    return PositionCenter;
+}
+
+  void 
+OpenLook::iconChange()
+{
+}
+
+  void 
+OpenLook::desktopChange()
+{
+}
+
+  void 
+OpenLook::maximizeChange()
+{
+    widget()->tqrepaint(false);
+}
+
+  void
+OpenLook::doLayout()
+{
+  TQVBoxLayout * tqlayout = new TQVBoxLayout(widget(), openLookMargin);
+
+  titleSpacer_ =
+    new TQSpacerItem
+    (
+     0,
+     titleHeight,
+     TQSizePolicy::Expanding,
+     TQSizePolicy::Fixed
+    );
+
+  tqlayout->addItem(titleSpacer_);
+
+  tqlayout->addSpacing(2);
+
+  TQBoxLayout * midLayout = 
+    new TQBoxLayout(tqlayout, TQBoxLayout::LeftToRight, 0, 0);
+ 
+  if (isPreview()) {
+    midLayout->addWidget(new TQLabel(
+          i18n("<center><b>OpenLook preview</b></center>"), 
+          widget()), 
+        1);
+  } else {
+    midLayout->addItem( new TQSpacerItem( 0, 0 ));
+  }
+      
+}
+
+  bool
+OpenLook::animateMinimize(bool /*iconify*/)
+{
+#if 0
+  TQRect icongeom(iconGeometry());
+
+  if (!icongeom.isValid())
+    return false;
+
+  TQRect wingeom(tqgeometry());
+
+  TQPainter p(workspaceWidget());
+
+  p.setRasterOp(TQt::NotROP);
+
+#if 0
+  if (iconify)
+    p.setClipRegion(
+      TQRegion(workspace()->desktopWidget()->rect()) - wingeom
+      );
+#endif
+
+  for (uint count = 0; count < 4; count++)
+  {
+    grabXServer();
+
+    p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
+    p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
+    p.drawLine(wingeom.topLeft(), icongeom.topLeft());
+    p.drawLine(wingeom.topRight(), icongeom.topRight());
+
+    p.flush();
+
+    kapp->syncX();
+
+    usleep(10000);
+
+    p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
+    p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
+    p.drawLine(wingeom.topLeft(), icongeom.topLeft());
+    p.drawLine(wingeom.topRight(), icongeom.topRight());
+
+    p.flush();
+
+    kapp->syncX();
+
+    usleep(10000);
+
+    ungrabXServer();
+  }
+#endif
+  return true;
+}
+
+  TQRect
+OpenLook::topLeftRect() const
+{
+  return TQRect
+    (
+     0,
+     0,
+     openLookCornerSize,
+     openLookCornerSize
+    );
+}
+
+  TQRect
+OpenLook::topRightRect() const
+{
+  return TQRect
+    (
+     width() - openLookCornerSize,
+     0,
+     openLookCornerSize,
+     openLookCornerSize
+    );
+}
+
+  TQRect
+OpenLook::bottomLeftRect() const
+{
+  return TQRect
+    (
+     0,
+     height() - openLookCornerSize,
+     openLookCornerSize,
+     openLookCornerSize
+    );
+}
+
+  TQRect
+OpenLook::bottomRightRect() const
+{
+  return TQRect
+    (
+     width() - openLookCornerSize,
+     height() - openLookCornerSize,
+     openLookCornerSize,
+     openLookCornerSize
+    );
+}
+
+  void
+OpenLook::paintTopLeftRect(TQPainter & p) const
+{
+  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
+
+  TQRect r(topLeftRect());
+
+  int x1(r.left());
+  int y1(r.top());
+  int x2(r.right());
+  int y2(r.bottom());
+
+  p.setPen(widget()->tqcolorGroup().light());
+
+  p.drawLine(x1, y1, x2, y1);
+  p.drawLine(x1, y1 + 1, x1, y2);
+
+  p.fillRect(x1 + 1, y1 + 1, r.width()-2, openLookMargin-2,  handleColour);
+  p.fillRect(x1 + 1, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
+
+  p.setPen(widget()->tqcolorGroup().dark());
+
+  p.drawLine(x2, y1 + 1, x2, y1 + openLookMargin-1);
+
+  p.drawLine(x1 + openLookMargin-1, y1 + openLookMargin-1, x2 - 1, y1 + openLookMargin-1);
+
+  p.drawLine(x1 + openLookMargin-1, y1 + openLookMargin, x1 + openLookMargin-1, y2 - 1);
+
+  p.drawLine(x1 + 1, y2, x1 + openLookMargin-1, y2);
+}
+
+  void
+OpenLook::paintTopRightRect(TQPainter & p) const
+{
+  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
+
+  TQRect r(topRightRect());
+
+  int x1(r.left());
+  int y1(r.top());
+  int x2(r.right());
+  int y2(r.bottom());
+
+  p.setPen(widget()->tqcolorGroup().light());
+
+  p.drawLine(x1, y1, x2, y1);
+  p.drawLine(x1, y1 + 1, x1, y1 + openLookMargin-1);
+  p.drawLine(x2 - openLookMargin+1, y1 + openLookMargin, x2 - openLookMargin+1, y2);
+
+  p.fillRect(x1 + 1, y1 + 1, r.width()-2, openLookMargin-2, handleColour);
+  p.fillRect(x2 - openLookMargin + 2, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
+
+  p.setPen(widget()->tqcolorGroup().dark());
+
+  p.drawLine(x1 + 1, y1 + openLookMargin-1, x2 - openLookMargin+1, y1 + openLookMargin-1);
+  p.drawLine(x2, y1 + 1, x2, y2);
+  p.drawLine(x2 - openLookMargin+1, y2, x2 - 1, y2);
+}
+
+  void
+OpenLook::paintBottomLeftRect(TQPainter & p) const
+{
+  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
+
+  TQRect r(bottomLeftRect());
+
+  int x1(r.left());
+  int y1(r.top());
+  int x2(r.right());
+  int y2(r.bottom());
+
+  p.setPen(widget()->tqcolorGroup().light());
+
+  p.drawLine(x1, y1, x1 + openLookMargin-1, y1);
+  p.drawLine(x1, y1 + 1, x1, y2);
+  p.drawLine(x1 + openLookMargin, y2 - openLookMargin+1, x2, y2 - openLookMargin+1);
+
+  p.fillRect(x1 + 1, y2 - openLookMargin + 2, r.width()-2, openLookMargin-2, handleColour);
+  p.fillRect(x1 + 1, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
+
+  p.setPen(widget()->tqcolorGroup().dark());
+
+  p.drawLine(x1 + openLookMargin-1, y1 + 1, x1 + openLookMargin-1, y2 - openLookMargin);
+  p.drawLine(x1 + 1, y2, x2, y2);
+  p.drawLine(x2, y2 - openLookMargin+2, x2, y2 - 1);
+}
+
+  void
+OpenLook::paintBottomRightRect(TQPainter & p) const
+{
+  TQColor handleColour(options()->color(KDecoration::ColorHandle, isActive()));
+
+  TQRect r(bottomRightRect());
+
+  int x1(r.left());
+  int y1(r.top());
+  int x2(r.right());
+  int y2(r.bottom());
+
+  p.setPen(widget()->tqcolorGroup().light());
+
+  p.drawLine(x1, y2 - openLookMargin+1, x1, y2);
+  p.drawLine(x1 + 1, y2 - openLookMargin+1, x2 - openLookMargin+1, y2 - openLookMargin+1);
+  p.drawLine(x2 - openLookMargin+1, y1 + 1, x2 - openLookMargin+1, y2 - openLookMargin);
+  p.drawLine(x2 - openLookMargin+1, y1, x2, y1);
+
+  p.fillRect(x1 + 1, y2 - openLookMargin + 2, r.width()-2, openLookMargin-2,  handleColour);
+  p.fillRect(x2 - openLookMargin + 2, y1 + 1, openLookMargin-2, r.height()-2, handleColour);
+
+  p.setPen(widget()->tqcolorGroup().dark());
+
+  p.drawLine(x1 + 1, y2, x2, y2);
+  p.drawLine(x2, y1 + 1, x2, y2 - 1);
+}
+
+  TQRect
+OpenLook::buttonRect() const
+{
+  return TQRect
+    (
+      openLookCornerSize + 3,
+      titleRect().top(),
+      titleRect().height(),
+      titleRect().height()
+    );
+}
+
+  void
+OpenLook::paintButton(TQPainter & p) const
+{
+  TQRect r(buttonRect());
+
+  p.fillRect
+    (
+     r.left() + 1,
+     r.top() + 1,
+     r.width() - 2,
+     r.height() - 2,
+     buttonDown_
+     ? widget()->tqcolorGroup().dark()
+     : options()->color(KDecoration::ColorButtonBg, isActive())
+    );
+
+  p.setPen(buttonDown_ ? widget()->tqcolorGroup().dark() : widget()->tqcolorGroup().light());
+
+  p.drawLine(r.left() + 1, r.top(), r.right() - 1, r.top());
+  p.drawLine(r.left(), r.top() + 1, r.left(), r.bottom() - 1);
+
+  p.setPen(buttonDown_ ? widget()->tqcolorGroup().light() : widget()->tqcolorGroup().dark());
+
+  p.drawLine(r.right(), r.top() + 1, r.right(), r.bottom() - 1);
+  p.drawLine(r.left() + 1, r.bottom(), r.right() - 1, r.bottom());
+
+  paintArrow(p);
+}
+
+  void
+OpenLook::paintArrow(TQPainter & p) const
+{
+  TQRect br(buttonRect());
+
+  int x = br.left()   + 5;
+  int y = br.top()    + 5;
+  int w = br.width()  - 10;
+  int h = br.height() - 10;
+
+  TQPointArray poly(3);
+
+  p.setBrush(widget()->tqcolorGroup().mid());
+
+  poly.setPoint(0, x, y);
+  poly.setPoint(1, x + w - 1, y);
+  poly.setPoint(2, x + (w / 2), y + h - 1);
+
+  p.drawPolygon(poly);
+
+  p.setPen(widget()->tqcolorGroup().dark());
+
+  p.drawLine(x, y, x + w - 1, y);
+
+  p.drawLine(x, y, x + (w / 2), y + h - 1);
+
+  p.setPen(widget()->tqcolorGroup().light());
+
+  p.drawLine(x + (w / 2), y + h - 1, x + w - 1, y);
+}
+
+  void
+OpenLook::paintBorder(TQPainter & p) const
+{
+  const uint cs(openLookCornerSize);
+
+  uint x = widget()->rect().left();
+  uint y = widget()->rect().top();
+  uint w = widget()->rect().width();
+  uint h = widget()->rect().height();
+  uint r = widget()->rect().right();
+  uint b = widget()->rect().bottom();
+
+  p.fillRect(x + cs, y, w - cs - cs, 2,     widget()->tqcolorGroup().shadow());
+  p.fillRect(x + cs, b - 1, w - cs - cs, 2, widget()->tqcolorGroup().shadow());
+  p.fillRect(x, y + cs, 2, h - cs - cs,     widget()->tqcolorGroup().shadow());
+  p.fillRect(r - 1, y + cs, 2, h - cs - cs, widget()->tqcolorGroup().shadow());
+
+  TQColor frameColour(options()->color(KDecoration::ColorFrame, isActive()));
+
+  p.fillRect(x + cs, y + 2, w - cs - cs, openLookMargin-2, frameColour);
+  p.fillRect(x + cs, b - openLookMargin + 1, w - cs - cs, openLookMargin-2, frameColour);
+  p.fillRect(x + 2, y + cs, openLookMargin-2, h - cs - cs, frameColour);
+  p.fillRect(r - openLookMargin + 1, y + cs, openLookMargin-2, h - cs - cs, frameColour);
+
+  p.fillRect
+    (
+     openLookMargin,
+     titleRect().bottom() + 1,
+     width() - 2 * openLookMargin,
+     2,
+     widget()->tqcolorGroup().background()
+    );
+}
+
+  TQRect
+OpenLook::titleRect() const
+{
+  return titleSpacer_->tqgeometry();
+}
+
+  bool
+OpenLook::isButtonPress(TQMouseEvent * e)
+{
+  mousePressPoint_ = e->pos();
+
+  buttonDown_ = buttonRect().contains(mousePressPoint_);
+
+  widget()->tqrepaint(buttonRect());
+  return buttonDown_;
+}
+
+  bool
+OpenLook::isButtonRelease(TQMouseEvent * e)
+{
+  if (buttonDown_ && buttonRect().contains(e->pos()))
+  {
+    minimize();
+    return true;
+  }
+  buttonDown_ = false;
+  widget()->tqrepaint(buttonRect());
+
+  return false;
+}
+
+}
+
+#include "OpenLook.moc"
+// vim:ts=2:sw=2:tw=78:set et:
diff --git a/twin-styles/openlook/OpenLook.h b/twin-styles/openlook/OpenLook.h
new file mode 100644
index 00000000..98db37af
--- /dev/null
+++ b/twin-styles/openlook/OpenLook.h
@@ -0,0 +1,116 @@
+/*
+  'OpenLook' twin client
+
+  Porting to trinity.2 API 
+    Copyright 2003 Luciano Montanaro <mikelima@cirulla.net>
+  
+  Permission is hereby granted, free of charge, to any person obtaining a copy
+  of this software and associated documentation files (the "Software"), to
+  deal in the Software without restriction, including without limitation the
+  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+  sell copies of the Software, and to permit persons to whom the Software is
+  furnished to do so, subject to the following conditions:
+ 
+  The above copyright notice and this permission notice shall be included in
+  all copies or substantial portions of the Software.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+  AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef KWIN_WEB_H
+#define KWIN_WEB_H
+
+#include <tqptrlist.h>
+#include <tqbutton.h>
+
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQSpacerItem;
+
+namespace OpenLook
+{
+  class OpenLookButton;
+
+  class OpenLook : public KDecoration
+  {
+    Q_OBJECT
+  TQ_OBJECT
+    public:
+
+      OpenLook(KDecorationBridge *b, KDecorationFactory *f);
+      ~OpenLook();
+      void init();
+
+    protected:
+      bool eventFilter(TQObject *o, TQEvent *e);
+      void resizeEvent(TQResizeEvent *e);
+      void paintEvent(TQPaintEvent *e);
+      void showEvent(TQShowEvent *e);
+
+      virtual void captionChange();
+      void desktopChange();
+      void activeChange();
+      void shadeChange();
+      void iconChange();
+      void maximizeChange();
+      void borders(int &left, int &right, int &top, int &bottom) const;
+      TQSize tqminimumSize() const;
+      void resize( const TQSize& );
+      virtual void mouseDoubleClickEvent(TQMouseEvent *);
+      virtual void wheelEvent(TQWheelEvent *e);
+
+      virtual Position mousePosition(const TQPoint &) const;
+      virtual bool animateMinimize(bool);
+
+    private:
+
+      void doLayout();
+
+      TQRect titleRect() const;
+
+      TQRect topLeftRect() const;
+      TQRect topRightRect() const;
+      TQRect bottomLeftRect() const;
+      TQRect bottomRightRect() const;
+
+      TQRect buttonRect() const;
+
+      void paintBorder(TQPainter &) const;
+
+      void paintTopLeftRect(TQPainter &) const;
+      void paintTopRightRect(TQPainter &) const;
+      void paintBottomLeftRect(TQPainter &) const;
+      void paintBottomRightRect(TQPainter &) const;
+
+      void paintButton(TQPainter &) const;
+      void paintArrow(TQPainter &) const;
+
+      bool isButtonPress(TQMouseEvent *);
+      bool isButtonRelease(TQMouseEvent *);
+
+      TQSpacerItem   * titleSpacer_;
+      TQPoint          mousePressPoint_;
+      bool            tool_;
+      bool            buttonDown_;
+  };
+  
+  class DecorationFactory: public TQObject, public KDecorationFactory
+  {
+  public:
+    DecorationFactory();
+    virtual ~DecorationFactory();
+    virtual KDecoration *createDecoration(KDecorationBridge *);
+    virtual bool reset(unsigned long changed);
+    virtual bool supports( Ability ability );
+    TQValueList< DecorationFactory::BorderSize > borderSizes() const;
+  };
+}
+
+#endif
+// vim:ts=2:sw=2:tw=78:set et:
diff --git a/twin-styles/openlook/openlook.desktop b/twin-styles/openlook/openlook.desktop
new file mode 100644
index 00000000..0ed25dcb
--- /dev/null
+++ b/twin-styles/openlook/openlook.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Name=OpenLook
+Name[af]=Openlook
+Name[cy]=GolwgAgored
+Name[fa]=نگاه‌باز
+Name[hi]=ओपन-लुक
+Name[lt]=Open išvaizda
+Name[lv]=AtvērtsSkats
+Name[ne]=ओपन लूक
+Name[ta]=திறந்தபார்வை
+Name[ven]=Vula wo sedza
+Name[vi]=Hình thức mở
+Name[zu]=Vula Ubone
+X-KDE-Library=twin3_openlook
diff --git a/twin-styles/riscos/AboveButton.cpp b/twin-styles/riscos/AboveButton.cpp
new file mode 100644
index 00000000..7b66e3ba
--- /dev/null
+++ b/twin-styles/riscos/AboveButton.cpp
@@ -0,0 +1,65 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2004
+    Carsten Clever <clushkou@gmx.net>
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  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 "AboveButton.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const above_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ",
+" .....      ",
+".+++++.     ",
+".+++++.     ",
+".+++++..... ",
+".+++++.++++.",
+".+++++.++++.",
+" .....+++++.",
+"     .+++++.",
+"     .+++++.",
+"      ..... ",
+"            "};
+
+AboveButton::AboveButton(TQWidget *parent)
+   : Button(parent, i18n("Keep above others"))
+{
+   setPixmap(TQPixmap((const char **)above_xpm));
+}
+
+void AboveButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(above());
+}
+
+} // End namespace
+
+#include "AboveButton.moc"
diff --git a/twin-styles/riscos/AboveButton.h b/twin-styles/riscos/AboveButton.h
new file mode 100644
index 00000000..86fbb0a7
--- /dev/null
+++ b/twin-styles/riscos/AboveButton.h
@@ -0,0 +1,51 @@
+/*
+  RISC OS KWin client
+
+  Copyright 2004
+   Carsten Clever <clushkou@gmx.net>
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU General Public
+  License as published by the Free Software Foundation; either
+  version 2 of the License, or (at your option) any later version.
+
+  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 RISC_OS_ABOVE_BUTTON_H
+#define RISC_OS_ABOVE_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class AboveButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      AboveButton(TQWidget *parent);
+
+   signals:
+
+      void above();
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent*);
+};
+
+} // End namespace
+
+#endif
diff --git a/twin-styles/riscos/Button.cpp b/twin-styles/riscos/Button.cpp
new file mode 100644
index 00000000..7bf4f477
--- /dev/null
+++ b/twin-styles/riscos/Button.cpp
@@ -0,0 +1,153 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 <tqtooltip.h>
+#include "Button.h"
+#include "Static.h"
+
+namespace RiscOS
+{
+
+Button::Button(TQWidget *parent, const TQString& tip,
+               const ButtonState realizeButtons)
+  : TQWidget(parent, "Button", 0),
+    realizeButtons_(realizeButtons),
+    lastButton_(Qt::NoButton),
+    alignment_(Left),
+    down_     (false),
+    active_   (false)
+{
+   TQToolTip::add(this, tip);
+   setBackgroundColor(TQt::black);
+
+   setFixedSize(Static::instance()->titleHeight() - 1,
+                Static::instance()->titleHeight());
+}
+
+Button::~Button()
+{
+  // Empty.
+}
+
+void Button::tqsetAlignment(Alignment a)
+{
+   alignment_ = a;
+   tqrepaint();
+}
+
+void Button::setActive(bool b)
+{
+   active_ = b;
+   tqrepaint();
+}
+
+Button::Alignment Button::tqalignment() const
+{
+   return alignment_;
+}
+
+void Button::mousePressEvent(TQMouseEvent *e)
+{
+   down_ = true;
+   lastButton_ = e->button();
+   tqrepaint();
+
+   TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
+                  (e->button()&realizeButtons_) ? Qt::LeftButton : Qt::NoButton,
+                  e->state());
+   TQWidget::mousePressEvent(&me);
+}
+
+void Button::mouseReleaseEvent(TQMouseEvent *e)
+{
+   down_ = false;
+   lastButton_ = e->button();
+   tqrepaint();
+   TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
+                  (e->button()&realizeButtons_) ? Qt::LeftButton : Qt::NoButton,
+                  e->state());
+   TQWidget::mouseReleaseEvent(&me);
+}
+
+void Button::setPixmap(const TQPixmap &p)
+{
+   if (TQPixmap::defaultDepth() <= 8)
+      aPixmap_ = iPixmap_ = p;
+   else
+   {
+      TQRgb light;
+      TQRgb* data = NULL;
+      TQRgb w = tqRgb(255, 255, 255);
+
+      TQImage aTx(p.convertToImage());
+      TQImage iTx(aTx.copy());
+
+      const KDecorationOptions* options = KDecoration::options();
+      light = options->color(KDecoration::ColorButtonBg, true).light(150).rgb();
+
+      if (light == tqRgb(0, 0, 0))
+         light = tqRgb(228, 228, 228);
+
+      data = (TQRgb *)aTx.bits();
+
+      for (int x = 0; x < 144; x++)
+         if (data[x] == w)
+            data[x] = light;
+
+      light = options->color(KDecoration::ColorButtonBg, false).light(150).rgb();
+
+      if (light == tqRgb(0, 0, 0))
+         light = tqRgb(228, 228, 228);
+
+      data = (TQRgb *)iTx.bits();
+
+      for (int x = 0; x < 144; x++)
+         if (data[x] == w)
+            data[x] = light;
+
+      aPixmap_.convertFromImage(aTx);
+      iPixmap_.convertFromImage(iTx);
+
+      if (0 != p.mask())
+      {
+         aPixmap_.setMask(*p.mask());
+         iPixmap_.setMask(*p.mask());
+      }
+   }
+   tqrepaint();
+}
+
+void Button::paintEvent(TQPaintEvent *)
+{
+   bitBlt(this, alignment_ == Left ? 1 : 0, 0,
+          &Static::instance()->buttonBase(active_, down_));
+
+   int i = width() / 2 - 6;
+
+   bitBlt(this, alignment_ == Left ? i + 1 : i,
+          i + 1, active_ ? &aPixmap_ : &iPixmap_);
+}
+
+} // End namespace
+
+// vim:ts=2:sw=2:tw=78
+#include "Button.moc"
diff --git a/twin-styles/riscos/Button.h b/twin-styles/riscos/Button.h
new file mode 100644
index 00000000..0c7c66c5
--- /dev/null
+++ b/twin-styles/riscos/Button.h
@@ -0,0 +1,82 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_BUTTON_H
+#define RISC_OS_BUTTON_H
+
+#include <tqpixmap.h>
+#include <tqwidget.h>
+#include <klocale.h>
+#include <kdecoration.h>
+
+namespace RiscOS
+{
+
+class Button : public TQWidget
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      enum Type { Lower, Close, Iconify, Maximise, Sticky, Help };
+
+      enum Alignment { Left, Right };
+
+      Button(TQWidget *parent, const TQString &tip,
+             const ButtonState realizeButton = Qt::LeftButton);
+      virtual ~Button();
+
+      void tqsetAlignment(Alignment);
+
+      Alignment tqalignment() const;
+
+   protected slots:
+
+      void setActive(bool);
+
+   protected:
+
+      void paintEvent(TQPaintEvent *);
+
+      void mousePressEvent(TQMouseEvent *);
+      void mouseReleaseEvent(TQMouseEvent *);
+      void mouseMoveEvent(TQMouseEvent *) { /* Empty. */ }
+
+      void setPixmap(const TQPixmap &);
+
+      ButtonState realizeButtons_;
+      ButtonState lastButton_;
+
+   private:
+
+      Alignment   alignment_;
+      bool        down_;
+      bool        active_;
+      TQPixmap     aPixmap_, iPixmap_;
+};
+
+} // End namespace
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/CMakeLists.txt b/twin-styles/riscos/CMakeLists.txt
new file mode 100644
index 00000000..5b0e6d54
--- /dev/null
+++ b/twin-styles/riscos/CMakeLists.txt
@@ -0,0 +1,52 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_definitions(
+  -DQT_PLUGIN
+)
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${CMAKE_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES riscos.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_riscos ###############################
+
+
+set( target twin3_riscos )
+
+set( ${target}_SRCS
+  AboveButton.cpp Button.cpp
+  CloseButton.cpp
+  HelpButton.cpp
+  IconifyButton.cpp
+  LowerButton.cpp
+  Manager.cpp
+  MaximiseButton.cpp
+  Static.cpp
+  StickyButton.cpp
+)
+
+tde_add_kpart( ${target} AUTOMOC
+  SOURCES ${${target}_SRCS}
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/riscos/CloseButton.cpp b/twin-styles/riscos/CloseButton.cpp
new file mode 100644
index 00000000..1a4c06b5
--- /dev/null
+++ b/twin-styles/riscos/CloseButton.cpp
@@ -0,0 +1,66 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "CloseButton.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const close_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"  .      .  ",
+" .+.    .+. ",
+".+++.  .+++.",
+" .+++..+++. ",
+"  .++++++.  ",
+"   .++++.   ",
+"   .++++.   ",
+"  .++++++.  ",
+" .+++..+++. ",
+".+++.  .+++.",
+" .+.    .+. ",
+"  .      .  "};
+
+CloseButton::CloseButton(TQWidget *parent)
+  : Button(parent, i18n("Close"))
+{
+   setPixmap(TQPixmap((const char **)close_xpm));
+}
+
+void CloseButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(closeWindow());
+}
+
+} // End namespace;
+
+// vim:ts=2:sw=2:tw=78
+#include "CloseButton.moc"
diff --git a/twin-styles/riscos/CloseButton.h b/twin-styles/riscos/CloseButton.h
new file mode 100644
index 00000000..615ea2ed
--- /dev/null
+++ b/twin-styles/riscos/CloseButton.h
@@ -0,0 +1,53 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_CLOSE_BUTTON_H
+#define RISC_OS_CLOSE_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class CloseButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      CloseButton(TQWidget *parent);
+
+   signals:
+
+      void closeWindow();
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+};
+
+} // End namespace;
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/HelpButton.cpp b/twin-styles/riscos/HelpButton.cpp
new file mode 100644
index 00000000..936738eb
--- /dev/null
+++ b/twin-styles/riscos/HelpButton.cpp
@@ -0,0 +1,66 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "HelpButton.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const help_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+" .  ++++  . ",
+"  .+....+.  ",
+"  +......+  ",
+"..+......+..",
+"  +......+  ",
+"  +......+  ",
+"  .+....+.  ",
+" .  ++ +  . ",
+"    + ++    ",
+"    ++ +    ",
+"    + ++    ",
+"     ++     "};
+
+HelpButton::HelpButton(TQWidget *parent)
+  : Button(parent, i18n("Help"))
+{
+   setPixmap(TQPixmap((const char **)help_xpm));
+}
+
+void HelpButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(help());
+}
+
+} // End namespace;
+
+// vim:ts=2:sw=2:tw=78
+#include "HelpButton.moc"
diff --git a/twin-styles/riscos/HelpButton.h b/twin-styles/riscos/HelpButton.h
new file mode 100644
index 00000000..d57b91ce
--- /dev/null
+++ b/twin-styles/riscos/HelpButton.h
@@ -0,0 +1,53 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_HELP_BUTTON_H
+#define RISC_OS_HELP_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class HelpButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      HelpButton(TQWidget *parent);
+
+   signals:
+
+      void help();
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+};
+
+} // End namespace;
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/IconifyButton.cpp b/twin-styles/riscos/IconifyButton.cpp
new file mode 100644
index 00000000..b5eef9e5
--- /dev/null
+++ b/twin-styles/riscos/IconifyButton.cpp
@@ -0,0 +1,66 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "IconifyButton.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const iconify_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ",
+"            ",
+"            ",
+"            ",
+" .......... ",
+".++++++++++.",
+".++++++++++.",
+" .......... ",
+"            ",
+"            ",
+"            ",
+"            "};
+
+IconifyButton::IconifyButton(TQWidget *parent)
+  : Button(parent, i18n("Minimize"))
+{
+   setPixmap(TQPixmap((const char **)iconify_xpm));
+}
+
+void IconifyButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(iconify());
+}
+
+} // End namespace;
+
+// vim:ts=2:sw=2:tw=78
+#include "IconifyButton.moc"
diff --git a/twin-styles/riscos/IconifyButton.h b/twin-styles/riscos/IconifyButton.h
new file mode 100644
index 00000000..54e44aba
--- /dev/null
+++ b/twin-styles/riscos/IconifyButton.h
@@ -0,0 +1,53 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_ICONIFY_BUTTON_H
+#define RISC_OS_ICONIFY_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class IconifyButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      IconifyButton(TQWidget *parent);
+
+   signals:
+
+      void iconify();
+  
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+};
+
+} // End namespace;
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/LowerButton.cpp b/twin-styles/riscos/LowerButton.cpp
new file mode 100644
index 00000000..7f03e41f
--- /dev/null
+++ b/twin-styles/riscos/LowerButton.cpp
@@ -0,0 +1,66 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "LowerButton.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const lower_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ",
+" .....      ",
+".+++++.     ",
+".+++++.     ",
+".+++++..... ",
+".++++.+++++.",
+".++++.+++++.",
+" .....+++++.",
+"     .+++++.",
+"     .+++++.",
+"      ..... ",
+"            "};
+
+LowerButton::LowerButton(TQWidget *parent)
+  : Button(parent, i18n("Keep below others"))
+{
+   setPixmap(TQPixmap((const char **)lower_xpm));
+}
+
+void LowerButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(lower());
+}
+
+} // End namespace;
+
+// vim:ts=2:sw=2:tw=78
+#include "LowerButton.moc"
diff --git a/twin-styles/riscos/LowerButton.h b/twin-styles/riscos/LowerButton.h
new file mode 100644
index 00000000..8616d688
--- /dev/null
+++ b/twin-styles/riscos/LowerButton.h
@@ -0,0 +1,53 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_LOWER_BUTTON_H
+#define RISC_OS_LOWER_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class LowerButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      LowerButton(TQWidget *parent);
+
+   signals:
+
+      void lower();
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+};
+
+} // End namespace;
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/Makefile.am b/twin-styles/riscos/Makefile.am
new file mode 100644
index 00000000..773c341b
--- /dev/null
+++ b/twin-styles/riscos/Makefile.am
@@ -0,0 +1,39 @@
+AUTOMAKE_OPTIONS = foreign
+
+KDE_CXXFLAGS = -DQT_PLUGIN
+
+INCLUDES = $(all_includes) 
+
+twindir = $(kde_datadir)/twin/
+twin_DATA = riscos.desktop
+
+noinst_HEADERS = AboveButton.h \
+                 Button.h \
+                 CloseButton.h \
+                 HelpButton.h \
+                 IconifyButton.h \
+                 LowerButton.h \
+                 Manager.h \
+                 MaximiseButton.h \
+                 Palette.h \
+                 Static.h \
+                 StickyButton.h
+
+kde_module_LTLIBRARIES = twin3_riscos.la
+twin3_riscos_la_SOURCES = AboveButton.cpp \
+                          Button.cpp \
+                          CloseButton.cpp \
+                          HelpButton.cpp \
+                          IconifyButton.cpp \
+                          LowerButton.cpp \
+                          Manager.cpp \
+                          MaximiseButton.cpp \
+                          Static.cpp \
+                          StickyButton.cpp
+
+twin3_riscos_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_riscos_la_LIBADD = $(LIB_TDEUI) -ltdecorations
+twin3_riscos_la_METASOURCES = AUTO
+
+EXTRA_DIST = $(twin_DATA)
+
diff --git a/twin-styles/riscos/Manager.cpp b/twin-styles/riscos/Manager.cpp
new file mode 100644
index 00000000..837bec9c
--- /dev/null
+++ b/twin-styles/riscos/Manager.cpp
@@ -0,0 +1,767 @@
+/*
+  RISC OS KWin client
+
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 <unistd.h> // for usleep
+#include <config.h> // for usleep on non-linux platforms
+#include <math.h> // for sin and cos
+
+#include <tqapplication.h>
+#include <tqimage.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqpainter.h>
+
+#include <netwm.h>
+
+#include "Manager.h"
+#include "Static.h"
+#include "AboveButton.h"
+#include "CloseButton.h"
+#include "HelpButton.h"
+#include "IconifyButton.h"
+#include "LowerButton.h"
+#include "MaximiseButton.h"
+#include "StickyButton.h"
+
+extern "C"
+{
+   KDE_EXPORT KDecorationFactory* create_factory()
+   {
+      return new RiscOS::Factory();
+   }
+}
+
+
+namespace RiscOS
+{
+
+Manager::Manager(KDecorationBridge *bridge,
+                 KDecorationFactory *factory)
+  : KDecoration(bridge, factory),
+    topLayout_    (NULL),
+    titleLayout_  (NULL),
+    titleSpacer_  (NULL)
+{
+}
+
+Manager::~Manager()
+{
+}
+
+void Manager::init()
+{
+   createMainWidget(WNoAutoErase);
+
+   widget()->installEventFilter(this);
+   widget()->setBackgroundMode(NoBackground);
+
+   leftButtonList_.setAutoDelete(true);
+   rightButtonList_.setAutoDelete(true);
+
+   resetLayout();
+}
+
+bool Manager::eventFilter(TQObject *o, TQEvent *e)
+{
+   if (TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget())) return false;
+   switch (e->type())
+   {
+      case TQEvent::Resize:
+         resizeEvent(TQT_TQRESIZEEVENT(e));
+         return true;
+      case TQEvent::Paint:
+         paintEvent(TQT_TQPAINTEVENT(e));
+         return true;
+      case TQEvent::MouseButtonDblClick:
+         mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
+         return true;
+      case TQEvent::MouseButtonPress:
+         processMousePressEvent(TQT_TQMOUSEEVENT(e));
+         return true;
+      case TQEvent::Wheel:
+         wheelEvent( TQT_TQWHEELEVENT( e ));
+         return true;
+      case TQEvent::MouseButtonRelease:
+         return false;
+      case TQEvent::Show:
+         return false;
+      case TQEvent::MouseMove:
+         return false;
+      case TQEvent::Enter:
+         return false;
+      case TQEvent::Leave:
+         return false;
+      case TQEvent::Move:
+         return false;
+      default:
+         return false;
+   }
+}
+
+void Manager::reset(unsigned long /*changed*/)
+{
+   resetLayout();
+}
+
+void Manager::borders(int &left, int &right, int &top, int &bottom) const
+{
+   left = right = 1;
+   top = Static::instance()->titleHeight();
+   bottom = isResizable() ? Static::instance()->resizeHeight() : 1;
+}
+
+void Manager::resize(const TQSize &s)
+{
+   widget()->resize(s);
+}
+
+TQSize Manager::tqminimumSize() const
+{
+   return widget()->tqminimumSize();
+}
+
+void Manager::activeChange()
+{
+   updateTitleBuffer();
+   widget()->tqrepaint();
+   emit(activeChanged(isActive()));
+}
+
+void Manager::captionChange()
+{
+   updateTitleBuffer();
+   widget()->tqrepaint();
+}
+
+void Manager::iconChange()
+{
+}
+
+void Manager::maximizeChange()
+{
+   emit(maximizeChanged(maximizeMode() == MaximizeFull));
+}
+
+void Manager::desktopChange()
+{
+}
+
+void Manager::shadeChange()
+{
+}
+
+void Manager::paintEvent(TQPaintEvent *e)
+{
+   TQPainter p(widget());
+
+   TQRect r(e->rect());
+
+   bool intersectsLeft = r.intersects(TQRect(0, 0, 1, height()));
+
+   bool intersectsRight =
+      r.intersects(TQRect(width() - 1, 0, width(), height()));
+
+   if (intersectsLeft || intersectsRight)
+   {
+      p.setPen(TQt::black);
+
+      if (intersectsLeft)
+         p.drawLine(0, r.top(), 0, r.bottom());
+
+      if (intersectsRight)
+         p.drawLine(width() - 1, r.top(), width() - 1, r.bottom());
+   }
+
+   Static * s = Static::instance();
+
+   bool active = isActive();
+
+   // Title bar.
+
+   TQRect tr = titleSpacer_->tqgeometry();
+   bitBlt(widget(), tr.topLeft(), &titleBuf_);
+
+   // Resize bar.
+
+   if (isResizable())
+   {
+      int rbt = height() - Static::instance()->resizeHeight(); // Resize bar top
+
+      bitBlt(widget(), 0, rbt, &(s->resize(active)));
+      bitBlt(widget(), 30, rbt, &(s->resizeMidLeft(active)));
+
+      p.drawTiledPixmap(32, rbt, width() - 34,
+                        Static::instance()->resizeHeight(),
+                        s->resizeMidMid(active));
+
+      bitBlt(widget(), width() - 32, rbt, &(s->resizeMidRight(active)));
+      bitBlt(widget(), width() - 30, rbt, &(s->resize(active)));
+   }
+   else
+      p.drawLine(1, height() - 1, width() - 2, height() - 1);
+}
+
+void Manager::resizeEvent(TQResizeEvent*)
+{
+   updateButtonVisibility();
+   updateTitleBuffer();
+   widget()->tqrepaint();
+}
+
+void Manager::updateButtonVisibility()
+{
+#if 0
+   enum SizeProblem = { None, Small, Medium, Big };
+   SizeProblem sizeProblem = None;
+
+   if (width() < 80) sizeProblem = Big;
+   else if (width() < 100) sizeProblem = Medium;
+   else if (width() < 180) sizeProblem = Small;
+
+   switch (sizeProblem) {
+
+      case Small:
+         above_    ->hide();
+         lower_    ->hide();
+         sticky_   ->hide();
+         help_     ->hide();
+         iconify_  ->show();
+         maximise_ ->hide();
+         close_    ->show();
+         break;
+
+      case Medium:
+         above_    ->hide();
+         lower_    ->hide();
+         sticky_   ->hide();
+         help_     ->hide();
+         iconify_  ->hide();
+         maximise_ ->hide();
+         close_    ->show();
+         break;
+
+      case Big:
+         above_    ->hide();
+         lower_    ->hide();
+         sticky_   ->hide();
+         help_     ->hide();
+         iconify_  ->hide();
+         maximise_ ->hide();
+         close_    ->hide();
+         break;
+
+      case None:
+      default:
+         above_    ->show();
+         lower_    ->show();
+         sticky_   ->show();
+         if (providesContextHelp())
+           help_->show();
+         iconify_  ->show();
+         maximise_ ->show();
+         close_    ->show();
+         break;
+   }
+
+   tqlayout()->activate();
+#endif
+}
+
+void Manager::updateTitleBuffer()
+{
+   bool active = isActive();
+
+   Static * s = Static::instance();
+
+   TQRect tr = titleSpacer_->tqgeometry();
+
+   if (tr.width() == 0 || tr.height() == 0)
+      titleBuf_.resize(8, 8);
+   else
+      titleBuf_.resize(tr.size());
+
+   TQPainter p(&titleBuf_);
+
+   p.drawPixmap(0, 0, s->titleTextLeft(active));
+
+   p.drawTiledPixmap(3, 0, tr.width() - 6, Static::instance()->titleHeight(),
+                     s->titleTextMid(active));
+
+   p.setPen(options()->color(KDecorationOptions::ColorFont, active));
+
+   p.setFont(options()->font(active));
+
+   p.drawText(4, 2, tr.width() - 8, Static::instance()->titleHeight() - 4,
+              AlignCenter, caption());
+
+   p.drawPixmap(tr.width() - 3, 0, s->titleTextRight(active));
+}
+
+KDecoration::Position Manager::mousePosition(const TQPoint& p) const
+{
+   Position m = PositionCenter;
+
+   // Look out for off-by-one errors here.
+
+   if (isResizable())
+   {
+      if (p.y() > (height() - (Static::instance()->resizeHeight() + 1)))
+      {
+        // Keep order !
+
+         if (p.x() >= (width() - 30))
+            m = PositionBottomRight;
+         else if (p.x() <= 30)
+            m = PositionBottomLeft;
+         else
+            m = PositionBottom;
+      }
+      else
+      {
+         m = PositionCenter;
+         // Client::mousePosition(p);
+      }
+   }
+   else
+   {
+      m = PositionCenter;
+      // Client::mousePosition(p);
+   }
+
+   return m;
+}
+
+void Manager::mouseDoubleClickEvent(TQMouseEvent *e)
+{
+   if (e->button() == Qt::LeftButton && titleSpacer_->tqgeometry().contains(e->pos()))
+      titlebarDblClickOperation();
+}
+
+void Manager::wheelEvent(TQWheelEvent *e)
+{
+    if (isSetShade() || titleLayout_->tqgeometry().contains(e->pos()) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+void Manager::paletteChange(const TQPalette &)
+{
+   resetLayout();
+}
+
+void Manager::stickyChange(bool b)
+{
+   emit(stickyChanged(b));
+}
+
+void Manager::slotToggleSticky()
+{
+   toggleOnAllDesktops();
+   emit(stickyChanged(isOnAllDesktops()));
+}
+
+void Manager::slotAbove()
+{
+   setKeepAbove(!keepAbove());
+}
+
+void Manager::slotLower()
+{
+   setKeepBelow(!keepBelow());
+}
+
+void Manager::slotMaximizeClicked(ButtonState state)
+{
+#if KDE_IS_VERSION(3, 3, 0)
+   maximize(state);
+#else
+   switch (state)
+   {
+      case RightButton:
+         maximize(maximizeMode() ^ MaximizeHorizontal);
+         break;
+
+      case MidButton:
+         maximize(maximizeMode() ^ MaximizeVertical);
+         break;
+
+      case LeftButton:
+      default:
+         maximize(maximizeMode() == MaximizeFull ? MaximizeRestore
+                                                 : MaximizeFull);
+         break;
+   }
+#endif
+   emit(maximizeChanged(maximizeMode() == MaximizeFull));
+}
+
+bool Manager::animateMinimize(bool iconify)
+{
+   int style = Static::instance()->animationStyle();
+
+   switch (style)
+   {
+      case 1:
+      {
+         // Double twisting double back, with pike ;)
+
+         if (!iconify) // No animation for restore.
+            return true;
+
+         // Go away quick.
+         helperShowHide(false);
+         tqApp->syncX();
+
+         TQRect r = iconGeometry();
+
+         if (!r.isValid())
+            return true;
+
+         // Algorithm taken from Window Maker (http://www.windowmaker.org)
+
+         int sx = geometry().x();
+         int sy = geometry().y();
+         int sw = width();
+         int sh = height();
+         int dx = r.x();
+         int dy = r.y();
+         int dw = r.width();
+         int dh = r.height();
+
+         double steps = 12;
+
+         double xstep = double((dx-sx)/steps);
+         double ystep = double((dy-sy)/steps);
+         double wstep = double((dw-sw)/steps);
+         double hstep = double((dh-sh)/steps);
+
+         double cx = sx;
+         double cy = sy;
+         double cw = sw;
+         double ch = sh;
+
+         double finalAngle = 3.14159265358979323846;
+
+         double delta  = finalAngle / steps;
+
+         TQPainter p(workspaceWidget());
+         p.setRasterOp(TQt::NotROP);
+
+         for (double angle = 0; ; angle += delta)
+         {
+            if (angle > finalAngle)
+               angle = finalAngle;
+
+            double dx = (cw / 10) - ((cw / 5) * sin(angle));
+            double dch = (ch / 2) * cos(angle);
+            double midy = cy + (ch / 2);
+
+            TQPoint p1(int(cx + dx), int(midy - dch));
+            TQPoint p2(int(cx + cw - dx), p1.y());
+            TQPoint p3(int(cx + dw + dx), int(midy + dch));
+            TQPoint p4(int(cx - dx), p3.y());
+
+            grabXServer();
+
+            p.drawLine(p1, p2);
+            p.drawLine(p2, p3);
+            p.drawLine(p3, p4);
+            p.drawLine(p4, p1);
+
+            p.flush();
+
+            usleep(500);
+
+            p.drawLine(p1, p2);
+            p.drawLine(p2, p3);
+            p.drawLine(p3, p4);
+            p.drawLine(p4, p1);
+
+            ungrabXServer();
+
+            cx += xstep;
+            cy += ystep;
+            cw += wstep;
+            ch += hstep;
+
+            if (angle >= finalAngle)
+               break;
+         }
+      }
+      break;
+
+      case 2:
+      {
+         // KVirc style ? Maybe. For qwertz.
+
+         if (!iconify) // No animation for restore.
+            return true;
+
+         // Go away quick.
+         helperShowHide(false);
+         tqApp->syncX();
+
+         int stepCount = 12;
+
+         TQRect r(geometry());
+
+         int dx = r.width() / (stepCount * 2);
+         int dy = r.height() / (stepCount * 2);
+
+         TQPainter p(workspaceWidget());
+         p.setRasterOp(TQt::NotROP);
+
+         for (int step = 0; step < stepCount; step++)
+         {
+            r.moveBy(dx, dy);
+            r.setWidth(r.width() - 2 * dx);
+            r.setHeight(r.height() - 2 * dy);
+
+            grabXServer();
+
+            p.drawRect(r);
+            p.flush();
+            usleep(200);
+            p.drawRect(r);
+
+            ungrabXServer();
+         }
+      }
+      break;
+
+
+      default:
+      {
+         TQRect icongeom = iconGeometry();
+
+         if (!icongeom.isValid())
+            return true;
+
+         TQRect wingeom = geometry();
+
+         TQPainter p(workspaceWidget());
+
+         p.setRasterOp(TQt::NotROP);
+#if 0
+         if (iconify)
+            p.setClipRegion(TQRegion(workspaceWidget()->rect()) - wingeom);
+#endif
+         grabXServer();
+
+         p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
+         p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
+         p.drawLine(wingeom.topLeft(), icongeom.topLeft());
+         p.drawLine(wingeom.topRight(), icongeom.topRight());
+
+         p.flush();
+
+         tqApp->syncX();
+
+         usleep(30000);
+
+         p.drawLine(wingeom.bottomRight(), icongeom.bottomRight());
+         p.drawLine(wingeom.bottomLeft(), icongeom.bottomLeft());
+         p.drawLine(wingeom.topLeft(), icongeom.topLeft());
+         p.drawLine(wingeom.topRight(), icongeom.topRight());
+
+         ungrabXServer();
+      }
+      break;
+   }
+   return true;
+}
+
+void Manager::createTitle()
+{
+   leftButtonList_.clear();
+   rightButtonList_.clear();
+
+   TQString buttons;
+
+   if (options()->customButtonPositions())
+      buttons = options()->titleButtonsLeft() + "|" +
+                options()->titleButtonsRight();
+   else
+      buttons = "XSH|IA";
+
+   TQPtrList<Button> *buttonList = &leftButtonList_;
+
+   for (unsigned int i = 0; i < buttons.length(); ++i)
+   {
+      Button * tb = NULL;
+
+      switch (buttons[i].latin1())
+      {
+         case 'S': // Sticky
+            tb = new StickyButton(widget());
+            connect(this, TQT_SIGNAL(stickyChanged(bool)),
+                    tb, TQT_SLOT(setOn(bool)));
+            connect(tb, TQT_SIGNAL(toggleSticky()), this, TQT_SLOT(slotToggleSticky()));
+            emit(stickyChanged(isOnAllDesktops()));
+            break;
+
+         case 'H': // Help
+            if (providesContextHelp())
+            {
+               tb = new HelpButton(widget());
+               connect(tb, TQT_SIGNAL(help()), this, TQT_SLOT(showContextHelp()));
+            }
+            break;
+
+         case 'I': // Minimize
+            if (isMinimizable())
+            {
+               tb = new IconifyButton(widget());
+               connect(tb, TQT_SIGNAL(iconify()), this, TQT_SLOT(minimize()));
+            }
+            break;
+
+         case 'A': // Maximize
+            if (isMaximizable())
+            {
+               tb = new MaximiseButton(widget());
+               connect(tb, TQT_SIGNAL(maximizeClicked(ButtonState)),
+                       this, TQT_SLOT(slotMaximizeClicked(ButtonState)));
+               connect(this, TQT_SIGNAL(maximizeChanged(bool)),
+                       tb, TQT_SLOT(setOn(bool)));
+               emit(maximizeChanged(maximizeMode() == MaximizeFull));
+            }
+            break;
+
+         case 'F': // Above
+            tb = new AboveButton(widget());
+            connect(tb, TQT_SIGNAL(above()), this, TQT_SLOT(slotAbove()));
+            break;
+
+         case 'B': // Lower
+            tb = new LowerButton(widget());
+            connect(tb, TQT_SIGNAL(lower()), this, TQT_SLOT(slotLower()));
+            break;
+
+         case 'X': // Close
+            if (isCloseable())
+            {
+               tb = new CloseButton(widget());
+               connect(tb, TQT_SIGNAL(closeWindow()), this, TQT_SLOT(closeWindow()));
+            }
+            break;
+
+         case '|':
+            buttonList = &rightButtonList_;
+            break;
+      }
+
+      if (tb != NULL)
+      {
+         connect(this, TQT_SIGNAL(activeChanged(bool)), tb, TQT_SLOT(setActive(bool)));
+         buttonList->append(tb);
+      }
+   }
+
+   for (TQPtrListIterator<Button> it(leftButtonList_); it.current(); ++it)
+   {
+      it.current()->tqsetAlignment(Button::Left);
+      titleLayout_->addWidget(it.current());
+   }
+
+   titleSpacer_ = new TQSpacerItem(0, Static::instance()->titleHeight(),
+                                  TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+
+   titleLayout_->addItem(titleSpacer_);
+
+   for (TQPtrListIterator<Button> it(rightButtonList_); it.current(); ++it)
+   {
+      it.current()->tqsetAlignment(Button::Right);
+      titleLayout_->addWidget(it.current());
+   }
+}
+
+void Manager::resetLayout()
+{
+   delete topLayout_;
+   topLayout_ = new TQVBoxLayout(widget(), 0, 0);
+   topLayout_->setResizeMode(TQLayout::FreeResize);
+
+   titleLayout_ = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight, 0, 0);
+   titleLayout_->setResizeMode(TQLayout::FreeResize);
+
+   createTitle();
+
+   TQBoxLayout *midLayout = new TQBoxLayout(topLayout_, TQBoxLayout::LeftToRight,
+                                          0, 0);
+   midLayout->setResizeMode(TQLayout::FreeResize);
+   midLayout->addSpacing(1);
+   if (isPreview())
+      midLayout->addWidget(
+         new TQLabel(i18n("<center><b>RiscOS preview</b></center>"), widget()));
+   midLayout->addSpacing(1);
+
+   if (isResizable())
+      topLayout_->addSpacing(Static::instance()->resizeHeight());
+   else
+      topLayout_->addSpacing(1);
+}
+
+// --------------------
+
+Factory::Factory()
+{
+   (void) RiscOS::Static::instance();
+}
+
+Factory::~Factory()
+{
+   delete RiscOS::Static::instance();
+}
+
+bool Factory::reset(unsigned long /*changed*/)
+{
+   RiscOS::Static::instance()->reset();
+   return true;
+}
+
+bool Factory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+        case AbilityButtonAboveOthers:
+        case AbilityButtonBelowOthers:
+            return true;
+        default:
+            return false;
+    };
+}
+
+KDecoration* Factory::createDecoration(KDecorationBridge *bridge)
+{
+   return new Manager(bridge, this);
+}
+
+} // End namespace
+
+// vim:ts=2:sw=2:tw=78
+#include "Manager.moc"
diff --git a/twin-styles/riscos/Manager.h b/twin-styles/riscos/Manager.h
new file mode 100644
index 00000000..5668a7fc
--- /dev/null
+++ b/twin-styles/riscos/Manager.h
@@ -0,0 +1,125 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_MANAGER_H
+#define RISC_OS_MANAGER_H
+
+#include <tqdict.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQSpacerItem;
+class TQVBoxLayout;
+class TQBoxLayout;
+
+namespace RiscOS
+{
+
+class LowerButton;
+class CloseButton;
+class IconifyButton;
+class MaximiseButton;
+class StickyButton;
+class HelpButton;
+class Button;
+
+class Manager : public KDecoration
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      Manager(KDecorationBridge*, KDecorationFactory*);
+      ~Manager();
+      void init();
+      bool eventFilter(TQObject*, TQEvent*);
+      void reset(unsigned long changed);
+      void borders(int&, int&, int&, int&) const;
+      void resize(const TQSize&);
+      TQSize tqminimumSize() const;
+      void activeChange();
+      void captionChange();
+      void iconChange();
+      void maximizeChange();
+      void desktopChange();
+      void shadeChange();
+
+   signals:
+
+      void maximizeChanged(bool);
+      void stickyChanged(bool);
+      void activeChanged(bool);
+
+   public slots:
+
+      void slotAbove();
+      void slotLower();
+      void slotMaximizeClicked(ButtonState);
+      void slotToggleSticky();
+
+   protected:
+
+      KDecoration::Position mousePosition(const TQPoint &) const;
+      void paletteChange(const TQPalette &);
+      void activeChange(bool);
+      void stickyChange(bool);
+      void paintEvent(TQPaintEvent *);
+      void resizeEvent(TQResizeEvent *);
+      void mouseDoubleClickEvent(TQMouseEvent *);
+      void wheelEvent(TQWheelEvent *e);
+      bool animateMinimize(bool);
+      void updateButtonVisibility();
+      void updateTitleBuffer();
+
+      void createTitle();
+      void resetLayout();
+
+   private:
+
+      TQVBoxLayout       *topLayout_;
+      TQBoxLayout        *titleLayout_;
+      TQSpacerItem       *titleSpacer_;
+
+      TQPixmap           titleBuf_;
+      TQPtrList<Button>  leftButtonList_;
+      TQPtrList<Button>  rightButtonList_;
+};
+
+class Factory : public TQObject, public KDecorationFactory
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+      Factory();
+      ~Factory();
+      virtual bool reset(unsigned long changed);
+      virtual KDecoration* createDecoration(KDecorationBridge*);
+      virtual bool supports( Ability ability );
+};
+
+} // End namespace
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/MaximiseButton.cpp b/twin-styles/riscos/MaximiseButton.cpp
new file mode 100644
index 00000000..dcc1b52a
--- /dev/null
+++ b/twin-styles/riscos/MaximiseButton.cpp
@@ -0,0 +1,98 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "MaximiseButton.h"
+
+#include <tqtooltip.h>
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const maximise_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ",
+"  ........  ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+" .++++++++. ",
+"  ........  ",
+"            "};
+
+/* XPM */
+static const char * const unmaximise_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ",
+"            ",
+"   ......   ",
+"  .++++++.  ",
+"  .++++++.  ",
+"  .++++++.  ",
+"  .++++++.  ",
+"  .++++++.  ",
+"  .++++++.  ",
+"   ......   ",
+"            ",
+"            "};
+
+MaximiseButton::MaximiseButton(TQWidget * parent)
+  : Button(parent, i18n("Maximize"),
+           (ButtonState)(Qt::LeftButton|Qt::MidButton|Qt::RightButton)),
+    on_(false)
+{
+   setPixmap(TQPixmap((const char **)maximise_xpm));
+}
+
+void MaximiseButton::setOn(bool on)
+{
+   on_ = on;
+   setPixmap(on_ ? TQPixmap((const char **)unmaximise_xpm)
+                 : TQPixmap((const char **)maximise_xpm));
+   tqrepaint();
+   TQToolTip::remove(this);
+   TQToolTip::add(this, on_ ? i18n("Restore") : i18n("Maximize"));
+}
+
+void MaximiseButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+   emit(maximizeClicked(lastButton_));
+}
+
+} // End namespace
+
+// vim:ts=2:sw=2:tw=78
+#include "MaximiseButton.moc"
diff --git a/twin-styles/riscos/MaximiseButton.h b/twin-styles/riscos/MaximiseButton.h
new file mode 100644
index 00000000..770c9370
--- /dev/null
+++ b/twin-styles/riscos/MaximiseButton.h
@@ -0,0 +1,61 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_MAXIMISE_BUTTON_H
+#define RISC_OS_MAXIMISE_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class MaximiseButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      MaximiseButton(TQWidget *parent);
+
+   public slots:
+
+      void setOn(bool);
+
+   signals:
+
+      void maximizeClicked(ButtonState);
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+
+   private:
+
+      bool on_;
+};
+
+} // End namespace
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/Palette.h b/twin-styles/riscos/Palette.h
new file mode 100644
index 00000000..3fb71ab0
--- /dev/null
+++ b/twin-styles/riscos/Palette.h
@@ -0,0 +1,69 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_PALETTE_H
+#define RISC_OS_PALETTE_H
+
+#include <tqmemarray.h>
+#include <tqglobal.h>
+
+namespace RiscOS
+{
+
+class Palette
+{
+   public:
+
+      Palette()
+      {
+         data_.resize(8);
+
+         data_[0] = 0xFFFFFFFF;
+         data_[1] = 0xFFDCDCDC;
+         data_[2] = 0xFFC3C3C3;
+         data_[3] = 0xFFA0A0A0;
+         data_[4] = 0xFF808080;
+         data_[5] = 0xFF585858;
+         data_[6] = 0xFF303030;
+         data_[7] = 0xFF000000;
+      }
+
+      TQRgb& operator [] (int idx)
+      {
+         return data_[idx];
+      }
+
+      TQRgb operator [] (int idx) const
+      {
+         return data_[idx];
+      }
+
+   private:
+
+      TQMemArray<TQRgb> data_;
+};
+
+} // End namespace
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/README b/twin-styles/riscos/README
new file mode 100644
index 00000000..39d1d959
--- /dev/null
+++ b/twin-styles/riscos/README
@@ -0,0 +1,90 @@
+This theme emulates the look and feel of the RISC OS 'window manager'.
+Actually, RISC OS doesn't have a window manager in the same way X
+does, but if you imagine it does, this is an emulation of that ;)
+
+The look is obviously quite different, but coming anywhere close to
+the unique look of RISC OS would be quite blatantly obvious, so to
+avoid copyright issues, the look of this theme is unique. You may
+consider it to be RISC OS grown up ;)
+
+Functions that will be implemented but are currently missing:
+  Transparent resize.
+  Shading.
+  Backward-resize.
+  NOTE: Backward-resize is an interesting feature and quite useful.
+        If you resize a window such that you hit the screen edge
+        in the process, the window resizes 'backwards' (i.e.
+        moves in the opposite direction to your drag and at the
+        same time continues increasing in size). So instead
+        of having to let go of the resize handle, move the window
+        and resize again, it just does what you want it to do.
+
+Button functions: (Missing functionality is marked with TODO)
+
+Button One:
+
+  Left button: TODO
+               Lower window and drop focus. This is currently unimplemented
+               in twin itself.
+
+Button Two:
+
+  Left button: Close window.
+
+  Right button: TODO, if I can be bothered.
+                Close window.
+                If window is filer window, open another filer window
+                in parent dir.
+                If window is document window, open a filer window in
+                dir containing document.
+                If you hold Shift, the window doesn't close.
+                NOTE:
+                This requires app support.
+                If I were to implement this, I would do it in konqy
+                and probably not bother for other apps.
+
+Titlebar:
+
+  Left button: Raise, focus and move window
+
+  Middle button: Move window
+
+  Right button: Menu
+                Note: Buttons are this way around for compatibility with
+                other twin themes.
+
+Button Three:
+
+  Left button: Iconify window.
+
+Button Four:
+
+  Left button: Maximise or restore window plus raise and focus.
+
+  Middle button: Maximise vertically or restore window plus raise and focus.
+
+  Right button: Maximise or restore window.
+
+Resize bar left/right:
+
+  Left button: Move that corner (resizes window) and raise
+
+  Other buttons: Same without raising
+
+Resize bar centre:
+
+  Left button: Move that edge (resizes window) and raise
+
+  Other buttons: Same without raising
+
+The lower bar is used for resizing. It works in the NeXT style.
+This doesn't exist on RISC OS. In RISC OS, there is a 'resize handle'
+in the lower right corner of the window (actually inside the window).
+
+To emulate this would mean covering part of the window with the decorations,
+which is not acceptable. RISC OS gets away with it by making sure that
+there is a vertical scrollbar visible at all times, which is just stupid.
+It's also an impossibility with X11, as the window manager does not know
+anything about scrollbars - they belong to the application, so don't ask
+me to implement it.
+
diff --git a/twin-styles/riscos/Static.cpp b/twin-styles/riscos/Static.cpp
new file mode 100644
index 00000000..7aac6f5a
--- /dev/null
+++ b/twin-styles/riscos/Static.cpp
@@ -0,0 +1,540 @@
+/*
+  RISC OS KWin client
+
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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.
+*/
+
+// for enable-final
+#ifdef Bool
+#undef Bool
+#endif
+
+#include <tqimage.h>
+#include <tqpixmap.h>
+#include <tqpainter.h>
+#include <tqptrlist.h>
+
+#include <kdecoration.h>
+
+// #include <ksimpleconfig.h>
+
+#include "Static.h"
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const texture_xpm[] = {
+"64 12 3 1",
+" 	c None",
+"a	c #000000",
+"b	c #FFFFFF",
+"   b           b         b     b   b b       b        a       b ",
+" b       aa   b  aaa aaa     b   a   b   aab     bb           a ",
+" b     b    a b    b   b             b       aa      b b   aa   ",
+" b b     b     a         a b   b b b  aa  ab             ab     ",
+"         b     b   b b       b                 b   b  ba        ",
+" aaa aaa         aa       b          b b b   b           b      ",
+"   b       b      bb a b     aa  b         a  a  aaa a     b    ",
+" b         b b b b     a b       b       b         b           b",
+"   b b       b              b  a a b  b  aa      b       baa    ",
+"       a     b    a  bb  aa    bb aa aaa  b     aa a            ",
+"   a a       aab       b  b   aa aab          a  b              ",
+" b        a        b   b aaa  a      b      bb     b   b     b b"};
+
+Static* Static::instance_ = NULL;
+
+Static::Static()
+{
+   instance_ = this;
+   _init();
+}
+
+Static::~Static()
+{
+   instance_ = NULL;
+}
+
+const TQPixmap& Static::titleTextLeft(bool active) const
+{
+   return active ? aTitleTextLeft_ : iTitleTextLeft_;
+}
+
+const TQPixmap& Static::titleTextRight(bool active) const
+{
+   return active ? aTitleTextRight_ : iTitleTextRight_;
+}
+
+const TQPixmap& Static::resizeMidLeft(bool active) const
+{
+   return active ? aResizeMidLeft_ : iResizeMidLeft_;
+}
+
+const TQPixmap& Static::resizeMidRight(bool active) const
+{
+   return active ? aResizeMidRight_ : iResizeMidRight_;
+}
+
+const TQPixmap& Static::titleTextMid(bool active) const
+{
+   return active ? aTitleTextMid_ : iTitleTextMid_;
+}
+
+const TQPixmap& Static::resizeMidMid(bool active) const
+{
+   return active ? aResizeMid_ : iResizeMid_;
+}
+
+const TQPixmap& Static::resize(bool active) const
+{
+   return active ? aResize_ : iResize_;
+}
+
+int Static::animationStyle() const
+{
+   return animationStyle_;
+}
+
+int Static::titleHeight() const
+{
+   return titleHeight_;
+}
+
+int Static::resizeHeight() const
+{
+   return resizeHeight_;
+}
+
+void Static::_drawBorder(TQPixmap &pix, int w, int h)
+{
+   // 0111111113
+   // 1122222235
+   // 12      46
+   // 12      46
+   // 12      46
+   // 1344444476
+   // 3566666667
+
+   painter_.begin(&pix);
+   painter_.translate(transx, transy);
+
+   TQColor c0 = down_ ? palette_[7] : palette_[0];
+   TQColor c1 = down_ ? palette_[6] : palette_[1];
+   TQColor c2 = down_ ? palette_[5] : palette_[2];
+   TQColor c3 = down_ ? palette_[4] : palette_[3];
+   TQColor c4 = down_ ? palette_[3] : palette_[4];
+   TQColor c5 = down_ ? palette_[2] : palette_[5];
+   TQColor c6 = down_ ? palette_[2] : palette_[6];
+   TQColor c7 = down_ ? palette_[1] : palette_[7];
+
+   painter_.setPen(c0);
+   painter_.drawPoint(0, 0);
+
+   painter_.setPen(c1);
+   painter_.drawPoint(1, 1);
+   painter_.drawLine(1, 0, w - 1, 0);
+   painter_.drawLine(0, 1, 0, h - 1);
+
+   painter_.setPen(c2);
+   painter_.drawLine(2, 1, w - 2, 1);
+   painter_.drawLine(1, 2, 1, h - 2);
+
+   painter_.setPen(c3);
+   painter_.drawPoint(0, h);
+   painter_.drawPoint(1, h - 1);
+   painter_.drawPoint(w, 0);
+   painter_.drawPoint(w - 1, 1);
+   painter_.fillRect(2, 2, w - 2, h - 2, c3);
+
+   painter_.setPen(c4);
+   painter_.drawLine(2, h - 1, w - 2, h - 1);
+   painter_.drawLine(w - 1, 2, w - 1, h - 2);
+
+   painter_.setPen(c5);
+   painter_.drawPoint(w, 1);
+   painter_.drawPoint(1, h);
+
+   painter_.setPen(c6);
+   painter_.drawLine(w, 2, w, h - 1);
+   painter_.drawLine(2, h, w - 1, h);
+
+   painter_.setPen(c7);
+   painter_.drawPoint(w - 1, h - 1);
+   painter_.drawPoint(w, h);
+
+   painter_.end();
+
+   painter_.resetXForm();
+}
+
+void setPalette(Palette &pal, TQColor c)
+{
+   pal[3] = c.rgb();
+
+   int h, s, v;
+   c.hsv(&h, &s, &v);
+
+   if (v < 72)
+      c.setHsv(h, s, 72);
+
+   pal[0] = c.light(200).rgb();
+   pal[1] = c.light(166).rgb();
+   pal[2] = c.light(125).rgb();
+   pal[4] = c.dark(133).rgb();
+   pal[5] = c.dark(166).rgb();
+   pal[6] = c.dark(200).rgb();
+   pal[7] = c.dark(300).rgb();
+}
+
+void Static::_init()
+{
+   hicolour_ = TQPixmap::defaultDepth() > 8;
+   animationStyle_ = 0;
+   updatePixmaps();
+}
+
+void Static::reset()
+{
+   updatePixmaps();
+//   Workspace::self()->slotResetAllClientsDelayed();
+}
+
+void Static::updatePixmaps()
+{
+   _initSizes();
+
+   _resizeAllPixmaps();
+
+   _blankAllPixmaps();
+
+   if (hicolour_)
+   {
+      _initPalettes();
+      _initTextures();
+   }
+
+   _drawTitleTextAreaSides();
+
+   _drawResizeCentralAreaSides();
+
+   _drawTitleTextAreaBackground();
+
+   _drawResizeCentralAreaBackground();
+
+   _drawResizeHandles();
+
+   _drawButtonBackgrounds();
+}
+
+void Static::_createTexture(TQPixmap &px, int t, bool active)
+{
+   const TQImage texture(TQPixmap((const char **)texture_xpm).convertToImage());
+   const TQRgb w(tqRgb(255, 255, 255));
+   const TQRgb b(tqRgb(0, 0, 0));
+
+   TQColor c(KDecoration::options()->color(KDecoration::ColorType(t), active));
+
+   TQRgb mid    (c.rgb());
+   TQRgb light  (c.light(110).rgb());
+   TQRgb dark   (c.dark(110).rgb());
+
+   TQRgb* data(reinterpret_cast<TQRgb *>(const_cast<TQImage&>(texture).bits()));
+
+   for (int x = 0; x < 64*12; x++)
+      if (data[x] == w)
+         data[x] = light;
+      else if (data[x] == b)
+         data[x] = dark;
+      else
+         data[x] = mid;
+
+   px.convertFromImage(texture);
+}
+
+const TQPixmap& Static::buttonBase(bool active, bool down) const
+{
+   if (active)
+      return down ? aButtonDown_ : aButtonUp_;
+   else
+      return down ? iButtonDown_ : iButtonUp_;
+}
+
+void Static::_initSizes()
+{
+   TQFont f(KDecoration::options()->font(true)); // XXX false doesn't work right at the moment
+
+   TQFontMetrics fm(f);
+
+   int h = fm.height();
+
+   titleHeight_ = h + 6;
+
+   if (titleHeight_ < 20)
+      titleHeight_ = 20;
+
+   buttonSize_ = titleHeight_ - 1;
+
+   resizeHeight_ = 10;
+}
+
+void Static::_resizeAllPixmaps()
+{
+   aResize_        .resize(30, resizeHeight_);
+   iResize_        .resize(30, resizeHeight_);
+   aTitleTextLeft_ .resize( 3, titleHeight_);
+   aTitleTextRight_.resize( 3, titleHeight_);
+   iTitleTextLeft_ .resize( 3, titleHeight_);
+   iTitleTextRight_.resize( 3, titleHeight_);
+   aTitleTextMid_  .resize(64, titleHeight_);
+   iTitleTextMid_  .resize(64, titleHeight_);
+   aResizeMidLeft_ .resize( 3, resizeHeight_);
+   aResizeMidRight_.resize( 3, resizeHeight_);
+   iResizeMidLeft_ .resize( 3, resizeHeight_);
+   iResizeMidRight_.resize( 3, resizeHeight_);
+   aResizeMid_     .resize(64, resizeHeight_);
+   iResizeMid_     .resize(64, resizeHeight_);
+
+   aButtonUp_      .resize(buttonSize_, buttonSize_);
+   iButtonUp_      .resize(buttonSize_, buttonSize_);
+   aButtonDown_    .resize(buttonSize_, buttonSize_);
+   iButtonDown_    .resize(buttonSize_, buttonSize_);
+}
+
+void Static::_blankAllPixmaps()
+{
+   aResize_        .fill(TQt::black);
+   iResize_        .fill(TQt::black);
+   aTitleTextLeft_ .fill(TQt::black);
+   aTitleTextRight_.fill(TQt::black);
+   iTitleTextLeft_ .fill(TQt::black);
+   iTitleTextRight_.fill(TQt::black);
+   aTitleTextMid_  .fill(TQt::black);
+   iTitleTextMid_  .fill(TQt::black);
+   aResizeMidLeft_ .fill(TQt::black);
+   aResizeMidRight_.fill(TQt::black);
+   iResizeMidLeft_ .fill(TQt::black);
+   iResizeMidRight_.fill(TQt::black);
+   aResizeMid_     .fill(TQt::black);
+   iResizeMid_     .fill(TQt::black);
+   aButtonUp_      .fill(TQt::black);
+   iButtonUp_      .fill(TQt::black);
+   aButtonDown_    .fill(TQt::black);
+   iButtonDown_    .fill(TQt::black);
+}
+
+void Static::_initPalettes()
+{
+   const KDecorationOptions* options = KDecoration::options();
+   setPalette(aButPal_, options->color(KDecoration::ColorButtonBg, true));
+   setPalette(iButPal_, options->color(KDecoration::ColorButtonBg, false));
+
+   setPalette(aTitlePal_,  options->color(KDecoration::ColorTitleBar, true));
+   setPalette(iTitlePal_,  options->color(KDecoration::ColorTitleBar, false));
+
+   setPalette(aResizePal_, options->color(KDecoration::ColorTitleBar, true));
+   setPalette(iResizePal_, options->color(KDecoration::ColorTitleBar, false));
+}
+
+void Static::_initTextures()
+{
+   _createTexture(aTexture_,  KDecoration::ColorTitleBar, true);
+   _createTexture(iTexture_,  KDecoration::ColorTitleBar, false);
+   _createTexture(abTexture_, KDecoration::ColorButtonBg, true);
+   _createTexture(ibTexture_, KDecoration::ColorButtonBg, false);
+}
+
+void Static::_drawTitleTextAreaSides()
+{
+   TQPixmap temp(4, titleHeight_);
+   temp.fill(TQt::black);
+
+   transx = transy = 0.0;
+
+   palette_ = aTitlePal_;
+   down_ = false;
+
+   _drawBorder(temp, 4, titleHeight_ - 2);
+
+   painter_.begin(&aTitleTextLeft_);
+   painter_.tqdrawPixmap(1, 1, temp, 0, 1);
+   painter_.end();
+
+   painter_.begin(&aTitleTextRight_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
+   painter_.end();
+
+   palette_ = iTitlePal_;
+   _drawBorder(temp, 4, titleHeight_ - 2);
+
+   painter_.begin(&iTitleTextLeft_);
+   painter_.tqdrawPixmap(1, 1, temp, 0, 1);
+   painter_.end();
+
+   painter_.begin(&iTitleTextRight_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
+   painter_.end();
+}
+
+void Static::_drawResizeCentralAreaSides()
+{
+   TQPixmap temp(4, resizeHeight_);
+   temp.fill(TQt::black);
+
+   transy = 1.0;
+
+   palette_ = aResizePal_;
+
+   _drawBorder(temp, 4, resizeHeight_ - 3);
+
+   painter_.begin(&aResizeMidLeft_);
+   painter_.tqdrawPixmap(0, 1, temp, 0, 1);
+   painter_.end();
+
+   painter_.begin(&aResizeMidRight_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
+   painter_.end();
+
+   palette_ = iResizePal_;
+   _drawBorder(temp, 4, resizeHeight_ - 3);
+
+   painter_.begin(&iResizeMidLeft_);
+   painter_.tqdrawPixmap(0, 1, temp, 0, 1);
+   painter_.end();
+
+   painter_.begin(&iResizeMidRight_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 1);
+   painter_.end();
+}
+
+void Static::_drawTitleTextAreaBackground()
+{
+   TQPixmap temp(70, titleHeight_);
+   temp.fill(TQt::black);
+
+   transx = transy = 0.0;
+
+   palette_ = aTitlePal_;
+   _drawBorder(temp, 70, titleHeight_ - 3);
+
+   painter_.begin(&aTitleTextMid_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 0);
+   if (hicolour_)
+      painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, aTexture_);
+   painter_.end();
+
+   palette_ = iTitlePal_;
+   _drawBorder(temp, 70, titleHeight_ - 3);
+
+   painter_.begin(&iTitleTextMid_);
+   painter_.tqdrawPixmap(0, 1, temp, 2, 0);
+   if (hicolour_)
+      painter_.drawTiledPixmap(0, 4, 64, titleHeight_ - 8, iTexture_);
+   painter_.end();
+}
+
+void Static::_drawResizeCentralAreaBackground()
+{
+   TQPixmap temp(70, titleHeight_);
+   temp.fill(TQt::black);
+
+   transy = 1.0;
+
+   palette_ = aResizePal_;
+   _drawBorder(temp, 70, resizeHeight_ - 3);
+
+   painter_.begin(&aResizeMid_);
+   painter_.tqdrawPixmap(0, 0, temp, 2, 0);
+   if (hicolour_)
+      painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, aTexture_);
+   painter_.end();
+
+   palette_ = iResizePal_;
+   _drawBorder(temp, 70, 7);
+
+   painter_.begin(&iResizeMid_);
+   painter_.tqdrawPixmap(0, 0, temp, 2, 0);
+   if (hicolour_)
+      painter_.drawTiledPixmap(0, 4, 64, resizeHeight_ - 8, iTexture_);
+   painter_.end();
+}
+
+void Static::_drawResizeHandles()
+{
+   transx = transy = 1.0;
+
+   down_ = false;
+
+   palette_ = aResizePal_;
+   _drawBorder(aResize_, 28, resizeHeight_ - 3);
+
+   if (hicolour_)
+   {
+      painter_.begin(&aResize_);
+      painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, aTexture_);
+      painter_.end();
+   }
+
+   palette_ = iResizePal_;
+   _drawBorder(iResize_, 28, resizeHeight_ - 3);
+
+   if (hicolour_)
+   {
+      painter_.begin(&iResize_);
+      painter_.drawTiledPixmap(4, 4, 20, resizeHeight_ - 8, iTexture_);
+      painter_.end();
+   }
+}
+
+void Static::_drawButtonBackgrounds()
+{
+   buttonSize_ -= 2;
+
+   down_ = false;
+   transx = 0.0;
+   transy = 1.0;
+   palette_ = aButPal_;
+   _drawBorder(aButtonUp_, buttonSize_, buttonSize_);
+   down_ = true;
+   _drawBorder(aButtonDown_, buttonSize_, buttonSize_);
+
+   palette_ = iButPal_;
+   _drawBorder(iButtonDown_, buttonSize_, buttonSize_);
+   down_ = false;
+   _drawBorder(iButtonUp_, buttonSize_, buttonSize_);
+
+   painter_.begin(&aButtonUp_);
+
+   if (hicolour_)
+      painter_.drawTiledPixmap(2, 4, buttonSize_ - 4, buttonSize_ - 5,
+                               abTexture_);
+
+   painter_.end();
+
+   painter_.begin(&iButtonUp_);
+   if (hicolour_)
+      painter_.drawTiledPixmap(2, 4, buttonSize_ - 4, buttonSize_ - 5,
+                               ibTexture_);
+
+   painter_.end();
+}
+
+} // End namespace
+
+// vim:ts=2:sw=2:tw=78
+
diff --git a/twin-styles/riscos/Static.h b/twin-styles/riscos/Static.h
new file mode 100644
index 00000000..0a5b4cdb
--- /dev/null
+++ b/twin-styles/riscos/Static.h
@@ -0,0 +1,134 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_STATIC_H
+#define RISC_OS_STATIC_H
+
+#include <tqimage.h>
+#include <tqpixmap.h>
+#include <tqpainter.h>
+#include <tqstringlist.h>
+
+#include "Palette.h"
+
+namespace RiscOS
+{
+
+enum SymbolType { Lower, Close, Iconify, Max, Unmax };
+
+class Static
+{
+   public:
+
+      Static();
+
+      ~Static();
+
+      static Static* instance()
+      {
+         if (instance_ == 0)
+         new Static;
+
+         return instance_;
+      }
+
+      void reset();
+      void updatePixmaps();
+
+      const TQPixmap& titleTextLeft(bool active) const;
+      const TQPixmap& titleTextRight(bool active) const;
+      const TQPixmap& resizeMidLeft(bool active) const;
+      const TQPixmap& resizeMidRight(bool active) const;
+      const TQPixmap& titleTextMid(bool active) const;
+      const TQPixmap& resizeMidMid(bool active) const;
+      const TQPixmap& buttonBase(bool active, bool down) const;
+      const TQPixmap& resize(bool active) const;
+
+      int animationStyle() const;
+      int titleHeight() const;
+      int resizeHeight() const;
+
+  private:
+
+      void _init();
+
+      void _drawBorder(TQPixmap&, int, int);
+      void _createTexture(TQPixmap&, int, bool);
+
+      void _initSizes();
+
+      void _resizeAllPixmaps();
+      void _blankAllPixmaps();
+
+      void _initPalettes();
+      void _initTextures();
+
+      void _drawTitleTextAreaSides();
+      void _drawResizeCentralAreaSides();
+      void _drawTitleTextAreaBackground();
+      void _drawResizeCentralAreaBackground();
+      void _drawResizeHandles();
+      void _drawButtonBackgrounds();
+
+      static Static *instance_;
+
+      Palette
+         aTitlePal_,
+         iTitlePal_,
+         aResizePal_,
+         iResizePal_,
+         aButPal_,
+         iButPal_;
+
+      TQPixmap
+         aButtonUp_,         iButtonUp_,
+         aButtonDown_,       iButtonDown_,
+         aResize_,           iResize_,
+         aResizeDown_,       iResizeDown_,
+         aTitleTextLeft_,    iTitleTextLeft_,
+         aTitleTextRight_,   iTitleTextRight_,
+         aTitleTextMid_,     iTitleTextMid_,
+         aResizeMidLeft_,    iResizeMidLeft_,
+         aResizeMidRight_,   iResizeMidRight_,
+         aResizeMid_,        iResizeMid_;
+
+      TQPixmap aTexture_, iTexture_, abTexture_, ibTexture_;
+
+      TQPainter painter_;
+      bool down_;
+      Palette palette_;
+      double transx, transy;
+
+      int animationStyle_;
+
+      int titleHeight_;
+      int buttonSize_;
+      int resizeHeight_;
+
+      bool hicolour_;
+};
+
+} // End namespace
+
+#endif
+ 
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/StickyButton.cpp b/twin-styles/riscos/StickyButton.cpp
new file mode 100644
index 00000000..2229f915
--- /dev/null
+++ b/twin-styles/riscos/StickyButton.cpp
@@ -0,0 +1,99 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 "StickyButton.h"
+
+#include <tqtooltip.h>
+
+namespace RiscOS
+{
+
+/* XPM */
+static const char * const unsticky_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"    ...     ",
+"   .+++.    ",
+"   .+++.    ",
+"   .+++.    ",
+"   .+++.    ",
+"  .+++++.   ",
+" .+++++++.  ",
+".+++++++++. ",
+".....+..... ",
+"    .+.     ",
+"    .+.     ",
+"     .      "};
+
+/* XPM */
+static const char * const sticky_xpm[] = {
+"12 12 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"        .   ",
+"       .+.  ",
+"      .+++. ",
+"     .+++++.",
+" ....+++++. ",
+"  .++++++.  ",
+"   .++++.   ",
+"   .+++.    ",
+"  .+..+.    ",
+" .+.  ..    ",
+".+.    .    ",
+"..          "};
+
+
+StickyButton::StickyButton(TQWidget *parent)
+  : Button(parent, i18n("On all desktops")), on_(false)
+{
+   setPixmap(TQPixmap((const char **)sticky_xpm));
+}
+
+void StickyButton::setOn(bool on)
+{
+   on_ = on;
+   setPixmap(on_ ? TQPixmap((const char **)unsticky_xpm) :
+                   TQPixmap((const char **)sticky_xpm));
+   tqrepaint();
+   TQToolTip::remove(this);
+   TQToolTip::add(this, on_ ? i18n("Not on all desktops")
+                           : i18n("On all desktops"));
+}
+
+void StickyButton::mouseReleaseEvent(TQMouseEvent *e)
+{
+   Button::mouseReleaseEvent(e);
+
+   if (!rect().contains(e->pos()))
+      return;
+
+   emit(toggleSticky());   
+}
+
+} // End namespace
+
+// vim:ts=2:sw=2:tw=78
+#include "StickyButton.moc"
diff --git a/twin-styles/riscos/StickyButton.h b/twin-styles/riscos/StickyButton.h
new file mode 100644
index 00000000..26c0428e
--- /dev/null
+++ b/twin-styles/riscos/StickyButton.h
@@ -0,0 +1,61 @@
+/*
+  RISC OS KWin client
+  
+  Copyright 2000
+    Rik Hemsley <rik@kde.org>
+
+  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 RISC_OS_STICKY_BUTTON_H
+#define RISC_OS_STICKY_BUTTON_H
+
+#include "Button.h"
+
+namespace RiscOS
+{
+
+class StickyButton : public Button
+{
+   Q_OBJECT
+  TQ_OBJECT
+
+   public:
+
+      StickyButton(TQWidget *parent);
+
+   public slots:
+
+      void setOn(bool);
+
+   signals:
+
+      void toggleSticky();
+
+   protected:
+
+      void mouseReleaseEvent(TQMouseEvent *);
+
+   private:
+
+      bool on_;
+};
+
+} // End namespace
+
+#endif
+
+// vim:ts=2:sw=2:tw=78
diff --git a/twin-styles/riscos/riscos.desktop b/twin-styles/riscos/riscos.desktop
new file mode 100644
index 00000000..b58aefda
--- /dev/null
+++ b/twin-styles/riscos/riscos.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=RISC OS
+Name[cs]=Risc OS
+Name[cy]= RISC OS
+Name[hi]=रिस्क ओएस
+Name[ta]=RISC இ.த
+Name[th]=ระบบปฏิบัติการบนชิพ RISC
+Name[uk]=RISC ОС
+Name[xh]=i RISC OS
+Name[zu]=IRISC OS
+X-KDE-Library=twin3_riscos
diff --git a/twin-styles/smooth-blend/AUTHORS b/twin-styles/smooth-blend/AUTHORS
new file mode 100644
index 00000000..c96228bb
--- /dev/null
+++ b/twin-styles/smooth-blend/AUTHORS
@@ -0,0 +1 @@
+Ryan Nickell p0z3r@users.sourceforge.net
diff --git a/twin-styles/smooth-blend/CMakeLists.txt b/twin-styles/smooth-blend/CMakeLists.txt
new file mode 100644
index 00000000..bfd4d79f
--- /dev/null
+++ b/twin-styles/smooth-blend/CMakeLists.txt
@@ -0,0 +1,12 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( client )
\ No newline at end of file
diff --git a/twin-styles/smooth-blend/COPYING b/twin-styles/smooth-blend/COPYING
new file mode 100644
index 00000000..e065ffa0
--- /dev/null
+++ b/twin-styles/smooth-blend/COPYING
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/twin-styles/smooth-blend/CREDITS b/twin-styles/smooth-blend/CREDITS
new file mode 100644
index 00000000..a4481ec9
--- /dev/null
+++ b/twin-styles/smooth-blend/CREDITS
@@ -0,0 +1,5 @@
+Justin Berstler aka spasemunkie on kdelook.org - spasemunkie at gmail.com : for his buttons!
+Rick aka bitwit on kdelook.org - bitwit at digilanti.org : for his twin_template
+David Johnson - david at usermode.org : for his example twin tutorial
+Thomas Lübking aka thomas12777 on kdelook.org - baghira-style at gmx.net : for answering questions on getting pixmap buttons into code
+Scott Grayban aka sgrayban on kdelook.org : for testing and hosting the files to be downloaded
diff --git a/twin-styles/smooth-blend/ChangeLog b/twin-styles/smooth-blend/ChangeLog
new file mode 100644
index 00000000..7b8fbcf2
--- /dev/null
+++ b/twin-styles/smooth-blend/ChangeLog
@@ -0,0 +1,22 @@
+03.16.2005: (1.0 release)
+-----------
+Double click actions to maximize now show corresponding buttons
+when maximized.
+Windows that open maximized show the correct button and restoring
+changes the button to the restore button as one would expect.
+Removal of the title bar separator line, to complete the feel of 
+a "smooth blend".
+
+02.28.2005: (beta2)
+-----------
+Added kcontrol config option to remove titlebar separator line.
+Application icons now resize to match the size of the buttons
+instead of being a fixed size 16x16 icon.
+Added button animations for mouse hover; configurable in kcontrol
+to either Intensify or Fade.
+Fixed some title bar drawing that wasn't correctly sectioned off.
+
+
+02.22.2005: (beta1)
+-----------
+smoothblend-beta1 released.
diff --git a/twin-styles/smooth-blend/INSTALL b/twin-styles/smooth-blend/INSTALL
new file mode 100644
index 00000000..02a4a074
--- /dev/null
+++ b/twin-styles/smooth-blend/INSTALL
@@ -0,0 +1,167 @@
+Basic Installation
+==================
+
+   These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, a file
+`config.cache' that saves the results of its tests to speed up
+reconfiguring, and a file `config.log' containing compiler output
+(useful mainly for debugging `configure').
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If at some point `config.cache'
+contains results you don't want to keep, you may remove or edit it.
+
+   The file `configure.in' is used to create `configure' by a program
+called `autoconf'.  You only need `configure.in' if you want to change
+it or regenerate `configure' using a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes a while.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Type `make install' to install the programs and any data files and
+     documentation.
+
+  4. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  
+
+Compilers and Options
+=====================
+
+   Some systems require unusual options for compilation or linking that
+the `configure' script does not know about.  You can give `configure'
+initial values for variables by setting them in the environment.  Using
+a Bourne-compatible shell, you can do that on the command line like
+this:
+     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
+
+Or on systems that have the `env' program, you can do it like this:
+     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
+
+Compiling For Multiple Architectures
+====================================
+
+   You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not supports the `VPATH'
+variable, you have to compile the package for one architecture at a time
+in the source code directory.  After you have installed the package for
+one architecture, use `make distclean' before reconfiguring for another
+architecture.
+
+Installation Names
+==================
+
+   By default, `make install' will install the package's files in
+`/usr/local/bin', `/usr/local/man', etc.  You can specify an
+installation prefix other than `/usr/local' by giving `configure' the
+option `--prefix=PATH'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+give `configure' the option `--exec-prefix=PATH', the package will use
+PATH as the prefix for installing programs and libraries.
+Documentation and other data files will still use the regular prefix.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+   Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+   There may be some features `configure' can not figure out
+automatically, but needs to determine by the type of host the package
+will run on.  Usually `configure' can figure that out, but if it prints
+a message saying it can not guess the host type, give it the
+`--host=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name with three fields:
+     CPU-COMPANY-SYSTEM
+
+See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the host type.
+
+   If you are building compiler tools for cross-compiling, you can also
+use the `--target=TYPE' option to select the type of system they will
+produce code for and the `--build=TYPE' option to select the type of
+system on which you are compiling the package.
+
+Sharing Defaults
+================
+
+   If you want to set default values for `configure' scripts to share,
+you can create a site shell script called `config.site' that gives
+default values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Operation Controls
+==================
+
+   `configure' recognizes the following options to control how it
+operates.
+
+`--cache-file=FILE'
+     Use and save the results of the tests in FILE instead of
+     `./config.cache'.  Set FILE to `/dev/null' to disable caching, for
+     debugging `configure'.
+
+`--help'
+     Print a summary of the options to `configure', and exit.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`--version'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`configure' also accepts some other, not widely useful, options.
+
diff --git a/twin-styles/smooth-blend/Makefile.am b/twin-styles/smooth-blend/Makefile.am
new file mode 100644
index 00000000..44ac1828
--- /dev/null
+++ b/twin-styles/smooth-blend/Makefile.am
@@ -0,0 +1 @@
+SUBDIRS = client
diff --git a/twin-styles/smooth-blend/NEWS b/twin-styles/smooth-blend/NEWS
new file mode 100644
index 00000000..e69de29b
diff --git a/twin-styles/smooth-blend/README b/twin-styles/smooth-blend/README
new file mode 100644
index 00000000..836fbe5d
--- /dev/null
+++ b/twin-styles/smooth-blend/README
@@ -0,0 +1,15 @@
+Smooth Blend - a smooth blending of the window background color into the titlebar.
+
+This is my first attempt at a KDE window decoration.
+Any comments would be much appreciated and can be sent
+to me directly at p0z3r@users.sourceforge.net.
+
+Limitations:
+The Frame Width can not be smaller than 2 pixels because it will lose the top gradient.
+The buttonsize can not be larger than the Title Height - Frame Width.
+
+Known Problems:
+The Shade button doesn't work correctly although the code is there for it.
+The Resize button is also afflicted with the same problem.
+Support for the Shade button and Resize buttons may or may not be supported depending
+upon what I find through the kde mailing lists and other documentation.
diff --git a/twin-styles/smooth-blend/TODO b/twin-styles/smooth-blend/TODO
new file mode 100644
index 00000000..6a7bd0a8
--- /dev/null
+++ b/twin-styles/smooth-blend/TODO
@@ -0,0 +1,4 @@
+TODO
+----
+Code cleanup and separation of different classes into individual files.
+Use pixmaps instead of images for reducing the drawing impact.
diff --git a/twin-styles/smooth-blend/client/CMakeLists.txt b/twin-styles/smooth-blend/client/CMakeLists.txt
new file mode 100644
index 00000000..d59126f9
--- /dev/null
+++ b/twin-styles/smooth-blend/client/CMakeLists.txt
@@ -0,0 +1,38 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_subdirectory( config )
+
+add_definitions(
+  -DQT_PLUGIN
+)
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES smoothblend.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_smoothblend ##########################
+
+tde_add_kpart( twin3_smoothblend AUTOMOC
+  SOURCES smoothblend.cc
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/smooth-blend/client/Makefile.am b/twin-styles/smooth-blend/client/Makefile.am
new file mode 100644
index 00000000..056765d6
--- /dev/null
+++ b/twin-styles/smooth-blend/client/Makefile.am
@@ -0,0 +1,20 @@
+AUTOMAKE_OPTIONS = foreign
+
+SUBDIRS = config
+
+KDE_CXXFLAGS = -DQT_PLUGIN
+
+INCLUDES = $(all_includes) -I$(kde_includes)/twin
+
+twindir = $(kde_datadir)/twin/
+twin_DATA = smoothblend.desktop
+
+noinst_HEADERS = smoothblend.h buttons.h
+
+kde_module_LTLIBRARIES = twin3_smoothblend.la
+twin3_smoothblend_la_SOURCES = smoothblend.cc
+twin3_smoothblend_la_LIBADD = -ltdecorations
+twin3_smoothblend_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -ltdecore -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin3_smoothblend_la_METASOURCES = AUTO
+
+DISTCLEANFILES = $(twin3_smoothblend_la_METASOURCES)
diff --git a/twin-styles/smooth-blend/client/buttons.h b/twin-styles/smooth-blend/client/buttons.h
new file mode 100644
index 00000000..3d777144
--- /dev/null
+++ b/twin-styles/smooth-blend/client/buttons.h
@@ -0,0 +1,1798 @@
+/****************************************************************************
+** Image collection for project 'smoothblend'.
+**
+** Generated from reading image files: 
+**      circle.png
+**      close.png
+**      help.png
+**      keep_above_lit.png
+**      keep_above.png
+**      keep_below_lit.png
+**      keep_below.png
+**      maximize.png
+**      minimize.png
+**      restore.png
+**      shade.png
+**      splat.png
+**      titlealpha.png
+**      window_background.png
+**      window_foreground.png
+**
+** Created: Sun Jul 31 20:04:32 2005
+**      by: The User Interface Compiler ($Id$)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include <tqimage.h>
+#include <tqdict.h>
+#include <tqmime.h>
+#include <tqdragobject.h>
+
+// circle.png
+static const unsigned char image_0_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x09,0x4c,0x55,0x47,0x14,0x86,
+    0x51,0x2b,0xee,0x28,0x04,0x23,0x31,0x06,0x6d,0x50,0xa3,0x46,0x8d,0x4b,
+    0x24,0xae,0x18,0x8c,0xbb,0x56,0x50,0xc1,0x14,0x63,0xb0,0xda,0x52,0x53,
+    0x44,0xb1,0xb1,0x35,0x8a,0x8a,0x58,0x82,0x1b,0x45,0x52,0xb0,0x01,0xa9,
+    0xb5,0xa4,0x56,0xa0,0xa5,0x54,0x6d,0xc3,0x52,0x89,0xb1,0xd8,0xb2,0xd3,
+    0x57,0x40,0x2b,0xc8,0x8e,0xc8,0x0e,0x56,0x11,0x78,0x50,0x1e,0x6f,0xfa,
+    0x9f,0xf1,0xde,0x97,0x7b,0xe1,0xdd,0xc7,0x43,0x8b,0x30,0xc9,0x17,0x75,
+    0xee,0x3d,0x73,0xfe,0x99,0x3b,0xe7,0x9c,0x99,0xa7,0x89,0x49,0xb7,0x66,
+    0x03,0x3e,0x04,0x61,0x20,0x13,0x3c,0xe8,0x63,0xee,0x83,0x78,0x10,0x00,
+    0x76,0x81,0xb7,0xba,0x4b,0xd2,0x35,0x2b,0x10,0x0a,0x3a,0x00,0x13,0x31,
+    0x33,0x33,0xeb,0xe8,0x4b,0xc6,0x8c,0x19,0x23,0xf3,0x07,0xea,0xc1,0x01,
+    0x60,0xda,0x45,0x9f,0xf5,0xa0,0x41,0x83,0x1a,0xe9,0x1d,0x4b,0x4b,0xcb,
+    0x8e,0xa0,0xa0,0xa0,0xca,0xb4,0xb4,0xb4,0xe2,0x8e,0x8e,0x8e,0xbf,0x19,
+    0x63,0x7d,0x8e,0x5a,0xad,0x7e,0x78,0xfb,0xf6,0xed,0x52,0x1f,0x1f,0x9f,
+    0x1a,0x53,0x53,0xd3,0x4e,0x41,0xeb,0xef,0x92,0x35,0x35,0x87,0xbe,0x47,
+    0xd4,0x7f,0xfc,0xf8,0xf1,0x5a,0x8d,0x46,0xf3,0x46,0x74,0x29,0xd1,0xd4,
+    0xd4,0x94,0x67,0x67,0x67,0xf7,0x42,0xd0,0x19,0x26,0x68,0xfc,0x9c,0xfe,
+    0xbd,0x6f,0xdf,0xbe,0x86,0xfe,0xd4,0x26,0xe5,0xf9,0xf3,0xe7,0x79,0x33,
+    0x67,0xce,0x54,0x0b,0x3a,0xed,0x40,0x2e,0xad,0x6f,0x4b,0x4b,0xcb,0xc3,
+    0xfe,0xd6,0x26,0x25,0x22,0x22,0xe2,0xb1,0xa0,0xd1,0x17,0x68,0x17,0x2f,
+    0x5e,0xdc,0xdc,0xdf,0x9a,0xba,0x52,0x5f,0x5f,0x9f,0x3f,0x78,0xf0,0x60,
+    0x2d,0xf4,0xfd,0x46,0x5a,0x9d,0x9c,0x9c,0xfe,0x41,0xff,0xfd,0x81,0x06,
+    0x62,0x5e,0x23,0xe4,0x26,0xb6,0x6d,0xdb,0xb6,0x46,0xad,0x56,0xab,0x7a,
+    0x55,0x10,0xff,0xaa,0x8a,0x8a,0x8a,0xdc,0xc4,0xc4,0xc4,0x47,0x91,0x91,
+    0x91,0x45,0xc9,0xc9,0xc9,0x79,0x75,0x75,0x75,0x39,0xaf,0x33,0x26,0x31,
+    0x7a,0xf4,0xe8,0x0e,0x51,0xe3,0xd6,0xad,0x5b,0xeb,0xd1,0x97,0xd1,0x5b,
+    0x62,0x63,0x63,0xf3,0xf0,0x0d,0xea,0x47,0x8e,0x1c,0xa9,0xe9,0x92,0xe3,
+    0x38,0xd3,0xa6,0x4d,0x6b,0x39,0x76,0xec,0x58,0x45,0x71,0x71,0x71,0xf6,
+    0xab,0x8c,0x2f,0xd5,0xe8,0xe8,0xe8,0x58,0x87,0xb5,0x4d,0x31,0x96,0x9c,
+    0x9c,0x1c,0xd5,0x8a,0x15,0x2b,0x9e,0x8a,0x5a,0x86,0x0d,0x1b,0x46,0xfb,
+    0x85,0x1d,0x3e,0x7c,0x98,0x9d,0x3d,0x7b,0x96,0xb9,0xbb,0xbb,0x33,0x07,
+    0x07,0x07,0x86,0xfd,0xc4,0x9f,0x23,0x26,0xb5,0x5e,0x5e,0x5e,0x65,0xcd,
+    0xcd,0xcd,0x69,0xbd,0xf1,0x23,0xd5,0x88,0xf1,0x6a,0xd0,0x77,0xcf,0x18,
+    0x10,0x6f,0x0f,0x46,0x8d,0x1a,0xc5,0xd7,0x6d,0xee,0xdc,0xb9,0x2c,0x21,
+    0x21,0x81,0x61,0xce,0x4c,0x5f,0xc3,0x1e,0x60,0xe1,0xe1,0xe1,0xcc,0xc2,
+    0xc2,0x82,0x6b,0x9d,0x3d,0x7b,0x76,0x53,0x69,0x69,0x69,0x9a,0xb1,0xbe,
+    0xa0,0xf1,0x5f,0x51,0xe3,0x96,0x2d,0x5b,0xaa,0xd0,0x77,0xa7,0x27,0xae,
+    0x5e,0xbd,0x9a,0x4b,0xb1,0x86,0x75,0x61,0xd7,0xaf,0x5f,0xd7,0xab,0x4b,
+    0x5f,0xc3,0xfa,0xb1,0x0d,0x1b,0x36,0x70,0x9d,0x13,0x26,0x4c,0x50,0xd7,
+    0xd6,0xd6,0x26,0x19,0xe3,0x0f,0x6b,0xa1,0xd3,0xb8,0x79,0xf3,0xe6,0x4a,
+    0xf4,0xfd,0x6a,0x08,0xd4,0xc6,0xe4,0xe1,0xc3,0x87,0x6b,0x48,0x1f,0xfe,
+    0x6e,0xb4,0x3e,0x69,0xf3,0xf0,0xf0,0xe0,0x3a,0x91,0x9f,0x9f,0xa1,0xfe,
+    0x25,0xf6,0xe4,0x53,0xaa,0x71,0xd3,0xa6,0x4d,0x15,0xe8,0x8b,0x55,0xa2,
+    0xb3,0xb3,0x33,0x76,0xfa,0xf4,0xe9,0xcf,0x50,0x33,0xd9,0xcd,0x9b,0x37,
+    0xbb,0xf9,0xbe,0x7b,0xf7,0x2e,0x73,0x73,0x73,0x63,0xf3,0xe6,0xcd,0x63,
+    0xe6,0xe6,0xe6,0x6c,0xd5,0xaa,0x55,0xec,0xc4,0x89,0x13,0xac,0xb2,0xb2,
+    0x52,0xf6,0x1e,0xed,0x09,0xda,0xa7,0xe4,0xf3,0xc8,0x91,0x23,0x0f,0x0d,
+    0xf9,0x24,0xa4,0x1a,0x37,0x6e,0xdc,0xf8,0x18,0x7d,0xb7,0x94,0xc0,0x19,
+    0x83,0xce,0x68,0xcc,0xd9,0xd9,0x59,0xe6,0xb3,0xb5,0xb5,0x95,0xed,0xdf,
+    0xbf,0x9f,0x91,0x76,0x7a,0x4e,0x7f,0x4e,0x9e,0x3c,0xb9,0x49,0x8c,0xa5,
+    0xb1,0x63,0xc7,0xb2,0x98,0x98,0x18,0x99,0x4d,0x43,0x43,0x03,0xef,0xa7,
+    0xbd,0x86,0xfc,0x14,0x67,0xc8,0x2f,0x34,0xb6,0x8b,0x1a,0xb1,0x57,0xca,
+    0x31,0xc7,0x18,0x25,0xe6,0xcc,0x99,0x53,0x4f,0xfe,0x0b,0x0a,0x0a,0x64,
+    0xfe,0x76,0xee,0xdc,0x29,0xee,0xb1,0x96,0xa8,0xa8,0xa8,0x7b,0x38,0x8f,
+    0xf0,0xf7,0xdb,0xdb,0xdb,0x7f,0xf2,0xf3,0xf3,0xcb,0xc2,0xbe,0xe0,0xb1,
+    0x15,0x1d,0x1d,0x2d,0xb3,0xf3,0xf5,0xf5,0xe5,0x76,0xde,0xde,0xde,0x2a,
+    0x43,0x7e,0xa5,0x1a,0xd7,0xaf,0x5f,0x5f,0x0a,0xd3,0x28,0x7d,0x94,0x97,
+    0x97,0xdf,0xa0,0x38,0x41,0xbd,0x94,0xf9,0x41,0x6e,0xe4,0x7e,0xb0,0x07,
+    0x1a,0xa1,0xed,0x7b,0x7d,0xb6,0xc8,0xe5,0x71,0x43,0x87,0x0e,0xed,0xa4,
+    0xb8,0xc6,0x9a,0xe9,0x6c,0x4b,0x4a,0x4a,0xb8,0xed,0xa2,0x45,0x8b,0xaa,
+    0x94,0xfc,0x12,0xc8,0xbb,0x3a,0x8d,0x6b,0xd7,0xae,0x2d,0x46,0xdf,0x77,
+    0xfa,0x08,0x09,0x09,0xe1,0xf5,0xf2,0xf4,0xe9,0xd3,0x32,0x8d,0xcb,0x96,
+    0x2d,0xa3,0xfc,0xa7,0x45,0xae,0xbc,0xa1,0x64,0x4b,0x1c,0x3c,0x78,0x50,
+    0x45,0xf6,0xe7,0xce,0x9d,0x93,0xd9,0xcf,0x98,0x31,0x83,0xf2,0xaa,0xc6,
+    0x90,0xad,0x54,0xe3,0x9a,0x35,0x6b,0x8a,0xd0,0x17,0xae,0x8f,0xa3,0x47,
+    0x8f,0xa6,0xd2,0x3b,0xd7,0xae,0x5d,0xd3,0x8d,0x8f,0x75,0x63,0xb0,0x67,
+    0xd6,0xd6,0xd6,0x4f,0x95,0xec,0x44,0xb2,0xb3,0xb3,0x7f,0x24,0xfb,0xed,
+    0xdb,0xb7,0xcb,0x34,0x22,0x06,0xf8,0x5a,0x56,0x55,0x55,0x45,0x28,0xd9,
+    0xc2,0x47,0x9b,0xa8,0x71,0xf5,0xea,0xd5,0x05,0xf8,0xfe,0x57,0xf4,0xb1,
+    0x67,0xcf,0x9e,0x3f,0xe9,0x1d,0xca,0xd5,0x62,0x43,0x6d,0xe3,0xe3,0xa3,
+    0xd6,0x14,0x2b,0xd9,0x49,0xa1,0x7d,0x89,0x7c,0x23,0xd3,0xb8,0x7b,0xf7,
+    0x6e,0x3e,0x46,0x4a,0x4a,0x4a,0xb4,0x92,0x9d,0x54,0x23,0x72,0x45,0x3e,
+    0xcc,0x42,0xf4,0x71,0xe8,0xd0,0xa1,0x3f,0xe8,0x1d,0xc4,0x84,0x6e,0x7c,
+    0xe4,0x36,0x86,0x7d,0xc6,0x6c,0x6c,0x6c,0x6a,0x95,0xec,0x44,0x0a,0x0b,
+    0x0b,0xc3,0x85,0xb8,0x94,0x69,0x14,0x73,0x10,0xe6,0x1b,0xae,0x64,0x3b,
+    0x62,0xc4,0x08,0x9d,0x46,0x7b,0x7b,0xfb,0x3c,0xf4,0x05,0xeb,0xe3,0xfc,
+    0xf9,0xf3,0x74,0x67,0x63,0xfe,0xfe,0xfe,0x32,0x1f,0xf3,0xe7,0xcf,0x27,
+    0x9d,0x9a,0x9a,0x9a,0x9a,0xcb,0x4a,0xb6,0xc4,0xa9,0x53,0xa7,0x12,0xc9,
+    0xfe,0xe4,0xc9,0x93,0x32,0xfb,0x05,0x0b,0x16,0xb0,0x21,0x43,0x86,0x74,
+    0x62,0xdf,0x5c,0x52,0xb2,0x95,0x6a,0x5c,0xb9,0x72,0x25,0x9d,0x2b,0x03,
+    0xf5,0xa1,0x52,0xa9,0xae,0xd0,0x3b,0xeb,0xd6,0xad,0x93,0xf9,0x08,0x0e,
+    0x0e,0xe6,0xeb,0xb0,0x70,0xe1,0xc2,0x62,0x25,0x5b,0xe4,0xaa,0xcb,0xc8,
+    0x83,0x6a,0xaa,0x4d,0x45,0x45,0x45,0x3a,0x5b,0x8a,0x71,0xe8,0x63,0x53,
+    0xa7,0x4e,0xad,0x52,0xb2,0x25,0xa0,0x51,0x2d,0x6a,0xc4,0x1d,0xe7,0x01,
+    0xfa,0xfc,0x95,0x98,0x34,0x69,0x52,0x1d,0x8d,0x89,0xb3,0xb1,0xce,0x0f,
+    0x6a,0x0f,0xcd,0x8d,0xeb,0x9c,0x35,0x6b,0x56,0x19,0x62,0x23,0x54,0x6a,
+    0x13,0x1a,0x1a,0xfa,0xc3,0xb8,0x71,0xe3,0x78,0x3e,0x0f,0x08,0x08,0x90,
+    0xcd,0x0f,0xcf,0xb8,0xdd,0xde,0xbd,0x7b,0x93,0x0c,0xf9,0x95,0x6a,0x5c,
+    0xbe,0x7c,0x79,0x2e,0xfa,0xce,0x28,0x81,0xfb,0x18,0xff,0x5e,0x9e,0x9e,
+    0x9e,0x32,0x5f,0xd5,0xd5,0xd5,0xbc,0xfe,0x89,0x75,0x65,0xfc,0xf8,0xf1,
+    0x8d,0x38,0x0b,0x15,0x62,0x3e,0x3c,0x77,0xd3,0xbc,0x68,0x8f,0xd0,0x7c,
+    0xc4,0x46,0x7b,0x19,0xf9,0x80,0x7f,0x67,0xe4,0xad,0x60,0x43,0x7e,0x71,
+    0x3e,0xd0,0x69,0x44,0xae,0xcb,0x41,0xdf,0x67,0x4a,0xe0,0x9e,0xe6,0x87,
+    0x3c,0xfc,0x8c,0xbe,0x59,0x7e,0x7e,0x3e,0xeb,0xda,0x2e,0x5c,0xb8,0x40,
+    0x7b,0x9a,0xc7,0x11,0x8d,0x87,0x7a,0xc8,0x5c,0x5c,0x5c,0x58,0x56,0x56,
+    0x56,0xb7,0x77,0x91,0xcb,0x98,0x50,0x7f,0x53,0x0d,0xf9,0x24,0xa4,0x1a,
+    0x97,0x2e,0x5d,0xfa,0x17,0xfa,0xbc,0x0d,0x81,0xef,0xf3,0x0d,0xea,0xa1,
+    0xd6,0xd2,0xd2,0x92,0x3d,0x79,0xf2,0xa4,0x9b,0x6f,0xb1,0x61,0x3e,0x8a,
+    0xcf,0xe8,0x3c,0x42,0xfe,0x70,0x4f,0x79,0x51,0x56,0x56,0x76,0xa6,0x27,
+    0x9f,0xd0,0xd8,0x2a,0x6a,0x44,0x9d,0x53,0xa1,0xcf,0xab,0x27,0xb0,0x36,
+    0x09,0xf4,0xfe,0xc4,0x89,0x13,0x59,0x66,0x66,0xa6,0xa2,0x16,0x7d,0x8d,
+    0xd6,0x9a,0xce,0xe5,0xa8,0x2d,0xed,0x71,0x71,0x71,0x81,0xc6,0xf8,0x93,
+    0x6a,0xb4,0xb5,0xb5,0xa5,0x8f,0xf2,0xa9,0x31,0xb8,0xba,0xba,0xfe,0x4c,
+    0xeb,0x49,0xdf,0x15,0x75,0x4e,0x16,0x47,0xfa,0x5a,0x46,0x46,0x06,0x5b,
+    0xb2,0x64,0x09,0x5f,0x3f,0xc4,0x78,0x13,0xce,0xc6,0x5f,0x18,0xeb,0x0b,
+    0xf3,0xd1,0x69,0x44,0x6d,0xcf,0x40,0xdf,0xc7,0xc6,0x82,0x3b,0xcb,0x65,
+    0x61,0x8e,0x7c,0x6d,0x50,0xa7,0xf8,0x59,0x86,0xea,0x65,0x7c,0x7c,0x3c,
+    0x0b,0x0b,0x0b,0xe3,0xe7,0x47,0xaa,0x2d,0x62,0x3c,0x41,0x67,0x6a,0x7a,
+    0x7a,0xba,0x4f,0x6f,0xfc,0x48,0x35,0x22,0xc7,0xa5,0xa3,0xef,0x40,0x6f,
+    0x40,0x7c,0x7a,0xe2,0xae,0xf6,0x8b,0x95,0x95,0x55,0x85,0xbe,0x3b,0xa1,
+    0xa0,0xbf,0x93,0xc6,0xbe,0x78,0xf1,0x62,0x50,0x6f,0xc7,0x27,0xa0,0xb1,
+    0x45,0xd4,0x88,0x9c,0x4f,0x31,0xf6,0xd1,0xab,0x92,0x94,0x94,0xe4,0x85,
+    0xf3,0x62,0x10,0xf6,0x41,0x24,0xee,0x46,0xb7,0x90,0xab,0xbe,0x45,0xce,
+    0x09,0xc4,0x39,0xd2,0xfd,0x75,0xc6,0x95,0x6a,0x44,0x8e,0xa3,0xbb,0xa2,
+    0xdb,0x40,0x03,0xb9,0x4e,0xa7,0x11,0x67,0x83,0x6c,0xf4,0xbd,0x37,0x90,
+    0x68,0x6c,0x6c,0xfc,0x00,0x7b,0x85,0x6a,0x41,0x1a,0x28,0x41,0x8c,0xb6,
+    0x60,0x7f,0xb9,0xe2,0xd9,0xae,0x81,0x02,0xce,0xd4,0x67,0x84,0x7d,0x1d,
+    0x08,0xf8,0x99,0x61,0xc7,0x8e,0x1d,0x5f,0xe1,0xd9,0xbb,0x03,0x01,0xec,
+    0x63,0x17,0x9c,0x11,0xee,0x0b,0x1a,0xdf,0x01,0x6f,0x03,0xba,0x97,0x6a,
+    0x90,0x2f,0x28,0x37,0x38,0xf5,0x27,0x38,0xab,0x39,0x23,0x86,0xe3,0x04,
+    0x7d,0x74,0x07,0x10,0x7f,0x6f,0xb6,0x07,0x74,0x97,0x65,0x53,0xa6,0x4c,
+    0x49,0x45,0x4d,0xf8,0x04,0xef,0x3a,0xc2,0xc6,0xe1,0x4d,0xd1,0xd6,0xd6,
+    0xe6,0xe8,0xe1,0xe1,0xe1,0x8b,0x3c,0x5f,0x2d,0xe8,0x2b,0x00,0x16,0x26,
+    0xf2,0x66,0x2b,0xc6,0x90,0x80,0xd6,0xcc,0xcc,0xac,0x1c,0xf7,0xd2,0x9c,
+    0x3e,0x26,0x17,0x67,0xb0,0x3a,0x89,0x5f,0xfa,0xcd,0xfe,0x6b,0x93,0x97,
+    0xff,0xcf,0xa1,0xd4,0xde,0x07,0x5f,0x82,0x0c,0xd0,0xae,0x94,0x9f,0xff,
+    0x67,0xaa,0xc0,0x1d,0x93,0x97,0xbf,0xcd,0x5b,0x76,0x15,0xf4,0x1f,0x5e,
+    0xdb,0x58,0x54
+};
+
+// close.png
+static const unsigned char image_1_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x6b,0x4c,0x14,0x57,0x14,0xc7,
+    0x51,0x09,0xf8,0xc4,0x67,0x51,0x8b,0x60,0xd0,0xc4,0x0f,0x46,0xa2,0xe2,
+    0x5b,0x8c,0xaf,0x88,0x6f,0x03,0x1f,0x68,0x2c,0x49,0x51,0x2c,0x42,0x42,
+    0x02,0x18,0x24,0x88,0xa9,0x48,0x52,0x2a,0xa8,0x10,0x4b,0xb0,0xb6,0xb5,
+    0x49,0xdb,0x14,0x53,0x28,0x6b,0x40,0x62,0x08,0x5a,0x1f,0x60,0xd2,0x92,
+    0x15,0x57,0x58,0x1f,0x6b,0x17,0x90,0xa7,0x02,0x45,0x8b,0x08,0x08,0x08,
+    0xfb,0xbc,0xfd,0x9f,0xc9,0x0c,0x9d,0x0e,0x33,0xbb,0x53,0x13,0x8a,0x37,
+    0xf9,0x7f,0xd8,0xbb,0x73,0xee,0xf9,0xcd,0x7d,0x9c,0x73,0xee,0xb8,0xb8,
+    0x0c,0x6b,0xbe,0x50,0x24,0xf4,0x1d,0xa4,0x83,0x9e,0x8c,0xb0,0x0c,0xd0,
+    0xaf,0xd0,0x97,0x50,0x18,0xe4,0x3a,0x1c,0x69,0xa8,0x79,0x42,0x17,0x20,
+    0x33,0xc4,0x04,0x79,0x78,0x78,0x58,0x46,0x5a,0x62,0x7f,0x50,0x27,0x14,
+    0x0f,0xb9,0x4b,0xf8,0xbc,0xc6,0x8c,0x19,0xd3,0x41,0xcf,0xcc,0x9c,0x39,
+    0xd3,0x92,0x9d,0x9d,0xdd,0x76,0xf7,0xee,0xdd,0x06,0x8b,0xc5,0x62,0x64,
+    0x8c,0xfd,0x31,0xd2,0x1a,0x18,0x18,0x30,0xde,0xbe,0x7d,0xbb,0x29,0x35,
+    0x35,0xf5,0x85,0xbb,0xbb,0xbb,0x8d,0x67,0xad,0x80,0xdc,0x78,0x3e,0x0f,
+    0xf0,0xd1,0x9c,0xb3,0xe3,0xc7,0x8f,0xbf,0x04,0xd7,0x88,0x33,0x39,0x52,
+    0x5f,0x5f,0x9f,0x71,0xeb,0xd6,0xad,0xbd,0x3c,0x67,0x0e,0xcf,0x98,0x46,
+    0xbf,0xc3,0xc3,0xc3,0x3b,0x47,0x93,0x4d,0xc2,0x59,0xed,0xe7,0xe7,0xf7,
+    0x96,0xe7,0x0c,0xa4,0x73,0xe1,0xea,0xea,0x6a,0xef,0xe9,0xe9,0xa9,0x1e,
+    0x6d,0x36,0xb1,0xae,0x5c,0xb9,0xf2,0x8c,0x67,0xcc,0x80,0x6c,0xcb,0x97,
+    0x2f,0x7f,0x3b,0xda,0x4c,0x52,0xd1,0x9c,0x8d,0x1b,0x37,0xce,0xce,0xef,
+    0x4b,0xb6,0x6f,0xdf,0xbe,0x6e,0xf4,0x1b,0xe4,0x64,0xb3,0xd9,0x0c,0x67,
+    0xce,0x9c,0x69,0x0b,0x0a,0x0a,0xea,0xda,0xbc,0x79,0xf3,0x9b,0x93,0x27,
+    0x4f,0xb6,0xdf,0xba,0x75,0xab,0x41,0xe9,0x79,0x25,0x99,0xcd,0xe6,0x27,
+    0x79,0x79,0x79,0xcd,0xc1,0xc1,0xc1,0x5d,0x7b,0xf7,0xee,0xed,0x0e,0x0d,
+    0x0d,0x7d,0x5d,0x57,0x57,0x57,0xe3,0xc8,0x86,0xce,0x2f,0xf8,0x9e,0x12,
+    0xe3,0x9e,0x3d,0x7b,0x5e,0xdb,0xed,0x76,0xbd,0x54,0x26,0x93,0xe9,0xc1,
+    0xd2,0xa5,0x4b,0xfb,0x24,0xb1,0x81,0xd3,0xae,0x5d,0xbb,0xba,0xda,0xdb,
+    0xdb,0x1f,0xcb,0xd9,0x49,0x75,0xf3,0xe6,0xcd,0x5a,0x4f,0x4f,0x4f,0xb3,
+    0x74,0x0c,0x9c,0x55,0x96,0x9c,0x9c,0xdc,0xaa,0x64,0x07,0x46,0xb3,0xc0,
+    0xb8,0x7b,0xf7,0xee,0x4e,0xf4,0xe9,0xa4,0x82,0xfd,0x73,0xfa,0x7f,0xe3,
+    0xc6,0x8d,0x4c,0xa7,0xd3,0xb1,0x8e,0x8e,0x0e,0x96,0x9f,0x9f,0xcf,0xd6,
+    0xaf,0x5f,0xcf,0xf9,0x98,0x38,0x71,0xa2,0x0d,0x73,0x6a,0x94,0xb3,0x15,
+    0x74,0xf6,0xec,0xd9,0xa6,0xb1,0x63,0xc7,0x72,0x3c,0x51,0x51,0x51,0xcc,
+    0x68,0x34,0xb2,0xd6,0xd6,0x56,0xa6,0xd5,0x6a,0xd9,0xbc,0x79,0xf3,0x18,
+    0xad,0x67,0x45,0x45,0x85,0x41,0xce,0x76,0xc6,0x8c,0x19,0x62,0xc6,0x0e,
+    0xcc,0xad,0x56,0x2a,0x1f,0x1f,0x9f,0x01,0x70,0x30,0xec,0x0d,0x26,0x6e,
+    0x56,0xab,0x95,0xa5,0xa5,0xa5,0x31,0x9c,0x35,0xe2,0xb4,0x5e,0xbf,0x7e,
+    0xdd,0x20,0x67,0x9f,0x94,0x94,0xc4,0xed,0xfb,0x39,0x73,0xe6,0xb0,0xfb,
+    0xf7,0xef,0x33,0x69,0x2b,0x28,0x28,0x60,0x7c,0x4c,0xf9,0x53,0xce,0x1e,
+    0x8c,0x26,0x81,0x71,0xe7,0xce,0x9d,0x7f,0xa1,0xef,0x37,0xa9,0x66,0xcd,
+    0x9a,0x65,0x5a,0xb0,0x60,0xc1,0xb0,0xb1,0x85,0x76,0xf9,0xf2,0x65,0x31,
+    0xe7,0x43,0xb1,0x6d,0x62,0x62,0x62,0x13,0x8d,0xed,0xed,0xed,0xcd,0xea,
+    0xeb,0xeb,0x65,0xed,0xab,0xab,0xab,0x39,0xc6,0x90,0x90,0x90,0x76,0x39,
+    0xff,0x62,0xc6,0x1d,0x3b,0x76,0xbc,0x40,0x5f,0xa9,0x54,0x18,0xbf,0x7f,
+    0xd2,0xa4,0x49,0xac,0xbf,0xbf,0x5f,0x15,0x67,0x49,0x49,0x49,0x25,0xd9,
+    0x25,0x24,0x24,0xd4,0xd3,0xb8,0xb4,0x96,0x4a,0x7c,0xd4,0xae,0x5d,0xbb,
+    0xc6,0x31,0x1e,0x38,0x70,0xe0,0xb9,0x9c,0xff,0xe9,0xd3,0xa7,0x0f,0x0a,
+    0x8c,0xdb,0xb7,0x6f,0xa7,0xf7,0xb8,0x21,0x55,0x64,0x64,0x64,0x23,0xfd,
+    0x9f,0x93,0x93,0xa3,0xe8,0x47,0xcc,0x49,0x79,0x2c,0x3a,0x3a,0xba,0x41,
+    0x0d,0x1f,0xb5,0xfd,0xfb,0xf7,0x73,0x8c,0xc5,0xc5,0xc5,0xf7,0xe4,0xfc,
+    0x8b,0x19,0x03,0x03,0x03,0x69,0x3f,0x94,0x48,0xa5,0xd7,0xeb,0xef,0xd0,
+    0x9e,0xc6,0x9a,0xb3,0x96,0x96,0x16,0x55,0x9c,0x6a,0xf9,0x0a,0x0b,0x0b,
+    0xb9,0x67,0xe7,0xcf,0x9f,0xdf,0x8b,0xf8,0x36,0xcc,0x37,0x49,0xcc,0xb8,
+    0x6d,0xdb,0xb6,0x56,0xf4,0x5d,0x95,0xd3,0x89,0x13,0x27,0x1e,0xd3,0x33,
+    0xcb,0x96,0x2d,0x63,0xc8,0x51,0x4e,0x39,0x7d,0x7d,0x7d,0x9d,0xf2,0xd5,
+    0xd6,0xd6,0x52,0x3d,0x45,0xf3,0x6e,0x2d,0x2f,0x2f,0x2f,0x53,0xf2,0x3d,
+    0x6d,0xda,0xb4,0x01,0x81,0x11,0x39,0xbc,0x05,0x67,0xbd,0x50,0x49,0xf4,
+    0x3f,0x3d,0xb7,0x76,0xed,0x5a,0xd6,0xdd,0xdd,0xed,0xd0,0xff,0xe0,0xe0,
+    0xa0,0xc3,0xff,0x2b,0x2b,0x2b,0x19,0xe6,0x87,0x8b,0x45,0x17,0x2f,0x5e,
+    0xd4,0x3a,0xf2,0x2b,0x66,0xdc,0xb2,0x65,0xcb,0x33,0x98,0xe7,0x2b,0x09,
+    0x39,0x42,0x83,0xb9,0x6e,0x16,0x38,0xa5,0xb1,0x48,0x6d,0xab,0xaa,0xaa,
+    0xe2,0xf8,0x10,0x2f,0xed,0xe9,0xe9,0xe9,0xf7,0x1c,0xf9,0x24,0x89,0x19,
+    0x91,0xe3,0x9a,0xd1,0xf7,0xb3,0x23,0x81,0x33,0x17,0xf3,0xd9,0xf4,0xae,
+    0x9c,0x62,0xbe,0x53,0xa7,0x4e,0x69,0x9d,0xf9,0x23,0x4d,0x9d,0x3a,0xf5,
+    0xad,0xc0,0xb8,0x69,0xd3,0xa6,0x46,0xf4,0xfd,0xe4,0x4c,0xe0,0xcc,0xc1,
+    0x9c,0x37,0xfc,0x57,0x4e,0x31,0x1f,0xea,0xd8,0x72,0x35,0xbe,0x48,0x62,
+    0x46,0xe4,0xba,0x06,0xac,0xff,0xf7,0x6a,0x04,0xce,0x1f,0xe6,0xce,0x9d,
+    0xdb,0xcd,0xc7,0x5e,0xa7,0x7c,0xc8,0xf9,0x6c,0xf2,0xe4,0xc9,0xdc,0x19,
+    0x46,0x1d,0xf1,0x48,0xad,0x1f,0x12,0xce,0xd5,0x10,0xe3,0x86,0x0d,0x1b,
+    0xea,0x30,0xdc,0xb7,0x6a,0x84,0x9c,0x5b,0xa1,0x36,0xbe,0x08,0x4d,0xa3,
+    0xd1,0x70,0x71,0x69,0xc2,0x84,0x09,0x66,0x9c,0xfd,0x22,0xb5,0xbe,0xc0,
+    0xd8,0x2f,0x30,0x06,0x04,0x04,0x3c,0x45,0xdf,0x57,0xce,0x74,0xf8,0xf0,
+    0x61,0xed,0x7f,0xe5,0x93,0x72,0x8e,0x1f,0x3f,0xde,0x8c,0xba,0xa4,0x40,
+    0x8d,0x3f,0x31,0x23,0xea,0x98,0x5a,0xf4,0x65,0x39,0x52,0x44,0x44,0x44,
+    0xf9,0xbb,0xf2,0xc9,0x71,0xa2,0x96,0xd4,0x38,0xf3,0x39,0x65,0xca,0x94,
+    0x3e,0x81,0x71,0xdd,0xba,0x75,0x74,0x4f,0xc8,0x54,0xd2,0xd1,0xa3,0x47,
+    0x6f,0xf0,0x7c,0xf6,0x77,0xe5,0x93,0x72,0xba,0xb9,0xb9,0x59,0x8a,0x8a,
+    0x8a,0x2e,0x39,0xf2,0x2b,0x66,0x5c,0xb3,0x66,0x0d,0xd5,0xe7,0xe9,0x72,
+    0xca,0xca,0xca,0xd2,0x50,0xbc,0xf5,0xf2,0xf2,0x62,0x8d,0x8d,0x8d,0x0e,
+    0xfd,0x23,0x77,0x52,0xed,0xeb,0xf4,0xbc,0x83,0x8d,0xe3,0xc4,0x5a,0xf6,
+    0xa1,0x9e,0xcc,0x56,0xf2,0x2d,0x66,0x5c,0xbd,0x7a,0xf5,0x13,0xf4,0xa5,
+    0x4a,0x85,0xda,0xe9,0x1c,0xd6,0xc5,0x84,0x9c,0xc5,0xc5,0x0f,0x47,0x4d,
+    0x88,0x2f,0x6a,0xe3,0x12,0x6a,0x5f,0xee,0xd9,0xc5,0x8b,0x17,0xd7,0xcb,
+    0xf9,0x26,0x21,0x1e,0xf4,0x0a,0x8c,0x2b,0x57,0xae,0xa4,0x1a,0x35,0x45,
+    0xaa,0xb0,0xb0,0x30,0x6e,0x8d,0x71,0x9f,0x51,0xc3,0x67,0xa7,0xf9,0x5e,
+    0xb4,0x68,0x91,0xaa,0xf8,0x89,0xd8,0x42,0xeb,0xc7,0x71,0xa2,0xa6,0xbb,
+    0x20,0xe7,0x5f,0xcc,0xb8,0x62,0xc5,0x8a,0x47,0xe8,0xfb,0x4c,0x2a,0xac,
+    0x6f,0x1b,0xad,0x09,0xdd,0x11,0x54,0xf0,0xd9,0xe3,0xe3,0xe3,0x0b,0x90,
+    0xaf,0x93,0x57,0xad,0x5a,0xf5,0x50,0x0d,0x67,0x6e,0x6e,0x2e,0xc7,0x88,
+    0x7b,0x58,0x99,0x9c,0x7f,0xd4,0xae,0x43,0x8c,0xb8,0xbb,0x52,0x0d,0x9d,
+    0x28,0x15,0xde,0xe3,0xcd,0xc2,0x85,0x0b,0x55,0xf1,0xc5,0xc5,0xc5,0x69,
+    0x04,0x3b,0x70,0x26,0xe1,0xbd,0xf5,0xce,0x38,0x6b,0x6a,0x6a,0x18,0x7f,
+    0x66,0x75,0x72,0xfe,0xc1,0xf8,0x46,0x60,0x44,0xdd,0xa5,0x47,0x5f,0xbc,
+    0x54,0xc8,0x45,0x9d,0x10,0xb3,0x58,0x2c,0xc3,0xc6,0x37,0x18,0x0c,0x43,
+    0x7c,0x31,0x31,0x31,0x79,0x52,0x5b,0x70,0x26,0xf8,0xfb,0xfb,0x57,0xf1,
+    0x73,0xc0,0x5e,0xbd,0x7a,0x35,0x6c,0x8c,0xd2,0xd2,0x52,0xc6,0xe7,0xb9,
+    0xdf,0xe5,0xfc,0x8b,0x19,0x71,0x3f,0xa5,0x03,0x11,0x2b,0x15,0x6a,0x8d,
+    0x32,0xfa,0xff,0xe0,0xc1,0x83,0x0c,0x39,0x90,0x1b,0x97,0x6a,0xb3,0x94,
+    0x94,0x14,0xae,0xb6,0x22,0xbe,0xd8,0xd8,0xd8,0x4b,0x72,0xb6,0x24,0xd8,
+    0xc4,0x2d,0x59,0xb2,0xe4,0x01,0x7f,0x87,0x64,0xe7,0xcf,0x9f,0x1f,0xaa,
+    0xdd,0xba,0xba,0xba,0x18,0xde,0x81,0x63,0xcc,0xc8,0xc8,0xb8,0x20,0x67,
+    0x0f,0x9b,0x1e,0x81,0xd1,0xcf,0xcf,0x8f,0x2e,0x6d,0xd1,0x52,0x35,0x37,
+    0x37,0xd3,0xbb,0xd0,0x73,0x14,0x77,0x19,0xf2,0xb4,0xf8,0x9b,0x5f,0x27,
+    0xea,0xbf,0x0c,0x39,0x3b,0xa9,0x70,0xf6,0x7e,0xc1,0xbe,0xe6,0xbe,0xe1,
+    0x51,0x8c,0xa0,0xba,0x5e,0xa8,0xd9,0x71,0xae,0xf5,0x4a,0x76,0x62,0x46,
+    0xbc,0x2b,0xed,0x87,0x48,0x39,0xe1,0x8e,0x10,0x83,0xf3,0x77,0x07,0xe3,
+    0xb6,0xa2,0x9e,0x7b,0x89,0x73,0x54,0x7f,0xe8,0xd0,0xa1,0x1c,0xf0,0xc7,
+    0x2a,0xd9,0xc8,0xa9,0xac,0xac,0x2c,0x09,0x77,0xe4,0xab,0xb8,0xd7,0xb7,
+    0x61,0x8f,0xb4,0xe3,0x3e,0xdb,0x84,0xdc,0xff,0x23,0xf6,0x51,0x94,0x92,
+    0x8d,0x98,0x11,0x77,0x0a,0x8a,0xe1,0xe1,0xef,0x93,0x7a,0x7b,0x7b,0x23,
+    0x70,0x97,0xa2,0x6f,0x00,0x14,0x23,0x8c,0x98,0xf7,0x41,0xec,0x33,0xfa,
+    0xef,0x93,0xf7,0x45,0x99,0x99,0x99,0xa9,0xfc,0xbe,0xfa,0x06,0xfa,0x9a,
+    0x8f,0x51,0x54,0x57,0x7e,0xfc,0x3e,0xc8,0x6a,0xb5,0x86,0x62,0x6d,0x1f,
+    0xf0,0x8c,0x1f,0x41,0xde,0x50,0x27,0xce,0xa8,0xed,0xd8,0xb1,0x63,0x5f,
+    0xe0,0x99,0x90,0xd1,0x14,0xee,0xb1,0x21,0xc8,0xcd,0xc5,0x3c,0x5f,0xa5,
+    0xcb,0x3f,0xdf,0x9b,0x03,0x20,0xba,0xcb,0x32,0x1f,0x1f,0x1f,0xdd,0xe9,
+    0xd3,0xa7,0x13,0xf1,0x2e,0xc1,0xb0,0x09,0xfa,0xbf,0x84,0x7a,0x3d,0xf8,
+    0xc8,0x91,0x23,0x9f,0xa3,0x8e,0x68,0xe3,0xf9,0xe8,0xfb,0xc3,0x07,0x2e,
+    0xff,0x6e,0xfe,0xfc,0xfe,0x14,0xe2,0x8b,0x1d,0xf1,0xe5,0xf9,0xec,0xd9,
+    0xb3,0x1f,0x8d,0xb0,0x1e,0xe3,0xfc,0xbe,0x14,0xf9,0xa5,0x6f,0xf6,0xf4,
+    0x1d,0xfc,0x43,0x17,0xe5,0xf6,0x29,0xbf,0x47,0xef,0x41,0x26,0x91,0xed,
+    0x48,0xea,0x05,0x44,0xf9,0xe2,0x9c,0xcc,0xdc,0xb9,0xfc,0x0d,0x45,0xac,
+    0x59,0xc3
+};
+
+// help.png
+static const unsigned char image_2_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x54,0x57,0x14,0xc6,
+    0x87,0x45,0x45,0x21,0x4a,0x88,0x62,0x70,0xa9,0x31,0x11,0x81,0x49,0xf9,
+    0x03,0x35,0x51,0x13,0xa8,0x46,0x0c,0x51,0x5c,0x80,0x88,0x0a,0x14,0x65,
+    0x73,0x90,0x56,0x6b,0x42,0x6b,0x95,0x42,0x5a,0x1a,0xda,0x50,0x81,0xa6,
+    0x18,0xa0,0x6c,0x51,0x94,0x68,0x59,0x9a,0x94,0x06,0x2d,0x20,0x18,0x62,
+    0xa1,0x4a,0x0c,0x1d,0xb0,0xa0,0xa3,0x50,0x36,0xab,0x23,0x3b,0x8a,0xd0,
+    0x11,0xcb,0x00,0xb7,0xdf,0x7d,0x1d,0xc8,0xcc,0xe5,0xbd,0x99,0x37,0x29,
+    0x88,0x37,0xf9,0x65,0xc8,0xe1,0xcd,0x39,0xdf,0x9c,0x77,0xee,0xb9,0xe7,
+    0x3d,0x89,0x64,0xda,0x32,0x03,0xfe,0x20,0x11,0xfc,0x02,0xee,0x83,0x07,
+    0xb3,0x8c,0x1c,0x5c,0x04,0x9f,0x80,0x77,0xa7,0x4b,0xd2,0xd1,0x16,0x06,
+    0x9e,0x01,0x32,0x89,0xa5,0xa5,0xe5,0xd8,0xe2,0xc5,0x8b,0xd5,0xb3,0x89,
+    0x99,0x99,0xd9,0x84,0x56,0xcc,0x71,0x90,0x0b,0xde,0x61,0xf4,0x99,0x82,
+    0x32,0x7a,0x8d,0xb9,0xb9,0xf9,0x44,0x4c,0x4c,0x4c,0x4f,0x59,0x59,0x59,
+    0x47,0x67,0x67,0x67,0x13,0x21,0x44,0x31,0xdb,0x8c,0x8d,0x8d,0x29,0xe4,
+    0x72,0x79,0x6b,0x7a,0x7a,0xfa,0x33,0x3b,0x3b,0xbb,0x51,0xaa,0xc3,0xc4,
+    0xc4,0x64,0x18,0x9f,0x0e,0x5a,0x1a,0xcf,0x51,0xfb,0xa6,0x4d,0x9b,0x54,
+    0x83,0x83,0x83,0x8f,0xde,0x84,0x2e,0x21,0x26,0x26,0x26,0x14,0x71,0x71,
+    0x71,0xdd,0xd0,0x48,0x75,0x3e,0x85,0x2e,0x3b,0xe0,0x48,0xf5,0xad,0x59,
+    0xb3,0xe6,0x9f,0xee,0xee,0xee,0x37,0x92,0x37,0x31,0x44,0x45,0x45,0xf5,
+    0x68,0xee,0x7d,0x0e,0x88,0xa4,0x7f,0xa7,0xa5,0xa5,0x3d,0x9b,0x6b,0x5d,
+    0xec,0xfd,0xb7,0xb6,0xb6,0x56,0x23,0x97,0x4a,0xe8,0xfb,0x99,0x6a,0x6c,
+    0x6e,0x6e,0xfe,0x73,0xae,0x75,0xb1,0xec,0xda,0xb5,0xeb,0xa5,0x26,0x97,
+    0x55,0xf4,0x13,0xba,0xef,0xc3,0xae,0x43,0x76,0x76,0xf6,0xd3,0xe5,0xcb,
+    0x97,0x8f,0xd2,0x7d,0x34,0x53,0x2c,0x5c,0xb8,0x70,0x7c,0xc3,0x86,0x0d,
+    0xaa,0xa3,0x47,0x8f,0x0e,0xa4,0xa4,0xa4,0x28,0xd5,0x6a,0xf5,0xb4,0xb8,
+    0x93,0xc8,0x64,0xb2,0x7e,0x46,0x63,0x3d,0xea,0x55,0x07,0xa9,0x54,0xaa,
+    0x32,0x35,0x35,0x25,0x9b,0x37,0x6f,0x9e,0x31,0xb0,0x2f,0xe9,0x5e,0x98,
+    0xea,0x6d,0x4b,0x97,0x2e,0x1d,0xbd,0x71,0xe3,0x46,0x33,0x1b,0x9b,0x12,
+    0x16,0x16,0xd6,0xc3,0x68,0xac,0x85,0x5d,0x07,0x07,0x07,0x07,0x95,0x95,
+    0x95,0x15,0x99,0xe9,0x85,0x58,0xa4,0xb6,0xb6,0x96,0xc4,0xc7,0xc7,0x13,
+    0xf4,0x46,0xb2,0x72,0xe5,0xca,0xd7,0xc8,0xe7,0xb4,0xf8,0xa1,0xa1,0xa1,
+    0xdd,0x8c,0xc6,0x1a,0x7c,0x5d,0x07,0x68,0xfc,0x7b,0x36,0x34,0x6a,0xaf,
+    0xc0,0xc0,0x40,0x2e,0x9f,0x55,0x55,0x55,0x0d,0x6c,0xfc,0x90,0x90,0x90,
+    0x4e,0x6d,0x8d,0xe3,0xe3,0xe3,0xd5,0xb0,0xeb,0xb0,0x7e,0xfd,0xfa,0x59,
+    0xd7,0x78,0xfa,0xf4,0x69,0x4e,0x63,0x45,0x45,0xc5,0x3d,0x36,0x7e,0x70,
+    0x70,0xb0,0x92,0xd1,0x58,0x09,0xbb,0x0e,0xce,0xce,0xce,0x83,0xf4,0x7f,
+    0x8b,0x16,0x2d,0x32,0x1a,0xfa,0xdb,0x4e,0x9d,0x3a,0x25,0x5a,0x23,0x6a,
+    0x52,0xce,0xc6,0xc7,0xbe,0x7a,0xc2,0xdc,0xeb,0x72,0xd8,0x75,0xb8,0x76,
+    0xed,0x5a,0xed,0xd6,0xad,0x5b,0xfb,0x90,0xcf,0x97,0xc6,0x02,0x8d,0x6a,
+    0xea,0x17,0xe7,0x82,0x28,0x8d,0x38,0x7b,0xef,0xb2,0xf1,0x8f,0x1c,0x39,
+    0xf2,0x98,0xc9,0x63,0x09,0xec,0x33,0xc6,0xce,0x9d,0x3b,0xb9,0x5a,0x52,
+    0x2a,0x95,0xa2,0x34,0x96,0x96,0x96,0xde,0x61,0x7d,0xa0,0x56,0xdb,0x99,
+    0x3c,0x16,0xc3,0x3e,0x63,0xb8,0xbb,0xbb,0x2b,0x8d,0xd1,0x58,0x52,0x52,
+    0x52,0xcd,0xfa,0x08,0x08,0x08,0x68,0xd3,0xd6,0x88,0xbd,0x5f,0x84,0xfd,
+    0xfe,0x93,0x21,0xca,0xcb,0xcb,0x2b,0xcf,0x9e,0x3d,0xdb,0xb0,0x67,0xcf,
+    0x9e,0x8e,0xb5,0x6b,0xd7,0x0e,0xae,0x58,0xb1,0x62,0x98,0x0f,0x0b,0x0b,
+    0x0b,0xee,0x5e,0xf7,0xf4,0xf4,0x88,0xd2,0x78,0xfd,0xfa,0xf5,0x5b,0x6c,
+    0x2c,0x7f,0x7f,0xff,0x16,0x26,0x8f,0x85,0xf8,0x4a,0x81,0x3e,0xb0,0xcf,
+    0x14,0xda,0xb3,0xe5,0xfc,0xf9,0xf3,0x89,0xad,0xad,0x2d,0x2f,0x98,0xb1,
+    0x48,0x74,0x74,0xb4,0x5e,0x7d,0xda,0x1a,0x51,0xfb,0x37,0xd9,0x78,0x87,
+    0x0f,0x1f,0x6e,0x66,0x34,0xfe,0x00,0xfb,0x55,0x21,0x12,0x13,0x13,0x6f,
+    0x6b,0xe6,0x23,0x92,0x99,0x99,0x49,0x1a,0x1b,0x1b,0x69,0x0d,0x1b,0xd4,
+    0x60,0x68,0xed,0xd8,0xb1,0x83,0xfe,0xd6,0x71,0xd4,0xc4,0x8f,0x6c,0xcc,
+    0x43,0x87,0x0e,0x3d,0x62,0x34,0xe6,0xc2,0x7e,0x59,0x08,0x9c,0xb1,0xdc,
+    0x7c,0xde,0xda,0xda,0x6a,0x30,0x2e,0xd5,0x3e,0x32,0x32,0xc2,0xcb,0x8b,
+    0x17,0x2f,0x68,0x2f,0x24,0x49,0x49,0x49,0x64,0xe3,0xc6,0x8d,0x5c,0x0e,
+    0x71,0x56,0xf4,0xf2,0xc5,0xf4,0xf5,0xf5,0x55,0x30,0xf5,0x78,0x11,0x35,
+    0x70,0x81,0x8f,0x57,0xaf,0x5e,0xe5,0xcc,0x9b,0x37,0x6f,0xcc,0xc9,0xc9,
+    0xc9,0xa0,0xbe,0xd8,0xd8,0x58,0x42,0xcf,0x78,0xed,0x9a,0xd0,0xc7,0xb6,
+    0x6d,0xdb,0x5a,0x1f,0x3e,0x7c,0x98,0xc7,0x17,0xf7,0xc0,0x81,0x03,0xf7,
+    0x99,0x3c,0x66,0x22,0x44,0x06,0x1f,0xe8,0x71,0xf4,0x79,0x88,0x78,0x7a,
+    0x7a,0x1a,0xd4,0x88,0x99,0x8f,0xde,0x3b,0x35,0xfa,0xff,0x53,0x3e,0x5c,
+    0x5c,0x5c,0xfe,0xc2,0x5e,0xa8,0x4b,0x48,0x48,0xa8,0xa8,0xaf,0xaf,0xbf,
+    0x2a,0x14,0x93,0xe2,0xe3,0xe3,0xd3,0xc0,0x68,0x4c,0x83,0x3d,0x95,0x0f,
+    0x68,0xcc,0x12,0xab,0x71,0xc9,0x92,0x25,0x64,0xd5,0xaa,0x55,0xfd,0x42,
+    0xbe,0x8c,0xc1,0xdb,0xdb,0xfb,0x1e,0xa3,0xf1,0x3c,0xec,0xc9,0x7c,0x74,
+    0x75,0x75,0x7d,0x4f,0xaf,0xa1,0xf5,0xd3,0xd4,0xd4,0xa4,0x17,0x7a,0x06,
+    0x62,0x8e,0xe9,0x13,0xf2,0x65,0x0c,0xfb,0xf7,0xef,0xaf,0x67,0x34,0x7e,
+    0x0b,0x7b,0x12,0x1f,0x43,0x43,0x43,0xdf,0xa1,0x1e,0xd5,0x62,0x6b,0x0c,
+    0x75,0xfb,0x58,0xc8,0x97,0x31,0xec,0xdb,0xb7,0x4f,0xce,0x68,0xfc,0x06,
+    0xf6,0x78,0x21,0x2e,0x5d,0xba,0x74,0x05,0x7d,0xe2,0xde,0x96,0x2d,0x5b,
+    0x14,0xeb,0xd6,0xad,0x7b,0x82,0x1e,0x38,0x80,0xf9,0xf4,0xf9,0xb2,0x65,
+    0xcb,0x9e,0xaf,0x5e,0xbd,0xba,0xdb,0xd1,0xd1,0xb1,0x63,0xfb,0xf6,0xed,
+    0x7f,0xe0,0x7c,0xa9,0xc7,0x9c,0x95,0xa1,0xcf,0x97,0x58,0x70,0x4e,0xd4,
+    0x32,0x1a,0xbf,0x82,0x3d,0x4e,0x08,0xec,0xb3,0x38,0xd4,0xc7,0x6d,0xec,
+    0xd9,0x09,0xa1,0xfc,0xe1,0x6c,0x79,0x9d,0x93,0x93,0x73,0x59,0x9f,0x1f,
+    0x63,0xd8,0xbd,0x7b,0xf7,0x5d,0xa6,0xf7,0xc4,0xc2,0xfe,0x85,0x10,0x7b,
+    0xf7,0xee,0xfd,0x8d,0x5e,0x87,0xe7,0x1b,0x92,0x95,0x95,0x45,0x6a,0x6a,
+    0x6a,0x48,0x7b,0x7b,0x3b,0x69,0x6b,0x6b,0x23,0x85,0x85,0x85,0xe4,0xd8,
+    0xb1,0x63,0xf4,0xfd,0x01,0xa1,0x35,0x81,0x19,0x26,0x55,0x9f,0x2f,0xb1,
+    0xe0,0x99,0xab,0x86,0xc9,0x63,0x0c,0xec,0xd1,0x7c,0x60,0xcf,0x7c,0x89,
+    0x99,0x7e,0x0c,0xf7,0x94,0xa0,0x36,0x89,0xd0,0xca,0xcd,0xcd,0xe5,0xf2,
+    0xe9,0xea,0xea,0xfa,0xbb,0x90,0x2f,0x63,0xf0,0xf0,0xf0,0xb8,0xcd,0xe4,
+    0xf1,0x0c,0xec,0x9f,0xf2,0x91,0x91,0x91,0x91,0x4e,0xaf,0x89,0x8c,0x8c,
+    0x14,0xd4,0x47,0x17,0x3d,0x5f,0xe8,0x7c,0x8b,0x5a,0xed,0x12,0xf2,0x65,
+    0x0c,0x98,0xef,0xaa,0x19,0x8d,0x1f,0xc3,0x1e,0xc9,0x47,0x71,0x71,0x31,
+    0xf7,0xae,0xe5,0xe0,0xc1,0x83,0x7a,0x35,0xf6,0xf6,0xf6,0x72,0xcf,0x7c,
+    0x98,0x87,0x5a,0x84,0x7c,0x19,0x03,0xf6,0xe8,0xaf,0x8c,0x46,0x3a,0xd8,
+    0x7f,0x24,0x04,0x7a,0xf3,0x00,0x8d,0x9f,0x9a,0x9a,0x4a,0xb0,0x7f,0xa6,
+    0xe9,0x53,0xa9,0x54,0xdc,0x7c,0x40,0x7d,0xf9,0xf9,0xf9,0x15,0xe9,0xf3,
+    0x25,0x16,0xf4,0x89,0x5b,0x8c,0xc6,0x0f,0x61,0xff,0x40,0x88,0xfc,0xfc,
+    0xfc,0xaf,0x17,0x2c,0x58,0x30,0x42,0xaf,0x45,0x8f,0x26,0x5e,0x5e,0x5e,
+    0xe4,0xf8,0xf1,0xe3,0x24,0x3c,0x3c,0x9c,0x60,0xde,0x98,0x7a,0x66,0x46,
+    0x5f,0x7a,0x00,0xbd,0x27,0xf4,0xf9,0x12,0x0b,0xce,0xf2,0x4a,0x46,0x63,
+    0x38,0xec,0x32,0x7d,0x54,0x57,0x57,0x9f,0x41,0x7f,0x96,0xe3,0x3c,0x1e,
+    0x61,0xfb,0x8e,0x8d,0x8d,0x4d,0x57,0x50,0x50,0xd0,0x95,0xe1,0xe1,0xe1,
+    0x08,0x43,0x7e,0xc4,0xe2,0xe6,0xe6,0x76,0x53,0xe3,0x9f,0x7b,0xef,0x58,
+    0x57,0x57,0x47,0xf3,0x1b,0x2c,0x96,0xa2,0xa2,0xa2,0xa8,0xbc,0xbc,0xbc,
+    0x98,0x82,0x82,0x82,0x68,0xfc,0xbe,0x10,0x63,0xbe,0x2b,0x16,0xcc,0x20,
+    0x77,0x34,0x1a,0x3f,0xa7,0x9f,0x27,0x4f,0x9e,0x4c,0x81,0x3d,0xf0,0x6d,
+    0x02,0x67,0x7f,0x1f,0xb4,0x0d,0x00,0x57,0xaa,0x11,0xfd,0xa2,0x05,0xbd,
+    0xef,0x7d,0xfc,0xcf,0xef,0x6d,0x20,0x22,0x22,0xe2,0xbc,0x26,0x87,0x45,
+    0x92,0xff,0x16,0xf7,0x7e,0x4f,0x2a,0x95,0xde,0x1a,0x1d,0x1d,0xa5,0x0d,
+    0xc6,0x77,0x2e,0xc1,0x8c,0xfe,0x19,0xce,0x5c,0xfa,0xce,0x59,0x05,0xa4,
+    0x1a,0x8d,0x96,0x80,0x9b,0xd5,0xd0,0x83,0xfb,0x64,0x32,0xd9,0x39,0xcc,
+    0xf5,0x3e,0xb8,0xde,0xeb,0x4d,0x81,0xfe,0xef,0x95,0x9c,0x9c,0x1c,0x69,
+    0x6f,0x6f,0x4f,0x7b,0x22,0x9d,0x09,0xe8,0xbb,0x7b,0x2f,0x89,0xee,0xb2,
+    0x01,0xa9,0x60,0x6a,0x06,0xc3,0x8c,0xd0,0x8f,0xf3,0xb9,0x11,0x34,0xcc,
+    0x26,0x98,0x9d,0x14,0x1a,0x5d,0x93,0x7d,0x82,0x3e,0x0f,0xbe,0x27,0x11,
+    0x5e,0xd6,0x20,0x01,0x54,0x00,0xa5,0x44,0x22,0x6e,0x66,0xfc,0x9f,0xd0,
+    0xfb,0x5a,0x07,0xae,0x80,0x13,0xc0,0x44,0x5b,0xd0,0xbf,0x6f,0xf5,0xde,
+    0xd4
+};
+
+// keep_above_lit.png
+static const unsigned char image_3_data[] = {
+    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x15,0x57,0x14,0xc6,
+    0x11,0x31,0xa2,0x28,0xae,0xb8,0xc7,0xdd,0x58,0x97,0x18,0xe3,0x82,0x1a,
+    0x71,0x89,0x26,0xfd,0x83,0x54,0x6b,0x5d,0x08,0x1a,0xb4,0xb8,0xa0,0x52,
+    0x45,0x2c,0x2e,0x68,0x5d,0x2a,0xc6,0x82,0x40,0x28,0x34,0x48,0x31,0x96,
+    0x96,0x1a,0xaa,0x88,0xd5,0x82,0x28,0x60,0x01,0x2b,0x8b,0x20,0x8b,0xec,
+    0xfb,0xe2,0x82,0x28,0x22,0xa4,0x96,0x36,0x61,0x7f,0xbc,0xe9,0x77,0xa6,
+    0x33,0xe9,0xf5,0xf0,0xa0,0x56,0xfa,0x8a,0x37,0xf9,0x85,0x97,0xf9,0x66,
+    0xe6,0x7c,0x33,0x73,0xef,0x39,0xe7,0x62,0x60,0xd0,0x6e,0xf4,0x00,0x1b,
+    0x80,0x2b,0x08,0x05,0xb9,0x20,0x5f,0xcf,0x64,0x82,0x8b,0xe0,0x08,0x30,
+    0x6f,0x6f,0xa9,0x9d,0xbf,0xf5,0xa0,0x0c,0x48,0x2a,0x7d,0xfa,0xf4,0x69,
+    0x33,0x35,0x35,0x6d,0xd5,0x27,0x46,0x46,0x46,0x5a,0x31,0x26,0x08,0x03,
+    0xd3,0x3a,0xf0,0x49,0xcf,0x23,0x19,0x1a,0x1a,0x6a,0x9d,0x9c,0x9c,0x6a,
+    0xc2,0xc3,0xc3,0x9f,0x54,0x54,0x54,0x94,0x48,0x92,0x54,0xa0,0x6f,0x34,
+    0x1a,0x4d,0x41,0x4e,0x4e,0x4e,0xf9,0x85,0x0b,0x17,0x9e,0x8d,0x1f,0x3f,
+    0xbe,0x99,0x7c,0xf4,0xe8,0xd1,0xa3,0x05,0x7f,0x17,0x32,0x8f,0x0e,0xa4,
+    0x4d,0x99,0x32,0xa5,0xb1,0xa6,0xa6,0xa6,0xf8,0xff,0xf0,0xd6,0x19,0x5e,
+    0x5e,0x5e,0x55,0x3d,0x7b,0xf6,0xd4,0xc2,0x6b,0x1d,0x7c,0xbd,0xa7,0x78,
+    0x34,0x03,0x6d,0x83,0x07,0x0f,0x6e,0x2d,0x29,0x29,0x29,0xed,0x6e,0x8f,
+    0x2a,0x7e,0x7e,0x7e,0xcf,0x95,0x39,0x10,0xad,0xf8,0xa4,0x35,0x23,0x39,
+    0x3b,0x3b,0xbf,0xec,0x6e,0x6f,0x9c,0xa9,0x53,0xa7,0x36,0xe2,0x9d,0x36,
+    0xc1,0x9f,0x31,0xf0,0x25,0x9f,0xd1,0xd1,0xd1,0x8f,0xbb,0xdb,0x17,0x67,
+    0xfb,0xf6,0xed,0xbf,0x2a,0xef,0x74,0x29,0xb8,0x4c,0xbf,0xcb,0xcb,0xcb,
+    0x69,0x5e,0xe6,0xe9,0xa2,0xb5,0xb5,0x35,0xcf,0xd2,0xd2,0xb2,0x6e,0xf4,
+    0xe8,0xd1,0xcd,0xbd,0x7a,0xf5,0xd2,0xd2,0xfa,0xec,0x0a,0xfd,0xfb,0xf7,
+    0xd7,0x4c,0x9f,0x3e,0xbd,0x01,0xeb,0xa6,0xb2,0xa3,0x98,0xc4,0xa9,0x53,
+    0xa7,0x5e,0x28,0x3e,0xd7,0xa8,0x3e,0xcb,0xca,0xca,0xf2,0xb5,0x5a,0x6d,
+    0x26,0x27,0x26,0x26,0xa6,0xa4,0x77,0xef,0xde,0x6d,0x6a,0xce,0xc0,0x6f,
+    0x69,0xd8,0xb0,0x61,0x5d,0x42,0xcc,0x41,0xd3,0xa6,0x4d,0xab,0xc7,0x7a,
+    0x6f,0x17,0x97,0x38,0x79,0xf2,0xe4,0x33,0xee,0xb3,0xb4,0xb4,0x34,0x1b,
+    0x5a,0x9a,0xc8,0x8b,0x17,0x2f,0x32,0xe9,0xfd,0x91,0xbe,0x62,0xc5,0x0a,
+    0xe9,0xc1,0x83,0x07,0x12,0x8e,0x4b,0x5d,0x1d,0xf0,0x25,0x45,0x46,0x46,
+    0x4a,0x63,0xc6,0x8c,0x91,0xbd,0xce,0x9f,0x3f,0xff,0x0f,0x1e,0x9b,0x38,
+    0x71,0xe2,0xc4,0x53,0x1d,0x3e,0x33,0x70,0x8b,0x64,0x11,0x6b,0x6b,0xeb,
+    0x6a,0xd2,0x56,0xaf,0x5e,0xdd,0x65,0x6f,0xba,0x46,0x55,0x55,0x95,0x84,
+    0x3c,0x43,0xb9,0x52,0xaa,0xae,0xae,0x4e,0xe3,0xf1,0x8f,0x1f,0x3f,0xfe,
+    0x84,0xfb,0x44,0x4e,0x4a,0x85,0x96,0x20,0x82,0x9c,0xdb,0x40,0xda,0xfd,
+    0xfb,0xf7,0xf5,0xe2,0x93,0xc6,0xae,0x5d,0xbb,0xe4,0x77,0x8a,0x6f,0x5c,
+    0xce,0xe3,0x1f,0x3b,0x76,0xec,0x21,0xf7,0x59,0x5c,0x5c,0x9c,0x04,0xed,
+    0x8e,0xc8,0xd0,0xa1,0x43,0x29,0x27,0x48,0xb5,0xb5,0xb5,0x7a,0xf3,0xe9,
+    0xe9,0xe9,0x29,0xfb,0xdc,0xba,0x75,0x6b,0x05,0x8f,0x7f,0xf4,0xe8,0xd1,
+    0x32,0x1d,0x3e,0xe3,0xa1,0xfd,0x2c,0xa2,0xfa,0x7c,0xf9,0xf2,0xa5,0xde,
+    0x7c,0xba,0xbb,0xbb,0xcb,0x3e,0xb7,0x6d,0xdb,0xf6,0x88,0xc7,0x3f,0x72,
+    0xe4,0x48,0x31,0xf7,0x59,0x54,0x54,0xf4,0x0b,0xb4,0x08,0x11,0xf8,0x6c,
+    0x24,0x0d,0xeb,0x49,0x6f,0x3e,0xcf,0x9e,0x3d,0xab,0xfa,0x7c,0xc8,0xe3,
+    0x1f,0x3e,0x7c,0xb8,0x90,0xfb,0x2c,0x2c,0x2c,0x8c,0x86,0x76,0x43,0x04,
+    0x3e,0xe5,0xf9,0x39,0x61,0xc2,0x04,0xaa,0xfd,0x7a,0x61,0xc8,0x90,0x21,
+    0xaa,0xcf,0x52,0x1e,0xff,0xd0,0xa1,0x43,0xf9,0xdc,0x67,0x41,0x41,0x41,
+    0x24,0x72,0xc1,0x75,0x11,0xd4,0xad,0x57,0xa4,0x0d,0x18,0x30,0xa0,0x69,
+    0xd0,0xa0,0x41,0x7a,0xa1,0x6f,0xdf,0xbe,0xad,0xca,0x3a,0xca,0xe2,0xf1,
+    0x0f,0x1c,0x38,0x90,0xab,0xc3,0x67,0x38,0x9e,0xe1,0x8a,0xc8,0xd2,0xa5,
+    0x4b,0x9f,0x2a,0xb5,0x2a,0x8c,0x6b,0x1d,0x51,0x5f,0x5f,0x7f,0xb5,0xa9,
+    0xa9,0x29,0xe4,0x4d,0xcf,0x47,0x5f,0x91,0x41,0x31,0x7c,0x7c,0x7c,0x92,
+    0xb8,0x86,0xfe,0x32,0x8b,0xfb,0xcc,0xcf,0xcf,0x0f,0x85,0xf6,0x83,0xc8,
+    0x92,0x25,0x4b,0x2a,0x94,0x5a,0x75,0x9d,0x6b,0xba,0xf0,0xf5,0xf5,0x8d,
+    0x47,0xbd,0xd2,0xa0,0xb7,0x6e,0x09,0x0a,0x0a,0x8a,0x7d,0x93,0x6b,0xf0,
+    0x6d,0xd3,0x29,0x86,0xb7,0xb7,0x77,0x22,0xd7,0xf6,0xef,0xdf,0x9f,0xc1,
+    0x7d,0xe6,0xe5,0xe5,0xfd,0x08,0xed,0x7b,0x11,0x0b,0x0b,0x8b,0x27,0x4a,
+    0x0d,0x08,0xe1,0x1a,0x27,0x22,0x22,0xe2,0x26,0xf5,0xd8,0xa8,0xdd,0xd4,
+    0x6b,0x53,0x7d,0x6d,0x45,0xef,0xdb,0xee,0x9e,0x9c,0x83,0x07,0x0f,0xa6,
+    0x52,0x0c,0xf4,0x9c,0x71,0x5c,0x73,0x74,0x74,0x4c,0xe7,0x3e,0x71,0xcf,
+    0x60,0xcc,0x89,0x00,0x91,0xc5,0x8b,0x17,0x3f,0x52,0x6a,0xc0,0x25,0xae,
+    0x89,0xb4,0xb5,0xb5,0x05,0x8c,0x1b,0x37,0x4e,0xee,0x6d,0xd0,0x0f,0x48,
+    0x81,0x81,0x81,0xf2,0xda,0xa0,0xeb,0x3b,0xbb,0x8e,0xc0,0xb7,0x4d,0xa6,
+    0x73,0x91,0x47,0xef,0x70,0xcd,0xc1,0xc1,0x21,0x85,0xfb,0xcc,0xce,0xce,
+    0x0e,0xc2,0x33,0xf8,0x8b,0x2c,0x5a,0xb4,0xe8,0xa1,0xe2,0xf3,0x22,0xd7,
+    0x44,0xdc,0xdc,0xdc,0x62,0xe8,0xbc,0x8d,0x1b,0x37,0xca,0xb9,0x86,0x7a,
+    0x80,0xd9,0xb3,0x67,0xcb,0xf5,0x30,0x36,0x36,0x36,0xa4,0xb3,0x6b,0xf1,
+    0x6d,0xef,0xd1,0xb5,0xc8,0xa3,0xd1,0x5c,0xdb,0xb3,0x67,0x4f,0xb2,0x0e,
+    0x9f,0x81,0xd0,0x7c,0x45,0x16,0x2e,0x5c,0x58,0xa6,0xd4,0x80,0x6f,0xb9,
+    0xa6,0xd2,0xd2,0xd2,0x72,0x6e,0xe4,0xc8,0x91,0xaf,0xd0,0xaf,0xd1,0xfc,
+    0x90,0xd4,0x11,0x1a,0x1a,0x2a,0xbf,0x53,0xac,0xc5,0xe2,0x8e,0xae,0x25,
+    0xf0,0x6d,0xe3,0xe9,0x3c,0xe4,0xd1,0x28,0xae,0xd9,0xdb,0xdb,0xdf,0xe3,
+    0x3e,0xb3,0xb2,0xb2,0x02,0xa0,0x79,0x8b,0x2c,0x58,0xb0,0xa0,0x54,0xa9,
+    0x01,0x17,0xb8,0xa6,0x82,0xf5,0x1a,0xa3,0xd4,0x3d,0x49,0x1c,0x98,0x0b,
+    0xd2,0x8c,0x19,0x33,0xe4,0x7d,0x61,0x6a,0x6a,0xea,0x77,0x1d,0x5d,0x8f,
+    0x6f,0x7b,0x97,0xae,0x77,0x75,0x75,0x8d,0xe0,0xda,0xee,0xdd,0xbb,0xe3,
+    0xb9,0xcf,0x8c,0x8c,0x8c,0xf3,0xd0,0x3c,0x45,0xcc,0xcd,0xcd,0x4b,0x94,
+    0x1a,0xf0,0x35,0xd7,0x88,0xcb,0x97,0x2f,0x5f,0x42,0xdf,0xa7,0xe9,0xd7,
+    0xaf,0x9f,0x84,0xbd,0xa9,0xc4,0x47,0x70,0x70,0xb0,0xfc,0x4e,0xd1,0xbf,
+    0xd5,0xa0,0x47,0xf0,0xd1,0x75,0x0f,0x7c,0xdb,0x3b,0x74,0xce,0x99,0x33,
+    0x67,0xc2,0xb9,0xb6,0x73,0xe7,0xce,0xbb,0xdc,0x27,0x7a,0xcb,0x73,0xd0,
+    0x5c,0x45,0xe6,0xcd,0x9b,0x57,0xa4,0xe4,0xd6,0xaf,0xb8,0x96,0x90,0x90,
+    0xe0,0x0f,0x7f,0x0d,0xd8,0x17,0x4a,0x58,0xeb,0xed,0x3c,0xaa,0x03,0xb1,
+    0x64,0xaf,0xb8,0x57,0x31,0xde,0xb1,0x1b,0xbf,0x0f,0xbe,0x2d,0xed,0xd3,
+    0xa4,0xd3,0xa7,0x4f,0x87,0x72,0x6d,0xc7,0x8e,0x1d,0xb1,0xdc,0x67,0x7a,
+    0x7a,0x3a,0x3d,0xef,0x69,0x91,0xb9,0x73,0xe7,0x16,0x2a,0x39,0xeb,0x4b,
+    0xf1,0x78,0x5d,0x5d,0x9d,0xab,0x99,0x99,0x99,0xbc,0xbe,0xfd,0xfd,0xfd,
+    0x3b,0xf4,0x48,0xa3,0xb9,0xb9,0x59,0x42,0x1e,0x96,0xbd,0x6e,0xde,0xbc,
+    0xf9,0x0e,0x8f,0x81,0xbe,0xee,0x36,0x69,0xd8,0x63,0x5c,0xe3,0x1a,0x6a,
+    0x69,0x34,0xf7,0x89,0x39,0xe4,0x05,0xed,0xa4,0xc8,0x9c,0x39,0x73,0xe4,
+    0xfa,0x9a,0x9b,0x9b,0xeb,0x21,0x1e,0x5f,0xb6,0x6c,0x99,0x9c,0xd7,0xf6,
+    0xee,0xdd,0xdb,0xa9,0x47,0x75,0xa0,0x46,0x49,0x58,0x6b,0x5a,0xbc,0x7b,
+    0x4d,0x58,0x58,0x98,0x9f,0x78,0x2f,0x3b,0x3b,0xbb,0x08,0xa5,0x6e,0x86,
+    0xf0,0xf8,0xb6,0xb6,0xb6,0xb7,0xb9,0xcf,0x94,0x94,0x14,0x77,0x68,0x9f,
+    0x89,0x20,0xb7,0xe4,0x29,0xb9,0xd5,0x4d,0x3d,0x56,0x59,0x59,0xe9,0xa2,
+    0xf6,0x26,0xf4,0xae,0x68,0x50,0x1e,0xa2,0x9e,0x0a,0x39,0x43,0xde,0x4f,
+    0x24,0x27,0x27,0x4b,0x38,0xef,0xb5,0x3d,0x4a,0x78,0x78,0xb8,0xfa,0xfd,
+    0x73,0xc4,0x18,0xd8,0x53,0xde,0xa4,0xe3,0xe8,0xdd,0x83,0x79,0xfc,0x2d,
+    0x5b,0xb6,0x44,0x72,0x9f,0xb8,0xf7,0x17,0xd0,0x0e,0x89,0xe0,0x9e,0xf4,
+    0xff,0x29,0x29,0x2a,0x2a,0xca,0x43,0x3d,0x86,0x35,0x75,0x0a,0x6b,0x58,
+    0xde,0xd7,0x0d,0x1c,0x38,0x50,0x6b,0x62,0x62,0xf2,0xda,0xbe,0x4c,0x84,
+    0xf2,0xe7,0xc4,0x89,0x13,0xe5,0x75,0x3f,0x73,0xe6,0x4c,0xf9,0xd8,0xe4,
+    0xc9,0x93,0x4b,0xc5,0x18,0xeb,0xd6,0xad,0x93,0xdf,0x99,0x8b,0x8b,0x4b,
+    0x20,0x8f,0x6f,0x63,0x63,0x73,0x93,0xfb,0x4c,0x4a,0x4a,0x72,0x81,0xf6,
+    0xa9,0x08,0x9e,0xe7,0x27,0xd2,0x36,0x6c,0xd8,0x70,0x4b,0x3c,0xee,0xe1,
+    0xe1,0x71,0x7e,0xec,0xd8,0xb1,0x8f,0xb0,0x77,0xac,0x1a,0x31,0x62,0xc4,
+    0xb3,0x51,0xa3,0x46,0x3d,0x85,0x8f,0x1c,0xd4,0xd9,0xa4,0xb5,0x6b,0xd7,
+    0x46,0xae,0x5c,0xb9,0xf2,0xee,0xac,0x59,0xb3,0xb2,0xb1,0xce,0x9f,0xa0,
+    0x8e,0xd6,0x19,0x1b,0x1b,0xd3,0x7a,0xd3,0x60,0x2f,0x54,0x8b,0xba,0xef,
+    0xa5,0xde,0x07,0xfb,0x6d,0x27,0xba,0x5e,0xc9,0x37,0x9f,0xf3,0xf8,0x9b,
+    0x36,0x6d,0xba,0xc1,0x7d,0x26,0x26,0x26,0xd2,0x9c,0x70,0x10,0x49,0x4b,
+    0x4b,0x3b,0x8e,0xbc,0xd3,0x8c,0xf7,0xa2,0x5d,0xb5,0x6a,0x55,0x64,0x63,
+    0x63,0xa3,0x23,0x3f,0xe7,0x6d,0x41,0x0f,0x76,0x18,0x7b,0x62,0xb9,0x6f,
+    0xa3,0xbf,0xba,0xce,0xc1,0x3e,0x32,0x94,0xfb,0x8c,0x8f,0x8f,0xa7,0x39,
+    0x61,0xcf,0x41,0xbf,0xe5,0x45,0x5e,0xe9,0x1c,0xd4,0x9c,0x96,0x49,0x93,
+    0x26,0x15,0xa0,0xbf,0xcd,0xeb,0x0a,0xe8,0xbf,0x9f,0xab,0x73,0x07,0xdf,
+    0xa4,0x12,0xfb,0x1a,0x47,0x5d,0xb1,0xad,0xac,0xac,0xae,0x71,0x9f,0x71,
+    0x71,0x71,0xce,0xd0,0xec,0x74,0x81,0xbe,0x6e,0x1f,0xe6,0x6a,0x22,0xfa,
+    0x5a,0xda,0x27,0xf3,0xff,0x55,0xfe,0x6b,0xf0,0x7d,0xda,0x30,0x27,0xca,
+    0x2c,0x2d,0x2d,0x6f,0xa0,0x57,0xdd,0xd5,0x51,0x5c,0xcc,0xdd,0xab,0x82,
+    0xcf,0x6f,0xe8,0x77,0x40,0x40,0x00,0xcd,0x0f,0xdb,0x7f,0x02,0xb9,0x73,
+    0x07,0xea,0xf8,0x27,0x6f,0x0b,0x9e,0xd9,0xfe,0x4d,0xe2,0x10,0xcb,0x97,
+    0x2f,0xbf,0xa5,0xf8,0x7c,0x1f,0x6c,0xa5,0xdf,0x6b,0xd6,0xac,0xa1,0x7e,
+    0xc9,0xe6,0x5d,0x02,0x6b,0x8c,0xfa,0x0b,0x0d,0x18,0x00,0xc6,0x93,0x4f,
+    0x53,0x53,0xd3,0x2a,0xd4,0xe8,0x8f,0xa1,0x5b,0xbf,0x0b,0xf8,0xf9,0xf9,
+    0x1d,0xc5,0xfc,0x20,0x8f,0x69,0x06,0x7f,0x8f,0x73,0xe4,0x15,0xb9,0x26,
+    0xb3,0xa1,0xa1,0xc1,0x0a,0xe7,0xad,0xef,0x4e,0x90,0xbb,0x1c,0xb1,0x76,
+    0xeb,0xe1,0x89,0xf6,0x78,0x16,0x82,0x4f,0x23,0x83,0xbf,0xfe,0x6f,0x4b,
+    0xfb,0x85,0xdf,0xd1,0xef,0x7a,0xa3,0xd6,0x7d,0x84,0x6b,0x3e,0xfc,0x3f,
+    0x41,0xaf,0xb0,0x0f,0x79,0x37,0x52,0x79,0x8f,0x34,0x2f,0xed,0x0d,0xda,
+    0x0f,0x13,0x70,0x06,0x34,0xaa,0xeb,0x12,0x9e,0x7f,0x1b,0x3e,0x7c,0x78,
+    0x2e,0xc8,0xd1,0x27,0xc8,0x4d,0xf9,0x94,0x03,0x84,0x9c,0x50,0x09,0x3e,
+    0xd0,0xe1,0x51,0x1c,0xfd,0x14,0xbf,0x54,0x5b,0x1f,0xff,0x17,0x79,0xe8,
+    0x0d,0xa0,0xf7,0x97,0x03,0xae,0x00,0x27,0x60,0xc8,0x4d,0xfd,0x09,0xc2,
+    0x58,0x25,0x81
+};
+
+// keep_above.png
+static const unsigned char image_4_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x6b,0x4c,0x54,0x47,0x14,0xc7,
+    0x57,0xf1,0x81,0xe2,0x03,0x71,0xf1,0x85,0x8a,0xf8,0x16,0xc5,0xf7,0x03,
+    0xe5,0x83,0xb1,0xfa,0xc5,0x17,0x35,0xda,0x0f,0x0d,0x41,0xd3,0x10,0x5a,
+    0x62,0x93,0x26,0x6d,0x08,0x58,0x8c,0xb5,0xd4,0x3e,0x68,0x81,0x60,0xb4,
+    0xa8,0x24,0x85,0x56,0xa2,0xb5,0x08,0x02,0xb1,0x46,0x2d,0x52,0x8b,0x0a,
+    0xc5,0xb4,0xe9,0x23,0xed,0xea,0x56,0x40,0x40,0x11,0x76,0x81,0x5d,0x40,
+    0x14,0x5c,0xd8,0x95,0xbd,0xfd,0x9f,0x75,0x86,0x4e,0x67,0xef,0x22,0xa5,
+    0xae,0x78,0x93,0x5f,0x80,0x73,0xee,0xcc,0xfc,0x77,0xe6,0x9c,0x33,0x33,
+    0x8b,0x46,0xe3,0xf4,0xf8,0x81,0x48,0x70,0x04,0xfc,0x04,0x6e,0x3c,0x07,
+    0x0a,0xc1,0x61,0x10,0x01,0x7c,0x9d,0x25,0x75,0x3f,0xde,0xe0,0x33,0x60,
+    0x01,0x0a,0x67,0xd4,0xa8,0x51,0x36,0x77,0x23,0x8e,0x07,0x1e,0x80,0x7d,
+    0xc0,0x4b,0xd2,0xe7,0x33,0x60,0xc0,0x80,0xbb,0x4c,0xd3,0xe3,0xe4,0xe4,
+    0x64,0x43,0x71,0x71,0x71,0xa5,0xd5,0x6a,0xd5,0x2b,0x8a,0x72,0xd3,0xdd,
+    0x74,0x76,0x76,0xea,0x8b,0x8a,0x8a,0xaa,0x12,0x12,0x12,0x8c,0xc3,0x87,
+    0x0f,0x7f,0xcc,0xb4,0xde,0x14,0x74,0x7a,0x82,0x52,0xb2,0x87,0x87,0x87,
+    0x37,0x3f,0x2f,0x5d,0xae,0xb0,0x58,0x2c,0xfa,0xd0,0xd0,0xd0,0xfb,0x4c,
+    0xe7,0x39,0xe0,0x01,0xde,0xa6,0xbf,0xb7,0x6e,0xdd,0xda,0x6a,0xb7,0xdb,
+    0xfb,0x4d,0x9b,0x08,0xcd,0x53,0x48,0x48,0x48,0x1b,0xd3,0x19,0x06,0x2e,
+    0xd0,0xef,0x55,0x55,0x55,0x65,0xfd,0xad,0x4d,0xa4,0xa4,0xa4,0xa4,0x92,
+    0x69,0xfc,0x8a,0x72,0xc4,0xdf,0xdf,0xbf,0xb3,0xbf,0x35,0xc9,0xd8,0x6c,
+    0xb6,0x9b,0x23,0x47,0x8e,0xa4,0xd8,0x74,0x68,0x5d,0xb3,0x66,0xcd,0x43,
+    0xd8,0x75,0xae,0x30,0x1a,0x8d,0xfa,0x15,0x2b,0x56,0xb4,0xf9,0xf8,0xf8,
+    0xd8,0x06,0x0d,0x1a,0x64,0xff,0x3f,0x0c,0x1e,0x3c,0xd8,0xae,0xd5,0x6a,
+    0x6d,0x34,0x66,0x4b,0x4b,0x8b,0xbe,0xa7,0x71,0x67,0xcd,0x9a,0x65,0x41,
+    0x2e,0x3b,0x62,0x73,0xf5,0xea,0xd5,0x0f,0x10,0x8b,0xbf,0xa9,0xb1,0x73,
+    0xe7,0x4e,0x93,0x58,0x1b,0x46,0x8f,0x1e,0xad,0x8c,0x1b,0x37,0xae,0xcf,
+    0x8c,0x18,0x31,0x42,0xac,0x33,0x4a,0x4c,0x4c,0x8c,0xc1,0xd5,0xd8,0xa2,
+    0xc6,0xe0,0xe0,0x60,0xca,0x97,0x9f,0x65,0x92,0x92,0x92,0xaa,0xf1,0x8e,
+    0xe2,0xe5,0xe5,0xa5,0x64,0x66,0x66,0x2a,0x98,0x4f,0xe5,0x59,0x3c,0x3a,
+    0x9d,0x4e,0x89,0x8b,0x8b,0x53,0x30,0xa7,0x0a,0xf5,0x7f,0xfa,0xf4,0xe9,
+    0x32,0xb5,0xf1,0x67,0xce,0x9c,0xf9,0x88,0x6b,0x5c,0xb5,0x6a,0xd5,0x7d,
+    0x34,0x2d,0x95,0x41,0x3c,0xd8,0xa8,0x8f,0xab,0x57,0xaf,0x3e,0x13,0x6d,
+    0xf2,0x73,0xf4,0xe8,0x51,0xc7,0x5c,0xfa,0xf9,0xf9,0x59,0xd4,0xc6,0x87,
+    0xc6,0x76,0xae,0x71,0xe5,0xca,0x95,0x2d,0xb0,0x5d,0x13,0x69,0x6b,0x6b,
+    0x2b,0x21,0x7d,0x73,0xe7,0xce,0x75,0x8b,0x3e,0x7a,0x50,0x63,0x14,0xd4,
+    0x6c,0xc5,0xc3,0xc3,0xc3,0x2e,0x8f,0x4f,0xcc,0x98,0x31,0xa3,0x8d,0x6b,
+    0x44,0x3e,0x34,0xc3,0xf6,0x83,0x48,0x79,0x79,0xf9,0x8f,0xe4,0xdb,0xb2,
+    0x65,0x8b,0xdb,0x34,0xd2,0x33,0x7f,0xfe,0x7c,0xc7,0x7a,0xe3,0xb9,0x2c,
+    0x33,0x7d,0xfa,0xf4,0x6e,0x8d,0xcb,0x97,0x2f,0x6f,0x82,0xad,0x40,0xa4,
+    0xa2,0xa2,0xe2,0x0a,0xf9,0x36,0x6f,0xde,0xec,0x56,0x8d,0xf3,0xe6,0xcd,
+    0xe3,0x1a,0x0b,0x64,0x02,0x02,0x02,0x1e,0x72,0x8d,0xcb,0x96,0x2d,0x33,
+    0xc3,0x76,0x5e,0x04,0x35,0xfd,0x7b,0xf2,0x6d,0xdc,0xb8,0xd1,0xad,0x1a,
+    0xe7,0xcc,0x99,0xc3,0x35,0x9e,0x97,0x81,0xc6,0x07,0x82,0x46,0x13,0x6c,
+    0x67,0x45,0xaa,0xab,0xab,0xbf,0x23,0x1f,0xc5,0x0b,0x6a,0x80,0xdb,0xe0,
+    0xb9,0x2d,0x8f,0x4f,0x4c,0x9b,0x36,0xad,0x5b,0xe3,0x92,0x25,0x4b,0x1a,
+    0x90,0xeb,0xb9,0x22,0x26,0x93,0xe9,0x2c,0xf9,0xd0,0x47,0xd7,0x98,0x31,
+    0x63,0x3a,0xdc,0x05,0xd5,0x75,0xca,0x19,0x79,0x7c,0x02,0xfb,0x5f,0x2b,
+    0xd7,0xb8,0x78,0xf1,0xe2,0x7a,0xe8,0xce,0x12,0x31,0x9b,0xcd,0x67,0x58,
+    0x3e,0x19,0x64,0x5f,0x4f,0x60,0xef,0x38,0xd3,0xd5,0xd5,0xd5,0xeb,0xf7,
+    0x91,0xbb,0xcd,0x43,0x87,0x0e,0xb5,0xa9,0xf9,0xa0,0xf1,0x3e,0xd7,0xb8,
+    0x68,0xd1,0x22,0x2a,0xce,0x27,0x45,0xa0,0x31,0x8b,0xe5,0x53,0x9d,0xec,
+    0x53,0xa3,0xbd,0xbd,0xfd,0x54,0x58,0x58,0x18,0x9d,0xf9,0x94,0xa9,0x53,
+    0xa7,0xb6,0x54,0x56,0x56,0x9e,0xe9,0x4d,0x3b,0xe4,0x6e,0x13,0xd3,0xe8,
+    0xe4,0xa3,0x7e,0xb8,0xc6,0x85,0x0b,0x17,0xd2,0x5c,0x1d,0x17,0x81,0xc6,
+    0xaf,0x59,0xac,0xd6,0xca,0x3e,0x35,0x76,0xec,0xd8,0xa1,0x67,0x67,0x64,
+    0x0b,0x9b,0xff,0x7b,0xbd,0x69,0x87,0xbc,0xe0,0x1a,0x9d,0x7c,0x53,0xa6,
+    0x4c,0xe9,0xd6,0x18,0x14,0x14,0x54,0x87,0xf5,0x4f,0x17,0x69,0x6c,0x6c,
+    0xcc,0x64,0xb1,0x7a,0x4f,0xf6,0xc9,0x5c,0xba,0x74,0x29,0x0f,0x7d,0xd9,
+    0xc7,0x8f,0x1f,0xdf,0x8a,0xb5,0x3e,0x8e,0x7a,0x62,0xa4,0xb6,0x69,0x69,
+    0x69,0x05,0x4f,0x6b,0x8b,0xbc,0x30,0x93,0x46,0x35,0x1f,0x34,0x36,0x73,
+    0x8d,0x0b,0x16,0x2c,0xa0,0xb9,0x3a,0x26,0x02,0x8d,0xe9,0x2c,0x56,0xef,
+    0xca,0x3e,0x19,0xc4,0x4a,0x0d,0xbd,0x9b,0x9e,0x9e,0x7e,0x8e,0xfe,0xc6,
+    0xb9,0xdf,0x11,0x27,0x88,0xb5,0x86,0xa7,0xb5,0x45,0xcc,0x99,0xd8,0x3c,
+    0x3a,0xf9,0x26,0x4f,0x9e,0xdc,0xc4,0x35,0xa2,0xd6,0xd3,0xba,0x7c,0x2e,
+    0x02,0x8d,0x69,0x2c,0x56,0xef,0xc8,0x3e,0x91,0xac,0xac,0x2c,0x47,0x6e,
+    0x61,0xee,0x6a,0x45,0x3b,0xe2,0xb8,0x8a,0xec,0x19,0x19,0x19,0xf9,0x3d,
+    0xb5,0x87,0xc6,0xc6,0x21,0x43,0x86,0x58,0xd5,0x7c,0xd8,0xc7,0xcd,0x5c,
+    0x63,0x60,0x60,0x60,0x0d,0x6c,0x07,0x45,0xa0,0x31,0x95,0xc5,0x6a,0xb5,
+    0xec,0xe3,0x20,0x7f,0x0f,0x62,0xdf,0x37,0xd0,0x7b,0x27,0x4e,0x9c,0xc8,
+    0x16,0x7d,0xd9,0xd9,0xd9,0xdf,0x90,0x7d,0xf6,0xec,0xd9,0xb5,0xae,0xda,
+    0x13,0xc8,0x8b,0x06,0xa6,0xd1,0xc9,0x27,0x6a,0xc4,0x1c,0xd0,0x7a,0x26,
+    0x89,0x34,0x34,0x34,0x1c,0x62,0xb1,0x5a,0x25,0xfb,0x38,0x9b,0x36,0x6d,
+    0xfa,0x95,0xc5,0xc3,0x6d,0x35,0x3f,0x62,0xa8,0x9a,0xfc,0xbb,0x76,0xed,
+    0x2a,0x76,0xd5,0x07,0x62,0x8e,0x6b,0x74,0xf2,0x4d,0x9a,0x34,0xc9,0xc4,
+    0x35,0xe2,0x6c,0x43,0x73,0xf5,0x89,0x48,0x7d,0x7d,0x7d,0x32,0x8b,0xd5,
+    0x4a,0xd9,0x47,0x44,0x45,0x45,0xd1,0xbd,0x5d,0x99,0x30,0x61,0x82,0xa9,
+    0xa6,0xa6,0x26,0x45,0xed,0x1d,0xbd,0x5e,0x7f,0xc8,0xdb,0xdb,0x9b,0xea,
+    0xb0,0x3d,0x31,0x31,0x31,0x47,0xed,0x1d,0xc4,0x5c,0x3d,0xd3,0xe8,0xe4,
+    0x9b,0x38,0x71,0x62,0x23,0xc6,0x68,0xa1,0x71,0xb0,0x67,0xd2,0x5c,0x1d,
+    0x10,0xc1,0x79,0xf6,0x53,0x16,0xab,0xb7,0x65,0x5f,0x6a,0x6a,0xea,0x49,
+    0xf2,0xe1,0x7c,0xf9,0xf0,0xfa,0xf5,0xeb,0x87,0x65,0xbf,0x48,0x4e,0x4e,
+    0xce,0x17,0xd8,0xab,0xac,0xd8,0x4b,0xba,0x90,0x4b,0xa9,0xb2,0x1f,0x1a,
+    0x8d,0x4c,0xa3,0x53,0x5b,0x7c,0xfe,0x06,0xae,0x11,0x31,0x43,0x73,0xb5,
+    0x5f,0x04,0x1a,0x3f,0x62,0xb1,0x5a,0x2e,0xda,0x51,0x9b,0x13,0x70,0x2e,
+    0x6f,0x1b,0x38,0x70,0x60,0x17,0x62,0xee,0x98,0xdc,0x4e,0x8d,0xd8,0xd8,
+    0xd8,0x5c,0xea,0x0b,0xb5,0xf0,0x2e,0xee,0xfb,0xef,0x8b,0x3e,0xc4,0x9c,
+    0x01,0x9f,0xa1,0x53,0xad,0x9d,0xa8,0x11,0x7b,0x3b,0xcd,0xd5,0x5e,0x11,
+    0x83,0xc1,0x10,0xcf,0x62,0xb5,0x4c,0xb4,0x47,0x46,0x46,0x7e,0x4b,0xf6,
+    0xed,0xdb,0xb7,0x5f,0xe6,0x36,0x8c,0xbb,0xaf,0xb8,0xb8,0x38,0x09,0xf7,
+    0x89,0x63,0xb8,0x5f,0x1c,0xcf,0xcb,0xcb,0x3b,0x8c,0xcf,0xf2,0xa1,0xd8,
+    0x8e,0xfa,0xa1,0x76,0x29,0x29,0x29,0x5f,0x8a,0x76,0xc4,0x5c,0x1d,0xd3,
+    0xb8,0x57,0x06,0xf5,0xb6,0x9e,0x6b,0x44,0x6e,0x56,0xc0,0x16,0x23,0x82,
+    0x5a,0x1c,0xc7,0xf6,0xb5,0x3b,0xa2,0x1d,0x77,0x30,0x87,0x46,0xac,0x9d,
+    0x0d,0x75,0xcd,0x42,0xfd,0x4b,0xdf,0xd7,0x74,0x43,0x71,0x88,0xbb,0xa4,
+    0x19,0x63,0x19,0x70,0xd7,0xa2,0xef,0x71,0x94,0xe8,0xe8,0xe8,0x53,0x62,
+    0x7f,0x38,0x57,0x98,0x87,0x0d,0x1b,0xd6,0x2e,0x8f,0x4f,0xe0,0x8e,0x66,
+    0xe4,0x1a,0x51,0x6b,0x69,0x3d,0xdf,0x91,0xc1,0x5c,0xd7,0x62,0x9c,0x2e,
+    0xdc,0xc7,0x0f,0x70,0x1b,0xce,0x43,0xb1,0xc8,0xe7,0x42,0xf2,0xa1,0x0f,
+    0x03,0xfd,0x44,0xfb,0xb2,0xa5,0x4b,0x97,0xfe,0xb2,0x7e,0xfd,0xfa,0x2b,
+    0x98,0xdf,0x0b,0x21,0x21,0x21,0xa5,0x88,0x71,0x3d,0xf9,0xa1,0xad,0x15,
+    0xf1,0x66,0xc1,0xe7,0x79,0xb4,0x61,0xc3,0x86,0xa2,0x8e,0x8e,0x8e,0x68,
+    0xde,0x57,0x6e,0x6e,0x6e,0x22,0x8b,0xb5,0xbf,0xd4,0xc6,0xa7,0xf6,0x5c,
+    0x23,0xf6,0x75,0x5a,0xcf,0xb7,0x64,0x22,0x22,0x22,0x1c,0xfb,0xc5,0xd8,
+    0xb1,0x63,0x8d,0x85,0x85,0x85,0x1f,0xa8,0xbd,0xd3,0x57,0xf2,0xf3,0xf3,
+    0x3f,0xc6,0xde,0xde,0x44,0xfd,0x27,0x24,0x24,0x1c,0x51,0x7b,0xc7,0xd7,
+    0xd7,0xb7,0x5b,0x23,0x62,0xf9,0x16,0x6c,0xbb,0xd5,0xc0,0x7e,0x51,0xca,
+    0xd7,0x0e,0x7d,0x9a,0x11,0xbb,0x37,0x80,0xae,0xaf,0x20,0xae,0x6e,0xd0,
+    0xbc,0xf2,0x3e,0x43,0x43,0x43,0xcf,0xba,0x1a,0x5b,0xab,0xd5,0xd6,0x71,
+    0x8d,0xd8,0xd7,0x69,0xae,0x5f,0x77,0x05,0xf2,0x77,0x3f,0xfa,0xfe,0x13,
+    0x71,0xd3,0xea,0x2a,0xf6,0xfe,0x0b,0xa8,0x0b,0x2d,0x88,0x85,0xdf,0x2f,
+    0x5e,0xbc,0xb8,0xb7,0xa7,0x71,0xb1,0x7e,0xb5,0x4c,0xe3,0x63,0xe8,0xa5,
+    0xbd,0xf0,0xb5,0xde,0x80,0x7a,0x1d,0x85,0x3b,0xe3,0x9b,0x7d,0xa5,0xae,
+    0xae,0xee,0x8d,0xde,0x8e,0xe5,0xe9,0xe9,0x49,0x79,0x46,0x3a,0xaf,0x51,
+    0xfe,0xe9,0x74,0xba,0x28,0xd8,0xc3,0x5f,0x14,0x50,0xfb,0x63,0xd8,0xbc,
+    0xe7,0x00,0x47,0x1d,0x5c,0xbb,0x76,0x6d,0x2e,0x7c,0xaf,0xbe,0x28,0x60,
+    0x7f,0x2e,0x61,0x1a,0x77,0x03,0x2d,0x9b,0x4f,0x3b,0xce,0xfa,0xb4,0x57,
+    0xbd,0xd2,0xdf,0xac,0x5b,0xb7,0x2e,0x8b,0xe9,0xbb,0xa5,0xf9,0xe7,0xfb,
+    0xe6,0x20,0xcd,0x93,0xef,0xca,0x15,0xc4,0x66,0x59,0x7c,0x7c,0xfc,0xbb,
+    0x36,0x9b,0x6d,0x1b,0xde,0x7f,0xf9,0x79,0x61,0xb5,0x5a,0xb7,0xed,0xd9,
+    0xb3,0xe7,0x3d,0x9c,0x41,0xee,0x30,0x7d,0xb4,0x0f,0xfa,0x6b,0xfe,0xfd,
+    0x04,0x82,0x02,0x21,0xff,0xec,0xa8,0xbf,0xb5,0xd8,0x23,0xfe,0x70,0x37,
+    0xc8,0x73,0xa3,0x38,0x2e,0xa0,0x73,0x73,0x80,0xc6,0xf5,0xf3,0x12,0xa0,
+    0xf3,0x2d,0x7d,0xdf,0xd3,0xf1,0x2c,0x6a,0x4d,0x2f,0x78,0x44,0xb9,0xab,
+    0x79,0xf2,0x3f,0x9a,0x60,0x59,0xd0,0xdf,0x12,0xee,0x16,0x45
+};
+
+// keep_below_lit.png
+static const unsigned char image_5_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x79,0x4c,0x54,0x57,0x14,0xc6,
+    0xc1,0x05,0x51,0x5c,0x41,0x05,0x94,0x62,0xdc,0x77,0x5c,0xc0,0x7d,0x01,
+    0x97,0x3f,0x30,0xc6,0x96,0xc4,0xaa,0x98,0x34,0x15,0x1b,0x68,0xda,0x26,
+    0x35,0x69,0x4c,0x0d,0x45,0x5b,0x1b,0x44,0x25,0xb4,0x0d,0x18,0x0b,0x88,
+    0x69,0x6d,0x69,0xdd,0xab,0x2d,0x26,0x4a,0x34,0xed,0x34,0x20,0x55,0x42,
+    0x01,0xed,0x80,0x33,0x30,0x2c,0xca,0x32,0x3a,0x53,0x06,0x65,0x44,0x66,
+    0x86,0x6d,0xe6,0xf6,0x3b,0xcf,0xf7,0xcc,0xf3,0xf2,0x06,0x0d,0x74,0x94,
+    0x97,0xfc,0x32,0x70,0xcf,0xbd,0xf7,0x7c,0x73,0xef,0xb9,0xe7,0x9e,0x37,
+    0x6e,0x6e,0x5d,0x1e,0x6f,0xb0,0x13,0xa4,0x80,0x6b,0xe0,0xce,0x2b,0xa0,
+    0x00,0xa4,0x83,0x68,0x10,0xd8,0x55,0xd2,0xb3,0xc7,0x13,0xec,0x01,0x4d,
+    0x80,0x49,0x0c,0x1f,0x3e,0xbc,0xc3,0xd5,0xc8,0xfd,0x81,0x36,0x90,0x0c,
+    0x7c,0x14,0xf4,0xdd,0xa2,0x3e,0x83,0x07,0x0f,0xb6,0x27,0x24,0x24,0x18,
+    0x54,0x2a,0xd5,0x5d,0x9b,0xcd,0xa6,0x65,0x8c,0x69,0x5c,0x4d,0x7b,0x7b,
+    0xbb,0xf6,0xc6,0x8d,0x1b,0xd5,0xc9,0xc9,0xc9,0x0f,0x46,0x8d,0x1a,0x25,
+    0x68,0x76,0x77,0x77,0x37,0xe0,0xd3,0x57,0xd4,0xe7,0x0e,0xce,0x53,0x7b,
+    0x78,0x78,0x78,0xb3,0xc5,0x62,0x79,0x25,0xba,0x9c,0xd1,0xd1,0xd1,0xa1,
+    0x8d,0x8e,0x8e,0x7e,0x28,0xae,0x29,0xad,0x9b,0x17,0x78,0x93,0xfe,0x0f,
+    0x0e,0x0e,0xb6,0x58,0xad,0xd6,0xd7,0xaa,0x4f,0xce,0xb6,0x6d,0xdb,0xa4,
+    0x98,0xdb,0x07,0x8e,0xd2,0xdf,0x57,0xaf,0x5e,0xbd,0xf7,0xba,0x75,0xc9,
+    0x69,0x68,0x68,0x28,0xc7,0x7e,0x3b,0xa0,0x2d,0x17,0xa8,0x07,0x0d,0x1a,
+    0x64,0xef,0x4b,0x6b,0x28,0x31,0x73,0xe6,0x4c,0x1b,0xf4,0x51,0x7c,0xea,
+    0x03,0x02,0x02,0xda,0xd0,0x56,0xea,0x0c,0xb3,0xd9,0xac,0x59,0xb9,0x72,
+    0xe5,0x93,0x31,0x63,0xc6,0x74,0x0c,0x1c,0x38,0xd0,0x31,0x60,0xc0,0x80,
+    0x5e,0x41,0xe7,0x22,0x24,0x24,0xa4,0x45,0xaf,0xd7,0x6b,0xbb,0xf3,0xbb,
+    0x7e,0xfd,0xfa,0xc7,0xe2,0x7e,0xeb,0xc7,0x8f,0x1f,0xdf,0xe6,0x70,0x38,
+    0x6e,0x29,0xb1,0x77,0xef,0x5e,0x3d,0xd6,0xfc,0x59,0x6e,0x18,0x3a,0x74,
+    0x28,0x1b,0x3b,0x76,0x6c,0x8f,0x19,0x31,0x62,0x84,0x3c,0xcf,0x30,0xc4,
+    0x9d,0xc9,0x99,0xef,0x75,0xeb,0xd6,0x99,0x25,0x8d,0xe3,0xc6,0x8d,0x6b,
+    0x45,0xdb,0xdf,0x3c,0x59,0x59,0x59,0x14,0x13,0x0c,0x6b,0xc7,0x62,0x63,
+    0x63,0x59,0x69,0x29,0x7d,0xbd,0xde,0x3f,0x46,0xa3,0x91,0x65,0x66,0x66,
+    0x32,0x2f,0x2f,0x2f,0xca,0x31,0x0c,0xb9,0xae,0x56,0xc9,0xff,0xda,0xb5,
+    0x6b,0x9b,0xe4,0x1a,0x31,0xf4,0x26,0xcf,0x84,0x09,0x13,0xac,0xd4,0x27,
+    0x35,0x35,0xf5,0x7f,0xd1,0xc6,0x3f,0xb9,0xb9,0xb9,0x82,0x46,0x68,0xed,
+    0x54,0xf2,0xbf,0x66,0xcd,0x9a,0x87,0x32,0x8d,0x36,0xb4,0x5d,0xe7,0xc1,
+    0xfa,0xd9,0x87,0x0c,0x19,0xc2,0x90,0x63,0x5d,0xa2,0x91,0x1e,0x9c,0x0b,
+    0x41,0xa7,0xc9,0x64,0xba,0xc9,0xfb,0x0f,0x0b,0x0b,0x6b,0x94,0x34,0xfa,
+    0xfb,0xfb,0x93,0x46,0x15,0x4f,0xbf,0x7e,0xfd,0xd8,0xac,0x59,0xb3,0x5c,
+    0xa6,0x8f,0x9e,0x4d,0x9b,0x36,0x09,0x71,0x59,0x54,0x54,0x94,0xcf,0xfb,
+    0x0f,0x0d,0x0d,0x35,0xc9,0x34,0x5a,0xd1,0x76,0x8d,0x87,0x34,0xce,0x98,
+    0x31,0xc3,0xa5,0x1a,0x37,0x6e,0xdc,0x28,0x68,0x2c,0x2e,0x2e,0xce,0xe3,
+    0xfd,0xaf,0x5e,0xbd,0xba,0x41,0xd2,0xe8,0xe7,0xe7,0x47,0x1a,0xaf,0xf0,
+    0x40,0xa3,0x63,0xda,0xb4,0x69,0x2e,0xd5,0xb8,0x61,0xc3,0x06,0x41,0xe3,
+    0xed,0xdb,0xb7,0x73,0x78,0xff,0xab,0x56,0xad,0x32,0xca,0x34,0x5a,0xd0,
+    0x76,0x89,0x87,0x34,0xd2,0x99,0x9e,0x3a,0x75,0xaa,0xcb,0xa0,0x78,0x27,
+    0x1d,0x6a,0xb5,0xfa,0x77,0xde,0x3f,0x72,0xb2,0x41,0xd2,0xe8,0xeb,0xeb,
+    0xdb,0x82,0xb3,0x7e,0x91,0xc7,0xc3,0xc3,0xa3,0xb3,0x7f,0xff,0xfe,0x94,
+    0x73,0x5b,0x5d,0x05,0x7c,0xd8,0x49,0x47,0x55,0x55,0xd5,0x15,0xde,0xff,
+    0x8a,0x15,0x2b,0x1e,0x48,0x1a,0x91,0x5b,0x5b,0xa0,0xfb,0x2c,0x0f,0xf2,
+    0x6d,0x2b,0xce,0x7c,0xb3,0x92,0xad,0xad,0xad,0xed,0x1c,0xee,0xcf,0xf3,
+    0xa8,0x53,0xce,0x29,0xd9,0x25,0x2a,0x2a,0x2a,0x2e,0x15,0x16,0x16,0x5e,
+    0xce,0xcf,0xcf,0xcf,0x56,0xb2,0x23,0xe6,0xea,0x49,0x47,0x75,0x75,0x75,
+    0x16,0x6f,0x5b,0xb6,0x6c,0x99,0x5e,0xa6,0xf1,0x09,0xda,0x4e,0xf2,0x40,
+    0xa3,0x0d,0x1a,0x1f,0xcb,0xdb,0xa0,0xed,0x54,0x44,0x44,0x84,0x8e,0xd6,
+    0x57,0xba,0x2b,0x50,0x73,0xb6,0xe3,0xdc,0x35,0x23,0x07,0x34,0xe0,0xbb,
+    0xd7,0x4d,0x9f,0x3e,0xdd,0xe4,0xed,0xed,0x6d,0x91,0xdf,0x4f,0x04,0xf9,
+    0xd1,0xe9,0x74,0x17,0xe5,0xf3,0x21,0xe6,0x6a,0xc5,0x75,0xbc,0xc0,0xfb,
+    0x5f,0xba,0x74,0x69,0xbd,0xa4,0x11,0xf7,0x30,0x69,0xfc,0x91,0x07,0x35,
+    0xb2,0x0d,0xbe,0x1f,0xcb,0xdb,0x0e,0x1f,0x3e,0x7c,0x9d,0xc6,0x4d,0x9c,
+    0x38,0x91,0xe1,0x1e,0x60,0xc8,0x0f,0x6c,0xce,0x9c,0x39,0x0c,0x73,0x30,
+    0x49,0x13,0x7d,0x06,0x06,0x06,0x32,0xe8,0x65,0x5b,0xb7,0x6e,0x65,0x51,
+    0x51,0x51,0x0c,0xf7,0x9a,0x60,0xdb,0xb1,0x63,0x87,0x5a,0x3e,0x1f,0x62,
+    0xae,0x86,0xda,0x2b,0x2b,0x2b,0xcf,0xf1,0xfe,0x97,0x2c,0x59,0x52,0x27,
+    0xd3,0xd8,0x8c,0xfd,0xff,0x8e,0x07,0x1a,0xad,0xd0,0x68,0x96,0xb7,0x9d,
+    0x39,0x73,0xe6,0x32,0x8d,0xc3,0xdc,0xcc,0x6e,0xb7,0x77,0x39,0xa7,0x74,
+    0xcf,0x29,0x3d,0x9b,0x37,0x6f,0x16,0x34,0x26,0x26,0x26,0xfe,0x29,0x9f,
+    0x6f,0xf9,0xf2,0xe5,0xf7,0xa8,0x1d,0x31,0x71,0x8a,0xf7,0xbf,0x78,0xf1,
+    0xe2,0x5a,0x49,0xe3,0xe8,0xd1,0xa3,0x29,0xe6,0xd2,0x79,0x86,0x0d,0x1b,
+    0x66,0xc5,0x99,0x6f,0x92,0xb7,0x41,0x57,0x3a,0xea,0x61,0xe1,0xbb,0xc7,
+    0xc7,0xc7,0x2b,0xea,0xe1,0x9f,0x13,0x27,0x4e,0x08,0xfa,0x10,0x03,0x06,
+    0xdc,0x59,0xc7,0xe4,0xf3,0x21,0xe6,0xaa,0x45,0x8d,0x99,0xbc,0xff,0x45,
+    0x8b,0x16,0xdd,0x93,0x69,0xa4,0xfd,0x3c,0xca,0x43,0x1a,0x71,0xe6,0x9b,
+    0xf8,0xf6,0xc6,0xc6,0xc6,0x63,0x88,0xb7,0x27,0xb4,0xa7,0x58,0xd7,0x6e,
+    0xf5,0xe1,0xac,0x30,0xd4,0xa7,0x0c,0xe7,0xb7,0xa3,0xa0,0xa0,0xe0,0x27,
+    0x7e,0x2e,0xc4,0x5c,0x15,0xe9,0x40,0x9c,0x7e,0xcf,0xdb,0x50,0xbf,0xdd,
+    0x95,0x34,0xfa,0xf8,0xf8,0x90,0xc6,0x64,0x1e,0x68,0xb4,0x40,0xe3,0x23,
+    0x25,0x5b,0x76,0x76,0xf6,0xcf,0x9e,0x9e,0x9e,0xed,0xe4,0x3f,0x2f,0x2f,
+    0x4f,0x51,0x1f,0xea,0x43,0x86,0x58,0x61,0x94,0x67,0xd3,0xd2,0xd2,0x7e,
+    0x53,0x9a,0x07,0xfb,0x59,0x41,0x3a,0xca,0xcb,0xcb,0x33,0x78,0x1b,0xf6,
+    0xab,0x5a,0xa6,0xd1,0x8c,0xb6,0xaf,0x78,0x50,0x2b,0x5a,0x70,0x16,0x1f,
+    0x29,0xd9,0x08,0xd4,0x43,0xbf,0xe0,0x7c,0xdb,0x11,0xcf,0x0e,0xe4,0xa1,
+    0x2e,0x1a,0xa5,0xbb,0x38,0x26,0x26,0x26,0xc7,0xd9,0x1c,0xd8,0x4f,0x1d,
+    0xf5,0x29,0x2b,0x2b,0x4b,0xe3,0x6d,0x0b,0x17,0x2e,0xac,0x94,0x34,0x62,
+    0xdf,0x68,0x3f,0x0f,0xf1,0x90,0x46,0xf8,0x7f,0xa8,0x64,0x93,0xd8,0xb2,
+    0x65,0xcb,0x5f,0x34,0xcf,0xc1,0x83,0x07,0x9f,0xd3,0x87,0x7b,0x43,0x38,
+    0xdf,0x93,0x26,0x4d,0xd2,0x77,0x37,0x1e,0xfb,0x59,0x46,0xe3,0xb5,0x5a,
+    0xed,0x11,0xde,0x36,0x7f,0xfe,0xfc,0x0a,0x4e,0x63,0x3c,0x0f,0x34,0xb6,
+    0x40,0x63,0xa3,0x92,0x4d,0xa2,0xae,0xae,0x2e,0x09,0xf9,0xd1,0x86,0x3b,
+    0xc3,0x81,0x77,0x8a,0x67,0x1a,0xb7,0x6f,0xdf,0x2e,0xac,0x61,0x52,0x52,
+    0xd2,0xd9,0xee,0xc6,0x63,0x3f,0xb5,0xd4,0x4f,0xa3,0xd1,0x7c,0xc3,0xdb,
+    0xe6,0xcd,0x9b,0xa7,0x93,0x34,0x62,0x7e,0xda,0xcf,0x2f,0x78,0x50,0x7b,
+    0xb6,0xe0,0x3c,0x35,0x2a,0xd9,0xe4,0x44,0x46,0x46,0xfe,0x41,0x73,0xc5,
+    0xc5,0xc5,0x09,0xfa,0xe0,0x4f,0x58,0x43,0xe4,0x04,0x63,0x67,0x67,0xe7,
+    0xfe,0xee,0xc6,0x2e,0x58,0xb0,0x40,0x43,0x63,0x51,0xe3,0x27,0xf1,0xb6,
+    0xa0,0xa0,0xa0,0x32,0x4e,0x63,0x1c,0x8f,0xa8,0xd1,0xa4,0x64,0x93,0x63,
+    0x30,0x18,0xbe,0x44,0x5f,0x0b,0xde,0xa7,0x58,0x49,0x49,0x09,0x43,0xfd,
+    0x2c,0xac,0xe1,0x81,0x03,0x07,0x4e,0xbe,0x68,0x2c,0xf6,0xb3,0x94,0xfa,
+    0x62,0xdc,0x21,0xde,0x36,0x77,0xee,0x5c,0xad,0xa4,0x71,0xe4,0xc8,0x91,
+    0x14,0x73,0x9f,0xf2,0x20,0x87,0x37,0xa1,0x2e,0x69,0x51,0xb2,0xf1,0x40,
+    0xcf,0x0f,0xd2,0x1d,0x43,0x9f,0x93,0x27,0x4f,0xae,0x7a,0x99,0x71,0xa8,
+    0x7d,0x84,0x98,0xab,0xa9,0xa9,0xf9,0x9c,0xb7,0xcd,0x9e,0x3d,0x5b,0xc3,
+    0x69,0xfc,0x84,0x07,0xdf,0x43,0x4d,0x7d,0x8e,0x1f,0x3f,0x7e,0x44,0xc9,
+    0xce,0x83,0x3b,0x24,0x03,0x79,0xc0,0x88,0xb9,0x4b,0x10,0xa7,0x9f,0xbd,
+    0xa8,0x3f,0x72,0x53,0x2c,0x6a,0xbf,0x56,0x9c,0x87,0x06,0x25,0x3b,0xee,
+    0xff,0x52,0x49,0x23,0x6a,0x07,0x8a,0xb9,0x8f,0x79,0x52,0x52,0x52,0x8e,
+    0xc0,0xee,0xc0,0xd9,0x31,0x63,0x9d,0xd2,0x95,0xfa,0xf4,0x94,0x9c,0x9c,
+    0x9c,0xfd,0xf8,0x3e,0x42,0x5d,0x83,0x78,0xfe,0x55,0xa9,0x0f,0xde,0x75,
+    0x4a,0x38,0x8d,0x1f,0x2a,0x81,0x9a,0xe0,0x82,0x54,0xb7,0xe0,0xae,0xb0,
+    0x4d,0x99,0x32,0xe5,0x0e,0xf6,0xa7,0xb4,0x37,0xc0,0x1f,0xbd,0xa7,0x08,
+    0x75,0x13,0xea,0x91,0x22,0x67,0xbe,0x71,0x77,0xaa,0x25,0x8d,0x88,0x3b,
+    0x3a,0x17,0x31,0xce,0x50,0xa9,0x54,0xb1,0x78,0xaf,0xb9,0x85,0xf5,0x7c,
+    0x24,0xaf,0xb5,0x7a,0x0a,0x72,0x55,0x33,0xf2,0xe6,0x1d,0xec,0x4d,0x72,
+    0x77,0x7e,0xf1,0x9e,0xf2,0x8f,0x38,0x46,0x87,0x98,0xb0,0xe2,0xae,0xdf,
+    0x89,0xf6,0xa8,0x17,0x81,0x33,0xfc,0x3e,0xee,0xff,0x8f,0x7a,0x4a,0x6d,
+    0x6d,0xed,0x07,0x2f,0xe3,0x87,0x40,0xed,0x5a,0x29,0xae,0xb7,0x70,0x1e,
+    0x33,0x32,0x32,0xf6,0xa1,0xfd,0x9d,0xbe,0xc2,0xfd,0xfb,0xf7,0xdf,0xc3,
+    0x3d,0x4f,0xbf,0x47,0x15,0x83,0x77,0xc5,0x5c,0x51,0x08,0x5b,0x64,0x5f,
+    0x21,0x3c,0x3c,0xfc,0xb4,0xb8,0xcf,0x5f,0xbb,0x3d,0xfd,0x9d,0x59,0x38,
+    0x3f,0xa8,0x9b,0xe9,0x7c,0xbd,0xfd,0xba,0xd9,0xb5,0x6b,0x57,0xa2,0xb8,
+    0xc7,0xff,0x02,0x3f,0xb7,0xa7,0x8f,0x3f,0x10,0xde,0x1d,0x70,0x7e,0xea,
+    0x77,0xef,0xde,0xbd,0x1f,0xef,0x2d,0x11,0xe8,0xff,0xd6,0xab,0x02,0xef,
+    0x6e,0x11,0x09,0x09,0x09,0x7b,0x02,0x02,0x02,0x8a,0xc5,0xf5,0xa3,0xdf,
+    0x9a,0x42,0xdc,0x9e,0x7f,0xde,0x00,0xa7,0xa5,0x9c,0x40,0xe0,0x8e,0x31,
+    0xa2,0x7e,0x54,0xbb,0x1a,0xd4,0xa9,0xf5,0x72,0xbf,0xa0,0x08,0x04,0xb9,
+    0x39,0x7f,0x82,0x01,0xe5,0xee,0x1c,0x71,0xad,0x7b,0x9d,0x6b,0x5e,0x82,
+    0x56,0x90,0x0f,0xbe,0x05,0x51,0xbc,0xa0,0xff,0x00,0xbc,0x45,0x33,0x49
+};
+
+// keep_below.png
+static const unsigned char image_6_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x99,0x09,0x4c,0x94,0x47,0x14,0xc7,
+    0x11,0x0f,0x3c,0x22,0xde,0xe2,0x81,0x07,0xb1,0x1a,0xf1,0x46,0x25,0x31,
+    0x6a,0x34,0x31,0xda,0x18,0xa3,0x62,0x0d,0xa1,0x78,0x21,0x31,0x80,0x82,
+    0x80,0x10,0x0b,0x12,0x49,0x94,0x6a,0xe5,0x56,0x42,0x01,0x29,0x02,0x1e,
+    0xad,0x56,0x4b,0x0a,0x96,0xa2,0x80,0xd6,0x03,0xa1,0x55,0x39,0x5c,0x15,
+    0xe4,0x58,0xce,0xe5,0x5c,0x0e,0x2b,0x28,0x16,0x58,0x60,0xf7,0xeb,0xff,
+    0x6d,0xbf,0x35,0xe3,0xb8,0xa8,0x91,0xae,0xfa,0x25,0xbf,0x00,0xef,0xcd,
+    0x7c,0xf3,0xdf,0x99,0x37,0x6f,0xde,0x2c,0x7a,0x7a,0x6f,0x3c,0x0b,0x81,
+    0x27,0x38,0x03,0x1e,0x80,0x27,0x3a,0x26,0x17,0x24,0x02,0x7f,0xf0,0x35,
+    0xd0,0x7f,0x53,0xd2,0xab,0xe7,0x0b,0x10,0x07,0x54,0x40,0x20,0xfa,0xf5,
+    0xeb,0xa7,0x32,0x34,0x34,0xec,0xd2,0x25,0x83,0x07,0x0f,0xee,0xd6,0x8c,
+    0x27,0x52,0x01,0xb6,0x6a,0xd1,0x6a,0xd6,0xa7,0x4f,0x9f,0x76,0x6a,0x33,
+    0x69,0xd2,0x24,0x45,0x54,0x54,0x54,0x8d,0x44,0x22,0x29,0xed,0xee,0xee,
+    0xce,0x17,0x04,0x41,0xe7,0x54,0x55,0x55,0x49,0xaf,0x5c,0xb9,0x22,0xf3,
+    0xf0,0xf0,0x68,0xec,0xdb,0xb7,0xaf,0x66,0x8e,0xe2,0x18,0x7d,0x26,0xd0,
+    0xd7,0xa4,0xaf,0xaf,0xaf,0x0a,0x08,0x08,0x90,0x7f,0x0c,0x4d,0x6f,0xe3,
+    0xe9,0xd3,0xa7,0x45,0xb3,0x67,0xcf,0x6e,0x13,0x75,0x7a,0x89,0x1a,0x2f,
+    0xd3,0xdf,0x9f,0x83,0x3e,0x0d,0x32,0x99,0x4c,0x6a,0x64,0x64,0xd4,0x29,
+    0xc6,0x9d,0x31,0xe6,0xf0,0x39,0xad,0xef,0xa7,0xd6,0xc5,0x73,0xf4,0xe8,
+    0xd1,0x7a,0x71,0x2e,0x6d,0xe9,0xa7,0xb5,0xb5,0x75,0xf3,0xa7,0xd6,0xc4,
+    0x73,0xef,0xde,0xbd,0x32,0x51,0xe3,0x69,0xfa,0x89,0x58,0x6d,0x80,0x3d,
+    0xaf,0x27,0x52,0x52,0x52,0xca,0xe7,0xcc,0x99,0xd3,0x36,0x74,0xe8,0xd0,
+    0x6e,0xda,0xeb,0xbd,0xa1,0x7f,0xff,0xfe,0xaa,0x09,0x13,0x26,0x74,0xae,
+    0x5d,0xbb,0xf6,0x79,0x57,0x57,0x57,0x8f,0x63,0x36,0x34,0x34,0x14,0x88,
+    0x1a,0x29,0x2f,0x09,0xfb,0xf7,0xef,0xaf,0x53,0xa9,0x54,0x12,0x1e,0xa5,
+    0x52,0x29,0x81,0xb6,0x7f,0xd8,0xdc,0x30,0x76,0xec,0xd8,0x5e,0x61,0x60,
+    0x60,0xf0,0xea,0x5d,0x03,0x06,0x0c,0x50,0x25,0x27,0x27,0x17,0x6b,0x1b,
+    0xbb,0xbe,0xbe,0xfe,0x31,0xab,0xd1,0xdd,0xdd,0xbd,0x06,0xf6,0x2c,0x9e,
+    0x65,0xcb,0x96,0xb5,0x90,0xdf,0xd8,0xd8,0x58,0xc0,0xbb,0x04,0xe4,0x22,
+    0xa1,0xb7,0x0f,0xde,0x2b,0xe4,0xe4,0xe4,0x08,0xab,0x56,0xad,0x7a,0x95,
+    0x83,0x91,0x7b,0x24,0xfc,0xd8,0xd0,0x28,0xe1,0x34,0x56,0xa1,0xfb,0x5d,
+    0x96,0x96,0x96,0x96,0x4c,0xec,0x27,0x61,0xe4,0xc8,0x91,0x42,0x5d,0x5d,
+    0x5d,0xaf,0xb5,0x69,0x7b,0x2c,0x2c,0x2c,0xd4,0x3a,0x37,0x6d,0xda,0xd4,
+    0xc8,0x8f,0x0f,0x8d,0x59,0xac,0x46,0x37,0x37,0x37,0x19,0xec,0xe9,0x2c,
+    0xfe,0xfe,0xfe,0x25,0xe4,0x73,0x70,0x70,0xd0,0x89,0x3e,0x7a,0xb0,0x2f,
+    0x04,0x71,0x9d,0xda,0xf8,0xf1,0xe5,0x72,0xf9,0x5d,0x56,0xa3,0xab,0xab,
+    0x6b,0x39,0xec,0x37,0x59,0x9c,0x9c,0x9c,0xe8,0x4c,0x12,0x02,0x03,0x03,
+    0x75,0xa6,0xb1,0xa9,0xa9,0x49,0xad,0x71,0xc4,0x88,0x11,0x0a,0x7e,0x7c,
+    0x68,0x4c,0x67,0x35,0xba,0xb8,0xb8,0x94,0xc2,0x7e,0x8d,0xc5,0xd1,0xd1,
+    0xb1,0x54,0xcc,0xed,0x3a,0xd3,0xd8,0xd8,0xd8,0xc8,0x6a,0x7c,0x6d,0x7c,
+    0xc4,0xd7,0x2d,0x56,0xe3,0xde,0xbd,0x7b,0x8b,0x61,0xbf,0xca,0x82,0x79,
+    0x2c,0x26,0x9f,0x9f,0x9f,0x9f,0xce,0x34,0x22,0xe6,0xd4,0x1a,0x11,0xf3,
+    0x1d,0xfc,0xf8,0xd0,0x78,0x9d,0xd5,0x08,0x3d,0x45,0xb0,0x27,0xb2,0x90,
+    0x8d,0x7c,0xa3,0x46,0x8d,0x12,0xa6,0x4f,0x9f,0xae,0x13,0x4c,0x4c,0x4c,
+    0x34,0xf3,0xd8,0xc1,0x8f,0x0f,0x8d,0x29,0xac,0xc6,0x3d,0x7b,0xf6,0xe4,
+    0x63,0xbf,0xc7,0xb3,0x60,0x8d,0xb3,0xc9,0x37,0x68,0xd0,0xa0,0x2e,0x7a,
+    0x87,0x2e,0x18,0x3e,0x7c,0x78,0x07,0x8d,0x01,0xad,0x2d,0xfc,0xf8,0x35,
+    0x35,0x35,0x49,0xac,0xc6,0xdd,0xbb,0x77,0x53,0x6e,0xbf,0xc4,0x12,0x1b,
+    0x1b,0x7b,0x87,0x7c,0xce,0xce,0xce,0x8f,0x79,0x1f,0xf1,0xf2,0xe5,0xcb,
+    0xb8,0xf6,0xf6,0xf6,0x38,0xe4,0xf9,0x37,0x7c,0x1a,0x50,0xc3,0xfc,0x9a,
+    0x97,0x97,0xf7,0x3b,0xf6,0x6f,0x72,0x45,0x45,0xc5,0x65,0x6d,0x7e,0x1a,
+    0xc3,0xdc,0xdc,0xbc,0x8e,0xf7,0x41,0x63,0x02,0xab,0xd1,0xde,0xde,0x9e,
+    0x74,0x9c,0x67,0x89,0x8e,0x8e,0xbe,0x2d,0xc6,0xea,0x43,0xd6,0x9e,0x98,
+    0x98,0x98,0x8a,0x39,0xd0,0xd4,0x4e,0x02,0xe5,0xd0,0x61,0xc3,0x86,0xb5,
+    0x4f,0x99,0x32,0xa5,0x79,0xc1,0x82,0x05,0xf2,0xa5,0x4b,0x97,0x56,0xd1,
+    0xef,0x43,0x86,0x0c,0x51,0x70,0xb5,0xab,0xb0,0x7a,0xf5,0xea,0x72,0xf6,
+    0x5d,0xd8,0xd7,0xbf,0x90,0x7d,0xf1,0xe2,0xc5,0xb5,0xfc,0xf8,0xd0,0x18,
+    0xc7,0x6a,0xb4,0xb3,0xb3,0x23,0x1d,0x67,0x59,0x4e,0x9d,0x3a,0x75,0x83,
+    0x7c,0xd8,0xdf,0x0f,0x58,0xfb,0xfc,0xf9,0xf3,0xeb,0xc8,0x3e,0x73,0xe6,
+    0xcc,0x86,0xb9,0x73,0xe7,0xca,0x67,0xcd,0x9a,0x55,0x3f,0x6e,0xdc,0xb8,
+    0x17,0x03,0x07,0x0e,0xec,0xd4,0x68,0x41,0x9d,0xaa,0x9c,0x38,0x71,0x62,
+    0x8b,0x99,0x99,0x59,0xed,0x8a,0x15,0x2b,0x2a,0xd6,0xaf,0x5f,0x2f,0xc5,
+    0xe7,0x50,0x7f,0xae,0xec,0xec,0xec,0x78,0xcd,0xbb,0xa0,0xf1,0x02,0xd9,
+    0x16,0x2d,0x5a,0x54,0xc3,0x8f,0x5f,0x5d,0x5d,0x7d,0x91,0xd5,0xb8,0x6b,
+    0xd7,0xae,0x07,0x88,0x81,0x18,0x96,0xc8,0xc8,0xc8,0x6b,0x62,0x1c,0x64,
+    0xb3,0xf6,0x35,0x6b,0xd6,0x48,0xc9,0xee,0xe3,0xe3,0x73,0x87,0xef,0x83,
+    0xb3,0x32,0xa6,0xa4,0xa4,0xe4,0x02,0x6f,0xcf,0xcd,0xcd,0xbd,0x88,0xb8,
+    0x56,0xd0,0xe7,0x68,0x6d,0x6d,0x3d,0xa3,0xb1,0xa3,0x6e,0x38,0x47,0xef,
+    0x5a,0xb8,0x70,0x61,0x35,0xdf,0xa7,0xb2,0xb2,0xf2,0x27,0x56,0xa3,0xad,
+    0xad,0x6d,0x16,0xb4,0x47,0xb2,0x9c,0x3c,0x79,0xf2,0xaa,0x18,0x07,0xf7,
+    0x59,0x7b,0x56,0x56,0xd6,0x05,0x8c,0xa5,0xc0,0x39,0xab,0x4c,0x4b,0x4b,
+    0xbb,0xc4,0xf7,0xe3,0xe9,0xec,0xec,0xfc,0x61,0xc6,0x8c,0x19,0x72,0x7a,
+    0x97,0x97,0x97,0xd7,0x1d,0xd6,0x87,0xfc,0x18,0x43,0x76,0xcc,0x77,0x25,
+    0xdf,0x0f,0x67,0xf8,0x69,0x56,0xe3,0xce,0x9d,0x3b,0x49,0x47,0x18,0x4b,
+    0x44,0x44,0x44,0x92,0x18,0x07,0x77,0x79,0x5f,0x70,0x70,0x70,0x32,0xf9,
+    0x46,0x8f,0x1e,0xfd,0xbc,0xb8,0xb8,0x38,0x96,0xf7,0xb3,0x6c,0xd8,0xb0,
+    0xe1,0x11,0xb5,0x45,0xac,0xca,0x78,0x1f,0xe6,0x31,0xaa,0x27,0x1f,0xe6,
+    0x31,0x9a,0xd5,0xb8,0x63,0xc7,0x0e,0xd2,0x11,0xc2,0x12,0x16,0x16,0xf6,
+    0x9b,0x18,0x07,0x7f,0xf2,0x3e,0x62,0xeb,0xd6,0xad,0xf7,0xc5,0xbc,0x21,
+    0x7f,0xf6,0xec,0x59,0x98,0xb6,0x36,0x98,0x37,0x75,0x1e,0x1e,0x3f,0x7e,
+    0xfc,0xdf,0xc8,0x77,0x11,0xbc,0x1f,0x1a,0x23,0xc8,0x8f,0x18,0xaf,0xe0,
+    0x7d,0xb8,0x2f,0x44,0xb2,0x1a,0xb7,0x6d,0xdb,0x46,0x3a,0x82,0x58,0x42,
+    0x43,0x43,0xe3,0xc5,0x38,0x48,0xe7,0x7d,0x04,0x72,0x4e,0xd0,0xf2,0xe5,
+    0xcb,0xf3,0xa9,0x0d,0xea,0x55,0x09,0xef,0x47,0x5c,0x86,0x23,0x1e,0xba,
+    0x71,0x37,0x6d,0xcf,0xc8,0xc8,0x88,0xd1,0xf6,0x0e,0x9c,0x33,0xa1,0xd4,
+    0x7f,0xde,0xbc,0x79,0xe5,0xbc,0x0f,0xb9,0x2a,0x8c,0xd5,0xb8,0x65,0xcb,
+    0x16,0xd2,0xe1,0xcb,0x72,0xe2,0xc4,0x09,0x75,0x5e,0xb0,0xb1,0xb1,0xb9,
+    0xcd,0xfb,0x34,0x20,0xfe,0x03,0xb0,0x5f,0x5f,0x60,0x1f,0x77,0x67,0x66,
+    0x66,0x46,0xb0,0x3e,0xec,0xe5,0x4c,0xb1,0xa6,0x4a,0xee,0xa9,0x3f,0xea,
+    0x86,0x60,0x6a,0x83,0x3a,0xba,0x94,0xf7,0x95,0x97,0x97,0x87,0xb0,0x1a,
+    0x71,0x9f,0x49,0x83,0xfd,0x08,0xcb,0xf1,0xe3,0xc7,0xd5,0x7b,0x7f,0xfb,
+    0xf6,0xed,0x37,0x79,0x1f,0x8b,0xa7,0xa7,0xa7,0xfa,0x1d,0x2b,0x57,0xae,
+    0x94,0x68,0x6c,0xa5,0xa5,0xa5,0x41,0xa8,0xb1,0x15,0xb8,0xe3,0xbf,0xc0,
+    0x73,0xac,0xa7,0xbe,0x58,0x7f,0xfa,0x6e,0x42,0xc0,0x5d,0xb5,0x84,0xf7,
+    0x41,0x63,0x10,0xab,0xd1,0xca,0xca,0xea,0x16,0xec,0x87,0x58,0x82,0x82,
+    0x82,0xce,0x93,0x0f,0x71,0xf7,0x07,0xef,0x63,0xe9,0xe8,0xe8,0xf0,0x19,
+    0x33,0x66,0x4c,0x13,0x72,0xb9,0x0a,0xf7,0x1e,0x8a,0xcb,0x43,0x1b,0x37,
+    0x6e,0x4c,0x17,0xe3,0x24,0xf5,0x6d,0x7d,0xa1,0xf1,0x18,0xb5,0x43,0x8e,
+    0x2d,0xe6,0x7d,0x65,0x65,0x65,0x7e,0xac,0x46,0x4b,0x4b,0xcb,0x1b,0xb0,
+    0x1f,0x64,0xc1,0x79,0x7d,0x4e,0x8c,0x83,0x6b,0xbc,0x8f,0xe7,0xc8,0x91,
+    0x23,0xea,0xcf,0x33,0x75,0xea,0x54,0x59,0x6a,0x6a,0x6a,0x08,0xad,0x3d,
+    0xce,0x99,0x56,0xec,0x09,0x9f,0xb7,0xf5,0xab,0xad,0xad,0xfd,0x96,0xfa,
+    0x99,0x9a,0x9a,0x4a,0x79,0x1f,0xd6,0xe2,0x28,0xab,0x71,0xf3,0xe6,0xcd,
+    0xa4,0xc3,0x83,0x25,0x24,0x24,0x44,0x9d,0x17,0xd6,0xad,0x5b,0x77,0x8b,
+    0xf7,0x69,0x03,0xe7,0x4e,0x21,0x7b,0xee,0x79,0x7b,0x7b,0xff,0xf8,0xae,
+    0x3e,0x88,0xe1,0xef,0xc4,0x78,0x7c,0xc2,0xfb,0x90,0xd3,0x0e,0xb3,0x1a,
+    0x71,0x9f,0x48,0x81,0xdd,0x9d,0x05,0x73,0x7d,0x10,0xeb,0xa7,0x44,0x0e,
+    0xac,0xc7,0x7a,0xee,0xe7,0xfd,0x3c,0x58,0xb7,0x03,0x38,0x1b,0x1f,0xe1,
+    0xee,0x57,0x87,0x33,0x28,0xe6,0x5d,0xed,0x09,0xe4,0xe5,0x78,0x71,0x1d,
+    0xaf,0xf0,0x3e,0xa9,0x54,0xea,0xcd,0x6a,0x44,0xfc,0x50,0x5d,0xe9,0xc2,
+    0x83,0xdc,0x9a,0x43,0x7e,0xd4,0x7a,0xf9,0x45,0x45,0x45,0x07,0xb4,0xb5,
+    0xf9,0x10,0x14,0x0a,0x85,0x2b,0xe6,0x25,0x89,0xe6,0x00,0xf9,0xa9,0x13,
+    0xe7,0xd5,0x61,0xbe,0x0d,0x8d,0xc7,0x6a,0x44,0x9e,0x48,0x82,0xdd,0x91,
+    0xa7,0xb9,0xb9,0xd9,0x05,0xf9,0x57,0x26,0xd6,0x37,0x4a,0xd4,0xbb,0x72,
+    0xe8,0xcd,0xeb,0x0d,0xd3,0xa6,0x4d,0xcb,0x87,0x2e,0x75,0x4d,0x44,0xfa,
+    0x7c,0x7d,0x7d,0xbf,0xd7,0x36,0x76,0x61,0x61,0xe1,0x37,0xac,0x46,0xc4,
+    0x1c,0xd5,0xbe,0xf6,0xda,0xc0,0x79,0xeb,0x80,0xf3,0xf0,0xec,0xe4,0xc9,
+    0x93,0xa5,0xa4,0x93,0xaf,0xb7,0x3e,0x04,0xd4,0xb6,0x0d,0x38,0xa3,0xff,
+    0x2a,0x28,0x28,0x70,0xeb,0x69,0xdc,0xfc,0xfc,0x7c,0x37,0x56,0xe3,0x92,
+    0x25,0x4b,0x28,0xbf,0xd8,0xbe,0x0f,0x38,0x3f,0x1c,0x11,0xcf,0x4e,0x1f,
+    0x0a,0xce,0x4d,0xbb,0xf7,0x19,0x27,0x21,0x21,0xc1,0x4b,0xd4,0xf8,0x33,
+    0xe8,0xc0,0x1a,0x52,0xdd,0xb1,0xfd,0x73,0x02,0xe7,0x73,0x8c,0xa8,0xd1,
+    0x19,0xd0,0x1d,0x51,0x85,0x7b,0x34,0xe5,0x4e,0xeb,0xcf,0x01,0x9c,0xe3,
+    0x3b,0x50,0xeb,0x57,0x89,0x1a,0x4d,0x81,0x39,0xa0,0x7a,0xb0,0x3d,0x2a,
+    0x2a,0x8a,0x72,0x8c,0xe5,0xa7,0x04,0x79,0xce,0x0a,0xfb,0xea,0xbe,0xa8,
+    0x8f,0xfe,0x6f,0xa0,0x79,0x6c,0x34,0x7b,0x17,0xe7,0xd2,0xf5,0xf0,0xf0,
+    0xf0,0x7d,0x68,0x6f,0xf1,0x31,0x69,0x6b,0x6b,0xfb,0x0a,0xf5,0x4b,0x30,
+    0xea,0xe7,0x67,0xa2,0xbe,0x0c,0x60,0xa0,0xf7,0xfa,0xf3,0xa5,0xde,0x7f,
+    0xdf,0xe9,0x6b,0xee,0x52,0x4a,0x9c,0xc3,0x4f,0x8c,0x8c,0x8c,0x1e,0xeb,
+    0x98,0x5c,0x03,0x03,0x03,0x8d,0x2e,0x82,0xf2,0x52,0x20,0x30,0xd4,0xd3,
+    0xfe,0xd0,0xff,0x1b,0xf6,0x89,0x7b,0xe9,0x21,0xe8,0xfa,0x3f,0x72,0xcd,
+    0x7b,0x50,0x09,0x52,0x81,0xaf,0x36,0x6d,0xff,0x02,0x1b,0x15,0xfd,0xbb
+};
+
+// maximize.png
+static const unsigned char image_7_data[] = {
+    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x99,0x7b,0x2c,0x64,0x57,0x1c,0xc7,
+    0xbd,0x0d,0x4d,0xf8,0x83,0xec,0x56,0x42,0xb2,0x7f,0x14,0xf1,0xb7,0x84,
+    0x15,0x99,0x0d,0x09,0xa5,0x95,0xd5,0x6d,0x42,0x23,0x22,0xed,0x24,0xd2,
+    0x04,0x29,0xeb,0x55,0x15,0xef,0xd7,0xaa,0xdd,0x7a,0x84,0x7a,0xac,0x32,
+    0x35,0x63,0xad,0xf7,0x60,0xbc,0x16,0xeb,0x51,0xb2,0x6b,0xcb,0x5a,0x16,
+    0xab,0xb6,0x96,0xb4,0xdb,0xe9,0x23,0xdd,0x86,0x8a,0x46,0x83,0xce,0xce,
+    0xed,0xf7,0x4c,0x46,0x7b,0x7a,0x66,0xd6,0x1f,0xe5,0x5e,0x4e,0xf2,0x49,
+    0x46,0x7e,0x67,0xe6,0xfb,0xb9,0x77,0xee,0xef,0xb8,0xe7,0x8e,0x91,0x91,
+    0xde,0x30,0x06,0xef,0x82,0x3c,0xd0,0x01,0x16,0xc1,0x13,0x9e,0x59,0x00,
+    0xb7,0x41,0x06,0x78,0x5b,0x5f,0x49,0x6f,0xbc,0xa9,0xf3,0xe2,0x0e,0x11,
+    0x89,0x44,0x2f,0x6d,0x6c,0x6c,0xfe,0xe2,0x13,0x0b,0x0b,0x8b,0x97,0x74,
+    0x26,0x98,0x00,0xee,0xaf,0x70,0x24,0xc7,0xc2,0x19,0x1b,0x1b,0x73,0x57,
+    0xae,0x5c,0xd9,0x96,0xcb,0xe5,0xaa,0xf5,0xf5,0xf5,0x35,0x8e,0xe3,0x56,
+    0xf8,0x46,0xa3,0xd1,0xac,0x60,0x3c,0x93,0x4a,0xa5,0xaa,0x4b,0x97,0x2e,
+    0xfd,0x41,0xf9,0x86,0x31,0x8e,0xef,0x01,0x0d,0x8e,0x4d,0x3d,0x3d,0x3d,
+    0xbd,0x21,0x84,0xdb,0x51,0xf4,0xf6,0xf6,0x7e,0x4f,0xce,0x31,0xce,0xd9,
+    0x1e,0xbc,0x2e,0xea,0x1c,0xcd,0xf0,0xf7,0x8e,0xb5,0xb5,0xb5,0x7a,0x66,
+    0x66,0xe6,0xd4,0x1d,0x0f,0xe9,0xe8,0xe8,0x78,0x6e,0x62,0x62,0xa2,0x81,
+    0xdf,0x92,0xce,0x53,0x4c,0xce,0xb1,0x44,0x22,0xd9,0x3c,0x6d,0x37,0x16,
+    0xb1,0x58,0x7c,0x78,0x0d,0xbc,0x0e,0xd2,0xc9,0x6b,0x99,0x4c,0xa6,0x3a,
+    0x6d,0x2f,0x96,0xb4,0xb4,0xb4,0x5f,0x75,0x9e,0xe4,0xba,0x2c,0x25,0xaf,
+    0x27,0x27,0x27,0xd7,0x51,0x5b,0x7e,0x15,0xa3,0xa3,0xa3,0x1b,0x61,0x61,
+    0x61,0x5b,0x4e,0x4e,0x4e,0xfb,0x0e,0x0e,0x0e,0x07,0xc7,0xc1,0xcd,0xcd,
+    0xed,0xcf,0x88,0x88,0x88,0x4d,0xf4,0xce,0xb7,0x47,0x65,0xd6,0xd6,0xd6,
+    0xaa,0x74,0x9e,0x51,0x87,0x9e,0x13,0x13,0x13,0x4f,0xd1,0x77,0xf3,0x2c,
+    0x6a,0xb5,0x7a,0xde,0xdb,0xdb,0x7b,0x07,0xd7,0x0a,0x47,0xf0,0xf5,0xf5,
+    0xe5,0x02,0x03,0x03,0x8f,0x85,0xab,0xab,0xab,0x76,0x5d,0x21,0x9f,0x17,
+    0x1e,0x1e,0xfe,0x9b,0xa1,0x5c,0x42,0x4d,0x4d,0xcd,0x77,0xac,0xe7,0xf8,
+    0xf8,0x38,0x59,0x1f,0x66,0x59,0xdc,0xdd,0xdd,0x77,0x48,0x3d,0x21,0x21,
+    0x81,0xdb,0xdb,0xdb,0xe3,0x4e,0x6a,0x6c,0x6f,0x6f,0x73,0xa1,0xa1,0xa1,
+    0x5a,0xdf,0xe8,0xe8,0xe8,0x9f,0x0d,0x65,0x57,0x57,0x57,0x6f,0x18,0xf0,
+    0x5c,0xc2,0xdb,0xa7,0x69,0xe6,0x31,0xc8,0xe7,0x64,0x65,0x65,0x9d,0x98,
+    0x1f,0x3d,0xe0,0xc2,0xf9,0xf9,0xf9,0x71,0x96,0x96,0x96,0xe4,0xf5,0x7f,
+    0xb2,0x09,0x55,0x55,0x55,0x6b,0xac,0xe7,0xd8,0xd8,0xd8,0x02,0x6a,0x53,
+    0x34,0x51,0x51,0x51,0x3f,0x90,0x9a,0x4a,0xa5,0xe2,0xc5,0x93,0x8c,0xfe,
+    0xfe,0x7e,0xed,0x9a,0x3e,0x30,0x30,0xb0,0xc8,0xe6,0x57,0x56,0x56,0x3e,
+    0x65,0x3d,0xd1,0x27,0x0f,0x51,0x1b,0xa3,0x09,0x0e,0x0e,0xfe,0xc5,0xdc,
+    0xdc,0x9c,0x37,0x47,0x32,0x56,0x57,0x57,0xb5,0x9e,0x25,0x25,0x25,0xdf,
+    0xb0,0xf9,0x15,0x15,0x15,0x4f,0x58,0xcf,0x91,0x91,0x91,0xaf,0x51,0x1b,
+    0xa6,0x81,0xe7,0x8f,0x66,0x66,0x66,0xbc,0x7a,0xa2,0xe7,0x0f,0x3d,0x97,
+    0xd9,0xfc,0xf2,0xf2,0xf2,0x25,0xd6,0x73,0x78,0x78,0xf8,0x1e,0x6a,0x03,
+    0x34,0xf0,0x54,0x99,0x9a,0x9a,0xf2,0xea,0xb9,0xbc,0xbc,0x7c,0xe8,0xf9,
+    0x98,0xcd,0x2f,0x2b,0x2b,0x5b,0x60,0x3d,0x87,0x86,0x86,0x26,0x51,0x53,
+    0xd2,0x5c,0xbe,0x7c,0xf9,0x39,0xe9,0x23,0xac,0x9b,0xbc,0x41,0xd6,0x29,
+    0x9d,0xe7,0x23,0x36,0xbf,0xb4,0xb4,0xf4,0x11,0xeb,0x39,0x38,0x38,0x38,
+    0x8e,0x9e,0x53,0xd0,0xe0,0xff,0xc1,0x63,0x72,0x3e,0x83,0x82,0x82,0x78,
+    0xc3,0xc7,0xc7,0x47,0xbb,0x36,0x29,0x95,0xca,0xaf,0xd8,0xfc,0xe2,0xe2,
+    0xe2,0x59,0x03,0x9e,0x23,0x38,0x86,0x56,0x9a,0xbc,0xbc,0xbc,0x59,0xdc,
+    0xb7,0x68,0xf8,0xfc,0xde,0xd7,0xd6,0xd6,0xb4,0xe7,0x13,0x7d,0x7f,0x97,
+    0xcd,0xbf,0x71,0xe3,0xc6,0x03,0xd6,0x13,0xf3,0xee,0xa0,0xd6,0x44,0x93,
+    0x9b,0x9b,0xfb,0x40,0x28,0xcf,0xbe,0xbe,0xbe,0x21,0x36,0xff,0xfa,0xf5,
+    0xeb,0xf7,0x58,0x4f,0xcc,0xeb,0x47,0x4d,0x46,0x93,0x9d,0x9d,0x7d,0x5f,
+    0x28,0x4f,0x7c,0xef,0x7a,0xf9,0x45,0x45,0x45,0x53,0xac,0x27,0xe6,0x29,
+    0x71,0x4d,0xd4,0xd3,0x64,0x66,0x66,0x4e,0x09,0xe5,0xd9,0xdd,0xdd,0xad,
+    0x97,0x5f,0x58,0x58,0x38,0xc1,0x7a,0xf6,0xf4,0xf4,0x28,0xf0,0xb6,0x1a,
+    0x9a,0xf4,0xf4,0xf4,0x09,0xa1,0x3c,0xbb,0xba,0xba,0xf4,0xf2,0x0b,0x0a,
+    0x0a,0x46,0x59,0x4f,0x1c,0x4f,0x3b,0x6a,0x9f,0xd3,0xa0,0xdf,0xc7,0x84,
+    0xf2,0xec,0xec,0xec,0xd4,0xcb,0x47,0x1f,0x0f,0xb3,0x9e,0x0a,0x85,0xa2,
+    0x19,0xb5,0x32,0x9a,0xd4,0xd4,0xd4,0x11,0xa1,0x3c,0xb1,0xcf,0x68,0x61,
+    0xf3,0x73,0x72,0x72,0xee,0xb0,0x9e,0x38,0x9e,0x5b,0xa8,0x7d,0x46,0x93,
+    0x92,0x92,0x32,0x24,0x94,0x67,0x5b,0x5b,0x5b,0x13,0x9b,0x8f,0x3e,0xee,
+    0x67,0x3d,0x31,0xaf,0x01,0xb5,0x42,0x9a,0xe4,0xe4,0xe4,0x01,0xa1,0x3c,
+    0x5b,0x5a,0x5a,0x64,0x6c,0x7e,0x46,0x46,0x86,0x92,0xf5,0x6c,0x6d,0x6d,
+    0xad,0x47,0x2d,0x8f,0x26,0x31,0x31,0xb1,0x57,0x28,0xcf,0xe6,0xe6,0x66,
+    0x29,0x9b,0x8f,0xfe,0xe8,0x62,0x3d,0x31,0xaf,0x16,0xb5,0x2c,0x9a,0xf8,
+    0xf8,0xf8,0x1e,0xa1,0x3c,0x9b,0x9a,0x9a,0xbe,0x60,0xf3,0xd1,0x1f,0x9d,
+    0xac,0x27,0xe6,0x55,0xa3,0x96,0x46,0x13,0x17,0x17,0xa7,0x10,0xca,0xb3,
+    0xb1,0xb1,0xb1,0x86,0xcd,0x47,0x7f,0xb4,0xb1,0x9e,0x72,0xb9,0xbc,0x02,
+    0xb5,0x8f,0x69,0x92,0x92,0x92,0x9a,0xc9,0x5e,0x6b,0x7f,0x7f,0x9f,0x37,
+    0xcf,0xb9,0xb9,0x39,0xad,0x67,0x7b,0x7b,0x7b,0x19,0x9b,0x8f,0xfe,0x68,
+    0x66,0x3d,0x1b,0x1a,0x1a,0xc8,0xbc,0x04,0x1a,0xdc,0x3b,0x5f,0xd3,0xad,
+    0xc1,0xbc,0x79,0xe6,0xe7,0xe7,0x93,0xfd,0xd1,0xc1,0xee,0xee,0x6e,0x32,
+    0x9b,0x8f,0x71,0x8b,0xf5,0x94,0x4a,0xa5,0xc5,0xa8,0xc5,0xb2,0x60,0x0f,
+    0xbb,0x6a,0x6d,0x6d,0xad,0x99,0x9a,0x9a,0x3a,0x71,0x47,0xec,0x27,0xc9,
+    0xde,0x58,0x13,0x10,0x10,0x70,0xd7,0x50,0xf6,0xd5,0xab,0x57,0xe5,0xac,
+    0x67,0x5d,0x5d,0x5d,0x11,0x6a,0xd1,0x2c,0x5b,0x5b,0x5b,0xb1,0x17,0x2e,
+    0x5c,0x58,0x27,0x73,0xbc,0xbc,0xbc,0x5e,0xc6,0xc4,0xc4,0x70,0x58,0xd7,
+    0x8e,0x45,0x64,0x64,0x24,0xe7,0xe2,0xe2,0xa2,0x26,0x9f,0xe9,0xe9,0xe9,
+    0x79,0x5f,0xad,0x56,0xc7,0x18,0xca,0x8e,0x8d,0x8d,0xfd,0x92,0xf5,0xbc,
+    0x79,0xf3,0xe6,0x35,0xd4,0x3e,0x7c,0x15,0x12,0x89,0xa4,0x11,0x9e,0xe3,
+    0xe7,0xcf,0x9f,0x7f,0x61,0x67,0x67,0xb7,0xf9,0x7f,0xb1,0xb7,0xb7,0xdf,
+    0x74,0x74,0x74,0x5c,0xf7,0xf6,0xf6,0x1e,0xc3,0x7e,0xf2,0xd3,0xa3,0x32,
+    0x71,0x4e,0xea,0x29,0x4f,0xf2,0xdc,0x98,0xc3,0x3d,0x47,0x29,0x6a,0x92,
+    0xb3,0x44,0x48,0x48,0xc8,0x6d,0x9d,0xe7,0xfb,0xe0,0x2d,0xf2,0x5a,0x2c,
+    0x16,0xf7,0xa1,0x16,0x71,0x96,0x70,0x76,0x76,0x7e,0xa8,0xf3,0x7c,0x03,
+    0xbc,0x06,0x0e,0xac,0xac,0xac,0xb6,0xe6,0xe7,0xe7,0xc9,0xf9,0x0e,0x3b,
+    0x0b,0xe0,0xbe,0x24,0x1e,0x7b,0x33,0xf2,0x9c,0xf6,0x27,0xa3,0x7f,0x87,
+    0xf6,0x99,0xb7,0xad,0xad,0xad,0x6a,0x71,0x71,0xf1,0x03,0xcc,0x0b,0x39,
+    0x4d,0xb0,0x57,0x8b,0x12,0x89,0x44,0xbf,0xc3,0x89,0x3c,0xa7,0x0d,0xa6,
+    0x3c,0xc9,0x6f,0x1c,0xda,0x6b,0xc1,0xdc,0xdc,0x7c,0xd7,0xdf,0xdf,0xbf,
+    0x41,0x26,0x93,0x91,0x1e,0x7c,0x47,0x48,0xea,0xeb,0xeb,0x3f,0xf2,0xf0,
+    0xf0,0x50,0x60,0xad,0x3a,0xd0,0x7d,0xdf,0xb9,0x46,0xfa,0x83,0xb8,0x46,
+    0x83,0x7f,0x9e,0xe3,0x63,0xbf,0xaa,0x3e,0x77,0xee,0xdc,0x32,0x7a,0x7c,
+    0x91,0x4f,0x48,0x06,0xb2,0xe8,0xdf,0x3c,0x5e,0x80,0x70,0x03,0x8e,0xf4,
+    0x10,0x81,0x1c,0xd0,0x0b,0x9e,0xe9,0xce,0x3d,0xc7,0x33,0xc4,0x71,0x05,
+    0x90,0xfb,0x8e,0x4f,0x80,0x19,0x2b,0xf5,0x37,0x31,0x12,0xfd,0x45
+};
+
+// minimize.png
+static const unsigned char image_8_data[] = {
+    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x99,0x6b,0x48,0x5b,0x67,0x18,0xc7,
+    0xe3,0x25,0xd3,0xa9,0x28,0xec,0x83,0x37,0x10,0x11,0xc9,0x27,0x15,0xe6,
+    0x05,0x3f,0x08,0xfa,0x45,0x14,0x41,0x71,0x4c,0xc5,0xe5,0xc3,0x06,0x1b,
+    0xe2,0xc2,0x82,0x73,0x88,0x6e,0x5a,0x75,0x5e,0x9a,0x60,0xd4,0x7a,0x99,
+    0x8e,0x20,0x95,0xc0,0x0c,0xcd,0x24,0x8b,0x76,0xa6,0xce,0x4b,0xaa,0x8d,
+    0x51,0x51,0x43,0x2a,0xd5,0x45,0xd3,0x6e,0xb3,0x71,0x32,0x5b,0xdd,0xd8,
+    0x84,0x52,0x5c,0xa4,0x12,0x93,0xb3,0xe7,0x8d,0xe7,0x94,0xec,0x59,0xec,
+    0x87,0xc5,0xd4,0xf7,0x85,0x1f,0x1c,0xfc,0x27,0x3e,0xbf,0xf7,0xf5,0x9c,
+    0xf7,0xe2,0xe1,0xf1,0x3c,0xb6,0x6c,0xa0,0x09,0x50,0x01,0x9b,0x80,0xc5,
+    0xc7,0x98,0x81,0x71,0x40,0x02,0x94,0x00,0x7e,0x9e,0xb5,0x5e,0xb6,0xb7,
+    0x81,0xbb,0x00,0xc3,0xc1,0xe7,0xf3,0x1d,0xe1,0xe1,0xe1,0x76,0x5f,0x12,
+    0x1c,0x1c,0xec,0x70,0xaf,0xc9,0xba,0x17,0x5e,0xe0,0x48,0xfa,0xe1,0x24,
+    0x9f,0x13,0x08,0x04,0x2f,0x14,0x0a,0xc5,0x93,0xed,0xed,0xed,0xc7,0x4e,
+    0xa7,0xf3,0x21,0xc3,0x30,0x3e,0x67,0x77,0x77,0x77,0x47,0xa9,0x54,0x3e,
+    0x29,0x2b,0x2b,0x7b,0xe6,0xe7,0xe7,0xc7,0xf9,0x4a,0x91,0x63,0x1a,0x64,
+    0x36,0x32,0x76,0x83,0x83,0x83,0x07,0xaf,0xc3,0xeb,0x55,0x1c,0x1e,0x1e,
+    0xfe,0x1c,0x17,0x17,0xf7,0x82,0x75,0xfd,0xc0,0xcd,0xf3,0x3e,0x78,0x3a,
+    0x55,0x2a,0xd5,0xfe,0x55,0x3b,0x72,0x6c,0x6c,0x6c,0x58,0xc3,0xc2,0xc2,
+    0xce,0xc8,0xf8,0x81,0xdf,0x1b,0xc0,0x5b,0x80,0x23,0x33,0x33,0xd3,0x76,
+    0xd5,0x6e,0x18,0x91,0x48,0x74,0xc4,0x8e,0x69,0x1e,0x50,0x4c,0xae,0x6b,
+    0x6b,0x6b,0xff,0xbc,0x6a,0x2f,0x8c,0x5a,0xad,0xde,0x67,0x3d,0xaf,0x03,
+    0x1f,0x91,0xeb,0x81,0x81,0x81,0xa7,0x90,0x6d,0xd3,0x84,0xc9,0x64,0x7a,
+    0xcc,0x7a,0xca,0x39,0xcf,0xfe,0xfe,0xfe,0xdf,0xe0,0xd9,0xde,0xa0,0x09,
+    0xa3,0xd1,0xf8,0x13,0xf6,0xec,0xeb,0xeb,0xfb,0x15,0xb2,0xfb,0x34,0x01,
+    0x9e,0x16,0xec,0xd9,0xdb,0xdb,0x6b,0x85,0xb1,0x5e,0xa3,0x09,0xf0,0xfc,
+    0x11,0x7b,0xf6,0xf4,0xf4,0xfc,0x02,0xd9,0x32,0x4d,0xac,0xad,0xad,0x3d,
+    0xc0,0x9e,0xdd,0xdd,0xdd,0x8f,0x20,0xd3,0xd3,0xc4,0xca,0xca,0x8a,0x09,
+    0x7b,0x76,0x75,0x75,0x59,0x20,0xbb,0x4b,0x13,0xe0,0xb9,0x86,0x3d,0x65,
+    0x32,0x99,0x19,0xb2,0x69,0x9a,0x58,0x86,0x86,0x3d,0x3b,0x3a,0x3a,0x36,
+    0x21,0xbb,0x43,0x13,0x4b,0x4b,0x4b,0x06,0xec,0x29,0x95,0x4a,0x1f,0xc0,
+    0x5c,0x70,0x9b,0x26,0x16,0x17,0x17,0xef,0x61,0x4f,0x89,0x44,0x62,0x82,
+    0x3e,0xa8,0x69,0xc2,0x60,0x30,0xe8,0xb0,0x67,0x7b,0x7b,0xbb,0x11,0x32,
+    0x15,0x4d,0x2c,0x2c,0x2c,0x4c,0x61,0xcf,0xd6,0xd6,0xd6,0x55,0xc8,0x46,
+    0x68,0x42,0xaf,0xd7,0xdf,0xc1,0x9e,0x2d,0x2d,0x2d,0xcb,0x70,0x4f,0x28,
+    0x68,0x62,0x7e,0x7e,0xfe,0x7b,0xec,0xd9,0xdc,0xdc,0x6c,0x80,0x3e,0x0c,
+    0xd1,0xc4,0xdc,0xdc,0x9c,0x06,0x7b,0x36,0x36,0x36,0x92,0x35,0xe0,0x6b,
+    0x9a,0xd0,0xe9,0x74,0xa3,0xd8,0xb3,0xa1,0xa1,0x61,0x0e,0xb2,0x7e,0x9a,
+    0x98,0x9d,0x9d,0xbd,0x85,0x3d,0xeb,0xeb,0xeb,0x75,0x90,0xdd,0xb8,0x88,
+    0x99,0x99,0x99,0x91,0xf2,0xf2,0x72,0x63,0x42,0x42,0xc2,0x61,0x6c,0x6c,
+    0xec,0x5f,0xde,0x10,0x1f,0x1f,0xff,0x7b,0x7e,0x7e,0xfe,0xa6,0x5c,0x2e,
+    0x1f,0x7b,0x55,0xcd,0xe9,0xe9,0xe9,0x11,0xec,0x59,0x57,0x57,0x47,0xd6,
+    0xaa,0x0e,0x4f,0xc0,0x59,0x75,0x95,0x9c,0xf3,0xd8,0xef,0x30,0x11,0x11,
+    0x11,0x5e,0xc1,0xfd,0x1e,0x42,0x4e,0x4e,0x8e,0xf9,0xe0,0xe0,0xa0,0xd7,
+    0x53,0xdd,0xa9,0xa9,0x29,0x05,0xf6,0x84,0xf3,0xd1,0x24,0x64,0xd7,0x31,
+    0x42,0xa1,0xd0,0xb5,0x76,0xc1,0x18,0x30,0xd0,0x3f,0xc6,0x6e,0xb7,0x33,
+    0xde,0x36,0x87,0xc3,0xc1,0xc0,0x9a,0xc8,0xa4,0xa6,0xa6,0xba,0x5c,0x53,
+    0x52,0x52,0x76,0xe0,0x67,0x12,0x5c,0x7b,0x72,0x72,0xf2,0x26,0xf6,0xac,
+    0xa9,0xa9,0xd1,0x42,0xd6,0xe2,0xce,0xde,0xde,0x9e,0x8c,0x8c,0x23,0xfc,
+    0xad,0x98,0xa3,0xa3,0x23,0xaf,0xfd,0x70,0x23,0x7d,0xce,0xca,0xca,0x72,
+    0xb9,0x0e,0x0d,0x0d,0x7d,0x83,0xeb,0x6b,0xb5,0x5a,0x39,0xf6,0xac,0xae,
+    0xae,0xbe,0x0d,0x59,0xa3,0x3b,0x9d,0x9d,0x9d,0x4a,0x92,0x35,0x35,0x35,
+    0x5d,0xba,0x23,0xd7,0x26,0x26,0x26,0x5c,0x9e,0xa5,0xa5,0xa5,0xf7,0x70,
+    0x7d,0xc8,0x06,0xb1,0x67,0x55,0x55,0x95,0x06,0xb2,0xcf,0xdd,0x69,0x6b,
+    0x6b,0x1b,0x61,0xd7,0x54,0x9f,0x79,0x92,0x7b,0x89,0xd4,0x28,0x2a,0x2a,
+    0xd2,0xe3,0xfa,0xe3,0xe3,0xe3,0x7d,0xd8,0x53,0x2c,0x16,0x93,0xb5,0xbf,
+    0xc6,0x9d,0xad,0xad,0xad,0x2f,0x49,0x96,0x98,0x98,0xc8,0xd8,0x6c,0xb6,
+    0x4b,0x77,0x84,0x35,0x87,0xc9,0xcb,0xcb,0x63,0xd8,0x7d,0xe5,0x4d,0x5c,
+    0x5f,0xa3,0xd1,0xdc,0xc0,0x9e,0x22,0x91,0xe8,0x5b,0xc8,0x3e,0xc5,0x64,
+    0x67,0x67,0x2f,0x91,0x3c,0x2d,0x2d,0x8d,0x31,0x9b,0xcd,0x97,0xe6,0x68,
+    0xb5,0x5a,0x99,0xc2,0xc2,0x42,0x97,0x63,0x4c,0x4c,0xcc,0xfe,0xc9,0xc9,
+    0xc9,0x67,0xb8,0xb6,0x5a,0xad,0x96,0x61,0xcf,0xca,0xca,0xca,0x5b,0x90,
+    0x7d,0x82,0x39,0x3d,0x3d,0x15,0x67,0x64,0x64,0xac,0x72,0xf3,0x88,0xbf,
+    0xbf,0x3f,0x93,0x94,0x94,0xc4,0x24,0x27,0x27,0xff,0x6f,0x02,0x03,0x03,
+    0x5f,0xce,0x4b,0x91,0x91,0x91,0x4f,0xd7,0xd7,0xd7,0xeb,0x3d,0xd5,0x1e,
+    0x1d,0x1d,0x95,0x62,0xcf,0x8a,0x8a,0x0a,0xb2,0x47,0xa9,0xbc,0x08,0xb8,
+    0x47,0xbf,0x82,0x79,0x64,0x35,0x34,0x34,0xf4,0x59,0x50,0x50,0xd0,0x89,
+    0x37,0x84,0x84,0x84,0x3c,0x17,0x08,0x04,0xe6,0x92,0x92,0x92,0x31,0x78,
+    0xe6,0x3f,0xbe,0xa8,0xa6,0x4a,0xa5,0x6a,0x77,0xf3,0x2c,0x27,0xd7,0xc5,
+    0xc5,0xc5,0xdf,0x41,0xf6,0x21,0x4d,0xc0,0x19,0xa3,0x8b,0xf5,0xec,0x06,
+    0xe2,0xc8,0x35,0xac,0x87,0xe4,0x7c,0xf4,0x3e,0x4d,0xe4,0xe6,0xe6,0x72,
+    0xfb,0xba,0x77,0x79,0xe7,0x6d,0x27,0x20,0x20,0xe0,0x14,0xc6,0xb9,0x16,
+    0x72,0x21,0x0d,0x58,0x2c,0x96,0x0a,0xb8,0xc7,0xc8,0xff,0x15,0xcf,0x80,
+    0x08,0xd6,0xb3,0x00,0x70,0xc2,0xbd,0xf3,0x1c,0xd6,0x00,0x31,0x7c,0xae,
+    0xec,0x2a,0x39,0x3e,0x3e,0x7e,0x2f,0x3a,0x3a,0xfa,0x11,0x3b,0x96,0x12,
+    0xde,0xbf,0xdb,0x35,0xf6,0x79,0xb6,0xa7,0xa7,0xa7,0x6b,0x87,0x87,0x87,
+    0xc9,0xdc,0xf0,0xce,0xeb,0x44,0xa9,0x54,0x8a,0x0b,0x0a,0x0a,0x14,0x7c,
+    0x3e,0xff,0x98,0x75,0x24,0xef,0x40,0xfc,0x79,0xff,0x6d,0x42,0xe0,0x0f,
+    0x6e,0xce,0x80,0xb5,0xdd,0x01,0xf3,0x86,0x25,0x2a,0x2a,0xca,0xec,0x4b,
+    0xa0,0xc6,0x16,0xd4,0xb2,0xbb,0xed,0xa3,0xfe,0xe6,0x9d,0xbf,0x17,0x0a,
+    0xf2,0xe0,0xc8,0xb5,0x40,0xe0,0x0b,0x60,0x8c,0x77,0xfe,0x7e,0xe4,0xcc,
+    0xed,0xfb,0xbe,0x82,0xec,0x19,0xad,0xc0,0x0f,0x00,0x99,0x8b,0xde,0xc4,
+    0x52,0xff,0x00,0x74,0x7b,0x34,0xdf
+};
+
+// restore.png
+static const unsigned char image_9_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x6b,0x4c,0x54,0x47,0x14,0xc7,
+    0xd1,0x8a,0xe2,0xb2,0x2a,0xe1,0xe5,0x03,0x14,0x51,0x41,0x45,0xf0,0x2d,
+    0xa0,0xc6,0x57,0xaa,0x89,0xf1,0x03,0xf5,0x43,0x3f,0xb4,0x01,0x03,0x58,
+    0x48,0x69,0x42,0x3f,0x68,0x68,0x24,0x84,0x6e,0x00,0x09,0x96,0x20,0x62,
+    0x2b,0xa5,0xc1,0x54,0xfa,0x08,0x41,0xb1,0x25,0x69,0x63,0x4c,0xb1,0xd6,
+    0x12,0x24,0x42,0x30,0xa9,0xda,0xd4,0xc5,0xfa,0x80,0x6e,0x51,0x60,0x65,
+    0x65,0xd1,0x95,0xdd,0x65,0x5f,0x4c,0xff,0x67,0xbb,0xd7,0xdc,0x8e,0x43,
+    0x21,0xcb,0x2e,0x7a,0x93,0x5f,0x94,0xb9,0x37,0x73,0x7e,0x3b,0x77,0xce,
+    0x99,0x99,0xeb,0xe3,0xf3,0xd2,0x15,0x02,0x0e,0x82,0x4f,0xc1,0x65,0x70,
+    0x7b,0x12,0x68,0x07,0x55,0x20,0x03,0x84,0xbd,0xac,0xf4,0xe2,0x52,0x80,
+    0x7c,0x60,0x00,0x4c,0x62,0xf6,0xec,0xd9,0x36,0x6f,0x23,0x8f,0x07,0xcc,
+    0xa0,0x14,0x04,0x08,0xfc,0xe8,0xf7,0x30,0x85,0x42,0x61,0x3f,0x76,0xec,
+    0x58,0x5f,0x53,0x53,0x53,0x97,0xc5,0x62,0xe9,0x60,0x8c,0xa9,0xbd,0x8d,
+    0xd5,0x6a,0xed,0x68,0x69,0x69,0xe9,0x2c,0x2f,0x2f,0xef,0x9d,0x33,0x67,
+    0x8e,0x9d,0x3c,0xa6,0x4c,0x99,0xd2,0x8d,0x7f,0x83,0x5c,0x7e,0x6f,0x80,
+    0x0b,0xd4,0x9e,0x94,0x94,0xf4,0xcc,0x64,0x32,0x4d,0x8a,0xd7,0xff,0xf9,
+    0x1e,0x38,0x70,0x40,0xef,0x1a,0xd3,0x56,0xe0,0x07,0xde,0xa5,0xbf,0xb7,
+    0x6e,0xdd,0x3a,0x34,0x59,0xe3,0x36,0x16,0x23,0x23,0x23,0x6a,0x8c,0xd7,
+    0x53,0x97,0xe7,0x21,0x50,0x43,0xff,0xa7,0xb1,0x7e,0xd5,0x6e,0x72,0x34,
+    0x1a,0xcd,0x5d,0x97,0xe3,0x4f,0xe0,0x81,0x52,0xa9,0xb4,0xdb,0x6c,0xb6,
+    0x57,0xee,0xc5,0xb3,0x78,0xf1,0x62,0x0b,0xe5,0x10,0xe6,0xe6,0x60,0x54,
+    0x54,0xd4,0x30,0xda,0xfe,0x18,0x0b,0xcc,0x85,0xdb,0xd5,0xd5,0xd5,0x0f,
+    0xab,0xaa,0xaa,0xdc,0xa6,0xa6,0xa6,0xa6,0xdb,0xe1,0x70,0x8c,0x19,0x8b,
+    0xc0,0xfc,0x7b,0xee,0xca,0x9f,0xc1,0x65,0xcb,0x96,0x99,0x31,0x07,0x6e,
+    0x88,0xb0,0xdb,0xed,0x37,0x0e,0x1f,0x3e,0xdc,0x3b,0x7d,0xfa,0x74,0x07,
+    0x57,0x23,0x26,0x44,0x48,0x48,0x88,0xb5,0xb9,0xb9,0xf9,0xce,0x68,0x71,
+    0x89,0xcd,0x9b,0x37,0x1b,0x24,0xc7,0xa5,0x4b,0x97,0x9a,0xd0,0x76,0x5d,
+    0xc4,0xda,0xb5,0x6b,0x9d,0xbf,0x25,0x3a,0x3a,0xda,0x98,0x9e,0x9e,0xae,
+    0xad,0xad,0xad,0xbd,0x77,0xf6,0xec,0x59,0xb7,0x39,0x73,0xe6,0xcc,0xfd,
+    0xdd,0xbb,0x77,0xeb,0x11,0xd7,0xe9,0x5a,0x5f,0x5f,0x7f,0x77,0xb4,0xd8,
+    0x70,0x7c,0x26,0x73,0x34,0x62,0x6c,0x5b,0x79,0x8e,0x1e,0x3d,0xda,0x45,
+    0xcf,0xec,0xdb,0xb7,0x4f,0x27,0xba,0x3f,0x11,0xb4,0x5a,0xed,0xf5,0x19,
+    0x33,0x66,0x38,0xa6,0x4d,0x9b,0x36,0x82,0x77,0x25,0x7c,0x26,0x31,0x31,
+    0xf1,0xa9,0xe4,0xb8,0x64,0xc9,0x12,0x72,0xbc,0xca,0x83,0x79,0x3a,0xe4,
+    0xeb,0xeb,0xeb,0x10,0xdd,0xf3,0x04,0xc5,0xc5,0xc5,0xf7,0xc9,0x01,0x63,
+    0xab,0x16,0xdd,0x4f,0x48,0x48,0x18,0x94,0x1c,0x23,0x23,0x23,0x87,0xd0,
+    0x76,0x85,0x07,0xeb,0x94,0x75,0xfe,0xfc,0xf9,0x66,0xd1,0x3d,0x4f,0xd0,
+    0xd3,0xd3,0x73,0x95,0x1c,0x52,0x53,0x53,0xbb,0x45,0xf7,0xe3,0xe3,0xe3,
+    0x07,0x64,0x8e,0xcf,0xd1,0x76,0x89,0x67,0xd6,0xac,0x59,0xd6,0x05,0x0b,
+    0x16,0x18,0x0b,0x0b,0x0b,0x3b,0xd6,0xad,0x5b,0xa7,0x0f,0x0b,0x0b,0x33,
+    0xe2,0x6f,0xd3,0x78,0xa1,0xe7,0x31,0x16,0x4f,0x4e,0x9f,0x3e,0x7d,0x53,
+    0xd4,0xff,0xc0,0xc0,0xc0,0x2f,0xe4,0x80,0x75,0x45,0x23,0xba,0xbf,0x69,
+    0xd3,0xa6,0x27,0x92,0x23,0xea,0x10,0x39,0x5e,0xe4,0x81,0xa3,0x85,0xe6,
+    0x0c,0x3d,0x87,0x1a,0xca,0x76,0xec,0xd8,0xc1,0x76,0xee,0xdc,0x39,0x6e,
+    0xb6,0x6f,0xdf,0xce,0x66,0xce,0x9c,0x49,0x31,0x58,0x6c,0x6c,0xec,0x20,
+    0xdf,0x7f,0x7f,0x7f,0xff,0x25,0x97,0x63,0x97,0x28,0xfe,0xc6,0x8d,0x1b,
+    0x75,0x92,0x63,0x44,0x44,0x84,0x01,0x6d,0x3f,0xf2,0x60,0x3e,0x3b,0xa8,
+    0xff,0xca,0xca,0x4a,0xe6,0xee,0x85,0x5a,0xc8,0x30,0xef,0x9c,0x39,0x8c,
+    0x3c,0xd5,0x9e,0x38,0x71,0xe2,0x37,0x09,0xe4,0xe4,0x2d,0x6a,0x4f,0x49,
+    0x49,0x79,0x20,0x8a,0xbf,0x61,0xc3,0x86,0x7e,0x99,0xe3,0x33,0xe4,0x7a,
+    0x03,0x0f,0xc6,0x90,0x65,0x64,0x64,0xb8,0xed,0x27,0xbf,0xb6,0x6c,0xd9,
+    0xc2,0xa6,0x4e,0x9d,0x2a,0xac,0x95,0xb9,0xb9,0xb9,0xb7,0x44,0xf1,0xd7,
+    0xaf,0x5f,0xff,0x58,0x72,0x5c,0xb4,0x68,0xd1,0x53,0x74,0x73,0x8e,0x07,
+    0x39,0xcd,0x2a,0x2a,0x2a,0x3c,0xe2,0x98,0x95,0x95,0xc5,0x30,0x77,0x50,
+    0x66,0xec,0xf5,0x12,0x46,0xa3,0xf1,0x3b,0x72,0xc0,0x98,0xb6,0x8a,0xe2,
+    0x23,0x07,0xb4,0x92,0xe3,0xc2,0x85,0x0b,0xc9,0xb1,0x96,0xc7,0x0b,0x8e,
+    0x36,0x79,0xff,0xc3,0xc3,0xc3,0x75,0xe4,0x80,0x7d,0x63,0x8b,0x28,0x3e,
+    0xd6,0x8f,0x3e,0x99,0x23,0xcd,0xe7,0xaf,0x79,0xb0,0xfe,0xb1,0xbd,0x7b,
+    0xf7,0x32,0xe4,0xf5,0x84,0xc1,0xfc,0x97,0x1c,0x5f,0xf4,0x0f,0xc7,0x6f,
+    0xc9,0xa1,0xac,0xac,0xac,0x59,0x14,0x7f,0xcd,0x9a,0x35,0xbd,0x92,0x63,
+    0x78,0x78,0xb8,0x1e,0xef,0xff,0x4b,0x1e,0x3f,0x3f,0x3f,0x16,0x1a,0x1a,
+    0xca,0x50,0xe3,0x27,0x4c,0x60,0x60,0x20,0x9b,0x3b,0x77,0xee,0x90,0xbc,
+    0x7f,0xb3,0xd9,0xec,0xdc,0x17,0x96,0x96,0x96,0xfe,0x2a,0x8a,0xbf,0x7a,
+    0xf5,0xea,0x1e,0xc9,0x11,0x75,0x6c,0x00,0xde,0x5f,0xf0,0x50,0xdd,0x39,
+    0x79,0xf2,0xa4,0x47,0xde,0x75,0x76,0x76,0x36,0xad,0xf9,0x3a,0x79,0xff,
+    0x70,0xac,0x26,0x07,0x9c,0x4d,0x2e,0x8b,0xe2,0xc7,0xc5,0xc5,0x3d,0xe4,
+    0x1c,0x4f,0xf1,0x78,0xda,0x11,0x6b,0x6b,0xbf,0xbc,0x7f,0x38,0x7e,0x4e,
+    0x0e,0x25,0x25,0x25,0x8d,0xa2,0xf8,0xa8,0xa9,0xdd,0xae,0xdc,0xd7,0x63,
+    0x4d,0x78,0x82,0xb6,0x0a,0x1e,0x2f,0x38,0x3e,0x96,0xf7,0x0f,0x47,0x3a,
+    0x1f,0x53,0xfd,0xbc,0x28,0x8a,0xbf,0x6a,0xd5,0xaa,0xbf,0x25,0x47,0xac,
+    0xc9,0xf4,0x0e,0xca,0x78,0x3c,0xed,0x88,0x7d,0xea,0x63,0x79,0xff,0x38,
+    0xdf,0x95,0x93,0x43,0x51,0x51,0xd1,0x05,0x51,0xfc,0x98,0x98,0x18,0x0d,
+    0xe7,0x58,0xc2,0xe3,0x69,0x47,0xec,0x01,0xfb,0xe4,0xfd,0xc3,0xf1,0x13,
+    0x72,0x28,0x28,0x28,0xf8,0x41,0x14,0x7f,0xe5,0xca,0x95,0x7f,0x49,0x8e,
+    0xf3,0xe6,0xcd,0xa3,0x79,0x52,0xc4,0xe3,0x69,0x47,0xe4,0x77,0x9f,0xbc,
+    0x7f,0x38,0x16,0x93,0x83,0x4a,0xa5,0x6a,0x10,0xc5,0x5f,0xb1,0x62,0x45,
+    0x97,0xe4,0x88,0x9a,0x40,0xef,0x40,0xc5,0xe3,0x69,0x47,0xec,0xaf,0x7a,
+    0xe5,0xfd,0xc3,0xb1,0x80,0x1c,0xf2,0xf3,0xf3,0xcf,0x8b,0xe2,0x2f,0x5f,
+    0xbe,0xbc,0x93,0x73,0xcc,0xe3,0xf1,0x82,0x63,0x8f,0xbc,0x7f,0xac,0x85,
+    0xf4,0xed,0x86,0xe5,0xe5,0xe5,0x9d,0x13,0xc5,0x47,0xad,0x7a,0x20,0x39,
+    0xa2,0x4e,0x6b,0xd1,0xf6,0x11,0x8f,0xa7,0x1d,0xb1,0x07,0x7c,0x24,0xef,
+    0xbf,0xb3,0xb3,0x53,0xe5,0x7a,0xd7,0xdf,0x88,0xe2,0x23,0xc7,0xee,0x49,
+    0x8e,0x38,0xa3,0xd1,0x3c,0x39,0xc4,0xa3,0x50,0x28,0x2c,0xb4,0xaf,0xf2,
+    0xc4,0x95,0x96,0x96,0x46,0xf3,0xb1,0x4b,0xde,0x7f,0x4e,0x4e,0x8e,0x73,
+    0x2d,0x6c,0x6f,0x6f,0x2f,0x10,0xc5,0x47,0x8e,0x49,0xdf,0x01,0xf4,0xc1,
+    0xc1,0xc1,0x34,0x4f,0x3e,0xe4,0x41,0x3d,0xeb,0xa0,0x75,0x0c,0xf3,0x66,
+    0x42,0x7e,0x3a,0x9d,0x8e,0xd6,0x42,0xc7,0x9e,0x3d,0x7b,0x2e,0x4b,0x7d,
+    0x1f,0x3f,0x7e,0xfc,0x14,0xf6,0xa7,0x56,0xd4,0xe9,0x9b,0xa2,0xd8,0x04,
+    0x62,0xff,0xc9,0x39,0x7e,0xc0,0xd3,0xd8,0xd8,0xa8,0xc2,0x9a,0x6d,0xc1,
+    0xb9,0x86,0x1d,0x39,0x72,0x84,0xd5,0xd5,0xd5,0x31,0x9c,0x3f,0xc7,0x0d,
+    0x3d,0x8f,0xb1,0x62,0xb4,0xee,0xe3,0x9d,0x98,0xb7,0x6d,0xdb,0xd6,0x84,
+    0xbd,0xfc,0x15,0xd4,0x11,0x67,0xdd,0xc3,0xfc,0xbc,0x63,0x30,0x18,0xb2,
+    0x45,0xb1,0x09,0xba,0x2f,0x39,0x06,0x05,0x05,0xd1,0x5c,0xce,0x14,0xd1,
+    0xd6,0xd6,0x96,0x83,0x5a,0x7a,0xc3,0xdf,0xdf,0x7f,0xd8,0x9d,0xb3,0x3e,
+    0xf6,0x4e,0x76,0xcc,0x6b,0x23,0x62,0xf4,0x62,0x2c,0x1e,0x21,0x3f,0x35,
+    0xf0,0xfc,0x39,0x33,0x33,0xf3,0xab,0xd1,0x62,0x4a,0x60,0xfe,0x76,0xb8,
+    0xfa,0x79,0x88,0xdf,0x49,0x67,0x85,0xb4,0xb1,0xc0,0xda,0x75,0x10,0xb9,
+    0xf8,0xde,0x78,0xc1,0xde,0xeb,0xe0,0x78,0xfa,0x1d,0x0d,0xe4,0x09,0xad,
+    0x85,0xf4,0x3d,0xf2,0xbc,0xeb,0x7b,0x01,0xe5,0x52,0xca,0xeb,0x82,0x5a,
+    0xad,0x7e,0x1f,0xfb,0x1d,0x3a,0xef,0xb5,0x80,0x2c,0x72,0x44,0xbd,0xbc,
+    0x86,0x7b,0xef,0xbc,0x2e,0xe0,0x5c,0xd9,0xe0,0x7a,0xcf,0x85,0xc0,0x1f,
+    0x38,0xf3,0x67,0xd7,0xae,0x5d,0x54,0x4b,0xdf,0x7e,0xd5,0x24,0x27,0x27,
+    0x57,0xc2,0x67,0x04,0xd0,0x1e,0x37,0xd8,0xe7,0xdf,0x2b,0x02,0x38,0xcf,
+    0x37,0x01,0x01,0x01,0x1a,0xe4,0xf0,0xc7,0x56,0xab,0x75,0x3f,0x9e,0x7f,
+    0x6b,0xb2,0xb0,0xd9,0x6c,0xfb,0xb1,0xb7,0xc8,0x45,0x5e,0x49,0x35,0x91,
+    0xbe,0x99,0xc5,0xf9,0xfc,0xf7,0x8a,0x04,0xdf,0xbb,0xfc,0x9d,0x39,0x89,
+    0x5c,0xee,0x43,0x1e,0xfe,0xee,0x6d,0x94,0x4a,0xe5,0x23,0x79,0x5c,0x40,
+    0xdf,0x06,0x62,0x7c,0x46,0xbf,0x12,0xc0,0x67,0xa0,0x19,0x98,0xdc,0xa9,
+    0x37,0x6e,0x40,0x75,0xed,0x1a,0xa0,0x77,0xfc,0x26,0x2f,0xf4,0x0f,0x37,
+    0x76,0x25,0x15
+};
+
+// shade.png
+static const unsigned char image_10_data[] = {
+    0x00,0x00,0x1f,0xa4,0x78,0x9c,0xd5,0x99,0xd1,0x4b,0x53,0x51,0x1c,0xc7,
+    0xbd,0xd3,0xa1,0xa0,0xf8,0xa2,0xff,0x81,0xef,0x2a,0xf8,0xe0,0x83,0x0f,
+    0x03,0xc1,0x27,0x21,0x48,0x16,0x14,0x8d,0x22,0xa5,0x51,0x11,0x16,0x44,
+    0x41,0x83,0x51,0xd0,0x46,0x52,0x30,0x50,0x0b,0x82,0x60,0x83,0x61,0x61,
+    0xa0,0x54,0x1b,0x14,0x4b,0x92,0xca,0x32,0xc8,0x32,0x66,0xb9,0x24,0x28,
+    0x5a,0xe4,0x40,0x14,0x7a,0xf0,0x16,0x38,0x37,0x4f,0xbf,0xef,0xb8,0xa3,
+    0xdb,0xe9,0xe7,0x86,0xed,0x6e,0x9e,0x0e,0x7c,0x60,0x3b,0xf7,0xf2,0xfd,
+    0x7e,0xbc,0x5c,0xee,0xae,0xe7,0x08,0x21,0xaa,0x84,0x09,0x1a,0x75,0xc4,
+    0x09,0x22,0x4c,0xbc,0x26,0x74,0x42,0x54,0x10,0xdd,0xe8,0x0d,0x1b,0x1e,
+    0x75,0x42,0x72,0x34,0xb9,0x6a,0x84,0x8b,0x48,0xca,0x39,0x76,0xbb,0x7d,
+    0xab,0x52,0x30,0x7f,0x43,0xd2,0xf0,0xd2,0x18,0xdf,0xf1,0xfc,0x79,0xed,
+    0xed,0xed,0x3f,0x47,0x46,0x46,0xbe,0x4d,0x4f,0x4f,0x7f,0x5a,0x5d,0x5d,
+    0xfd,0x40,0xe7,0xbc,0x2f,0xc0,0xa2,0x95,0xac,0xad,0xad,0x2d,0x51,0xef,
+    0x67,0xea,0x5f,0x86,0x87,0xc9,0x7d,0xdc,0xec,0x4d,0xc3,0x8f,0xf9,0xc6,
+    0xc6,0xc6,0xcd,0x60,0x30,0xf8,0x85,0xe6,0xe2,0xaa,0x00,0x1f,0x78,0x19,
+    0xde,0x7e,0xc3,0xd7,0x81,0xef,0xd5,0xd5,0xd5,0x5b,0xd1,0x68,0xf4,0x23,
+    0xcd,0xcd,0xab,0x06,0xbc,0xe0,0x67,0x78,0xc3,0x37,0x80,0xcf,0x83,0x83,
+    0x83,0xcb,0x74,0xfc,0x55,0x99,0x99,0xfb,0x57,0xc8,0x2f,0x65,0x38,0xc3,
+    0x77,0x1e,0x9f,0xa7,0xa6,0xa6,0xde,0xd1,0xb1,0x97,0xaa,0x02,0x3f,0xc3,
+    0x19,0xbe,0x59,0x5c,0xf7,0x8d,0x8d,0x8d,0xe7,0x74,0x6c,0xa6,0x18,0x99,
+    0x4c,0x66,0x26,0x91,0x48,0xcc,0xbd,0xb1,0x60,0x20,0x87,0xf2,0xd0,0x5b,
+    0x14,0xf2,0x7b,0x61,0xdc,0x1f,0x59,0xe3,0x59,0x96,0xa5,0xf9,0x27,0x85,
+    0xa0,0x7b,0xea,0x6d,0x47,0x47,0xc7,0xf7,0xda,0xda,0xda,0xac,0x95,0xcf,
+    0x63,0xe4,0x21,0x17,0xf9,0x52,0xe7,0x53,0x19,0x78,0x9a,0x9e,0xbf,0x70,
+    0x7e,0xbc,0x1d,0x2e,0x97,0xeb,0x6b,0xfe,0x5c,0x9b,0xcd,0x26,0x5a,0x5a,
+    0x5a,0x44,0x5b,0x5b,0x5b,0xc9,0x20,0x07,0x79,0xf9,0x6c,0xf4,0x14,0xf2,
+    0x60,0x9c,0x63,0x1c,0x3e,0x9f,0x6f,0x11,0xe7,0x34,0x34,0x34,0x88,0xa1,
+    0xa1,0x21,0xa1,0xeb,0xba,0xb0,0x72,0x20,0x0f,0xb9,0xc8,0x47,0x8f,0xdf,
+    0xef,0x4f,0xd0,0xf4,0x23,0x0e,0xc6,0xf9,0x81,0x4c,0x3a,0x9d,0x7e,0x58,
+    0x5f,0x5f,0x9f,0xd6,0x34,0x4d,0x44,0x22,0x11,0x4b,0x5d,0xe5,0x81,0x7c,
+    0xf4,0xa0,0x0f,0xbd,0x9c,0x8f,0xd9,0xb9,0xa6,0xa6,0x06,0xce,0x51,0x19,
+    0xfa,0x3d,0x7a,0x86,0xe3,0xad,0xad,0xad,0x65,0xf5,0xcd,0x0f,0xf4,0xa0,
+    0x0f,0xbd,0x9c,0x0f,0x3c,0x25,0xe7,0xbb,0x32,0xe1,0x70,0x78,0x16,0xc7,
+    0x7b,0x7a,0x7a,0x2a,0xe2,0x8c,0x1e,0xf4,0x8d,0x8d,0x8d,0xcd,0xd2,0xd7,
+    0x7b,0x32,0x8c,0xf3,0x84,0x4c,0x2a,0x95,0x8a,0x18,0xbf,0xe9,0x82,0xde,
+    0x3b,0xca,0xea,0x8b,0x7c,0xf4,0xa0,0x0f,0xbd,0x9c,0x0f,0xe3,0x3c,0xce,
+    0xd1,0xd9,0xd9,0xb9,0x8c,0x73,0xba,0xbb,0xbb,0xc5,0xca,0xca,0x4a,0x59,
+    0x7c,0x91,0x8b,0x7c,0xf4,0xa0,0x8f,0xa6,0xee,0x70,0x30,0xce,0xb7,0x38,
+    0x92,0xc9,0xe4,0x44,0x53,0x53,0xd3,0x8f,0xfc,0xf5,0x76,0xbb,0xdd,0x62,
+    0x74,0x74,0x54,0x84,0x42,0xa1,0x92,0x41,0x0e,0xf2,0xf2,0xd7,0x17,0x3d,
+    0xd4,0x37,0x49,0xbd,0xb7,0x39,0x24,0xe7,0x0c,0xcd,0x85,0xb7,0x63,0x61,
+    0x61,0x61,0xb2,0xab,0xab,0xeb,0xaf,0xf7,0x6a,0x2b,0x41,0x3e,0x7a,0x0a,
+    0x79,0xc0,0x53,0x72,0x0e,0x16,0x23,0x16,0x8b,0xdd,0xf7,0x78,0x3c,0xb3,
+    0x7d,0x7d,0x7d,0x8b,0xbd,0xbd,0xbd,0x4b,0xa5,0x82,0x1c,0xe4,0x21,0x97,
+    0xf2,0x43,0xc5,0x60,0x9c,0x6f,0xaa,0x0e,0xe3,0x7c,0x43,0x75,0x18,0xe7,
+    0x6b,0x16,0x73,0xdd,0x6a,0x18,0xe7,0x61,0xd5,0x31,0x3b,0xd3,0x7b,0x29,
+    0x9c,0x03,0xaa,0x03,0x4f,0xc9,0xf9,0xca,0x2e,0x73,0xb5,0x18,0x8c,0xf3,
+    0x65,0xd5,0x61,0x9c,0x2f,0x15,0xc0,0xa7,0x02,0x8c,0xf3,0x45,0xd5,0x91,
+    0x9c,0x37,0x69,0xce,0xab,0x3a,0xf0,0x94,0x9c,0xcf,0x5b,0x84,0xa7,0x5c,
+    0x30,0xce,0xe7,0x54,0x87,0x71,0x3e,0xa3,0x3a,0x8c,0xf3,0xa9,0x5d,0xe0,
+    0xf4,0x4e,0x60,0x9c,0x4f,0xaa,0x8e,0xd9,0xd9,0x66,0xb3,0xc1,0xf9,0x98,
+    0xc4,0x71,0xd5,0x80,0xa7,0xe4,0x7c,0x54,0x71,0xdc,0x8c,0x73,0xbf,0xea,
+    0x98,0x9c,0xb3,0x9a,0xa6,0x65,0x74,0x5d,0x3f,0x42,0xf3,0x87,0x4a,0xe0,
+    0x70,0x39,0x21,0xbf,0x7e,0x78,0x1a,0xeb,0xa2,0xb9,0xf5,0xe7,0x40,0x20,
+    0x70,0x81,0x8e,0x1d,0x54,0x15,0xf8,0x99,0xd6,0x9f,0x73,0xeb,0xfc,0x0e,
+    0x87,0x03,0xff,0xf3,0xee,0x57,0x15,0xf8,0x55,0xfd,0x5e,0xe7,0xcf,0xed,
+    0xa7,0xe0,0xba,0x7b,0xbd,0x5e,0xbc,0x8b,0x38,0x2b,0xc0,0xbe,0x9d,0x00,
+    0x2f,0xe3,0xbe,0xc8,0xed,0xa7,0x08,0xd3,0xbe,0x95,0xdd,0x6e,0x5f,0x1f,
+    0x18,0x18,0xc0,0xfb,0xf5,0x5e,0x55,0x80,0x0f,0xbc,0x0c,0xdf,0xdc,0xbe,
+    0x95,0x60,0xf6,0x07,0x9b,0x9b,0x9b,0x97,0x9c,0x4e,0xe7,0xb0,0xcf,0xe7,
+    0x3b,0x1b,0x8f,0xc7,0x0f,0xd0,0x39,0x7b,0x2a,0x05,0xfa,0xd0,0x8b,0x7e,
+    0x78,0x98,0xd6,0x6d,0xfe,0xd8,0x1f,0x14,0x45,0xf6,0x61,0xe9,0x19,0x93,
+    0xae,0x14,0xcc,0x1a,0x13,0xbb,0x0f,0x2b,0xfe,0xb3,0xfd,0xee,0x5f,0x4b,
+    0xfc,0x3e,0x57
+};
+
+// splat.png
+static const unsigned char image_11_data[] = {
+    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x59,0x09,0x4c,0x95,0x47,0x10,0xc6,
+    0x03,0x50,0xf1,0x88,0xf1,0xbe,0xa2,0x36,0xd1,0x78,0xd6,0x98,0xaa,0x69,
+    0x88,0xda,0xe2,0x81,0x26,0x52,0x89,0x77,0x63,0x8c,0x82,0x82,0x41,0x11,
+    0x09,0x18,0xad,0xc5,0x70,0x14,0x14,0x0f,0x50,0x6a,0x04,0x41,0x41,0xe4,
+    0x2a,0x88,0x82,0x02,0xfa,0x12,0x88,0x29,0x86,0xc3,0xa2,0x42,0xb9,0x44,
+    0x69,0x25,0x4a,0x2d,0xe2,0x85,0x8a,0xa8,0x60,0xb8,0xde,0xf6,0x9b,0xf5,
+    0xed,0xcb,0xff,0x16,0xde,0x61,0x52,0xd4,0x4d,0xbe,0x04,0xff,0x9d,0xdd,
+    0xf9,0xd8,0x9d,0xf9,0x66,0x56,0xcc,0xcc,0x3a,0x1d,0xf6,0x80,0x1f,0x70,
+    0x1e,0x28,0x03,0x2a,0xba,0x18,0xa5,0x40,0x12,0xe0,0x0d,0xd8,0x75,0x4e,
+    0x49,0x67,0x7c,0x0f,0x14,0x01,0x4c,0xc0,0xd2,0xd2,0xb2,0xbd,0x7f,0xff,
+    0xfe,0xad,0x5d,0x09,0x0b,0x0b,0x8b,0x76,0xa5,0x4f,0x20,0x1f,0xf8,0x56,
+    0x0f,0x47,0x77,0x61,0xb7,0x6c,0xd9,0xb2,0x86,0x98,0x98,0x98,0x9a,0x7b,
+    0x18,0x8c,0xb1,0x3b,0x5d,0x0d,0xb5,0x5a,0x7d,0xa7,0xb2,0xb2,0xb2,0x2a,
+    0x3a,0x3a,0xba,0x66,0xe1,0xc2,0x85,0x6f,0x14,0x7c,0x1d,0x25,0x8e,0x3f,
+    0x00,0xed,0x56,0x56,0x56,0x6d,0x39,0x39,0x39,0x0f,0x3e,0x05,0x37,0x43,
+    0xc8,0xcc,0xcc,0xac,0xee,0xd5,0xab,0x57,0x7b,0xb7,0x6e,0xdd,0x5a,0xc0,
+    0xeb,0x3b,0x0d,0xc7,0xee,0xf8,0xf7,0x0b,0xba,0xdf,0xdc,0xdc,0xdc,0xcf,
+    0xce,0x51,0xe0,0xca,0x95,0x2b,0xff,0xf4,0xec,0xd9,0x53,0x0d,0x7e,0x0f,
+    0x35,0x3c,0xbf,0xa1,0x33,0x5e,0xbb,0x76,0x6d,0xfd,0xe7,0xe6,0x26,0xc3,
+    0xd6,0xd6,0x56,0xc4,0xc0,0x57,0x80,0x07,0xfd,0x7c,0xf2,0xe4,0xc9,0xda,
+    0xae,0xf2,0x17,0x19,0x19,0xf9,0xe8,0xe0,0xc1,0x83,0x4f,0x5a,0x5a,0x5a,
+    0xee,0x7e,0xcc,0xba,0x03,0x07,0x0e,0x3c,0xd1,0xf0,0x74,0x00,0x02,0xe8,
+    0x67,0x95,0x4a,0x45,0x77,0x7e,0xfb,0xff,0xc6,0xd2,0xa5,0x4b,0x1b,0x44,
+    0x5e,0x2c,0x58,0xb0,0xe0,0xcd,0xc7,0xac,0x4d,0x48,0x48,0x78,0xa8,0x59,
+    0xbb,0x4b,0xf0,0xbc,0x7c,0xf9,0xf2,0x3d,0xe4,0x5d,0xb1,0xa9,0xc8,0xcf,
+    0xcf,0xaf,0xac,0xaf,0xaf,0x2f,0x35,0x64,0xb3,0x77,0xef,0xde,0x5a,0xda,
+    0x7b,0xe6,0xcc,0x99,0x6c,0xfa,0xf4,0xe9,0x0c,0x79,0xc0,0x1a,0x1b,0x1b,
+    0x4b,0x4c,0xf5,0x11,0x17,0x17,0x77,0xbf,0x13,0x9e,0x95,0x98,0xbb,0x65,
+    0x0a,0xac,0xad,0xad,0xf9,0x19,0x51,0x9c,0xbb,0xb9,0xb9,0xd5,0xbe,0x7f,
+    0xff,0xbe,0x50,0xb6,0x49,0x4c,0x4c,0xfc,0x9b,0x6c,0x46,0x8d,0x1a,0xc5,
+    0x1e,0x3f,0x7e,0xcc,0x96,0x2f,0x5f,0xce,0xcf,0xb4,0xb6,0xb6,0xb6,0xd8,
+    0x54,0x3f,0xb1,0xb1,0xb1,0x55,0x32,0xcf,0x8c,0x8c,0x8c,0x0a,0x9c,0xf5,
+    0x1f,0xc6,0x40,0x76,0xe2,0x8c,0xc6,0x8c,0x19,0xc3,0x7d,0x4f,0x9c,0x38,
+    0xb1,0xf1,0xfe,0xfd,0xfb,0x45,0xc2,0xa6,0xa2,0xa2,0xa2,0x98,0xf4,0xdb,
+    0xdc,0xdc,0x9c,0x95,0x96,0x96,0x32,0x1a,0x33,0x66,0xcc,0x60,0xa4,0x35,
+    0xf0,0x6f,0xd4,0x87,0x00,0x34,0xfc,0x2f,0x99,0x67,0x7a,0x7a,0x7a,0x19,
+    0xe6,0x72,0x8d,0x21,0x20,0x20,0x80,0xff,0x8e,0x67,0xce,0x9c,0x61,0x38,
+    0x47,0xb6,0x6e,0xdd,0x3a,0xce,0x95,0x6a,0x8a,0xab,0xab,0xeb,0xc3,0x9b,
+    0x37,0x6f,0x16,0x8d,0x1e,0x3d,0xba,0x89,0xbe,0x45,0x45,0x45,0x31,0x31,
+    0xc0,0x9b,0x8d,0x1f,0x3f,0xbe,0xd1,0x14,0x1f,0x02,0xd0,0xfd,0x3b,0x32,
+    0xcf,0xb4,0xb4,0xb4,0x3f,0x31,0xf7,0xbb,0x31,0x9c,0x3f,0x7f,0xbe,0x84,
+    0xec,0xbd,0xbc,0xbc,0xb4,0x1c,0x22,0x22,0x22,0xa8,0xbe,0x2a,0xeb,0x1e,
+    0xf3,0xf0,0xf0,0xd0,0xce,0x3f,0x7b,0xf6,0x8c,0x7f,0x9b,0x3f,0x7f,0x7e,
+    0x9d,0x29,0x3e,0x04,0x70,0x16,0xe5,0x32,0xcf,0x4b,0x97,0x2e,0xdd,0xc2,
+    0x5c,0x96,0x31,0x20,0xbe,0xb2,0x29,0x1f,0x6c,0x6c,0x6c,0x98,0x72,0x20,
+    0xa7,0xd8,0xee,0xdd,0xbb,0x99,0xbd,0xbd,0x3d,0x8b,0x8f,0x8f,0xd7,0x99,
+    0xbb,0x76,0xed,0x1a,0xe7,0xb9,0x79,0xf3,0xe6,0x6a,0x53,0x7c,0x08,0xe0,
+    0x3e,0x4a,0x64,0x9e,0xa9,0xa9,0xa9,0x05,0x98,0x53,0x99,0x02,0xc4,0xe5,
+    0xbb,0x7e,0xfd,0xfa,0x31,0x53,0x47,0x58,0x58,0x18,0xe7,0x19,0x14,0x14,
+    0x54,0x66,0xaa,0x0f,0x02,0x74,0xb7,0x48,0xe6,0x99,0x92,0x92,0x92,0x8f,
+    0xb9,0x74,0x63,0x68,0x6e,0x6e,0xce,0x18,0x3e,0x7c,0x78,0xe3,0xa0,0x41,
+    0x83,0x4c,0xe6,0xb9,0x67,0xcf,0x1e,0xa6,0xb9,0x33,0x93,0x7c,0x08,0x9c,
+    0x3a,0x75,0xea,0x96,0xcc,0x13,0x71,0x97,0x83,0x5c,0x4c,0x25,0x54,0x57,
+    0x57,0x5f,0xd9,0xb0,0x61,0xc3,0x3d,0xf4,0x2e,0x35,0xb3,0x67,0xcf,0x7e,
+    0x3a,0x69,0xd2,0xa4,0x97,0xe3,0xc6,0x8d,0x6b,0x18,0x31,0x62,0xc4,0x3b,
+    0xe4,0x6c,0x2b,0xd9,0x2f,0x5a,0xb4,0xa8,0x53,0x4e,0x75,0x75,0x75,0x6c,
+    0xeb,0xd6,0xad,0x2c,0x39,0x39,0x59,0xfb,0xed,0xf0,0xe1,0xc3,0x9c,0x27,
+    0xe2,0xb8,0x40,0xf8,0x30,0x05,0xe1,0xe1,0xe1,0x05,0x32,0x4f,0xec,0x9b,
+    0x8d,0x2d,0xcf,0x11,0xa0,0x79,0xca,0xde,0x8a,0xf5,0xe8,0xd1,0x83,0x0d,
+    0x18,0x30,0x80,0xe1,0x1c,0x49,0x83,0x98,0xa7,0xa7,0x27,0xcf,0x75,0x31,
+    0xce,0x9d,0x3b,0xc7,0xba,0x77,0xef,0xce,0xb6,0x6f,0xdf,0xce,0x26,0x4f,
+    0x9e,0xcc,0xd7,0x0c,0x19,0x32,0x44,0x3b,0x8f,0x33,0xe0,0xdf,0xf0,0xbb,
+    0xd6,0x43,0x0f,0x54,0xc2,0x8f,0x31,0xa0,0x96,0xe7,0xc9,0x3c,0xe1,0xeb,
+    0x2a,0xe6,0x12,0xda,0xdb,0xdb,0x13,0x90,0xbb,0x6d,0xd0,0x19,0x56,0x56,
+    0x56,0xc6,0xde,0xbe,0x7d,0x6b,0xf4,0x5e,0x71,0xe6,0x3a,0xb9,0x4e,0x20,
+    0x6d,0x15,0x03,0x67,0xc3,0x50,0x9b,0x84,0x7e,0xb5,0xad,0x5e,0xbd,0xba,
+    0xb2,0xaa,0xaa,0x2a,0x95,0xfc,0x19,0x02,0xe2,0x3a,0x47,0xe6,0x89,0xfa,
+    0x91,0x89,0xb9,0x18,0x82,0xa3,0xa3,0x23,0xbd,0x03,0x18,0xf6,0xe3,0x3e,
+    0xf4,0x8d,0xc0,0xc0,0x40,0xae,0xdf,0xa8,0x4b,0x54,0x13,0xd5,0xc8,0xe7,
+    0x52,0xe8,0x55,0x01,0xf4,0xbd,0x0d,0x5a,0xc9,0x5a,0x5b,0x5b,0x75,0xec,
+    0x91,0xab,0xbc,0x3e,0xd1,0xde,0x38,0x7f,0x35,0x62,0xab,0xbc,0xa8,0xa8,
+    0x28,0x55,0xf8,0x95,0x71,0xe2,0xc4,0x89,0x6c,0x99,0x27,0x6a,0xbe,0x0a,
+    0x9c,0xa2,0x08,0xb8,0xd3,0x68,0x9c,0xc7,0x2b,0xfa,0xbe,0x62,0xc5,0x0a,
+    0xd6,0xd4,0xd4,0xd4,0x81,0x23,0x7a,0x1f,0x7e,0xd7,0x64,0x83,0x98,0x68,
+    0xf2,0xf3,0xf3,0xcb,0x11,0xeb,0xc7,0x8e,0x1d,0xfb,0x92,0xbe,0x23,0x9e,
+    0xd9,0x8d,0x1b,0x37,0x74,0xd6,0x21,0x0f,0xb9,0xfe,0x4f,0x98,0x30,0x81,
+    0x69,0x6a,0x6f,0xbb,0x9d,0x9d,0xdd,0x5d,0xf4,0xf3,0x89,0x62,0xbd,0xc0,
+    0xf1,0xe3,0xc7,0xaf,0xca,0x3c,0xa1,0x79,0x94,0x63,0xe1,0x02,0x8f,0x1e,
+    0x3d,0x8a,0x9e,0x32,0x65,0x0a,0xef,0x23,0x66,0xcd,0x9a,0xc5,0x9e,0x3e,
+    0x7d,0xda,0x81,0xab,0xc8,0x8f,0xde,0xbd,0x7b,0x37,0xe7,0xe5,0xe5,0x25,
+    0x89,0xb5,0x87,0x0e,0x1d,0xba,0x4a,0xe7,0x25,0x62,0x40,0x99,0x53,0xca,
+    0x58,0xb8,0x70,0xe1,0x02,0x43,0xed,0x12,0xf1,0xd0,0xba,0x69,0xd3,0xa6,
+    0x42,0x25,0x87,0x90,0x90,0x90,0x4c,0x99,0x27,0x6a,0xfe,0x45,0xcc,0x9d,
+    0x50,0x02,0x67,0x16,0x3a,0x77,0xee,0xdc,0x7b,0x34,0x4f,0xfb,0x15,0x17,
+    0x17,0x77,0xf0,0xe7,0xe3,0xe3,0xc3,0xfd,0xac,0x5a,0xb5,0xaa,0x18,0x67,
+    0x17,0x97,0x95,0x95,0x95,0x48,0x75,0x40,0x70,0xa4,0x3a,0x95,0x9d,0x9d,
+    0xad,0x37,0x76,0x28,0x36,0x90,0xd7,0x6c,0xf0,0xe0,0xc1,0xdc,0x7e,0xc7,
+    0x8e,0x1d,0xb9,0xc2,0xff,0xb1,0x63,0xc7,0x54,0x32,0x4f,0xd4,0xfc,0x0b,
+    0x98,0x0b,0x91,0x81,0xbc,0x0a,0x71,0x70,0x70,0xb8,0x4e,0xf1,0xd7,0xa7,
+    0x4f,0x1f,0x35,0x74,0x56,0xc7,0x0f,0xfa,0x2c,0xbe,0x3f,0xb4,0xe0,0x95,
+    0xe6,0x1e,0xdb,0x44,0xbc,0x90,0x46,0x09,0x5d,0x40,0x6f,0xc2,0xd0,0xa7,
+    0xb1,0xa3,0x47,0x8f,0x32,0xdc,0x27,0xd7,0x7e,0xaa,0xb7,0xc8,0x69,0x16,
+    0x1a,0x1a,0xca,0x76,0xee,0xdc,0xc9,0xf7,0x19,0x39,0x72,0xe4,0x0b,0xe1,
+    0x3b,0x38,0x38,0x38,0x43,0xe6,0x89,0x9a,0x4f,0x5a,0x10,0xa4,0x0f,0xb8,
+    0xe3,0x34,0x9c,0x4d,0x0b,0x9d,0x55,0x49,0x49,0x89,0x96,0x27,0xf9,0x11,
+    0x67,0x87,0x38,0xd1,0xc6,0x2c,0xf1,0x14,0xc3,0xc5,0xc5,0xa5,0x83,0x1e,
+    0xe8,0x03,0xde,0x3f,0x05,0xc2,0xe7,0x91,0x23,0x47,0xd2,0x64,0x9e,0x88,
+    0x6d,0xd2,0x82,0x40,0x43,0x40,0xaf,0x74,0x91,0x6c,0xbd,0xbd,0xbd,0xb5,
+    0x1c,0x28,0x6e,0xe7,0xcd,0x9b,0xc7,0x75,0x87,0xee,0x10,0xfd,0x1d,0xdb,
+    0xb2,0x65,0x0b,0xfb,0xf0,0xa4,0x66,0x3c,0x8f,0x34,0x7a,0xfa,0x0a,0xf7,
+    0x92,0x8d,0xf7,0x47,0x8a,0xbf,0xbf,0xff,0x45,0x5f,0x5f,0xdf,0x34,0x68,
+    0x43,0x06,0xf6,0x4a,0x47,0x0e,0xa6,0xd1,0xde,0xa7,0x4f,0x9f,0xfe,0x4d,
+    0xe9,0x0f,0x71,0x9e,0x22,0xf3,0x84,0x4d,0x2c,0xe6,0xfc,0x0d,0x01,0x71,
+    0x9d,0x48,0xb6,0xf0,0xa3,0x37,0xde,0xe4,0x41,0xb9,0x42,0x6b,0x9c,0x9c,
+    0x9c,0xb2,0x8c,0xed,0x2f,0x03,0xba,0x97,0x2c,0xf3,0x44,0xac,0x44,0x63,
+    0xce,0xc7,0x10,0xd6,0xaf,0x5f,0x7f,0x55,0x53,0x63,0x4d,0xe6,0x89,0xf7,
+    0x09,0xe7,0xb9,0x78,0xf1,0xe2,0x1b,0xc6,0xf6,0x97,0xb1,0x7f,0xff,0xfe,
+    0x24,0x99,0x27,0xe2,0x2c,0x12,0x73,0x5e,0x86,0x30,0x6d,0xda,0xb4,0x4a,
+    0xb2,0xad,0xa9,0xa9,0xd1,0xe1,0x42,0x35,0x8b,0xf2,0x80,0xee,0x9f,0xfa,
+    0x52,0xa5,0xbe,0x93,0xf6,0x52,0x1d,0x80,0x1e,0xff,0x6b,0x6c,0x7f,0x19,
+    0xb8,0xb7,0x04,0x99,0x27,0x72,0x8e,0x34,0x6b,0xb7,0x21,0x20,0xdf,0x1b,
+    0x49,0x9f,0x94,0xa3,0xa0,0xa0,0x80,0x0d,0x1c,0x38,0x50,0xad,0xcc,0x05,
+    0xea,0x01,0x9e,0x3f,0x7f,0xae,0xb5,0xa1,0x37,0x0a,0x7a,0x84,0x36,0xe4,
+    0xfe,0x4f,0xc6,0x7c,0x28,0x81,0x18,0x8e,0x91,0x79,0x42,0x2b,0x42,0x31,
+    0xe7,0xa1,0x0f,0x85,0x85,0x85,0xbe,0x64,0x47,0xef,0x31,0x31,0x28,0xf6,
+    0xa8,0x0f,0x20,0xcd,0x5a,0xb9,0x72,0xa5,0x0a,0xfd,0x80,0x0f,0x6a,0x3d,
+    0xef,0xc5,0x50,0x1f,0xd5,0xa8,0xe1,0xdc,0x0e,0xb1,0xc9,0xf9,0x27,0x25,
+    0x25,0x05,0x1b,0xf2,0x21,0x03,0x39,0x16,0x2d,0xf3,0x44,0x8e,0x1c,0xc7,
+    0x9c,0x9b,0x3e,0x20,0x56,0xc2,0x45,0xae,0x53,0x2d,0x41,0x8e,0xf2,0x77,
+    0x2e,0xb4,0xea,0x3d,0xf2,0x32,0x4c,0x69,0xbb,0x66,0xcd,0x9a,0x34,0x51,
+    0x37,0xcb,0xcb,0xcb,0xb5,0x7d,0x32,0xfa,0xa9,0x04,0x43,0x3e,0x64,0xec,
+    0xdb,0xb7,0x2f,0x52,0xe6,0x09,0xfd,0x3d,0x86,0xb9,0x6d,0xfa,0xe0,0xec,
+    0xec,0x1c,0x4f,0x76,0x54,0x2b,0xa1,0x71,0xdc,0xaf,0x95,0x95,0xd5,0x1b,
+    0xf4,0xbe,0xbf,0x74,0x66,0x8f,0x33,0xe4,0xf6,0x78,0xbf,0xa9,0x6d,0x6d,
+    0x6d,0xb9,0x3d,0xde,0x79,0x67,0x0d,0xf9,0x90,0x01,0xad,0x8b,0x90,0x79,
+    0x42,0x53,0x49,0x5b,0x9d,0xf5,0x01,0xbd,0xf5,0x01,0x65,0x0c,0xe2,0xac,
+    0x1e,0xa0,0xd7,0xd9,0x65,0x68,0x0d,0x6a,0x60,0x24,0x7a,0xa7,0x66,0xb2,
+    0xef,0xdb,0xb7,0xef,0x2b,0x68,0xaa,0xbb,0x21,0x7b,0x19,0x78,0x07,0x84,
+    0x29,0x78,0xfe,0x4c,0x3f,0xbb,0xbb,0xbb,0x53,0x7c,0x3a,0x18,0x02,0xd6,
+    0xfd,0x8a,0x3e,0xf8,0xe6,0x92,0x25,0x4b,0x2e,0xbd,0x7e,0xfd,0xda,0xc9,
+    0x98,0x3d,0x01,0xba,0xbf,0x0d,0xf5,0x2f,0x10,0x79,0xe5,0x6c,0x8a,0xbd,
+    0x12,0x1b,0x37,0x6e,0x14,0xf1,0xe9,0x62,0xf6,0xe1,0xff,0x17,0xd9,0x9c,
+    0x39,0x73,0x48,0x87,0x37,0x7c,0x49,0x98,0x3a,0x75,0x6a,0xbe,0x86,0xe7,
+    0xd7,0x80,0x05,0xd0,0x84,0x7c,0x68,0xb8,0x7e,0xfd,0xba,0x0b,0xe6,0x7f,
+    0xfc,0x12,0xa0,0x52,0xa9,0xdc,0x10,0x33,0x8d,0xe0,0x46,0xbd,0x6c,0x37,
+    0xb3,0x0f,0xc3,0x93,0x78,0xe3,0xad,0xfb,0x04,0xfa,0xe3,0x08,0xbb,0xd5,
+    0x9f,0x13,0x78,0xef,0x3b,0x43,0xab,0x5f,0x68,0xce,0x72,0x9d,0x99,0xee,
+    0x88,0xd2,0xf4,0x65,0x4d,0x36,0x36,0x36,0xf1,0x67,0xcf,0x9e,0xdd,0x8e,
+    0x35,0xf6,0x9f,0x12,0xe8,0xd9,0x5c,0xad,0xad,0xad,0x93,0x51,0x13,0x9a,
+    0x35,0x1c,0x83,0xcc,0x3a,0x0e,0x3a,0x5b,0x67,0xe0,0xb5,0xc8,0x69,0xe8,
+    0x63,0xdb,0xd0,0xa1,0x43,0x6f,0x0f,0x1b,0x36,0xac,0xac,0x2b,0x41,0x3e,
+    0xc8,0x97,0x42,0x4f,0xe8,0x2c,0x37,0x75,0xc2,0x51,0x39,0x2c,0xcd,0x3e,
+    0xfc,0x1d,0x87,0xb4,0x9a,0x7a,0x79,0x9d,0x9a,0xd8,0x45,0xa0,0xbf,0xcb,
+    0x50,0xef,0x90,0x0a,0x78,0x01,0xe6,0x32,0xa9,0xff,0x00,0x99,0xf6,0xbe,
+    0x01
+};
+
+// titlealpha.png
+static const unsigned char image_12_data[] = {
+    0x00,0x00,0x00,0x78,0x78,0x9c,0xe3,0xe7,0xe7,0xaf,0x64,0x00,0x82,0xff,
+    0xff,0xff,0x87,0x02,0x71,0x08,0x10,0x7b,0x01,0xb1,0x33,0x10,0x5b,0x01,
+    0xb1,0x3e,0x10,0x6b,0x00,0xb1,0x02,0x10,0x4b,0x02,0x31,0x27,0x03,0x0e,
+    0x00,0x94,0x63,0x05,0x62,0x09,0x34,0x0c,0xd2,0xa7,0x07,0xc4,0x36,0x50,
+    0x73,0x23,0x3f,0x7c,0xf8,0x20,0xc3,0xcf,0xcf,0xcf,0x06,0x00,0x83,0xf5,
+    0x43,0x25
+};
+
+// window_background.png
+static const unsigned char image_13_data[] = {
+    0x00,0x00,0x1a,0xe8,0x78,0x9c,0xcd,0x98,0x69,0x4c,0x54,0x57,0x14,0xc7,
+    0x59,0x04,0xdc,0xe2,0xbe,0xf3,0xc1,0x15,0xfc,0x60,0x4c,0xda,0xc4,0x2f,
+    0x96,0x2a,0xa6,0xf1,0x8b,0x24,0x84,0x0f,0xd6,0xa4,0x8d,0x34,0x01,0xa4,
+    0x09,0x54,0x28,0x21,0x85,0x26,0x1a,0x36,0x6b,0xad,0x10,0x2c,0x8b,0x20,
+    0x8b,0xac,0xb2,0x14,0x90,0x1d,0x0a,0x08,0x6d,0xa1,0x92,0x40,0x8a,0x24,
+    0xb6,0x28,0x76,0x18,0x16,0x69,0x3b,0x5a,0x05,0x2d,0x1d,0xc5,0x51,0x96,
+    0x19,0x5e,0xff,0xe7,0x39,0xb7,0xb9,0xdc,0x62,0x99,0xf7,0xa6,0xb4,0xbd,
+    0xc9,0x2f,0x19,0xee,0x99,0x73,0xee,0x7f,0xde,0xbb,0xe7,0x9c,0x7b,0xb1,
+    0xb1,0x99,0x73,0x78,0x81,0x18,0x50,0x06,0x7e,0x00,0xbd,0x0b,0x0c,0xad,
+    0x51,0x02,0xa2,0x80,0xe7,0xdc,0x92,0x66,0x0d,0x77,0xd0,0x0d,0x24,0x86,
+    0x93,0x93,0x93,0x69,0xc5,0x8a,0x15,0xd3,0x0b,0x89,0xa3,0xa3,0xa3,0x89,
+    0x5f,0x13,0x74,0x80,0x37,0x5e,0xa1,0x31,0x88,0x7d,0xcf,0xc3,0xc3,0xe3,
+    0x49,0x7e,0x7e,0xbe,0x4e,0xab,0xd5,0xf6,0xcf,0xcc,0xcc,0xdc,0x91,0x24,
+    0x69,0x41,0xa1,0x35,0x34,0x1a,0xcd,0x40,0x5e,0x5e,0x9e,0xee,0xf0,0xe1,
+    0xc3,0x4f,0x39,0xbd,0x27,0x04,0x8d,0x1e,0xc0,0xb8,0x6c,0xd9,0x32,0x63,
+    0x5b,0x5b,0xdb,0xdd,0x85,0xd6,0x35,0x1f,0xcd,0xcd,0xcd,0xc3,0x8b,0x17,
+    0x2f,0x36,0xd9,0xda,0xda,0x4e,0x43,0xd7,0x5b,0x66,0x8d,0xf8,0xd3,0x76,
+    0x94,0x9e,0xbd,0xb5,0x1a,0x7b,0x7a,0x7a,0x06,0x83,0x83,0x83,0x1f,0x05,
+    0x04,0x04,0x3c,0x56,0xc2,0xc5,0x8b,0x17,0xef,0x8f,0x8c,0x8c,0xf4,0xf1,
+    0xb1,0x9a,0x9a,0x9a,0x86,0x17,0x2d,0x5a,0x34,0x03,0x6d,0x3a,0xb3,0xce,
+    0xd7,0xe8,0x19,0x1f,0x3d,0x7a,0x54,0xaf,0x56,0x1f,0xed,0x8f,0x3d,0x7b,
+    0xf6,0xbc,0x10,0xf6,0x98,0x22,0xec,0xed,0xed,0x25,0x6f,0x6f,0xef,0x31,
+    0x3e,0xee,0x91,0x23,0x47,0x9e,0x98,0xed,0x2e,0xe0,0x43,0xfa,0x4c,0xbf,
+    0x49,0x8d,0x46,0xa3,0xd1,0x78,0x67,0xe5,0xca,0x95,0xa6,0x55,0xab,0x56,
+    0x49,0x35,0x35,0x35,0xd2,0xf8,0xf8,0xb8,0xf4,0xfc,0xf9,0x73,0x45,0x74,
+    0x74,0x74,0x48,0x9e,0x9e,0x9e,0xb2,0xde,0xf0,0xf0,0xf0,0x51,0x16,0xfb,
+    0xfc,0xf9,0xf3,0x0f,0xb8,0x7d,0x1a,0x43,0x9f,0xeb,0xea,0xea,0xe8,0x9d,
+    0xdf,0x56,0x4a,0x76,0x76,0xf6,0x2f,0xe4,0x5f,0x5f,0x5f,0x2f,0x59,0x3b,
+    0x0e,0x1c,0x38,0x20,0x21,0xff,0x4d,0x2c,0x76,0x49,0x49,0xc9,0x4f,0x66,
+    0x9d,0x1f,0x33,0x9d,0xb5,0xb5,0xb5,0x03,0xc8,0xbb,0x9b,0x4a,0xf1,0xf5,
+    0xf5,0x1d,0x25,0x7f,0x83,0xc1,0x60,0xb5,0xce,0xb8,0xb8,0x38,0x09,0x79,
+    0x22,0xb1,0xd8,0xc5,0xc5,0xc5,0x43,0xa2,0xce,0xea,0xea,0xea,0x3e,0xd8,
+    0x6e,0x28,0xc5,0xc7,0xc7,0xe7,0x21,0xf9,0x4f,0x4e,0x4e,0x5a,0xad,0xf3,
+    0xc2,0x85,0x0b,0x4c,0xa7,0x1c,0xbb,0xa8,0xa8,0xa8,0x7f,0x0e,0x9d,0xb4,
+    0x27,0x3a,0x95,0x02,0x9d,0xbf,0x92,0x7f,0x61,0x61,0xa1,0x54,0x5a,0x5a,
+    0x6a,0x15,0xc7,0x8f,0x1f,0xa7,0xbe,0x22,0xb1,0xd8,0x88,0xa9,0x11,0x75,
+    0x56,0x55,0x55,0xdd,0x82,0xad,0x5d,0x29,0x91,0x91,0x91,0x43,0x76,0x76,
+    0x76,0xaa,0xf3,0x5c,0x04,0x35,0x7c,0x86,0xc5,0x2e,0x28,0x28,0xb8,0x23,
+    0xea,0xac,0xac,0xac,0xfc,0x1e,0xb6,0x56,0xa5,0xa4,0xa6,0xa6,0xca,0xb1,
+    0x28,0x6f,0xe9,0xdd,0x5b,0x03,0xbd,0x77,0xd4,0x8d,0x69,0x16,0xfb,0xca,
+    0x95,0x2b,0xb7,0x44,0x9d,0xe5,0xe5,0xe5,0xdd,0xb0,0x35,0x2b,0x25,0x25,
+    0x25,0xa5,0x87,0xfc,0xa7,0xa7,0xa7,0xad,0xde,0x9f,0x89,0x89,0x89,0x4c,
+    0xa7,0x1c,0x1b,0x7d,0xf4,0xa6,0xa8,0xf3,0xea,0xd5,0xab,0xdf,0xc1,0xd6,
+    0x20,0x32,0x31,0x31,0xd1,0x88,0xfa,0x70,0xe3,0xd0,0xa1,0x43,0x0f,0xdc,
+    0xdc,0xdc,0x46,0x44,0x5c,0x5c,0x5c,0xe4,0x5a,0xdc,0xda,0xda,0x2a,0x5d,
+    0xbf,0x7e,0x7d,0x16,0xc3,0xc3,0xc3,0x94,0x13,0x6a,0x74,0xca,0x6b,0xe7,
+    0xe6,0xe6,0x76,0x8b,0x3a,0xcb,0xca,0xca,0x3a,0x60,0xab,0xe5,0x49,0x4f,
+    0x4f,0xef,0xc6,0xde,0x9b,0x99,0x6f,0x4f,0xa1,0xb7,0xbd,0xd2,0xb6,0x61,
+    0xc3,0x06,0x09,0xfd,0x5a,0x89,0xce,0x29,0xb6,0x7e,0x4e,0x4e,0x4e,0x97,
+    0xa8,0x13,0xcf,0xac,0x1d,0xbf,0xbd,0x92,0xd1,0xd7,0xd7,0xd7,0xc8,0xd6,
+    0xda,0xb1,0x63,0x87,0x3e,0x24,0x24,0xe4,0x76,0x58,0x58,0xd8,0xad,0xb9,
+    0x40,0x8f,0xfe,0xd1,0xdf,0xdf,0x5f,0xc3,0xe3,0xe7,0xe7,0xa7,0xd9,0xb6,
+    0x6d,0x9b,0x9e,0xfc,0x29,0xcf,0x3a,0x3b,0x3b,0x2d,0xd2,0x89,0xde,0x36,
+    0xc5,0x34,0x5c,0xbe,0x7c,0xb9,0x53,0xd4,0x89,0x9a,0xda,0x86,0xaf,0x96,
+    0x32,0xf0,0x9e,0xe5,0x3e,0xb3,0x7f,0xff,0xfe,0xfb,0xfc,0xbc,0x52,0x46,
+    0x47,0x47,0x2b,0x48,0xa7,0x97,0x97,0x97,0xc5,0x3a,0x99,0x6f,0x66,0x66,
+    0x66,0xbb,0xa8,0x13,0x35,0xf5,0x6b,0xd8,0x8a,0x18,0x5b,0xb6,0x6c,0x91,
+    0xcf,0x81,0x2d,0x2d,0x2d,0x0d,0xfc,0xbc,0x1a,0x1c,0x1c,0x1c,0x8c,0xbb,
+    0x76,0xed,0x52,0xa2,0x53,0xf6,0xcb,0xc8,0xc8,0xf8,0x56,0xd4,0x89,0x9a,
+    0x4a,0x9b,0x28,0x9f,0xb1,0x79,0xf3,0x66,0x39,0x3f,0x70,0xd6,0xab,0xe1,
+    0xe7,0xd5,0x80,0x1e,0x63,0xdc,0xb9,0x73,0xa7,0xa5,0x3a,0x27,0x99,0x5f,
+    0x5a,0x5a,0xda,0x37,0xa2,0x4e,0xd4,0xaa,0x46,0xec,0x89,0x6c,0xc6,0xa6,
+    0x4d,0x9b,0x64,0x9d,0xa8,0xe3,0x54,0x6f,0x1b,0xac,0x01,0xe7,0x48,0x93,
+    0xa5,0x3a,0x71,0x0e,0x99,0x64,0x1a,0x50,0x9b,0x5b,0x44,0x9d,0xa8,0x55,
+    0x75,0xf8,0x6a,0x3a,0x63,0xeb,0xd6,0xad,0x8f,0xfe,0xa9,0x1e,0x43,0x58,
+    0xa2,0x33,0x3a,0x3a,0x5a,0x5a,0xbf,0x7e,0xbd,0x81,0x69,0x40,0x6d,0x6e,
+    0x12,0x75,0xa2,0x56,0x55,0xc3,0x96,0xc2,0xd8,0xbd,0x7b,0xf7,0x7d,0x36,
+    0xdf,0xdb,0xdb,0x9b,0x6b,0x0d,0x4b,0x97,0x2e,0x9d,0x98,0x4f,0x27,0xf2,
+    0x4d,0xc2,0x5e,0x33,0x1d,0x3c,0x78,0x50,0xcb,0x34,0x24,0x27,0x27,0x7f,
+    0x29,0xea,0xc4,0x39,0xb2,0x82,0x1e,0x3d,0x03,0x3a,0xef,0x99,0xf3,0xa8,
+    0x80,0x9f,0x57,0x03,0x7a,0xf6,0x8b,0x35,0x6b,0xd6,0x48,0x67,0xcf,0x9e,
+    0x9d,0x93,0x63,0xc7,0x8e,0x49,0xc8,0x35,0x69,0xf5,0xea,0xd5,0x86,0xc1,
+    0xc1,0xc1,0x0c,0xe6,0x87,0x51,0x2b,0xea,0xcc,0xca,0xca,0x2a,0x83,0x2d,
+    0x9e,0xe1,0xea,0xea,0x4a,0xf7,0x12,0xaa,0xd1,0x79,0xfc,0xbc,0x1a,0xa0,
+    0xf1,0x09,0x9d,0xd7,0xd6,0xad,0x5b,0xf7,0x0c,0xef,0x55,0x64,0x1c,0x3d,
+    0xed,0x1e,0xea,0x56,0xf7,0xd8,0xd8,0x58,0x22,0xef,0x97,0x90,0x90,0x50,
+    0x25,0xea,0x44,0x0d,0xf8,0x02,0xb6,0xcf,0x18,0xf0,0x95,0xeb,0x27,0xee,
+    0x53,0x59,0xfc,0xbc,0x1a,0xd0,0x93,0x1e,0x53,0xac,0xa1,0xa1,0xa1,0x44,
+    0x25,0x7e,0xf1,0xf1,0xf1,0xe5,0xa2,0x4e,0xd4,0x80,0x42,0xd8,0x3e,0x61,
+    0xa0,0xde,0xfd,0x4c,0xf3,0x0d,0x0d,0x0d,0xe9,0xfc,0xbc,0x1a,0x98,0x4e,
+    0xbc,0xd3,0x78,0x25,0x7e,0x38,0xdf,0x97,0x8a,0x3a,0x2f,0x5d,0xba,0x44,
+    0x35,0x2b,0x8a,0x81,0x7d,0x3f,0x6c,0xf3,0xf2,0xde,0x93,0xca,0xcf,0xab,
+    0x01,0xef,0x56,0xae,0x1d,0x03,0x03,0x03,0xb1,0x4a,0xfc,0x70,0x8f,0x2b,
+    0x16,0x75,0xe2,0xbe,0x99,0x03,0xdb,0x69,0x06,0x7a,0xba,0xac,0x13,0xf7,
+    0xbb,0x64,0x7e,0x5e,0x0d,0xd8,0x97,0xb2,0xce,0xfe,0xfe,0xfe,0x4f,0x95,
+    0xf8,0x9d,0x3b,0x77,0xae,0x40,0xd4,0x99,0x94,0x94,0x94,0x09,0x5b,0x38,
+    0x63,0xfb,0xf6,0xed,0x77,0x69,0x1e,0x77,0xdd,0xcf,0xf9,0x79,0x35,0x40,
+    0xa7,0x7c,0xd7,0xc3,0xd9,0x26,0x5a,0x89,0x1f,0x6a,0x41,0x9e,0xa8,0x13,
+    0xb9,0x95,0x06,0x5b,0x28,0x03,0x75,0x5e,0xbe,0xeb,0xe1,0x3e,0x12,0xc7,
+    0xcf,0xab,0x61,0xed,0xda,0xb5,0x23,0x14,0x4b,0xa3,0xd1,0x44,0x28,0xf1,
+    0x8b,0x89,0x89,0xc9,0x16,0x75,0x22,0xb7,0xa8,0xb6,0x06,0x33,0xb0,0x3f,
+    0xe5,0x3b,0x14,0x7a,0x57,0x12,0x3f,0xaf,0x06,0xf4,0xc2,0x31,0x8a,0xa5,
+    0xd3,0xe9,0xc2,0x94,0xf8,0x45,0x45,0x45,0x65,0x8a,0x3a,0x91,0x5b,0xa4,
+    0x27,0x90,0x81,0xda,0x5b,0x41,0xf3,0x1b,0x37,0x6e,0xd4,0x4d,0x4d,0x4d,
+    0x7d,0xc0,0xdb,0x94,0x10,0x1b,0x1b,0x9b,0x4c,0x71,0x70,0x8f,0x34,0x28,
+    0xf5,0x8d,0x88,0x88,0x48,0x17,0x75,0x22,0xb7,0x68,0x1f,0xbe,0xcf,0xd0,
+    0xeb,0xf5,0x81,0xe8,0x77,0xf2,0x59,0x04,0xe7,0x88,0x29,0xf4,0xb4,0x21,
+    0x67,0x67,0xe7,0x41,0x25,0x2c,0x59,0xb2,0xe4,0xcf,0xff,0x11,0x86,0x86,
+    0x86,0x66,0xf0,0xf1,0x2d,0xe1,0xd4,0xa9,0x53,0xa9,0x9c,0x4e,0x42,0x0a,
+    0x0a,0x0a,0xa2,0xfd,0xe9,0xc3,0xa3,0xd5,0x6a,0x03,0xa1,0x6f,0x00,0xf7,
+    0x0a,0xf1,0xff,0xa8,0x16,0x83,0xe7,0xf8,0xec,0xcc,0x99,0x33,0xf1,0x62,
+    0x6c,0x4b,0xf0,0xf5,0xf5,0xcd,0x31,0xc7,0x39,0x09,0xde,0xa4,0xcf,0xfb,
+    0xf6,0xed,0xfb,0x0a,0x36,0xef,0x57,0x81,0xbc,0xff,0x08,0x77,0xbd,0x70,
+    0x4b,0xa9,0xa8,0xa8,0x08,0xc3,0x1d,0xf4,0xbd,0xbf,0x8b,0x39,0x1f,0x7b,
+    0xf7,0xee,0x65,0xe7,0xf9,0xd7,0x81,0x03,0x30,0xe0,0x77,0x3f,0x6d,0x6f,
+    0x6f,0x0f,0x80,0xfd,0x9d,0xff,0x03,0xd7,0xae,0x5d,0x0b,0xc2,0xd9,0xc4,
+    0x00,0x6d,0xbf,0x03,0x3b,0x9b,0x97,0x23,0x84,0x74,0x2f,0x5f,0xbe,0xfc,
+    0x61,0x57,0x57,0x97,0x1f,0xbe,0xf7,0xf6,0x7f,0x09,0xee,0xd4,0xfe,0xc8,
+    0x0d,0x76,0xfe,0x7d,0xd7,0x66,0xf6,0xc8,0x34,0xe7,0xcc,0x0b,0x77,0x77,
+    0xf7,0x22,0x9c,0x9b,0x4f,0xc2,0xc7,0xeb,0xdf,0x04,0x67,0xdd,0x93,0x6e,
+    0x6e,0x6e,0xa5,0xf6,0xf6,0xf6,0x13,0x66,0x8d,0x09,0x36,0x7f,0x1d,0xb6,
+    0xc0,0x1f,0xe8,0x59,0x0e,0x20,0x7f,0x8c,0x38,0x43,0xdc,0x46,0x6d,0xea,
+    0x59,0x48,0x68,0x0d,0x5a,0x8b,0xcb,0xbf,0xdf,0x80,0xcf,0x1c,0x1a,0xf9,
+    0xe1,0x04,0x22,0x41,0x0d,0xd0,0x02,0xd5,0xb9,0xae,0x00,0x5a,0x83,0xfa,
+    0x0a,0x9d,0x37,0x4f,0x03,0x47,0x51,0xd4,0x1f,0xb7,0x84,0x65,0x15
+};
+
+// window_foreground.png
+static const unsigned char image_14_data[] = {
+    0x00,0x00,0x1a,0x44,0x78,0x9c,0xcd,0x98,0x7b,0x4c,0x14,0x57,0x14,0x87,
+    0x57,0x79,0xfa,0x42,0xb0,0x44,0xaa,0x86,0x10,0x9b,0xe8,0x1f,0xbc,0x82,
+    0x8a,0x1a,0x8d,0x12,0x89,0x8f,0xf8,0x88,0x02,0x11,0x48,0x37,0xa1,0x29,
+    0x49,0x41,0x45,0x8b,0xb4,0x49,0x49,0x84,0x18,0x22,0xb4,0x68,0x68,0x8b,
+    0x08,0x08,0x08,0x05,0x44,0xd0,0x96,0x05,0x5a,0xd2,0xa6,0x40,0x5a,0x1a,
+    0x2a,0xe5,0x4d,0x8b,0xa5,0x82,0x40,0x8b,0x62,0xd1,0xb2,0x05,0x59,0x44,
+    0x60,0xd9,0x45,0xf6,0x31,0xfd,0xdd,0x75,0xee,0xf6,0x76,0x45,0xca,0xce,
+    0x2e,0xad,0x93,0x7c,0x31,0x9c,0xd9,0x39,0xf3,0x39,0x73,0xef,0xb9,0xe7,
+    0x8e,0x48,0xf4,0xdc,0xf1,0x1a,0x08,0x07,0xd9,0xe0,0x47,0xd0,0x39,0xcf,
+    0x74,0x80,0x2a,0x70,0x11,0xbc,0x01,0x2c,0x9f,0x57,0xd2,0x1f,0x4e,0x20,
+    0x13,0xa8,0x00,0x47,0xb1,0xb3,0xb3,0x53,0xcd,0x37,0xec,0xfd,0x16,0x2c,
+    0x58,0x30,0x8c,0x7f,0xa3,0x80,0xb5,0x81,0x9f,0x33,0xce,0xc9,0xc8,0x6f,
+    0x1c,0x1d,0x1d,0x55,0x69,0x69,0x69,0x03,0xcd,0xcd,0xcd,0xf7,0x54,0x2a,
+    0x55,0x17,0xc7,0x71,0x77,0xe6,0x1b,0xa5,0x52,0xd9,0x55,0x5d,0x5d,0x7d,
+    0xff,0xdc,0xb9,0x73,0x83,0x36,0x36,0x36,0x1a,0xde,0xb7,0x01,0x58,0xf1,
+    0x7e,0xf6,0xf0,0xeb,0x26,0xf1,0xd8,0xd8,0xd8,0x21,0xb5,0x5a,0x3d,0xef,
+    0x4e,0xb3,0x31,0x31,0x31,0xd1,0xbd,0x6b,0xd7,0xae,0x09,0xde,0x33,0x8f,
+    0x77,0x4c,0x22,0x7f,0x87,0x85,0x85,0x8d,0x98,0x92,0x5b,0x2a,0x95,0xf6,
+    0x24,0x27,0x27,0x4b,0x8f,0x1d,0x3b,0x26,0x0b,0x0f,0x0f,0x9f,0x33,0xa7,
+    0x4e,0x9d,0x92,0xb5,0xb7,0xb7,0xdf,0x65,0x73,0x8d,0x8d,0x8d,0x75,0xbb,
+    0xba,0xba,0x2a,0x79,0x4f,0x5f,0x70,0xcb,0xca,0xca,0x4a,0x23,0x97,0xcb,
+    0xbb,0x85,0xfa,0x89,0xc5,0xe2,0x51,0x0b,0x0b,0x0b,0xfd,0x98,0x12,0x82,
+    0xbb,0xbb,0xbb,0xb2,0xb7,0xb7,0xf7,0x37,0x9a,0x53,0x22,0x91,0xf4,0xf3,
+    0xe7,0xce,0x03,0xed,0xe6,0xcd,0x9b,0x27,0x85,0xfa,0x45,0x45,0x45,0x91,
+    0x31,0xce,0x05,0x04,0x04,0x70,0x8d,0x8d,0x8d,0x9c,0x42,0xa1,0xe0,0x30,
+    0xbe,0xe6,0x0c,0xde,0x2d,0x57,0x5e,0x5e,0x4e,0xe6,0x26,0xe7,0xe0,0xe0,
+    0xa0,0xd6,0x68,0x34,0xba,0xbc,0x23,0x23,0x23,0xdd,0x0b,0x17,0x2e,0xd4,
+    0x22,0x77,0x1d,0x9f,0x7f,0x14,0xf1,0x0e,0x21,0x2c,0x5b,0xb6,0x4c,0xb3,
+    0x7b,0xf7,0x6e,0xce,0xd4,0xa3,0xac,0xac,0x4c,0xf7,0x3c,0x4b,0x4a,0x4a,
+    0x7e,0xa7,0xb9,0x97,0x2f,0x5f,0x4e,0xe6,0x7c,0x17,0x89,0xfb,0xf9,0xf9,
+    0x8d,0x68,0xb5,0xda,0x5b,0x42,0xc0,0x38,0xe1,0x2e,0x5d,0xba,0x64,0xb2,
+    0xe3,0xe3,0xc7,0x8f,0x75,0x8e,0x27,0x4f,0x9e,0x1c,0xa4,0xb9,0x59,0xc7,
+    0x23,0x47,0x8e,0xc8,0x10,0x6b,0x15,0x82,0xa5,0xa5,0x25,0x77,0xf9,0xf2,
+    0x65,0x93,0x1d,0x31,0x4f,0x74,0x8e,0x11,0x11,0x11,0x52,0x9a,0x1b,0x8e,
+    0xd3,0x8c,0xe3,0x23,0xfc,0xac,0x51,0x08,0xe4,0x39,0x86,0x86,0x86,0x72,
+    0xc5,0xc5,0xc5,0x26,0x91,0x9f,0x9f,0x4f,0x1d,0xff,0xa0,0xb9,0x31,0x46,
+    0xf5,0x8e,0x87,0x0f,0x1f,0x1e,0x42,0xec,0x07,0x21,0x2c,0x5a,0xb4,0x48,
+    0x6b,0xca,0x7c,0x66,0xc1,0x1c,0xe1,0x12,0x13,0x13,0x7b,0x69,0x6e,0xd6,
+    0xf1,0xd0,0xa1,0x43,0x83,0x88,0xd5,0x08,0x61,0xe9,0xd2,0xa5,0x6a,0xac,
+    0x4b,0xdc,0xf4,0xf4,0xb4,0x49,0x3c,0x79,0xf2,0x44,0xe7,0x99,0x9b,0x9b,
+    0xdb,0x41,0x73,0xb3,0x8e,0x07,0x0f,0x1e,0x94,0x22,0xf6,0x8d,0x10,0x96,
+    0x2c,0x59,0xa2,0xce,0xc8,0xc8,0x30,0x79,0x3c,0x4e,0x4e,0x4e,0xea,0x1c,
+    0x73,0x72,0x72,0x7e,0xa6,0xb9,0x51,0x33,0x9e,0x52,0xc7,0x03,0x07,0x0e,
+    0x90,0x31,0x50,0x31,0x13,0x53,0x53,0x53,0x95,0x85,0x85,0x85,0xad,0x67,
+    0xce,0x9c,0xb9,0x33,0x13,0xb6,0xb6,0xb6,0x1a,0x73,0x3a,0x66,0x67,0x67,
+    0xb7,0xd1,0x7b,0xb3,0x8e,0xfb,0xf7,0xef,0x7f,0x88,0xd8,0x97,0x86,0x04,
+    0x07,0x07,0xf7,0x61,0x2d,0x9f,0x75,0x0c,0x91,0x79,0x6d,0x4e,0xc7,0xac,
+    0xac,0xac,0x56,0x7a,0x7f,0xd6,0x71,0xdf,0xbe,0x7d,0xfd,0x98,0xeb,0x9f,
+    0xb3,0xf8,0xfb,0xfb,0xf7,0x91,0x73,0xf6,0xf6,0xf6,0xca,0xe3,0xc7,0x8f,
+    0x77,0x55,0x56,0x56,0xd6,0x54,0x55,0x55,0x3d,0x07,0xe6,0x8c,0x59,0xdf,
+    0x75,0x66,0x66,0x66,0x13,0x75,0x80,0xe3,0x14,0x75,0xdc,0xbb,0x77,0x2f,
+    0xa9,0xed,0xc5,0x2c,0x78,0x3e,0x9a,0x55,0xab,0x56,0x4d,0x18,0xc6,0x0d,
+    0xc1,0x78,0x54,0x99,0xd3,0x11,0xb5,0xb6,0x9e,0xe6,0xc6,0x7c,0xd4,0x3b,
+    0xee,0xd9,0xb3,0xa7,0x0f,0xb1,0xeb,0x14,0xac,0x95,0xc5,0xfc,0x1a,0xf9,
+    0x2b,0x1b,0x9f,0x09,0x73,0x3b,0xa6,0xa7,0xa7,0xd7,0xd2,0xdc,0xac,0x23,
+    0xd6,0xdb,0x7b,0x88,0x15,0x50,0x86,0x86,0x86,0x6e,0x90,0x78,0x50,0x50,
+    0xd0,0x1d,0x36,0x3e,0x13,0xe6,0x76,0x4c,0x4d,0x4d,0xfd,0x9e,0xe6,0x86,
+    0xa3,0x92,0x3a,0xfa,0xfa,0xfa,0xf6,0xe2,0xfd,0xe7,0x52,0x86,0x87,0x87,
+    0xaf,0x91,0xf8,0xf6,0xed,0xdb,0xef,0x63,0x4e,0x57,0xcc,0x86,0xb9,0xc7,
+    0x63,0x4a,0x4a,0xca,0x77,0xd4,0x03,0xff,0x7f,0xbd,0x23,0xfa,0x5e,0xf2,
+    0x4e,0xb3,0x28,0xa8,0xa7,0x9f,0xcc,0x75,0x6d,0x20,0x6b,0x21,0xd6,0x06,
+    0x93,0x1d,0x07,0x06,0x06,0x68,0xed,0xa9,0xa0,0x1e,0xac,0xa3,0x8f,0x8f,
+    0x4f,0x0f,0x62,0xe9,0x14,0xf4,0x74,0x64,0xef,0xc5,0x45,0x47,0x47,0xd7,
+    0x74,0x76,0x76,0xe6,0xcf,0xc6,0xc6,0x8d,0x1b,0xef,0xaf,0x59,0xb3,0x46,
+    0x2b,0x93,0xc9,0x4c,0x72,0x3c,0x7d,0xfa,0x34,0x87,0x3e,0x59,0xfb,0xe0,
+    0xc1,0x83,0x1c,0xea,0x01,0x47,0x05,0x75,0xdc,0xb9,0x73,0x27,0xe9,0xc1,
+    0x53,0x28,0x70,0x4c,0x23,0xf1,0x0b,0x17,0x2e,0x7c,0xcd,0xc6,0x67,0xa2,
+    0xa7,0xa7,0x27,0x1b,0xf5,0x49,0x41,0x9e,0xe7,0xd1,0xa3,0x47,0xb9,0xf8,
+    0xf8,0x78,0xa3,0x88,0x8b,0x8b,0xe3,0x3c,0x3c,0x3c,0xb4,0xa4,0x0e,0xc7,
+    0xc4,0xc4,0x7c,0xcb,0xe6,0x66,0x1d,0x77,0xec,0xd8,0x41,0xe6,0xc6,0x47,
+    0x94,0xf1,0xf1,0x71,0xb2,0xd7,0x25,0xef,0xf0,0x2b,0x36,0xfe,0x22,0xd0,
+    0xfb,0xa5,0xa0,0x07,0x6d,0x5d,0xbf,0x7e,0xfd,0x43,0x27,0x27,0xa7,0xf1,
+    0x95,0x2b,0x57,0xea,0xc1,0x3e,0x53,0x6e,0x6d,0x6d,0xcd,0xad,0x58,0xb1,
+    0x62,0x92,0x8d,0x53,0x50,0xdf,0xc6,0x30,0xd6,0x3a,0xda,0xda,0xda,0xb2,
+    0x0d,0xf3,0x2e,0x5e,0xbc,0x58,0xef,0x88,0xb9,0x41,0xd6,0xf1,0xf3,0x14,
+    0x38,0xea,0xf6,0x61,0x09,0x09,0x09,0x5f,0xb0,0x71,0x21,0xb4,0xb4,0xb4,
+    0x64,0x90,0x5c,0x05,0x05,0x05,0x45,0xc6,0x5e,0xcb,0x3a,0x6e,0xdb,0xb6,
+    0xed,0x36,0x62,0x09,0x14,0xf4,0x9b,0x89,0x24,0x8e,0xfd,0x6e,0x19,0x1b,
+    0x17,0x42,0x53,0x53,0x53,0x2a,0xc9,0x85,0xfe,0xb0,0xc0,0xd8,0x6b,0xe1,
+    0x38,0x49,0x1d,0xb7,0x6e,0xdd,0xda,0x8e,0x58,0x1c,0x05,0x8e,0x09,0x24,
+    0x8e,0xb1,0x22,0x61,0xe3,0x42,0xc0,0x3e,0xec,0x22,0xdf,0x73,0xe5,0x19,
+    0x7b,0x2d,0xea,0x9a,0xde,0x71,0xcb,0x96,0x2d,0xa4,0x1f,0x8a,0xa5,0xa0,
+    0xf6,0xc4,0x91,0xf8,0xd9,0xb3,0x67,0x3f,0x65,0xe3,0x42,0x68,0x68,0x68,
+    0xf8,0x90,0xef,0xb9,0x72,0x8c,0xbd,0x96,0x75,0xf4,0xf6,0xf6,0x26,0xfd,
+    0x50,0x34,0x05,0x8e,0x31,0xa2,0x67,0xdf,0x2d,0x8a,0xd8,0xb8,0x10,0xea,
+    0xea,0xea,0xc8,0xfe,0x98,0xbb,0x72,0xe5,0x4a,0xa6,0xb1,0xd7,0xc2,0x51,
+    0x4e,0x1d,0x37,0x6d,0xda,0xf4,0x13,0x62,0xef,0x52,0xe0,0x18,0x4d,0xe2,
+    0xe8,0x0f,0x0b,0xd8,0xb8,0x10,0x6a,0x6b,0x6b,0xdf,0xe7,0xfb,0x99,0x74,
+    0x63,0xaf,0x45,0x6f,0xaa,0x77,0xdc,0xb0,0x61,0x03,0xe9,0xd9,0x22,0x29,
+    0xd8,0xc7,0x47,0xa1,0x5e,0x69,0x4f,0x9c,0x38,0x71,0x83,0x8d,0x0b,0xa1,
+    0xb4,0xb4,0x54,0xf7,0x1c,0xf3,0xf2,0xf2,0x3e,0x36,0xf6,0x5a,0xd6,0xd1,
+    0xcb,0xcb,0xab,0x05,0xb1,0x08,0x16,0xac,0x1d,0x7d,0xa8,0x75,0xfd,0xa8,
+    0x43,0x6f,0x1b,0x9e,0x33,0x06,0xd4,0xb5,0x9b,0xe8,0xf3,0x9e,0x0a,0xc9,
+    0x03,0xc7,0x09,0xea,0xe8,0xe9,0xe9,0xd9,0x84,0x58,0x38,0x4b,0x51,0x51,
+    0x51,0x3c,0xc9,0x8d,0xfa,0xab,0xc0,0xbc,0xbf,0x19,0x12,0x12,0x72,0xdd,
+    0x18,0xc4,0x62,0xf1,0x67,0xab,0x57,0xaf,0xbe,0x2b,0x7a,0xf6,0xbd,0xeb,
+    0xaa,0x61,0xfe,0xb9,0xc0,0x3a,0xae,0x5d,0xbb,0x96,0xd4,0xc7,0x50,0x43,
+    0xea,0xeb,0xeb,0xdf,0x71,0x73,0x73,0x6b,0xc2,0x5e,0x7c,0x10,0x6b,0x9d,
+    0xd2,0x18,0x6c,0x6c,0x6c,0xe4,0xeb,0xd6,0xad,0xbb,0x25,0x91,0x48,0x62,
+    0x67,0xca,0xfd,0x6f,0x8c,0x8e,0x8e,0x86,0x61,0x2f,0x4b,0xbe,0x53,0x90,
+    0x6f,0xc9,0xbd,0xc8,0xa9,0x90,0xcb,0xe5,0x6f,0xe2,0x5c,0xc8,0xcb,0x02,
+    0xd6,0xe1,0x0f,0xf8,0xde,0x8a,0xf4,0x0e,0xe4,0xbb,0x37,0x17,0x18,0x18,
+    0x48,0x6a,0xec,0xeb,0x2f,0x03,0xd8,0x6f,0x8b,0x9d,0x9d,0x9d,0x6f,0xf3,
+    0x8e,0xfe,0xc0,0x05,0x8c,0x62,0x1e,0xab,0xd1,0x77,0xc4,0xe3,0x37,0x81,
+    0xff,0x27,0x1a,0x8d,0x26,0x08,0xb5,0xb0,0x82,0xf7,0x6b,0x11,0xfd,0xfd,
+    0xbd,0xd9,0x07,0x90,0x7d,0x22,0xe7,0xe2,0xe2,0xd2,0x9c,0x94,0x94,0xf4,
+    0x9e,0x5a,0xad,0xf6,0xc7,0x35,0x7e,0xff,0x15,0xd8,0xc7,0xfb,0x47,0x46,
+    0x46,0x26,0x60,0x7f,0x20,0xe5,0xfd,0xc8,0x7c,0x7b,0x45,0xf4,0xcf,0xc3,
+    0x1b,0xd0,0xe7,0x4b,0xd0,0xda,0xd9,0xd9,0xf5,0xa3,0xfe,0xfc,0x32,0xcf,
+    0xdc,0x46,0xef,0xf0,0x88,0xb9,0x2f,0xf9,0x66,0x7f,0x15,0xbc,0x2a,0x7a,
+    0xf1,0xf1,0x16,0xc8,0xe0,0x9f,0xf3,0xd3,0xb9,0xee,0x19,0x4c,0xe4,0x4f,
+    0x50,0x03,0x92,0x81,0xa3,0xa1,0xd0,0x5f,0x5b,0xa8,0xfc,0xc8
+};
+
+static struct EmbedImage {
+    int width, height, depth;
+    const unsigned char *data;
+    ulong compressed;
+    int numColors;
+    const TQRgb *colorTable;
+    bool alpha;
+    const char *name;
+} embed_image_vec[] = {
+    { 41, 41, 32, (const unsigned char*)image_0_data, 1781, 0, 0, TRUE, "circle.png" },
+    { 41, 41, 32, (const unsigned char*)image_1_data, 1724, 0, 0, TRUE, "close.png" },
+    { 41, 41, 32, (const unsigned char*)image_2_data, 1555, 0, 0, TRUE, "help.png" },
+    { 42, 41, 32, (const unsigned char*)image_3_data, 1879, 0, 0, TRUE, "keep_above_lit.png" },
+    { 41, 41, 32, (const unsigned char*)image_4_data, 1734, 0, 0, TRUE, "keep_above.png" },
+    { 41, 41, 32, (const unsigned char*)image_5_data, 1750, 0, 0, TRUE, "keep_below_lit.png" },
+    { 41, 41, 32, (const unsigned char*)image_6_data, 1848, 0, 0, TRUE, "keep_below.png" },
+    { 42, 41, 32, (const unsigned char*)image_7_data, 1343, 0, 0, TRUE, "maximize.png" },
+    { 42, 41, 32, (const unsigned char*)image_8_data, 1141, 0, 0, TRUE, "minimize.png" },
+    { 41, 41, 32, (const unsigned char*)image_9_data, 1529, 0, 0, TRUE, "restore.png" },
+    { 45, 45, 32, (const unsigned char*)image_10_data, 885, 0, 0, TRUE, "shade.png" },
+    { 42, 41, 32, (const unsigned char*)image_11_data, 2017, 0, 0, TRUE, "splat.png" },
+    { 1, 30, 32, (const unsigned char*)image_12_data, 72, 0, 0, TRUE, "titlealpha.png" },
+    { 42, 41, 32, (const unsigned char*)image_13_data, 1609, 0, 0, TRUE, "window_background.png" },
+    { 41, 41, 32, (const unsigned char*)image_14_data, 1566, 0, 0, TRUE, "window_foreground.png" },
+    { 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+};
+
+static TQImage uic_findImage( const TQString& name )
+{
+    for ( int i=0; embed_image_vec[i].data; i++ ) {
+	if ( TQString::fromUtf8(embed_image_vec[i].name) == name ) {
+	    TQByteArray baunzip;
+	    baunzip = tqUncompress( embed_image_vec[i].data, 
+		embed_image_vec[i].compressed );
+	    TQImage img((uchar*)baunzip.data(),
+			embed_image_vec[i].width,
+			embed_image_vec[i].height,
+			embed_image_vec[i].depth,
+			(TQRgb*)embed_image_vec[i].colorTable,
+			embed_image_vec[i].numColors,
+			TQImage::BigEndian
+		);
+	    img = img.copy();
+	    if ( embed_image_vec[i].alpha )
+		img.setAlphaBuffer(TRUE);
+	    return img;
+        }
+    }
+    return TQImage();
+}
+
+class MimeSourceFactory_smoothblend : public TQMimeSourceFactory
+{
+public:
+    MimeSourceFactory_smoothblend() {}
+    ~MimeSourceFactory_smoothblend() {}
+    const TQMimeSource* data( const TQString& abs_name ) const {
+	const TQMimeSource* d = TQMimeSourceFactory::data( abs_name );
+	if ( d || abs_name.isNull() ) return d;
+	TQImage img = uic_findImage( abs_name );
+	if ( !img.isNull() )
+	    ((TQMimeSourceFactory*)this)->setImage( abs_name, img );
+	return TQMimeSourceFactory::data( abs_name );
+    };
+};
+
+static TQMimeSourceFactory* bfactory = 0;
+
+void qInitImages_smoothblend()
+{
+    if ( !bfactory ) {
+	bfactory = new MimeSourceFactory_smoothblend;
+	TQMimeSourceFactory::defaultFactory()->addFactory( bfactory );
+    }
+}
+
+void qCleanupImages_smoothblend()
+{
+    if ( bfactory ) {
+	TQMimeSourceFactory::defaultFactory()->removeFactory( bfactory );
+	delete bfactory;
+	bfactory = 0;
+    }
+}
+
+class StaticInitImages_smoothblend
+{
+public:
+    StaticInitImages_smoothblend() { qInitImages_smoothblend(); }
+#if defined(Q_OS_SCO) || defined(Q_OS_UNIXWARE)
+    ~StaticInitImages_smoothblend() { }
+#else
+    ~StaticInitImages_smoothblend() { qCleanupImages_smoothblend(); }
+#endif
+};
+
+static StaticInitImages_smoothblend staticImages;
diff --git a/twin-styles/smooth-blend/client/config/CMakeLists.txt b/twin-styles/smooth-blend/client/config/CMakeLists.txt
new file mode 100644
index 00000000..7a38efbb
--- /dev/null
+++ b/twin-styles/smooth-blend/client/config/CMakeLists.txt
@@ -0,0 +1,32 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+add_definitions(
+  -DQT_PLUGIN
+)
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### twin_smoothblend_config (module) ##########
+
+tde_add_kpart( twin_smoothblend_config AUTOMOC
+  SOURCES configdialog.ui smoothblendconfig.cc
+  LINK tdeui-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/smooth-blend/client/config/Makefile.am b/twin-styles/smooth-blend/client/config/Makefile.am
new file mode 100644
index 00000000..ba5cd314
--- /dev/null
+++ b/twin-styles/smooth-blend/client/config/Makefile.am
@@ -0,0 +1,15 @@
+AUTOMAKE_OPTIONS = foreign
+
+KDE_CXXFLAGS = -DQT_PLUGIN
+
+INCLUDES = $(all_includes)
+
+noinst_HEADERS = smoothblendconfig.h
+
+kde_module_LTLIBRARIES = twin_smoothblend_config.la
+twin_smoothblend_config_la_SOURCES = configdialog.ui smoothblendconfig.cc
+twin_smoothblend_config_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+twin_smoothblend_config_la_LIBADD = $(LIB_TDEUI)
+twin_smoothblend_config_la_METASOURCES = AUTO
+
+DISTCLEANFILES = $(twin_smoothblend_config_la_METASOURCES)
diff --git a/twin-styles/smooth-blend/client/config/configdialog.ui b/twin-styles/smooth-blend/client/config/configdialog.ui
new file mode 100644
index 00000000..09af45f6
--- /dev/null
+++ b/twin-styles/smooth-blend/client/config/configdialog.ui
@@ -0,0 +1,421 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>ConfigDialog</class>
+<widget class="TQWidget">
+    <property name="name">
+        <cstring>ConfigDialog</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>634</width>
+            <height>371</height>
+        </rect>
+    </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>5</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
+    <property name="caption">
+        <string>Config Dialog</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>0</number>
+        </property>
+        <widget class="TQGroupBox" row="1" column="0">
+            <property name="name">
+                <cstring>buttongroup</cstring>
+            </property>
+            <property name="title">
+                <string>Buttons</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="TQSpinBox" row="0" column="2" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>buttonsize</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="suffix">
+                        <string> pixels</string>
+                    </property>
+                    <property name="specialValueText">
+                        <string>1 pixel</string>
+                    </property>
+                    <property name="buttonSymbols">
+                        <enum>UpDownArrows</enum>
+                    </property>
+                    <property name="maxValue">
+                        <number>64</number>
+                    </property>
+                    <property name="minValue">
+                        <number>1</number>
+                    </property>
+                    <property name="value">
+                        <number>16</number>
+                    </property>
+                </widget>
+                <widget class="TQCheckBox" row="1" column="0" rowspan="1" colspan="4">
+                    <property name="name">
+                        <cstring>animatebuttons</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>true</bool>
+                    </property>
+                    <property name="text">
+                        <string>Animate buttons</string>
+                    </property>
+                    <property name="accel">
+                        <string></string>
+                    </property>
+                    <property name="checked">
+                        <bool>true</bool>
+                    </property>
+                    <property name="whatsThis" stdset="0">
+                        <string>Check this option if you want to use button animations when hovering with the mouse.</string>
+                    </property>
+                </widget>
+                <widget class="TQLabel" row="0" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>textLabel4</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Button size:</string>
+                    </property>
+                </widget>
+                <widget class="TQCheckBox" row="3" column="0" rowspan="1" colspan="4">
+                    <property name="name">
+                        <cstring>menuClose</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>true</bool>
+                    </property>
+                    <property name="text">
+                        <string>Close window when menu double clicked</string>
+                    </property>
+                    <property name="accel">
+                        <string></string>
+                    </property>
+                </widget>
+                <spacer row="2" column="0">
+                    <property name="name">
+                        <cstring>spacer3</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Fixed</enum>
+                    </property>
+                    <property name="tqsizeHint">
+                        <size>
+                            <width>30</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="TQComboBox" row="2" column="3">
+                    <item>
+                        <property name="text">
+                            <string>Intensify</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Fade</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>btnComboBox</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget class="TQLabel" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>textLabel2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Animation style:</string>
+                    </property>
+                </widget>
+                <spacer row="0" column="4" rowspan="4" colspan="1">
+                    <property name="name">
+                        <cstring>spacer2</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="tqsizeHint">
+                        <size>
+                            <width>180</width>
+                            <height>140</height>
+                        </size>
+                    </property>
+                </spacer>
+            </grid>
+        </widget>
+        <widget class="TQGroupBox" row="0" column="0">
+            <property name="name">
+                <cstring>titlegroup</cstring>
+            </property>
+            <property name="title">
+                <string>Title Bar</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="TQLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>textLabel1_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Text tqalignment:</string>
+                    </property>
+                </widget>
+                <widget class="TQLabel" row="3" column="0">
+                    <property name="name">
+                        <cstring>textLabel1_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Frame width:</string>
+                    </property>
+                </widget>
+                <widget class="TQLabel" row="1" column="0" rowspan="2" colspan="1">
+                    <property name="name">
+                        <cstring>textLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Title height:</string>
+                    </property>
+                </widget>
+                <widget class="TQSpinBox" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>titlesize</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string> pixels</string>
+                    </property>
+                    <property name="maxValue">
+                        <number>64</number>
+                    </property>
+                    <property name="minValue">
+                        <number>16</number>
+                    </property>
+                </widget>
+                <widget class="TQSpinBox" row="3" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>framesize</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string> pixels</string>
+                    </property>
+                    <property name="specialValueText">
+                        <string>1 pixel</string>
+                    </property>
+                    <property name="maxValue">
+                        <number>64</number>
+                    </property>
+                    <property name="minValue">
+                        <number>1</number>
+                    </property>
+                    <property name="value">
+                        <number>4</number>
+                    </property>
+                </widget>
+                <widget class="TQButtonGroup" row="0" column="1" rowspan="2" colspan="2">
+                    <property name="name">
+                        <cstring>titlealign</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="frameShape">
+                        <enum>GroupBoxPanel</enum>
+                    </property>
+                    <property name="frameShadow">
+                        <enum>Sunken</enum>
+                    </property>
+                    <property name="lineWidth">
+                        <number>0</number>
+                    </property>
+                    <property name="title">
+                        <string></string>
+                    </property>
+                    <property name="tqalignment">
+                        <set>AlignTop</set>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string></string>
+                    </property>
+                    <property name="whatsThis" stdset="0">
+                        <string>Use these buttons to set the tqalignment of the window title</string>
+                    </property>
+                    <hbox>
+                        <property name="name">
+                            <cstring>unnamed</cstring>
+                        </property>
+                        <property name="margin">
+                            <number>0</number>
+                        </property>
+                        <widget class="TQLayoutWidget">
+                            <property name="name">
+                                <cstring>tqlayout14</cstring>
+                            </property>
+                            <hbox>
+                                <property name="name">
+                                    <cstring>unnamed</cstring>
+                                </property>
+                                <widget class="TQRadioButton">
+                                    <property name="name">
+                                        <cstring>AlignLeft</cstring>
+                                    </property>
+                                    <property name="text">
+                                        <string>Left</string>
+                                    </property>
+                                    <property name="toolTip" stdset="0">
+                                        <string></string>
+                                    </property>
+                                </widget>
+                                <widget class="TQRadioButton">
+                                    <property name="name">
+                                        <cstring>AlignHCenter</cstring>
+                                    </property>
+                                    <property name="text">
+                                        <string>Center</string>
+                                    </property>
+                                    <property name="checked">
+                                        <bool>true</bool>
+                                    </property>
+                                    <property name="toolTip" stdset="0">
+                                        <string></string>
+                                    </property>
+                                </widget>
+                                <widget class="TQRadioButton">
+                                    <property name="name">
+                                        <cstring>AlignRight</cstring>
+                                    </property>
+                                    <property name="text">
+                                        <string>Right</string>
+                                    </property>
+                                    <property name="toolTip" stdset="0">
+                                        <string></string>
+                                    </property>
+                                </widget>
+                            </hbox>
+                        </widget>
+                    </hbox>
+                </widget>
+                <spacer row="0" column="3" rowspan="4" colspan="1">
+                    <property name="name">
+                        <cstring>spacer1</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="tqsizeHint">
+                        <size>
+                            <width>231</width>
+                            <height>71</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="TQCheckBox" row="4" column="2" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>roundCorners</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Round top corners</string>
+                    </property>
+                    <property name="accel">
+                        <string></string>
+                    </property>
+                    <property name="checked">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="TQCheckBox" row="4" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>titleshadow</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Use shadowed text</string>
+                    </property>
+                    <property name="accel">
+                        <string></string>
+                    </property>
+                    <property name="checked">
+                        <bool>true</bool>
+                    </property>
+                    <property name="whatsThis" stdset="0">
+                        <string>Check this option if you want the titlebar text to have a 3D look with a shadow behind it.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>animatebuttons</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>textLabel2</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>animatebuttons</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>btnComboBox</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>AlignLeft</tabstop>
+    <tabstop>AlignHCenter</tabstop>
+    <tabstop>AlignRight</tabstop>
+    <tabstop>titlesize</tabstop>
+    <tabstop>framesize</tabstop>
+    <tabstop>titleshadow</tabstop>
+    <tabstop>roundCorners</tabstop>
+    <tabstop>buttonsize</tabstop>
+    <tabstop>animatebuttons</tabstop>
+    <tabstop>btnComboBox</tabstop>
+    <tabstop>menuClose</tabstop>
+</tabstops>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>
diff --git a/twin-styles/smooth-blend/client/config/smoothblendconfig.cc b/twin-styles/smooth-blend/client/config/smoothblendconfig.cc
new file mode 100644
index 00000000..f2ec3e68
--- /dev/null
+++ b/twin-styles/smooth-blend/client/config/smoothblendconfig.cc
@@ -0,0 +1,180 @@
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendconfig.cc
+// -------------------
+// Config module for Smooth Blend window decoration
+// -------------------
+// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
+// Please see the header file for copyright and license information.
+//////////////////////////////////////////////////////////////////////////////
+
+#include <kconfig.h>
+#include <klocale.h>
+#include <kglobal.h>
+#include <tqbuttongroup.h>
+#include <tqgroupbox.h>
+#include <tqradiobutton.h>
+#include <tqcheckbox.h>
+#include <tqspinbox.h>
+#include <tqwhatsthis.h>
+#include <tqcombobox.h>
+
+#include "smoothblendconfig.h"
+#include "configdialog.h"
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendConfig()
+// -------------
+// Constructor
+
+smoothblendConfig::smoothblendConfig(KConfig* config, TQWidget* parent)
+        : TQObject(parent), config_(0), dialog_(0) {
+    // create the configuration object
+    config_ = new KConfig("twinsmoothblendrc");
+    KGlobal::locale()->insertCatalogue("twin_smoothblend_config");
+
+    // create and show the configuration dialog
+    dialog_ = new ConfigDialog(parent);
+    dialog_->show();
+
+    // load the configuration
+    load(config_);
+
+    // setup the connections for title align
+    connect(dialog_->titlealign, TQT_SIGNAL(clicked(int)),this, TQT_SLOT(selectionChanged(int)));
+    // setup the connections for corner rounding
+    connect(dialog_->roundCorners, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    // setup title shadow
+    connect(dialog_->titleshadow, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    // setup button actions
+    connect(dialog_->animatebuttons, TQT_SIGNAL(stateChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    connect(dialog_->btnComboBox, TQT_SIGNAL(activated(int)),this,TQT_SLOT(selectionChanged(int)));
+    // setup the connections for spin boxes
+    connect(dialog_->titlesize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    connect(dialog_->buttonsize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    connect(dialog_->framesize, TQT_SIGNAL(valueChanged(int)),this,TQT_SLOT(selectionChanged(int)));
+    // double click the menu 
+    connect(dialog_->menuClose, TQT_SIGNAL(stateChanged(int)),this, TQT_SLOT(selectionChanged(int)));
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// ~smoothblendConfig()
+// --------------
+// Destructor
+
+smoothblendConfig::~smoothblendConfig() {
+    if (dialog_)
+    {
+        delete dialog_;
+    }
+    if (config_)
+    {
+        delete config_;
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// selectionChanged()
+// ------------------
+// Selection has changed
+
+void smoothblendConfig::selectionChanged(int) {
+
+    if(dialog_->buttonsize->value() + dialog_->framesize->value() > dialog_->titlesize->value())
+    {
+        dialog_->buttonsize->setValue(dialog_->titlesize->value()- dialog_->framesize->value());
+    }
+    // setting the framesize to less than 2 will lose the top gradient and look flat
+    if(dialog_->framesize->value() < 2)
+    {
+        dialog_->framesize->setValue(2);
+    }
+    emit changed();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// load()
+// ------
+// Load configuration data
+
+void smoothblendConfig::load(KConfig*) {
+    config_->setGroup("General");
+
+    TQString value = config_->readEntry("TitleAlignment", "AlignHCenter");
+    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->child(value.latin1());
+    if (button)
+    {
+        button->setChecked(true);
+    }
+
+    dialog_->titlesize->setValue( config_->readNumEntry("TitleSize",30 ) );
+    dialog_->buttonsize->setValue( config_->readNumEntry("ButtonSize",26 ) );
+    dialog_->framesize->setValue( config_->readNumEntry("FrameSize",4 ) );
+
+    bool cornersFlag = config_->readBoolEntry("RoundCorners", true);
+    dialog_->roundCorners->setChecked( cornersFlag );
+    bool titleshadow = config_->readBoolEntry("TitleShadow", true);
+    dialog_->titleshadow->setChecked(titleshadow);
+    bool animatebuttons = config_->readBoolEntry("AnimateButtons", true);
+    dialog_->animatebuttons->setChecked(animatebuttons);
+    dialog_->btnComboBox->setCurrentItem(config_->readNumEntry("ButtonComboBox",0));
+    bool menuClose = config_->readBoolEntry("CloseOnMenuDoubleClick");
+    dialog_->menuClose->setChecked(menuClose);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// save()
+// ------
+// Save configuration data
+
+void smoothblendConfig::save(KConfig*) {
+    config_->setGroup("General");
+
+    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->selected();
+    if (button)
+    {
+        config_->writeEntry("TitleAlignment", TQString(button->name()));
+    }
+    config_->writeEntry("RoundCorners", dialog_->roundCorners->isChecked() );
+    config_->writeEntry("TitleSize", dialog_->titlesize->value() );
+    config_->writeEntry("ButtonSize", dialog_->buttonsize->value() );
+    config_->writeEntry("FrameSize", dialog_->framesize->value() );
+    config_->writeEntry("TitleShadow", dialog_->titleshadow->isChecked() );
+    config_->writeEntry("AnimateButtons", dialog_->animatebuttons->isChecked() );
+    config_->writeEntry("ButtonComboBox", dialog_->btnComboBox->currentItem());
+    config_->writeEntry("CloseOnMenuDoubleClick", dialog_->menuClose->isChecked() );
+
+    config_->sync();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// defaults()
+// ----------
+// Set configuration defaults
+
+void smoothblendConfig::defaults() {
+    TQRadioButton *button = (TQRadioButton*)dialog_->titlealign->child("AlignHCenter");
+    if (button)
+    {
+        button->setChecked(true);
+    }
+    dialog_->roundCorners->setChecked( true );
+    dialog_->titlesize->setValue( 30 );
+    dialog_->buttonsize->setValue( 26 );
+    dialog_->framesize->setValue( 4 );
+    dialog_->titleshadow->setChecked( true );
+    dialog_->animatebuttons->setChecked( true );
+    dialog_->btnComboBox->setCurrentItem( 0 );
+    dialog_->menuClose->setChecked( false );
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// Plugin Stuff                                                             //
+//////////////////////////////////////////////////////////////////////////////
+
+extern "C" {
+    TQObject* allocate_config(KConfig* config, TQWidget* parent) {
+        return (new smoothblendConfig(config, parent));
+    }
+}
+
+#include "smoothblendconfig.moc"
diff --git a/twin-styles/smooth-blend/client/config/smoothblendconfig.h b/twin-styles/smooth-blend/client/config/smoothblendconfig.h
new file mode 100644
index 00000000..4f2add87
--- /dev/null
+++ b/twin-styles/smooth-blend/client/config/smoothblendconfig.h
@@ -0,0 +1,56 @@
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendconfig.h
+// -------------------
+// Config module for Smooth Blend window decoration
+// -------------------
+// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
+// 
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// 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 SMOOTHBLENDCONFIG_H
+#define SMOOTHBLENDCONFIG_H
+
+#include <tqobject.h>
+
+class KConfig;
+class ConfigDialog;
+
+class smoothblendConfig : public TQObject {
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    smoothblendConfig(KConfig* config, TQWidget* parent);
+    ~smoothblendConfig();
+
+signals:
+    void changed();
+
+public slots:
+    void load(KConfig*);
+    void save(KConfig*);
+    void defaults();
+
+protected slots:
+    void selectionChanged(int);
+
+private:
+    KConfig *config_;
+    ConfigDialog *dialog_;
+};
+
+#endif // SMOOTHBLENDCONFIG_H
diff --git a/twin-styles/smooth-blend/client/smoothblend.cc b/twin-styles/smooth-blend/client/smoothblend.cc
new file mode 100644
index 00000000..02efd047
--- /dev/null
+++ b/twin-styles/smooth-blend/client/smoothblend.cc
@@ -0,0 +1,1396 @@
+//////////////////////////////////////////////////////////////////////////////
+// smoothblend.cc
+// -------------------
+// Smooth Blend window decoration for KDE
+// -------------------
+// Copyright (c) 2005 Ryan Nickell
+// Please see the header file for copyright and license information.
+//////////////////////////////////////////////////////////////////////////////
+
+#include <kconfig.h>
+#include <kdeversion.h>
+#include <kglobal.h>
+#include <kglobalsettings.h>
+#include <klocale.h>
+#include <kpixmap.h>
+#include <kimageeffect.h>
+#include <kpixmapeffect.h>
+#include <kpixmap.h>
+
+#include <tqbitmap.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqpainter.h>
+#include <tqtooltip.h>
+#include <tqtimer.h>
+#include <tqapplication.h>
+
+#include "smoothblend.h"
+#include "buttons.h"
+
+using namespace smoothblend;
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendFactory Class
+//////////////////////////////////////////////////////////////////////////////
+smoothblendFactory* factory=NULL;
+
+bool smoothblendFactory::initialized_              = false;
+TQt::AlignmentFlags smoothblendFactory::titlealign_ = TQt::AlignHCenter;
+bool smoothblendFactory::cornerflags_               = true;
+int smoothblendFactory::titlesize_                 = 30;
+int smoothblendFactory::buttonsize_                = 26;
+int smoothblendFactory::framesize_                 = 4;
+int smoothblendFactory::roundsize_                 = 50;
+bool smoothblendFactory::titleshadow_              = true;
+bool smoothblendFactory::animatebuttons            = true;
+int smoothblendFactory::btnComboBox                = 0;
+bool smoothblendFactory::menuClose                 = false;
+
+// global constants
+static const int TOPMARGIN       = 4; // do not change
+static const int DECOHEIGHT      = 4; // do not change
+static const int SIDETITLEMARGIN = 2;
+// Default button tqlayout
+const char default_left[]  = "M";
+const char default_right[] = "HIAX";
+
+static const uint TIMERINTERVAL = 50; // msec
+static const uint ANIMATIONSTEPS = 4;
+
+extern "C" KDecorationFactory* create_factory() {
+    return new smoothblend::smoothblendFactory();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendFactory()
+// ----------------
+// Constructor
+
+smoothblendFactory::smoothblendFactory() {
+    readConfig();
+    initialized_ = true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// ~smoothblendFactory()
+// -----------------
+// Destructor
+
+smoothblendFactory::~smoothblendFactory() {
+    initialized_ = false;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// createDecoration()
+// -----------------
+// Create the decoration
+
+KDecoration* smoothblendFactory::createDecoration(KDecorationBridge* b) {
+    return new smoothblendClient(b, this);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// reset()
+// -------
+// Reset the handler. Returns true if decorations need to be remade, false if
+// only a tqrepaint is necessary
+
+bool smoothblendFactory::reset(unsigned long changed) {
+    // read in the configuration
+    initialized_ = false;
+    bool confchange = readConfig();
+    initialized_ = true;
+
+    if (confchange ||
+            (changed & (SettingDecoration | SettingButtons | SettingBorder))) {
+        return true;
+    } else {
+        resetDecorations(changed);
+        return false;
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// readConfig()
+// ------------
+// Read in the configuration file
+
+bool smoothblendFactory::readConfig() {
+    // create a config object
+    KConfig config("twinsmoothblendrc");
+    config.setGroup("General");
+
+    // grab settings
+    TQString value = config.readEntry("TitleAlignment", "AlignHCenter");
+    if (value == "AlignLeft")
+        titlealign_ = TQt::AlignLeft;
+    else if (value == "AlignHCenter")
+        titlealign_ = TQt::AlignHCenter;
+    else if (value == "AlignRight")
+        titlealign_ = TQt::AlignRight;
+
+    cornerflags_ = config.readBoolEntry("RoundCorners", true);
+    titlesize_ = config.readNumEntry("TitleSize",30);
+    buttonsize_ = config.readNumEntry("ButtonSize",26);
+    framesize_ = config.readNumEntry("FrameSize",4);
+    roundsize_ = config.readNumEntry("RoundPercent",50);
+    titleshadow_ = config.readBoolEntry("TitleShadow", true);
+    animatebuttons = config.readBoolEntry("AnimateButtons", true);
+    btnComboBox = config.readNumEntry("ButtonComboBox", 0);
+    menuClose = config.readBoolEntry("CloseOnMenuDoubleClick");
+
+    if(buttonsize_ > titlesize_ - framesize_)
+    {
+        buttonsize_ = titlesize_-framesize_;
+    }
+
+    return true;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendButton Class 
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendButton()
+// ---------------
+// Constructor
+smoothblendButton::smoothblendButton(smoothblendClient *parent, const char *name, const TQString& tip, ButtonType type, int button_size, bool toggle): TQButton(parent->widget(), name), 
+     client_(parent), 
+     type_(type), 
+     size_(button_size), 
+     deco_(0), 
+     lastmouse_(Qt::NoButton), 
+     hover_(false)
+{
+    setBackgroundMode(NoBackground);
+    setFixedSize( ::factory->buttonSize(), ::factory->buttonSize());
+    setCursor(arrowCursor);
+    TQToolTip::add(this, tip);
+    setToggleButton(toggle);
+    //button animation setup
+    animTmr = new TQTimer(this);
+    connect(animTmr, TQT_SIGNAL(timeout() ), this, TQT_SLOT(animate() ) );
+    connect(this, TQT_SIGNAL(pressed() ), this, TQT_SLOT(buttonClicked() ) );
+    connect(this, TQT_SIGNAL(released() ), this, TQT_SLOT(buttonReleased() ) );
+    animProgress = 0;
+    m_clicked=false;
+}
+
+smoothblendButton::~smoothblendButton() {
+    if ( deco_ )
+        delete deco_;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// tqsizeHint()
+// ----------
+// Return size hint
+
+TQSize smoothblendButton::tqsizeHint() const {
+    return TQSize(::factory->buttonSize(), ::factory->buttonSize());
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// buttonClicked()
+// ----------
+// Button animation progress reset so we don't get any leave event animation
+// when the mouse is still pressed
+void smoothblendButton::buttonClicked() {
+    m_clicked=true;
+    animProgress=0;
+}
+void smoothblendButton::buttonReleased() {
+    //This doesn't work b/c a released() signal is thrown when a leaveEvent occurs
+    //m_clicked=false;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// animate()
+// ----------
+// Button animation timing
+void smoothblendButton::animate() {
+    animTmr->stop();
+
+    if(hover_) {
+        if(animProgress < ANIMATIONSTEPS) {
+            if (::factory->animateButtons() ) {
+                animProgress++;
+            } else {
+                animProgress = ANIMATIONSTEPS;
+            }
+            animTmr->start(TIMERINTERVAL, true); // single-shot
+        }
+    } else {
+        if(animProgress > 0) {
+            if (::factory->animateButtons() ) {
+                animProgress--;
+            } else {
+                animProgress = 0;
+            }
+            animTmr->start(TIMERINTERVAL, true); // single-shot
+        }
+    }
+    tqrepaint(false);
+}
+//////////////////////////////////////////////////////////////////////////////
+// enterEvent()
+// ------------
+// Mouse has entered the button
+
+void smoothblendButton::enterEvent(TQEvent *e) {
+    // we wanted to pass on the event
+    TQButton::enterEvent(e);
+    // we want to do mouseovers, so keep track of it here
+    hover_=true;
+    if(!m_clicked)
+    {
+        animate();
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// leaveEvent()
+// ------------
+// Mouse has left the button
+
+void smoothblendButton::leaveEvent(TQEvent *e) {
+    // we wanted to pass on the event
+    TQButton::leaveEvent(e);
+    // we want to do mouseovers, so keep track of it here
+    hover_=false; 
+    if(!m_clicked)
+    {
+        animate();
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mousePressEvent()
+// -----------------
+// Button has been pressed
+
+void smoothblendButton::mousePressEvent(TQMouseEvent* e) {
+    lastmouse_ = e->button();
+
+    // translate and pass on mouse event
+    int button = Qt::LeftButton;
+    if ((type_ != ButtonMax) && (e->button() != Qt::LeftButton)) {
+        button = Qt::NoButton; // middle & right buttons inappropriate
+    }
+    TQMouseEvent me(e->type(), e->pos(), e->globalPos(),
+                   button, e->state());
+    TQButton::mousePressEvent(&me);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mouseReleaseEvent()
+// -----------------
+// Button has been released
+
+void smoothblendButton::mouseReleaseEvent(TQMouseEvent* e) {
+    lastmouse_ = e->button();
+
+    // translate and pass on mouse event
+    int button = Qt::LeftButton;
+    if ((type_ != ButtonMax) && (e->button() != Qt::LeftButton)) {
+        button = Qt::NoButton; // middle & right buttons inappropriate
+    }
+    TQMouseEvent me(e->type(), e->pos(), e->globalPos(), button, e->state());
+    TQButton::mouseReleaseEvent(&me);
+    if(m_clicked)
+    {
+        m_clicked=false;
+    }
+}
+
+void smoothblendButton::setOn(bool on)
+{
+    TQButton::setOn(on);
+}
+
+void smoothblendButton::setDown(bool on)
+{
+    TQButton::setDown(on);
+}
+
+//////////////////////////////////////////////////////////
+// getButtonImage()
+// ----------------
+// get the button TQImage based on type and window mode
+TQImage smoothblendButton::getButtonImage(ButtonType type)
+{
+    TQImage finalImage;
+    switch(type) {
+        case ButtonClose:
+            finalImage = uic_findImage( "close.png" );
+            break;
+        case ButtonHelp:
+            finalImage = uic_findImage( "help.png" );
+            break;
+        case ButtonMin:
+            finalImage = uic_findImage( "minimize.png" );
+            break;
+        case ButtonMax:
+            if(client_->maximizeMode() == KDecorationDefines::MaximizeFull)
+            {
+                finalImage = uic_findImage( "restore.png" );
+            }
+            else
+            {
+                finalImage = uic_findImage( "maximize.png" );
+            }
+            break;
+        case ButtonSticky:
+            if(client_->isOnAllDesktops())
+            {
+                finalImage = uic_findImage( "splat.png" );
+            }
+            else
+            {
+                finalImage = uic_findImage( "circle.png" );
+            }
+            break;
+        case ButtonShade:
+            if(client_->isShade())
+            {
+                finalImage = uic_findImage( "shade.png" );
+            }
+            else
+            {
+                finalImage = uic_findImage( "shade.png" );
+            }
+            break;
+        case ButtonAbove:
+            if(client_->keepAbove())
+            {
+                finalImage = uic_findImage( "keep_above_lit.png" );
+            }
+            else
+            {
+                finalImage = uic_findImage( "keep_above.png" );
+            }
+            break;
+        case ButtonBelow:
+            if(client_->keepBelow())
+            {
+                finalImage = uic_findImage( "keep_below_lit.png" );
+            }
+            else
+            {
+                finalImage = uic_findImage( "keep_below.png" );
+            }
+            break;
+        default:
+            finalImage = uic_findImage( "splat.png" );
+            break;
+    }
+    return finalImage;
+}
+
+//////////////////////////////////////////////////////////
+// drawButton()
+// -------------------------
+// draw the pixmap button
+
+void smoothblendButton::drawButton( TQPainter *painter ) {
+    if ( !smoothblendFactory::initialized() )
+        return ;
+    
+    int newWidth = width() - 2;
+    int newHeight = height() - 2;
+    int dx = (width() - newWidth) / 2;
+    int dy = (height() - newHeight) / 2;
+    TQImage tmpResult;
+    TQColorGroup group;
+    TQColor redColor(red);
+    bool active = client_->isActive();
+    TQPixmap backgroundTile = client_->getTitleBarTile(active);
+    group = KDecoration::options()->tqcolorGroup(KDecoration::ColorTitleBar, active);
+
+    //draw the titlebar behind the buttons and app icons
+    if ((client_->maximizeMode()==client_->MaximizeFull) && !KDecoration::options()->moveResizeMaximizedWindows())
+    {
+        painter->drawTiledPixmap(0, 0, width(), height(), backgroundTile);
+    }
+    else
+    {
+        painter->drawTiledPixmap(0, 0, width(), height(), backgroundTile, 0, y()-::factory->frameSize());
+    }
+    
+    TQImage buttonImage = getButtonImage(type_).smoothScale( width(),height());
+    buttonImage = KImageEffect::blend( group.background(), buttonImage, .50);
+    if (type_ == ButtonMenu) {
+        //slight movement to show the menu button is depressed
+        if (isDown()) {
+            dx++;
+            dy++;
+        }
+        TQPixmap menuButtonPixmap(client_->icon().pixmap(TQIconSet::Large, TQIconSet::Normal));
+        TQImage menuButtonImage(menuButtonPixmap.convertToImage());
+        //draw the menu button the same size as the other buttons
+        //using TQIconSet::Large gives us a 32x32 icon to resize, resizing larger than
+        //that may produce pixilation of the image
+        painter->drawImage( dx, dy, menuButtonImage.smoothScale(newWidth, newHeight) );
+    } else {
+        //highlight on a mouse over tqrepaint
+        double factor = animProgress * 0.13;
+
+        if(!isDown())
+        {
+            switch(::factory->getBtnComboBox())
+            {
+                case 0:
+                    tmpResult = KImageEffect::intensity( buttonImage, factor);
+                    break;
+                case 1:
+                    tmpResult = KImageEffect::fade( buttonImage, factor, group.background());
+                    break;
+            }
+        }
+        else
+        {
+            tmpResult = buttonImage;
+        }
+        painter->drawPixmap( 0, 0, TQPixmap( tmpResult ) );
+    }
+}
+
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendClient Class
+//////////////////////////////////////////////////////////////////////////////
+
+//////////////////////////////////////////////////////////////////////////////
+// smoothblendClient()
+// ---------------
+// Constructor
+
+smoothblendClient::smoothblendClient(KDecorationBridge *b, KDecorationFactory *f)
+    : KDecoration(b, f),
+    mainLayout_(0),
+    titleLayout_(0),
+    topSpacer_(0),
+    titleSpacer_(0),
+    leftTitleSpacer_(0), rightTitleSpacer_(0),
+    decoSpacer_(0),
+    leftSpacer_(0), rightSpacer_(0),
+    bottomSpacer_(0), windowSpacer_(0),
+    aCaptionBuffer(0), iCaptionBuffer(0),
+    aTitleBarTile(0), iTitleBarTile(0), aTitleBarTopTile(0), iTitleBarTopTile(0),
+    pixmaps_created(false),
+    //captionBufferDirty(true),
+    s_titleHeight(0),
+    s_titleFont(TQFont()),
+    closing(false)
+    {
+        aCaptionBuffer = new TQPixmap();
+        iCaptionBuffer = new TQPixmap();
+        //s_titleFont = isTool()?smoothblendFactory::titleFontTool():smoothblendFactory::titleFont();
+        s_titleFont = options()->font();
+        s_titleHeight = smoothblendFactory::titleSize();
+    }
+//////////////////////////////////////////////////////////////////////////////////
+// ~smoothblendClient()
+// --------------------
+// Destructor
+smoothblendClient::~smoothblendClient() {
+    delete aCaptionBuffer;
+    delete iCaptionBuffer;
+}
+
+void smoothblendClient::create_pixmaps() {
+    if(pixmaps_created)
+        return;
+    KPixmap tempPixmap;
+    TQPainter painter;
+    TQColorGroup group,widgetGroup;
+    int FRAMESIZE = ::factory->frameSize();
+    // Get the color groups we need for the gradients
+    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, true);
+    widgetGroup = widget()->tqcolorGroup();
+    
+    // active top title bar tile
+    tempPixmap.resize(1, TOPMARGIN);
+    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
+                                                   group.background(),
+                                                   widgetGroup.background(),
+                                                   KPixmapEffect::VerticalGradient,
+                                                   100,
+                                                   -100);
+    aTitleBarTopTile = new TQPixmap(1, TOPMARGIN);
+    painter.begin(aTitleBarTopTile);
+    painter.drawPixmap(0, 0, tempPixmap);
+    painter.end();
+    
+    // inactive top title bar tile
+    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, false);
+    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
+                                                   group.background(),
+                                                   widgetGroup.background(),
+                                                   KPixmapEffect::VerticalGradient,
+                                                   100,
+                                                   -100);
+    iTitleBarTopTile = new TQPixmap(1, TOPMARGIN);
+    painter.begin(iTitleBarTopTile);
+    painter.drawPixmap(0, 0, tempPixmap);
+    painter.end();
+    
+    // active title bar tile
+    tempPixmap.resize(1, s_titleHeight+FRAMESIZE);
+    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, true);
+    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
+                                                   group.background(),
+                                                   widgetGroup.background(),
+                                                   KPixmapEffect::VerticalGradient,
+                                                   100,
+                                                   200);
+    aTitleBarTile = new TQPixmap(1, s_titleHeight+FRAMESIZE);
+    painter.begin(aTitleBarTile);
+    painter.drawPixmap(0, 0, tempPixmap);
+    painter.end();
+    
+    // inactive title bar tile
+    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, false);
+    tempPixmap = KPixmapEffect::unbalancedGradient(tempPixmap,
+                                                   group.background(),
+                                                   widgetGroup.background(),
+                                                   KPixmapEffect::VerticalGradient,
+                                                   100,
+                                                   200);
+    iTitleBarTile = new TQPixmap(1, s_titleHeight+FRAMESIZE);
+    painter.begin(iTitleBarTile);
+    painter.drawPixmap(0, 0, tempPixmap);
+    painter.end();
+
+    pixmaps_created = true;
+}
+
+void smoothblendClient::delete_pixmaps() {
+    delete aTitleBarTopTile;
+    aTitleBarTopTile = 0;
+
+    delete iTitleBarTopTile;
+    iTitleBarTopTile = 0;
+
+    delete aTitleBarTile;
+    aTitleBarTile = 0;
+
+    delete iTitleBarTile;
+    iTitleBarTile = 0;
+
+    pixmaps_created = false;
+}
+//////////////////////////////////////////////////////////////////////////////
+// init()
+// ------
+// Actual initializer for class
+
+void smoothblendClient::init() {
+    createMainWidget(WResizeNoErase | WRepaintNoErase);
+    widget()->installEventFilter(this);
+    handlebar = ::factory->frameSize() < 4 ? 4 - ::factory->frameSize() : 0;
+    // for flicker-free redraws
+    widget()->setBackgroundMode(NoBackground);
+
+    _resetLayout();
+
+    create_pixmaps();
+}
+void smoothblendClient::_resetLayout()
+{
+    // basic tqlayout:
+    //  _______________________________________________________________
+    // |                         topSpacer                             |
+    // |_______________________________________________________________|
+    // | leftTitleSpacer | btns |  titlebar   | bts | rightTitleSpacer |
+    // |_________________|______|_____________|_____|__________________|
+    // |                         decoSpacer                            |
+    // |_______________________________________________________________|
+    // | |                                                           | |
+    // | |                      windowWrapper                        | |
+    // | |                                                           | |
+    // |leftSpacer                                          rightSpacer|
+    // |_|___________________________________________________________|_|
+    // |                           bottomSpacer                        |
+    // |_______________________________________________________________|
+    //
+    if (!::factory->initialized()) return;
+    
+    delete mainLayout_;
+    delete titleLayout_;
+    delete topSpacer_;
+    delete titleSpacer_;
+    delete leftTitleSpacer_;
+    delete rightTitleSpacer_;
+    delete decoSpacer_;
+    delete leftSpacer_;
+    delete rightSpacer_;
+    delete bottomSpacer_;
+    delete windowSpacer_;
+
+    mainLayout_ = new TQVBoxLayout(widget());
+    // title
+    titleLayout_ = new TQHBoxLayout();
+    TQHBoxLayout *windowLayout_ = new TQHBoxLayout();
+    int FRAMESIZE = ::factory->frameSize();
+
+    topSpacer_        = new TQSpacerItem(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    titlebar_         = new TQSpacerItem(1, ::factory->buttonSize(),
+                                        TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    leftTitleSpacer_  = new TQSpacerItem(FRAMESIZE, s_titleHeight,
+                                        TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+    rightTitleSpacer_ = new TQSpacerItem(FRAMESIZE, s_titleHeight,
+                                        TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+    decoSpacer_       = new TQSpacerItem(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    leftSpacer_       = new TQSpacerItem(::factory->frameSize(), 1,
+                                        TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+    rightSpacer_      = new TQSpacerItem(::factory->frameSize(), 1,
+                                        TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+    bottomSpacer_     = new TQSpacerItem(1, ::factory->frameSize(),
+                                        TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    
+    // sizeof(...) is calculated at compile time
+    memset(button, 0, sizeof(smoothblendButton *) * ButtonTypeCount);
+
+    // message in preview widget
+    if (isPreview()) {
+        windowLayout_->addWidget(
+            new TQLabel( i18n("<b><center>Smooth Blend</center></b>"), widget() ), 1 ); 
+    } else {
+        windowLayout_->addItem(new TQSpacerItem(0, 0));
+    }
+
+    // setup titlebar buttons
+    for (int n=0; n<ButtonTypeCount; n++)
+        button[n] = 0;
+    //Deal with the title and buttons
+    titleLayout_->addItem(leftTitleSpacer_);
+    addButtons(titleLayout_,
+               options()->customButtonPositions() ? options()->titleButtonsLeft() : TQString(default_left),
+               ::factory->titleSize()-1);
+    titleLayout_->addItem(titlebar_);
+    addButtons(titleLayout_,
+               options()->customButtonPositions() ? options()->titleButtonsRight() : TQString(default_right),
+               ::factory->titleSize()-1);
+    titleLayout_->addItem(rightTitleSpacer_);
+
+    //Mid - left side, middle contents and right side
+    TQHBoxLayout * midLayout_   = new TQHBoxLayout();
+    midLayout_->addItem(leftSpacer_);
+    midLayout_->addLayout(windowLayout_);
+    midLayout_->addItem(rightSpacer_);
+
+    //Layout order
+    mainLayout_->addItem( topSpacer_ );
+    mainLayout_->addLayout( titleLayout_ );
+    mainLayout_->addItem( decoSpacer_ );
+    mainLayout_->addLayout( midLayout_ );
+    mainLayout_->addItem( bottomSpacer_ );
+    
+    // connections
+    connect(this, TQT_SIGNAL(keepAboveChanged(bool)), TQT_SLOT(keepAboveChange(bool)));
+    connect(this, TQT_SIGNAL(keepBelowChanged(bool)), TQT_SLOT(keepBelowChange(bool)));
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// addButtons()
+// ------------
+// Add buttons to title tqlayout
+
+void smoothblendClient::addButtons(TQBoxLayout *tqlayout, const TQString& s, int button_size) {
+    TQString tip;
+    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 smoothblendButton(this, "splat.png", i18n("Menu"),ButtonMenu,button_size);
+                    connect(button[ButtonMenu], TQT_SIGNAL(pressed()), this, TQT_SLOT(menuButtonPressed()));
+                    connect(button[ButtonMenu], TQT_SIGNAL(released()), this, TQT_SLOT(menuButtonReleased()));
+                    tqlayout->addWidget(button[ButtonMenu]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'S': // Sticky button
+                if (!button[ButtonSticky]) {
+                    if (isOnAllDesktops()) {
+                        tip = i18n("Un-Sticky");
+                    } else {
+                        tip = i18n("Sticky");
+                    }
+                    button[ButtonSticky] =
+                        new smoothblendButton(this, "circle.png", tip, ButtonSticky, button_size, true);
+                    connect(button[ButtonSticky], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(toggleOnAllDesktops()));
+                    tqlayout->addWidget(button[ButtonSticky]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'H': // Help button
+                if ((!button[ButtonHelp]) && providesContextHelp()) {
+                    button[ButtonHelp] =
+                        new smoothblendButton(this, "help.png", i18n("Help"), ButtonHelp, button_size);
+                    connect(button[ButtonHelp], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(showContextHelp()));
+                    tqlayout->addWidget(button[ButtonHelp]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'I': // Minimize button
+                if ((!button[ButtonMin]) && isMinimizable())  {
+                    button[ButtonMin] =
+                        new smoothblendButton(this, "minimize.png", i18n("Minimize"), ButtonMin, button_size);
+                    connect(button[ButtonMin], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(minimize()));
+                    tqlayout->addWidget(button[ButtonMin]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'A': // Maximize button
+                if ((!button[ButtonMax]) && isMaximizable()) {
+                    if (maximizeMode() == MaximizeFull) {
+                        tip = i18n("Restore");
+                    } else {
+                        tip = i18n("Maximize");
+                    }
+                    button[ButtonMax]  =
+                        new smoothblendButton(this, "maximize.png", tip, ButtonMax, button_size, true);
+                    connect(button[ButtonMax], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(maxButtonPressed()));
+                    tqlayout->addWidget(button[ButtonMax]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'X': // Close button
+                if ((!button[ButtonClose]) && isCloseable()) {
+                    button[ButtonClose] =
+                        new smoothblendButton(this, "close.png", i18n("Close"), ButtonClose, button_size);
+                    connect(button[ButtonClose], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(closeWindow()));
+                    tqlayout->addWidget(button[ButtonClose]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'F': // Above button
+                if ((!button[ButtonAbove])) {
+                    button[ButtonAbove] =
+                        new smoothblendButton(this, "keep_above.png",
+                                          i18n("Keep Above Others"), ButtonAbove, button_size, true);
+                    connect(button[ButtonAbove], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(aboveButtonPressed()));
+                    tqlayout->addWidget(button[ButtonAbove]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'B': // Below button
+                if ((!button[ButtonBelow])) {
+                    button[ButtonBelow] =
+                        new smoothblendButton(this, "keep_below.png",
+                                          i18n("Keep Below Others"), ButtonBelow, button_size, true);
+                    connect(button[ButtonBelow], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(belowButtonPressed()));
+                    tqlayout->addWidget(button[ButtonBelow]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case 'L': // Shade button
+                if ((!button[ButtonShade]) && isShadeable()) {
+                    if ( isSetShade()) {
+                        tip = i18n("Unshade");
+                    } else {
+                        tip = i18n("Shade");
+                    }
+                    button[ButtonShade] =
+                        new smoothblendButton(this, "shade.png", tip, ButtonShade, button_size, true);
+                    connect(button[ButtonShade], TQT_SIGNAL(clicked()),
+                            this, TQT_SLOT(shadeButtonPressed()));
+                    tqlayout->addWidget(button[ButtonShade]);
+                    if (n < s.length()-1) tqlayout->addSpacing(1);
+                }
+                break;
+
+            case '_': // Spacer item
+                tqlayout->addSpacing(::factory->frameSize());
+            }
+        }
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// activeChange()
+// --------------
+// window active state has changed
+
+void smoothblendClient::activeChange() {
+    for (int n=0; n<ButtonTypeCount; n++)
+        if (button[n])
+            button[n]->reset();
+    widget()->tqrepaint(false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// captionChange()
+// ---------------
+// The title has changed
+
+void smoothblendClient::captionChange() {
+    widget()->tqrepaint(titlebar_->tqgeometry(), false);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// desktopChange()
+// ---------------
+// Called when desktop/sticky changes
+
+void smoothblendClient::desktopChange() {
+    bool d = isOnAllDesktops();
+    if (button[ButtonSticky]) {
+        TQToolTip::remove(button[ButtonSticky]);
+        TQToolTip::add(button[ButtonSticky], d ? i18n("Un-Sticky") : i18n("Sticky"));
+        button[ButtonSticky]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// iconChange()
+// ------------
+// The title has changed
+
+void smoothblendClient::iconChange() {
+    if (button[ButtonMenu]) {
+        button[ButtonMenu]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// maximizeChange()
+// ----------------
+// Maximized state has changed
+
+void smoothblendClient::maximizeChange() {
+    bool m = (maximizeMode() == MaximizeFull);
+    if (button[ButtonMax]) {
+        TQToolTip::remove(button[ButtonMax]);
+        TQToolTip::add(button[ButtonMax], m ? i18n("Restore") : i18n("Maximize"));
+        button[ButtonMax]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// shadeChange()
+// -------------
+// Called when window shading changes
+
+void smoothblendClient::shadeChange() {
+    bool s = isSetShade();
+    if (button[ButtonShade]) {
+        TQToolTip::remove(button[ButtonShade]);
+        TQToolTip::add(button[ButtonShade], s ? i18n("Unshade") : i18n("Shade"));
+        button[ButtonShade]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// keepAboveChange()
+// ------------
+// The above state has changed
+
+void smoothblendClient::keepAboveChange(bool a) {
+    if (button[ButtonAbove]) {
+        button[ButtonAbove]->setOn(a);
+        button[ButtonAbove]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// keepBelowChange()
+// ------------
+// The below state has changed
+
+void smoothblendClient::keepBelowChange(bool b) {
+    if (button[ButtonBelow]) {
+        button[ButtonBelow]->setOn(b);
+        button[ButtonBelow]->tqrepaint(false);
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// borders()
+// ----------
+// Get the size of the borders
+
+void smoothblendClient::borders(int &left, int &right, int &top, int &bottom) const {
+    int FRAMESIZE = ::factory->frameSize();
+
+    if ((maximizeMode()==MaximizeFull) && !options()->moveResizeMaximizedWindows()) {
+        left = right = bottom = 0;
+        top = ::factory->buttonSize();
+
+        // update tqlayout etc.
+        topSpacer_->changeSize(1, 0, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+        decoSpacer_->changeSize(1, 0, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+        leftSpacer_->changeSize(left, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+        leftTitleSpacer_->changeSize(left, top, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+        rightSpacer_->changeSize(right, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+        rightTitleSpacer_->changeSize(right, top, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+        bottomSpacer_->changeSize(1, bottom, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    } else {
+        left = right = bottom = ::factory->frameSize();
+        top = ::factory->titleSize() + (FRAMESIZE*2);
+
+        // update tqlayout etc.
+        topSpacer_->changeSize(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+        decoSpacer_->changeSize(1, FRAMESIZE, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+        leftSpacer_->changeSize(left, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+        leftTitleSpacer_->changeSize(left, s_titleHeight, TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+        rightSpacer_->changeSize(right, 1, TQSizePolicy::Fixed, TQSizePolicy::Expanding);
+        rightTitleSpacer_->changeSize(right,s_titleHeight,TQSizePolicy::Fixed, TQSizePolicy::Fixed);
+        bottomSpacer_->changeSize(1, bottom, TQSizePolicy::Expanding, TQSizePolicy::Fixed);
+    }
+    widget()->tqlayout()->activate();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// resize()
+// --------
+// Called to resize the window
+
+void smoothblendClient::resize(const TQSize &size) {
+    widget()->resize(size);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// tqminimumSize()
+// -------------
+// Return the minimum allowable size for this window
+
+TQSize smoothblendClient::tqminimumSize() const {
+    return widget()->tqminimumSize();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mousePosition()
+// ---------------
+// Return logical mouse position
+
+KDecoration::Position smoothblendClient::mousePosition(const TQPoint &point) const {
+    const int corner = 24;
+    Position pos;
+    int fs = ::factory->frameSize() + handlebar;
+    //int fs = ::factory->frameSize();
+
+    if (point.y() <= fs) {
+        // 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()-fs*2)) {
+        // inside handle
+        if (point.x() <= corner)
+            pos = PositionBottomLeft;
+        else if (point.x() >= (width()-corner))
+            pos = PositionBottomRight;
+        else
+            pos = PositionBottom;
+    } else if (point.x() <= fs ) {
+        // 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()-fs) {
+        // 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 smoothblendClient::eventFilter(TQObject *obj, TQEvent *e) {
+    if (TQT_BASE_OBJECT(obj) != TQT_BASE_OBJECT(widget()))
+        return false;
+
+    switch (e->type()) {
+    case TQEvent::MouseButtonDblClick: {
+            mouseDoubleClickEvent(TQT_TQMOUSEEVENT(e));
+            return true;
+        }
+    case TQEvent::MouseButtonPress: {
+            processMousePressEvent(TQT_TQMOUSEEVENT(e));
+            return true;
+        }
+    case TQEvent::Paint: {
+            paintEvent(TQT_TQPAINTEVENT(e));
+            return true;
+        }
+    case TQEvent::Resize: {
+            resizeEvent(TQT_TQRESIZEEVENT(e));
+            return true;
+        }
+    case TQEvent::Show: {
+            showEvent(TQT_TQSHOWEVENT(e));
+            return true;
+        }
+    case TQEvent::Wheel: {
+            wheelEvent(TQT_TQWHEELEVENT( e ));
+            return true;
+        }
+    default: {
+            return false;
+        }
+    }
+
+    return false;
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// mouseDoubleClickEvent()
+// -----------------------
+// Doubleclick on title
+
+void smoothblendClient::mouseDoubleClickEvent(TQMouseEvent *e) {
+    if (titlebar_->tqgeometry().contains(e->pos()))
+        titlebarDblClickOperation();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// wheelEvent()
+// ------------
+// Mouse wheel on titlebar
+
+void smoothblendClient::wheelEvent(TQWheelEvent *e)
+{
+    if (titleLayout_->tqgeometry().contains(e->pos()) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// paintEvent()
+// ------------
+// Repaint the window
+
+void smoothblendClient::paintEvent(TQPaintEvent*) {
+    if (!::factory->initialized())
+    {
+        return;
+    }
+    
+    //int FRAMESIZE = ::factory->frameSize();
+    const uint maxCaptionLength = 300; // truncate captions longer than this!
+    TQString captionText(caption());
+    if (captionText.length() > maxCaptionLength) {
+        captionText.truncate(maxCaptionLength);
+        captionText.append(" [...]");
+    }
+
+    TQColor blackColor(black);
+    TQColor redColor(red);
+    TQColorGroup group,widgetGroup;
+    TQPainter painter(widget());
+    bool active = isActive();
+    //get group information first
+    group = options()->tqcolorGroup(KDecoration::ColorTitleBar, isActive());
+    widgetGroup = widget()->tqcolorGroup();
+
+    TQRect topRect( topSpacer_->tqgeometry() );
+    TQRect titleRect( titleLayout_->tqgeometry() );
+    TQRect textRect( titlebar_->tqgeometry() );
+    TQRect Rltitle( leftTitleSpacer_->tqgeometry() );
+    TQRect Rrtitle( rightTitleSpacer_->tqgeometry() );
+    TQRect Rdeco( decoSpacer_->tqgeometry() );
+    TQRect Rleft( leftSpacer_->tqgeometry() );
+    TQRect Rright( rightSpacer_->tqgeometry() );
+    TQRect Rbottom( bottomSpacer_->tqgeometry() );
+    TQRect tempRect;
+    
+    
+    /*
+    if(active)
+    {
+        qDebug("paintEvent() topRect.y()   = %i\tbottom() = %i",topRect.top(),topRect.bottom());
+        qDebug("paintEvent() titleRect.y() = %i\tbottom() = %i",titleRect.top(),titleRect.bottom());
+        qDebug("paintEvent() textRect.y()  = %i\tbottom() = %i",textRect.top(),textRect.bottom());
+        qDebug("paintEvent() Rltitle.y()   = %i\tbottom() = %i",Rltitle.top(),Rltitle.bottom());
+        qDebug("paintEvent() Rrtitle.y()   = %i\tbottom() = %i",Rrtitle.top(),Rrtitle.bottom());
+        qDebug("paintEvent() Rdeco.y()     = %i\tbottom() = %i",Rdeco.top(),Rdeco.bottom());
+        qDebug("paintEvent() Rleft.y()     = %i\tbottom() = %i",Rleft.top(),Rleft.bottom());
+        qDebug("paintEvent() Rright.y()    = %i\tbottom() = %i",Rright.top(),Rright.bottom());
+        qDebug("paintEvent() Rbottom.y()   = %i\tbottom() = %i",Rbottom.top(),Rbottom.bottom());
+    }
+    */
+
+    // top
+    painter.drawTiledPixmap(topRect, active ? *aTitleBarTopTile:*iTitleBarTopTile);
+    painter.drawTiledPixmap(titleRect.x(),
+                            titleRect.y(),
+                            titleRect.width(),
+                            titleRect.height() + Rdeco.height(),
+                            active ? *aTitleBarTile:*iTitleBarTile);
+
+    textRect.setRect(textRect.x()+SIDETITLEMARGIN,
+                     textRect.y(),
+                     textRect.width()-SIDETITLEMARGIN*2,
+                     textRect.height());
+    TQRect shadowRect(textRect.x()+1,textRect.y()+1,textRect.width(),textRect.height());
+    //if we are shadowing title bar text
+    if(::factory->titleShadow())
+    {
+        //shadow text
+        painter.setFont(options()->font(isActive(), false));
+        painter.setPen(blackColor);
+        painter.drawText(shadowRect,
+                         ::factory->titleAlign() | AlignVCenter | TQt::SingleLine,
+                         captionText);
+    }
+    // draw title text
+    painter.setFont(options()->font(isActive(), false));
+    painter.setPen(options()->color(KDecoration::ColorFont, isActive()));
+    painter.drawText(textRect,
+                     ::factory->titleAlign() | AlignVCenter | TQt::SingleLine,
+                     captionText);
+    
+    //left of buttons and title
+    painter.drawTiledPixmap(Rltitle.x(),
+                            Rltitle.y(),
+                            Rltitle.width(),
+                            Rltitle.height()+Rdeco.height(),
+                            active ? *aTitleBarTile:*iTitleBarTile);
+    // left mid tqlayout
+    painter.fillRect(Rleft,widgetGroup.background());
+
+    // right of buttons and title
+    painter.drawTiledPixmap(Rrtitle.x(),
+                            Rrtitle.y(),
+                            Rrtitle.width(),
+                            Rrtitle.height()+Rdeco.height(),
+                            active ? *aTitleBarTile:*iTitleBarTile);
+    // right mid tqlayout
+    painter.fillRect(Rright,widgetGroup.background());
+    
+    // bottom
+    /*
+    if(isShade())
+    {
+        frame.setRect(0,::factory->titleSize()+FRAMESIZE, width(), FRAMESIZE);
+    }
+    else
+    {
+        frame.setRect(0, height() - (FRAMESIZE*2), width(),  (FRAMESIZE*2));
+    }
+    */
+    painter.fillRect(Rbottom, widgetGroup.background());
+
+    //draw a line between title bar and window contents
+    painter.setPen(group.background());
+
+    // outline outside the frame but not the corners if they are rounded
+    tempRect = widget()->rect();
+    painter.drawRect(tempRect);
+
+    bool cornersFlag = ::factory->roundedCorners();
+    if(cornersFlag) {
+        // local temp right and bottom
+        int r(width());
+        painter.setPen(group.background());
+        painter.drawPoint(4, 1);
+        painter.drawPoint(3, 1);
+        painter.drawPoint(2, 2);
+        painter.drawPoint(1, 3);
+        painter.drawPoint(1, 4);
+        painter.drawPoint(r - 5, 1);
+        painter.drawPoint(r - 4, 1);
+        painter.drawPoint(r - 3, 2);
+        painter.drawPoint(r - 2, 3);
+        painter.drawPoint(r - 2, 4);
+    } 
+
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// updateMask()
+// ------------
+// update the frame mask
+void smoothblendClient::updateMask() {
+    bool cornersFlag = ::factory->roundedCorners();
+    if ( (!options()->moveResizeMaximizedWindows() && maximizeMode() == MaximizeFull ) ) 
+    {
+        setMask(TQRegion(widget()->rect()));
+        return;
+    }
+
+    int r(width());
+    int b(height());
+    TQRegion mask;
+
+    mask=TQRegion(widget()->rect());
+
+   // Remove top-left corner.
+    if(cornersFlag) {
+        mask -= TQRegion(0, 0, 5, 1);
+        mask -= TQRegion(0, 1, 3, 1);
+        mask -= TQRegion(0, 2, 2, 1);
+        mask -= TQRegion(0, 3, 1, 2);
+        mask -= TQRegion(r - 5, 0, 5, 1);
+        mask -= TQRegion(r - 3, 1, 3, 1);
+        mask -= TQRegion(r - 2, 2, 2, 1);
+        mask -= TQRegion(r - 1, 3, 1, 2);
+    }
+    //always remove one corner pixel so it simulates a soft corner like plastik
+    mask -= TQRegion(0,0,1,1);
+    mask -= TQRegion(r-1,0,1,1);
+    mask -= TQRegion(0, b-1, 1,1);
+    mask -= TQRegion(r-1,b-1,1,1);
+
+    setMask(mask);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// resizeEvent()
+// -------------
+// Window is being resized
+
+void smoothblendClient::resizeEvent(TQResizeEvent *) {
+    if (widget()->isShown()) {
+        TQRegion region = widget()->rect();
+        region = region.subtract(titlebar_->tqgeometry());
+        widget()->erase(region);
+        updateMask();
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// showEvent()
+// -----------
+// Window is being shown
+
+void smoothblendClient::showEvent(TQShowEvent *) {
+    updateMask();
+    widget()->tqrepaint();
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// maxButtonPressed()
+// -----------------
+// Max button was pressed
+
+void smoothblendClient::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 smoothblendClient::shadeButtonPressed() {
+    if (button[ButtonShade]) {
+        setShade( !isSetShade());
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// aboveButtonPressed()
+// -----------------
+// Above button was pressed
+
+void smoothblendClient::aboveButtonPressed() {
+    if (button[ButtonAbove]) {
+        setKeepAbove( !keepAbove());
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// belowButtonPressed()
+// -----------------
+// Below button was pressed
+
+void smoothblendClient::belowButtonPressed() {
+    if (button[ButtonBelow]) {
+        setKeepBelow( !keepBelow());
+    }
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// menuButtonPressed()
+// -------------------
+// Menu button was pressed (popup the menu)
+
+void smoothblendClient::menuButtonPressed() {
+    static TQTime* t = NULL;
+    static smoothblendClient* lastClient = NULL;
+    if (t == NULL)
+        t = new TQTime;
+    bool dbl = (lastClient==this && t->elapsed() <= TQApplication::doubleClickInterval());
+    lastClient = this;
+    t->start();
+    //if (button[ButtonMenu] && !dbl && !::factory->menuClosed()) {
+    if ( !dbl || !::factory->menuClosed()) {
+        TQPoint 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;
+    }
+}
+
+void smoothblendClient::menuButtonReleased()
+{
+    if(closing)
+    {
+        closeWindow();
+    }
+}
+
+#include "smoothblend.moc"
diff --git a/twin-styles/smooth-blend/client/smoothblend.desktop b/twin-styles/smooth-blend/client/smoothblend.desktop
new file mode 100644
index 00000000..6f26b6e0
--- /dev/null
+++ b/twin-styles/smooth-blend/client/smoothblend.desktop
@@ -0,0 +1,40 @@
+# KDE Desktop Entry
+[Desktop Entry]
+Name=Smooth Blend
+Name[ca]=Barreja suau
+Name[cs]=Jemný přechod
+Name[cy]=Cymysgedd Llyfn
+Name[da]=Glat blanding
+Name[el]=Ομαλή μείξη
+Name[eo]=Glata Miksaĵo
+Name[es]=Mezcla suave
+Name[et]=Mahe ühtesulamine
+Name[fa]=ترکیب یکدست
+Name[fi]=Pehmeä sekoitus
+Name[fr]=Fusion douce
+Name[fy]=Sêfte ferminging
+Name[gl]=Mistura Suave
+Name[hu]=Sima színátmenet
+Name[is]=Mjúk blöndun
+Name[it]=Mistura scorrevole
+Name[ja]=綺麗なブレンド
+Name[ka]=გლუვი და რბილი
+Name[mk]=Рамномерно мешање
+Name[nb]=Jevn overgang
+Name[nds]=Week Mischen
+Name[ne]=महिन मिश्रण
+Name[nl]=Zachte vermenging
+Name[nn]=Jamn overgang
+Name[pl]=Gładkie łączenie kolorów
+Name[pt]=Mistura Suave
+Name[pt_BR]=Mistura Suave
+Name[ru]=Полутона
+Name[sl]=Enakomeren preliv
+Name[sr]=Глатко претапање
+Name[sr@Latn]=Glatko pretapanje
+Name[sv]=Jämn blandning
+Name[tr]=Düz Karışım
+Name[uk]=Гладке змішання
+Name[vi]=Trộn màu Mượt mà
+Name[zh_TW]=平順混合
+X-KDE-Library=twin3_smoothblend
diff --git a/twin-styles/smooth-blend/client/smoothblend.h b/twin-styles/smooth-blend/client/smoothblend.h
new file mode 100644
index 00000000..4abd32cb
--- /dev/null
+++ b/twin-styles/smooth-blend/client/smoothblend.h
@@ -0,0 +1,256 @@
+//////////////////////////////////////////////////////////////////////////////
+// smoothblend.h
+// -------------------
+// Smooth Blend window decoration for KDE
+// -------------------
+// Copyright (c) 2005 Ryan Nickell <p0z3r@users.sourceforge.net>
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// 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 SMOOTHBLEND_H
+#define SMOOTHBLEND_H
+
+#include <tqbutton.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+class TQSpacerItem;
+class TQPoint;
+
+namespace smoothblend {
+
+class smoothblendClient;
+
+enum ButtonType {
+    ButtonHelp=0,
+    ButtonMax,
+    ButtonMin,
+    ButtonClose,
+    ButtonMenu,
+    ButtonSticky,
+    ButtonAbove,
+    ButtonBelow,
+    ButtonShade,
+    ButtonTypeCount
+};
+
+// smoothblendFactory /////////////////////////////////////////////////////////
+//
+// add variables and flags for config like...
+//
+// public:  type function()
+// private: type var_
+// inline type function(){ return var_ };
+//
+
+class smoothblendFactory: public KDecorationFactory {
+public:
+    smoothblendFactory();
+    virtual ~smoothblendFactory();
+    virtual KDecoration *createDecoration(KDecorationBridge *b);
+    virtual bool reset(unsigned long changed);
+    static bool initialized();
+    static TQt::AlignmentFlags titleAlign();
+    static bool roundedCorners();
+    static int titleSize();
+    static int buttonSize();
+    static int frameSize();
+    static int roundSize();
+    static TQFont titleFontTool() { return m_titleFontTool; }
+    static bool titleShadow();
+    static bool animateButtons() { return animatebuttons; }
+    static int getBtnComboBox() { return btnComboBox; }
+    static bool menuClosed() { return menuClose; }
+
+private:
+    bool readConfig();
+
+private:
+    static bool initialized_;
+    static TQt::AlignmentFlags titlealign_;
+    static bool cornerflags_;
+    static int titlesize_;
+    static int buttonsize_;
+    static int framesize_;
+    static int roundsize_;
+    static TQFont m_titleFontTool;
+    static bool titleshadow_;
+    static bool animatebuttons;
+    static int btnComboBox;
+    static bool menuClose;
+};
+
+inline bool smoothblendFactory::initialized() {
+    return initialized_;
+}
+inline TQt::AlignmentFlags smoothblendFactory::titleAlign() {
+    return titlealign_;
+}
+inline bool smoothblendFactory::roundedCorners() {
+    return cornerflags_;
+}
+inline int smoothblendFactory::titleSize() {
+    return titlesize_;
+}
+inline int smoothblendFactory::buttonSize() {
+    return buttonsize_;
+}
+inline int smoothblendFactory::frameSize() {
+    return framesize_;
+}
+inline int smoothblendFactory::roundSize() {
+    return roundsize_;
+}
+inline bool smoothblendFactory::titleShadow() {
+    return titleshadow_;
+}
+
+// smoothblendButton //////////////////////////////////////////////////////////
+
+class smoothblendButton : public TQButton {
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    smoothblendButton(smoothblendClient *parent=0, const char *name=0,
+                  const TQString &tip=NULL,
+                  ButtonType type=ButtonHelp,
+                  int button_size=18,
+                  bool toggle=false);
+                  //const unsigned char *bitmap=0);
+    ~smoothblendButton();
+
+    void setBitmap(const unsigned char *bitmap);
+    TQSize tqsizeHint() const;
+    ButtonState lastMousePress() const;
+    void reset();
+    TQImage getButtonImage(ButtonType type);
+    virtual void setOn(bool on);
+    virtual void setDown(bool on);
+
+protected slots:
+    void animate();
+    void buttonClicked();
+    void buttonReleased();
+
+private:
+    void enterEvent(TQEvent *e);
+    void leaveEvent(TQEvent *e);
+    void mousePressEvent(TQMouseEvent *e);
+    void mouseReleaseEvent(TQMouseEvent *e);
+    void drawButton(TQPainter *painter);
+
+private:
+    smoothblendClient *client_;
+    ButtonType type_;
+    int size_;
+    TQBitmap *deco_;
+    TQPixmap *pixmap[2][4];
+    ButtonState lastmouse_;
+    bool hover_;
+    bool m_clicked;
+    TQTimer *animTmr;
+    uint animProgress;
+};
+
+inline TQt::ButtonState smoothblendButton::lastMousePress() const {
+    return lastmouse_;
+}
+inline void smoothblendButton::reset() {
+    tqrepaint(false);
+}
+
+// smoothblendClient //////////////////////////////////////////////////////////
+
+class smoothblendClient : public KDecoration {
+    Q_OBJECT
+  TQ_OBJECT
+public:
+    smoothblendClient(KDecorationBridge *b, KDecorationFactory *f);
+    virtual ~smoothblendClient();
+
+    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 TQSize &size);
+    virtual TQSize tqminimumSize() const;
+    virtual Position mousePosition(const TQPoint &point) const;
+
+    TQPixmap getTitleBarTile(bool active) const
+    {
+        return active ? *aTitleBarTile : *iTitleBarTile;
+    }
+
+private:
+    void addButtons(TQBoxLayout* tqlayout, const TQString& buttons, int buttonSize = 18);
+    bool eventFilter(TQObject *obj, TQEvent *e);
+    void mouseDoubleClickEvent(TQMouseEvent *e);
+    void wheelEvent(TQWheelEvent *e);
+    void paintEvent(TQPaintEvent *e);
+    void resizeEvent(TQResizeEvent *);
+    void showEvent(TQShowEvent *);
+    void updateMask();
+    void _resetLayout();
+    TQVBoxLayout *mainLayout_;
+    TQHBoxLayout *titleLayout_;
+    TQSpacerItem *topSpacer_,
+                *titleSpacer_,
+                *leftTitleSpacer_, *rightTitleSpacer_,
+                *decoSpacer_,
+                *leftSpacer_, *rightSpacer_,
+                *bottomSpacer_, *windowSpacer_;
+    TQPixmap *aCaptionBuffer, *iCaptionBuffer;
+
+private slots:
+    void maxButtonPressed();
+    void menuButtonPressed();
+    void menuButtonReleased();
+    void aboveButtonPressed();
+    void belowButtonPressed();
+    void shadeButtonPressed();
+    void keepAboveChange(bool);
+    void keepBelowChange(bool);
+
+signals:
+    void keepAboveChanged(bool);
+    void keepBelowChanged(bool);
+
+private:
+    TQPixmap *aTitleBarTile, *iTitleBarTile, *aTitleBarTopTile, *iTitleBarTopTile;
+    smoothblendButton *button[ButtonTypeCount];
+    TQSpacerItem *titlebar_;
+    bool pixmaps_created;
+    int s_titleHeight;
+    TQFont s_titleFont;
+    int handlebar;
+    bool closing;
+
+    void create_pixmaps();
+    void delete_pixmaps();
+};
+
+} // namespace smoothblend
+
+#endif // SMOOTHBLEND_H
diff --git a/twin-styles/system/CMakeLists.txt b/twin-styles/system/CMakeLists.txt
new file mode 100644
index 00000000..09a3a966
--- /dev/null
+++ b/twin-styles/system/CMakeLists.txt
@@ -0,0 +1,32 @@
+#################################################
+#
+#  (C) 2011 Golubev Alexander
+#  fatzer2 (AT) gmail.com
+#
+#  Improvements and feedback are welcome
+#
+#  This file is released under GPL >= 2
+#
+#################################################
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+##### other data ################################
+
+install( FILES system.desktop DESTINATION ${DATA_INSTALL_DIR}/twin )
+
+##### twin3_system ###############################
+
+tde_add_kpart( twin3_system AUTOMOC
+  SOURCES systemclient.cpp
+  LINK tdecorations-shared
+  DESTINATION ${PLUGIN_INSTALL_DIR}
+)
diff --git a/twin-styles/system/Makefile.am b/twin-styles/system/Makefile.am
new file mode 100644
index 00000000..5b401370
--- /dev/null
+++ b/twin-styles/system/Makefile.am
@@ -0,0 +1,21 @@
+
+INCLUDES = $(all_includes)
+
+kde_module_LTLIBRARIES = twin3_system.la
+
+twin3_system_la_SOURCES = systemclient.cpp
+twin3_system_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module $(LIB_QT) $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx
+#twin_system_la_LDFLAGS = $(all_libraries) -avoid-version -module $(KDE_RPATH) $(KDE_MT_LDFLAGS)
+twin3_system_la_LIBADD = $(LIB_TDEUI) -ltdecorations
+
+METASOURCES = AUTO
+noinst_HEADERS = systemclient.h
+
+lnkdir = $(kde_datadir)/twin/
+lnk_DATA = system.desktop
+
+EXTRA_DIST = $(lnk_DATA)
+
+###KMAKE-start (don't edit or delete this block)
+
+###KMAKE-end
diff --git a/twin-styles/system/system.desktop b/twin-styles/system/system.desktop
new file mode 100644
index 00000000..94156b29
--- /dev/null
+++ b/twin-styles/system/system.desktop
@@ -0,0 +1,27 @@
+[Desktop Entry]
+Name=System++
+Name[br]=Reizhiad++
+Name[cs]=Systém++
+Name[cy]=Cysawd++
+Name[eo]=Sistem++
+Name[fa]=سیستم++
+Name[fi]=Järjestelmä++
+Name[fr]=Système++
+Name[fy]=Systeem++
+Name[hi]=सिस्टम++
+Name[it]=Sistem++
+Name[ja]=システム++
+Name[lt]=Sistema++
+Name[lv]=Sistēma++
+Name[nds]=Systeem++
+Name[nl]=Systeem++
+Name[pa]=ਸਿਸਟਮ++
+Name[sl]=Sistem++
+Name[ta]=தளம்++
+Name[tg]=Системаи++
+Name[th]=แบบ System++
+Name[tr]=Sistem++
+Name[ven]=Sisitemu++
+Name[xh]=Indlela esetyenziswayo++
+Name[zu]=Indlela esetshenziswayo++
+X-KDE-Library=twin3_system
diff --git a/twin-styles/system/systemclient.cpp b/twin-styles/system/systemclient.cpp
new file mode 100644
index 00000000..a676a02a
--- /dev/null
+++ b/twin-styles/system/systemclient.cpp
@@ -0,0 +1,737 @@
+#include "systemclient.h"
+
+#include <tqlayout.h>
+#include <tqdrawutil.h>
+#include <tqbitmap.h>
+#include <tqtooltip.h>
+#include <tqlabel.h>
+#include <tqcursor.h>
+
+#include <kpixmapeffect.h>
+#include <kdrawutil.h>
+#include <klocale.h>
+#include <kapplication.h>
+#include <kdebug.h>
+
+// Default button tqlayout
+const char default_left[]  = "X";
+const char default_right[] = "HSIA";
+
+namespace System {
+
+static unsigned char iconify_bits[] = {
+    0x00, 0x00, 0xff, 0xff, 0x7e, 0x3c, 0x18, 0x00};
+
+static unsigned char maximize_bits[] = {
+    0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x00, 0x00};
+
+static unsigned char r_minmax_bits[] = {
+    0x0c, 0x18, 0x33, 0x67, 0xcf, 0x9f, 0x3f, 0x3f};
+
+static unsigned char l_minmax_bits[] = {
+    0x30, 0x18, 0xcc, 0xe6, 0xf3, 0xf9, 0xfc, 0xfc};    
+    
+static unsigned char unsticky_bits[] = {
+    0x00, 0x18, 0x18, 0x7e, 0x7e, 0x18, 0x18, 0x00};
+
+static unsigned char sticky_bits[] = {
+    0x00, 0x00, 0x00, 0x7e, 0x7e, 0x00, 0x00, 0x00};
+
+static unsigned char question_bits[] = {
+    0x3c, 0x66, 0x60, 0x30, 0x18, 0x00, 0x18, 0x18};
+
+static KPixmap *aUpperGradient=0;
+static KPixmap *iUpperGradient=0;
+
+static KPixmap *btnPix=0;
+static KPixmap *btnPixDown=0;
+static KPixmap *iBtnPix=0;
+static KPixmap *iBtnPixDown=0;
+static TQColor *btnForeground;
+
+static bool pixmaps_created = false;
+
+static void drawButtonFrame(KPixmap *pix, const TQColorGroup &g)
+{
+    TQPainter p;
+    p.begin(pix);
+    p.setPen(g.mid());
+    p.drawLine(0, 0, 13, 0);
+    p.drawLine(0, 0, 0, 13);
+    p.setPen(g.light());
+    p.drawLine(13, 0, 13, 13);
+    p.drawLine(0, 13, 13, 13);
+    p.setPen(g.dark());
+    p.drawRect(1, 1, 12, 12);
+    p.end();
+}
+
+static void create_pixmaps()
+{
+    if(pixmaps_created)
+        return;
+    pixmaps_created = true;
+
+    if(TQPixmap::defaultDepth() > 8){
+        // titlebar
+        aUpperGradient = new KPixmap;
+        aUpperGradient->resize(32, 18);
+        iUpperGradient = new KPixmap;
+        iUpperGradient->resize(32, 18);
+        TQColor bgColor = kapp->tqpalette().active().background();
+        KPixmapEffect::gradient(*aUpperGradient,
+                                KDecoration::options()->color(KDecorationOptions::ColorFrame, true).light(130),
+                                bgColor,
+                                KPixmapEffect::VerticalGradient);
+        KPixmapEffect::gradient(*iUpperGradient,
+                                KDecoration::options()->color(KDecorationOptions::ColorFrame, false).light(130),
+                                bgColor,
+                                KPixmapEffect::VerticalGradient);
+
+        // buttons
+        KPixmap aPix;
+        aPix.resize(12, 12);
+        KPixmap iPix;
+        iPix.resize(12, 12);
+        KPixmap aInternal;
+        aInternal.resize(8, 8);
+        KPixmap iInternal;
+        iInternal.resize(8, 8);
+
+        TQColor hColor(KDecoration::options()->color(KDecorationOptions::ColorButtonBg, false));
+        KPixmapEffect::gradient(iInternal,
+                                hColor.dark(120),
+                                hColor.light(120),
+                                KPixmapEffect::DiagonalGradient);
+        KPixmapEffect::gradient(iPix,
+                                hColor.light(150),
+                                hColor.dark(150),
+                                KPixmapEffect::DiagonalGradient);
+
+        hColor =KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true);
+        KPixmapEffect::gradient(aInternal,
+                                hColor.dark(120),
+                                hColor.light(120),
+                                KPixmapEffect::DiagonalGradient);
+        KPixmapEffect::gradient(aPix,
+                                hColor.light(150),
+                                hColor.dark(150),
+                                KPixmapEffect::DiagonalGradient);
+        bitBlt(TQT_TQPAINTDEVICE(&aPix), 1, 1, TQT_TQPAINTDEVICE(&aInternal), 0, 0, 8, 8, TQt::CopyROP, true);
+        bitBlt(TQT_TQPAINTDEVICE(&iPix), 1, 1, TQT_TQPAINTDEVICE(&iInternal), 0, 0, 8, 8, TQt::CopyROP, true);
+
+        // normal buttons
+        btnPix = new KPixmap;
+        btnPix->resize(14, 14);
+        bitBlt(TQT_TQPAINTDEVICE(btnPix), 2, 2, TQT_TQPAINTDEVICE(&aPix), 0, 0, 10, 10, TQt::CopyROP, true);
+        drawButtonFrame(btnPix, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame, true));
+
+        iBtnPix = new KPixmap;
+        iBtnPix->resize(14, 14);
+        bitBlt(TQT_TQPAINTDEVICE(iBtnPix), 2, 2, TQT_TQPAINTDEVICE(&iPix), 0, 0, 10, 10, TQt::CopyROP, true);
+        drawButtonFrame(iBtnPix, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame, false));
+
+
+        // pressed buttons
+        hColor = KDecoration::options()->color(KDecorationOptions::ColorButtonBg, false);
+        KPixmapEffect::gradient(iInternal,
+                                hColor.light(130),
+                                hColor.dark(130),
+                                KPixmapEffect::DiagonalGradient);
+        KPixmapEffect::gradient(iPix,
+                                hColor.light(150),
+                                hColor.dark(150),
+                                KPixmapEffect::DiagonalGradient);
+
+        hColor =KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true);
+        KPixmapEffect::gradient(aInternal,
+                                hColor.light(130),
+                                hColor.dark(130),
+                                KPixmapEffect::DiagonalGradient);
+        KPixmapEffect::gradient(aPix,
+                                hColor.light(150),
+                                hColor.dark(150),
+                                KPixmapEffect::DiagonalGradient);
+        bitBlt(TQT_TQPAINTDEVICE(&aPix), 1, 1, TQT_TQPAINTDEVICE(&aInternal), 0, 0, 8, 8, TQt::CopyROP, true);
+        bitBlt(TQT_TQPAINTDEVICE(&iPix), 1, 1, TQT_TQPAINTDEVICE(&iInternal), 0, 0, 8, 8, TQt::CopyROP, true);
+
+        btnPixDown = new KPixmap;
+        btnPixDown->resize(14, 14);
+        bitBlt(TQT_TQPAINTDEVICE(btnPixDown), 2, 2, TQT_TQPAINTDEVICE(&aPix), 0, 0, 10, 10, TQt::CopyROP, true);
+        drawButtonFrame(btnPixDown, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
+                                                        true));
+
+        iBtnPixDown = new KPixmap;
+        iBtnPixDown->resize(14, 14);
+        bitBlt(TQT_TQPAINTDEVICE(iBtnPixDown), 2, 2, TQT_TQPAINTDEVICE(&iPix), 0, 0, 10, 10, TQt::CopyROP, true);
+        drawButtonFrame(iBtnPixDown, KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
+                                                         false));
+    }
+    if(tqGray(KDecoration::options()->color(KDecorationOptions::ColorButtonBg, true).rgb()) > 128)
+        btnForeground = new TQColor(TQt::black);
+    else
+        btnForeground = new TQColor(TQt::white);
+}
+
+static void delete_pixmaps()
+{
+    if(aUpperGradient){
+        delete aUpperGradient;
+        delete iUpperGradient;
+        delete btnPix;
+        delete btnPixDown;
+        delete iBtnPix;
+        delete iBtnPixDown;
+        aUpperGradient = 0;
+    }
+    delete btnForeground;
+    pixmaps_created = false;
+}
+
+SystemButton::SystemButton(SystemClient *parent, const char *name,
+                           const unsigned char *bitmap, const TQString& tip)
+: TQButton(parent->widget(), name)
+{
+   setTipText(tip);
+   setBackgroundMode( NoBackground );
+   setCursor(ArrowCursor);
+   resize(14, 14);
+   if(bitmap)
+      setBitmap(bitmap);
+   client = parent;
+}
+
+void SystemButton::setTipText(const TQString &tip)
+{
+   if (KDecoration::options()->showTooltips())
+   {
+      TQToolTip::remove(this );
+      TQToolTip::add(this, tip );
+   }
+}
+
+
+TQSize SystemButton::tqsizeHint() const
+{
+    return(TQSize(14, 14));
+}
+
+void SystemButton::reset()
+{
+   tqrepaint(false);
+}
+
+void SystemButton::setBitmap(const unsigned char *bitmap)
+{
+    deco = TQBitmap(8, 8, bitmap, true);
+    deco.setMask(deco);
+    tqrepaint();
+}
+
+void SystemButton::drawButton(TQPainter *p)
+{
+    if(btnPixDown){
+        if(client->isActive())
+            p->drawPixmap(0, 0, isDown() ? *btnPixDown : *btnPix);
+        else
+            p->drawPixmap(0, 0, isDown() ? *iBtnPixDown : *iBtnPix);
+    }
+    else{
+        TQColorGroup g = KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorFrame,
+                                            client->isActive());
+        int x2 = width()-1;
+        int y2 = height()-1;
+        // outer frame
+        p->setPen(g.mid());
+        p->drawLine(0, 0, x2, 0);
+        p->drawLine(0, 0, 0, y2);
+        p->setPen(g.light());
+        p->drawLine(x2, 0, x2, y2);
+        p->drawLine(0, x2, y2, x2);
+        p->setPen(g.dark());
+        p->drawRect(1, 1, width()-2, height()-2);
+        // inner frame
+        g = KDecoration::options()->tqcolorGroup(KDecorationOptions::ColorButtonBg, client->isActive());
+        p->fillRect(3, 3, width()-6, height()-6, g.background());
+        p->setPen(isDown() ? g.mid() : g.light());
+        p->drawLine(2, 2, x2-2, 2);
+        p->drawLine(2, 2, 2, y2-2);
+        p->setPen(isDown() ? g.light() : g.mid());
+        p->drawLine(x2-2, 2, x2-2, y2-2);
+        p->drawLine(2, x2-2, y2-2, x2-2);
+
+    }
+
+    if(!deco.isNull()){
+        p->setPen(*btnForeground);
+        p->drawPixmap(isDown() ? 4 : 3, isDown() ? 4 : 3, deco);
+    }
+}
+
+void SystemButton::mousePressEvent( TQMouseEvent* e )
+{
+   last_button = e->button();
+   TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
+   TQButton::mousePressEvent( &me );
+}
+
+void SystemButton::mouseReleaseEvent( TQMouseEvent* e )
+{
+   last_button = e->button();
+   TQMouseEvent me ( e->type(), e->pos(), e->globalPos(), Qt::LeftButton, e->state() );
+   TQButton::mouseReleaseEvent( &me );
+}
+
+
+
+SystemClient::SystemClient(KDecorationBridge* bridge, KDecorationFactory* factory)
+    : KDecoration(bridge, factory)
+{}
+
+SystemClient::~SystemClient()
+{
+    for (int n=0; n<ButtonTypeCount; n++) {
+        if (button[n]) delete button[n];
+    }
+}
+
+void SystemClient::init()
+{
+   createMainWidget(0);
+   widget()->installEventFilter( this );
+
+   TQGridLayout* g = new TQGridLayout(widget(), 0, 0, 2);
+
+   if (isPreview())
+   {
+      g->addWidget(new TQLabel(i18n("<center><b>System++ preview</b></center>"), widget()), 1, 1);
+   }
+   else
+   {
+      g->addItem(new TQSpacerItem( 0, 0 ), 1, 1); // no widget in the middle
+   }
+//   g->addItem( new TQSpacerItem( 0, 0, TQSizePolicy::Fixed, TQSizePolicy::Expanding ) );
+   g->setRowStretch(1, 10);
+
+   g->addColSpacing(0, 2);
+   g->addColSpacing(2, 2);
+   g->addRowSpacing(2, 6);
+
+   TQBoxLayout* hb = new TQBoxLayout(0, TQBoxLayout::LeftToRight, 0, 0, 0);
+   hb->setResizeMode(TQLayout::FreeResize);
+   g->addLayout( hb, 0, 1 );
+   hb->addSpacing(3);   
+   
+   titlebar = new TQSpacerItem(10, 14, TQSizePolicy::Expanding,
+                              TQSizePolicy::Minimum);    
+
+    // setup titlebar buttons
+    for (int n=0; n<ButtonTypeCount; n++) button[n] = 0;
+    addButtons(hb, KDecoration::options()->customButtonPositions() ? 
+                   KDecoration::options()->titleButtonsLeft() : TQString(default_left));
+    hb->addSpacing(2);    
+    hb->addItem(titlebar);
+    hb->addSpacing(3);
+    addButtons(hb, KDecoration::options()->customButtonPositions() ? 
+                   KDecoration::options()->titleButtonsRight() : TQString(default_right));
+    hb->addSpacing(2);
+
+   widget()->setBackgroundMode(TQWidget::NoBackground);
+   recalcTitleBuffer();
+}
+
+void SystemClient::addButtons(TQBoxLayout *hb, const TQString& s)
+{
+    unsigned char *minmax_bits;
+    int l_max = KDecoration::options()->titleButtonsLeft().find('A');
+    if (s.length() > 0) {
+        for (unsigned n=0; n < s.length(); n++) {
+            switch (s[n]) {
+              case 'X': // Close button
+                  if ((!button[ButtonClose]) && isCloseable()) {
+                      button[ButtonClose] = new SystemButton(this, "close", NULL, i18n("Close"));
+                      connect( button[ButtonClose], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( closeWindow() ) ) );
+                      hb->addWidget(button[ButtonClose]);
+                      hb->addSpacing(1);
+                  }
+                  break;
+                  
+              case 'S': // Sticky button
+                  if (!button[ButtonSticky]) {
+                     button[ButtonSticky] = new SystemButton(this, "sticky", NULL, i18n("On all desktops"));
+                     if(isOnAllDesktops())
+                         button[ButtonSticky]->setBitmap(unsticky_bits);
+                     else
+                         button[ButtonSticky]->setBitmap(sticky_bits);
+                     connect( button[ButtonSticky], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( toggleOnAllDesktops() ) ) );
+                     hb->addWidget(button[ButtonSticky]);
+                     hb->addSpacing(1);
+                  }
+                  break;
+
+              case 'I': // Minimize button
+                  if ((!button[ButtonMinimize]) && isMinimizable())  {
+                      button[ButtonMinimize] = new SystemButton(this, "iconify", iconify_bits, i18n("Minimize"));
+                      connect( button[ButtonMinimize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( minimize() ) ) );
+                      hb->addWidget(button[ButtonMinimize]);
+                      hb->addSpacing(1);
+                  }
+                  break;
+
+              case 'A': // Maximize button
+                  if ((!button[ButtonMaximize]) && isMaximizable()) {
+                      if (maximizeMode()==MaximizeFull) {
+                          if (KDecoration::options()->customButtonPositions() && (l_max>-1))
+                              minmax_bits = l_minmax_bits;
+                          else
+                              minmax_bits = r_minmax_bits;
+                          button[ButtonMaximize] = new SystemButton(this, "maximize", minmax_bits, i18n("Restore"));
+                      }
+                      else
+                          button[ButtonMaximize] = new SystemButton(this, "maximize", maximize_bits, i18n("Maximize"));
+                      connect( button[ButtonMaximize], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( maxButtonClicked() ) ) );
+                      hb->addWidget(button[ButtonMaximize]);
+                      hb->addSpacing(1);
+                  }
+                  break;
+
+              case 'H': // Help button
+                  if ((!button[ButtonHelp]) && providesContextHelp()) {
+                      button[ButtonHelp] = new SystemButton(this, "help", question_bits, i18n("Help"));
+                      connect( button[ButtonHelp], TQT_SIGNAL( clicked() ), this, ( TQT_SLOT( showContextHelp() ) ) );
+                      hb->addWidget(button[ButtonHelp]);
+                      hb->addSpacing(1);
+                  }
+                  break;
+            
+            }
+        }
+    }
+}
+
+bool SystemClient::eventFilter( TQObject* o, TQEvent* e )
+{
+    if( TQT_BASE_OBJECT(o) != TQT_BASE_OBJECT(widget()))
+       return false;
+    switch( e->type())
+    {
+    case TQEvent::Resize:
+       resizeEvent(TQT_TQRESIZEEVENT( e ) );
+       return true;
+    case TQEvent::Paint:
+       paintEvent(TQT_TQPAINTEVENT( e ) );
+       return true;
+    case TQEvent::MouseButtonDblClick:
+       mouseDoubleClickEvent(TQT_TQMOUSEEVENT( e ) );
+       return true;
+    case TQEvent::MouseButtonPress:
+       processMousePressEvent(TQT_TQMOUSEEVENT( e ) );
+       return true;
+    case TQEvent::Wheel:
+       wheelEvent( TQT_TQWHEELEVENT( e ));
+       return true;
+    default:
+        break;
+    }
+    return false;
+}
+
+void SystemClient::reset(unsigned long)
+{
+   titleBuffer.resize(0, 0);
+   recalcTitleBuffer();
+   widget()->tqrepaint();
+   if (button[ButtonClose])
+       button[ButtonClose]->reset();
+   if (button[ButtonSticky])
+       button[ButtonSticky]->reset();
+   if (button[ButtonMinimize])
+       button[ButtonMinimize]->reset();
+   if (button[ButtonMaximize])
+       button[ButtonMaximize]->reset();
+   if (button[ButtonHelp])
+       button[ButtonHelp]->reset();
+}
+
+void SystemClient::maxButtonClicked()
+{
+   maximize( button[ButtonMaximize]->last_button );
+}
+
+void SystemClient::resizeEvent( TQResizeEvent* )
+{
+    //Client::resizeEvent( e );
+    recalcTitleBuffer();
+    doShape();
+    /*
+    if ( isVisibleToTLW() && !testWFlags( WStaticContents )) {
+        TQPainter p( this );
+	TQRect t = titlebar->tqgeometry();
+	t.setTop( 0 );
+	TQRegion r = rect();
+	r = r.subtract( t );
+	p.setClipRegion( r );
+	p.eraseRect( rect() );
+        }*/
+}
+
+void SystemClient::resize( const TQSize& s )
+{
+   widget()->resize( s );
+}
+
+
+TQSize SystemClient::tqminimumSize() const
+{
+   return widget()->tqminimumSize();
+}
+
+
+void SystemClient::recalcTitleBuffer()
+{
+    if(oldTitle == caption() && width() == titleBuffer.width())
+        return;
+    TQFontMetrics fm(options()->font(true));
+    titleBuffer.resize(width(), 18);
+    TQPainter p;
+    p.begin(&titleBuffer);
+    if(aUpperGradient)
+        p.drawTiledPixmap(0, 0, width(), 18, *aUpperGradient);
+    else
+        p.fillRect(0, 0, width(), 18,
+                   options()->tqcolorGroup(KDecorationOptions::ColorFrame, true).
+                   brush(TQColorGroup::Button));
+
+    TQRect t = titlebar->tqgeometry();
+    t.setTop( 2 );
+    t.setLeft( t.left() + 4 );
+    t.setRight( t.right() - 2 );
+
+    TQRegion r(t.x(), 0, t.width(), 18);
+    r -= TQRect(t.x()+((t.width()-fm.width(caption()))/2)-4,
+               0, fm.width(caption())+8, 18);
+    p.setClipRegion(r);
+    int i, ly;
+    for(i=0, ly=4; i < 4; ++i, ly+=3){
+        p.setPen(options()->color(KDecorationOptions::ColorTitleBar, true).light(150));
+        p.drawLine(0, ly, width()-1, ly);
+        p.setPen(options()->color(KDecorationOptions::ColorTitleBar, true).dark(120));
+        p.drawLine(0, ly+1, width()-1, ly+1);
+    }
+    p.setClipRect(t);
+    p.setPen(options()->color(KDecorationOptions::ColorFont, true));
+    p.setFont(options()->font(true));
+
+    p.drawText(t.x()+((t.width()-fm.width(caption()))/2)-4,
+               0, fm.width(caption())+8, 18, AlignCenter, caption());
+    p.setClipping(false);
+    p.end();
+    oldTitle = caption();
+}
+
+void SystemClient::captionChange()
+{
+   recalcTitleBuffer();
+   widget()->tqrepaint(titlebar->tqgeometry(), false);
+}
+
+void SystemClient::drawRoundFrame(TQPainter &p, int x, int y, int w, int h)
+{
+   kDrawRoundButton(&p, x, y, w, h,
+                    options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()), false);
+
+}
+
+void SystemClient::paintEvent( TQPaintEvent* )
+{
+    TQPainter p(widget());
+    TQRect t = titlebar->tqgeometry();
+
+    TQBrush fillBrush(TQBrush(widget()->tqcolorGroup().brush(TQColorGroup::Background)).pixmap() ?
+                     widget()->tqcolorGroup().brush(TQColorGroup::Background) :
+                     options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).
+                     brush(TQColorGroup::Button));
+
+    p.fillRect(1, 18, width()-2, height()-19, fillBrush);
+
+    t.setTop( 2 );
+    t.setLeft( t.left() + 4 );
+    t.setRight( t.right() - 2 );
+
+    if(isActive())
+        p.drawPixmap(0, 0, titleBuffer);
+    else{
+        if(iUpperGradient)
+            p.drawTiledPixmap(0, 0, width(), 18, *iUpperGradient);
+        else
+            p.fillRect(0, 0, width(), 18, fillBrush);
+        p.setPen(options()->color(KDecorationOptions::ColorFont, isActive()));
+        p.setFont(options()->font(isActive()));
+        p.drawText(t, AlignCenter, caption() );
+    }
+
+    p.setPen(options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).light());
+    p.drawLine(width()-20, height()-7, width()-10,  height()-7);
+    p.drawLine(width()-20, height()-5, width()-10,  height()-5);
+    p.setPen(options()->tqcolorGroup(KDecorationOptions::ColorFrame, isActive()).dark());
+    p.drawLine(width()-20, height()-6, width()-10,  height()-6);
+    p.drawLine(width()-20, height()-4, width()-10,  height()-4);
+
+    drawRoundFrame(p, 0, 0, width(), height());
+}
+
+#define TQCOORDARRLEN(x) sizeof(x)/(sizeof(TQCOORD)*2)
+
+void SystemClient::doShape()
+{
+    // using a bunch of TQRect lines seems much more efficent than bitmaps or
+    // point arrays
+
+    TQRegion mask;
+    kRoundMaskRegion(mask, 0, 0, width(), height());
+    setMask(mask);
+}
+
+void SystemClient::showEvent(TQShowEvent *)
+{
+//    Client::showEvent(ev);
+    doShape();
+    widget()->show();
+//    widget()->tqrepaint();
+}
+
+/*void SystemClient::windowWrapperShowEvent( TQShowEvent* )
+{
+    doShape();
+}*/
+
+void SystemClient::mouseDoubleClickEvent( TQMouseEvent * e )
+{
+   if ( e->button() == Qt::LeftButton && titlebar->tqgeometry().contains( e->pos() ) )
+      titlebarDblClickOperation();
+}
+
+void SystemClient::wheelEvent( TQWheelEvent *e )
+{
+    if (isSetShade() || TQRect( 0, 0, width(), titlebar->tqgeometry().height() ).contains( e->pos() ) )
+        titlebarMouseWheelOperation( e->delta());
+}
+
+void SystemClient::maximizeChange()
+{
+    unsigned char *minmax_bits;
+    int l_max = KDecoration::options()->titleButtonsLeft().find('A');
+    if (KDecoration::options()->customButtonPositions() && (l_max>-1))
+        minmax_bits = l_minmax_bits;
+    else
+        minmax_bits = r_minmax_bits;
+    if (button[ButtonMaximize]) {
+        button[ButtonMaximize]->setBitmap((maximizeMode()==MaximizeFull) ? minmax_bits : maximize_bits);
+        button[ButtonMaximize]->setTipText((maximizeMode()==MaximizeFull) ? i18n("Restore") : i18n("Maximize"));
+    }
+}
+
+void SystemClient::activeChange()
+{
+    widget()->tqrepaint(false);
+    if (button[ButtonClose])
+        button[ButtonClose]->reset();
+    if (button[ButtonSticky])
+        button[ButtonSticky]->reset();
+    if (button[ButtonMinimize])
+        button[ButtonMinimize]->reset();
+    if (button[ButtonMaximize])
+        button[ButtonMaximize]->reset();
+    if (button[ButtonHelp])
+        button[ButtonHelp]->reset();
+}
+
+void SystemClient::iconChange()
+{
+//   if (button[BtnMenu] && button[BtnMenu]->isVisible())
+//      button[BtnMenu]->tqrepaint(false);
+}
+
+void SystemClient::desktopChange()
+{
+   if (button[ButtonSticky]) {
+       button[ButtonSticky]->setBitmap(isOnAllDesktops() ? unsticky_bits : sticky_bits);
+       button[ButtonSticky]->setTipText(isOnAllDesktops() ? i18n("Not on all desktops") : i18n("On all desktops"));
+   }
+}
+
+/*void SystemClient::stickyChange(bool on)
+{
+}*/
+
+KDecoration::Position SystemClient::mousePosition(const TQPoint &p) const
+{
+   return KDecoration::mousePosition(p);
+}
+
+void SystemClient::borders(int& left, int& right, int& top, int& bottom) const
+{
+    left = 4;
+    right = 4;
+    top =  18;
+    bottom = 8;
+
+/*    if ((maximizeMode()==MaximizeFull) && !options()->moveResizeMaximizedWindows()) {
+        left = right = bottom = 0;
+        top = 1 + titleHeight + (borderSize-1);
+    }*/
+}
+
+SystemDecoFactory::SystemDecoFactory()
+{
+   create_pixmaps();
+}
+
+SystemDecoFactory::~SystemDecoFactory()
+{
+   delete_pixmaps();
+}
+
+KDecoration *SystemDecoFactory::createDecoration( KDecorationBridge *b )
+{
+   return new SystemClient(b, this);
+}
+
+bool SystemDecoFactory::reset( unsigned long changed )
+{
+   System::delete_pixmaps();
+   System::create_pixmaps();
+   // Ensure changes in tooltip state get applied
+   resetDecorations(changed);
+   return true;
+}
+
+bool SystemDecoFactory::supports( Ability ability )
+{
+    switch( ability )
+    {
+        case AbilityAnnounceButtons:
+        case AbilityButtonOnAllDesktops:
+        case AbilityButtonHelp:
+        case AbilityButtonMinimize:
+        case AbilityButtonMaximize:
+        case AbilityButtonClose:
+            return true;
+        default:
+            return false;
+    };
+}
+
+TQValueList<KDecorationFactory::BorderSize> SystemDecoFactory::borderSizes() const
+{ // the list must be sorted
+   return TQValueList< BorderSize >() << BorderNormal;
+}
+
+}
+
+extern "C" KDE_EXPORT KDecorationFactory *create_factory()
+{
+   return new System::SystemDecoFactory();
+}
+
+#include "systemclient.moc"
diff --git a/twin-styles/system/systemclient.h b/twin-styles/system/systemclient.h
new file mode 100644
index 00000000..ecaf25ee
--- /dev/null
+++ b/twin-styles/system/systemclient.h
@@ -0,0 +1,113 @@
+#ifndef __SYSTEMCLIENT_H
+#define __SYSTEMCLIENT_H
+
+#include <tqvariant.h>
+#include <tqbitmap.h>
+#include <tqbutton.h>
+
+#include <kpixmap.h>
+#include <kdecoration.h>
+#include <kdecorationfactory.h>
+
+
+class TQLabel;
+class TQSpacerItem;
+class TQBoxLayout;
+
+namespace System {
+
+class SystemButton;
+
+enum ButtonType {
+    ButtonClose=0,
+    ButtonSticky,
+    ButtonMinimize,
+    ButtonMaximize,
+    ButtonHelp,
+    ButtonTypeCount
+};
+
+class SystemClient : public KDecoration
+{
+   Q_OBJECT
+  TQ_OBJECT
+   public:
+      SystemClient(KDecorationBridge* bridge, KDecorationFactory* factory);
+      ~SystemClient();
+      virtual Position mousePosition(const TQPoint& p) const;
+      virtual void resize(const TQSize&);
+      virtual bool eventFilter(TQObject* o, TQEvent* e);
+      virtual void init();
+   protected:
+      virtual void maximizeChange();
+      virtual void captionChange();
+      virtual void shadeChange() {};
+      virtual void iconChange();
+      virtual void desktopChange();
+      virtual void activeChange();
+      virtual TQSize tqminimumSize() const;
+      virtual void borders(int&, int&, int&, int&) const;
+      virtual void reset( unsigned long changed );
+      void drawRoundFrame(TQPainter &p, int x, int y, int w, int h);
+      void resizeEvent( TQResizeEvent* );
+      void paintEvent( TQPaintEvent* );
+      void showEvent( TQShowEvent* );
+      void mouseDoubleClickEvent( TQMouseEvent * );
+      void wheelEvent(TQWheelEvent *e);
+      void doShape();
+      void recalcTitleBuffer();
+   private:
+      void addButtons(TQBoxLayout* hb, const TQString& buttons);
+   private slots:
+      void maxButtonClicked();
+
+   private:
+      SystemButton* button[ButtonTypeCount];
+      TQSpacerItem* titlebar;
+      TQPixmap titleBuffer;
+      TQString oldTitle;
+};
+
+class SystemButton : public TQButton
+{
+   public:
+      SystemButton(SystemClient *parent=0, const char *name=0,
+                   const unsigned char *bitmap=NULL, const TQString& tip=NULL);
+      void setBitmap(const unsigned char *bitmap);
+      void reset();
+      TQSize tqsizeHint() const;
+      void setTipText(const TQString &tip);
+      ButtonState last_button;
+   protected:
+      virtual void drawButton(TQPainter *p);
+      void drawButtonLabel(TQPainter *){}
+      TQBitmap deco;
+
+      void mousePressEvent( TQMouseEvent* e );
+      void mouseReleaseEvent( TQMouseEvent* e );
+
+   private:
+      SystemClient* client;
+};
+
+
+class SystemDecoFactory : public TQObject, public KDecorationFactory
+{
+   Q_OBJECT
+  TQ_OBJECT
+   public:
+      SystemDecoFactory();
+      virtual ~SystemDecoFactory();
+      virtual KDecoration *createDecoration(KDecorationBridge *);
+      virtual bool reset(unsigned long);
+      virtual bool supports( Ability ability );
+      virtual TQValueList< BorderSize > borderSizes() const;
+   private:
+      void readConfig();
+};
+
+
+
+}
+
+#endif
-- 
cgit v1.2.3

