From 7ad9c00daa716f90e6b71af463c50eebc93f4250 Mon Sep 17 00:00:00 2001 From: Darrell Anderson Date: Thu, 6 Feb 2014 17:28:41 -0600 Subject: Finish renaming kiconedit->tdeiconedit. --- CMakeLists.txt | 4 +- README | 2 +- doc/kiconedit/CMakeLists.txt | 12 - doc/kiconedit/Makefile.am | 4 - doc/kiconedit/index.docbook | 1083 ----------- doc/kiconedit/kiconedit-configuration.png | Bin 31231 -> 0 bytes doc/tdeiconedit/CMakeLists.txt | 12 + doc/tdeiconedit/Makefile.am | 4 + doc/tdeiconedit/index.docbook | 1083 +++++++++++ doc/tdeiconedit/tdeiconedit-configuration.png | Bin 0 -> 31231 bytes kiconedit/AUTHORS | 10 - kiconedit/CMakeLists.txt | 42 - kiconedit/Makefile.am | 26 - kiconedit/NEWS | 68 - kiconedit/kcolorgrid.cpp | 335 ---- kiconedit/kcolorgrid.h | 105 -- kiconedit/kicon.cpp | 279 --- kiconedit/kicon.h | 79 - kiconedit/kiconcolors.cpp | 170 -- kiconedit/kiconcolors.h | 86 - kiconedit/kiconconfig.cpp | 589 ------ kiconedit/kiconconfig.h | 158 -- kiconedit/kiconedit.cpp | 497 ----- kiconedit/kiconedit.desktop | 95 - kiconedit/kiconedit.h | 158 -- kiconedit/kiconeditslots.cpp | 543 ------ kiconedit/kiconeditui.rc | 66 - kiconedit/kicongrid.cpp | 2263 ----------------------- kiconedit/kicongrid.h | 265 --- kiconedit/knew.cpp | 326 ---- kiconedit/knew.h | 168 -- kiconedit/kresize.cpp | 83 - kiconedit/kresize.h | 64 - kiconedit/main.cpp | 89 - kiconedit/palettetoolbar.cpp | 178 -- kiconedit/palettetoolbar.h | 64 - kiconedit/pics/CMakeLists.txt | 15 - kiconedit/pics/Makefile.am | 5 - kiconedit/pics/hi16-app-kiconedit.png | Bin 406 -> 0 bytes kiconedit/pics/hi22-app-kiconedit.png | Bin 1101 -> 0 bytes kiconedit/pics/hi32-app-kiconedit.png | Bin 853 -> 0 bytes kiconedit/pics/hi48-app-kiconedit.png | Bin 1187 -> 0 bytes kiconedit/pics/icons/CMakeLists.txt | 12 - kiconedit/pics/icons/Makefile.am | 5 - kiconedit/pics/icons/compressed.png | Bin 530 -> 0 bytes kiconedit/pics/icons/source.png | Bin 473 -> 0 bytes kiconedit/pics/icons/standard.png | Bin 611 -> 0 bytes kiconedit/pics/logo.xpm | 137 -- kiconedit/pics/toolbar/CMakeLists.txt | 20 - kiconedit/pics/toolbar/Makefile.am | 28 - kiconedit/pics/toolbar/aim-cursor.xpm | 28 - kiconedit/pics/toolbar/aim.png | Bin 303 -> 0 bytes kiconedit/pics/toolbar/airbrush-cursor.xpm | 35 - kiconedit/pics/toolbar/areaselect.png | Bin 290 -> 0 bytes kiconedit/pics/toolbar/circle.png | Bin 274 -> 0 bytes kiconedit/pics/toolbar/colorpicker-cursor.xpm | 36 - kiconedit/pics/toolbar/ellipse.png | Bin 257 -> 0 bytes kiconedit/pics/toolbar/eraser-cursor.xpm | 32 - kiconedit/pics/toolbar/fileclose.png | Bin 317 -> 0 bytes kiconedit/pics/toolbar/fill-cursor.xpm | 36 - kiconedit/pics/toolbar/filledcircle.png | Bin 279 -> 0 bytes kiconedit/pics/toolbar/filledellipse.png | Bin 262 -> 0 bytes kiconedit/pics/toolbar/filledrectangle.png | Bin 238 -> 0 bytes kiconedit/pics/toolbar/flood-cursor.xpm | 32 - kiconedit/pics/toolbar/flood.png | Bin 440 -> 0 bytes kiconedit/pics/toolbar/grayscale.png | Bin 449 -> 0 bytes kiconedit/pics/toolbar/grid.png | Bin 236 -> 0 bytes kiconedit/pics/toolbar/kdepalette.png | Bin 416 -> 0 bytes kiconedit/pics/toolbar/line.png | Bin 222 -> 0 bytes kiconedit/pics/toolbar/paintbrush-cursor.xpm | 36 - kiconedit/pics/toolbar/paintbrush.png | Bin 374 -> 0 bytes kiconedit/pics/toolbar/pointer.png | Bin 298 -> 0 bytes kiconedit/pics/toolbar/rectangle.png | Bin 246 -> 0 bytes kiconedit/pics/toolbar/selectcircle.png | Bin 274 -> 0 bytes kiconedit/pics/toolbar/selectrect.png | Bin 243 -> 0 bytes kiconedit/pics/toolbar/spraycan-cursor.xpm | 30 - kiconedit/pics/toolbar/spraycan.png | Bin 407 -> 0 bytes kiconedit/pics/toolbar/transform.png | Bin 409 -> 0 bytes kiconedit/pics/toolbar/window_new.png | Bin 799 -> 0 bytes kiconedit/properties.cpp | 147 -- kiconedit/properties.h | 82 - kiconedit/utils.cpp | 134 -- kiconedit/utils.h | 73 - kiconedit/version.h | 36 - tdeiconedit/AUTHORS | 10 + tdeiconedit/CMakeLists.txt | 42 + tdeiconedit/Makefile.am | 26 + tdeiconedit/NEWS | 68 + tdeiconedit/kcolorgrid.cpp | 335 ++++ tdeiconedit/kcolorgrid.h | 105 ++ tdeiconedit/knew.cpp | 326 ++++ tdeiconedit/knew.h | 168 ++ tdeiconedit/kresize.cpp | 83 + tdeiconedit/kresize.h | 64 + tdeiconedit/main.cpp | 89 + tdeiconedit/palettetoolbar.cpp | 178 ++ tdeiconedit/palettetoolbar.h | 64 + tdeiconedit/pics/CMakeLists.txt | 15 + tdeiconedit/pics/Makefile.am | 5 + tdeiconedit/pics/hi16-app-tdeiconedit.png | Bin 0 -> 406 bytes tdeiconedit/pics/hi22-app-tdeiconedit.png | Bin 0 -> 1101 bytes tdeiconedit/pics/hi32-app-tdeiconedit.png | Bin 0 -> 853 bytes tdeiconedit/pics/hi48-app-tdeiconedit.png | Bin 0 -> 1187 bytes tdeiconedit/pics/icons/CMakeLists.txt | 12 + tdeiconedit/pics/icons/Makefile.am | 5 + tdeiconedit/pics/icons/compressed.png | Bin 0 -> 530 bytes tdeiconedit/pics/icons/source.png | Bin 0 -> 473 bytes tdeiconedit/pics/icons/standard.png | Bin 0 -> 611 bytes tdeiconedit/pics/logo.xpm | 137 ++ tdeiconedit/pics/toolbar/CMakeLists.txt | 20 + tdeiconedit/pics/toolbar/Makefile.am | 28 + tdeiconedit/pics/toolbar/aim-cursor.xpm | 28 + tdeiconedit/pics/toolbar/aim.png | Bin 0 -> 303 bytes tdeiconedit/pics/toolbar/airbrush-cursor.xpm | 35 + tdeiconedit/pics/toolbar/areaselect.png | Bin 0 -> 290 bytes tdeiconedit/pics/toolbar/circle.png | Bin 0 -> 274 bytes tdeiconedit/pics/toolbar/colorpicker-cursor.xpm | 36 + tdeiconedit/pics/toolbar/ellipse.png | Bin 0 -> 257 bytes tdeiconedit/pics/toolbar/eraser-cursor.xpm | 32 + tdeiconedit/pics/toolbar/fileclose.png | Bin 0 -> 317 bytes tdeiconedit/pics/toolbar/fill-cursor.xpm | 36 + tdeiconedit/pics/toolbar/filledcircle.png | Bin 0 -> 279 bytes tdeiconedit/pics/toolbar/filledellipse.png | Bin 0 -> 262 bytes tdeiconedit/pics/toolbar/filledrectangle.png | Bin 0 -> 238 bytes tdeiconedit/pics/toolbar/flood-cursor.xpm | 32 + tdeiconedit/pics/toolbar/flood.png | Bin 0 -> 440 bytes tdeiconedit/pics/toolbar/grayscale.png | Bin 0 -> 449 bytes tdeiconedit/pics/toolbar/grid.png | Bin 0 -> 236 bytes tdeiconedit/pics/toolbar/kdepalette.png | Bin 0 -> 416 bytes tdeiconedit/pics/toolbar/line.png | Bin 0 -> 222 bytes tdeiconedit/pics/toolbar/paintbrush-cursor.xpm | 36 + tdeiconedit/pics/toolbar/paintbrush.png | Bin 0 -> 374 bytes tdeiconedit/pics/toolbar/pointer.png | Bin 0 -> 298 bytes tdeiconedit/pics/toolbar/rectangle.png | Bin 0 -> 246 bytes tdeiconedit/pics/toolbar/selectcircle.png | Bin 0 -> 274 bytes tdeiconedit/pics/toolbar/selectrect.png | Bin 0 -> 243 bytes tdeiconedit/pics/toolbar/spraycan-cursor.xpm | 30 + tdeiconedit/pics/toolbar/spraycan.png | Bin 0 -> 407 bytes tdeiconedit/pics/toolbar/transform.png | Bin 0 -> 409 bytes tdeiconedit/pics/toolbar/window_new.png | Bin 0 -> 799 bytes tdeiconedit/properties.cpp | 147 ++ tdeiconedit/properties.h | 82 + tdeiconedit/tdeicon.cpp | 279 +++ tdeiconedit/tdeicon.h | 79 + tdeiconedit/tdeiconcolors.cpp | 170 ++ tdeiconedit/tdeiconcolors.h | 86 + tdeiconedit/tdeiconconfig.cpp | 589 ++++++ tdeiconedit/tdeiconconfig.h | 158 ++ tdeiconedit/tdeiconedit.cpp | 497 +++++ tdeiconedit/tdeiconedit.desktop | 94 + tdeiconedit/tdeiconedit.h | 158 ++ tdeiconedit/tdeiconeditslots.cpp | 543 ++++++ tdeiconedit/tdeiconeditui.rc | 66 + tdeiconedit/tdeicongrid.cpp | 2263 +++++++++++++++++++++++ tdeiconedit/tdeicongrid.h | 265 +++ tdeiconedit/utils.cpp | 134 ++ tdeiconedit/utils.h | 73 + tdeiconedit/version.h | 36 + 158 files changed, 8866 insertions(+), 8867 deletions(-) delete mode 100644 doc/kiconedit/CMakeLists.txt delete mode 100644 doc/kiconedit/Makefile.am delete mode 100644 doc/kiconedit/index.docbook delete mode 100644 doc/kiconedit/kiconedit-configuration.png create mode 100644 doc/tdeiconedit/CMakeLists.txt create mode 100644 doc/tdeiconedit/Makefile.am create mode 100644 doc/tdeiconedit/index.docbook create mode 100644 doc/tdeiconedit/tdeiconedit-configuration.png delete mode 100644 kiconedit/AUTHORS delete mode 100644 kiconedit/CMakeLists.txt delete mode 100644 kiconedit/Makefile.am delete mode 100644 kiconedit/NEWS delete mode 100644 kiconedit/kcolorgrid.cpp delete mode 100644 kiconedit/kcolorgrid.h delete mode 100644 kiconedit/kicon.cpp delete mode 100644 kiconedit/kicon.h delete mode 100644 kiconedit/kiconcolors.cpp delete mode 100644 kiconedit/kiconcolors.h delete mode 100644 kiconedit/kiconconfig.cpp delete mode 100644 kiconedit/kiconconfig.h delete mode 100644 kiconedit/kiconedit.cpp delete mode 100644 kiconedit/kiconedit.desktop delete mode 100644 kiconedit/kiconedit.h delete mode 100644 kiconedit/kiconeditslots.cpp delete mode 100644 kiconedit/kiconeditui.rc delete mode 100644 kiconedit/kicongrid.cpp delete mode 100644 kiconedit/kicongrid.h delete mode 100644 kiconedit/knew.cpp delete mode 100644 kiconedit/knew.h delete mode 100644 kiconedit/kresize.cpp delete mode 100644 kiconedit/kresize.h delete mode 100644 kiconedit/main.cpp delete mode 100644 kiconedit/palettetoolbar.cpp delete mode 100644 kiconedit/palettetoolbar.h delete mode 100644 kiconedit/pics/CMakeLists.txt delete mode 100644 kiconedit/pics/Makefile.am delete mode 100644 kiconedit/pics/hi16-app-kiconedit.png delete mode 100644 kiconedit/pics/hi22-app-kiconedit.png delete mode 100644 kiconedit/pics/hi32-app-kiconedit.png delete mode 100644 kiconedit/pics/hi48-app-kiconedit.png delete mode 100644 kiconedit/pics/icons/CMakeLists.txt delete mode 100644 kiconedit/pics/icons/Makefile.am delete mode 100644 kiconedit/pics/icons/compressed.png delete mode 100644 kiconedit/pics/icons/source.png delete mode 100644 kiconedit/pics/icons/standard.png delete mode 100644 kiconedit/pics/logo.xpm delete mode 100644 kiconedit/pics/toolbar/CMakeLists.txt delete mode 100644 kiconedit/pics/toolbar/Makefile.am delete mode 100644 kiconedit/pics/toolbar/aim-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/aim.png delete mode 100644 kiconedit/pics/toolbar/airbrush-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/areaselect.png delete mode 100644 kiconedit/pics/toolbar/circle.png delete mode 100644 kiconedit/pics/toolbar/colorpicker-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/ellipse.png delete mode 100644 kiconedit/pics/toolbar/eraser-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/fileclose.png delete mode 100644 kiconedit/pics/toolbar/fill-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/filledcircle.png delete mode 100644 kiconedit/pics/toolbar/filledellipse.png delete mode 100644 kiconedit/pics/toolbar/filledrectangle.png delete mode 100644 kiconedit/pics/toolbar/flood-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/flood.png delete mode 100644 kiconedit/pics/toolbar/grayscale.png delete mode 100644 kiconedit/pics/toolbar/grid.png delete mode 100644 kiconedit/pics/toolbar/kdepalette.png delete mode 100644 kiconedit/pics/toolbar/line.png delete mode 100644 kiconedit/pics/toolbar/paintbrush-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/paintbrush.png delete mode 100644 kiconedit/pics/toolbar/pointer.png delete mode 100644 kiconedit/pics/toolbar/rectangle.png delete mode 100644 kiconedit/pics/toolbar/selectcircle.png delete mode 100644 kiconedit/pics/toolbar/selectrect.png delete mode 100644 kiconedit/pics/toolbar/spraycan-cursor.xpm delete mode 100644 kiconedit/pics/toolbar/spraycan.png delete mode 100644 kiconedit/pics/toolbar/transform.png delete mode 100644 kiconedit/pics/toolbar/window_new.png delete mode 100644 kiconedit/properties.cpp delete mode 100644 kiconedit/properties.h delete mode 100644 kiconedit/utils.cpp delete mode 100644 kiconedit/utils.h delete mode 100644 kiconedit/version.h create mode 100644 tdeiconedit/AUTHORS create mode 100644 tdeiconedit/CMakeLists.txt create mode 100644 tdeiconedit/Makefile.am create mode 100644 tdeiconedit/NEWS create mode 100644 tdeiconedit/kcolorgrid.cpp create mode 100644 tdeiconedit/kcolorgrid.h create mode 100644 tdeiconedit/knew.cpp create mode 100644 tdeiconedit/knew.h create mode 100644 tdeiconedit/kresize.cpp create mode 100644 tdeiconedit/kresize.h create mode 100644 tdeiconedit/main.cpp create mode 100644 tdeiconedit/palettetoolbar.cpp create mode 100644 tdeiconedit/palettetoolbar.h create mode 100644 tdeiconedit/pics/CMakeLists.txt create mode 100644 tdeiconedit/pics/Makefile.am create mode 100644 tdeiconedit/pics/hi16-app-tdeiconedit.png create mode 100644 tdeiconedit/pics/hi22-app-tdeiconedit.png create mode 100644 tdeiconedit/pics/hi32-app-tdeiconedit.png create mode 100644 tdeiconedit/pics/hi48-app-tdeiconedit.png create mode 100644 tdeiconedit/pics/icons/CMakeLists.txt create mode 100644 tdeiconedit/pics/icons/Makefile.am create mode 100644 tdeiconedit/pics/icons/compressed.png create mode 100644 tdeiconedit/pics/icons/source.png create mode 100644 tdeiconedit/pics/icons/standard.png create mode 100644 tdeiconedit/pics/logo.xpm create mode 100644 tdeiconedit/pics/toolbar/CMakeLists.txt create mode 100644 tdeiconedit/pics/toolbar/Makefile.am create mode 100644 tdeiconedit/pics/toolbar/aim-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/aim.png create mode 100644 tdeiconedit/pics/toolbar/airbrush-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/areaselect.png create mode 100644 tdeiconedit/pics/toolbar/circle.png create mode 100644 tdeiconedit/pics/toolbar/colorpicker-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/ellipse.png create mode 100644 tdeiconedit/pics/toolbar/eraser-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/fileclose.png create mode 100644 tdeiconedit/pics/toolbar/fill-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/filledcircle.png create mode 100644 tdeiconedit/pics/toolbar/filledellipse.png create mode 100644 tdeiconedit/pics/toolbar/filledrectangle.png create mode 100644 tdeiconedit/pics/toolbar/flood-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/flood.png create mode 100644 tdeiconedit/pics/toolbar/grayscale.png create mode 100644 tdeiconedit/pics/toolbar/grid.png create mode 100644 tdeiconedit/pics/toolbar/kdepalette.png create mode 100644 tdeiconedit/pics/toolbar/line.png create mode 100644 tdeiconedit/pics/toolbar/paintbrush-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/paintbrush.png create mode 100644 tdeiconedit/pics/toolbar/pointer.png create mode 100644 tdeiconedit/pics/toolbar/rectangle.png create mode 100644 tdeiconedit/pics/toolbar/selectcircle.png create mode 100644 tdeiconedit/pics/toolbar/selectrect.png create mode 100644 tdeiconedit/pics/toolbar/spraycan-cursor.xpm create mode 100644 tdeiconedit/pics/toolbar/spraycan.png create mode 100644 tdeiconedit/pics/toolbar/transform.png create mode 100644 tdeiconedit/pics/toolbar/window_new.png create mode 100644 tdeiconedit/properties.cpp create mode 100644 tdeiconedit/properties.h create mode 100644 tdeiconedit/tdeicon.cpp create mode 100644 tdeiconedit/tdeicon.h create mode 100644 tdeiconedit/tdeiconcolors.cpp create mode 100644 tdeiconedit/tdeiconcolors.h create mode 100644 tdeiconedit/tdeiconconfig.cpp create mode 100644 tdeiconedit/tdeiconconfig.h create mode 100644 tdeiconedit/tdeiconedit.cpp create mode 100644 tdeiconedit/tdeiconedit.desktop create mode 100644 tdeiconedit/tdeiconedit.h create mode 100644 tdeiconedit/tdeiconeditslots.cpp create mode 100644 tdeiconedit/tdeiconeditui.rc create mode 100644 tdeiconedit/tdeicongrid.cpp create mode 100644 tdeiconedit/tdeicongrid.h create mode 100644 tdeiconedit/utils.cpp create mode 100644 tdeiconedit/utils.h create mode 100644 tdeiconedit/version.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 680ae05d..93f62f04 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,7 @@ option( BUILD_KFAXVIEW "Build kfaxview" ${BUILD_ALL} ) option( BUILD_TDEFILE_PLUGINS "Build tdefile-plugins" ${BUILD_ALL} ) option( BUILD_KGAMMA "Build kgamma" ${BUILD_ALL} ) option( BUILD_KGHOSTVIEW "Build kghostview" ${BUILD_ALL} ) -option( BUILD_KICONEDIT "Build kiconedit" ${BUILD_ALL} ) +option( BUILD_TDEICONEDIT "Build tdeiconedit" ${BUILD_ALL} ) option( BUILD_KMRML "Build kmrml" ${BUILD_ALL} ) option( BUILD_KOLOURPAINT "Build kolourpaint" ${BUILD_ALL} ) option( BUILD_KOOKA "Build kooka" ${BUILD_ALL} ) @@ -133,7 +133,7 @@ tde_conditional_add_subdirectory( BUILD_KFAXVIEW kfaxview ) tde_conditional_add_subdirectory( BUILD_TDEFILE_PLUGINS tdefile-plugins ) tde_conditional_add_subdirectory( BUILD_KGAMMA kgamma ) tde_conditional_add_subdirectory( BUILD_KGHOSTVIEW kghostview ) -tde_conditional_add_subdirectory( BUILD_KICONEDIT kiconedit ) +tde_conditional_add_subdirectory( BUILD_TDEICONEDIT tdeiconedit ) tde_conditional_add_subdirectory( BUILD_KMRML kmrml ) tde_conditional_add_subdirectory( BUILD_KOLOURPAINT kolourpaint ) tde_conditional_add_subdirectory( BUILD_KOOKA kooka ) diff --git a/README b/README index d27e6b1d..38df853d 100644 --- a/README +++ b/README @@ -38,7 +38,7 @@ tdegraphics is a collection of graphic oriented applications: * kghostview Program (and embeddable KPart) to display *.pdf and *.ps -* kiconedit +* tdeiconedit An icon editor. * kmrml diff --git a/doc/kiconedit/CMakeLists.txt b/doc/kiconedit/CMakeLists.txt deleted file mode 100644 index 3322b562..00000000 --- a/doc/kiconedit/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -################################################# -# -# (C) 2010-2011 Serghei Amelian -# serghei (DOT) amelian (AT) gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -tde_create_handbook( DESTINATION kiconedit ) diff --git a/doc/kiconedit/Makefile.am b/doc/kiconedit/Makefile.am deleted file mode 100644 index 085981d9..00000000 --- a/doc/kiconedit/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ - -KDE_LANG = en -KDE_DOCS = AUTO - diff --git a/doc/kiconedit/index.docbook b/doc/kiconedit/index.docbook deleted file mode 100644 index 16f41f4c..00000000 --- a/doc/kiconedit/index.docbook +++ /dev/null @@ -1,1083 +0,0 @@ - - - - - -]> - - - -The &kiconedit; Manual - - -Thomas -Tanghus - -
&Thomas.Tanghus.mail;
-
-
- - - -
- - -1997 -&Thomas.Tanghus; - - -20012003 -&Lauri.Watts; - - - -&FDLNotice; - - -2005-12-10 -3.5.0 - - - -&kiconedit; is designed to help create icons for &kde; using the -standard icon palette. - - - - -KDE -tdegraphics -TDEIconEdit -icon - -
- - -Introduction - -
-&Thomas.Tanghus; -&Thomas.Tanghus.mail; - - -&kiconedit; is designed to help create icons for &kde; using the -standard icon palette. - - - -I hope you will find this program somehow useful and I would -appreciate any suggestions and comments. - - -
- -
- - -Onscreen Fundamentals - - -In this section will be briefly described the Icon Editor user -interface. - - - -The Icon Editor window is separated in five areas: main toolbar, tools -toolbar, statusbar, color palette and the grid, where you paint the icon. - - - -Main Toolbar - - - - -New - - -Create a new icon. If the current file has been -modified you will be asked if you want to save the changes. After that a -dialog will open where you can choose to create the icon from scratch or -from a template. - - - - - -Open - - -Open an existing icon file. - - - - - -Save - - -Save the currently open icon. - - - - - -Print - - -Print the icon. - - - - - -Undo -Undo the last action - - - -Redo -Redo the last action undone. If no actions have been -undone, this action is disabled. - - - -Cut - - -Cuts out the entire icon and put it onto the clipboard. - - - - - -Copy - - -Copies the entire icon to the clipboard. - - - - - -Paste - - -Paste the contents of the clipboard as a new image (if the -clipboard contains a valid icon). - - - - - -Zoom -Zoom In -Zoom Out - - -Zoom to predefined zoom factor, zoom in or zoom out. - - - - - -Resize - - -Resize icon to width X height. - - - - - -GrayScale - - -Gray scale the icon image. This may create colors not -conformant to the &kde; icon palette. - - - - - -Show Grid - - -Toggle grid on/off. - - - - - - - - -Tools Toolbar - - -This toolbar contains the tools you can use to manipulate the -icon. - - - - -Freehand - - -Draw free hand. - - - - - -Color Picker - - -Doesn't change the icon but changes the current drawcolor to the -color clicked on. - - - - - -Rectangle - - -Draw a rectangle. - - - - - -Filled Rectangle - - -Draw a filled rectangle. - - - - - -Circle - - -Draw a circle. - - - - - -Filled Circle - - -Draw a filled circle. - - - - - -Ellipse - - -Draw an ellipse - - - - - -Filled Ellipse - - -Draw a filled ellipse (almost the same thing as drawing -a circle.) - - - - - -Spray - - -Draws a randow dotted pattern like a spraycan. - - - - - -Flood Fill - - -Fill an area with the current color. - - - - - -Line - - -Draw a line. - - - - - -Eraser (Transparent) - - -Draw transparent (invisible). - - - - - -Rectangular Selection -Circular Selection - - -Select (mark) a part of the icon. - - - - - - - - -Grid - - -The grid is where you manipulate the icon contents. - - - - -Statusbar - - -The status bar keeps you informed of current operations. From left to -right, it tells you the x,y coordinates of the pixel you are working on, -the size of the current canvas, the zoom factor, and the current number -of colors in the icon. - - - - - - -The Menu Entries - - -The <guimenu>File</guimenu> Menu - - -The following functions are available from the File -menu: - - - - - - - -&Ctrl;N - -File -New - - - - -Lets you create a new icon, either from a template or -by specifying the size. - - - - - - - -File -New Window - - - - -Open a new Icon Editor window. - - - - - - - - -&Ctrl;O - -File -Open... - - - - -Open an existing icon file. - - - - - - - -File -Open Recent - - - - -Displays a list of recently opened icons to choose -from. - - - - - - - - -&Ctrl;S - -File -Save - - - - -Save the currently open icon. - - - - - - - -File -Save As... - - - - -Save the currently open icon under a new name. - - - - - - - - -&Ctrl;P - -File -Print... - - - - -Print the icon - - - - - - - - -&Ctrl;W - -File -Close - - - - -Close &kiconedit;. - - - - - - - - -The <guimenu>Edit</guimenu> Menu - - -The Edit menu contains the following entries: - - - - - -&Ctrl;Z -EditUndo - -Undo the last action - - - - -&Ctrl;&Shift;Z -EditRedo -Redo the last action undone. If no actions have been -undone, this action is disabled. - - - - - - -&Ctrl;X - -Edit -Cut - - - - -Cuts out the entire icon and put it onto the clipboard. - - - - - - - - -&Ctrl;C - -Edit -Copy - - - - -Copies the entire icon to the clipboard. - - - - - - - - -&Ctrl;V - -Edit -Paste - - - - -Paste the contents of the clipboard (if the clipboard contains a -valid icon). - - - - - - - -Edit -Paste as New - - - - -Paste the contents of the clipboard as a new image into a new Icon Editor window (if the -clipboard contains a valid icon). - - - - - - - -Edit -Clear - - - - -Clear the grid and fill it with transparent color. - - - - - - - - -&Ctrl;A - -Edit -Select All - - - - -Marks the entire icon as selected. - - - - - -EditResize... - - -Resize icon to width X height. - - - - - -EditGrayScale - -Gray scale the icon image. This may -create colors not conformant to the &kde; icon palette. - - - - - - - - -The <guimenu>View</guimenu> Menu - - - - - - -&Ctrl;+ -View -Zoom In - - - - -Magnify the view of the icon. - - - - - - - - -&Ctrl;- -View -Zoom Out - - - - -Shrink the view icon to a smaller screen size - - - - - - - -View -Zoom - - - -Zoom to a predefined zoom factor - - - - - - - -The <guimenu>Tools</guimenu> Menu - - - - - -Tools -Freehand - - - - -Draw free hand. - - - - - -ToolsColor -Picker -Select a color from the screen to use as the -foreground color. - - - - - -Tools -Rectangle - - - - -Draw a rectangle. - - - - - - - -Tools -Filled Rectangle - - - - -Draw a filled rectangle. - - - - - - - -Tools -Circle - - - - -Draw a circle. - - - - - - - -Tools -Filled Circle - - - - -Draw a filled circle. - - - - - - - -Tools -Ellipse - - - - -Draw an ellipse - - - - - - - -Tools -Filled Ellipse - - - - -Draw a filled ellipse (almost the same thing as drawing -a circle.) - - - - - - - -Tools -Spray - - - - -Draws a random dotted pattern like a spraycan. - - - - - - - -Tools -Flood Fill - - - - -Fill an area with the current color. - - - - - - - -Tools -Line - - - - -Draw a line. - - - - - - - -Tools -Eraser (Transparent) - - - -Draw transparent (invisible). - - - - -Tools -Rectangular Selection -Tools -Circular Selection -Select (mark) a part of the icon. - - - - - - - - - -The <guimenu>Settings</guimenu> Menu - - - - - - -Settings -Toolbars - - - - -Toggle on and off the display of the toolbars. - - - - - - -Settings -Show/Hide Statusbar - - - - -Toggle on and off the display of the status bar. - - - - - - -Settings -Show/Hide Grid - - - - -Toggle on and off the grid. - - - - -Settings -Configure Shortcuts... - -Opens a dialog where you can customize &kiconedit;'s -keyboard shortcuts. - - - - - -Settings -Configure &kiconedit;... - - - - -Opens the &kiconedit; configuration -dialog configuration dialog, described separately. - - - - - - - - - - -The <guimenu>Help</guimenu> Menu - -&help.menu.documentation; - - - - - -Configuration - - -Configuring &kiconedit; -Selecting the Settings -Configure &kiconedit;... menu item will -open a configuration dialog with the tree tabs Icon Templates, -Background and Icon Grid. - - -&kiconedit; configuration dialog - - -&kiconedit; configuration dialog - - - - -The <guilabel>Icon Templates</guilabel> Tab -Add..., Edit... and Remove -the templates for Standard File, Source File, -Compressed File &etc;. - - -The <guilabel>Background</guilabel> Tab -Select to Use color or to Use pixmap -as background. A Preview of your choice is displayed. - - -The <guilabel>Icon Grid</guilabel> Tab -Select to Paste transparent pixels or Show rulers -and set a Solid Color or a Checkerboard as -Transparency Display. -You can set the Checkerboard Size: to Small, -Medium or Large and choose Color 1: -and Color 2: of the checkerboard. - - - - - - -Credits and Licenses - - -&kiconedit; - - - -Program copyright &Thomas.Tanghus; tanghus@kde.org - - - -Contributors - - -John Califf jcaliff@compuzone.net - - - - -Laurent Montel lmontel@mandrakesoft.com - - -Aaron Seigo &Aaron.J.Seigo.mail; -Nadeem Hassan nhasan@nadmm.com - Rewrote UI to use -XMLGUI, Lots of fixes and cleanup -Adrian Page Adrian.Page@tesco.net - Bug Fixes and &GUI; tidy up. - - - - - - -&underFDL; -&underGPL; - - - - -Installation - - -How to obtain &kiconedit; - -&install.intro.documentation; - - - - -Compilation and Installation - -&install.compile.documentation; - - - - - - - -
- - - diff --git a/doc/kiconedit/kiconedit-configuration.png b/doc/kiconedit/kiconedit-configuration.png deleted file mode 100644 index 100a68cb..00000000 Binary files a/doc/kiconedit/kiconedit-configuration.png and /dev/null differ diff --git a/doc/tdeiconedit/CMakeLists.txt b/doc/tdeiconedit/CMakeLists.txt new file mode 100644 index 00000000..198859a5 --- /dev/null +++ b/doc/tdeiconedit/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2010-2011 Serghei Amelian +# serghei (DOT) amelian (AT) gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +tde_create_handbook( DESTINATION tdeiconedit ) diff --git a/doc/tdeiconedit/Makefile.am b/doc/tdeiconedit/Makefile.am new file mode 100644 index 00000000..085981d9 --- /dev/null +++ b/doc/tdeiconedit/Makefile.am @@ -0,0 +1,4 @@ + +KDE_LANG = en +KDE_DOCS = AUTO + diff --git a/doc/tdeiconedit/index.docbook b/doc/tdeiconedit/index.docbook new file mode 100644 index 00000000..9dd1ad61 --- /dev/null +++ b/doc/tdeiconedit/index.docbook @@ -0,0 +1,1083 @@ + + + + + +]> + + + +The &tdeiconedit; Manual + + +Thomas +Tanghus + +
&Thomas.Tanghus.mail;
+
+
+ + + +
+ + +1997 +&Thomas.Tanghus; + + +20012003 +&Lauri.Watts; + + + +&FDLNotice; + + +2005-12-10 +3.5.0 + + + +&tdeiconedit; is designed to help create icons for &kde; using the +standard icon palette. + + + + +KDE +tdegraphics +TDEIconEdit +icon + +
+ + +Introduction + +
+&Thomas.Tanghus; +&Thomas.Tanghus.mail; + + +&tdeiconedit; is designed to help create icons for &kde; using the +standard icon palette. + + + +I hope you will find this program somehow useful and I would +appreciate any suggestions and comments. + + +
+ +
+ + +Onscreen Fundamentals + + +In this section will be briefly described the Icon Editor user +interface. + + + +The Icon Editor window is separated in five areas: main toolbar, tools +toolbar, statusbar, color palette and the grid, where you paint the icon. + + + +Main Toolbar + + + + +New + + +Create a new icon. If the current file has been +modified you will be asked if you want to save the changes. After that a +dialog will open where you can choose to create the icon from scratch or +from a template. + + + + + +Open + + +Open an existing icon file. + + + + + +Save + + +Save the currently open icon. + + + + + +Print + + +Print the icon. + + + + + +Undo +Undo the last action + + + +Redo +Redo the last action undone. If no actions have been +undone, this action is disabled. + + + +Cut + + +Cuts out the entire icon and put it onto the clipboard. + + + + + +Copy + + +Copies the entire icon to the clipboard. + + + + + +Paste + + +Paste the contents of the clipboard as a new image (if the +clipboard contains a valid icon). + + + + + +Zoom +Zoom In +Zoom Out + + +Zoom to predefined zoom factor, zoom in or zoom out. + + + + + +Resize + + +Resize icon to width X height. + + + + + +GrayScale + + +Gray scale the icon image. This may create colors not +conformant to the &kde; icon palette. + + + + + +Show Grid + + +Toggle grid on/off. + + + + + + + + +Tools Toolbar + + +This toolbar contains the tools you can use to manipulate the +icon. + + + + +Freehand + + +Draw free hand. + + + + + +Color Picker + + +Doesn't change the icon but changes the current drawcolor to the +color clicked on. + + + + + +Rectangle + + +Draw a rectangle. + + + + + +Filled Rectangle + + +Draw a filled rectangle. + + + + + +Circle + + +Draw a circle. + + + + + +Filled Circle + + +Draw a filled circle. + + + + + +Ellipse + + +Draw an ellipse + + + + + +Filled Ellipse + + +Draw a filled ellipse (almost the same thing as drawing +a circle.) + + + + + +Spray + + +Draws a randow dotted pattern like a spraycan. + + + + + +Flood Fill + + +Fill an area with the current color. + + + + + +Line + + +Draw a line. + + + + + +Eraser (Transparent) + + +Draw transparent (invisible). + + + + + +Rectangular Selection +Circular Selection + + +Select (mark) a part of the icon. + + + + + + + + +Grid + + +The grid is where you manipulate the icon contents. + + + + +Statusbar + + +The status bar keeps you informed of current operations. From left to +right, it tells you the x,y coordinates of the pixel you are working on, +the size of the current canvas, the zoom factor, and the current number +of colors in the icon. + + + + + + +The Menu Entries + + +The <guimenu>File</guimenu> Menu + + +The following functions are available from the File +menu: + + + + + + + +&Ctrl;N + +File +New + + + + +Lets you create a new icon, either from a template or +by specifying the size. + + + + + + + +File +New Window + + + + +Open a new Icon Editor window. + + + + + + + + +&Ctrl;O + +File +Open... + + + + +Open an existing icon file. + + + + + + + +File +Open Recent + + + + +Displays a list of recently opened icons to choose +from. + + + + + + + + +&Ctrl;S + +File +Save + + + + +Save the currently open icon. + + + + + + + +File +Save As... + + + + +Save the currently open icon under a new name. + + + + + + + + +&Ctrl;P + +File +Print... + + + + +Print the icon + + + + + + + + +&Ctrl;W + +File +Close + + + + +Close &tdeiconedit;. + + + + + + + + +The <guimenu>Edit</guimenu> Menu + + +The Edit menu contains the following entries: + + + + + +&Ctrl;Z +EditUndo + +Undo the last action + + + + +&Ctrl;&Shift;Z +EditRedo +Redo the last action undone. If no actions have been +undone, this action is disabled. + + + + + + +&Ctrl;X + +Edit +Cut + + + + +Cuts out the entire icon and put it onto the clipboard. + + + + + + + + +&Ctrl;C + +Edit +Copy + + + + +Copies the entire icon to the clipboard. + + + + + + + + +&Ctrl;V + +Edit +Paste + + + + +Paste the contents of the clipboard (if the clipboard contains a +valid icon). + + + + + + + +Edit +Paste as New + + + + +Paste the contents of the clipboard as a new image into a new Icon Editor window (if the +clipboard contains a valid icon). + + + + + + + +Edit +Clear + + + + +Clear the grid and fill it with transparent color. + + + + + + + + +&Ctrl;A + +Edit +Select All + + + + +Marks the entire icon as selected. + + + + + +EditResize... + + +Resize icon to width X height. + + + + + +EditGrayScale + +Gray scale the icon image. This may +create colors not conformant to the &kde; icon palette. + + + + + + + + +The <guimenu>View</guimenu> Menu + + + + + + +&Ctrl;+ +View +Zoom In + + + + +Magnify the view of the icon. + + + + + + + + +&Ctrl;- +View +Zoom Out + + + + +Shrink the view icon to a smaller screen size + + + + + + + +View +Zoom + + + +Zoom to a predefined zoom factor + + + + + + + +The <guimenu>Tools</guimenu> Menu + + + + + +Tools +Freehand + + + + +Draw free hand. + + + + + +ToolsColor +Picker +Select a color from the screen to use as the +foreground color. + + + + + +Tools +Rectangle + + + + +Draw a rectangle. + + + + + + + +Tools +Filled Rectangle + + + + +Draw a filled rectangle. + + + + + + + +Tools +Circle + + + + +Draw a circle. + + + + + + + +Tools +Filled Circle + + + + +Draw a filled circle. + + + + + + + +Tools +Ellipse + + + + +Draw an ellipse + + + + + + + +Tools +Filled Ellipse + + + + +Draw a filled ellipse (almost the same thing as drawing +a circle.) + + + + + + + +Tools +Spray + + + + +Draws a random dotted pattern like a spraycan. + + + + + + + +Tools +Flood Fill + + + + +Fill an area with the current color. + + + + + + + +Tools +Line + + + + +Draw a line. + + + + + + + +Tools +Eraser (Transparent) + + + +Draw transparent (invisible). + + + + +Tools +Rectangular Selection +Tools +Circular Selection +Select (mark) a part of the icon. + + + + + + + + + +The <guimenu>Settings</guimenu> Menu + + + + + + +Settings +Toolbars + + + + +Toggle on and off the display of the toolbars. + + + + + + +Settings +Show/Hide Statusbar + + + + +Toggle on and off the display of the status bar. + + + + + + +Settings +Show/Hide Grid + + + + +Toggle on and off the grid. + + + + +Settings +Configure Shortcuts... + +Opens a dialog where you can customize &tdeiconedit;'s +keyboard shortcuts. + + + + + +Settings +Configure &tdeiconedit;... + + + + +Opens the &tdeiconedit; configuration +dialog configuration dialog, described separately. + + + + + + + + + + +The <guimenu>Help</guimenu> Menu + +&help.menu.documentation; + + + + + +Configuration + + +Configuring &tdeiconedit; +Selecting the Settings +Configure &tdeiconedit;... menu item will +open a configuration dialog with the tree tabs Icon Templates, +Background and Icon Grid. + + +&tdeiconedit; configuration dialog + + +&tdeiconedit; configuration dialog + + + + +The <guilabel>Icon Templates</guilabel> Tab +Add..., Edit... and Remove +the templates for Standard File, Source File, +Compressed File &etc;. + + +The <guilabel>Background</guilabel> Tab +Select to Use color or to Use pixmap +as background. A Preview of your choice is displayed. + + +The <guilabel>Icon Grid</guilabel> Tab +Select to Paste transparent pixels or Show rulers +and set a Solid Color or a Checkerboard as +Transparency Display. +You can set the Checkerboard Size: to Small, +Medium or Large and choose Color 1: +and Color 2: of the checkerboard. + + + + + + +Credits and Licenses + + +&tdeiconedit; + + + +Program copyright &Thomas.Tanghus; tanghus@kde.org + + + +Contributors + + +John Califf jcaliff@compuzone.net + + + + +Laurent Montel lmontel@mandrakesoft.com + + +Aaron Seigo &Aaron.J.Seigo.mail; +Nadeem Hassan nhasan@nadmm.com - Rewrote UI to use +XMLGUI, Lots of fixes and cleanup +Adrian Page Adrian.Page@tesco.net - Bug Fixes and &GUI; tidy up. + + + + + + +&underFDL; +&underGPL; + + + + +Installation + + +How to obtain &tdeiconedit; + +&install.intro.documentation; + + + + +Compilation and Installation + +&install.compile.documentation; + + + + + + + +
+ + + diff --git a/doc/tdeiconedit/tdeiconedit-configuration.png b/doc/tdeiconedit/tdeiconedit-configuration.png new file mode 100644 index 00000000..100a68cb Binary files /dev/null and b/doc/tdeiconedit/tdeiconedit-configuration.png differ diff --git a/kiconedit/AUTHORS b/kiconedit/AUTHORS deleted file mode 100644 index dd2047ae..00000000 --- a/kiconedit/AUTHORS +++ /dev/null @@ -1,10 +0,0 @@ -Copyright 1998 by Thomas Tanghus -Copyright 2000 by John Califf - -Original Author: - Thomas Tanghus - -Current Maintainers: - John Califf - Laurent Montel - diff --git a/kiconedit/CMakeLists.txt b/kiconedit/CMakeLists.txt deleted file mode 100644 index 285760ce..00000000 --- a/kiconedit/CMakeLists.txt +++ /dev/null @@ -1,42 +0,0 @@ -################################################# -# -# (C) 2010-2011 Calvin Morrison -# mutantturkey@gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -add_subdirectory ( pics ) - -include_directories( - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_BINARY_DIR} - ${TDE_INCLUDE_DIR} - ${TQT_INCLUDE_DIRS} -) - -link_directories( - ${TQT_LIBRARY_DIRS} -) - - -#### other data ################################# - -install( FILES kiconedit.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) -install( FILES kiconeditui.rc DESTINATION ${DATA_INSTALL_DIR}/kiconedit ) - - -#### kiconedit (executable) ##################### - -tde_add_executable( kiconedit AUTOMOC - SOURCES - utils.cpp main.cpp kiconedit.cpp kicongrid.cpp - kiconcolors.cpp kcolorgrid.cpp palettetoolbar.cpp - kicon.cpp kresize.cpp knew.cpp properties.cpp - kiconeditslots.cpp kiconconfig.cpp - LINK tdeio-shared tdeprint-shared - DESTINATION ${BIN_INSTALL_DIR} -) diff --git a/kiconedit/Makefile.am b/kiconedit/Makefile.am deleted file mode 100644 index 2ba3505b..00000000 --- a/kiconedit/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -INCLUDES = $(all_includes) -SUBDIRS = pics - -bin_PROGRAMS = kiconedit - -kiconedit_SOURCES = utils.cpp main.cpp kiconedit.cpp kicongrid.cpp \ - kiconcolors.cpp kcolorgrid.cpp palettetoolbar.cpp\ - kicon.cpp kresize.cpp knew.cpp properties.cpp \ - kiconeditslots.cpp kiconconfig.cpp - -kiconedit_METASOURCES = AUTO - -# the library search path. -kiconedit_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor -kiconedit_LDADD = $(LIB_TDEFILE) -ltdeprint - -DISTCLEANFILES = *~ .deps/* .libs/* - -rcdir = $(kde_datadir)/kiconedit -rc_DATA = kiconeditui.rc - -xdg_apps_DATA = kiconedit.desktop - -messages: rc.cpp - $(XGETTEXT) rc.cpp $(kiconedit_SOURCES) -o $(podir)/kiconedit.pot - diff --git a/kiconedit/NEWS b/kiconedit/NEWS deleted file mode 100644 index 5f5b23fe..00000000 --- a/kiconedit/NEWS +++ /dev/null @@ -1,68 +0,0 @@ -KDE Icon Editor -_______________ - ------------------------------------------------------------------------------- - News and fixes in version 0.4.0: ------------------------------------------------------------------------------- - - Enabled loading other image types than XPM. - - Repainting large pictures is very much faster now. - - Added drop site indication when using XDND. - - Added QWhatsThis help (this is great!). - - Started playing with XDND. The toolbar now has a drag source and the grid - supports both XDND and KDND. - - Added rulers (can be toggled from the configuration dialog). - - Circular selection. - - Configuration dialog: - - Shortcut keys. - - Appearance. - - Templates. - - Miscellaneous (paste mode, show rulers etc.). - ------------------------------------------------------------------------------- - News and fixes in version 0.3.2: ------------------------------------------------------------------------------- - - German translations. (thanks to Gregor Zumstein ) - - Solaris didn't like TRANSPARENT definition. (thanks to Alastair Burt ) - - Crashed on empty string in strlen. (thanks to Alastair Burt ) - - Russian translations (thanks to Andy Pershin ) - ------------------------------------------------------------------------------- - News and fixes in version 0.3.1: ------------------------------------------------------------------------------- - - Icon templates installed in the wrong directory. - - Templates didn't load. - ------------------------------------------------------------------------------- - News and fixes in version 0.3: ------------------------------------------------------------------------------- - - Complete rewrite of the drawing grid. Should now be faster and more flexible. - - New class TDEIcon for file manipulation. - - The "Line" tool can now draw 45 dgr. angles. - - Smooth resizing of icons if linked with QT >= 1.40. - - Improved loading/saving images with transparent pixels. - - Loading and saving should now work on non-local files. - ------------------------------------------------------------------------------- - News and fixes in version 0.2: ------------------------------------------------------------------------------- - - Saves restore file when closed by session management or by crash. - - Fixed multi instance handling. - - Added toolbar button for creating new instances. - - Added danish translation. - - Added statusbar field for messages. - - Saves window size. - - Couldn't toggle grid from the menu. - - Added "Toggle toolbar", "Toggle drawing tools" and "Toggle statusbar" to the - "View" menu. This as well as the *Bar positions is saved between sessions. - - Grid state and zoom factor saved between sessions. - - The clipboard is checked with short intervals to check if there's a pixmap. - - The cursor hotspots are now correct. - - Cursor position is shown in the statusbar. - - Removed a lot of memory leaks and made the general memory footprint some smaller. - - New tools: "Find pixel", "Flood Fill", "Filled Circle" and "Filled Ellipse". - - Clipboard now supports selection of regions and inserting into existing image. - - Speeded up loading of pixmaps by some thousand percents ;-) - - Preview has scrollbars if it doesn't fit. - - - diff --git a/kiconedit/kcolorgrid.cpp b/kiconedit/kcolorgrid.cpp deleted file mode 100644 index 65d766c9..00000000 --- a/kiconedit/kcolorgrid.cpp +++ /dev/null @@ -1,335 +0,0 @@ -/* - kiconedit - a small graphics drawing program for creating KDE icons - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include - -#include - -#include "kcolorgrid.h" - -void KColorArray::remove(int idx) -{ - int oldsize = size(); - if(idx >= (int)size()) - { - kdWarning() << "KColorArray::remove: Index " << idx << " out of range" << endl; - return; - } - KColorArray tmp(*this); - tmp.detach(); - resize(size()-1); - for(int i = idx; i < oldsize-1; i++) - at(i) = tmp[i+1]; - //kdDebug(4640) << "KColorArray::remove() " << at(idx) << "\t-\tsize: " << size() << endl; -} - -void KColorArray::append(uint c) -{ - resize(size()+1); - at(size()-1) = c; - //kdDebug(4640) << "KColorArray::append() " << c << "\t-\tsize: " << size() << endl; -} - -uint KColorArray::closestMatch(uint color) -{ - //kdDebug(4640) << "KColorArray: " << c << endl; - uint c = color & ~OPAQUE_MASK, d = 0xffffff, t; - //kdDebug(4640) << "KColorArray: " << c << endl; - //kdDebug(4640) << "KColorArray: " << c|OPAQUE_MASK << endl; - uint cb = c; - for(uint i = 0; i < size(); i++) - { - if (at(i) > cb) - t = at(i) - cb; - else - t = cb - at(i); - if( t < d ) - { - d = t; - c = at(i); - } - } - return c|OPAQUE_MASK; -} - -KColorGrid::KColorGrid(TQWidget *parent, const char *name, int space) - : TQWidget(parent, name, TQt::WResizeNoErase|TQt::WRepaintNoErase) -{ - //kdDebug(4640) << "KColorGrid - constructor" << endl; - s = space; - rows = cols = totalwidth = totalheight = 0; - setCellSize(10); - setGridState(Plain); - setGrid(true); - numcolors.resize(0); - gridcolors.resize(0); - - //kdDebug(4640) << "KColorGrid - constructor - done" << endl; -} -/* -void KColorGrid::show() -{ - //updateScrollBars(); - TQWidget::show(); -} -*/ -void KColorGrid::paintEvent(TQPaintEvent *e) -{ - //kdDebug(4640) << "KColorGrid::paintEvent" << endl; - - //updateScrollBars(); - //TQWidget::paintEvent(e); - - const TQRect urect = e->rect(); - - //kdDebug(4640) << "Update rect = ( " << //urect.left() << ", " << urect.top() << ", " << urect.width() << ", " << urect.height() << " )" << endl; - - - int firstcol = getX(urect.x())-1; - int firstrow = getY(urect.y())-1; - int lastcol = getX(urect.right())+1; - int lastrow = getY(urect.bottom())+1; - - TQWMatrix matrix; - TQPixmap pm(urect.width(),urect.height()); - pm.fill(paletteBackgroundColor()); - TQPainter p; - p.begin( &pm ); - - firstrow = (firstrow < 0) ? 0 : firstrow; - firstcol = (firstcol < 0) ? 0 : firstcol; - lastrow = (lastrow >= rows) ? rows : lastrow; - lastcol = (lastcol >= cols) ? cols : lastcol; - //kdDebug(4640) << urect.x() << " x " << urect.y() << " - row: " << urect.width() << " x " << urect.height() << endl; - //kdDebug(4640) << "col: " << firstcol << " -> " << lastcol << " - row: " << firstrow << " -> " << lastrow << endl; - -/* - if(this->isA("KDrawGrid")) - kdDebug(4640) << "KDrawGrid\n firstcol: " << firstcol << "\n lastcol: " << lastcol << "\n firstrow: " << firstrow << "\n lastrow: " << lastrow << endl; -*/ - for(int i = firstrow; i < lastrow; i++) - { - //if(this->isA("KDrawGrid")) - // kdDebug(4640) << "Updating row " << i << endl; - for(int j = firstcol; j < lastcol; j++) - { - matrix.translate( (j*cellsize)-urect.x(), (i*cellsize)-urect.y() ); - p.setWorldMatrix( matrix ); - //p.setClipRect(j*cellsize, i*cellsize, cellsize, cellsize); - paintCell(&p, i, j); - //p.setClipping(FALSE); - matrix.reset(); - p.setWorldMatrix( matrix ); - } - //kapp->processEvents(); - } - - matrix.translate(-urect.x(),-urect.y()); - p.setWorldMatrix( matrix ); - paintForeground(&p,e); - - p.end(); - - bitBlt(this,urect.topLeft(),&pm,TQRect(0,0,pm.width(),pm.height())); - -} - -void KColorGrid::paintForeground(TQPainter* , TQPaintEvent* ) -{ -} - -/* -void KColorGrid::resizeEvent(TQResizeEvent *) -{ - //kdDebug(4640) << "resize: width: " << width() << " - total: " << totalwidth << endl; - //kdDebug(4640) << "resize: height: " << height() << " - total: " << totalheight << endl; -} -*/ - -TQSize KColorGrid::sizeHint() const -{ - return TQSize(totalwidth, totalheight); -} - -int KColorGrid::getY( int y ) -{ - if(y > (totalheight-1)) - y = totalheight; - if(cellsize == 1) - return y; - return (y/cellsize); -} - -int KColorGrid::getX( int x ) -{ - if( x > totalwidth-1) - x = totalwidth; - if(cellsize == 1) - return x; - return (x/cellsize); -} - -const TQRect KColorGrid::viewRect() -{ - //kdDebug(4640) << "viewRect" << endl; - const TQRect r(0, 0, width(), height()); - //kdDebug(4640) << "viewRect - " << x << " x " << y << " - " << w << " x " << h << endl; - return r; -} - -void KColorGrid::setNumRows(int n) -{ - //kdDebug(4640) << "setNumRows" << endl; - if(n < 0 || n == rows) - return; - - rows = n; - - gridcolors.resize(n*numCols()); - //TQTableView::setNumRows(n); - totalheight = (n * cellsize) + 1; - resize(totalwidth, totalheight); - //kdDebug(4640) << "setNumRows() - gridcolors: " << gridcolors.size() << " size: " << numCols()*numRows() << endl; -} - -void KColorGrid::setNumCols(int n) -{ - //kdDebug(4640) << "setNumCols" << endl; - if(n < 0) - return; - int on = numCols(); - KColorArray gc(gridcolors); - gc.detach(); - //kdDebug(4640) << "gc size: " << gc.size() << " numrows: " << numRows() << endl; - gridcolors.resize(n*numRows()); - cols = n; - - totalwidth = (n * cellsize) + 1; - resize(totalwidth, totalheight); - //kdDebug(4640) << "numRows: " << numRows() << endl; - //kdDebug(4640) << "gridcolor: " << gridcolors.size() << " grid: " << numRows()*numCols() << endl; - if(numRows() == 0) - return; - - for(int i = 0; i < numRows(); i++) - { - for(int j = 0; j < n; j++) - { - //kdDebug(4640) << "row " << i << " , col " << j << endl; - if(j < on ) //If there's something to read here -- i.e. we're within the original grid - { - //kdDebug(4640) << (i*numCols())+j << " " << (i*on)+j << endl; - gridcolors.at((i*numCols())+j) = gc.at((i*on)+j); - } - else //Initialize to something.. - { - if (gc.size()) //Have some pixels originally.. - gridcolors.at((i*numCols())+j) = gc.at(0); - else - gridcolors.at((i*numCols())+j) = 0; //Picks something #### Update numcolors? - } - } - } - - //kdDebug(4640) << "setNumCols() - gridcolors: " << gridcolors.size() << " size: " << numCols()*numRows() << endl; -} - -void KColorGrid::fill( uint color) -{ - gridcolors.fill(color); - numcolors.resize(1); - numcolors.at(0) = color; - emit colorschanged(numcolors.size(), numcolors.data()); -} - -void KColorGrid::setColor( int colNum, uint col, bool update ) -{ - //kdDebug(4640) << "KColorGrid::setColor" << endl; - uint oldcolor = gridcolors[colNum]; - gridcolors[colNum] = col; - - if(!update) - return; - - //kdDebug(4640) << "KColorGrid::setColor - before adding" << endl; - if(!numcolors.contains(col)) - { - //kdDebug(4640) << "KColorGrid::setColor() - adding " << // col << " - " << tqRed(col) << " " << tqGreen(col) << " " << tqBlue(col) << endl; - numcolors.append(col); - //kdDebug(4640) << "KColorGrid::setColor() - adding done " << numcolors.size()-1 << endl; - //numcolors++; - emit addingcolor(col); - } - - //kdDebug(4640) << "KColorGrid::setColor - before removing" << endl; - if(!gridcolors.contains(oldcolor)) - { - int idx = numcolors.find(oldcolor); - if(idx != -1) - { - //kdDebug(4640) << "KColorGrid::setColor() - removing " << // oldcolor << " - " << tqRed(oldcolor) << " " << tqGreen(oldcolor) << " " << tqBlue(oldcolor) << endl; - numcolors.remove(idx); - //kdDebug(4640) << "KColorGrid::setColor() - removing done" << endl; - emit colorschanged(numcolors.size(), numcolors.data()); - } - //numcolors--; - } - - //kdDebug(4640) << "KColorGrid::setColor - before updateCell" << endl; - repaint((colNum%numCols())*cellsize,(colNum/numCols())*cellsize, cellsize, cellsize); - //updateCell( colNum/numCols(), colNum%numCols(), false ); - //kdDebug(4640) << "KColorGrid::setColor - after updateCell" << endl; -} - -void KColorGrid::updateCell( int row, int col, bool ) -{ - //kdDebug(4640) << "updateCell - before repaint" << endl; - TQWMatrix matrix; - TQPainter p; - p.begin( this ); - matrix.translate( (col*cellsize), (row*cellsize) ); - p.setWorldMatrix( matrix ); - paintCell(&p, row, col); - p.end(); - -} - -void KColorGrid::updateColors() -{ - numcolors.resize(0); - for(int i = 0; i < (int)gridcolors.size(); i++) - { - uint col = gridcolors.at(i); - if(!numcolors.contains(col)) - numcolors.append(col); - } - emit colorschanged(numcolors.size(), numcolors.data()); -} - -void KColorGrid::setCellSize( int s ) -{ - cellsize = s; - totalwidth = (numCols() * s) + 1; - totalheight = (numRows() * s) + 1; - resize(totalwidth, totalheight); - if ( isVisible() ) - repaint(viewRect(), false); -} -#include "kcolorgrid.moc" diff --git a/kiconedit/kcolorgrid.h b/kiconedit/kcolorgrid.h deleted file mode 100644 index 15c69bc6..00000000 --- a/kiconedit/kcolorgrid.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - kiconedit - a small graphics drawing program for creating KDE icons - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KCOLORGRID_H__ -#define __KCOLORGRID_H__ - -#include -#include -#include - -#include "utils.h" - -#define KArrayUint TQMemArray - -class KColorArray : public KArrayUint -{ -public: - void remove(int idx); - void append(uint); - uint closestMatch(uint); -}; - -class KColorGrid : public TQWidget -{ -private: - Q_OBJECT - -public: - KColorGrid( TQWidget * parent = 0, const char *name = 0, int spacing = 0); - virtual ~KColorGrid() {}; - - enum GridState { Plain, Shaded }; - - void setSpacing(int space) { s = space; update(); } - void setGridState(GridState state) { gridstate = state;} - GridState gridState() { return gridstate; } - void setGrid(bool state) { hasgrid = state; } - int spacing() { return s; } - bool hasGrid() { return hasgrid; } - uint numColors() { return numcolors.size(); } - uint colors( uint *c ) { c = numcolors.data(); return numcolors.size(); } - bool contains(uint c) { return numcolors.contains(c); } - uint colorAt(int idx) { return gridcolors.at(idx); } - uint *data() {return numcolors.data(); } - void fill(uint color); - int numCols() { return cols; } - int numRows() { return rows; } - - virtual void setCellSize( int s ); - virtual int cellSize() { return cellsize; } - virtual TQSize sizeHint() const; - - void setSize(const TQSize s) { setNumRows(s.height()); setNumCols(s.width()); } - -public slots: - //virtual void show(); - -signals: - void addingcolor(uint); - void colorschanged(uint, uint*); - -protected: - void updateCell(int row, int col, bool f); - virtual void paintForeground( TQPainter* p, TQPaintEvent* e); - virtual void paintCell( TQPainter *p, int row, int col) = 0; - virtual void paintEvent(TQPaintEvent *); - //virtual void resizeEvent(TQResizeEvent *); - void setColor(int colNum, uint, bool update = true ); - void updateColors(); - virtual void setNumRows(int); - virtual void setNumCols(int); - virtual int totalWidth() { return totalwidth; } - virtual int totalHeight() { return totalheight; } - int findRow(int y) { return getY(y); } - int getY(int y); - int findCol(int x) { return getX(x); } - int getX(int x); - const TQRect viewRect(); - -//private: - int s, cellsize, totalwidth, totalheight; - int rows, cols, ypos, xpos; - GridState gridstate; - bool hasgrid; - KColorArray gridcolors, numcolors; -}; - -#endif //__KCOLORGRID_H__ diff --git a/kiconedit/kicon.cpp b/kiconedit/kicon.cpp deleted file mode 100644 index 296dc9a3..00000000 --- a/kiconedit/kicon.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include "kicon.h" -#include "utils.h" - -TDEIconEditIcon::TDEIconEditIcon(TQObject *parent, const TQImage *img, KURL url) - : TQObject(parent) -{ - f = 0; - _lastdir = "/"; - //checkUnNamedBackup(img); - - if(!url.isEmpty()) - { - open(img, url); - } -} - - -TDEIconEditIcon::~TDEIconEditIcon() -{ -} - - -bool TDEIconEditIcon::open(const TQImage *image, KURL url) -{ - TQImage *img = (TQImage*)image; - - if(url.isEmpty()) - return false; - - kdDebug(4640) << "TDEIconEditIcon::open " << url.prettyURL() << endl; - - if(!url.isValid()) // try to see if it is a relative filename - { - kdDebug(4640) << "TDEIconEditIcon::open (malformed) " << url.prettyURL() << endl; - - TQFileInfo fi(url.url()); - if(fi.isRelative()) - url = "file:" + fi.absFilePath(); - - if(!url.isValid()) // Giving up - { - TQString msg = i18n("The URL: %1 \nseems to be malformed.\n").arg(url.url()); - KMessageBox::sorry((TQWidget*)parent(), msg); - return false; - } - } - - TQString filename; - - if(url.isLocalFile()) - { - filename = url.path(); - } - else - { - if(!TDEIO::NetAccess::download( url, filename, (TQWidget*)parent() )) - { - TQString msg = i18n("There was an error loading:\n%1\n").arg(url.prettyURL()); - KMessageBox::error((TQWidget*)parent(), msg); - return false; - } - } - - bool loadedOk = img->load(filename); - - if(!url.isLocalFile()) - { - TDEIO::NetAccess::removeTempFile( filename ); - } - - if(!loadedOk) - { - TQString msg = i18n("There was an error loading:\n%1\n").arg(url.prettyURL()); - KMessageBox::error((TQWidget*)parent(), msg); - } - else - { - kdDebug(4640) << "TDEIconEditIcon::open - Image loaded" << endl; - - // _url is saved off for use in saving the image to the same - // file later - should include full path - if(url.isLocalFile()) - { - _url = url.path(); - } - else - { - _url = ""; - } - - kdDebug(4640) << "TDEIcon: _url: " << _url << endl; - - // this causes updates of preview, color palettes, etc. - emit loaded(img); - kdDebug(4640) << "loaded(img)" << endl; - - // this is the name that shows up in status bar - - // should be filename with path - emit newname(url.prettyURL()); - kdDebug(4640) << "newname(_url) : " << url.prettyURL() << endl; - - emit addrecent(url.prettyURL()); - - kdDebug(4640) << "TDEIconEditIcon::open - done" << endl; - } - - return loadedOk; -} - - - -bool TDEIconEditIcon::promptForFile(const TQImage *img) -{ - kdDebug(4640) << "TDEIconEditIcon::promptForFile(const TQImage *img)" << endl; - /* - TQString filter = i18n("*|All Files (*)\n" - "*.xpm|XPM (*.xpm)\n" - "*.png|PNG (*.png)\n" - "*.gif|GIF files (*.gif)\n" - "*.jpg|JPEG files (*.jpg)\n" - "*.ico|Icon files (*.ico)\n"); - - - KURL url = KFileDialog::getOpenURL( TQString(), filter ); - */ - bool loaded = false; - KURL url = KFileDialog::getImageOpenURL( TQString(), TQT_TQWIDGET(parent()) ); - - if( !url.isEmpty() ) - { - loaded = open( img, url ); - } - - return loaded; -} - - - -bool TDEIconEditIcon::saveAs(const TQImage *image) -{ - kdDebug(4640) << "TDEIconEditIcon::saveAs" << endl; - - TQString file; - - //Get list of file types.. - KFileDialog *dialog=new KFileDialog(TQString(), TQString(), TQT_TQWIDGET(parent()), "file dialog", true); - dialog->setCaption( i18n("Save Icon As") ); - dialog->setKeepLocation( true ); - dialog->setMimeFilter( KImageIO::mimeTypes(KImageIO::Writing), "image/png" ); - dialog->setOperationMode( KFileDialog::Saving ); - - if(dialog->exec()==TQDialog::Accepted) - { - file = dialog->selectedFile(); - if( file.isNull() ) - { - delete dialog; - return false; - } - if ( !KImageIO::canWrite(KImageIO::type(file)) ) - { - if ( KImageIO::canWrite(KImageIO::typeForMime(dialog->currentFilter())) ) - file += "."+KImageIO::suffix(KImageIO::typeForMime(dialog->currentFilter())); - else - file += ".png"; - } - } - else - { - delete dialog; - return false; - } - - delete dialog; - - if(TQFile::exists(file)) - { - int r=KMessageBox::warningContinueCancel(TQT_TQWIDGET(parent()), - i18n( "A file named \"%1\" already exists. " - "Overwrite it?" ).arg(file), - i18n( "Overwrite File?" ), - i18n( "&Overwrite" ) ); - - if(r==KMessageBox::Cancel) - { - return false; - } - } - - return save( image, file ); -} - - - -bool TDEIconEditIcon::save(const TQImage *image, const TQString &_filename) -{ - kdDebug(4640) << "TDEIconEditIcon::save" << endl; - TQString filename = _filename; - - if(filename.isEmpty()) - { - if(_url.isEmpty()) - { - return saveAs(image); - } - else - { - KURL turl(_url); - filename = turl.path(); - } - } - - TQImage *img = (TQImage*)image; - img->setAlphaBuffer(true); - - KURL turl(filename); - TQString str = turl.path(); - bool savedOk = false; - - /* base image type on file extension - let kimageio - take care of this determination */ - - if(img->save(str, KImageIO::type(str).ascii())) - { - kdDebug(4640) << "img->save()) successful" << endl; - emit saved(); - _url = filename; - - // emit signal to change title bar to reflect new name - emit newname(filename); - kdDebug(4640) << "newname(filenamme) : " << _url << endl; - savedOk = true; - emit addrecent(filename); - } - else - { - TQString msg = i18n("There was an error saving:\n%1\n").arg(str); - KMessageBox::error((TQWidget*)parent(), msg); - kdDebug(4640) << "TDEIconEditIcon::save - " << msg << endl; - } - - kdDebug(4640) << "TDEIconEditIcon::save - done" << endl; - - return savedOk; -} - - -#include "kicon.moc" diff --git a/kiconedit/kicon.h b/kiconedit/kicon.h deleted file mode 100644 index ede75f71..00000000 --- a/kiconedit/kicon.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - KDE Icon Editor - a small icon drawing program for the KDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KICON_H__ -#define __KICON_H__ - -#include -#include -#include -#include - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#if defined(HAVE_FCNTL_H) && !defined(HAVE_FLOCK) -#include -#endif - -#ifdef HAVE_STDC_HEADERS -#include -#endif -#include -#include -#include - -class TQImage; - -class TDEIconEditIcon : public TQObject -{ - Q_OBJECT - -public: - TDEIconEditIcon(TQObject*, const TQImage*, KURL url = KURL() ); - ~TDEIconEditIcon(); - - bool isLocal() { return local; } - TQString url() { return _url; } - void setUrl( const TQString & u ) { _url = u; }; - -public slots: - bool open(const TQImage*, KURL url = KURL()); - bool promptForFile(const TQImage*); - bool save(const TQImage*, const TQString &filename=TQString()); - bool saveAs(const TQImage*); - -signals: - void newmessage( const TQString &); - void newname(const TQString &); - void addrecent(const TQString &); - void opennewwin(const TQString &); - void loaded(TQImage *); - void saved(); - -protected: - bool local; - TQString _url; - TQString _lastdir; - FILE *f; -}; - -#endif //__KICON_H__ diff --git a/kiconedit/kiconcolors.cpp b/kiconedit/kiconcolors.cpp deleted file mode 100644 index 6e0e2632..00000000 --- a/kiconedit/kiconcolors.cpp +++ /dev/null @@ -1,170 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include - -#include - -#include "kiconcolors.h" - -KDrawColors::KDrawColors(TQWidget *parent) : KColorGrid(parent, 0, 3) -{ - kdDebug(4640) << "KDrawColors - constructor" << endl; - setCellSize(17); - setGrid(true); - setGridState(KColorGrid::Shaded); - selected = 0; - kdDebug(4640) << "KDrawColors - constructor - done" << endl; -} - -void KDrawColors::paintCell( TQPainter *painter, int row, int col ) -{ - //KColorGrid::paintCell(painter, row, col); - uint c = colorAt( row * numCols() + col ); - TQBrush brush(c); - int d = spacing(); - - qDrawShadePanel( painter, d, d, cellSize()-d, cellSize()-d, - colorGroup(), true, 1, &brush); - if ( row * numCols() + col == selected) - painter->drawWinFocusRect( d+1, d+1, cellSize()-(2*d)+1, cellSize()-(2*d)+1 ); -} - -void KDrawColors::mouseReleaseEvent( TQMouseEvent *e ) -{ - int row = findRow( e->pos().y() ); - int col = findCol( e->pos().x() ); - int cell = row * numCols() + col; - - if ( selected != cell ) - { - int prevSel = selected; - selected = cell; - updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); - updateCell( row, col, FALSE ); - } - - emit newColor(colorAt(cell)|OPAQUE_MASK); -} - -KSysColors::KSysColors(TQWidget *parent) : KDrawColors(parent) -{ - kdDebug(4640) << "KSysColors - constructor" << endl; - - setNumRows(7); - setNumCols(6); - //fill(backgroundColor().rgb()|OPAQUE_MASK); - setFixedSize(numCols()*cellSize(), numRows()*cellSize()); - fill(TRANSPARENT|OPAQUE_MASK); - - int numcells = 42; - - kdDebug(4640) << "KSysColors - constructor - before setColor" << endl; - for(int i = 0; i < numcells; i++) - { - setColor(i, iconpalette[i]|OPAQUE_MASK); - } - kdDebug(4640) << "KSysColors - constructor - done" << endl; -} - -KCustomColors::KCustomColors(TQWidget *parent) : KDrawColors(parent) -{ - kdDebug(4640) << "KCustomColors - constructor" << endl; - setNumRows(3); - setNumCols(6); - fill(TRANSPARENT|OPAQUE_MASK); - setFixedSize(numCols()*cellSize(), numRows()*cellSize()); - freecells = new bool[numRows()*numCols()]; - for(int i = 0; i < numRows()*numCols(); i++) - freecells[i] = true; - kdDebug(4640) << "KCustomColors - constructor - done" << endl; -} - -KCustomColors::~KCustomColors() -{ - delete [] freecells; -} - -void KCustomColors::mouseDoubleClickEvent(TQMouseEvent *e) -{ - int row = findRow( e->pos().y() ); - int col = findCol( e->pos().x() ); - int cell = row * numCols() + col; - TQColor color=colorAt(cell); - if(KColorDialog::getColor(color)) - { - setColor(cell, color.rgb()); - emit newColor(color.rgb()|OPAQUE_MASK); - freecells[cell] = false; - } -} - -void KCustomColors::addColor(uint c) -{ - if(!contains(c)) - { - int f = getFreeCell(); - if(f != -1) - { - TQColor color(c); - if(!color.isValid()) - { - kdDebug(4640) << "KCustomColors::addColor: Not a valid color: " << c << endl; - return; - } - //kdDebug(4640) << "KCustomColors::addColor: Adding color: " << c << " - " << tqRed(c) << " " << tqGreen(c) << " " << tqBlue(c) << endl; - setColor(f, c); - freecells[f] = false; - } - } -} - -int KCustomColors::getFreeCell() -{ - for (int i = 0; i < numRows()*numCols(); i++) - { - if(freecells[i]) - { - if(i+1 < numRows()*numCols()) - freecells[i+1] = true; - else - freecells[0] = true; - return i; - break; - } - } - freeAllCells(); // start over again - not very elegant - return 0; -} - -void KCustomColors::freeAllCells() -{ - for (int i = 0; i < numRows()*numCols(); i++) - freecells[i] = true; -} - -void KCustomColors::clear() -{ - fill(TRANSPARENT); - freeAllCells(); - update(); -} -#include "kiconcolors.moc" diff --git a/kiconedit/kiconcolors.h b/kiconedit/kiconcolors.h deleted file mode 100644 index cf959a27..00000000 --- a/kiconedit/kiconcolors.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - kiconedit - a small graphics drawing program for creating KDE icons - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KDRAWCOLORS_H__ -#define __KDRAWCOLORS_H__ - -#include - -#include - -#include "kcolorgrid.h" -#include "utils.h" - -class KDrawColors : public KColorGrid -{ - Q_OBJECT - -public: - KDrawColors(TQWidget *parent); - - //bool hasColor(uint); - -signals: - void newColor(uint); - -protected: - virtual void paintCell( TQPainter*, int, int ); - virtual void mouseReleaseEvent(TQMouseEvent*); - - int selected; -}; - -class KCustomColors : public KDrawColors -{ - Q_OBJECT - -public: - KCustomColors(TQWidget *parent); - ~KCustomColors(); - - void addColor(uint); - void clear(); - -protected: - virtual void mouseDoubleClickEvent(TQMouseEvent*); - int getFreeCell(); - void freeAllCells(); - -protected: - bool *freecells; - TQPopupMenu *popup; -}; - -class KSysColors : public KDrawColors -{ - Q_OBJECT - -public: - - KSysColors(TQWidget *parent); - -}; - - - -#endif //__KDRAWCOLORS_H__ - - - diff --git a/kiconedit/kiconconfig.cpp b/kiconedit/kiconconfig.cpp deleted file mode 100644 index d50fbc86..00000000 --- a/kiconedit/kiconconfig.cpp +++ /dev/null @@ -1,589 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "kiconconfig.h" -#include "kiconedit.h" - -#ifndef PICS_INCLUDED -#define PICS_INCLUDED -#include "pics/logo.xpm" -#endif - -// little helper: -static inline TQPixmap loadIcon( const char * name ) -{ - return TDEGlobal::instance()->iconLoader() - ->loadIcon( TQString::fromLatin1(name), TDEIcon::NoGroup, TDEIcon::SizeMedium ); -} - -KTemplateEditDlg::KTemplateEditDlg(TQWidget *parent) - : KDialogBase(parent, "KTemplateEditDlg", true, i18n( "Icon Template" ), - Ok|Cancel ) -{ - TQFrame *frame = makeMainWidget(); - TQVBoxLayout *ml = new TQVBoxLayout(frame); - TQGroupBox *grp = new TQGroupBox(i18n("Template"), frame); - grp->setColumnLayout(0, Qt::Vertical); - grp->layout()->setSpacing(spacingHint()); - grp->layout()->setMargin(marginHint()); - TQGridLayout *l = new TQGridLayout(grp->layout()); - - ln_name = new TQLineEdit( grp ); - connect( ln_name, TQT_SIGNAL( textChanged( const TQString & ) ), - TQT_SLOT( slotTextChanged() ) ); - TQLabel* lb_name = new TQLabel( ln_name, i18n( "Description:" ), grp ); - - ln_path = new KURLRequester(grp); - connect( ln_path, TQT_SIGNAL( textChanged( const TQString & ) ), - TQT_SLOT( slotTextChanged() ) ); - TQLabel* lb_path = new TQLabel( ln_path, i18n( "Path:" ), grp ); - - l->addWidget(lb_name, 0, 0); - l->addWidget(ln_name, 0, 1); - l->addWidget(lb_path, 1, 0); - l->addWidget(ln_path, 1, 1); - - ml->addWidget( grp, 1); - - slotTextChanged(); - - setMinimumSize( 400, 150 ); -} - -void KTemplateEditDlg::slotTextChanged() -{ - TQString name = ln_name->text(), path = ln_path->url(); - enableButtonOK(name.length() && path.length()); -} - -void KTemplateEditDlg::setName(const TQString & name) -{ - ln_name->setText(name); -} - -TQString KTemplateEditDlg::name() -{ - return ln_name->text(); -} - -void KTemplateEditDlg::setPath(const TQString & path) -{ - ln_path->setURL(path); -} - -TQString KTemplateEditDlg::path() -{ - return ln_path->url(); -} - -KTemplateConfig::KTemplateConfig(TQWidget *parent) : TQWidget(parent) -{ - kdDebug(4640) << "KTemplateConfig constructor" << endl; - - btadd = btremove = btedit = 0L; - - TQGroupBox* grp = new TQGroupBox( i18n( "Templates" ), this ); - grp->setColumnLayout( 0, Qt::Horizontal ); - - templates = new TDEIconListBox( grp ); - connect( templates, TQT_SIGNAL( highlighted( int ) ), - TQT_SLOT( checkSelection( int ) ) ); - connect( templates, TQT_SIGNAL(doubleClicked( TQListBoxItem * ) ), - TQT_SLOT( edit() ) ); - - TQVBoxLayout* ml = new TQVBoxLayout( this ); - ml->addWidget( grp ); - - TQVBoxLayout* l = new TQVBoxLayout( grp->layout(), KDialog::spacingHint() ); - l->addWidget( templates ); - - for( unsigned int i = 0; i < TDEIconTemplateContainer::self()->count(); i++ ) - templates->insertItem( new TDEIconListBoxItem( *TDEIconTemplateContainer::self()->at( i ) ) ) ; - - KButtonBox *bbox = new KButtonBox( grp ); - - btadd = bbox->addButton( i18n( "&Add..." ) ); - connect( btadd, TQT_SIGNAL( clicked() ), TQT_SLOT( add() ) ); - - btedit = bbox->addButton( i18n( "&Edit..." ) ); - connect( btedit, TQT_SIGNAL( clicked() ), TQT_SLOT( edit() ) ); - btedit->setEnabled( false ); - - btremove = bbox->addButton( i18n( "&Remove" ) ); - connect( btremove, TQT_SIGNAL( clicked() ), TQT_SLOT( remove() ) ); - btremove->setEnabled( false ); - - bbox->addStretch( 1 ); - - bbox->layout(); - l->addWidget( bbox ); -} - -KTemplateConfig::~KTemplateConfig() -{ -} - -void KTemplateConfig::saveSettings() -{ - kdDebug(4640) << "KTemplateConfig::saveSettings" << endl; - - TDEIconTemplateContainer::self()->clear(); - - for(int i = 0; i < (int)templates->count(); i++) - { - TDEIconTemplateContainer::self()->append(templates->iconTemplate(i)); - } - TDEIconTemplateContainer::self()->save(); - kdDebug(4640) << "KTemplateConfig::saveSettings - done" << endl; - -} - -void KTemplateConfig::checkSelection(int) -{ - kdDebug(4640) << "KTemplateConfig::checkSelection" << endl; - if(templates->currentItem() != -1) - { - if(btremove) btremove->setEnabled(true); - if(btedit) btedit->setEnabled(true); - } - else - { - if(btremove) btremove->setEnabled(false); - if(btedit) btedit->setEnabled(false); - } - kdDebug(4640) << "KTemplateConfig::checkSelection - done" << endl; -} - -void KTemplateConfig::remove() -{ - templates->removeItem(templates->currentItem()); -} - -void KTemplateConfig::add() -{ - KTemplateEditDlg dlg(this); - if(dlg.exec()) - { - TDEIconTemplate it; - it.path = dlg.path(); - it.title = dlg.name(); - templates->insertItem(new TDEIconListBoxItem(it)); - } -} - -void KTemplateConfig::edit() -{ - KTemplateEditDlg dlg(this); - dlg.setPath(templates->path(templates->currentItem())); - dlg.setName(templates->text(templates->currentItem())); - templates->item(templates->currentItem()); - if(dlg.exec()) - { - //Edit the entry - TDEIconTemplate &it=templates->iconTemplate(templates->currentItem()); - it.path = dlg.path(); - it.title = dlg.name(); - static_cast(templates->item(templates->currentItem()))->reloadIcon(); - templates->update(); - } -} - -KBackgroundConfig::KBackgroundConfig( TQWidget* parent ) - : TQWidget( parent ) -{ - kdDebug(4640) << "KBackgroundConfig - constructor" << endl; - - lb_ex = 0L; - - TDEIconEditProperties *props = TDEIconEditProperties::self(); - - pixpath = props->bgPixmap(); - pix.load(pixpath); - if(pix.isNull()) - { - kdDebug(4640) << "BGPIX: " << pixpath << " not valid!" << endl; - TQPixmap pmlogo((const char**)logo); - pix = pmlogo; - } - - TQVBoxLayout *mainLayout = new TQVBoxLayout( this ); - - TQGroupBox *grp1 = new TQGroupBox( i18n( "Select Background" ), this ); - grp1->setColumnLayout(0, Qt::Vertical ); - grp1->layout()->setSpacing( KDialog::spacingHint() ); - grp1->layout()->setMargin( KDialog::marginHint() ); - mainLayout->addWidget( grp1 ); - - TQGridLayout *grp1Layout = new TQGridLayout( grp1->layout(), 3, 2 ); - - TQButtonGroup* btngrp = new TQButtonGroup( grp1 ); - btngrp->setExclusive( true ); - btngrp->setFrameStyle( TQFrame::NoFrame ); - connect( btngrp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( slotBackgroundMode( int ) ) ); - grp1Layout->addWidget( btngrp, 0, 0 ); - - TQVBoxLayout *bgl = new TQVBoxLayout( btngrp, 5 ); - - TQRadioButton *rbc = new TQRadioButton( i18n( "Use co&lor" ), btngrp ); - btngrp->insert( rbc, 0 ); - bgl->addWidget( rbc ); - - TQRadioButton *rbp = new TQRadioButton( i18n( "Use pix&map" ), btngrp ); - btngrp->insert( rbp, 1 ); - bgl->addWidget( rbp ); - - bgl->addStretch( 1 ); - - TQVBox *bbox = new TQVBox( grp1 ); - grp1Layout->addWidget( bbox, 0, 1 ); - - btcolor = new KColorButton(props->bgColor(), bbox) ; - connect(btcolor, TQT_SIGNAL(changed(const TQColor &)), - TQT_SLOT( selectColor(const TQColor &))); - - btpix = new TQPushButton(i18n( "Choose..." ), bbox); - connect( btpix, TQT_SIGNAL( clicked() ), TQT_SLOT( selectPixmap() ) ); - - TQGroupBox *grp2 = new TQGroupBox( i18n( "Preview" ), this ); - mainLayout->addWidget( grp2, 1 ); - - TQBoxLayout *l2 = new TQVBoxLayout( grp2, 15 ); - - l2->addSpacing( 10 ); - - lb_ex = new TQLabel( grp2 ); - lb_ex->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); - l2->addWidget( lb_ex ); - -/* - l1->addWidget( btngrp, 0, AlignLeft ); - l1->addLayout( l1r ); -*/ - bgmode = props->bgMode(); - - if( bgmode == TQWidget::FixedPixmap ) - { - btngrp->setButton( 1 ); - btcolor->setEnabled( false ); - lb_ex->setBackgroundPixmap( pix ); - } - else - { - btngrp->setButton( 0 ); - btpix->setEnabled( false ); - lb_ex->setBackgroundColor(btcolor->color()); - } -} - -KBackgroundConfig::~KBackgroundConfig() -{ -} - -void KBackgroundConfig::slotBackgroundMode(int id) -{ - if(id == 0) - { - bgmode = TQWidget::FixedColor; - btpix->setEnabled(false); - btcolor->setEnabled(true); - if(lb_ex) - lb_ex->setBackgroundColor(btcolor->color()); - } - else - { - bgmode = TQWidget::FixedPixmap; - btpix->setEnabled(true); - btcolor->setEnabled(false); - if(lb_ex) - lb_ex->setBackgroundPixmap(pix); - } -} - -void KBackgroundConfig::saveSettings() -{ - kdDebug(4640) << "KBackgroundConfig::saveSettings" << endl; - TDEIconEditProperties *props = TDEIconEditProperties::self(); - props->setBgMode( bgmode ); - props->setBgPixmap( pixpath ); - props->setBgColor( btcolor->color() ); - kdDebug(4640) << "KBackgroundConfig::saveSettings - done" << endl; -} - -void KBackgroundConfig::selectColor(const TQColor & newColor) -{ - lb_ex->setBackgroundColor(newColor); -} - -void KBackgroundConfig::selectPixmap() -{ - // KURL url = KFileDialog::getOpenURL("/", "*.xpm"); - KURL url = KFileDialog::getImageOpenURL("/"); - - if( url.isEmpty() ) - return; - - if( !url.isLocalFile() ) - { - KMessageBox::sorry( 0L, i18n( "Only local files are supported yet." ) ); - return; - } - - TQPixmap p(url.path()); - - if( !p.isNull() ) - { - lb_ex->setBackgroundPixmap( p ); - pixpath = url.path(); - } -} - -KMiscConfig::KMiscConfig(TQWidget *parent) : TQWidget(parent) -{ - kdDebug(4640) << "KMiscConfig - constructor" << endl; - - TDEIconEditProperties* props = TDEIconEditProperties::self(); - - TQBoxLayout *ml = new TQVBoxLayout( this, 0, 5 ); - - TQCheckBox *cbp = new TQCheckBox( i18n( "Paste &transparent pixels" ), this ); - connect( cbp, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( pasteMode( bool ) ) ); - ml->addWidget(cbp); - - TQCheckBox *cbr = new TQCheckBox( i18n( "Show &rulers" ), this ); - connect( cbr, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( showRulers( bool ) ) ); - ml->addWidget(cbr); - - TQButtonGroup* btngrp = new TQButtonGroup( i18n( "Transparency Display" ), this); - btngrp->setExclusive( true ); - connect( btngrp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( slotTransparencyDisplayType( int ) ) ); - ml->addWidget( btngrp ); - - TQVBoxLayout *tgl = new TQVBoxLayout( btngrp, KDialog::marginHint(), KDialog::spacingHint() ); - tgl->insertSpacing(0, 10); - - TQHBoxLayout *hl = new TQHBoxLayout(tgl); - - TQRadioButton *solidColorRButton = new TQRadioButton( i18n( "&Solid color:" ), btngrp ); - btngrp->insert( solidColorRButton, 0 ); - hl->addWidget( solidColorRButton ); - - m_solidColorButton = new KColorButton(props->transparencySolidColor(), btngrp); - btngrp->insert( m_solidColorButton, 2 ); - hl->addWidget(m_solidColorButton); - //connect(btcolor, TQT_SIGNAL(changed(const TQColor &)), - // TQT_SLOT( selectColor(const TQColor &))); - - TQRadioButton *checkerboardRButton = new TQRadioButton( i18n( "Checker&board" ), btngrp ); - btngrp->insert( checkerboardRButton, 1 ); - tgl->addWidget( checkerboardRButton ); - - TQGridLayout *grid = new TQGridLayout(tgl, 3, 3); - grid->addColSpacing(0, 40); - grid->setColStretch(1, 1); - grid->setColStretch(2, 1); - - m_checkerboardSizeCombo = new TQComboBox(btngrp); - m_checkerboardSizeCombo->insertItem( i18n( "Small" ) ); - m_checkerboardSizeCombo->insertItem( i18n( "Medium" ) ); - m_checkerboardSizeCombo->insertItem( i18n( "Large" ) ); - m_checkerboardSizeCombo->setCurrentItem(props->checkerboardSize()); - - TQLabel *label = new TQLabel(m_checkerboardSizeCombo, i18n("Si&ze:"), btngrp); - - grid->addWidget(label, 0, 1); - grid->addWidget(m_checkerboardSizeCombo, 0, 2); - - m_checkerboardColor1Button = new KColorButton(props->checkerboardColor1(), btngrp); - label = new TQLabel(m_checkerboardColor1Button, i18n("Color &1:"), btngrp); - - grid->addWidget(label, 1, 1); - grid->addWidget(m_checkerboardColor1Button, 1, 2); - - m_checkerboardColor2Button = new KColorButton(props->checkerboardColor2(), btngrp); - label = new TQLabel(m_checkerboardColor2Button, i18n("Color &2:"), btngrp); - - grid->addWidget(label, 2, 1); - grid->addWidget(m_checkerboardColor2Button, 2, 2); - - if(props->transparencyDisplayType() == TDEIconEditGrid::TRD_CHECKERBOARD) - { - checkerboardRButton->setChecked(true); - m_checkerboardColor1Button->setEnabled(true); - m_checkerboardColor2Button->setEnabled(true); - m_checkerboardSizeCombo->setEnabled(true); - - solidColorRButton->setChecked(false); - m_solidColorButton->setEnabled(false); - } - else - { - checkerboardRButton->setChecked(false); - m_checkerboardColor1Button->setEnabled(false); - m_checkerboardColor2Button->setEnabled(false); - m_checkerboardSizeCombo->setEnabled(false); - - solidColorRButton->setChecked(true); - m_solidColorButton->setEnabled(true); - } - - ml->addStretch(1); - - cbp->setChecked( props->pasteTransparent() ); - cbr->setChecked( props->showRulers() ); -} - -KMiscConfig::~KMiscConfig() -{ - -} - -void KMiscConfig::saveSettings() -{ - kdDebug(4640) << "KMiscConfig::saveSettings" << endl; - TDEIconEditProperties* props = TDEIconEditProperties::self(); - props->setPasteTransparent( pastemode ); - props->setShowRulers( showrulers ); - if(m_solidColorButton->isEnabled()) - { - props->setTransparencyDisplayType(TDEIconEditGrid::TRD_SOLIDCOLOR); - props->setTransparencySolidColor(m_solidColorButton->color()); - } - else - { - props->setTransparencyDisplayType(TDEIconEditGrid::TRD_CHECKERBOARD); - props->setCheckerboardColor1(m_checkerboardColor1Button->color()); - props->setCheckerboardColor2(m_checkerboardColor2Button->color()); - props->setCheckerboardSize((TDEIconEditGrid::CheckerboardSize)m_checkerboardSizeCombo->currentItem()); - } -} - -void KMiscConfig::pasteMode(bool mode) -{ - pastemode = mode; -} - -void KMiscConfig::showRulers(bool mode) -{ - showrulers = mode; -} - -void KMiscConfig::slotTransparencyDisplayType(int id) -{ - if(id == 0) - { - m_checkerboardColor1Button->setEnabled(false); - m_checkerboardColor2Button->setEnabled(false); - m_checkerboardSizeCombo->setEnabled(false); - - m_solidColorButton->setEnabled(true); - } - else - if(id == 1) - { - m_checkerboardColor1Button->setEnabled(true); - m_checkerboardColor2Button->setEnabled(true); - m_checkerboardSizeCombo->setEnabled(true); - - m_solidColorButton->setEnabled(false); - } -} - -TDEIconConfig::TDEIconConfig(TQWidget *parent) - : KDialogBase(KDialogBase::IconList, i18n("Configure"), - KDialogBase::Help | - KDialogBase::Ok | - KDialogBase::Apply | - KDialogBase::Cancel, - KDialogBase::Ok, - parent, "configDialog", true, true) -{ - setHelp(TQString()); - //KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon()); - connect(this, TQT_SIGNAL(finished()), this, TQT_SLOT(finis())); - - TQVBox* page = addVBoxPage(i18n("Icon Templates"), TQString(), loadIcon("icons")); - temps = new KTemplateConfig(page); - - page = addVBoxPage(i18n("Background"), TQString(), loadIcon("background")); - backs = new KBackgroundConfig(page); - - page = addVBoxPage(i18n("Icon Grid"), TQString(), loadIcon("kiconedit")); - misc = new KMiscConfig(page); - - TQSize min(300, 400); - - if (300 < sizeHint().width()) { min.setWidth(sizeHint().width()); } - if (400 < sizeHint().height()) { min.setHeight(sizeHint().height()); } - - resize(min); -} - -TDEIconConfig::~TDEIconConfig() -{ - //delete dict; -} - -void TDEIconConfig::slotApply() -{ - kdDebug(4640) << "TDEIconEditConfig::saveSettings" << endl; - - temps->saveSettings(); - backs->saveSettings(); - misc->saveSettings(); - - for (TDEIconEdit* window = TDEIconEdit::windowList.first(); - window; - window = TDEIconEdit::windowList.next()) - { - window->updateProperties(); - } -} - -void TDEIconConfig::slotOk() -{ - slotApply(); - KDialogBase::slotOk(); -} - -void TDEIconConfig::finis() -{ - delayedDestruct(); -} - -#include "kiconconfig.moc" diff --git a/kiconedit/kiconconfig.h b/kiconedit/kiconconfig.h deleted file mode 100644 index 62f7938c..00000000 --- a/kiconedit/kiconconfig.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - KDE Icon Editor - a small icon drawing program for the KDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KICONCONFIG_H__ -#define __KICONCONFIG_H__ - -#include -#include - -#include "knew.h" -#include "utils.h" -#include "properties.h" - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -class TDEAccel; -class KKeyChooser; -class KColorButton; -class KURLRequester; -class TQComboBox; - -class KTemplateEditDlg : public KDialogBase -{ - Q_OBJECT - -public: - KTemplateEditDlg(TQWidget *); - ~KTemplateEditDlg() {}; - - TQString name(); - TQString path(); - void setName(const TQString &); - void setPath(const TQString &); - -public slots: - void slotTextChanged(); - -protected: - TQLineEdit *ln_name; - KURLRequester *ln_path; -}; - -class KTemplateConfig : public TQWidget -{ - Q_OBJECT - -public: - KTemplateConfig(TQWidget*); - ~KTemplateConfig(); - - void saveSettings(); - -protected slots: - void add(); - void edit(); - void remove(); - void checkSelection(int); - -protected: - TDEIconListBox *templates; - TQPushButton *btadd, *btedit, *btremove; -}; - -class KBackgroundConfig : public TQWidget -{ - Q_OBJECT - -public: - KBackgroundConfig(TQWidget *parent); - ~KBackgroundConfig(); - -public slots: - void saveSettings(); - void selectColor(const TQColor & newColor); - void selectPixmap(); - -signals: - -protected slots: - void slotBackgroundMode(int); - -protected: - KColorButton *btcolor; - TQPushButton *btpix; - TQPixmap pix; - TQString pixpath; - TQWidget::BackgroundMode bgmode; - TQLabel *lb_ex; -}; - -class KMiscConfig : public TQWidget -{ - Q_OBJECT - -public: - KMiscConfig(TQWidget *parent); - ~KMiscConfig(); - -public slots: - void saveSettings(); - void pasteMode(bool); - void showRulers(bool); - -protected slots: - void slotTransparencyDisplayType(int); - -signals: - -protected: - bool pastemode, showrulers; - TQRadioButton *rbp; - KColorButton *m_solidColorButton; - KColorButton *m_checkerboardColor1Button; - KColorButton *m_checkerboardColor2Button; - TQComboBox *m_checkerboardSizeCombo; -}; - -class TDEIconConfig : public KDialogBase -{ - Q_OBJECT - - -public: - - TDEIconConfig(TQWidget *parent); - ~TDEIconConfig(); - -protected slots: - void slotApply(); - void slotOk(); - void finis(); - -protected: - KTemplateConfig *temps; - KBackgroundConfig *backs; - KMiscConfig *misc; -}; - -#endif //__KICONCONFIG_H__ diff --git a/kiconedit/kiconedit.cpp b/kiconedit/kiconedit.cpp deleted file mode 100644 index bec3af7f..00000000 --- a/kiconedit/kiconedit.cpp +++ /dev/null @@ -1,497 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "kiconedit.h" -#include "palettetoolbar.h" - -WindowList TDEIconEdit::windowList; - -TDEIconEdit::TDEIconEdit(const TQImage image, const char *name) - : TDEMainWindow(0, name) -{ - init(); - img = image; - img.detach(); - grid->load(&img); - grid->setModified(true); -} - -TDEIconEdit::TDEIconEdit(KURL url, const char *name) - : TDEMainWindow(0, name) -{ - init(); - icon->open(&img, url); -} - -void TDEIconEdit::init() -{ - setMinimumSize( 600, 540 ); - - windowList.append(this); - setCaption(kapp->caption()); - - m_paletteToolBar = 0L; - statusbar = 0L; - - history = new KCommandHistory( actionCollection(), true ); - - gridview = new KGridView(&img, history, this); - grid = gridview->grid(); - icon = new TDEIconEditIcon(TQT_TQOBJECT(this), &grid->image()); - - setAcceptDrops(true); - - setupActions(); - setupStatusBar(); - setStandardToolBarMenuEnabled( true ); - - createGUI(); - - connect(this, TQT_SIGNAL(newname(const TQString &)), - TQT_SLOT( slotUpdateStatusName(const TQString &))); - - connect( icon, TQT_SIGNAL( saved()), TQT_SLOT(slotSaved())); - connect( icon, TQT_SIGNAL( loaded(TQImage *)), grid, TQT_SLOT(load(TQImage *))); - connect( icon, TQT_SIGNAL(opennewwin(const TQString &)), - TQT_SLOT(slotNewWin(const TQString &))); - connect(icon, TQT_SIGNAL(newname(const TQString &)), - TQT_SLOT( slotUpdateStatusName(const TQString &))); - connect(icon, TQT_SIGNAL(newmessage(const TQString &)), - TQT_SLOT( slotUpdateStatusMessage(const TQString &))); - connect(icon, TQT_SIGNAL(addrecent(const TQString &)), - TQT_SLOT( addRecent(const TQString &))); - - connect( m_paletteToolBar, TQT_SIGNAL( newColor(uint)), - grid, TQT_SLOT(setColorSelection(uint))); - - connect( grid, TQT_SIGNAL( changed(const TQPixmap &) ), - m_paletteToolBar, TQT_SLOT( previewChanged(const TQPixmap &) ) ); - connect( grid, TQT_SIGNAL( addingcolor(uint) ), - m_paletteToolBar, TQT_SLOT(addColor(uint))); - connect( grid, TQT_SIGNAL( colorschanged(uint, uint*) ), - m_paletteToolBar, TQT_SLOT(addColors(uint, uint*))); - - connect(grid, TQT_SIGNAL(sizechanged(int, int)), - TQT_SLOT( slotUpdateStatusSize(int, int))); - connect(grid, TQT_SIGNAL(poschanged(int, int)), - TQT_SLOT( slotUpdateStatusPos(int, int))); - connect(grid, TQT_SIGNAL(scalingchanged(int)), - TQT_SLOT( slotUpdateStatusScaling(int))); - connect(grid, TQT_SIGNAL(scalingchanged(int)), - TQT_SLOT( slotUpdateZoom(int))); - connect( grid, TQT_SIGNAL( addingcolor(uint) ), - TQT_SLOT(slotUpdateStatusColors(uint))); - connect(grid, TQT_SIGNAL(colorschanged(uint, uint*)), - TQT_SLOT( slotUpdateStatusColors(uint, uint*))); - connect(grid, TQT_SIGNAL(newmessage(const TQString &)), - TQT_SLOT( slotUpdateStatusMessage(const TQString &))); - connect(grid, TQT_SIGNAL(clipboarddata(bool)), - TQT_SLOT( slotUpdatePaste(bool))); - connect(grid, TQT_SIGNAL(colorSelected(uint)), - m_paletteToolBar, TQT_SLOT(currentColorChanged(uint))); - connect(grid, TQT_SIGNAL(modifiedchanged(bool)), - TQT_SLOT( slotUpdateStatusModified(bool))); - gridview->checkClipboard(); //Not very elegant, but fixes a buglet - - connect(grid, TQT_SIGNAL(selecteddata(bool)), TQT_SLOT( slotUpdateCopy(bool))); - - kdDebug(4640) << "Updating statusbar" << endl; - slotUpdateStatusSize(grid->cols(), grid->rows()); - slotUpdateStatusScaling(grid->scaling()); - - slotUpdateZoom( grid->scaling() ); - - if(icon->url().length()) - slotUpdateStatusName(icon->url()); - else - slotUpdateStatusName(i18n("Untitled")); - - slotUpdateCopy(false); - - uint *c = 0, n = 0; - n = grid->getColors(c); - slotUpdateStatusColors(n, c); - - setCentralWidget(gridview); - - applyMainWindowSettings( kapp->config(), "MainWindowSettings" ); - updateProperties(); - - updateAccels(); - show(); - moveDockWindow( m_paletteToolBar, TQt::DockRight, true, 0 ); -} - -TDEIconEdit::~TDEIconEdit() -{ - windowList.remove(this); - - if (windowList.count() < 1) - { - kapp->quit(); - } -} - -bool TDEIconEdit::queryClose() -{ - bool cancel = false; - if (grid->isModified()) - { - int r = KMessageBox::warningYesNoCancel(this, - i18n("The current file has been modified.\nDo you want to save it?"), TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); - - switch(r) - { - case KMessageBox::Yes: - if (!icon->save(&grid->image())) - { - cancel = true; - } - break; - case KMessageBox::Cancel: - cancel = true; - break; - case KMessageBox::No: - default: - break; - } - } - - if(!cancel) - { - writeConfig(); - } - return (!cancel); -} - -// this is for exit by request of the session manager -void TDEIconEdit::saveProperties(TDEConfig *config ) -{ - kdDebug(4640) << "TDEIconEdit::saveProperties" << endl; - - config->writePathEntry("Name", icon->url()); -} - -// this is for instances opened by the session manager -void TDEIconEdit::readProperties(TDEConfig *config) -{ - kdDebug(4640) << "TDEIconEdit::readProperties" << endl; - - TQString entry = config->readPathEntry("Name"); // no default - if (entry.isEmpty()) return; - icon->open(&grid->image(), KURL::fromPathOrURL( entry )); -} - -/* - this is for normal exits or request from "Options->Save options". -*/ -void TDEIconEdit::writeConfig() -{ - TDEConfig *config = kapp->config(); - m_actRecent->saveEntries( kapp->config() ); - - TDEIconEditProperties::self()->save(); - - saveMainWindowSettings( config, "MainWindowSettings" ); -} - -TQSize TDEIconEdit::sizeHint() const -{ - if(gridview) - return gridview->sizeHint(); - else - return TQSize(-1, -1); -} - -void TDEIconEdit::setupActions() -{ - kdDebug(4640) << "setupActions" << endl; - - TDEAction *action; - TDERadioAction *toolAction; - TDEShortcut cut; - - // File Menu - action = new TDEAction(i18n("New &Window"), "window_new", cut, - TQT_TQOBJECT(this), TQT_SLOT(slotNewWin()), actionCollection(), "file_new_window"); - action->setWhatsThis(i18n("New window\n\nOpens a new icon editor window.")); - - action = KStdAction::openNew(TQT_TQOBJECT(this), TQT_SLOT(slotNew()), actionCollection()); - action->setWhatsThis(i18n("New\n\nCreate a new icon, either from a" - " template or by specifying the size")); - - action = KStdAction::open(TQT_TQOBJECT(this), TQT_SLOT(slotOpen()), actionCollection()); - action->setWhatsThis(i18n("Open\n\nOpen an existing icon")); - - m_actRecent = KStdAction::openRecent(TQT_TQOBJECT(this), - TQT_SLOT(slotOpenRecent(const KURL&)), actionCollection()); - m_actRecent->setMaxItems(15); // FIXME should be configurable! - m_actRecent->loadEntries(kapp->config()); - - action = KStdAction::save(TQT_TQOBJECT(this), TQT_SLOT(slotSave()), actionCollection()); - action->setWhatsThis(i18n("Save\n\nSave the current icon")); - - KStdAction::saveAs(TQT_TQOBJECT(this), TQT_SLOT(slotSaveAs()), actionCollection()); - - action = KStdAction::print(TQT_TQOBJECT(this), TQT_SLOT(slotPrint()), actionCollection()); - action->setWhatsThis(i18n("Print\n\nOpens a print dialog to let you print" - " the current icon.")); - - KStdAction::close(TQT_TQOBJECT(this), TQT_SLOT(slotClose()), actionCollection()); - - // Edit Menu - - m_actCut = KStdAction::cut(TQT_TQOBJECT(this), TQT_SLOT(slotCut()), actionCollection()); - m_actCut->setWhatsThis(i18n("Cut\n\nCut the current selection out of the" - " icon.\n\n(Tip: You can make both rectangular and circular selections)")); - - m_actCopy = KStdAction::copy(TQT_TQOBJECT(this), TQT_SLOT(slotCopy()), actionCollection()); - m_actCopy->setWhatsThis(i18n("Copy\n\nCopy the current selection out of the" - " icon.\n\n(Tip: You can make both rectangular and circular selections)")); - - m_actPaste = KStdAction::paste(TQT_TQOBJECT(this), TQT_SLOT(slotPaste()), actionCollection()); - m_actPaste->setWhatsThis(i18n("Paste\n\n" - "Paste the contents of the clipboard into the current icon.\n\n" - "If the contents are larger than the current icon you can paste them" - " in a new window.\n\n" - "(Tip: Select \"Paste transparent pixels\" in the configuration dialog" - " if you also want to paste transparency.)")); - - m_actPasteNew = new TDEAction( i18n( "Paste as &New" ), cut, TQT_TQOBJECT(grid), - TQT_SLOT( editPasteAsNew() ), actionCollection(), "edit_paste_as_new" ); - - KStdAction::clear(TQT_TQOBJECT(this), TQT_SLOT(slotClear()), actionCollection()); - KStdAction::selectAll(TQT_TQOBJECT(this), TQT_SLOT(slotSelectAll()), actionCollection()); - - action = new TDEAction(i18n("Resi&ze..."), "transform", cut, - TQT_TQOBJECT(grid), TQT_SLOT(editResize()), actionCollection(), "edit_resize"); - action->setWhatsThis(i18n("Resize\n\nSmoothly resizes the icon while" - " trying to preserve the contents")); - - action = new TDEAction(i18n("&GrayScale"), "grayscale", cut, - TQT_TQOBJECT(grid), TQT_SLOT(grayScale()), actionCollection(), "edit_grayscale"); - action->setWhatsThis(i18n("Gray scale\n\nGray scale the current icon.\n" - "(Warning: The result is likely to contain colors not in the icon" - " palette")); - - // View Menu - m_actZoomIn = KStdAction::zoomIn(TQT_TQOBJECT(this), TQT_SLOT(slotZoomIn()), - actionCollection()); - m_actZoomIn->setWhatsThis(i18n("Zoom in\n\nZoom in by one.")); - - m_actZoomOut = KStdAction::zoomOut(TQT_TQOBJECT(this), TQT_SLOT(slotZoomOut()), - actionCollection()); - m_actZoomOut->setWhatsThis(i18n("Zoom out\n\nZoom out by one.")); - - TDEActionMenu *actMenu = new TDEActionMenu( i18n( "&Zoom" ), "viewmag", - actionCollection(), "view_zoom" ); - - // xgettext:no-c-format - action = new TDEAction( i18n( "100%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom1() ), - actionCollection(), "view_zoom_1" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "200%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom2() ), - actionCollection(), "view_zoom_2" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "500%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom5() ), - actionCollection(), "view_zoom_5" ); - actMenu->insert( action ); - // xgettext:no-c-format - action = new TDEAction( i18n( "1000%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom10() ), - actionCollection(), "view_zoom_10" ); - actMenu->insert( action ); - - // Settings Menu - KStdAction::keyBindings(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureKeys()), - actionCollection()); - KStdAction::preferences(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureSettings()), - actionCollection()); - - createStandardStatusBarAction(); - - TDEToggleAction *toggle; - - toggle = new TDEToggleAction( i18n( "Show &Grid" ), "grid", - cut, TQT_TQOBJECT(this), TQT_SLOT( slotShowGrid() ), actionCollection(), - "options_show_grid" ); - toggle->setCheckedState(i18n("Hide &Grid")); - toggle->setWhatsThis( i18n( "Show grid\n\nToggles the grid in the icon" - " edit grid on/off" ) ); - toggle->setChecked( TDEIconEditProperties::self()->showGrid() ); - - // Tools Menu - toolAction = new TDERadioAction(i18n("Color Picker"), "colorpicker", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolPointer()), actionCollection(), - "tool_find_pixel"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Color Picker\n\nThe color of the pixel clicked" - " on will be the current draw color")); - - toolAction = new TDERadioAction(i18n("Freehand"), "paintbrush", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFreehand()), actionCollection(), - "tool_freehand"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Free hand\n\nDraw non-linear lines")); - - toolAction->setChecked( true ); - grid->setTool(TDEIconEditGrid::Freehand); - - toolAction = new TDERadioAction(i18n("Rectangle"), "rectangle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolRectangle()), actionCollection(), - "tool_rectangle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Rectangle\n\nDraw a rectangle")); - - toolAction = new TDERadioAction(i18n("Filled Rectangle"), "filledrectangle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledRectangle()), actionCollection(), - "tool_filled_rectangle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled rectangle\n\nDraw a filled rectangle")); - - toolAction = new TDERadioAction(i18n("Circle"), "circle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolCircle()), actionCollection(), - "tool_circle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Circle\n\nDraw a circle")); - - toolAction = new TDERadioAction(i18n("Filled Circle"), "filledcircle", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledCircle()), actionCollection(), - "tool_filled_circle"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled circle\n\nDraw a filled circle")); - - toolAction = new TDERadioAction(i18n("Ellipse"), "ellipse", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEllipse()), actionCollection(), - "tool_ellipse"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Ellipse\n\nDraw an ellipse")); - - toolAction = new TDERadioAction(i18n("Filled Ellipse"), "filledellipse", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledEllipse()), actionCollection(), - "tool_filled_ellipse"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Filled ellipse\n\nDraw a filled ellipse")); - - toolAction = new TDERadioAction(i18n("Spray"), "airbrush", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSpray()), actionCollection(), - "tool_spray"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Spray\n\nDraw scattered pixels in the" - " current color")); - - toolAction = new TDERadioAction(i18n("Flood Fill"), "fill", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFlood()), actionCollection(), - "tool_flood_fill"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Flood fill\n\nFill adjoining pixels with" - " the same color with the current color")); - - toolAction = new TDERadioAction(i18n("Line"), "line", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolLine()), actionCollection(), - "tool_line"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Line\n\nDraw a straight line vertically," - " horizontally or at 45 deg. angles")); - - toolAction = new TDERadioAction(i18n("Eraser (Transparent)"), "eraser", - cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEraser()), actionCollection(), - "tool_eraser"); - toolAction->setExclusiveGroup("toolActions"); - toolAction->setWhatsThis(i18n("Erase\n\nErase pixels. Set the pixels to" - " be transparent\n\n(Tip: If you want to draw transparency with a" - " different tool, first click on \"Erase\" then on the tool you want" - " to use)")); - - toolAction = new TDERadioAction(i18n("Rectangular Selection"), - "selectrect", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectRect()), - actionCollection(), "edit_select_rectangle"); - toolAction->setExclusiveGroup( "toolActions" ); - toolAction->setWhatsThis(i18n("Select\n\nSelect a rectangular section" - " of the icon using the mouse.")); - - toolAction = new TDERadioAction(i18n("Circular Selection"), - "selectcircle", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectCircle()), - actionCollection(), "edit_select_circle"); - toolAction->setExclusiveGroup( "toolActions" ); - toolAction->setWhatsThis(i18n("Select\n\nSelect a circular section of the" - " icon using the mouse.")); -} - -void TDEIconEdit::updateAccels() -{ - actionCollection()->readShortcutSettings(); -} - -TQWidget *TDEIconEdit::createContainer( TQWidget *parent, int index, - const TQDomElement &element, int &id ) -{ - if ( element.attribute( "name" ) == "paletteToolBar" ) - { - m_paletteToolBar = new PaletteToolBar( this, "paletteToolBar" ); - m_paletteToolBar->setText( i18n( "Palette Toolbar" ) ); - return m_paletteToolBar; - } - - return KXMLGUIBuilder::createContainer( parent, index, element, id ); -} - -bool TDEIconEdit::setupStatusBar() -{ - statusbar = statusBar(); - - TQString str = i18n("Statusbar\n\nThe statusbar gives information on" - " the status of the current icon. The fields are:\n\n" - "\t- Application messages\n\t- Cursor position\n\t- Size\n\t- Zoom factor\n" - "\t- Number of colors"); - TQWhatsThis::add(statusBar(), str); - - statusbar->insertFixedItem("99999,99999", 0, true); - statusbar->insertFixedItem("99999 x 99999", 1, true); - statusbar->insertFixedItem(" 1:999", 2, true); - str = i18n("Colors: %1").arg(9999999); - statusbar->insertFixedItem(str, 3, true); - statusbar->insertItem("", 4); - - statusbar->changeItem( "", 0); - statusbar->changeItem( "", 1); - statusbar->changeItem( "", 2); - statusbar->changeItem( "", 3); - - return true; -} - -void TDEIconEdit::addRecent(const TQString & path) -{ - m_actRecent->addURL(KURL( path )); -} - -#include "kiconedit.moc" diff --git a/kiconedit/kiconedit.desktop b/kiconedit/kiconedit.desktop deleted file mode 100644 index da619ae2..00000000 --- a/kiconedit/kiconedit.desktop +++ /dev/null @@ -1,95 +0,0 @@ -[Desktop Entry] -GenericName=Icon Editor -GenericName[af]=Ikoon Redigeerder -GenericName[ar]=محرر الإيقونات -GenericName[bg]=Редактор на икони -GenericName[br]=Aozer arlunioù -GenericName[bs]=Editor ikona -GenericName[ca]=Editor d'icones -GenericName[cs]=Editor ikon -GenericName[cy]=Golygydd Eiconau -GenericName[da]=Ikoneditor -GenericName[de]=Editor für Arbeitsflächensymbole -GenericName[el]=Επεξεργαστής εικονιδίων -GenericName[eo]=Ilo por pentri kaj redakti piktogramojn -GenericName[es]=Editor de iconos -GenericName[et]=Ikoonide redaktor -GenericName[eu]=Ikono editorea -GenericName[fa]=ویرایشگر شمایل -GenericName[fi]=Kuvakemuokkain -GenericName[fr]=Éditeur d'icônes -GenericName[ga]=Eagarthóir Deilbhíní -GenericName[gl]=Editor de iconas -GenericName[he]=עורך סמלים -GenericName[hi]=प्रतीक (आइकॉन) संपादक -GenericName[hr]=Uređivač ikona -GenericName[hu]=Ikonszerkesztő -GenericName[is]=Táknmyndaritill -GenericName[it]=Editor di icone -GenericName[ja]=アイコンエディタ -GenericName[kk]=Таңбаша өңдегіші -GenericName[km]=កម្មវិធី​និពន្ធ​រូបតំណាង -GenericName[lt]=Ženkliukų redaktorius -GenericName[lv]=Ikonu Redaktors -GenericName[ms]=Editor Ikon -GenericName[nb]=Ikonredigerer -GenericName[nds]=Lüttbildeditor -GenericName[ne]=प्रतिमा सम्पादक -GenericName[nl]=Pictogrambewerker -GenericName[nn]=Ikonredigering -GenericName[nso]=Mofetosi wa Seemedi -GenericName[pa]=ਆਈਕਾਨ ਸੰਪਾਦਕ -GenericName[pl]=Edytor ikon -GenericName[pt]=Editor de Ícones -GenericName[pt_BR]=Editor de Ícones -GenericName[ro]=Editor de iconiţe -GenericName[ru]=Редактор пиктограмм -GenericName[se]=Govašdoaimmaheaddji -GenericName[sk]=Editor ikon -GenericName[sl]=Urejevalnik ikon -GenericName[sr]=Уређивач икона -GenericName[sr@Latn]=Uređivač ikona -GenericName[sv]=Ikoneditor -GenericName[ta]= கேசின்னம் திருத்தி -GenericName[tg]=Муҳаррири ишорот -GenericName[th]=เครื่องมือแก้ไขไอคอน -GenericName[tr]=Simge Düzenleyici -GenericName[uk]=Редактор піктограм -GenericName[uz]=Nishoncha tahrirchi -GenericName[uz@cyrillic]=Нишонча таҳрирчи -GenericName[ven]=Musengulusi wa Aikhono -GenericName[wa]=Aspougneu d' imådjetes -GenericName[xh]=Umhleli we Icon -GenericName[zh_CN]=图标编辑器 -GenericName[zh_HK]=圖示編輯器 -GenericName[zh_TW]=圖示編輯器 -GenericName[zu]=Umhleli we Icon -Name=TDEIconEdit -Name[af]=K-ikoon-redigeer -Name[ar]=برنامج TDEIconEdit -Name[cy]=KGolyguEicon -Name[eo]=Piktogramredaktilo -Name[hi]=के-आइकॉन-एडिट -Name[hr]=Uređivač ikona -Name[is]=Táknmyndaritill -Name[lv]=KIkonuRedaktors -Name[ms]=KIkonEdit -Name[ne]=केडीई प्रतिमा सम्पादन -Name[pl]=Edytor ikon -Name[pt_BR]=KEditor de Ícones -Name[ro]=Editor iconiţe -Name[sv]=Kiconedit -Name[ta]=கேசின்னம் திருத்து -Name[tr]=K Icon Düzenleyici -Name[ven]=U sengulusa ha aikhono ya K -Name[zh_TW]=TDEIconEdit 圖示編輯器 -MimeType=image/x-xpm;image/x-ico;image/png;image/jpeg; -Exec=kiconedit -caption "%c" %i %m %u -Icon=kiconedit -Path= -DocPath=kiconedit/index.html -Type=Application -Terminal=false - -X-DCOP-ServiceType=Multi -Categories=Qt;TDE;Graphics; diff --git a/kiconedit/kiconedit.h b/kiconedit/kiconedit.h deleted file mode 100644 index 7c6e74f0..00000000 --- a/kiconedit/kiconedit.h +++ /dev/null @@ -1,158 +0,0 @@ -/* - kiconedit - a small graphics drawing program for creating KDE icons - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KICONEDIT_H__ -#define __KICONEDIT_H__ - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "knew.h" -#include "kicon.h" -#include "kiconconfig.h" -#include "kicongrid.h" -#include "kresize.h" -#include "properties.h" - -class TDEIconEdit; -class KCommandHistory; -typedef TQPtrList WindowList; - -class TQWhatsThis; -class TQToolButton; -class TQLabel; -class PaletteToolBar; - -/** -* TDEIconEdit -* @short TDEIconEdit -* @author Thomas Tanghus -* @version 0.4 -*/ -class TDEIconEdit : public TDEMainWindow -{ - Q_OBJECT - -public: - TDEIconEdit( KURL url = KURL(), const char *name = "kiconedit"); - TDEIconEdit( const TQImage image, const char *name = "kiconedit"); - ~TDEIconEdit(); - - virtual TQSize sizeHint() const; - static WindowList windowList; - -signals: - void newname(const TQString &); - -public slots: - virtual void saveProperties(TDEConfig*); - virtual void readProperties(TDEConfig*); - void updateProperties(); - -protected slots: - void slotNewWin(const TQString & url = 0); - void slotNew(); - void slotOpen(); - void slotClose(); - void slotSave(); - void slotSaveAs(); - void slotPrint(); - void slotZoomIn(); - void slotZoomOut(); - void slotZoom1(); - void slotZoom2(); - void slotZoom5(); - void slotZoom10(); - void slotCopy(); - void slotCut(); - void slotPaste(); - void slotClear(); - void slotSaved(); - void slotSelectAll(); - void slotOpenRecent(const KURL&); - void slotToolPointer(); - void slotToolFreehand(); - void slotToolRectangle(); - void slotToolFilledRectangle(); - void slotToolCircle(); - void slotToolFilledCircle(); - void slotToolEllipse(); - void slotToolFilledEllipse(); - void slotToolSpray(); - void slotToolFlood(); - void slotToolLine(); - void slotToolEraser(); - void slotToolSelectRect(); - void slotToolSelectCircle(); - void slotConfigureSettings(); - void slotConfigureKeys(); - void slotShowGrid(); - void slotUpdateZoom( int ); - void slotUpdateStatusColors(uint); - void slotUpdateStatusColors(uint, uint*); - void slotUpdateStatusPos(int, int); - void slotUpdateStatusSize(int, int); - void slotUpdateStatusMessage(const TQString &); - void slotUpdateStatusName(const TQString &); - void slotUpdateStatusModified(bool); - void slotUpdateStatusScaling(int); - void slotUpdatePaste(bool); - void slotUpdateCopy(bool); - void slotOpenBlank(const TQSize); - void addRecent(const TQString &); - - virtual void dragEnterEvent(TQDragEnterEvent* event); - virtual void dropEvent(TQDropEvent *e); - -protected: - void init(); - void setupActions(); - bool setupStatusBar(); - void writeConfig(); - void updateAccels(); - - virtual bool queryClose(); - virtual TQWidget *createContainer( TQWidget*, int, const TQDomElement&, int& ); - - KCommandHistory* history; - PaletteToolBar *m_paletteToolBar; - KStatusBar *statusbar; - TDEIconEditGrid *grid; - KGridView *gridview; - TDEIconEditIcon *icon; - TQImage img; - TQString m_name; - - TDEAction *m_actCopy, *m_actPaste, *m_actCut, *m_actPasteNew; - TDEAction *m_actZoomIn, *m_actZoomOut; - TDERecentFilesAction *m_actRecent; -}; - -#endif //__KICONEDIT_H__ diff --git a/kiconedit/kiconeditslots.cpp b/kiconedit/kiconeditslots.cpp deleted file mode 100644 index 899a2b5d..00000000 --- a/kiconedit/kiconeditslots.cpp +++ /dev/null @@ -1,543 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "kiconedit.h" -#include "kiconcolors.h" -#include "palettetoolbar.h" - -#ifndef PICS_INCLUDED -#define PICS_INCLUDED -#include "pics/logo.xpm" -#endif - -void TDEIconEdit::updateProperties() -{ - TDEIconEditProperties *props = TDEIconEditProperties::self(); - gridview->setShowRulers(props->showRulers()); - if(props->bgMode() == TQWidget::FixedPixmap) - { - TQPixmap pix(props->bgPixmap()); - if(pix.isNull()) - { - TQPixmap pmlogo((const char**)logo); - pix = pmlogo; - } - gridview->viewPortWidget()->viewport()->setBackgroundPixmap(pix); - m_paletteToolBar->setPreviewBackground(pix); - } - else - { - gridview->viewPortWidget()->viewport() - ->setBackgroundColor(props->bgColor()); - m_paletteToolBar->setPreviewBackground(props->bgColor()); - } - grid->setTransparencyDisplayType(props->transparencyDisplayType()); - grid->setTransparencySolidColor(props->transparencySolidColor()); - grid->setCheckerboardColor1(props->checkerboardColor1()); - grid->setCheckerboardColor2(props->checkerboardColor2()); - grid->setCheckerboardSize(props->checkerboardSize()); - grid->update(); -} - -void TDEIconEdit::slotNewWin(const TQString & url) -{ - //kdDebug(4640) << "TDEIconEdit::openNewWin() - " << url << endl; - - TDEIconEdit *w = new TDEIconEdit(KURL(url), "kiconedit"); - TQ_CHECK_PTR(w); -} - - -void TDEIconEdit::slotNew() -{ - bool cancel = false; - if (grid->isModified()) - { - int r = KMessageBox::warningYesNoCancel(this, - i18n("The current file has been modified.\nDo you want to save it?"), TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); - - switch(r) - { - case KMessageBox::Yes: - if(!icon->save(&grid->image())) - { - cancel = true; - } - break; - - case KMessageBox::No: - break; - - case KMessageBox::Cancel: - cancel = true; - break; - - default: - break; - } - } - if(!cancel) - { - KNewIcon newicon(this); - if(newicon.exec()) - { - int r = newicon.openStyle(); - if(r == KNewIcon::Blank) - { - grid->editClear(); - const TQSize s = newicon.templateSize(); - //kdDebug(4640) << "Size: " << s.width() << " x " << s.height() << endl; - grid->setSize(s); - grid->setModified(false); - } - else if(r == KNewIcon::Template) - { - TQString str = newicon.templatePath(); - icon->open(&grid->image(), KURL( str )); - } - icon->setUrl(""); - emit newname(i18n("Untitled")); - } - } -} - - -void TDEIconEdit::slotOpen() -{ - bool cancel = false; - - if( grid->isModified() ) - { - int r = KMessageBox::warningYesNoCancel(this, - i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); - - switch( r ) - { - case KMessageBox::Yes: - if(!icon->save( &grid->image() )) - { - cancel = true; - } - break; - - case KMessageBox::No: - break; - - case KMessageBox::Cancel: - cancel = true; - break; - - default: - break; - } - } - - if( !cancel ) - { - if (icon->promptForFile( &grid->image() )) - { - grid->setModified(false); - } - } -} - -/* - close only the current window -*/ -void TDEIconEdit::slotClose() -{ - //kdDebug(4640) << "TDEIconEdit: Closing " << endl; - close(); -} - -void TDEIconEdit::slotSave() -{ - //kdDebug(4640) << "TDEIconEdit: slotSave() " << endl; - icon->save(&grid->image()); -} - - -void TDEIconEdit::slotSaveAs() -{ - //kdDebug(4640) << "TDEIconEdit: slotSaveAs() " << endl; - icon->saveAs(&grid->image()); -} - - -void TDEIconEdit::slotPrint() -{ - KPrinter printer; - - if ( printer.setup(this, i18n("Print %1").arg(icon->url().section('/', -1))) ) - { - int margin = 10, yPos = 0; - printer.setCreator("TDE Icon Editor"); - - TQPainter p; - p.begin( &printer ); - TQFontMetrics fm = p.fontMetrics(); - // need width/height - TQPaintDeviceMetrics metrics( &printer ); - - p.drawText( margin, margin + yPos, metrics.width(), fm.lineSpacing(), - ExpandTabs | DontClip, icon->url() ); - yPos = yPos + fm.lineSpacing(); - p.drawPixmap( margin, margin + yPos, grid->pixmap() ); - p.end(); - } -} - -void TDEIconEdit::slotZoomIn() -{ - grid->zoom(DirIn); -} - -void TDEIconEdit::slotZoomOut() -{ - grid->zoom(DirOut); -} - -void TDEIconEdit::slotZoom1() -{ - grid->zoomTo(1); -} - -void TDEIconEdit::slotZoom2() -{ - grid->zoomTo(2); -} - -void TDEIconEdit::slotZoom5() -{ - grid->zoomTo(5); -} - -void TDEIconEdit::slotZoom10() -{ - grid->zoomTo(10); -} - -void TDEIconEdit::slotCopy() -{ - grid->editCopy(); -} - -void TDEIconEdit::slotCut() -{ - grid->editCopy(true); -} - -void TDEIconEdit::slotPaste() -{ - static_cast(actionCollection() - ->action("tool_find_pixel"))->setChecked(true); - grid->setTool(TDEIconEditGrid::Find); - grid->editPaste(); -} - -void TDEIconEdit::slotClear() -{ - grid->editClear(); -} - -void TDEIconEdit::slotSelectAll() -{ - grid->setTool(TDEIconEditGrid::SelectRect); - grid->editSelectAll(); -} - -void TDEIconEdit::slotOpenRecent(const KURL& iconFile) -{ - bool cancel = false; - - if( grid->isModified() ) - { - int r = KMessageBox::warningYesNoCancel(this, - i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); - - switch( r ) - { - case KMessageBox::Yes: - if (!icon->save( &grid->image() )) - { - cancel = true; - } - break; - - case KMessageBox::No: - break; - - case KMessageBox::Cancel: - cancel = true; - break; - - default: - break; - } - } - - if( !cancel ) - { - if(icon->open(&grid->image(), iconFile)) - { - grid->setModified(false); - } - } -} - -void TDEIconEdit::slotConfigureSettings() -{ - TDEIconConfig* c = new TDEIconConfig(this); - c->exec(); - delete c; -} - -void TDEIconEdit::slotConfigureKeys() -{ - KKeyDialog::configure(actionCollection()); - - TDEIconEdit *ki = 0L; - for (ki = windowList.first(); ki; ki = windowList.next()) - { - if (ki != this) - { - ki->updateAccels(); - } - } -} - -void TDEIconEdit::slotShowGrid() -{ - bool b = TDEIconEditProperties::self()->showGrid(); - grid->setGrid( !b ); - TDEIconEditProperties::self()->setShowGrid( !b ); -} - -void TDEIconEdit::slotToolPointer() -{ - grid->setTool(TDEIconEditGrid::Find); -} - -void TDEIconEdit::slotToolFreehand() -{ - grid->setTool(TDEIconEditGrid::Freehand); -} - -void TDEIconEdit::slotToolRectangle() -{ - grid->setTool(TDEIconEditGrid::Rect); -} - -void TDEIconEdit::slotToolFilledRectangle() -{ - grid->setTool(TDEIconEditGrid::FilledRect); -} - -void TDEIconEdit::slotToolCircle() -{ - grid->setTool(TDEIconEditGrid::Circle); -} - -void TDEIconEdit::slotToolFilledCircle() -{ - grid->setTool(TDEIconEditGrid::FilledCircle); -} - -void TDEIconEdit::slotToolEllipse() -{ - grid->setTool(TDEIconEditGrid::Ellipse); -} - -void TDEIconEdit::slotToolFilledEllipse() -{ - grid->setTool(TDEIconEditGrid::FilledEllipse); -} - -void TDEIconEdit::slotToolSpray() -{ - grid->setTool(TDEIconEditGrid::Spray); -} - -void TDEIconEdit::slotToolFlood() -{ - grid->setTool(TDEIconEditGrid::FloodFill); -} - -void TDEIconEdit::slotToolLine() -{ - grid->setTool(TDEIconEditGrid::Line); -} - -void TDEIconEdit::slotToolEraser() -{ - grid->setTool(TDEIconEditGrid::Eraser); -} - -void TDEIconEdit::slotToolSelectRect() -{ - grid->setTool(TDEIconEditGrid::SelectRect); -} - -void TDEIconEdit::slotToolSelectCircle() -{ - grid->setTool(TDEIconEditGrid::SelectCircle); -} - -void TDEIconEdit::slotSaved() -{ - grid->setModified(false); -} - -void TDEIconEdit::slotUpdateZoom( int s ) -{ - m_actZoomOut->setEnabled( s>1 ); -} - -void TDEIconEdit::slotUpdateStatusPos(int x, int y) -{ - TQString str = i18n("Status Position", "%1, %2").arg(x).arg(y); - statusbar->changeItem( str, 0); -} - -void TDEIconEdit::slotUpdateStatusSize(int x, int y) -{ - TQString str = i18n("Status Size", "%1 x %2").arg(x).arg(y); - statusbar->changeItem( str, 1); -} - -void TDEIconEdit::slotUpdateStatusScaling(int s) -{ - TDEIconEditProperties::self()->setGridScale( s ); - TQString str; - - str.sprintf("1:%d", s); - statusbar->changeItem( str, 2); -} - -void TDEIconEdit::slotUpdateStatusColors(uint) -{ - TQString str = i18n("Colors: %1").arg(grid->numColors()); - statusbar->changeItem( str, 3); -} - -void TDEIconEdit::slotUpdateStatusColors(uint n, uint *) -{ - TQString str = i18n("Colors: %1").arg(n); - statusbar->changeItem( str, 3); -} - - -void TDEIconEdit::slotUpdateStatusMessage(const TQString & msg) -{ - statusbar->changeItem( msg, 4); -} - - -void TDEIconEdit::slotUpdateStatusName(const TQString & name) -{ - m_name = name; - - TQString text = m_name; - - if(grid->isModified()) - { - text += " ["+i18n("modified")+"]"; - } - - setCaption(text); -} - - -void TDEIconEdit::slotUpdateStatusModified(bool) -{ - slotUpdateStatusName(m_name); -} - -void TDEIconEdit::slotUpdatePaste(bool state) -{ - m_actPaste->setEnabled(state); - m_actPasteNew->setEnabled(state); -} - - -void TDEIconEdit::slotUpdateCopy(bool state) -{ - m_actCopy->setEnabled(state); - m_actCut->setEnabled(state); -} - - -void TDEIconEdit::slotOpenBlank(const TQSize s) -{ - grid->loadBlank( s.width(), s.height()); -} - - -void TDEIconEdit::dragEnterEvent(TQDragEnterEvent* e) -{ - e->accept(KURLDrag::canDecode(e)); -} - - -/* - accept drop of a file - opens file in current window - old code to drop image, as image, should be removed -*/ -void TDEIconEdit::dropEvent( TQDropEvent *e ) -{ - //kdDebug(4640) << "Got TQDropEvent!" << endl; - - KURL::List fileList; - bool loadedinthis = false; - - if(KURLDrag::decode(e, fileList)) - { - for(KURL::List::ConstIterator it = fileList.begin(); - it != fileList.end(); ++it) - { - //kdDebug(4640) << "In dropEvent for " << (*it).prettyURL() << endl; - const KURL &url = *it; - if(url.isValid()) - { - if (!grid->isModified() && !loadedinthis) - { - icon->open(&grid->image(), url); - loadedinthis = true; - } - else - { - slotNewWin(url.url()); - } - } - } - } -} - - diff --git a/kiconedit/kiconeditui.rc b/kiconedit/kiconeditui.rc deleted file mode 100644 index cdef162c..00000000 --- a/kiconedit/kiconeditui.rc +++ /dev/null @@ -1,66 +0,0 @@ - - - - &File - - - &Edit - - - - - - &Tools - - - - - - - - - - - - - - - - - &Settings - - - - - Main Toolbar - - - - - - - - - - Tools Toolbar - - - - - - - - - - - - - - - - - - Pallette Toolbar - - - diff --git a/kiconedit/kicongrid.cpp b/kiconedit/kicongrid.cpp deleted file mode 100644 index 0ed49f1e..00000000 --- a/kiconedit/kicongrid.cpp +++ /dev/null @@ -1,2263 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) - - Includes portions of code from TQt, - Copyright (C) 1992-2000 Trolltech AS. - - 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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include "kresize.h" -#include "properties.h" -#include "kicongrid.h" -#include "kiconedit.h" -#ifndef PICS_INCLUDED -#include "pics/logo.xpm" -#define PICS_INCLUDED -#endif - -#include - -void DrawCommand::execute() -{ - oldcolor = *((uint*)image->scanLine(y) + x); - *((uint*)image->scanLine(y) + x) = newcolor; - int cell = y * grid->numCols() + x; - grid->setUndoColor( cell, newcolor, false ); -} - -void DrawCommand::unexecute() -{ - *((uint*)image->scanLine(y) + x) = oldcolor; - int cell = y * grid->numCols() + x; - grid->setUndoColor( cell, oldcolor, false ); -} - -void RepaintCommand::execute() -{ - grid->update( area); -} - -KGridView::KGridView(TQImage *image, KCommandHistory* history, TQWidget *parent, const char *name) -: TQFrame(parent, name) -{ - _corner = 0L; - _hruler = _vruler = 0L; - _grid = 0L; - - acceptdrop = false; - - TDEIconEditProperties *props = TDEIconEditProperties::self(); - - viewport = new TQScrollView(this); - TQ_CHECK_PTR(viewport); - - _grid = new TDEIconEditGrid(image, history, viewport->viewport()); - TQ_CHECK_PTR(_grid); - viewport->addChild(_grid); - _grid->setGrid(props->showGrid()); - _grid->setCellSize(props->gridScale()); - - TQString str = i18n( "Icon draw grid\n\nThe icon grid is the area where" - " you draw the icons.\nYou can zoom in and out using the magnifying" - " glasses on the toolbar.\n(Tip: Hold the magnify button down for a" - " few seconds to zoom to a predefined scale)" ); - TQWhatsThis::add( _grid, str ); - - if(props->bgMode() == FixedPixmap) - { - TQPixmap pix(props->bgPixmap()); - if(pix.isNull()) - { - TQPixmap pmlogo((const char **)logo); - pix = pmlogo; - } - viewport->viewport()->setBackgroundPixmap(pix); - _grid->setBackgroundPixmap(pix); - } - else - { - viewport->viewport()->setBackgroundColor(props->bgColor()); - } - - _corner = new TQFrame(this); - _corner->setFrameStyle(TQFrame::WinPanel | TQFrame::Raised); - - _hruler = new KRuler(Qt::Horizontal, this); - _hruler->setEndLabel(i18n("width")); - _hruler->setOffset( -2 ); - _hruler->setRange(0, 1000); - - _vruler = new KRuler(Qt::Vertical, this); - _vruler->setEndLabel(i18n("height")); - _vruler->setOffset( -2 ); - _vruler->setRange(0, 1000); - - str = i18n( "Rulers\n\nThis is a visual representation of the current" - " cursor position" ); - TQWhatsThis::add( _hruler, str ); - TQWhatsThis::add( _vruler, str ); - - connect(_grid, TQT_SIGNAL(scalingchanged(int)), TQT_SLOT(scalingChange(int))); - connect(_grid, TQT_SIGNAL(sizechanged(int, int)), TQT_SLOT(sizeChange(int, int))); - connect(_grid, TQT_SIGNAL(needPainting()), TQT_SLOT(paintGrid())); - connect( _grid, TQT_SIGNAL(xposchanged(int)), _hruler, TQT_SLOT(slotNewValue(int)) ); - connect( _grid, TQT_SIGNAL(yposchanged(int)), _vruler, TQT_SLOT(slotNewValue(int)) ); - connect(viewport, TQT_SIGNAL(contentsMoving(int, int)), TQT_SLOT(moving(int, int))); - - setSizes(); - TQResizeEvent e(size(), size()); - resizeEvent(&e); -} - -void KGridView::paintGrid() -{ - _grid->update(viewRect()); -} - -void KGridView::setSizes() -{ - if(TDEIconEditProperties::self()->showRulers()) - { - _hruler->setLittleMarkDistance(_grid->scaling()); - _vruler->setLittleMarkDistance(_grid->scaling()); - - _hruler->setMediumMarkDistance(5); - _vruler->setMediumMarkDistance(5); - - _hruler->setBigMarkDistance(10); - _vruler->setBigMarkDistance(10); - - _hruler->setShowTinyMarks(true); - _hruler->setShowLittleMarks(false); - _hruler->setShowMediumMarks(true); - _hruler->setShowBigMarks(true); - _hruler->setShowEndMarks(true); - - _vruler->setShowTinyMarks(true); - _vruler->setShowLittleMarks(false); - _vruler->setShowMediumMarks(true); - _vruler->setShowBigMarks(true); - _vruler->setShowEndMarks(true); - - _hruler->setPixelPerMark(_grid->scaling()); - _vruler->setPixelPerMark(_grid->scaling()); - - _hruler->setMaxValue(_grid->width()+20); - _vruler->setMaxValue(_grid->height()+20); - - _hruler->show(); - _vruler->show(); - - _corner->show(); - //resize(_grid->width()+_vruler->width(), _grid->height()+_hruler->height()); - } - else - { - _hruler->hide(); - _vruler->hide(); - _corner->hide(); - //resize(_grid->size()); - } -} - -void KGridView::sizeChange(int, int) -{ - setSizes(); -} - -void KGridView::moving(int x, int y) -{ - _hruler->setOffset(abs(x)); - _vruler->setOffset(abs(y)); -} - -void KGridView::scalingChange(int) -{ - setSizes(); -} - -void KGridView::setShowRulers(bool mode) -{ - TDEIconEditProperties::self()->setShowRulers( mode ); - setSizes(); - TQResizeEvent e(size(), size()); - resizeEvent(&e); -} - -void KGridView::setAcceptDrop(bool a) -{ - if(a == acceptdrop) return; - acceptdrop = a; - paintDropSite(); -} - -void KGridView::checkClipboard() -{ - _grid->checkClipboard(); -} - -const TQRect KGridView::viewRect() -{ - int x, y, cx, cy; - if(viewport->horizontalScrollBar()->isVisible()) - { - x = viewport->contentsX(); - cx = viewport->viewport()->width(); - } - else - { - x = 0; - cx = viewport->contentsWidth(); - } - - if(viewport->verticalScrollBar()->isVisible()) - { - y = viewport->contentsY(); - cy = viewport->viewport()->height(); - } - else - { - y = 0; - cy = viewport->contentsHeight(); - } - - return TQRect(x, y, cx, cy); -} - -void KGridView::paintDropSite() -{ - TQPainter p; - p.begin( _grid ); - p.setRasterOp (NotROP); - p.drawRect(viewRect()); - p.end(); -} - -void KGridView::paintEvent(TQPaintEvent *) -{ - if(acceptdrop) - paintDropSite(); -} - - -void KGridView::resizeEvent(TQResizeEvent*) -{ - kdDebug(4640) << "KGridView::resizeEvent" << endl; - - setSizes(); - - if(TDEIconEditProperties::self()->showRulers()) - { - _hruler->setGeometry(_vruler->width(), 0, width(), _hruler->height()); - _vruler->setGeometry(0, _hruler->height(), _vruler->width(), height()); - - _corner->setGeometry(0, 0, _vruler->width(), _hruler->height()); - viewport->setGeometry(_corner->width(), _corner->height(), - width()-_corner->width(), height()-_corner->height()); - } - else - viewport->setGeometry(0, 0, width(), height()); -} - - -TDEIconEditGrid::TDEIconEditGrid(TQImage *image, KCommandHistory* h, TQWidget *parent, const char *name) - : KColorGrid(parent, name, 1) -{ - img = image; - history = h; - selected = 0; - m_command = 0; - - // the 42 normal kde colors - there can be an additional - // 18 custom colors in the custom colors palette - for(uint i = 0; i < 42; i++) - iconcolors.append(iconpalette[i]); - - setupImageHandlers(); - btndown = isselecting = ispasting = modified = false; - - img->create(32, 32, 32); - img->setAlphaBuffer(true); - clearImage(img); - - currentcolor = tqRgb(0,0,0)|OPAQUE_MASK; - emit colorSelected(currentcolor); - - setMouseTracking(true); - - setNumRows(32); - setNumCols(32); - fill(TRANSPARENT); - - connect( kapp->clipboard(), TQT_SIGNAL(dataChanged()), TQT_SLOT(checkClipboard())); - connect( h, TQT_SIGNAL(commandExecuted()), this, TQT_SLOT(updatePreviewPixmap() )); - createCursors(); - - TDEIconEditProperties *props = TDEIconEditProperties::self(); - - setTransparencyDisplayType(props->transparencyDisplayType()); - setTransparencySolidColor(props->transparencySolidColor()); - setCheckerboardColor1(props->checkerboardColor1()); - setCheckerboardColor2(props->checkerboardColor2()); - setCheckerboardSize(props->checkerboardSize()); -} - -TDEIconEditGrid::~TDEIconEditGrid() -{ - kdDebug(4640) << "TDEIconEditGrid - destructor: done" << endl; -} - -void TDEIconEditGrid::paintEvent(TQPaintEvent *e) -{ - const TQRect cellsRect(0, 0, numCols() * cellSize(), numRows() * cellSize()); - const TQRect paintCellsRect = cellsRect.intersect(e->rect()); - - if(!paintCellsRect.isEmpty()) - { - //TQTime time; - - //time.start(); - - TQRgb *imageBuffer = new TQRgb[paintCellsRect.width() * paintCellsRect.height()]; - const int cellsize = cellSize(); - const int firstCellPixelsRemaining = cellsize - paintCellsRect.left() % cellsize; - - if(transparencyDisplayType() == TRD_SOLIDCOLOR) - { - const TQRgb backgroundColor = transparencySolidColor().rgb(); - const int backgroundRed = transparencySolidColor().red(); - const int backgroundGreen = transparencySolidColor().green(); - const int backgroundBlue = transparencySolidColor().blue(); - const int firstCellX = paintCellsRect.left() / cellsize; - - for(int y = paintCellsRect.top(); y <= paintCellsRect.bottom(); y++) - { - TQRgb *dest = imageBuffer + (y - paintCellsRect.top()) * paintCellsRect.width(); - - if(y % cellsize == 0 || dest == imageBuffer) - { - // Paint the first scanline in each block of cellSize() identical lines. - // The remaineder can just be copied from this one. - const int cellY = y / cellsize; - TQRgb *src = gridcolors.data() + cellY * numCols() + firstCellX; - - TQRgb sourcePixel = *src++; - int sourceAlpha = tqAlpha(sourcePixel); - - TQRgb c; - - if(sourceAlpha == 255) - { - c = sourcePixel; - } - else - if(sourceAlpha == 0) - { - c = backgroundColor; - } - else - { - const int sourceRed = tqRed(sourcePixel); - const int sourceGreen = tqGreen(sourcePixel); - const int sourceBlue = tqBlue(sourcePixel); - - int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; - r = backgroundRed + ((r + (r >> 8)) >> 8); - - int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; - g = backgroundGreen + ((g + (g >> 8)) >> 8); - - int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; - b = backgroundBlue + ((b + (b >> 8)) >> 8); - - c = tqRgb(r, g, b); - } - - int cellPixelsRemaining = firstCellPixelsRemaining; - - for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) - { - if(cellPixelsRemaining == 0) - { - cellPixelsRemaining = cellsize; - - // Fetch the next source pixel - sourcePixel = *src++; - sourceAlpha = tqAlpha(sourcePixel); - - if(sourceAlpha == 255) - { - c = sourcePixel; - } - else - if(sourceAlpha == 0) - { - c = backgroundColor; - } - else - { - const int sourceRed = tqRed(sourcePixel); - const int sourceGreen = tqGreen(sourcePixel); - const int sourceBlue = tqBlue(sourcePixel); - - //int r = backgroundRed + (sourceAlpha * (sourceRed - backgroundRed)) / 255; - //int g = backgroundGreen + (sourceAlpha * (sourceGreen - backgroundGreen)) / 255; - //int b = backgroundBlue + (sourceAlpha * (sourceBlue - backgroundBlue)) / 255; - - int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; - r = backgroundRed + ((r + (r >> 8)) >> 8); - - int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; - g = backgroundGreen + ((g + (g >> 8)) >> 8); - - int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; - b = backgroundBlue + ((b + (b >> 8)) >> 8); - - c = tqRgb(r, g, b); - } - } - - cellPixelsRemaining--; - - *dest++ = c; - } - } - else - { - // Copy the scanline above. - memcpy(dest, dest - paintCellsRect.width(), paintCellsRect.width() * sizeof(TQRgb)); - } - } - } - else - { - int squareSize; - const int fixedPointMultiplier = 4; - - if(checkerboardSize() == CHK_SMALL) - { - squareSize = (cellSize() * fixedPointMultiplier) / 4; - } - else - if(checkerboardSize() == CHK_MEDIUM) - { - squareSize = (cellSize() * fixedPointMultiplier) / 2; - } - else - { - squareSize = (2 * cellSize() * fixedPointMultiplier) / 2; - } - - TQRgb *color1ScanLine = new TQRgb[paintCellsRect.width()]; - TQRgb *color2ScanLine = new TQRgb[paintCellsRect.width()]; - TQRgb *color1Buffer = color1ScanLine; - TQRgb *color2Buffer = color2ScanLine; - - for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) - { - if((((x * fixedPointMultiplier) / squareSize) & 1) == 0) - { - *color1Buffer++ = checkerboardColor1().rgb(); - *color2Buffer++ = checkerboardColor2().rgb(); - } - else - { - *color1Buffer++ = checkerboardColor2().rgb(); - *color2Buffer++ = checkerboardColor1().rgb(); - } - } - - const int firstCellX = paintCellsRect.left() / cellsize; - const int firstCellPixelsRemaining = cellsize - paintCellsRect.left() % cellsize; - int lastCellY = -1; - int lastLineFirstSquareColour = 0; - - for(int y = paintCellsRect.top(); y <= paintCellsRect.bottom(); y++) - { - TQRgb *dest = imageBuffer + (y - paintCellsRect.top()) * paintCellsRect.width(); - const int cellY = y / cellsize; - - int firstSquareColour; - const TQRgb *checkerboardSrc; - - if((((y * fixedPointMultiplier) / squareSize) & 1) == 0) - { - firstSquareColour = 1; - checkerboardSrc = color1ScanLine; - } - else - { - firstSquareColour = 2; - checkerboardSrc = color2ScanLine; - } - - if(cellY == lastCellY && firstSquareColour == lastLineFirstSquareColour) - { - // Copy the scanline above. - memcpy(dest, dest - paintCellsRect.width(), paintCellsRect.width() * sizeof(TQRgb)); - } - else - { - TQRgb *src = gridcolors.data() + cellY * numCols() + firstCellX; - - TQRgb sourcePixel = *src++; - int sourceRed = tqRed(sourcePixel); - int sourceGreen = tqGreen(sourcePixel); - int sourceBlue = tqBlue(sourcePixel); - int sourceAlpha = tqAlpha(sourcePixel); - - int cellPixelsRemaining = firstCellPixelsRemaining; - - for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) - { - if(cellPixelsRemaining == 0) - { - cellPixelsRemaining = cellsize; - - // Fetch the next source pixel - sourcePixel = *src++; - sourceRed = tqRed(sourcePixel); - sourceGreen = tqGreen(sourcePixel); - sourceBlue = tqBlue(sourcePixel); - sourceAlpha = tqAlpha(sourcePixel); - } - - cellPixelsRemaining--; - - TQRgb c; - - if(sourceAlpha == 255) - { - c = sourcePixel; - } - else - if(sourceAlpha == 0) - { - c = *checkerboardSrc; - } - else - { - const int backgroundColor = *checkerboardSrc; - const int backgroundRed = tqRed(backgroundColor); - const int backgroundGreen = tqGreen(backgroundColor); - const int backgroundBlue = tqBlue(backgroundColor); - - //int r = backgroundRed + (sourceAlpha * (sourceRed - backgroundRed)) / 255; - //int g = backgroundGreen + (sourceAlpha * (sourceGreen - backgroundGreen)) / 255; - //int b = backgroundBlue + (sourceAlpha * (sourceBlue - backgroundBlue)) / 255; - - int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; - r = backgroundRed + ((r + (r >> 8)) >> 8); - - int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; - g = backgroundGreen + ((g + (g >> 8)) >> 8); - - int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; - b = backgroundBlue + ((b + (b >> 8)) >> 8); - - c = tqRgb(r, g, b); - } - - *dest++ = c; - checkerboardSrc++; - } - } - - lastCellY = cellY; - lastLineFirstSquareColour = firstSquareColour; - } - - delete [] color1ScanLine; - delete [] color2ScanLine; - } - - TQImage image((uchar *)(imageBuffer), paintCellsRect.width(), paintCellsRect.height(), 32, 0, 0, -#if X_BYTE_ORDER == X_LITTLE_ENDIAN - TQImage::LittleEndian); -#else - TQImage::BigEndian); -#endif - Q_ASSERT(!image.isNull()); - - TQPixmap _pixmap; - _pixmap.convertFromImage(image); - - TQPainter p; - p.begin(&_pixmap); - paintForeground(&p, e); - p.end(); - - bitBlt(this, paintCellsRect.left(), paintCellsRect.top(), &_pixmap); - - //kdDebug(4640) << "Image render elapsed: " << time.elapsed() << endl; - - delete [] imageBuffer; - } -} - -void TDEIconEditGrid::paintForeground(TQPainter* p, TQPaintEvent* e) -{ - TQWMatrix matrix; - - matrix.translate(-e->rect().x(), -e->rect().y()); - p->setWorldMatrix( matrix ); - - TQRect cellsRect(0, 0, numCols() * cellSize(), numRows() * cellSize()); - TQRect paintCellsRect = cellsRect.intersect(e->rect()); - - if(!paintCellsRect.isEmpty()) - { - int firstColumn = paintCellsRect.left() / cellSize(); - int lastColumn = paintCellsRect.right() / cellSize(); - - int firstRow = paintCellsRect.top() / cellSize(); - int lastRow = paintCellsRect.bottom() / cellSize(); - - p->setPen(TQColor(0, 0, 0)); - p->setBrush(TQColor(0, 0, 0)); - - for(int column = firstColumn; column <= lastColumn; column++) - { - for(int row = firstRow; row <= lastRow; row++) - { - int x = column * cellSize(); - int y = row * cellSize(); - - if((ispasting || isselecting) && isMarked(column, row)) - { - p->drawWinFocusRect(x + 1, y + 1, cellSize() - 2, cellSize() - 2); - } - else - { - switch( tool ) - { - case FilledRect: - case Rect: - case Ellipse: - case Circle: - case FilledEllipse: - case FilledCircle: - case Line: - if(btndown && isMarked(column, row)) - { - if(cellSize() > 1) - { - p->drawWinFocusRect( x + 1, y + 1, cellSize() - 2, cellSize() - 2); - } - else - { - p->drawPoint(x, y); - } - } - break; - - default: - break; - } - } - } - } - } - - if(hasGrid()&& !(cellSize()==1)) - { - p->setPen(TQColor(0, 0, 0)); - int x = e->rect().x() - ((e->rect().x() % cellSize()) + cellSize()); - if(x < 0) x = 0; - int y = e->rect().y() - ((e->rect().y() % cellSize()) + cellSize()); - if(y < 0) y = 0; - int cx = e->rect().right() + cellSize(); - int cy = e->rect().bottom() + cellSize(); - - // draw grid lines - for(int i = x; i < cx; i += cellSize()) - p->drawLine(i, y, i, cy); - - for(int i = y; i < cy; i += cellSize()) - p->drawLine(x, i, cx, i); - } -} - -void TDEIconEditGrid::mousePressEvent( TQMouseEvent *e ) -{ - if(!e || (e->button() != Qt::LeftButton)) - return; - - int row = findRow( e->pos().y() ); - int col = findCol( e->pos().x() ); - //int cell = row * numCols() + col; - - if(!img->valid(col, row)) - return; - - btndown = true; - start.setX(col); - start.setY(row); - - if(ispasting) - { - ispasting = false; - editPaste(true); - } - - if(isselecting) - { - TQPointArray a(pntarray.copy()); - pntarray.resize(0); - drawPointArray(a, Mark); - emit selecteddata(false); - } - - switch( tool ) - { - case SelectRect: - case SelectCircle: - isselecting = true; - break; - default: - break; - } -} - -void TDEIconEditGrid::mouseMoveEvent( TQMouseEvent *e ) -{ - if(!e) return; - - int row = findRow( e->pos().y() ); - int col = findCol( e->pos().x() ); - int cell = row * numCols() + col; - - if(img->valid(col, row)) - { - //kdDebug(4640) << col << " X " << row << endl; - emit poschanged(col, row); - // for the rulers - emit xposchanged((col*scaling())+scaling()/2); - emit yposchanged((row*scaling())+scaling()/2); - } - - TQPoint tmpp(col, row); - if(tmpp == end) return; - - // need to use intersection of rectangles to allow pasting - // only that part of clip image which intersects -jwc- - if(ispasting && !btndown && img->valid(col, row)) - { - if( (col + cbsize.width()) > (numCols()-1) ) - insrect.setX(numCols()-insrect.width()); - else - insrect.setX(col); - if( (row + cbsize.height()) > (numRows()-1) ) - insrect.setY(numRows()-insrect.height()); - else - insrect.setY(row); - - insrect.setSize(cbsize); - start = insrect.topLeft(); - end = insrect.bottomRight(); - drawRect(false); - return; - } - - if(!img->valid(col, row) || !btndown) - return; - - end.setX(col); - end.setY(row); - - if(isselecting) - { - if(tool == SelectRect) - drawRect(false); - else - drawEllipse(false); - return; - } - - bool erase=false; - switch( tool ) - { - case Eraser: - erase=true; - - case Freehand: - { - if( !m_command ) - m_command = new KMacroCommand( i18n("Free Hand") ); - - if(erase) - setColor( cell, TRANSPARENT ); - else - setColor( cell, currentcolor ); - - if ( selected != cell ) - { - setModified( true ); - int prevSel = selected; - selected = cell; - TQRect area = TQRect( col*cellsize,row*cellsize, cellsize, cellsize ).unite( - TQRect ( (prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize ) ); - - m_command->addCommand( new RepaintCommand( area, this ) ); - DrawCommand* dc = new DrawCommand( col, row, colorAt(cell), img, this ); - RepaintCommand* rp = new RepaintCommand( area, this ); - dc->execute(); - rp->execute(); - m_command->addCommand( dc ); - m_command->addCommand( rp ); - } - break; - } - case Find: - { - iconcolors.closestMatch(colorAt(cell)); - if ( selected != cell ) - { - int prevSel = selected; - selected = cell; - update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); - update(col*cellsize,row*cellsize, cellsize, cellsize); - emit colorSelected(colorAt(selected)); - } - break; - } - case Ellipse: - case Circle: - case FilledEllipse: - case FilledCircle: - { - drawEllipse(false); - break; - } - case FilledRect: - case Rect: - { - drawRect(false); - break; - } - case Line: - { - drawLine(false, false); - break; - } - case Spray: - { - drawSpray(TQPoint(col, row)); - setModified(true); - break; - } - default: - break; - } - - p = *img; - emit changed(TQPixmap(p)); -} - -void TDEIconEditGrid::mouseReleaseEvent( TQMouseEvent *e ) -{ - if(!e || (e->button() != Qt::LeftButton)) - return; - - int row = findRow( e->pos().y() ); - int col = findCol( e->pos().x() ); - btndown = false; - end.setX(col); - end.setY(row); - int cell = row * numCols() + col; - bool erase=false; - switch( tool ) - { - case Eraser: - erase=true; - //currentcolor = TRANSPARENT; - case Freehand: - { - if(!img->valid(col, row)) - return; - if(erase) - setColor( cell, TRANSPARENT ); - else - setColor( cell, currentcolor ); - //if ( selected != cell ) - //{ - setModified( true ); - int prevSel = selected; - selected = cell; - update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); - update(col*cellsize,row*cellsize, cellsize, cellsize); - //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); - //updateCell( row, col, FALSE ); - *((uint*)img->scanLine(row) + col) = colorAt(cell); - p = *img; - //} - - if( m_command ) { - history->addCommand( m_command, false ); - m_command = 0; - } - - break; - } - case Ellipse: - case Circle: - case FilledEllipse: - case FilledCircle: - { - drawEllipse(true); - break; - } - case FilledRect: - case Rect: - { - drawRect(true); - break; - } - case Line: - { - drawLine(true, false); - break; - } - case Spray: - { - drawSpray(TQPoint(col, row)); - break; - } - case FloodFill: - { - TQApplication::setOverrideCursor(waitCursor); - drawFlood(col, row, colorAt(cell)); - TQApplication::restoreOverrideCursor(); - updateColors(); - emit needPainting(); - p = *img; - break; - } - case Find: - { - currentcolor = colorAt(cell); - if ( selected != cell ) - { - int prevSel = selected; - selected = cell; - update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); - update(col*cellsize,row*cellsize, cellsize, cellsize); - emit colorSelected(currentcolor); - //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); - //updateCell( row, col, FALSE ); - } - - break; - } - default: - break; - } - - emit changed(TQPixmap(p)); - //emit colorschanged(numColors(), data()); -} - -//void TDEIconEditGrid::setColorSelection( const TQColor &color ) -void TDEIconEditGrid::setColorSelection( uint c ) -{ - currentcolor = c; - emit colorSelected(currentcolor); -} - -void TDEIconEditGrid::loadBlank( int w, int h ) -{ - img->create(w, h, 32); - img->setAlphaBuffer(true); - clearImage(img); - setNumRows(h); - setNumCols(w); - fill(TRANSPARENT); - emit sizechanged(numCols(), numRows()); - emit colorschanged(numColors(), data()); - history->clear(); -} - - - -void TDEIconEditGrid::load( TQImage *image) -{ - kdDebug(4640) << "TDEIconEditGrid::load" << endl; - - setUpdatesEnabled(false); - - if(image == 0L) - { - TQString msg = i18n("There was an error loading a blank image.\n"); - KMessageBox::error(this, msg); - return; - } - - *img = image->convertDepth(32); - img->setAlphaBuffer(true); - setNumRows(img->height()); - setNumCols(img->width()); - - for(int y = 0; y < numRows(); y++) - { - uint *l = (uint*)img->scanLine(y); - for(int x = 0; x < numCols(); x++, l++) - { - setColor((y*numCols())+x, *l, false); - } - //kdDebug(4640) << "Row: " << y << endl; - kapp->processEvents(200); - } - - updateColors(); - emit sizechanged(numCols(), numRows()); - emit colorschanged(numColors(), data()); - emit changed(pixmap()); - setUpdatesEnabled(true); - emit needPainting(); - //repaint(viewRect(), false); - history->clear(); -} - -const TQPixmap &TDEIconEditGrid::pixmap() -{ - if(!img->isNull()) - p = *img; - //p.convertFromImage(*img, 0); - return(p); -} - -void TDEIconEditGrid::getImage(TQImage *image) -{ - kdDebug(4640) << "TDEIconEditGrid::getImage" << endl; - *image = *img; -} - -bool TDEIconEditGrid::zoomTo(int scale) -{ - TQApplication::setOverrideCursor(waitCursor); - setUpdatesEnabled(false); - setCellSize( scale ); - setUpdatesEnabled(true); - emit needPainting(); - TQApplication::restoreOverrideCursor(); - emit scalingchanged(cellSize()); - - if(scale == 1) - return false; - return true; -} - -bool TDEIconEditGrid::zoom(Direction d) -{ - int f = (d == DirIn) ? (cellSize()+1) : (cellSize()-1); - TQApplication::setOverrideCursor(waitCursor); - setUpdatesEnabled(false); - setCellSize( f ); - setUpdatesEnabled(true); - //emit needPainting(); - TQApplication::restoreOverrideCursor(); - - emit scalingchanged(cellSize()); - if(d == DirOut && cellSize() <= 1) - return false; - return true; -} - -void TDEIconEditGrid::checkClipboard() -{ - bool ok = false; - TQImage tmp = clipboardImage(ok); - if(ok) - emit clipboarddata(true); - else - { - emit clipboarddata(false); - } -} - -TQImage TDEIconEditGrid::clipboardImage(bool &ok) -{ - //###### Remove me later. - //Workaround TQt bug -- check whether format provided first. - //Code below is from TQDragObject, to match the mimetype list.... - - TQStrList fileFormats = TQImageIO::inputFormats(); - fileFormats.first(); - bool oneIsSupported = false; - while ( fileFormats.current() ) - { - TQCString format = fileFormats.current(); - TQCString type = "image/" + format.lower(); - if (kapp->clipboard()->data()->provides(type ) ) - { - oneIsSupported = true; - } - fileFormats.next(); - } - if (!oneIsSupported) - { - ok = false; - return TQImage(); - } - - TQImage image = kapp->clipboard()->image(); - ok = !image.isNull(); - if ( ok ) - { - image = image.convertDepth(32); - image.setAlphaBuffer(true); - } - return image; -} - - -void TDEIconEditGrid::editSelectAll() -{ - start.setX(0); - start.setY(0); - end.setX(numCols()-1); - end.setY(numRows()-1); - isselecting = true; - drawRect(false); - emit newmessage(i18n("All selected")); -} - -void TDEIconEditGrid::editClear() -{ - clearImage(img); - fill(TRANSPARENT); - update(); - setModified(true); - p = *img; - emit changed(p); - emit newmessage(i18n("Cleared")); -} - -TQImage TDEIconEditGrid::getSelection(bool cut) -{ - const TQRect rect = pntarray.boundingRect(); - int nx = 0, ny = 0, nw = 0, nh = 0; - rect.rect(&nx, &ny, &nw, &nh); - - TQImage tmp(nw, nh, 32); - tmp.setAlphaBuffer(true); - clearImage(&tmp); - - int s = pntarray.size(); - - for(int i = 0; i < s; i++) - { - int x = pntarray[i].x(); - int y = pntarray[i].y(); - if(img->valid(x, y) && rect.contains(TQPoint(x, y))) - { - *((uint*)tmp.scanLine(y-ny) + (x-nx)) = *((uint*)img->scanLine(y) + x); - if(cut) - { - *((uint*)img->scanLine(y) + x) = TRANSPARENT; - setColor( (y*numCols()) + x, TRANSPARENT, false ); - } - } - } - - TQPointArray a(pntarray.copy()); - pntarray.resize(0); - drawPointArray(a, Mark); - emit selecteddata(false); - if(cut) - { - updateColors(); - update(rect.x()*cellSize(), rect.y()*cellSize(), - rect.width()*cellSize(), rect.height()*cellSize()); - p = *img; - emit changed(p); - emit colorschanged(numColors(), data()); - emit newmessage(i18n("Selected area cut")); - setModified(true); - } - else - emit newmessage(i18n("Selected area copied")); - - return tmp; -} - -void TDEIconEditGrid::editCopy(bool cut) -{ - kapp->clipboard()->setImage(getSelection(cut)); - isselecting = false; -} - - -void TDEIconEditGrid::editPaste(bool paste) -{ - bool ok = false; - TQImage tmp = clipboardImage(ok); - - TDEIconEditProperties *props = TDEIconEditProperties::self(); - - if(ok) - { - if( (tmp.size().width() > img->size().width()) - || (tmp.size().height() > img->size().height()) ) - { - if(KMessageBox::warningYesNo(this, - i18n("The clipboard image is larger than the current" - " image!\nPaste as new image?"),TQString(),i18n("Paste"), i18n("Do Not Paste")) == 0) - { - editPasteAsNew(); - } - return; - } - else if(!paste) - { - ispasting = true; - cbsize = tmp.size(); - return; - // emit newmessage(i18n("Pasting")); - } - else - { - //kdDebug(4640) << "TDEIconEditGrid: Pasting at: " << insrect.x() << " x " << insrect.y() << endl; - TQApplication::setOverrideCursor(waitCursor); - - for(int y = insrect.y(), ny = 0; y < numRows() && ny < insrect.height(); y++, ny++) - { - uint *l = ((uint*)img->scanLine(y)+insrect.x()); - uint *cl = (uint*)tmp.scanLine(ny); - for(int x = insrect.x(), nx = 0; x < numCols() && nx < insrect.width(); x++, nx++, l++, cl++) - { - if(props->pasteTransparent()) - { - *l = *cl; - } - else - { - // Porter-Duff Over composition - double alphaS = tqAlpha(*cl) / 255.0; - double alphaD = tqAlpha(*l) / 255.0; - - double r = tqRed(*cl) * alphaS + (1 - alphaS) * tqRed(*l) * alphaD; - double g = tqGreen(*cl) * alphaS + (1 - alphaS) * tqGreen(*l) * alphaD; - double b = tqBlue(*cl) * alphaS + (1 - alphaS) * tqBlue(*l) * alphaD; - double a = alphaS + (1 - alphaS) * alphaD; - - // Remove multiplication by alpha - - if(a > 0) - { - r /= a; - g /= a; - b /= a; - } - else - { - r = 0; - g = 0; - b = 0; - } - - int ir = (int)(r + 0.5); - - if(ir < 0) - { - ir = 0; - } - else - if(ir > 255) - { - ir = 255; - } - - int ig = (int)(g + 0.5); - - if(ig < 0) - { - ig = 0; - } - else - if(ig > 255) - { - ig = 255; - } - - int ib = (int)(b + 0.5); - - if(ib < 0) - { - ib = 0; - } - else - if(ib > 255) - { - ib = 255; - } - - int ia = (int)((a * 255) + 0.5); - - if(ia < 0) - { - ia = 0; - } - else - if(ia > 255) - { - ia = 255; - } - - *l = tqRgba(ir, ig, ib, ia); - } - - setColor((y*numCols())+x, (uint)*l, false); - } - } - updateColors(); - update(insrect.x()*cellSize(), insrect.y()*cellSize(), - insrect.width()*cellSize(), insrect.height()*cellSize()); - - TQApplication::restoreOverrideCursor(); - - setModified(true); - p = *img; - emit changed(TQPixmap(p)); - emit sizechanged(numCols(), numRows()); - emit colorschanged(numColors(), data()); - emit newmessage(i18n("Done pasting")); - } - } - else - { - TQString msg = i18n("Invalid pixmap data in clipboard!\n"); - KMessageBox::sorry(this, msg); - } -} - - -void TDEIconEditGrid::editPasteAsNew() -{ - bool ok = false; - TQImage tmp = clipboardImage(ok); - - if(ok) - { - if(isModified()) - { - TDEIconEdit *w = new TDEIconEdit(tmp); - TQ_CHECK_PTR(w); - } - else - { - *img = tmp; - load(img); - setModified(true); - //repaint(viewRect(), false); - - p = *img; - emit changed(TQPixmap(p)); - emit sizechanged(numCols(), numRows()); - emit colorschanged(numColors(), data()); - emit newmessage(i18n("Done pasting")); - history->clear(); - } - } - else - { - TQString msg = i18n("Invalid pixmap data in clipboard!\n"); - KMessageBox::error(this, msg); - } -} - - -void TDEIconEditGrid::editResize() -{ - kdDebug(4640) << "TDEIconGrid::editResize" << endl; - KResizeDialog *rs = new KResizeDialog(this, 0, TQSize(numCols(), numRows())); - if(rs->exec()) - { - const TQSize s = rs->getSize(); - *img = img->smoothScale(s.width(), s.height()); - load(img); - - setModified(true); - } - delete rs; -} - - -void TDEIconEditGrid::setSize(const TQSize s) -{ - kdDebug(4640) << "::setSize: " << s.width() << " x " << s.height() << endl; - - img->create(s.width(), s.height(), 32); - img->setAlphaBuffer(true); - clearImage(img); - load(img); -} - - -void TDEIconEditGrid::createCursors() -{ - TQBitmap mask(22, 22); - TQPixmap pix; - - cursor_normal = TQCursor(arrowCursor); - - pix = BarIcon("colorpicker-cursor"); - if(pix.isNull()) - { - cursor_colorpicker = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading colorpicker-cursor.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask()); - pix.setMask(mask); - cursor_colorpicker = TQCursor(pix, 1, 21); - } - - pix = BarIcon("paintbrush-cursor"); - if(pix.isNull()) - { - cursor_paint = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading paintbrush.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask()); - pix.setMask(mask); - cursor_paint = TQCursor(pix, 0, 19); - } - - pix = BarIcon("fill-cursor"); - if(pix.isNull()) - { - cursor_flood = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading fill-cursor.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask()); - pix.setMask(mask); - cursor_flood = TQCursor(pix, 3, 20); - } - - pix = BarIcon("aim-cursor"); - if(pix.isNull()) - { - cursor_aim = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading aim-cursor.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask()); - pix.setMask(mask); - cursor_aim = TQCursor(pix, 10, 10); - } - - pix = BarIcon("airbrush-cursor"); - if(pix.isNull()) - { - cursor_spray = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading airbrush-cursor.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask(true)); - pix.setMask(mask); - cursor_spray = TQCursor(pix, 0, 20); - } - - pix = BarIcon("eraser-cursor"); - if(pix.isNull()) - { - cursor_erase = cursor_normal; - kdDebug(4640) << "TDEIconEditGrid: Error loading eraser-cursor.xpm" << endl; - } - else - { - mask = TQPixmap(pix.createHeuristicMask(true)); - pix.setMask(mask); - cursor_erase = TQCursor(pix, 1, 16); - } -} - - - -void TDEIconEditGrid::setTool(DrawTool t) -{ - btndown = false; - tool = t; - - if(tool != SelectRect && tool != SelectCircle) - isselecting = false; - - switch( tool ) - { - case SelectRect: - isselecting = true; - setCursor(cursor_aim); - break; - case SelectCircle: - isselecting = true; - setCursor(cursor_aim); - break; - case Line: - case Ellipse: - case Circle: - case FilledEllipse: - case FilledCircle: - case FilledRect: - case Rect: - setCursor(cursor_aim); - break; - case Freehand: - setCursor(cursor_paint); - break; - case Spray: - setCursor(cursor_spray); - break; - case Eraser: - setCursor(cursor_erase); - break; - case FloodFill: - setCursor(cursor_flood); - break; - case Find: - setCursor(cursor_colorpicker); - break; - default: - break; - } -} - - -void TDEIconEditGrid::drawFlood(int x, int y, uint oldcolor) -{ - if((!img->valid(x, y)) - || (colorAt((y * numCols())+x) != oldcolor) - || (colorAt((y * numCols())+x) == currentcolor)) - return; - - *((uint*)img->scanLine(y) + x) = currentcolor; - setColor((y*numCols())+x, currentcolor, false); - - setModified(true); - - drawFlood(x, y-1, oldcolor); - drawFlood(x, y+1, oldcolor); - drawFlood(x-1, y, oldcolor); - drawFlood(x+1, y, oldcolor); - //TODO: add undo -} - - -void TDEIconEditGrid::drawSpray(TQPoint point) -{ - int x = (point.x()-5); - int y = (point.y()-5); - - //kdDebug(4640) << "drawSpray() - " << x << " X " << y << endl; - - pntarray.resize(0); - int points = 0; - for(int i = 1; i < 4; i++, points++) - { - int dx = (rand() % 10); - int dy = (rand() % 10); - pntarray.putPoints(points, 1, x+dx, y+dy); - } - - drawPointArray(pntarray, Draw); -} - - -//This routine is from TQt sources -- it's the branch of TQPointArray::makeEllipse( int x, int y, int w, int h ) that's not normally compiled -//It seems like TDEIconEdit relied on the TQt1 semantics for makeEllipse, which broke -//the tool with reasonably recent TQt versions. -//Thankfully, TQt includes the old code #ifdef'd, which is hence included here -static void TQPA_makeEllipse(TQPointArray& ar, int x, int y, int w, int h ) -{ // midpoint, 1/4 ellipse - if ( w <= 0 || h <= 0 ) { - if ( w == 0 || h == 0 ) { - ar.resize( 0 ); - return; - } - if ( w < 0 ) { // negative width - w = -w; - x -= w; - } - if ( h < 0 ) { // negative height - h = -h; - y -= h; - } - } - int s = (w+h+2)/2; // max size of xx,yy array - int *px = new int[s]; // 1/4th of ellipse - int *py = new int[s]; - int xx, yy, i=0; - double d1, d2; - double a2=(w/2)*(w/2), b2=(h/2)*(h/2); - xx = 0; - yy = int(h/2); - d1 = b2 - a2*(h/2) + 0.25*a2; - px[i] = xx; - py[i] = yy; - i++; - while ( a2*(yy-0.5) > b2*(xx+0.5) ) { // region 1 - if ( d1 < 0 ) { - d1 = d1 + b2*(3.0+2*xx); - xx++; - } else { - d1 = d1 + b2*(3.0+2*xx) + 2.0*a2*(1-yy); - xx++; - yy--; - } - px[i] = xx; - py[i] = yy; - i++; - } - d2 = b2*(xx+0.5)*(xx+0.5) + a2*(yy-1)*(yy-1) - a2*b2; - while ( yy > 0 ) { // region 2 - if ( d2 < 0 ) { - d2 = d2 + 2.0*b2*(xx+1) + a2*(3-2*yy); - xx++; - yy--; - } else { - d2 = d2 + a2*(3-2*yy); - yy--; - } - px[i] = xx; - py[i] = yy; - i++; - } - s = i; - ar.resize( 4*s ); // make full point array - x += w/2; - y += h/2; - for ( i=0; i end.x()) - { - cx = x - end.x(); - x = x - cx; - } - else - cx = end.x() - x; - if(y > end.y()) - { - cy = y - end.y(); - y = y - cy; - } - else - cy = end.y() - y; - - int d = (cx > cy) ? cx : cy; - - //kdDebug(4640) << x << ", " << y << " - " << d << " " << d << endl; - pntarray.resize(0); - drawPointArray(a, Mark); - - if(tool == Circle || tool == FilledCircle || tool == SelectCircle) - TQPA_makeEllipse(pntarray, x, y, d, d); - else if(tool == Ellipse || tool == FilledEllipse) - TQPA_makeEllipse(pntarray, x, y, cx, cy); - - if((tool == FilledEllipse) || (tool == FilledCircle) - || (tool == SelectCircle)) - { - int s = pntarray.size(); - int points = s; - for(int i = 0; i < s; i++) - { - int x = pntarray[i].x(); - int y = pntarray[i].y(); - for(int j = 0; j < s; j++) - { - if((pntarray[j].y() == y) && (pntarray[j].x() > x)) - { - for(int k = x; k < pntarray[j].x(); k++, points++) - pntarray.putPoints(points, 1, k, y); - break; - } - } - } - } - - drawPointArray(pntarray, Mark); - - if(tool == SelectCircle && pntarray.size() > 0 && !ispasting) - emit selecteddata(true); -} - - -void TDEIconEditGrid::drawRect(bool drawit) -{ - if(drawit) - { - drawPointArray(pntarray, Draw); - p = *img; - emit changed(p); - return; - } - - TQPointArray a(pntarray.copy()); - int x = start.x(), y = start.y(), cx, cy; - - if(x > end.x()) - { - cx = x - end.x(); - x = x - cx; - } - else - cx = end.x() - x; - if(y > end.y()) - { - cy = y - end.y(); - y = y - cy; - } - else - cy = end.y() - y; - - //kdDebug(4640) << x << ", " << y << " - " << cx << " " << cy << endl; - pntarray.resize(0); - drawPointArray(a, Mark); // remove previous marking - - int points = 0; - bool pasting = ispasting; - - if(tool == FilledRect || (tool == SelectRect)) - { - for(int i = x; i <= x + (pasting ? cx + 1 : cx); i++) - { - for(int j = y; j <= y+cy; j++, points++) - pntarray.putPoints(points, 1, i, j); - } - } - else - { - for(int i = x; i <= x+cx; i++, points++) - pntarray.putPoints(points, 1, i, y); - for(int i = y; i <= y+cy; i++, points++) - pntarray.putPoints(points, 1, x, i); - for(int i = x; i <= x+cx; i++, points++) - pntarray.putPoints(points, 1, i, y+cy); - for(int i = y; i <= y+cy; i++, points++) - pntarray.putPoints(points, 1, x+cx, i); - } - - drawPointArray(pntarray, Mark); - - if(tool == SelectRect && pntarray.size() > 0 && !ispasting) - emit selecteddata(true); -} - - -void TDEIconEditGrid::drawLine(bool drawit, bool drawStraight) -{ - if(drawit) - { - drawPointArray(pntarray, Draw); - p = *img; - emit changed(p); - return; - } - - TQPointArray a(pntarray.copy()); - pntarray.resize(0); - - // remove previous marking - drawPointArray(a, Mark); - - int x, y, dx, dy, delta; - - dx = end.x() - start.x(); - dy = end.y() - start.y(); - x = start.x(); - y = start.y(); - - delta = TQMAX(abs(dx), abs(dy)); - int deltaX = abs(dx); - int deltaY = abs(dy); - - if ((drawStraight) && (delta > 0)) - { - dx /= delta; - dy /= delta; - - for(int i = 0; i <= delta; i++) - { - pntarray.putPoints(i, 1, x, y); - x += dx; - y += dy; - } - } - - else if ((delta > 0) && (deltaX >= deltaY)) - { - for(int i = 0; i <= deltaX; i++) - { - pntarray.putPoints(i, 1, x, y); - - if(dx > 0) - x++; - else - x--; - - if(dy >= 0) - y = start.y() + (abs(start.x() - x) * deltaY) / deltaX; - else - y = start.y() - (abs(start.x() - x) * deltaY) / deltaX; - } - } - - else if ((delta > 0) && (deltaY > deltaX)) - { - for(int i = 0; i <= deltaY; i++) - { - pntarray.putPoints(i, 1, x, y); - - if(dy > 0) - y++; - else - y--; - - if(dx >= 0) - x = start.x() + (abs(start.y() - y) * deltaX) / deltaY; - else - x = start.x() - (abs(start.y() - y) * deltaX) / deltaY; - } - } - - drawPointArray(pntarray, Mark); -} - - -void TDEIconEditGrid::drawPointArray(TQPointArray a, DrawAction action) -{ - TQRect area( a.boundingRect().x()*cellSize()-1, a.boundingRect().y()*cellSize()-1, - a.boundingRect().width()*cellSize()+1, a.boundingRect().height()*cellSize()+1 ); - - KMacroCommand* macro = 0; - bool doupdate = false; - - if( a.size() > 0 && action == Draw ) { - // might cause a memmory leak, if - // macro is never used and never - // added to the history! TODO: Fix this - macro = new KMacroCommand( i18n("Drawn Array") ); - RepaintCommand* rc = new RepaintCommand( area, this ); - macro->addCommand( rc ); - } - - int s = a.size(); //((rect.size().width()) * (rect.size().height())); - for(int i = 0; i < s; i++) - { - int x = a[i].x(); - int y = a[i].y(); - - if(img->valid(x, y) && TQT_TQRECT_OBJECT(a.boundingRect()).contains(a[ i ])) - { - //kdDebug(4640) << "x: " << x << " - y: " << y << endl; - switch( action ) - { - case Draw: - { - DrawCommand* dc = new DrawCommand( x, y, currentcolor, img, this ); - dc->execute(); - //*((uint*)img->scanLine(y) + x) = currentcolor; //colors[cell]|OPAQUE; - //int cell = y * numCols() + x; - //setColor( cell, currentcolor, false ); - doupdate = true; - //updateCell( y, x, FALSE ); - macro->addCommand( dc ); - break; - } - - case Mark: - case UnMark: - update(x*cellsize,y*cellsize, cellsize, cellsize); - //updateCell( y, x, true ); - break; - - default: - break; - } - } - } - - - if(doupdate) - { - setModified( true ); - updateColors(); - RepaintCommand* rc = new RepaintCommand( area, this ); - rc->execute(); - macro->addCommand( rc ); - pntarray.resize(0); - // add to undo/redo history - history->addCommand( macro, false ); } -} - -void TDEIconEditGrid::updatePreviewPixmap() -{ - p = *img; - emit changed(TQPixmap(p)); -} - - -bool TDEIconEditGrid::isMarked(TQPoint point) -{ - return isMarked(point.x(), point.y()); -} - - -bool TDEIconEditGrid::isMarked(int x, int y) -{ - if(((y * numCols()) + x) == selected) - return true; - - int s = pntarray.size(); - for(int i = 0; i < s; i++) - { - if(y == pntarray[i].y() && x == pntarray[i].x()) - return true; - } - - return false; -} - - -// Fast diffuse dither to 3x3x3 color cube -// Based on TQt's image conversion functions -static bool kdither_32_to_8( const TQImage *src, TQImage *dst ) -{ - register TQRgb *p; - uchar *b; - int y; - - //printf("kconvert_32_to_8\n"); - - if ( !dst->create(src->width(), src->height(), 8, 256) ) { - kdWarning() << "OImage: destination image not valid" << endl; - return FALSE; - } - - int ncols = 256; - - static uint bm[16][16]; - static int init=0; - if (!init) - { - // Build a Bayer Matrix for dithering - init = 1; - int n, i, j; - - bm[0][0]=0; - - for (n=1; n<16; n*=2) - { - for (i=0; isetNumColors( ncols ); - -#define MAX_R 2 -#define MAX_G 2 -#define MAX_B 2 -#define INDEXOF(r,g,b) (((r)*(MAX_G+1)+(g))*(MAX_B+1)+(b)) - - int rc, gc, bc; - - for ( rc=0; rc<=MAX_R; rc++ ) // build 2x2x2 color cube - for ( gc=0; gc<=MAX_G; gc++ ) - for ( bc=0; bc<=MAX_B; bc++ ) - { - dst->setColor( INDEXOF(rc,gc,bc), - tqRgb( rc*255/MAX_R, gc*255/MAX_G, bc*255/MAX_B ) ); - } - - int sw = src->width(); - int* line1[3]; - int* line2[3]; - int* pv[3]; - - line1[0] = new int[src->width()]; - line2[0] = new int[src->width()]; - line1[1] = new int[src->width()]; - line2[1] = new int[src->width()]; - line1[2] = new int[src->width()]; - line2[2] = new int[src->width()]; - pv[0] = new int[sw]; - pv[1] = new int[sw]; - pv[2] = new int[sw]; - - for ( y=0; y < src->height(); y++ ) - { - p = (TQRgb *)src->scanLine(y); - b = dst->scanLine(y); - int endian = (TQImage::systemByteOrder() == TQImage::BigEndian); - int x; - uchar* q = const_cast(src)->scanLine(y); - uchar* q2 = const_cast(src)->scanLine(y+1 < src->height() ? y + 1 : 0); - for (int chan = 0; chan < 3; chan++) - { - b = dst->scanLine(y); - int *l1 = (y&1) ? line2[chan] : line1[chan]; - int *l2 = (y&1) ? line1[chan] : line2[chan]; - if ( y == 0 ) - { - for (int i=0; iheight() ) - { - for (int i=0; i>4; - l2[x+1] += err>>4; - } - l2[x]+=(err*5)>>4; - if (x>1) - l2[x-1]+=(err*3)>>4; - } - } - else - { - for (x=sw; x-->0; ) - { - int pix = TQMAX(TQMIN(2, (l1[x] * 2 + 128)/ 255), 0); - int err = l1[x] - pix * 255 / 2; - pv[chan][x] = pix; - - // Spread the error around... - if ( x > 0 ) - { - l1[x-1] += (err*7)>>4; - l2[x-1] += err>>4; - } - l2[x]+=(err*5)>>4; - if (x+1 < sw) - l2[x+1]+=(err*3)>>4; - } - } - } - if (endian) - { - for (x=0; xheight(); y++) - { - uint *l = (uint*)img->scanLine(y); - for(int x = 0; x < img->width(); x++, l++) - { - if(*l < 0xff000000) - { - *l = *l | 0xff000000; - } - } - } - - load(img); - return; - -/* -#if [[[TQT_VERSION IS DEPRECATED]]] > 140 - *img = img->convertDepthWithPalette(32, iconpalette, 42); - load(img); - return; -#endif -*/ - - TQApplication::setOverrideCursor(waitCursor); - for(int y = 0; y < numRows(); y++) - { - uint *l = (uint*)img->scanLine(y); - for(int x = 0; x < numCols(); x++, l++) - { - if(*l != TRANSPARENT) - { - if(!iconcolors.contains(*l)) - *l = iconcolors.closestMatch(*l); - } - } - } - - load(img); - setModified(true); - TQApplication::restoreOverrideCursor(); -} - - -void TDEIconEditGrid::grayScale() -{ - for(int y = 0; y < numRows(); y++) - { - uint *l = (uint*)img->scanLine(y); - for(int x = 0; x < numCols(); x++, l++) - { - if(*l != TRANSPARENT) - { - uint c = tqGray(*l); - *l = tqRgba(c, c, c, tqAlpha(*l)); - } - } - } - - load(img); - setModified(true); -} - - -void TDEIconEditGrid::clearImage(TQImage *image) -{ - if(image->depth() != 32) - { - image->fill(TRANSPARENT); - } - else - { - // TQImage::fill() does not set the alpha channel so do it - // manually. - for(int y = 0; y < image->height(); y++) - { - uint *l = (uint*)image->scanLine(y); - for(int x = 0; x < image->width(); x++, l++) - { - *l = TRANSPARENT; - } - } - } -} - - -void TDEIconEditGrid::setModified(bool m) -{ - if(m != modified) - { - modified = m; - emit modifiedchanged(m); - } -} - - -#include "kicongrid.moc" -// vim: set ts=4: diff --git a/kiconedit/kicongrid.h b/kiconedit/kicongrid.h deleted file mode 100644 index a88a78be..00000000 --- a/kiconedit/kicongrid.h +++ /dev/null @@ -1,265 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KICONEDITGRID_H__ -#define __KICONEDITGRID_H__ - -#include -#include -#include -#include -#include -#include -#include - -#include "kcolorgrid.h" - -class KCommandHistory; -class KRuler; -class TDEIconEditGrid; -class TQScrollView; - -enum Direction { - DirIn = 0, DirOut = 1, - DirUp = DirIn, DirDown = DirOut, - DirLeft, DirRight -}; - -class DrawCommand : public KCommand { - public: - DrawCommand( int xx, int yy, uint newcol, TQImage* img, TDEIconEditGrid* g ) { - x = xx; - y = yy; - newcolor = newcol; - image = img; - grid = g; - } - - void execute(); - void unexecute(); - TQString name() const { - return i18n("Drawed Something"); - } - - protected: - int x; - int y; - uint newcolor; - uint oldcolor; - TQImage* image; - TDEIconEditGrid* grid; -}; - -class RepaintCommand : public KCommand { - public: - RepaintCommand( TQRect a, TDEIconEditGrid* g ) { - area = a; - grid = g; - } - - void execute(); - void unexecute() { - execute(); - } - - TQString name() const { - return "repainted"; - } - protected: - TDEIconEditGrid* grid; - TQRect area; -}; - -class KGridView : public TQFrame -{ - Q_OBJECT - -public: - KGridView( TQImage *image, KCommandHistory* history, TQWidget * parent = 0, const char *name = 0); - - KRuler *hruler() { return _hruler;} - KRuler *vruler() { return _vruler;} - TQFrame *corner() { return _corner;} - TDEIconEditGrid *grid() { return _grid; } - void setShowRulers(bool mode); - void setAcceptDrop(bool a); - const TQRect viewRect(); - TQScrollView *viewPortWidget() { return viewport;} - -public slots: - void sizeChange(int, int); - void moving(int, int); - void scalingChange(int); - void paintGrid(); - void checkClipboard(); - -protected: - virtual void paintEvent(TQPaintEvent*); - virtual void resizeEvent(TQResizeEvent*); - void paintDropSite(); - void setSizes(); - - TQFrame *_corner; - TDEIconEditGrid *_grid; - KRuler *_hruler, *_vruler; - TQScrollView *viewport; - bool acceptdrop; -}; - -/** -* TDEIconEditGrid -* @short TDEIconEditGrid -* @author Thomas Tanghus -* @version 0.3 -*/ -class TDEIconEditGrid : public KColorGrid -{ - Q_OBJECT - -public: - TDEIconEditGrid( TQImage *image, KCommandHistory* h, TQWidget * parent = 0, const char *name = 0); - virtual ~TDEIconEditGrid(); - - enum DrawTool { Line, Freehand, FloodFill, Spray, Rect, FilledRect, Circle, - FilledCircle, Ellipse, FilledEllipse, Eraser, SelectRect, SelectCircle, Find }; - enum DrawAction { Mark, UnMark, Draw }; - - void setGrid(bool g) { KColorGrid::setGrid(g); emit needPainting(); } - bool isModified() { return modified; }; - void setModified(bool m); - const TQPixmap &pixmap(); - const TQImage &image() { return *img; } - TQImage clipboardImage(bool &ok); - TQImage getSelection(bool); - int rows() { return numRows(); }; - int cols() { return numCols(); }; - uint getColors( uint *_colors) { return colors(_colors); } - bool isMarked(TQPoint p); - bool isMarked(int x, int y); - int scaling() { return cellSize(); } - void loadBlank( int w = 0, int h = 0); - void setUndoColor( int colNum, uint v, bool update = true ) { - setColor( colNum, v, update ); - }; - - enum TransparencyDisplayType - { - TRD_SOLIDCOLOR, - TRD_CHECKERBOARD - }; - enum CheckerboardSize - { - CHK_SMALL = 0, - CHK_MEDIUM = 1, - CHK_LARGE = 2 - }; - - TransparencyDisplayType transparencyDisplayType() const { return m_transparencyDisplayType; } - TQColor checkerboardColor1() const { return m_checkerboardColor1; } - TQColor checkerboardColor2() const { return m_checkerboardColor2; } - CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } - TQColor transparencySolidColor() const { return m_transparencySolidColor; } - - void setTransparencyDisplayType(TransparencyDisplayType t) { m_transparencyDisplayType = t; } - void setCheckerboardColor1(const TQColor& c) { m_checkerboardColor1 = c; } - void setCheckerboardColor2(const TQColor& c) { m_checkerboardColor2 = c; } - void setCheckerboardSize(CheckerboardSize size) { m_checkerboardSize = size; } - void setTransparencySolidColor(const TQColor& c) { m_transparencySolidColor = c; } - -public slots: - void load( TQImage *); - void editCopy(bool cut = false); - void editPaste(bool paste = false); - void editPasteAsNew(); - void editSelectAll(); - void editClear(); - void getImage(TQImage *image); -//#if [[[TQT_VERSION IS DEPRECATED]]] <= 140 - void editResize(); -//#endif - void setSize(const TQSize s); - void grayScale(); - void mapToKDEPalette(); - void setTool(DrawTool tool); - bool zoom(Direction direct); - bool zoomTo(int); - - void checkClipboard(); - -signals: - void scalingchanged(int); - void changed( const TQPixmap & ); - void sizechanged( int, int ); - void poschanged( int, int ); - void xposchanged( int ); - void yposchanged( int ); - void newmessage(const TQString &); - void clipboarddata(bool); - void selecteddata(bool); - void needPainting(); - void modifiedchanged(bool); - void colorSelected(uint); - -protected slots: - void setColorSelection( uint ); - void updatePreviewPixmap(); - -protected: - virtual void paintEvent(TQPaintEvent*); - virtual void paintCell( TQPainter*, int, int ) {} - virtual void paintForeground(TQPainter* p, TQPaintEvent* e); - virtual void mousePressEvent(TQMouseEvent*); - virtual void mouseReleaseEvent(TQMouseEvent*); - virtual void mouseMoveEvent(TQMouseEvent*); - void createCursors(); - void drawPointArray(TQPointArray, DrawAction); - void drawEllipse(bool); - void drawLine(bool drawIt, bool drawStraight); - void drawRect(bool); - void drawSpray(TQPoint); - void drawFlood(int x, int y, uint oldcolor); - static void clearImage(TQImage *image); - - uint currentcolor; - TQPoint start, end; - TQRect insrect; - TQSize cbsize; - TQImage *img; - TQPixmap p; - int selected, tool; //, numrows, numcols; - bool modified, btndown, ispasting, isselecting; - TQPointArray pntarray; - KColorArray iconcolors; - KCommandHistory* history; - KMacroCommand* m_command; - TQCursor cursor_normal, cursor_aim, cursor_flood, cursor_spray, cursor_erase, cursor_paint, cursor_colorpicker; - TransparencyDisplayType m_transparencyDisplayType; - TQColor m_checkerboardColor1; - TQColor m_checkerboardColor2; - CheckerboardSize m_checkerboardSize; - TQColor m_transparencySolidColor; -}; - - - -#endif //__KICONEDITGRID_H__ - - - diff --git a/kiconedit/knew.cpp b/kiconedit/knew.cpp deleted file mode 100644 index 2536816f..00000000 --- a/kiconedit/knew.cpp +++ /dev/null @@ -1,326 +0,0 @@ -/* - KDE Draw - a small graphics drawing program for the KDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include "knew.h" - -TDEIconTemplateContainer* TDEIconTemplateContainer::instance = 0; - -void createStandardTemplates(TDEIconTemplateContainer *list) -{ - TDEIconLoader *kil = TDEGlobal::iconLoader(); - - TDEIconTemplate it; - it.path = kil->iconPath("standard", TDEIcon::User); - it.title = i18n("Standard File"); - list->append(it); - - it.path = kil->iconPath("source", TDEIcon::User); - it.title = i18n("Source File"); - list->append(it); - - it.path = kil->iconPath("compressed", TDEIcon::User); - it.title = i18n("Compressed File"); - list->append(it); - - it.path = kil->iconPath("folder", TDEIcon::User); - it.title = i18n("Standard Folder"); - list->append(it); - - it.path = kil->iconPath("package", TDEIcon::User); - it.title = i18n("Standard Package"); - list->append(it); - - it.path = kil->iconPath("mini-folder", TDEIcon::User); - it.title = i18n("Mini Folder"); - list->append(it); - - it.path = kil->iconPath("mini-package", TDEIcon::User); - it.title = i18n("Mini Package"); - list->append(it); -} - -void TDEIconTemplateContainer::save() -{ - TDEConfig *k = kapp->config(); - k->setGroup("Templates"); - - TQStringList names; - for (TQValueListIterator iter = begin(); iter != end(); iter++) - { - names.append((*iter).title); - } - - k->writeEntry("Names", names); - - for(unsigned int i = 0; i < names.count(); i++) - { - k->writePathEntry(names[i], (*this)[i].path); - } -} - -TDEIconTemplateContainer::TDEIconTemplateContainer() : TQValueList() -{ - TQStrList names; - TDEConfig *k = kapp->config(); - k->setGroup("Templates"); - k->readListEntry("Names", names); - for(int i = 0; i < (int)names.count(); i++) - { - TDEIconTemplate it; - it.path = k->readPathEntry(names.at(i)); - it.title = names.at(i); - //kdDebug(4640) << "Template: " << names.at(i) << "\n" << path.data() << endl; - append(it); - } - - if(count() == 0) - { - createStandardTemplates(this); - } -} - -TDEIconTemplateContainer::~TDEIconTemplateContainer() -{ - clear(); -} - -TDEIconListBoxItem::TDEIconListBoxItem( TDEIconTemplate t ) - : TQListBoxItem(), icontemplate(t) -{ - //kdDebug(4640) << "TDEIconListBoxItem - " << t->path.data() << ", " << t->title.data() << endl; - - pm.load(t.path); - setText( t.title ); -} - -void TDEIconListBoxItem::reloadIcon() -{ - pm.load(icontemplate.path); - setText( icontemplate.title ); -} - - - -void TDEIconListBoxItem::paint( TQPainter *p ) -{ - p->drawPixmap( 3, 0, pm ); - TQFontMetrics fm = p->fontMetrics(); - int yPos; // vertical text position - if ( pm.height() < fm.height() ) - yPos = fm.ascent() + fm.leading()/2; - else - yPos = pm.height()/2 - fm.height()/2 + fm.ascent(); - p->drawText( pm.width() + 5, yPos, text() ); -} - -int TDEIconListBoxItem::height(const TQListBox *lb ) const -{ - return TQMAX( pm.height(), lb->fontMetrics().lineSpacing() + 1 ); -} - -int TDEIconListBoxItem::width(const TQListBox *lb ) const -{ - return pm.width() + lb->fontMetrics().width( text() ) + 6; -} - -NewSelect::NewSelect(TQWidget *parent) : TQWidget( parent ) -{ - wiz = (KWizard*) parent; - grp = new TQButtonGroup( this ); - connect( grp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( buttonClicked( int ) ) ); - grp->setExclusive( true ); - - TQVBoxLayout* ml = new TQVBoxLayout( this ); - ml->addWidget( grp, 1 ); - //ml->addWidget(grp, 10, AlignLeft); - TQVBoxLayout* l = new TQVBoxLayout( grp, 10 ); - - rbscratch = new TQRadioButton( i18n( "Create from scratch" ), grp ); - l->addWidget( rbscratch, 1 ); - //l->addWidget(rbscratch, 5, AlignLeft); - - rbtempl = new TQRadioButton( i18n( "Create from template" ), grp ); - l->addWidget( rbtempl, 1 ); - //l->addWidget(rbtempl, 5, AlignLeft); - - //grp->setMinimumSize(grp->childrenRect().size()); - - grp->setButton( 0 ); -} - -NewSelect::~NewSelect() -{ -} - -void NewSelect::buttonClicked(int id) -{ - //kdDebug(4640) << "Button: " << id << endl; - - emit iconopenstyle(id); -} - -NewFromTemplate::NewFromTemplate( TQWidget* parent ) - : TQWidget( parent ) -{ - wiz = (KWizard*) parent; - - TQVBoxLayout* ml = new TQVBoxLayout(this); - - grp = new TQGroupBox( i18n( "Templates" ), this ); - ml->addWidget( grp, 1 ); - //ml->addWidget(grp, 10, AlignLeft); - - TQHBoxLayout* l = new TQHBoxLayout( grp, 15 ); - - templates = new TDEIconListBox( grp ); - connect( templates, TQT_SIGNAL( highlighted( int ) ), TQT_SLOT( checkSelection( int ) ) ); - l->addWidget( templates ); - - for( int i = 0; i < (int) TDEIconTemplateContainer::self()->count(); i++ ) - templates->insertItem( new TDEIconListBoxItem( *TDEIconTemplateContainer::self()->at( i ) ) ); -} - -NewFromTemplate::~NewFromTemplate() -{ -} - -void NewFromTemplate::checkSelection( int ) -{ - //kdDebug(4640) << "checkSelection(int) " << templates->currentItem() << endl; - if( templates->currentItem() != -1 ) - wiz->finishButton()->setEnabled( true ); - else - wiz->finishButton()->setEnabled( false ); -} - -KNewIcon::KNewIcon( TQWidget* parent ) - : KWizard( parent, 0, true ) -{ - //kdDebug(4640) << "KNewIcon" << endl; - setCaption( i18n( "Create New Icon" ) ); - resize( 400, 250 ); - - openstyle = 0; - - finishButton()->setEnabled( true ); - cancelButton()->setEnabled( true ); - nextButton()->setEnabled( false ); - - select = new NewSelect( this ); - connect( select, TQT_SIGNAL( iconopenstyle( int ) ), TQT_SLOT( iconOpenStyle( int ) ) ); - - scratch = new KResizeWidget( this, 0, TQSize( 32, 32 ) ); - // this doesn't accept default valid size, besides spin buttons won't allow - // an invalid size to be set by the user - forces user to change valid default - // size to create the new icon object - - connect( scratch, TQT_SIGNAL( validSize( bool ) ), TQT_SLOT( checkPage( bool ) ) ); - connect(this, TQT_SIGNAL(selected(const TQString &)), this, TQT_SLOT(checkPage(const TQString &))); - templ = new NewFromTemplate(this); - templ->hide(); - - addPage(select, i18n("Select Icon Type")); - addPage(scratch, i18n("Create From Scratch")); - act = scratch; - //addPage(templ, i18n("Create From Template")); -} - -KNewIcon::~KNewIcon() -{ - delete select; - delete scratch; - delete templ; -} - -void KNewIcon::okClicked() -{ - if(openstyle == Blank) - emit newicon(scratch->getSize()); - else - emit newicon(templ->path()); - hide(); - setResult(1); - accept(); -} - -void KNewIcon::cancelClicked() -{ - hide(); - setResult(0); - reject(); -} - -void KNewIcon::iconOpenStyle(int style) -{ - openstyle = style; - - if( act ) - removePage( act ); - - if(openstyle == Blank) - { - act = scratch; - setNextEnabled( act, true ); - addPage( scratch, i18n( "Create From Scratch" ) ); - } - else if( openstyle == Template ) - { - act = templ; - setNextEnabled( act, true ); - addPage( templ, i18n( "Create From Template" ) ); - } -} - -void KNewIcon::checkPage( bool b) -{ - //kdDebug(4640) << "checkPage(int) " << openstyle << " " << p << endl; - if(openstyle == Blank) - finishButton()->setEnabled(true); - else if( !b ) - finishButton()->setEnabled(false); - else - templ->checkSelection(0); -} - -void KNewIcon::checkPage(const TQString &) -{ - if(currentPage() == select || openstyle == Blank) - finishButton()->setEnabled(true); - else - finishButton()->setEnabled(false); -} -#include "knew.moc" - - - - - diff --git a/kiconedit/knew.h b/kiconedit/knew.h deleted file mode 100644 index faae9684..00000000 --- a/kiconedit/knew.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - KDE Draw - a small graphics drawing program for the KDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KNEWICON_H__ -#define __KNEWICON_H__ - -#include -#include -#include -#include - -#include - -#include "kresize.h" - -class TDEIconListBox; -class TDEIconTemplateContainer; -class TQButtonGroup; -class TQRadioButton; -class TQGroupBox; - -struct TDEIconTemplate -{ - TQString path; - TQString title; -}; - -class TDEIconListBoxItem : public TQListBoxItem -{ -public: - TDEIconListBoxItem( TDEIconTemplate ); - - - const TQString path() { return icontemplate.path; } - TDEIconTemplate& iconTemplate() { return icontemplate; } - void reloadIcon(); - -protected: - virtual void paint( TQPainter * ); - virtual int height( const TQListBox * ) const; - virtual int width( const TQListBox * ) const; -private: - TQPixmap pm; - TDEIconTemplate icontemplate; -}; - -class TDEIconListBox : public TQListBox -{ - Q_OBJECT - -public: - TDEIconListBox( TQWidget *parent ) : TQListBox(parent) {} ; - const TQString path(int idx) { return ((TDEIconListBoxItem*)item(idx))->path(); } - TDEIconTemplate& iconTemplate(int idx) { return ((TDEIconListBoxItem*)item(idx))->iconTemplate(); } - -}; - -class TDEIconTemplateContainer : public TQValueList -{ -public: - static TDEIconTemplateContainer* self() - { - if (!instance) - instance = new TDEIconTemplateContainer; - return instance; - } - - void save(); - -private: - static TDEIconTemplateContainer* instance; - - const TDEIconTemplateContainer operator = (const TDEIconTemplateContainer&); - TDEIconTemplateContainer(const TDEIconTemplateContainer&); - - TDEIconTemplateContainer(); - ~TDEIconTemplateContainer(); -}; - -class NewSelect : public TQWidget -{ - Q_OBJECT - -public: - NewSelect(TQWidget *parent); - ~NewSelect(); - -signals: - void iconopenstyle(int); - -protected slots: - void buttonClicked(int); - -protected: - KWizard *wiz; - TQButtonGroup *grp; - TQRadioButton *rbscratch, *rbtempl; -}; - -class NewFromTemplate : public TQWidget -{ - Q_OBJECT - -public: - NewFromTemplate(TQWidget *parent); - ~NewFromTemplate(); - - const TQString path() { return TQString(templates->path(templates->currentItem())); } - -public slots: - void checkSelection(int); - -protected: - TDEIconListBox *templates; - KWizard *wiz; - TQGroupBox *grp; -}; - -class KNewIcon : public KWizard -{ - Q_OBJECT - -public: - KNewIcon(TQWidget *parent); - ~KNewIcon(); - - enum { Blank = 0, Template = 1}; - int openStyle() { return openstyle; } - const TQString templatePath() { return TQString(templ->path()); } - const TQSize templateSize() { return scratch->getSize(); } - -protected slots: - void okClicked(); - void cancelClicked(); - void iconOpenStyle(int); - void checkPage(bool); - void checkPage(const TQString &); - -signals: - void newicon(const TQSize); - void newicon(const TQString); - -protected: - NewSelect *select; - KResizeWidget *scratch; - NewFromTemplate *templ; - TQWidget *act; - int openstyle; -}; - -#endif // __KNEWICON_H__ diff --git a/kiconedit/kresize.cpp b/kiconedit/kresize.cpp deleted file mode 100644 index b7007238..00000000 --- a/kiconedit/kresize.cpp +++ /dev/null @@ -1,83 +0,0 @@ -/* - KDE Draw - a small graphics drawing program for the KDE - Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) - Copyright (C) 2002 Nadeem Hasan ( nhasan@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include - -#include -#include - -#include "kresize.h" - -KResizeWidget::KResizeWidget( TQWidget* parent, const char* name, - const TQSize& size ) : TQWidget( parent, name ) -{ - TQHBoxLayout* genLayout = new TQHBoxLayout( this ); - - TQGroupBox* group = new TQGroupBox( i18n( "Size" ), this ); - group->setColumnLayout( 0, Qt::Horizontal ); - genLayout->addWidget( group ); - - TQHBoxLayout* layout = new TQHBoxLayout( group->layout(), 6 ); - - m_width = new KIntSpinBox( 1, 200, 1, 1, 10, group ); - m_width->setValue( size.width() ); - layout->addWidget( m_width, 1 ); - - TQLabel* label = new TQLabel( "X", group ); - layout->addWidget( label ); - - m_height = new KIntSpinBox( 1, 200, 1, 1, 10, group); - m_height->setValue( size.height() ); - layout->addWidget( m_height, 1 ); - - setMinimumSize( 200, 100 ); -} - -KResizeWidget::~KResizeWidget() -{ -} - -const TQSize KResizeWidget::getSize() -{ - return TQSize( m_width->value(), m_height->value() ); -} - -KResizeDialog::KResizeDialog( TQWidget* parent, const char* name, - const TQSize size ) - : KDialogBase( parent, name, true, i18n( "Select Size" ), Ok|Cancel ) -{ - m_resize = new KResizeWidget( this, "resize widget", size ); - - setMainWidget( m_resize ); -} - -KResizeDialog::~KResizeDialog() -{ -} - -const TQSize KResizeDialog::getSize() -{ - return m_resize->getSize(); -} - -#include "kresize.moc" diff --git a/kiconedit/kresize.h b/kiconedit/kresize.h deleted file mode 100644 index fcfb18c3..00000000 --- a/kiconedit/kresize.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - KDE Draw - a small graphics drawing program for the KDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) - Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KRESIZE_H__ -#define __KRESIZE_H__ - -#include - -class KIntSpinBox; - -class KResizeWidget : public TQWidget -{ - Q_OBJECT - - -public: - - KResizeWidget( TQWidget* parent, const char* name, const TQSize& ); - ~KResizeWidget(); - - const TQSize getSize(); - -private: - - KIntSpinBox *m_width; - KIntSpinBox *m_height; -}; - -class KResizeDialog : public KDialogBase -{ - Q_OBJECT - - -public: - - KResizeDialog( TQWidget* parent, const char* name, const TQSize s ); - ~KResizeDialog(); - - const TQSize getSize(); - -private: - - KResizeWidget* m_resize; -}; - -#endif //__KRESIZE_H__ diff --git a/kiconedit/main.cpp b/kiconedit/main.cpp deleted file mode 100644 index a9739af8..00000000 --- a/kiconedit/main.cpp +++ /dev/null @@ -1,89 +0,0 @@ -/* - KDE Draw - a small graphics drawing program for the KDE. - Copyright (C) 1998 Thomas Tanghus (tanghus@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; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -*/ - -// A lot of this code is lifted from KMail. Thanks, guys! - -#include - -#include -#include -#include -#include -#include - -#include "kiconedit.h" -#include "config.h" -#include "properties.h" - -static const char description[] = - I18N_NOOP("TDE Icon Editor"); - -static TDECmdLineOptions options[] = -{ - { "+[file(s)]" , I18N_NOOP("Icon file(s) to open"), 0 }, - TDECmdLineLastOption -}; - -int main(int argc, char **argv) -{ - TDEAboutData aboutData( "kiconedit", I18N_NOOP("TDEIconEdit"), - VERSION, description, TDEAboutData::License_GPL, - "(c) 1998, Thomas Tanghus"); - - aboutData.addAuthor("Thomas Tanghus",0, "tanghus@kde.org"); - aboutData.addAuthor("John Califf",0, "jcaliff@compuzone.net"); - aboutData.addAuthor("Laurent Montel",0, "lmontel@mandrakesoft.com"); - aboutData.addAuthor("Aaron J. Seigo",0, "aseigo@olympusproject.org"); - aboutData.addCredit( "Nadeem Hasan", "Rewrote UI to use XMLGUI\n" - "Lots of fixes and cleanup", "nhasan@nadmm.com" ); - aboutData.addCredit( "Adrian Page", I18N_NOOP("Bug fixes and GUI tidy up"), - "Adrian.Page@tesco.net" ); - TDECmdLineArgs::init( argc, argv, &aboutData ); - TDECmdLineArgs::addCmdLineOptions( options ); // Add our own options. - - TDEApplication a; - -// setSignalHandler(signalHandler); - - if (a.isRestored()) - { - RESTORE(TDEIconEdit); - } - else - { - TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); - for(int i = 0; i < args->count(); i++) - { - TDEIconEdit *ki = new TDEIconEdit(args->url(i), "kiconedit"); - TQ_CHECK_PTR(ki); - } - - if (args->count() == 0) - { - TDEIconEdit *ki = new TDEIconEdit; - TQ_CHECK_PTR(ki); - } - args->clear(); - } - - int rc = a.exec(); - delete TDEIconEditProperties::self(); - return rc; -} - diff --git a/kiconedit/palettetoolbar.cpp b/kiconedit/palettetoolbar.cpp deleted file mode 100644 index 0e3520db..00000000 --- a/kiconedit/palettetoolbar.cpp +++ /dev/null @@ -1,178 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - Copyright ( C ) 1998 Thomas Tanghus ( tanghus@kde.org ) - Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include -#include - -#include -#include - -#include "kiconcolors.h" -#include "palettetoolbar.h" - -PaletteToolBar::PaletteToolBar( TQWidget *parent, const char *name ) - : TDEToolBar( parent, name ) -{ - TQWidget *base = new TQWidget( this ); - - TQBoxLayout::Direction d = orientation() == Qt::Horizontal? - TQBoxLayout::LeftToRight : TQBoxLayout::TopToBottom; - m_layout = new TQBoxLayout( base, d, 2, 6 ); - - m_lblPreview = new TQLabel( base ); - m_lblPreview->setFrameStyle( TQFrame::Panel|TQFrame::Sunken ); - m_lblPreview->setFixedHeight( 64 ); - m_lblPreview->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter ); - TQWhatsThis::add(m_lblPreview, i18n( "Preview\n\nThis is a 1:1 preview" - " of the current icon" ) ); - m_layout->addWidget( m_lblPreview ); - - m_currentColorView = new TQLabel( base ); - m_currentColorView->setFrameStyle( TQFrame::Panel|TQFrame::Sunken ); - m_currentColorView->setFixedHeight( 24 ); - m_currentColorView->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter ); - TQWhatsThis::add(m_currentColorView, i18n( "Current color\n\nThis is the currently selected color" ) ); - m_layout->addWidget( m_currentColorView ); - - TQVBoxLayout *vlayout = new TQVBoxLayout( m_layout, 0 ); - TQLabel *l = new TQLabel( i18n( "System colors:" ), base ); - vlayout->addWidget( l ); - m_sysColors = new KSysColors( base ); - TQWhatsThis::add(m_sysColors, i18n( "System colors\n\nHere you can select" - " colors from the TDE icon palette" ) ); - - vlayout->addWidget( m_sysColors ); - - connect( m_sysColors, TQT_SIGNAL( newColor(uint) ), - TQT_SIGNAL( newColor(uint) ) ); - - vlayout = new TQVBoxLayout( m_layout, 0 ); - l = new TQLabel( i18n( "Custom colors:" ), base ); - vlayout->addWidget( l ); - m_customColors = new KCustomColors( base ); - TQWhatsThis::add(m_customColors, i18n( "Custom colors\n\nHere you can" - " build a palette of custom colors.\nDouble-click on a box to edit" - " the color" ) ); - - vlayout->addWidget( m_customColors ); - - connect( m_customColors, TQT_SIGNAL( newColor(uint) ), - TQT_SIGNAL( newColor(uint) ) ); - connect( this, TQT_SIGNAL( newColor(uint)), - this, TQT_SLOT(currentColorChanged(uint))); - currentColorChanged(OPAQUE_MASK|0); - - setEnableContextMenu( false ); - setMovingEnabled( false ); -} - -void PaletteToolBar::setOrientation( Qt::Orientation o ) -{ - if( barPos() == Floating ) - o = o == Qt::Vertical ? Qt::Horizontal : Qt::Vertical; - - TQBoxLayout::Direction d = o == Qt::Horizontal? TQBoxLayout::LeftToRight - : TQBoxLayout::TopToBottom; - m_layout->setDirection( d ); - - TQDockWindow::setOrientation( o ); -} - -void PaletteToolBar::previewChanged( const TQPixmap &p ) -{ - m_lblPreview->setPixmap( p ); -} - -void PaletteToolBar::addColors( uint n, uint *c ) -{ - m_customColors->clear(); - for( uint i = 0; i < n; i++ ) - addColor( c[ i ] ); -} - -void PaletteToolBar::addColor( uint color ) -{ - if( !m_sysColors->contains( color ) ) - m_customColors->addColor( color ); -} - -void PaletteToolBar::setPreviewBackground( TQPixmap pixmap ) -{ - m_lblPreview->setBackgroundPixmap(pixmap); -} - -void PaletteToolBar::setPreviewBackground( const TQColor& colour ) -{ - m_lblPreview->setBackgroundColor(colour); -} - -void PaletteToolBar::currentColorChanged(uint color) -{ - if(tqAlpha(color) == 255) - { - m_currentColorView->setBackgroundColor(color); - } - else - { - // Show the colour as if drawn over a checkerboard pattern - const int squareWidth = 8; - const uint lightColour = tqRgb(255, 255, 255); - const uint darkColour = tqRgb(127, 127, 127); - - TQPixmap pm(2 * squareWidth, 2 * squareWidth); - TQPainter p(&pm); - - double alpha = tqAlpha(color) / 255.0; - - int r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(lightColour) + 0.5); - int g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(lightColour) + 0.5); - int b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(lightColour) + 0.5); - - uint squareColour = tqRgb(r, g, b); - - p.setPen(TQt::NoPen); - p.setBrush(TQColor(squareColour)); - p.drawRect(0, 0, squareWidth, squareWidth); - p.drawRect(squareWidth, squareWidth, squareWidth, squareWidth); - - r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(darkColour) + 0.5); - g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(darkColour) + 0.5); - b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(darkColour) + 0.5); - - squareColour = tqRgb(r, g, b); - - p.setBrush(TQColor(squareColour)); - p.drawRect(squareWidth, 0, squareWidth, squareWidth); - p.drawRect(0, squareWidth, squareWidth, squareWidth); - - p.end(); - - m_currentColorView->setBackgroundPixmap(pm); - } -} - -#include "palettetoolbar.moc" - -/* vim: et sw=2 ts=2 -*/ - diff --git a/kiconedit/palettetoolbar.h b/kiconedit/palettetoolbar.h deleted file mode 100644 index d9a60b40..00000000 --- a/kiconedit/palettetoolbar.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - Copyright ( C ) 1998 Thomas Tanghus ( tanghus@kde.org ) - Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef PALLETTETOOLBAR_H -#define PALLETTETOOLBAR_H - -#include - -class TQBoxLayout; -class TQLabel; -class KSysColors; -class KCustomColors; - -class PaletteToolBar : public TDEToolBar -{ - Q_OBJECT - - - public: - PaletteToolBar( TQWidget *parent, const char *name = 0L ); - - signals: - void newColor( uint c ); - - public slots: - virtual void setOrientation( Qt::Orientation o ); - void previewChanged( const TQPixmap &p ); - void addColors( uint n, uint *c ); - void addColor( uint color ); - void setPreviewBackground( TQPixmap pixmap ); - void setPreviewBackground( const TQColor& colour ); - void currentColorChanged(uint color); - - private: - TQBoxLayout *m_layout; - TQLabel *m_lblPreview; - TQLabel *m_currentColorView; - KSysColors *m_sysColors; - KCustomColors *m_customColors; -}; - -#endif // PALLETTETOOLBAR_H - -/* vim: et sw=2 ts=2 -*/ - diff --git a/kiconedit/pics/CMakeLists.txt b/kiconedit/pics/CMakeLists.txt deleted file mode 100644 index 0f0977fb..00000000 --- a/kiconedit/pics/CMakeLists.txt +++ /dev/null @@ -1,15 +0,0 @@ -################################################# -# -# (C) 2010-2011 Calvin Morrison -# mutantturkey@gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -add_subdirectory( icons ) -add_subdirectory( toolbar ) - -tde_install_icons( kiconedit ) diff --git a/kiconedit/pics/Makefile.am b/kiconedit/pics/Makefile.am deleted file mode 100644 index 1a0b167e..00000000 --- a/kiconedit/pics/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ - -SUBDIRS = icons toolbar - -KDE_ICON = kiconedit - diff --git a/kiconedit/pics/hi16-app-kiconedit.png b/kiconedit/pics/hi16-app-kiconedit.png deleted file mode 100644 index ff16bcae..00000000 Binary files a/kiconedit/pics/hi16-app-kiconedit.png and /dev/null differ diff --git a/kiconedit/pics/hi22-app-kiconedit.png b/kiconedit/pics/hi22-app-kiconedit.png deleted file mode 100644 index 8bb080c7..00000000 Binary files a/kiconedit/pics/hi22-app-kiconedit.png and /dev/null differ diff --git a/kiconedit/pics/hi32-app-kiconedit.png b/kiconedit/pics/hi32-app-kiconedit.png deleted file mode 100644 index 604b17dd..00000000 Binary files a/kiconedit/pics/hi32-app-kiconedit.png and /dev/null differ diff --git a/kiconedit/pics/hi48-app-kiconedit.png b/kiconedit/pics/hi48-app-kiconedit.png deleted file mode 100644 index b95bffae..00000000 Binary files a/kiconedit/pics/hi48-app-kiconedit.png and /dev/null differ diff --git a/kiconedit/pics/icons/CMakeLists.txt b/kiconedit/pics/icons/CMakeLists.txt deleted file mode 100644 index 04aa1f5d..00000000 --- a/kiconedit/pics/icons/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -################################################# -# -# (C) 2010-2011 Calvin Morrison -# mutantturkey@gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -install( FILES source.png standard.png compressed.png DESTINATION ${DATA_INSTALL_DIR}/kiconedit/pics ) diff --git a/kiconedit/pics/icons/Makefile.am b/kiconedit/pics/icons/Makefile.am deleted file mode 100644 index 4acb372f..00000000 --- a/kiconedit/pics/icons/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -pics_DATA = source.png \ - standard.png \ - compressed.png - -picsdir = $(kde_datadir)/kiconedit/pics diff --git a/kiconedit/pics/icons/compressed.png b/kiconedit/pics/icons/compressed.png deleted file mode 100644 index c919f3bf..00000000 Binary files a/kiconedit/pics/icons/compressed.png and /dev/null differ diff --git a/kiconedit/pics/icons/source.png b/kiconedit/pics/icons/source.png deleted file mode 100644 index 8351e380..00000000 Binary files a/kiconedit/pics/icons/source.png and /dev/null differ diff --git a/kiconedit/pics/icons/standard.png b/kiconedit/pics/icons/standard.png deleted file mode 100644 index df1e8318..00000000 Binary files a/kiconedit/pics/icons/standard.png and /dev/null differ diff --git a/kiconedit/pics/logo.xpm b/kiconedit/pics/logo.xpm deleted file mode 100644 index 97dab29d..00000000 --- a/kiconedit/pics/logo.xpm +++ /dev/null @@ -1,137 +0,0 @@ -/* XPM */ -static const char *logo[]={ -"260 87 47 1", -"J c #9e9e9e", -"b c #9f9f9f", -"f c #a0a0a0", -"I c #a1a1a1", -"c c #a2a2a2", -"B c #a3a3a3", -"G c #a4a4a4", -"O c #a5a5a5", -"a c #a6a6a6", -"v c #a7a7a7", -"N c #a8a8a8", -"R c #a9a9a9", -"z c #aaaaaa", -"p c #ababab", -"w c #acacac", -"t c #adadad", -"Q c #aeaeae", -"P c #afafaf", -"o c #b0b0b0", -"S c #b1b1b1", -"K c #b2b2b2", -"C c #b3b3b3", -"M c #b4b4b4", -"s c #b5b5b5", -"k c #b6b6b6", -"n c #b7b7b7", -"H c #b8b8b8", -"A c #b9b9b9", -"d c #bababa", -"u c #bbbbbb", -"x c #bcbcbc", -"l c #bdbdbd", -"q c #bebebe", -"r c #bfbfbf", -"e c #c0c0c0", -"D c #c1c1c1", -"E c #c2c2c2", -"L c #c3c3c3", -"F c #c4c4c4", -"i c #c5c5c5", -"h c #c6c6c6", -"# c #c7c7c7", -"j c #c8c8c8", -"y c #c9c9c9", -"g c #cacaca", -"m c #cbcbcb", -". c #cccccc", -"....................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...............", -"................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................", -"................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................", -"........iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE........", -"........sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp........", -".....dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE.......", -"...#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj....", -"...EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg....", -"....PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.....", -".hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC.....", -".KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE....", -".QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg...", -"..qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg..", -"...vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL..", -"..HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm..", -".Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn.....", -"..wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.......", -".....ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul........", -".....sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm..........", -".....Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh...........", -"...........rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy.............", -".....................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj..............", -"....................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#................", -"................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................", -"..........mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm......................", -"........ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl........", -"........Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la........", -"....jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx.......", -"...LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#....", -"...hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE.....", -"....kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.....", -".DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw.....", -".PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu....", -".kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi...", -"..#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy..", -"..mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF..", -".gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy...", -".LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD.....", -"..nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.......", -".....dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#........", -".....Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp...........", -".....gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm...........", -"...........hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm.............", -".....................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx...............", -".................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl...................", -"................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................", -".........gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg........", -"........dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok........", -".....m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg.......", -"....eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.....", -"...rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#....", -"...gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy.....", -"....ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.....", -".uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag....", -".wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC....", -".rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl...", -"...OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#..", -"..jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh..", -".#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg....", -".#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy.....", -"..eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.......", -".....HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi..........", -".....Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM...........", -"......gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey............", -"...........m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH..............", -"....................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...............", -".................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd...................", -"................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................", -"........gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#........", -"........nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co........", -".....F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#.......", -"...msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg....", -"...rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj....", -"....Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.....", -".g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd.....", -".sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#....", -".zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp....", -".jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK...", -"...vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi..", -"..EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj..", -".iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm....", -".gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy......", -"..jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.......", -".....kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy..........", -".....qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl...........", -"...........Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi.............", -".....................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE.............."}; diff --git a/kiconedit/pics/toolbar/CMakeLists.txt b/kiconedit/pics/toolbar/CMakeLists.txt deleted file mode 100644 index 8d44094b..00000000 --- a/kiconedit/pics/toolbar/CMakeLists.txt +++ /dev/null @@ -1,20 +0,0 @@ -################################################# -# -# (C) 2010-2011 Calvin Morrison -# mutantturkey@gmail.com -# -# Improvements and feedback are welcome -# -# This file is released under GPL >= 2 -# -################################################# - -install( FILES - fileclose.png circle.png filledcircle.png line.png - paintbrush-cursor.xpm airbrush-cursor.xpm ellipse.png - filledellipse.png rectangle.png filledrectangle.png areaselect.png - selectrect.png selectcircle.png fill-cursor.xpm grid.png pointer.png - aim.png aim-cursor.xpm window_new.png grayscale.png kdepalette.png - transform.png eraser-cursor.xpm colorpicker-cursor.xpm - DESTINATION ${DATA_INSTALL_DIR}/kiconedit/pics -) diff --git a/kiconedit/pics/toolbar/Makefile.am b/kiconedit/pics/toolbar/Makefile.am deleted file mode 100644 index 8e3cb6e2..00000000 --- a/kiconedit/pics/toolbar/Makefile.am +++ /dev/null @@ -1,28 +0,0 @@ -toolbar_DATA = fileclose.png \ - circle.png \ - filledcircle.png \ - line.png \ - paintbrush-cursor.xpm \ - airbrush-cursor.xpm \ - ellipse.png \ - filledellipse.png \ - rectangle.png \ - filledrectangle.png \ - areaselect.png \ - selectrect.png \ - selectcircle.png \ - fill-cursor.xpm \ - grid.png \ - pointer.png \ - aim.png \ - aim-cursor.xpm \ - window_new.png \ - grayscale.png \ - kdepalette.png \ - transform.png \ - eraser-cursor.xpm \ - colorpicker-cursor.xpm - - - -toolbardir = $(kde_datadir)/kiconedit/pics diff --git a/kiconedit/pics/toolbar/aim-cursor.xpm b/kiconedit/pics/toolbar/aim-cursor.xpm deleted file mode 100644 index ecef295f..00000000 --- a/kiconedit/pics/toolbar/aim-cursor.xpm +++ /dev/null @@ -1,28 +0,0 @@ -/* XPM */ -static char *aim[]={ -"22 22 3 1", -". c None", -"a c #000000", -"# c #ffffff", -"......................", -"..........#...........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -"..#######...#######...", -".#aaaaaaa...aaaaaaa#..", -"..#######...#######...", -"..........a...........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -".........#a#..........", -"..........#...........", -"......................", -"......................"}; diff --git a/kiconedit/pics/toolbar/aim.png b/kiconedit/pics/toolbar/aim.png deleted file mode 100644 index ed0088a7..00000000 Binary files a/kiconedit/pics/toolbar/aim.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/airbrush-cursor.xpm b/kiconedit/pics/toolbar/airbrush-cursor.xpm deleted file mode 100644 index 2fd8314d..00000000 --- a/kiconedit/pics/toolbar/airbrush-cursor.xpm +++ /dev/null @@ -1,35 +0,0 @@ -/* XPM */ -static char *airbrush[]={ -"22 22 10 1", -". c None", -"a c #000000", -"d c #2a2a2a", -"g c #303030", -"c c #444444", -"h c #555555", -"f c #808080", -"b c #aaaaaa", -"e c #c8c8c8", -"# c #ffffff", -"..................#aa#", -".................#abca", -"................#abcca", -"...####........#abccda", -"..#aaaa#......#abccda#", -".#a####a#....#abccda#.", -".#a#eeba#...#abccda#..", -".#a#eeba#..#abccda#...", -".#a#eeba#.#abccda#....", -".#a#eeba##abccda#.....", -".#a#ebba#abccda#......", -".#a#bbbfaeccda#.......", -"..#a#bfgaebda#.#####..", -"..#a#bfaebffa##ddddd#.", -"...#afaebbfa##ddaaada#", -"..#a#eebbfadddda###da#", -".#a#eebbfa#aaaa#..#da#", -"#a#eebbfa#.####..#da#.", -"#aeebbfa#.......#da#..", -".#ebbfa#.......#da#...", -"dhfffa#.......#da#....", -"hd.aa#........#da#...."}; diff --git a/kiconedit/pics/toolbar/areaselect.png b/kiconedit/pics/toolbar/areaselect.png deleted file mode 100644 index de3fe8fb..00000000 Binary files a/kiconedit/pics/toolbar/areaselect.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/circle.png b/kiconedit/pics/toolbar/circle.png deleted file mode 100644 index ccb5c9db..00000000 Binary files a/kiconedit/pics/toolbar/circle.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/colorpicker-cursor.xpm b/kiconedit/pics/toolbar/colorpicker-cursor.xpm deleted file mode 100644 index 8edc155e..00000000 --- a/kiconedit/pics/toolbar/colorpicker-cursor.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static char *colorpicker[]={ -"22 22 11 1", -". c None", -"# c #000000", -"f c #151515", -"e c #2a2a2a", -"c c #333333", -"d c #3a3a3a", -"i c #808080", -"g c #aaaaaa", -"b c #d5d5d5", -"h c #dcdcdc", -"a c #ffffff", -"..................##a.", -".................#bc#a", -"................#bdcc#", -"...............#bddce#", -"..............#bddcef#", -"............##bddcef#a", -"...........#bdddcef#a.", -"............#becef#a..", -"...........#agbee#a...", -"..........#ahgibf#a...", -".........#ahgi#.#a....", -"........#ahgi#........", -".......#ahgi#.........", -"......#ahgi#..........", -".....#ahgi#...........", -"....#ahgi#............", -"...#ahgi#.............", -"..#ahgi#..............", -".#ahgi#...............", -".#hgi#................", -"#ig##.................", -"#i#..................."}; diff --git a/kiconedit/pics/toolbar/ellipse.png b/kiconedit/pics/toolbar/ellipse.png deleted file mode 100644 index 658b944d..00000000 Binary files a/kiconedit/pics/toolbar/ellipse.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/eraser-cursor.xpm b/kiconedit/pics/toolbar/eraser-cursor.xpm deleted file mode 100644 index 12c07f11..00000000 --- a/kiconedit/pics/toolbar/eraser-cursor.xpm +++ /dev/null @@ -1,32 +0,0 @@ -/* XPM */ -static char *eraser[]={ -"22 22 7 1", -"b c #000080", -"e c #800000", -"a c #8080ff", -"d c #c00000", -"# c #c0c0ff", -"c c #ffc0c0", -". c #ffffff", -"......................", -"...............#aa....", -"..............#aaaa...", -".............#aaaaaa..", -"............#aaaaaaaa.", -"...........#aaaaaaaaa.", -"..........#aaaaaaaaab.", -".........#aaaaaaaaab..", -"........#aaaaaaaaab...", -".......c##aaaaaaab....", -"......cdd##aaaaab.....", -".....cdddd##aaab......", -"....cdddddd##ab.......", -"...cdddddddd#b........", -"..cddddddddde.........", -".cddddddddde..........", -".ccddddddde...........", -".cccddddde............", -"..cccddde.............", -"...cccde..............", -"....cce...............", -"......................"}; diff --git a/kiconedit/pics/toolbar/fileclose.png b/kiconedit/pics/toolbar/fileclose.png deleted file mode 100644 index 906b2ec5..00000000 Binary files a/kiconedit/pics/toolbar/fileclose.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/fill-cursor.xpm b/kiconedit/pics/toolbar/fill-cursor.xpm deleted file mode 100644 index d5ca3034..00000000 --- a/kiconedit/pics/toolbar/fill-cursor.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static char *fill[]={ -"22 22 11 1", -". c None", -"a c #000000", -"i c #222222", -"c c #2a2a2a", -"e c #333333", -"g c #3a3a3a", -"d c #404040", -"h c #555555", -"f c #aaaaaa", -"b c #d5d5d5", -"# c #ffffff", -"......................", -"............#.........", -"...........#a#........", -"..........#aba#.......", -".........#abcca#......", -"........#adceca#......", -".......#afdcecca#.....", -"......#abcedcecca#....", -".....#afcgeedeeca#....", -"...##fddcggeeeecca#...", -"..#fdccddcggeeeecca#..", -".#ddcdcdddcggeeeeca#..", -".#dccbdddddcggeeecca#.", -".#ddcddbbdddgggeeccba#", -".#ddhadddbddggggeebia#", -".#fda#adddbdddggebca#.", -".#fda##aaddbbddgbca#..", -".#fda#.##adddbdbca#...", -"..#da#...#aaddbca#....", -"..#fa#....##abca#.....", -"..#f#.......#aa#......", -"...#.........##......."}; diff --git a/kiconedit/pics/toolbar/filledcircle.png b/kiconedit/pics/toolbar/filledcircle.png deleted file mode 100644 index 1431fbe2..00000000 Binary files a/kiconedit/pics/toolbar/filledcircle.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/filledellipse.png b/kiconedit/pics/toolbar/filledellipse.png deleted file mode 100644 index 3f1d6220..00000000 Binary files a/kiconedit/pics/toolbar/filledellipse.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/filledrectangle.png b/kiconedit/pics/toolbar/filledrectangle.png deleted file mode 100644 index 1a011a63..00000000 Binary files a/kiconedit/pics/toolbar/filledrectangle.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/flood-cursor.xpm b/kiconedit/pics/toolbar/flood-cursor.xpm deleted file mode 100644 index 8707443d..00000000 --- a/kiconedit/pics/toolbar/flood-cursor.xpm +++ /dev/null @@ -1,32 +0,0 @@ -/* XPM */ -static char *flood[]={ -"22 22 7 1", -"b c #000000", -"c c #303030", -"# c #808080", -"e c #a0a0a4", -"a c #c0c0c0", -"d c #dcdcdc", -". c #ffffff", -"......................", -"......................", -"...........##.........", -"..........####........", -".........##aa##.......", -".........##ba##.......", -".........##.b##.......", -".......cc##..b#.......", -".....cccd##d..b.......", -"....cccdd#b.d..b......", -"...ccceddbdb.d..b.....", -"..eccceeddbdd.d..b....", -"..ecccceeddddd.d..b...", -"..ecccebeeddddd.d.b...", -"..eccceebeeddddd.b....", -"..eccc.eebeeddd.b.....", -"..eecc..eebeeddb......", -"...eec...eebeeb.......", -"....e.....eebb........", -"...........ee.........", -"......................", -"......................"}; diff --git a/kiconedit/pics/toolbar/flood.png b/kiconedit/pics/toolbar/flood.png deleted file mode 100644 index 45e1130b..00000000 Binary files a/kiconedit/pics/toolbar/flood.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/grayscale.png b/kiconedit/pics/toolbar/grayscale.png deleted file mode 100644 index 3b475550..00000000 Binary files a/kiconedit/pics/toolbar/grayscale.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/grid.png b/kiconedit/pics/toolbar/grid.png deleted file mode 100644 index acf1b687..00000000 Binary files a/kiconedit/pics/toolbar/grid.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/kdepalette.png b/kiconedit/pics/toolbar/kdepalette.png deleted file mode 100644 index 705865a2..00000000 Binary files a/kiconedit/pics/toolbar/kdepalette.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/line.png b/kiconedit/pics/toolbar/line.png deleted file mode 100644 index 25964286..00000000 Binary files a/kiconedit/pics/toolbar/line.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/paintbrush-cursor.xpm b/kiconedit/pics/toolbar/paintbrush-cursor.xpm deleted file mode 100644 index fa4a1e32..00000000 --- a/kiconedit/pics/toolbar/paintbrush-cursor.xpm +++ /dev/null @@ -1,36 +0,0 @@ -/* XPM */ -static char *paintbrush[]={ -"22 22 11 1", -". c None", -"a c #000000", -"d c #272727", -"i c #2c2c2c", -"h c #303030", -"c c #3b3b3b", -"g c #aaaaaa", -"e c #c8c8c8", -"b c #d5d5d5", -"f c #ececec", -"# c #ffffff", -".................#abcc", -"................#abccc", -"...............#abcccd", -"..............#abcccdd", -".............#abcccdda", -"............#abcccdda#", -"...........#abcccdda#.", -"..........#abcccdda#..", -"..........abcccdda#...", -".........##cccdda#....", -".........#eecdda#.....", -"......##f#eegda#......", -".....#aabeggga#.......", -"....#abbchgaa#........", -"...#abcccda##.........", -"...abcccdda#..........", -"..#abccddia#..........", -".#abccdiaa#...........", -"#abdddaa##............", -"aaaaaa##..............", -"######................", -"......................"}; diff --git a/kiconedit/pics/toolbar/paintbrush.png b/kiconedit/pics/toolbar/paintbrush.png deleted file mode 100644 index 53774e19..00000000 Binary files a/kiconedit/pics/toolbar/paintbrush.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/pointer.png b/kiconedit/pics/toolbar/pointer.png deleted file mode 100644 index 62229be5..00000000 Binary files a/kiconedit/pics/toolbar/pointer.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/rectangle.png b/kiconedit/pics/toolbar/rectangle.png deleted file mode 100644 index 7075cf10..00000000 Binary files a/kiconedit/pics/toolbar/rectangle.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/selectcircle.png b/kiconedit/pics/toolbar/selectcircle.png deleted file mode 100644 index 91f528ec..00000000 Binary files a/kiconedit/pics/toolbar/selectcircle.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/selectrect.png b/kiconedit/pics/toolbar/selectrect.png deleted file mode 100644 index 0ce3aa21..00000000 Binary files a/kiconedit/pics/toolbar/selectrect.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/spraycan-cursor.xpm b/kiconedit/pics/toolbar/spraycan-cursor.xpm deleted file mode 100644 index 13d84b80..00000000 --- a/kiconedit/pics/toolbar/spraycan-cursor.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *spraycan[]={ -"22 22 5 1", -"# c #000000", -"c c #808080", -"b c #a0a0a4", -"a c #c0c0c0", -". c #ffffff", -"......................", -"......................", -"......................", -"......................", -"........##............", -"#.#..#..#a####........", -".........#a.#.#.......", -"......#..#b#a..#......", -".#.......##aaa..#.....", -"....#....#cbaaa..#....", -".........b#cbaaa..#...", -"..#...#..bc#cbaaa..#..", -"..........bc#cbaaa..#.", -".....#.....bc#cbaaa..#", -"............bc#cbaaa#.", -".............bc#cba#..", -"..............bc#c#...", -"...............bc#....", -"................b.....", -"......................", -"......................", -"......................"}; diff --git a/kiconedit/pics/toolbar/spraycan.png b/kiconedit/pics/toolbar/spraycan.png deleted file mode 100644 index c2ce7e8d..00000000 Binary files a/kiconedit/pics/toolbar/spraycan.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/transform.png b/kiconedit/pics/toolbar/transform.png deleted file mode 100644 index 3a5ca2b3..00000000 Binary files a/kiconedit/pics/toolbar/transform.png and /dev/null differ diff --git a/kiconedit/pics/toolbar/window_new.png b/kiconedit/pics/toolbar/window_new.png deleted file mode 100644 index 4d0a40a0..00000000 Binary files a/kiconedit/pics/toolbar/window_new.png and /dev/null differ diff --git a/kiconedit/properties.cpp b/kiconedit/properties.cpp deleted file mode 100644 index 4a90d7fe..00000000 --- a/kiconedit/properties.cpp +++ /dev/null @@ -1,147 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include - -#include "properties.h" - -TDEIconEditProperties* TDEIconEditProperties::m_self = 0; - -TDEIconEditProperties* TDEIconEditProperties::self() -{ - if (!m_self) - m_self = new TDEIconEditProperties(); - return m_self; -} - -TDEIconEditProperties::TDEIconEditProperties() : TQObject() -{ - TDEConfig *config = kapp->config(); - - config->setGroup( "Appearance" ); - - m_bgMode = (TQWidget::BackgroundMode)config->readNumEntry( "BackgroundMode", TQWidget::FixedPixmap); - m_bgColor = config->readColorEntry( "BackgroundColor", &gray); - m_bgPixmap = config->readPathEntry("BackgroundPixmap"); - - config->setGroup( "Grid" ); - m_pasteTransparent = config->readBoolEntry( "PasteTransparent", false ); - m_showGrid = config->readBoolEntry( "ShowGrid", true ); - m_gridScale = config->readNumEntry( "GridScaling", 10 ); - m_showRulers = config->readBoolEntry( "ShowRulers", true ); - - if(config->readEntry( "TransparencyDisplayType", "Checkerboard" ) == "Checkerboard") - { - m_transparencyDisplayType = TDEIconEditGrid::TRD_CHECKERBOARD; - } - else - { - m_transparencyDisplayType = TDEIconEditGrid::TRD_SOLIDCOLOR; - } - - TQColor checkColor1(255, 255, 255); - TQColor checkColor2(127, 127, 127); - - m_checkerboardColor1 = config->readColorEntry( "CheckerboardColor1", &checkColor1); - m_checkerboardColor2 = config->readColorEntry( "CheckerboardColor2", &checkColor2); - - TQString checkerboardSize = config->readEntry( "CheckerboardSize", "Medium" ); - - if(checkerboardSize == "Small") - { - m_checkerboardSize = TDEIconEditGrid::CHK_SMALL; - } - else - if(checkerboardSize == "Medium") - { - m_checkerboardSize = TDEIconEditGrid::CHK_MEDIUM; - } - else - { - m_checkerboardSize = TDEIconEditGrid::CHK_LARGE; - } - - TQColor solidColor(255, 255, 255); - m_transparencySolidColor = config->readColorEntry( "TransparencySolidColor", &solidColor); -} - -TDEIconEditProperties::~TDEIconEditProperties() -{ - kdDebug(4640) << "TDEIconEditProperties: Deleting properties" << endl; - m_self = 0; -} - -void TDEIconEditProperties::save() -{ - TDEConfig *config = kapp->config(); - - config->setGroup( "Appearance" ); - - config->writeEntry("BackgroundMode", m_bgMode ); - config->writeEntry("BackgroundColor", m_bgColor ); - config->writePathEntry("BackgroundPixmap", m_bgPixmap ); - - config->setGroup( "Grid" ); - config->writeEntry("PasteTransparent", m_pasteTransparent ); - config->writeEntry("ShowGrid", m_showGrid ); - config->writeEntry("GridScaling", m_gridScale ); - config->writeEntry("ShowRulers", m_showRulers ); - - TQString transparencyDisplayType; - - switch(m_transparencyDisplayType) - { - case TDEIconEditGrid::TRD_SOLIDCOLOR: - transparencyDisplayType = "SolidColor"; - break; - case TDEIconEditGrid::TRD_CHECKERBOARD: - default: - transparencyDisplayType = "Checkerboard"; - break; - } - - config->writeEntry( "TransparencyDisplayType", transparencyDisplayType ); - config->writeEntry( "CheckerboardColor1", m_checkerboardColor1 ); - config->writeEntry( "CheckerboardColor2", m_checkerboardColor2 ); - - TQString checkerboardSize; - - switch(m_checkerboardSize) - { - case TDEIconEditGrid::CHK_SMALL: - checkerboardSize = "Small"; - break; - case TDEIconEditGrid::CHK_MEDIUM: - checkerboardSize = "Medium"; - break; - case TDEIconEditGrid::CHK_LARGE: - default: - checkerboardSize = "Large"; - break; - } - - config->writeEntry( "CheckerboardSize", checkerboardSize ); - config->writeEntry( "TransparencySolidColor", m_transparencySolidColor ); - - config->sync(); -} - diff --git a/kiconedit/properties.h b/kiconedit/properties.h deleted file mode 100644 index e4872273..00000000 --- a/kiconedit/properties.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - kiconedit - a small graphics drawing program the KDE. - - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __PROPS_H__ -#define __PROPS_H__ - -#include - -#include "kicongrid.h" - -class TDEIconEditProperties : public TQObject -{ -public: - static TDEIconEditProperties* self(); - ~TDEIconEditProperties(); - - TQString bgPixmap() { return m_bgPixmap; } - TQColor bgColor() { return m_bgColor; } - TQWidget::BackgroundMode bgMode() { return m_bgMode; } - bool showGrid() { return m_showGrid; } - bool pasteTransparent() { return m_pasteTransparent; } - bool showRulers() { return m_showRulers; } - int gridScale() { return m_gridScale; } - - TDEIconEditGrid::TransparencyDisplayType transparencyDisplayType() const { return m_transparencyDisplayType; } - TQColor checkerboardColor1() const { return m_checkerboardColor1; } - TQColor checkerboardColor2() const { return m_checkerboardColor2; } - TDEIconEditGrid::CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } - TQColor transparencySolidColor() const { return m_transparencySolidColor; } - - void setBgPixmap( const TQString &p ) { m_bgPixmap = p; } - void setBgColor( const TQColor &c ) { m_bgColor = c; } - void setBgMode( TQWidget::BackgroundMode m ) { m_bgMode = m; } - void setShowGrid( bool b ) { m_showGrid = b; } - void setPasteTransparent( bool b ) { m_pasteTransparent = b; } - void setShowRulers( bool b ) { m_showRulers = b; } - void setGridScale( int s ) { m_gridScale = s; } - void setTransparencyDisplayType(TDEIconEditGrid::TransparencyDisplayType t) { m_transparencyDisplayType = t; } - void setCheckerboardColor1(const TQColor& c) { m_checkerboardColor1 = c; } - void setCheckerboardColor2(const TQColor& c) { m_checkerboardColor2 = c; } - void setCheckerboardSize(TDEIconEditGrid::CheckerboardSize size) { m_checkerboardSize = size; } - void setTransparencySolidColor(const TQColor& c) { m_transparencySolidColor = c; } - - void save(); - -protected: - TDEIconEditProperties(); - TQString m_bgPixmap; - TQColor m_bgColor; - TQWidget::BackgroundMode m_bgMode; - bool m_showGrid; - bool m_pasteTransparent; - bool m_showRulers; - int m_gridScale; - TDEIconEditGrid::TransparencyDisplayType m_transparencyDisplayType; - TQColor m_checkerboardColor1; - TQColor m_checkerboardColor2; - TDEIconEditGrid::CheckerboardSize m_checkerboardSize; - TQColor m_transparencySolidColor; - - static TDEIconEditProperties* m_self; -}; - -#endif //__PROPS_H__ diff --git a/kiconedit/utils.cpp b/kiconedit/utils.cpp deleted file mode 100644 index efd50d88..00000000 --- a/kiconedit/utils.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* - TDE Icon Editor - a small graphics drawing program for the TDE - - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#include -#include -#include - -#include "utils.h" -#include "config.h" - -imageFormats *formats = 0L; - -void setupImageHandlers() -{ - if(formats != 0L) - return; - - KImageIO::registerFormats(); - - kdDebug(4640) << "Initializing formats" << endl; - formats = new imageFormats; - TQ_CHECK_PTR(formats); - formats->setAutoDelete(true); - formats->append(new imageFormat("GIF", "GIF", "gif")); -#ifdef HAVE_LIBJPEG - formats->append(new imageFormat("JFIF", "JPEG", "jpg")); -#endif - formats->append(new imageFormat("XPM", "XPM", "xpm")); - formats->append(new imageFormat("ICO", "Windows Icon File", "ico")); -/* -#ifdef HAVE_LIBJPEG - TQImageIO::defineIOHandler("JFIF","^\377\330\377\340", 0, read_jpeg_jfif, NULL); -#endif -*/ -} - -// Simple copy operation on local files (isn't there something like this in the libs?) -bool copyFile(const TQString &src, const TQString &dest) -{ - TQFile f_src(src); - TQFile f_dest(dest); - TQFileInfo fi(f_src); - uint src_size = fi.size(); - kdDebug(4640) << "Size: " << src_size << endl; - - if ( f_src.open(IO_ReadOnly) ) - { // file opened successfully - if ( !f_dest.open(IO_WriteOnly) ) - { - kdDebug(4640) << "copyFile - There was an error opening destination file: " << dest << endl; - f_src.close(); - return false; - } - char *data = new char[src_size]; - if(f_src.readBlock(data, src_size) == -1) - { - kdDebug(4640) << "copyFile - There was an error reading source file: " << src << endl; - f_src.close(); - f_dest.close(); - delete [] data; - return false; - } - if(f_dest.writeBlock(data, src_size) == -1) - { - kdDebug(4640) << "copyFile - There was an error writing to destination file: " << dest << endl; - f_src.close(); - f_dest.close(); - delete [] data; - return false; - } - - f_src.close(); - f_dest.close(); - delete [] data; - return true; - } - kdDebug(4640) << "copyFile - There was an error opening source file: " << src << endl; - return false; -} - -bool removeFile(const TQString &file) -{ - if(file.length() > 0 && TQFile::exists(file)) - { - TQDir d; - kdDebug(4640) << "Removing " << file << endl; - if(!d.remove(file)) - { - kdDebug(4640) << "removeFile - There was an error removing the file: " << file << endl; - return false; - } - return true; - } - return false; -} - -bool moveFile(const TQString &src, const TQString &dest) -{ - if(copyFile(src, dest)) - return removeFile(src); - return false; -} - -uint kdeColor(uint color) -{ - uint c = iconpalette[0]|OPAQUE_MASK; - - for(uint i = 0; i < 42; i++) - { - //kdDebug(4640) << "Color #" << i << " " << iconpalette[i] << endl; - if( (iconpalette[i]|OPAQUE_MASK) - c < (iconpalette[i]|OPAQUE_MASK) - color) - c = iconpalette[i]|OPAQUE_MASK; - } - //kdDebug(4640) << color << " -> " << c << endl; - return c; -} diff --git a/kiconedit/utils.h b/kiconedit/utils.h deleted file mode 100644 index 83108b33..00000000 --- a/kiconedit/utils.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __UTILS_H__ -#define __UTILS_H__ - -#include - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif // HAVE_CONFIG_H - -#include -#include -#include -#include - -#define OPAQUE_MASK 0xff000000 - -#ifdef TRANSPARENT -#undef TRANSPARENT -#endif -#define TRANSPARENT 0x00000000 - -const uint iconpalette[42] = { // kde palette - 0x303030,0x585858,0x808080,0xa0a0a0,0xc3c3c3,0xdcdcdc, - 0x000040,0x004000,0x000000,0x004040,0x404000,0x000000, - 0x000080,0x008000,0x800000,0x008080,0x808000,0x800080, - 0x0000c0,0x00c000,0xc00000,0x00c0c0,0xc0c000,0xc000c0, - 0x0000ff,0x00ff00,0xff0000,0x00ffff,0xffff00,0xff00ff, - 0xc0c0ff,0xc0ffc0,0xffc0c0,0xc0ffff,0xffffc0,0xffc0ff, - 0x0080ff,0x0058c0,0x58a8ff,0xa8dcff,0xffffff,0x000000}; - -struct imageFormat -{ - imageFormat(const char *f, const char *t, const char *e) { format = f; title = t, extension = e;} - const char *format; - const char *title; - const char *extension; -}; - -typedef TQPtrList imageFormats; -extern imageFormats *formats; - -void setupImageHandlers(); - -bool copyFile(const TQString &src, const TQString &dest); -bool removeFile(const TQString &file); -bool moveFile(const TQString &src, const TQString &dest); -uint kdeColor(uint c); - -#endif //__UTILS_H__ - - - diff --git a/kiconedit/version.h b/kiconedit/version.h deleted file mode 100644 index 8f04bb6e..00000000 --- a/kiconedit/version.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - kiconedit - a small graphics drawing program for the KDE - - Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef __KIE_VERSION_H__ -#define __KIE_VERSION_H__ - -#define KIE_VERSION_MAJOR 0 -#define KIE_VERSION_MINOR 4 -#define KIE_VERSION_RELEASE 0 -#define KIE_VERSION ((KIE_VERSION_MAJOR * 100) + (KIE_VERSION_MINOR *10) + KIE_VERSION_RELEASE) -#define KIE_VERSION_STRING "0.4.0" - - - -#endif // __KIE_VERSION_H__ - - - diff --git a/tdeiconedit/AUTHORS b/tdeiconedit/AUTHORS new file mode 100644 index 00000000..dd2047ae --- /dev/null +++ b/tdeiconedit/AUTHORS @@ -0,0 +1,10 @@ +Copyright 1998 by Thomas Tanghus +Copyright 2000 by John Califf + +Original Author: + Thomas Tanghus + +Current Maintainers: + John Califf + Laurent Montel + diff --git a/tdeiconedit/CMakeLists.txt b/tdeiconedit/CMakeLists.txt new file mode 100644 index 00000000..4faa13c5 --- /dev/null +++ b/tdeiconedit/CMakeLists.txt @@ -0,0 +1,42 @@ +################################################# +# +# (C) 2010-2011 Calvin Morrison +# mutantturkey@gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +add_subdirectory ( pics ) + +include_directories( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_BINARY_DIR} + ${TDE_INCLUDE_DIR} + ${TQT_INCLUDE_DIRS} +) + +link_directories( + ${TQT_LIBRARY_DIRS} +) + + +#### other data ################################# + +install( FILES tdeiconedit.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} ) +install( FILES tdeiconeditui.rc DESTINATION ${DATA_INSTALL_DIR}/tdeiconedit ) + + +#### tdeiconedit (executable) ##################### + +tde_add_executable( tdeiconedit AUTOMOC + SOURCES + utils.cpp main.cpp tdeiconedit.cpp tdeicongrid.cpp + tdeiconcolors.cpp kcolorgrid.cpp palettetoolbar.cpp + tdeicon.cpp kresize.cpp knew.cpp properties.cpp + tdeiconeditslots.cpp tdeiconconfig.cpp + LINK tdeio-shared tdeprint-shared + DESTINATION ${BIN_INSTALL_DIR} +) diff --git a/tdeiconedit/Makefile.am b/tdeiconedit/Makefile.am new file mode 100644 index 00000000..2fd37a01 --- /dev/null +++ b/tdeiconedit/Makefile.am @@ -0,0 +1,26 @@ +INCLUDES = $(all_includes) +SUBDIRS = pics + +bin_PROGRAMS = tdeiconedit + +tdeiconedit_SOURCES = utils.cpp main.cpp tdeiconedit.cpp tdeicongrid.cpp \ + tdeiconcolors.cpp kcolorgrid.cpp palettetoolbar.cpp\ + tdeicon.cpp kresize.cpp knew.cpp properties.cpp \ + tdeiconeditslots.cpp tdeiconconfig.cpp + +tdeiconedit_METASOURCES = AUTO + +# the library search path. +tdeiconedit_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_QT) -lDCOP $(LIB_TDECORE) $(LIB_TDEUI) -ltdefx $(LIB_TDEIO) -ltdetexteditor +tdeiconedit_LDADD = $(LIB_TDEFILE) -ltdeprint + +DISTCLEANFILES = *~ .deps/* .libs/* + +rcdir = $(kde_datadir)/tdeiconedit +rc_DATA = tdeiconeditui.rc + +xdg_apps_DATA = tdeiconedit.desktop + +messages: rc.cpp + $(XGETTEXT) rc.cpp $(tdeiconedit_SOURCES) -o $(podir)/tdeiconedit.pot + diff --git a/tdeiconedit/NEWS b/tdeiconedit/NEWS new file mode 100644 index 00000000..5f5b23fe --- /dev/null +++ b/tdeiconedit/NEWS @@ -0,0 +1,68 @@ +KDE Icon Editor +_______________ + +------------------------------------------------------------------------------ + News and fixes in version 0.4.0: +------------------------------------------------------------------------------ + - Enabled loading other image types than XPM. + - Repainting large pictures is very much faster now. + - Added drop site indication when using XDND. + - Added QWhatsThis help (this is great!). + - Started playing with XDND. The toolbar now has a drag source and the grid + supports both XDND and KDND. + - Added rulers (can be toggled from the configuration dialog). + - Circular selection. + - Configuration dialog: + - Shortcut keys. + - Appearance. + - Templates. + - Miscellaneous (paste mode, show rulers etc.). + +------------------------------------------------------------------------------ + News and fixes in version 0.3.2: +------------------------------------------------------------------------------ + - German translations. (thanks to Gregor Zumstein ) + - Solaris didn't like TRANSPARENT definition. (thanks to Alastair Burt ) + - Crashed on empty string in strlen. (thanks to Alastair Burt ) + - Russian translations (thanks to Andy Pershin ) + +------------------------------------------------------------------------------ + News and fixes in version 0.3.1: +------------------------------------------------------------------------------ + - Icon templates installed in the wrong directory. + - Templates didn't load. + +------------------------------------------------------------------------------ + News and fixes in version 0.3: +------------------------------------------------------------------------------ + - Complete rewrite of the drawing grid. Should now be faster and more flexible. + - New class TDEIcon for file manipulation. + - The "Line" tool can now draw 45 dgr. angles. + - Smooth resizing of icons if linked with QT >= 1.40. + - Improved loading/saving images with transparent pixels. + - Loading and saving should now work on non-local files. + +------------------------------------------------------------------------------ + News and fixes in version 0.2: +------------------------------------------------------------------------------ + - Saves restore file when closed by session management or by crash. + - Fixed multi instance handling. + - Added toolbar button for creating new instances. + - Added danish translation. + - Added statusbar field for messages. + - Saves window size. + - Couldn't toggle grid from the menu. + - Added "Toggle toolbar", "Toggle drawing tools" and "Toggle statusbar" to the + "View" menu. This as well as the *Bar positions is saved between sessions. + - Grid state and zoom factor saved between sessions. + - The clipboard is checked with short intervals to check if there's a pixmap. + - The cursor hotspots are now correct. + - Cursor position is shown in the statusbar. + - Removed a lot of memory leaks and made the general memory footprint some smaller. + - New tools: "Find pixel", "Flood Fill", "Filled Circle" and "Filled Ellipse". + - Clipboard now supports selection of regions and inserting into existing image. + - Speeded up loading of pixmaps by some thousand percents ;-) + - Preview has scrollbars if it doesn't fit. + + + diff --git a/tdeiconedit/kcolorgrid.cpp b/tdeiconedit/kcolorgrid.cpp new file mode 100644 index 00000000..131d5a9f --- /dev/null +++ b/tdeiconedit/kcolorgrid.cpp @@ -0,0 +1,335 @@ +/* + tdeiconedit - a small graphics drawing program for creating KDE icons + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include + +#include + +#include "kcolorgrid.h" + +void KColorArray::remove(int idx) +{ + int oldsize = size(); + if(idx >= (int)size()) + { + kdWarning() << "KColorArray::remove: Index " << idx << " out of range" << endl; + return; + } + KColorArray tmp(*this); + tmp.detach(); + resize(size()-1); + for(int i = idx; i < oldsize-1; i++) + at(i) = tmp[i+1]; + //kdDebug(4640) << "KColorArray::remove() " << at(idx) << "\t-\tsize: " << size() << endl; +} + +void KColorArray::append(uint c) +{ + resize(size()+1); + at(size()-1) = c; + //kdDebug(4640) << "KColorArray::append() " << c << "\t-\tsize: " << size() << endl; +} + +uint KColorArray::closestMatch(uint color) +{ + //kdDebug(4640) << "KColorArray: " << c << endl; + uint c = color & ~OPAQUE_MASK, d = 0xffffff, t; + //kdDebug(4640) << "KColorArray: " << c << endl; + //kdDebug(4640) << "KColorArray: " << c|OPAQUE_MASK << endl; + uint cb = c; + for(uint i = 0; i < size(); i++) + { + if (at(i) > cb) + t = at(i) - cb; + else + t = cb - at(i); + if( t < d ) + { + d = t; + c = at(i); + } + } + return c|OPAQUE_MASK; +} + +KColorGrid::KColorGrid(TQWidget *parent, const char *name, int space) + : TQWidget(parent, name, TQt::WResizeNoErase|TQt::WRepaintNoErase) +{ + //kdDebug(4640) << "KColorGrid - constructor" << endl; + s = space; + rows = cols = totalwidth = totalheight = 0; + setCellSize(10); + setGridState(Plain); + setGrid(true); + numcolors.resize(0); + gridcolors.resize(0); + + //kdDebug(4640) << "KColorGrid - constructor - done" << endl; +} +/* +void KColorGrid::show() +{ + //updateScrollBars(); + TQWidget::show(); +} +*/ +void KColorGrid::paintEvent(TQPaintEvent *e) +{ + //kdDebug(4640) << "KColorGrid::paintEvent" << endl; + + //updateScrollBars(); + //TQWidget::paintEvent(e); + + const TQRect urect = e->rect(); + + //kdDebug(4640) << "Update rect = ( " << //urect.left() << ", " << urect.top() << ", " << urect.width() << ", " << urect.height() << " )" << endl; + + + int firstcol = getX(urect.x())-1; + int firstrow = getY(urect.y())-1; + int lastcol = getX(urect.right())+1; + int lastrow = getY(urect.bottom())+1; + + TQWMatrix matrix; + TQPixmap pm(urect.width(),urect.height()); + pm.fill(paletteBackgroundColor()); + TQPainter p; + p.begin( &pm ); + + firstrow = (firstrow < 0) ? 0 : firstrow; + firstcol = (firstcol < 0) ? 0 : firstcol; + lastrow = (lastrow >= rows) ? rows : lastrow; + lastcol = (lastcol >= cols) ? cols : lastcol; + //kdDebug(4640) << urect.x() << " x " << urect.y() << " - row: " << urect.width() << " x " << urect.height() << endl; + //kdDebug(4640) << "col: " << firstcol << " -> " << lastcol << " - row: " << firstrow << " -> " << lastrow << endl; + +/* + if(this->isA("KDrawGrid")) + kdDebug(4640) << "KDrawGrid\n firstcol: " << firstcol << "\n lastcol: " << lastcol << "\n firstrow: " << firstrow << "\n lastrow: " << lastrow << endl; +*/ + for(int i = firstrow; i < lastrow; i++) + { + //if(this->isA("KDrawGrid")) + // kdDebug(4640) << "Updating row " << i << endl; + for(int j = firstcol; j < lastcol; j++) + { + matrix.translate( (j*cellsize)-urect.x(), (i*cellsize)-urect.y() ); + p.setWorldMatrix( matrix ); + //p.setClipRect(j*cellsize, i*cellsize, cellsize, cellsize); + paintCell(&p, i, j); + //p.setClipping(FALSE); + matrix.reset(); + p.setWorldMatrix( matrix ); + } + //kapp->processEvents(); + } + + matrix.translate(-urect.x(),-urect.y()); + p.setWorldMatrix( matrix ); + paintForeground(&p,e); + + p.end(); + + bitBlt(this,urect.topLeft(),&pm,TQRect(0,0,pm.width(),pm.height())); + +} + +void KColorGrid::paintForeground(TQPainter* , TQPaintEvent* ) +{ +} + +/* +void KColorGrid::resizeEvent(TQResizeEvent *) +{ + //kdDebug(4640) << "resize: width: " << width() << " - total: " << totalwidth << endl; + //kdDebug(4640) << "resize: height: " << height() << " - total: " << totalheight << endl; +} +*/ + +TQSize KColorGrid::sizeHint() const +{ + return TQSize(totalwidth, totalheight); +} + +int KColorGrid::getY( int y ) +{ + if(y > (totalheight-1)) + y = totalheight; + if(cellsize == 1) + return y; + return (y/cellsize); +} + +int KColorGrid::getX( int x ) +{ + if( x > totalwidth-1) + x = totalwidth; + if(cellsize == 1) + return x; + return (x/cellsize); +} + +const TQRect KColorGrid::viewRect() +{ + //kdDebug(4640) << "viewRect" << endl; + const TQRect r(0, 0, width(), height()); + //kdDebug(4640) << "viewRect - " << x << " x " << y << " - " << w << " x " << h << endl; + return r; +} + +void KColorGrid::setNumRows(int n) +{ + //kdDebug(4640) << "setNumRows" << endl; + if(n < 0 || n == rows) + return; + + rows = n; + + gridcolors.resize(n*numCols()); + //TQTableView::setNumRows(n); + totalheight = (n * cellsize) + 1; + resize(totalwidth, totalheight); + //kdDebug(4640) << "setNumRows() - gridcolors: " << gridcolors.size() << " size: " << numCols()*numRows() << endl; +} + +void KColorGrid::setNumCols(int n) +{ + //kdDebug(4640) << "setNumCols" << endl; + if(n < 0) + return; + int on = numCols(); + KColorArray gc(gridcolors); + gc.detach(); + //kdDebug(4640) << "gc size: " << gc.size() << " numrows: " << numRows() << endl; + gridcolors.resize(n*numRows()); + cols = n; + + totalwidth = (n * cellsize) + 1; + resize(totalwidth, totalheight); + //kdDebug(4640) << "numRows: " << numRows() << endl; + //kdDebug(4640) << "gridcolor: " << gridcolors.size() << " grid: " << numRows()*numCols() << endl; + if(numRows() == 0) + return; + + for(int i = 0; i < numRows(); i++) + { + for(int j = 0; j < n; j++) + { + //kdDebug(4640) << "row " << i << " , col " << j << endl; + if(j < on ) //If there's something to read here -- i.e. we're within the original grid + { + //kdDebug(4640) << (i*numCols())+j << " " << (i*on)+j << endl; + gridcolors.at((i*numCols())+j) = gc.at((i*on)+j); + } + else //Initialize to something.. + { + if (gc.size()) //Have some pixels originally.. + gridcolors.at((i*numCols())+j) = gc.at(0); + else + gridcolors.at((i*numCols())+j) = 0; //Picks something #### Update numcolors? + } + } + } + + //kdDebug(4640) << "setNumCols() - gridcolors: " << gridcolors.size() << " size: " << numCols()*numRows() << endl; +} + +void KColorGrid::fill( uint color) +{ + gridcolors.fill(color); + numcolors.resize(1); + numcolors.at(0) = color; + emit colorschanged(numcolors.size(), numcolors.data()); +} + +void KColorGrid::setColor( int colNum, uint col, bool update ) +{ + //kdDebug(4640) << "KColorGrid::setColor" << endl; + uint oldcolor = gridcolors[colNum]; + gridcolors[colNum] = col; + + if(!update) + return; + + //kdDebug(4640) << "KColorGrid::setColor - before adding" << endl; + if(!numcolors.contains(col)) + { + //kdDebug(4640) << "KColorGrid::setColor() - adding " << // col << " - " << tqRed(col) << " " << tqGreen(col) << " " << tqBlue(col) << endl; + numcolors.append(col); + //kdDebug(4640) << "KColorGrid::setColor() - adding done " << numcolors.size()-1 << endl; + //numcolors++; + emit addingcolor(col); + } + + //kdDebug(4640) << "KColorGrid::setColor - before removing" << endl; + if(!gridcolors.contains(oldcolor)) + { + int idx = numcolors.find(oldcolor); + if(idx != -1) + { + //kdDebug(4640) << "KColorGrid::setColor() - removing " << // oldcolor << " - " << tqRed(oldcolor) << " " << tqGreen(oldcolor) << " " << tqBlue(oldcolor) << endl; + numcolors.remove(idx); + //kdDebug(4640) << "KColorGrid::setColor() - removing done" << endl; + emit colorschanged(numcolors.size(), numcolors.data()); + } + //numcolors--; + } + + //kdDebug(4640) << "KColorGrid::setColor - before updateCell" << endl; + repaint((colNum%numCols())*cellsize,(colNum/numCols())*cellsize, cellsize, cellsize); + //updateCell( colNum/numCols(), colNum%numCols(), false ); + //kdDebug(4640) << "KColorGrid::setColor - after updateCell" << endl; +} + +void KColorGrid::updateCell( int row, int col, bool ) +{ + //kdDebug(4640) << "updateCell - before repaint" << endl; + TQWMatrix matrix; + TQPainter p; + p.begin( this ); + matrix.translate( (col*cellsize), (row*cellsize) ); + p.setWorldMatrix( matrix ); + paintCell(&p, row, col); + p.end(); + +} + +void KColorGrid::updateColors() +{ + numcolors.resize(0); + for(int i = 0; i < (int)gridcolors.size(); i++) + { + uint col = gridcolors.at(i); + if(!numcolors.contains(col)) + numcolors.append(col); + } + emit colorschanged(numcolors.size(), numcolors.data()); +} + +void KColorGrid::setCellSize( int s ) +{ + cellsize = s; + totalwidth = (numCols() * s) + 1; + totalheight = (numRows() * s) + 1; + resize(totalwidth, totalheight); + if ( isVisible() ) + repaint(viewRect(), false); +} +#include "kcolorgrid.moc" diff --git a/tdeiconedit/kcolorgrid.h b/tdeiconedit/kcolorgrid.h new file mode 100644 index 00000000..a116f74b --- /dev/null +++ b/tdeiconedit/kcolorgrid.h @@ -0,0 +1,105 @@ +/* + tdeiconedit - a small graphics drawing program for creating KDE icons + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KCOLORGRID_H__ +#define __KCOLORGRID_H__ + +#include +#include +#include + +#include "utils.h" + +#define KArrayUint TQMemArray + +class KColorArray : public KArrayUint +{ +public: + void remove(int idx); + void append(uint); + uint closestMatch(uint); +}; + +class KColorGrid : public TQWidget +{ +private: + Q_OBJECT + +public: + KColorGrid( TQWidget * parent = 0, const char *name = 0, int spacing = 0); + virtual ~KColorGrid() {}; + + enum GridState { Plain, Shaded }; + + void setSpacing(int space) { s = space; update(); } + void setGridState(GridState state) { gridstate = state;} + GridState gridState() { return gridstate; } + void setGrid(bool state) { hasgrid = state; } + int spacing() { return s; } + bool hasGrid() { return hasgrid; } + uint numColors() { return numcolors.size(); } + uint colors( uint *c ) { c = numcolors.data(); return numcolors.size(); } + bool contains(uint c) { return numcolors.contains(c); } + uint colorAt(int idx) { return gridcolors.at(idx); } + uint *data() {return numcolors.data(); } + void fill(uint color); + int numCols() { return cols; } + int numRows() { return rows; } + + virtual void setCellSize( int s ); + virtual int cellSize() { return cellsize; } + virtual TQSize sizeHint() const; + + void setSize(const TQSize s) { setNumRows(s.height()); setNumCols(s.width()); } + +public slots: + //virtual void show(); + +signals: + void addingcolor(uint); + void colorschanged(uint, uint*); + +protected: + void updateCell(int row, int col, bool f); + virtual void paintForeground( TQPainter* p, TQPaintEvent* e); + virtual void paintCell( TQPainter *p, int row, int col) = 0; + virtual void paintEvent(TQPaintEvent *); + //virtual void resizeEvent(TQResizeEvent *); + void setColor(int colNum, uint, bool update = true ); + void updateColors(); + virtual void setNumRows(int); + virtual void setNumCols(int); + virtual int totalWidth() { return totalwidth; } + virtual int totalHeight() { return totalheight; } + int findRow(int y) { return getY(y); } + int getY(int y); + int findCol(int x) { return getX(x); } + int getX(int x); + const TQRect viewRect(); + +//private: + int s, cellsize, totalwidth, totalheight; + int rows, cols, ypos, xpos; + GridState gridstate; + bool hasgrid; + KColorArray gridcolors, numcolors; +}; + +#endif //__KCOLORGRID_H__ diff --git a/tdeiconedit/knew.cpp b/tdeiconedit/knew.cpp new file mode 100644 index 00000000..2536816f --- /dev/null +++ b/tdeiconedit/knew.cpp @@ -0,0 +1,326 @@ +/* + KDE Draw - a small graphics drawing program for the KDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "knew.h" + +TDEIconTemplateContainer* TDEIconTemplateContainer::instance = 0; + +void createStandardTemplates(TDEIconTemplateContainer *list) +{ + TDEIconLoader *kil = TDEGlobal::iconLoader(); + + TDEIconTemplate it; + it.path = kil->iconPath("standard", TDEIcon::User); + it.title = i18n("Standard File"); + list->append(it); + + it.path = kil->iconPath("source", TDEIcon::User); + it.title = i18n("Source File"); + list->append(it); + + it.path = kil->iconPath("compressed", TDEIcon::User); + it.title = i18n("Compressed File"); + list->append(it); + + it.path = kil->iconPath("folder", TDEIcon::User); + it.title = i18n("Standard Folder"); + list->append(it); + + it.path = kil->iconPath("package", TDEIcon::User); + it.title = i18n("Standard Package"); + list->append(it); + + it.path = kil->iconPath("mini-folder", TDEIcon::User); + it.title = i18n("Mini Folder"); + list->append(it); + + it.path = kil->iconPath("mini-package", TDEIcon::User); + it.title = i18n("Mini Package"); + list->append(it); +} + +void TDEIconTemplateContainer::save() +{ + TDEConfig *k = kapp->config(); + k->setGroup("Templates"); + + TQStringList names; + for (TQValueListIterator iter = begin(); iter != end(); iter++) + { + names.append((*iter).title); + } + + k->writeEntry("Names", names); + + for(unsigned int i = 0; i < names.count(); i++) + { + k->writePathEntry(names[i], (*this)[i].path); + } +} + +TDEIconTemplateContainer::TDEIconTemplateContainer() : TQValueList() +{ + TQStrList names; + TDEConfig *k = kapp->config(); + k->setGroup("Templates"); + k->readListEntry("Names", names); + for(int i = 0; i < (int)names.count(); i++) + { + TDEIconTemplate it; + it.path = k->readPathEntry(names.at(i)); + it.title = names.at(i); + //kdDebug(4640) << "Template: " << names.at(i) << "\n" << path.data() << endl; + append(it); + } + + if(count() == 0) + { + createStandardTemplates(this); + } +} + +TDEIconTemplateContainer::~TDEIconTemplateContainer() +{ + clear(); +} + +TDEIconListBoxItem::TDEIconListBoxItem( TDEIconTemplate t ) + : TQListBoxItem(), icontemplate(t) +{ + //kdDebug(4640) << "TDEIconListBoxItem - " << t->path.data() << ", " << t->title.data() << endl; + + pm.load(t.path); + setText( t.title ); +} + +void TDEIconListBoxItem::reloadIcon() +{ + pm.load(icontemplate.path); + setText( icontemplate.title ); +} + + + +void TDEIconListBoxItem::paint( TQPainter *p ) +{ + p->drawPixmap( 3, 0, pm ); + TQFontMetrics fm = p->fontMetrics(); + int yPos; // vertical text position + if ( pm.height() < fm.height() ) + yPos = fm.ascent() + fm.leading()/2; + else + yPos = pm.height()/2 - fm.height()/2 + fm.ascent(); + p->drawText( pm.width() + 5, yPos, text() ); +} + +int TDEIconListBoxItem::height(const TQListBox *lb ) const +{ + return TQMAX( pm.height(), lb->fontMetrics().lineSpacing() + 1 ); +} + +int TDEIconListBoxItem::width(const TQListBox *lb ) const +{ + return pm.width() + lb->fontMetrics().width( text() ) + 6; +} + +NewSelect::NewSelect(TQWidget *parent) : TQWidget( parent ) +{ + wiz = (KWizard*) parent; + grp = new TQButtonGroup( this ); + connect( grp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( buttonClicked( int ) ) ); + grp->setExclusive( true ); + + TQVBoxLayout* ml = new TQVBoxLayout( this ); + ml->addWidget( grp, 1 ); + //ml->addWidget(grp, 10, AlignLeft); + TQVBoxLayout* l = new TQVBoxLayout( grp, 10 ); + + rbscratch = new TQRadioButton( i18n( "Create from scratch" ), grp ); + l->addWidget( rbscratch, 1 ); + //l->addWidget(rbscratch, 5, AlignLeft); + + rbtempl = new TQRadioButton( i18n( "Create from template" ), grp ); + l->addWidget( rbtempl, 1 ); + //l->addWidget(rbtempl, 5, AlignLeft); + + //grp->setMinimumSize(grp->childrenRect().size()); + + grp->setButton( 0 ); +} + +NewSelect::~NewSelect() +{ +} + +void NewSelect::buttonClicked(int id) +{ + //kdDebug(4640) << "Button: " << id << endl; + + emit iconopenstyle(id); +} + +NewFromTemplate::NewFromTemplate( TQWidget* parent ) + : TQWidget( parent ) +{ + wiz = (KWizard*) parent; + + TQVBoxLayout* ml = new TQVBoxLayout(this); + + grp = new TQGroupBox( i18n( "Templates" ), this ); + ml->addWidget( grp, 1 ); + //ml->addWidget(grp, 10, AlignLeft); + + TQHBoxLayout* l = new TQHBoxLayout( grp, 15 ); + + templates = new TDEIconListBox( grp ); + connect( templates, TQT_SIGNAL( highlighted( int ) ), TQT_SLOT( checkSelection( int ) ) ); + l->addWidget( templates ); + + for( int i = 0; i < (int) TDEIconTemplateContainer::self()->count(); i++ ) + templates->insertItem( new TDEIconListBoxItem( *TDEIconTemplateContainer::self()->at( i ) ) ); +} + +NewFromTemplate::~NewFromTemplate() +{ +} + +void NewFromTemplate::checkSelection( int ) +{ + //kdDebug(4640) << "checkSelection(int) " << templates->currentItem() << endl; + if( templates->currentItem() != -1 ) + wiz->finishButton()->setEnabled( true ); + else + wiz->finishButton()->setEnabled( false ); +} + +KNewIcon::KNewIcon( TQWidget* parent ) + : KWizard( parent, 0, true ) +{ + //kdDebug(4640) << "KNewIcon" << endl; + setCaption( i18n( "Create New Icon" ) ); + resize( 400, 250 ); + + openstyle = 0; + + finishButton()->setEnabled( true ); + cancelButton()->setEnabled( true ); + nextButton()->setEnabled( false ); + + select = new NewSelect( this ); + connect( select, TQT_SIGNAL( iconopenstyle( int ) ), TQT_SLOT( iconOpenStyle( int ) ) ); + + scratch = new KResizeWidget( this, 0, TQSize( 32, 32 ) ); + // this doesn't accept default valid size, besides spin buttons won't allow + // an invalid size to be set by the user - forces user to change valid default + // size to create the new icon object - + connect( scratch, TQT_SIGNAL( validSize( bool ) ), TQT_SLOT( checkPage( bool ) ) ); + connect(this, TQT_SIGNAL(selected(const TQString &)), this, TQT_SLOT(checkPage(const TQString &))); + templ = new NewFromTemplate(this); + templ->hide(); + + addPage(select, i18n("Select Icon Type")); + addPage(scratch, i18n("Create From Scratch")); + act = scratch; + //addPage(templ, i18n("Create From Template")); +} + +KNewIcon::~KNewIcon() +{ + delete select; + delete scratch; + delete templ; +} + +void KNewIcon::okClicked() +{ + if(openstyle == Blank) + emit newicon(scratch->getSize()); + else + emit newicon(templ->path()); + hide(); + setResult(1); + accept(); +} + +void KNewIcon::cancelClicked() +{ + hide(); + setResult(0); + reject(); +} + +void KNewIcon::iconOpenStyle(int style) +{ + openstyle = style; + + if( act ) + removePage( act ); + + if(openstyle == Blank) + { + act = scratch; + setNextEnabled( act, true ); + addPage( scratch, i18n( "Create From Scratch" ) ); + } + else if( openstyle == Template ) + { + act = templ; + setNextEnabled( act, true ); + addPage( templ, i18n( "Create From Template" ) ); + } +} + +void KNewIcon::checkPage( bool b) +{ + //kdDebug(4640) << "checkPage(int) " << openstyle << " " << p << endl; + if(openstyle == Blank) + finishButton()->setEnabled(true); + else if( !b ) + finishButton()->setEnabled(false); + else + templ->checkSelection(0); +} + +void KNewIcon::checkPage(const TQString &) +{ + if(currentPage() == select || openstyle == Blank) + finishButton()->setEnabled(true); + else + finishButton()->setEnabled(false); +} +#include "knew.moc" + + + + + diff --git a/tdeiconedit/knew.h b/tdeiconedit/knew.h new file mode 100644 index 00000000..faae9684 --- /dev/null +++ b/tdeiconedit/knew.h @@ -0,0 +1,168 @@ +/* + KDE Draw - a small graphics drawing program for the KDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KNEWICON_H__ +#define __KNEWICON_H__ + +#include +#include +#include +#include + +#include + +#include "kresize.h" + +class TDEIconListBox; +class TDEIconTemplateContainer; +class TQButtonGroup; +class TQRadioButton; +class TQGroupBox; + +struct TDEIconTemplate +{ + TQString path; + TQString title; +}; + +class TDEIconListBoxItem : public TQListBoxItem +{ +public: + TDEIconListBoxItem( TDEIconTemplate ); + + + const TQString path() { return icontemplate.path; } + TDEIconTemplate& iconTemplate() { return icontemplate; } + void reloadIcon(); + +protected: + virtual void paint( TQPainter * ); + virtual int height( const TQListBox * ) const; + virtual int width( const TQListBox * ) const; +private: + TQPixmap pm; + TDEIconTemplate icontemplate; +}; + +class TDEIconListBox : public TQListBox +{ + Q_OBJECT + +public: + TDEIconListBox( TQWidget *parent ) : TQListBox(parent) {} ; + const TQString path(int idx) { return ((TDEIconListBoxItem*)item(idx))->path(); } + TDEIconTemplate& iconTemplate(int idx) { return ((TDEIconListBoxItem*)item(idx))->iconTemplate(); } + +}; + +class TDEIconTemplateContainer : public TQValueList +{ +public: + static TDEIconTemplateContainer* self() + { + if (!instance) + instance = new TDEIconTemplateContainer; + return instance; + } + + void save(); + +private: + static TDEIconTemplateContainer* instance; + + const TDEIconTemplateContainer operator = (const TDEIconTemplateContainer&); + TDEIconTemplateContainer(const TDEIconTemplateContainer&); + + TDEIconTemplateContainer(); + ~TDEIconTemplateContainer(); +}; + +class NewSelect : public TQWidget +{ + Q_OBJECT + +public: + NewSelect(TQWidget *parent); + ~NewSelect(); + +signals: + void iconopenstyle(int); + +protected slots: + void buttonClicked(int); + +protected: + KWizard *wiz; + TQButtonGroup *grp; + TQRadioButton *rbscratch, *rbtempl; +}; + +class NewFromTemplate : public TQWidget +{ + Q_OBJECT + +public: + NewFromTemplate(TQWidget *parent); + ~NewFromTemplate(); + + const TQString path() { return TQString(templates->path(templates->currentItem())); } + +public slots: + void checkSelection(int); + +protected: + TDEIconListBox *templates; + KWizard *wiz; + TQGroupBox *grp; +}; + +class KNewIcon : public KWizard +{ + Q_OBJECT + +public: + KNewIcon(TQWidget *parent); + ~KNewIcon(); + + enum { Blank = 0, Template = 1}; + int openStyle() { return openstyle; } + const TQString templatePath() { return TQString(templ->path()); } + const TQSize templateSize() { return scratch->getSize(); } + +protected slots: + void okClicked(); + void cancelClicked(); + void iconOpenStyle(int); + void checkPage(bool); + void checkPage(const TQString &); + +signals: + void newicon(const TQSize); + void newicon(const TQString); + +protected: + NewSelect *select; + KResizeWidget *scratch; + NewFromTemplate *templ; + TQWidget *act; + int openstyle; +}; + +#endif // __KNEWICON_H__ diff --git a/tdeiconedit/kresize.cpp b/tdeiconedit/kresize.cpp new file mode 100644 index 00000000..b7007238 --- /dev/null +++ b/tdeiconedit/kresize.cpp @@ -0,0 +1,83 @@ +/* + KDE Draw - a small graphics drawing program for the KDE + Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) + Copyright (C) 2002 Nadeem Hasan ( nhasan@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include + +#include +#include + +#include "kresize.h" + +KResizeWidget::KResizeWidget( TQWidget* parent, const char* name, + const TQSize& size ) : TQWidget( parent, name ) +{ + TQHBoxLayout* genLayout = new TQHBoxLayout( this ); + + TQGroupBox* group = new TQGroupBox( i18n( "Size" ), this ); + group->setColumnLayout( 0, Qt::Horizontal ); + genLayout->addWidget( group ); + + TQHBoxLayout* layout = new TQHBoxLayout( group->layout(), 6 ); + + m_width = new KIntSpinBox( 1, 200, 1, 1, 10, group ); + m_width->setValue( size.width() ); + layout->addWidget( m_width, 1 ); + + TQLabel* label = new TQLabel( "X", group ); + layout->addWidget( label ); + + m_height = new KIntSpinBox( 1, 200, 1, 1, 10, group); + m_height->setValue( size.height() ); + layout->addWidget( m_height, 1 ); + + setMinimumSize( 200, 100 ); +} + +KResizeWidget::~KResizeWidget() +{ +} + +const TQSize KResizeWidget::getSize() +{ + return TQSize( m_width->value(), m_height->value() ); +} + +KResizeDialog::KResizeDialog( TQWidget* parent, const char* name, + const TQSize size ) + : KDialogBase( parent, name, true, i18n( "Select Size" ), Ok|Cancel ) +{ + m_resize = new KResizeWidget( this, "resize widget", size ); + + setMainWidget( m_resize ); +} + +KResizeDialog::~KResizeDialog() +{ +} + +const TQSize KResizeDialog::getSize() +{ + return m_resize->getSize(); +} + +#include "kresize.moc" diff --git a/tdeiconedit/kresize.h b/tdeiconedit/kresize.h new file mode 100644 index 00000000..fcfb18c3 --- /dev/null +++ b/tdeiconedit/kresize.h @@ -0,0 +1,64 @@ +/* + KDE Draw - a small graphics drawing program for the KDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) + Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KRESIZE_H__ +#define __KRESIZE_H__ + +#include + +class KIntSpinBox; + +class KResizeWidget : public TQWidget +{ + Q_OBJECT + + +public: + + KResizeWidget( TQWidget* parent, const char* name, const TQSize& ); + ~KResizeWidget(); + + const TQSize getSize(); + +private: + + KIntSpinBox *m_width; + KIntSpinBox *m_height; +}; + +class KResizeDialog : public KDialogBase +{ + Q_OBJECT + + +public: + + KResizeDialog( TQWidget* parent, const char* name, const TQSize s ); + ~KResizeDialog(); + + const TQSize getSize(); + +private: + + KResizeWidget* m_resize; +}; + +#endif //__KRESIZE_H__ diff --git a/tdeiconedit/main.cpp b/tdeiconedit/main.cpp new file mode 100644 index 00000000..5b28bcd8 --- /dev/null +++ b/tdeiconedit/main.cpp @@ -0,0 +1,89 @@ +/* + KDE Draw - a small graphics drawing program for the KDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@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; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +// A lot of this code is lifted from KMail. Thanks, guys! + +#include + +#include +#include +#include +#include +#include + +#include "tdeiconedit.h" +#include "config.h" +#include "properties.h" + +static const char description[] = + I18N_NOOP("TDE Icon Editor"); + +static TDECmdLineOptions options[] = +{ + { "+[file(s)]" , I18N_NOOP("Icon file(s) to open"), 0 }, + TDECmdLineLastOption +}; + +int main(int argc, char **argv) +{ + TDEAboutData aboutData( "tdeiconedit", I18N_NOOP("TDEIconEdit"), + VERSION, description, TDEAboutData::License_GPL, + "(c) 1998, Thomas Tanghus"); + + aboutData.addAuthor("Thomas Tanghus",0, "tanghus@kde.org"); + aboutData.addAuthor("John Califf",0, "jcaliff@compuzone.net"); + aboutData.addAuthor("Laurent Montel",0, "lmontel@mandrakesoft.com"); + aboutData.addAuthor("Aaron J. Seigo",0, "aseigo@olympusproject.org"); + aboutData.addCredit( "Nadeem Hasan", "Rewrote UI to use XMLGUI\n" + "Lots of fixes and cleanup", "nhasan@nadmm.com" ); + aboutData.addCredit( "Adrian Page", I18N_NOOP("Bug fixes and GUI tidy up"), + "Adrian.Page@tesco.net" ); + TDECmdLineArgs::init( argc, argv, &aboutData ); + TDECmdLineArgs::addCmdLineOptions( options ); // Add our own options. + + TDEApplication a; + +// setSignalHandler(signalHandler); + + if (a.isRestored()) + { + RESTORE(TDEIconEdit); + } + else + { + TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs(); + for(int i = 0; i < args->count(); i++) + { + TDEIconEdit *ki = new TDEIconEdit(args->url(i), "tdeiconedit"); + TQ_CHECK_PTR(ki); + } + + if (args->count() == 0) + { + TDEIconEdit *ki = new TDEIconEdit; + TQ_CHECK_PTR(ki); + } + args->clear(); + } + + int rc = a.exec(); + delete TDEIconEditProperties::self(); + return rc; +} + diff --git a/tdeiconedit/palettetoolbar.cpp b/tdeiconedit/palettetoolbar.cpp new file mode 100644 index 00000000..5e61cb48 --- /dev/null +++ b/tdeiconedit/palettetoolbar.cpp @@ -0,0 +1,178 @@ +/* + tdeiconedit - a small graphics drawing program for the KDE + Copyright ( C ) 1998 Thomas Tanghus ( tanghus@kde.org ) + Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include +#include + +#include +#include + +#include "tdeiconcolors.h" +#include "palettetoolbar.h" + +PaletteToolBar::PaletteToolBar( TQWidget *parent, const char *name ) + : TDEToolBar( parent, name ) +{ + TQWidget *base = new TQWidget( this ); + + TQBoxLayout::Direction d = orientation() == Qt::Horizontal? + TQBoxLayout::LeftToRight : TQBoxLayout::TopToBottom; + m_layout = new TQBoxLayout( base, d, 2, 6 ); + + m_lblPreview = new TQLabel( base ); + m_lblPreview->setFrameStyle( TQFrame::Panel|TQFrame::Sunken ); + m_lblPreview->setFixedHeight( 64 ); + m_lblPreview->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter ); + TQWhatsThis::add(m_lblPreview, i18n( "Preview\n\nThis is a 1:1 preview" + " of the current icon" ) ); + m_layout->addWidget( m_lblPreview ); + + m_currentColorView = new TQLabel( base ); + m_currentColorView->setFrameStyle( TQFrame::Panel|TQFrame::Sunken ); + m_currentColorView->setFixedHeight( 24 ); + m_currentColorView->setAlignment( TQt::AlignHCenter|TQt::AlignVCenter ); + TQWhatsThis::add(m_currentColorView, i18n( "Current color\n\nThis is the currently selected color" ) ); + m_layout->addWidget( m_currentColorView ); + + TQVBoxLayout *vlayout = new TQVBoxLayout( m_layout, 0 ); + TQLabel *l = new TQLabel( i18n( "System colors:" ), base ); + vlayout->addWidget( l ); + m_sysColors = new KSysColors( base ); + TQWhatsThis::add(m_sysColors, i18n( "System colors\n\nHere you can select" + " colors from the TDE icon palette" ) ); + + vlayout->addWidget( m_sysColors ); + + connect( m_sysColors, TQT_SIGNAL( newColor(uint) ), + TQT_SIGNAL( newColor(uint) ) ); + + vlayout = new TQVBoxLayout( m_layout, 0 ); + l = new TQLabel( i18n( "Custom colors:" ), base ); + vlayout->addWidget( l ); + m_customColors = new KCustomColors( base ); + TQWhatsThis::add(m_customColors, i18n( "Custom colors\n\nHere you can" + " build a palette of custom colors.\nDouble-click on a box to edit" + " the color" ) ); + + vlayout->addWidget( m_customColors ); + + connect( m_customColors, TQT_SIGNAL( newColor(uint) ), + TQT_SIGNAL( newColor(uint) ) ); + connect( this, TQT_SIGNAL( newColor(uint)), + this, TQT_SLOT(currentColorChanged(uint))); + currentColorChanged(OPAQUE_MASK|0); + + setEnableContextMenu( false ); + setMovingEnabled( false ); +} + +void PaletteToolBar::setOrientation( Qt::Orientation o ) +{ + if( barPos() == Floating ) + o = o == Qt::Vertical ? Qt::Horizontal : Qt::Vertical; + + TQBoxLayout::Direction d = o == Qt::Horizontal? TQBoxLayout::LeftToRight + : TQBoxLayout::TopToBottom; + m_layout->setDirection( d ); + + TQDockWindow::setOrientation( o ); +} + +void PaletteToolBar::previewChanged( const TQPixmap &p ) +{ + m_lblPreview->setPixmap( p ); +} + +void PaletteToolBar::addColors( uint n, uint *c ) +{ + m_customColors->clear(); + for( uint i = 0; i < n; i++ ) + addColor( c[ i ] ); +} + +void PaletteToolBar::addColor( uint color ) +{ + if( !m_sysColors->contains( color ) ) + m_customColors->addColor( color ); +} + +void PaletteToolBar::setPreviewBackground( TQPixmap pixmap ) +{ + m_lblPreview->setBackgroundPixmap(pixmap); +} + +void PaletteToolBar::setPreviewBackground( const TQColor& colour ) +{ + m_lblPreview->setBackgroundColor(colour); +} + +void PaletteToolBar::currentColorChanged(uint color) +{ + if(tqAlpha(color) == 255) + { + m_currentColorView->setBackgroundColor(color); + } + else + { + // Show the colour as if drawn over a checkerboard pattern + const int squareWidth = 8; + const uint lightColour = tqRgb(255, 255, 255); + const uint darkColour = tqRgb(127, 127, 127); + + TQPixmap pm(2 * squareWidth, 2 * squareWidth); + TQPainter p(&pm); + + double alpha = tqAlpha(color) / 255.0; + + int r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(lightColour) + 0.5); + int g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(lightColour) + 0.5); + int b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(lightColour) + 0.5); + + uint squareColour = tqRgb(r, g, b); + + p.setPen(TQt::NoPen); + p.setBrush(TQColor(squareColour)); + p.drawRect(0, 0, squareWidth, squareWidth); + p.drawRect(squareWidth, squareWidth, squareWidth, squareWidth); + + r = int(tqRed(color) * alpha + (1 - alpha) * tqRed(darkColour) + 0.5); + g = int(tqGreen(color) * alpha + (1 - alpha) * tqGreen(darkColour) + 0.5); + b = int(tqBlue(color) * alpha + (1 - alpha) * tqBlue(darkColour) + 0.5); + + squareColour = tqRgb(r, g, b); + + p.setBrush(TQColor(squareColour)); + p.drawRect(squareWidth, 0, squareWidth, squareWidth); + p.drawRect(0, squareWidth, squareWidth, squareWidth); + + p.end(); + + m_currentColorView->setBackgroundPixmap(pm); + } +} + +#include "palettetoolbar.moc" + +/* vim: et sw=2 ts=2 +*/ + diff --git a/tdeiconedit/palettetoolbar.h b/tdeiconedit/palettetoolbar.h new file mode 100644 index 00000000..3945331a --- /dev/null +++ b/tdeiconedit/palettetoolbar.h @@ -0,0 +1,64 @@ +/* + tdeiconedit - a small graphics drawing program for the KDE + Copyright ( C ) 1998 Thomas Tanghus ( tanghus@kde.org ) + Copyright ( C ) 2002 Nadeem Hasan ( nhasan@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef PALLETTETOOLBAR_H +#define PALLETTETOOLBAR_H + +#include + +class TQBoxLayout; +class TQLabel; +class KSysColors; +class KCustomColors; + +class PaletteToolBar : public TDEToolBar +{ + Q_OBJECT + + + public: + PaletteToolBar( TQWidget *parent, const char *name = 0L ); + + signals: + void newColor( uint c ); + + public slots: + virtual void setOrientation( Qt::Orientation o ); + void previewChanged( const TQPixmap &p ); + void addColors( uint n, uint *c ); + void addColor( uint color ); + void setPreviewBackground( TQPixmap pixmap ); + void setPreviewBackground( const TQColor& colour ); + void currentColorChanged(uint color); + + private: + TQBoxLayout *m_layout; + TQLabel *m_lblPreview; + TQLabel *m_currentColorView; + KSysColors *m_sysColors; + KCustomColors *m_customColors; +}; + +#endif // PALLETTETOOLBAR_H + +/* vim: et sw=2 ts=2 +*/ + diff --git a/tdeiconedit/pics/CMakeLists.txt b/tdeiconedit/pics/CMakeLists.txt new file mode 100644 index 00000000..e4d1a99a --- /dev/null +++ b/tdeiconedit/pics/CMakeLists.txt @@ -0,0 +1,15 @@ +################################################# +# +# (C) 2010-2011 Calvin Morrison +# mutantturkey@gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +add_subdirectory( icons ) +add_subdirectory( toolbar ) + +tde_install_icons( tdeiconedit ) diff --git a/tdeiconedit/pics/Makefile.am b/tdeiconedit/pics/Makefile.am new file mode 100644 index 00000000..d1b91e7d --- /dev/null +++ b/tdeiconedit/pics/Makefile.am @@ -0,0 +1,5 @@ + +SUBDIRS = icons toolbar + +KDE_ICON = tdeiconedit + diff --git a/tdeiconedit/pics/hi16-app-tdeiconedit.png b/tdeiconedit/pics/hi16-app-tdeiconedit.png new file mode 100644 index 00000000..ff16bcae Binary files /dev/null and b/tdeiconedit/pics/hi16-app-tdeiconedit.png differ diff --git a/tdeiconedit/pics/hi22-app-tdeiconedit.png b/tdeiconedit/pics/hi22-app-tdeiconedit.png new file mode 100644 index 00000000..8bb080c7 Binary files /dev/null and b/tdeiconedit/pics/hi22-app-tdeiconedit.png differ diff --git a/tdeiconedit/pics/hi32-app-tdeiconedit.png b/tdeiconedit/pics/hi32-app-tdeiconedit.png new file mode 100644 index 00000000..604b17dd Binary files /dev/null and b/tdeiconedit/pics/hi32-app-tdeiconedit.png differ diff --git a/tdeiconedit/pics/hi48-app-tdeiconedit.png b/tdeiconedit/pics/hi48-app-tdeiconedit.png new file mode 100644 index 00000000..b95bffae Binary files /dev/null and b/tdeiconedit/pics/hi48-app-tdeiconedit.png differ diff --git a/tdeiconedit/pics/icons/CMakeLists.txt b/tdeiconedit/pics/icons/CMakeLists.txt new file mode 100644 index 00000000..31ee65bf --- /dev/null +++ b/tdeiconedit/pics/icons/CMakeLists.txt @@ -0,0 +1,12 @@ +################################################# +# +# (C) 2010-2011 Calvin Morrison +# mutantturkey@gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +install( FILES source.png standard.png compressed.png DESTINATION ${DATA_INSTALL_DIR}/tdeiconedit/pics ) diff --git a/tdeiconedit/pics/icons/Makefile.am b/tdeiconedit/pics/icons/Makefile.am new file mode 100644 index 00000000..ee985d89 --- /dev/null +++ b/tdeiconedit/pics/icons/Makefile.am @@ -0,0 +1,5 @@ +pics_DATA = source.png \ + standard.png \ + compressed.png + +picsdir = $(kde_datadir)/tdeiconedit/pics diff --git a/tdeiconedit/pics/icons/compressed.png b/tdeiconedit/pics/icons/compressed.png new file mode 100644 index 00000000..c919f3bf Binary files /dev/null and b/tdeiconedit/pics/icons/compressed.png differ diff --git a/tdeiconedit/pics/icons/source.png b/tdeiconedit/pics/icons/source.png new file mode 100644 index 00000000..8351e380 Binary files /dev/null and b/tdeiconedit/pics/icons/source.png differ diff --git a/tdeiconedit/pics/icons/standard.png b/tdeiconedit/pics/icons/standard.png new file mode 100644 index 00000000..df1e8318 Binary files /dev/null and b/tdeiconedit/pics/icons/standard.png differ diff --git a/tdeiconedit/pics/logo.xpm b/tdeiconedit/pics/logo.xpm new file mode 100644 index 00000000..97dab29d --- /dev/null +++ b/tdeiconedit/pics/logo.xpm @@ -0,0 +1,137 @@ +/* XPM */ +static const char *logo[]={ +"260 87 47 1", +"J c #9e9e9e", +"b c #9f9f9f", +"f c #a0a0a0", +"I c #a1a1a1", +"c c #a2a2a2", +"B c #a3a3a3", +"G c #a4a4a4", +"O c #a5a5a5", +"a c #a6a6a6", +"v c #a7a7a7", +"N c #a8a8a8", +"R c #a9a9a9", +"z c #aaaaaa", +"p c #ababab", +"w c #acacac", +"t c #adadad", +"Q c #aeaeae", +"P c #afafaf", +"o c #b0b0b0", +"S c #b1b1b1", +"K c #b2b2b2", +"C c #b3b3b3", +"M c #b4b4b4", +"s c #b5b5b5", +"k c #b6b6b6", +"n c #b7b7b7", +"H c #b8b8b8", +"A c #b9b9b9", +"d c #bababa", +"u c #bbbbbb", +"x c #bcbcbc", +"l c #bdbdbd", +"q c #bebebe", +"r c #bfbfbf", +"e c #c0c0c0", +"D c #c1c1c1", +"E c #c2c2c2", +"L c #c3c3c3", +"F c #c4c4c4", +"i c #c5c5c5", +"h c #c6c6c6", +"# c #c7c7c7", +"j c #c8c8c8", +"y c #c9c9c9", +"g c #cacaca", +"m c #cbcbcb", +". c #cccccc", +"....................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...................................#abcdebfg.hbijklm...............", +"................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................................gni.opqrcstbu..vd...................", +"................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................................qbu.wk..qbxbv..y....................", +"........iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE................iszA....qB..svm..vsCbr.........Dd.sE........", +"........sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp................sbbl.#..Ffg.jGog.zp.l#.........jh.Hp........", +".....dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE............dm.obbFmfH.mBu..iaIvbq...............yIE.......", +"...#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj.......#pbu.pbJg.CbE.sGg.AKunL.................MNrKj....", +"...EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg.......EJbGmabB..ycp.#ONHBE....................#ffHg....", +"....PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.........PbbHfbGh..xbHDOswq..............NF......acg.....", +".hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC......hDixfbcbbbbwD.nbbz.................pp......jGC.....", +".KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE.....KbbpsbbfBbbbbNuLqg.................lbr..CF..rfE....", +".QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg....QbbAgGbbuAObbbQm...................gBOm.PB#..KOg...", +"..qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg....qIF.lbbOgmlNzg....................yvbn.hfP..#ONg..", +"...vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL.....vx..Rbbn.npwA....................MGGIj.MfFmvqbL..", +"..HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm....HJo..LbbNmObbr................#y..anebS.gRcSbyrm..", +".Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn......Lbbbl..SMyQQEqy...............sbBj.Od.nJA.gKvn.....", +"..wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.........wpMGPrLdNbL.................yflad.to.ibbvRq.......", +".....ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul.............ubbNpbbM..............Dnhibmwn.lfEhbsul........", +".....sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm...............sbBg.KJC...........DFiIQBEbjOq..PINOm..........", +".....Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh................Fkd..mxF...........qzAz.Cazvcg..QtKh...........", +"...........rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy........................rL...........gbvQ.gGHBOiiwOy.............", +".....................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj...................................LHL.wbO..dOiNbfoj..............", +"....................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#....................................EIbcPFfJ#.yfD.E#................", +"................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................................jwe.QKyjvwKbk..Pr...................", +"..........mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm................................mj....lbD.tM..FbxbBm......................", +"........ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl................ezfH....rB..ABy..RKlfl.........qs.Pl........", +"........Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la................Mbbrmxm.#bj.mpvEyvw.#m..........m.la........", +"....jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx...........jQy.Qbbi.BQ..as..htfbci...............mOx.......", +"...LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#.......LBbs.Rbfg.dbx.xfF.ssiEm.................AGMa#....", +"...hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE........hIbIjGbO..mvOmhNIwBh.............#......gfIE.....", +"....kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.........kbbKfbcum.LftABDnh..............Bq......wIh.....", +".DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw......DkAkGbbbbbbBkjeGbC.................Qam.....gRw.....", +".PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu.....PbbQxbbfzJbbbfomy..................DbH..zx..iIu....", +".kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi....kIbl.zbbkFofbbn.....................vIj.MbE..AIi...", +"..#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy....#BF.LbbI#.FCCy....................hBbK.yBz..Epcy..", +"..mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF....mOA..obbo.KIOH....................QRRbL.ubxgBLfF..", +".gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy....gQbp..#IbojcfbD...............mlD..OAiBz..Kbvfyy...", +".LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD......LbbbKm.dr#ak.ym...............pcbF.OA.ubQygxKD.....", +"..nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.........nkrpGMnPIbD.................#bFRA.Sw.#bfbIe.......", +".....dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#.............dbbCkfbS..............kpqib.wH.EfdLbeh#........", +".....Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp................Mbv..xBx...........xqEIdIlfLBD..kJfp...........", +".....gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm................gDE...ur...........EOnw.uBofGm.yakqm...........", +"...........hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm........................hj...........mIcw..NsRcAABtm.............", +".....................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx....................................dtngCbB..rByMfvx...............", +".................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl....................................m..uINROFBbL.gIl...................", +"................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................................FId.ws.mPOkbK..AL...................", +".........gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg.................gDL....lI#.oS..jIdcIj.........gj.Fg........", +"........dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok................dfbd....Dc..qfL..pPivr.........rH.ok........", +".....m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg............m..Cbbemoj.ybi..sInlGP...............Dcg.......", +"....eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.........eGh.Qbb#.vvg.zP..LoOfwy................Rs.j.....", +"...rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#.......rbbP.RbI..ebk.Ebx.QH....................qfNB#....", +"...gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy........gGbbFBbv...tcjiRIcRg.............lm.....mIBy.....", +"....ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.........ubbpbbbPL.jGGPByLm..............GH......kbD.....", +".uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag.....uzQQRbbbbbbbzq#PNx.................Ccj..#...oag....", +".wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC.....wbbSEJbfCBbbbbvm...................ibS..vK..yGC....", +".rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl....rNbD.obbSmuabbe.....................pbF.dbx..ebl...", +"...OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#.....OD.#IbbL.LnnL....................ebbp.mvOmmdKb#..", +"..jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh....jBk..nbbz.Qbbd....................pPobq.EbK#fhRh..", +".#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg.....#abay.gOIxEBpvF...............hSn..GdyROy.xIbGg....", +".#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy......#IbbRF.EhqIq.................mOzfe.Nk.rbOqeDqy.....", +"..eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.........eEgKbNpGbbl...............m.hbjpH.MvmjbOOaF.......", +".....HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi...............HbbqDBbt...........m.mpfMhbmpA.#cPdbi..........", +".....Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM................Hfw..Lti...........dkqGiOsIAfF..AfbM...........", +"......gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey..................gj...nx...........hIKQ.Efkbv..Ecey............", +"...........m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH.........................m............mBbz..QoCbQQfH..............", +"....................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...................................mPIwFdbIm.EfjrpKh...............", +".................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd....................................Eg.saCMfqvbr.mBd...................", +"................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................................ebH.pn..ncdbw..Dy...................", +"........gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#................gekq....lcm.Kw..mGHNbL.........hD.l#........", +"........nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co................nbbx....Lfm.Ffd..ptmKL.........Lr.Co........", +".....F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#............F..SbbEmOD.gfe..rIpKfk...............hf#.......", +"...msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg.......msbD.wbbj.tc#.PR..qoowHm................PPylg....", +"...rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj.......rbbR.vbc..hfo.hcSLNl....................Lbfwj....", +"....Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.........Nbbqcbvm..MbELNzIM..............Kj......BBm.....", +".g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd......g..qJbObbbOAymwbaO.................vS......rfd.....", +".sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#.....sbcpobbJbbbbICidCi.................HbF..ly..nI#....", +".zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp.....zbbkjIbbdQbbbbvm...................jfp..zRg.mzp....", +".jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK....jCfL.kbbz.hSfGh....................mzbq.Dbs..hIK...", +"...vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi.....vq.gGbbq.qMCl....................dffOm.tIjmoAbi..", +"..EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj....EIM..lbbv.Rbbl....................NMHbn.#cRxb#Mj..", +".iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm.....iIbIL..zNiAvnKj...............qapm.GumoIL.Fvbwm....", +".gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy.......gGIRBdgjiCbE.................gICBx.zM.EbfKsDy......", +"..jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.........jm.HbbIIbbA..............jEmibgwn.HBjjbwoKy.......", +".....kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy...............kbIygRbt...........hyyBGRFbgRu.gvvoIy..........", +".....qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl................qzK..ykj...........uouvmptOPf#..kvvl...........", +"...........Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi........................Aq...........ybtQ.#fHfvmmnIi.............", +".....................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE...................................yLmmvbN..MplIBBaE.............."}; diff --git a/tdeiconedit/pics/toolbar/CMakeLists.txt b/tdeiconedit/pics/toolbar/CMakeLists.txt new file mode 100644 index 00000000..d73cdf45 --- /dev/null +++ b/tdeiconedit/pics/toolbar/CMakeLists.txt @@ -0,0 +1,20 @@ +################################################# +# +# (C) 2010-2011 Calvin Morrison +# mutantturkey@gmail.com +# +# Improvements and feedback are welcome +# +# This file is released under GPL >= 2 +# +################################################# + +install( FILES + fileclose.png circle.png filledcircle.png line.png + paintbrush-cursor.xpm airbrush-cursor.xpm ellipse.png + filledellipse.png rectangle.png filledrectangle.png areaselect.png + selectrect.png selectcircle.png fill-cursor.xpm grid.png pointer.png + aim.png aim-cursor.xpm window_new.png grayscale.png kdepalette.png + transform.png eraser-cursor.xpm colorpicker-cursor.xpm + DESTINATION ${DATA_INSTALL_DIR}/tdeiconedit/pics +) diff --git a/tdeiconedit/pics/toolbar/Makefile.am b/tdeiconedit/pics/toolbar/Makefile.am new file mode 100644 index 00000000..362dd41a --- /dev/null +++ b/tdeiconedit/pics/toolbar/Makefile.am @@ -0,0 +1,28 @@ +toolbar_DATA = fileclose.png \ + circle.png \ + filledcircle.png \ + line.png \ + paintbrush-cursor.xpm \ + airbrush-cursor.xpm \ + ellipse.png \ + filledellipse.png \ + rectangle.png \ + filledrectangle.png \ + areaselect.png \ + selectrect.png \ + selectcircle.png \ + fill-cursor.xpm \ + grid.png \ + pointer.png \ + aim.png \ + aim-cursor.xpm \ + window_new.png \ + grayscale.png \ + kdepalette.png \ + transform.png \ + eraser-cursor.xpm \ + colorpicker-cursor.xpm + + + +toolbardir = $(kde_datadir)/tdeiconedit/pics diff --git a/tdeiconedit/pics/toolbar/aim-cursor.xpm b/tdeiconedit/pics/toolbar/aim-cursor.xpm new file mode 100644 index 00000000..ecef295f --- /dev/null +++ b/tdeiconedit/pics/toolbar/aim-cursor.xpm @@ -0,0 +1,28 @@ +/* XPM */ +static char *aim[]={ +"22 22 3 1", +". c None", +"a c #000000", +"# c #ffffff", +"......................", +"..........#...........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +"..#######...#######...", +".#aaaaaaa...aaaaaaa#..", +"..#######...#######...", +"..........a...........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +".........#a#..........", +"..........#...........", +"......................", +"......................"}; diff --git a/tdeiconedit/pics/toolbar/aim.png b/tdeiconedit/pics/toolbar/aim.png new file mode 100644 index 00000000..ed0088a7 Binary files /dev/null and b/tdeiconedit/pics/toolbar/aim.png differ diff --git a/tdeiconedit/pics/toolbar/airbrush-cursor.xpm b/tdeiconedit/pics/toolbar/airbrush-cursor.xpm new file mode 100644 index 00000000..2fd8314d --- /dev/null +++ b/tdeiconedit/pics/toolbar/airbrush-cursor.xpm @@ -0,0 +1,35 @@ +/* XPM */ +static char *airbrush[]={ +"22 22 10 1", +". c None", +"a c #000000", +"d c #2a2a2a", +"g c #303030", +"c c #444444", +"h c #555555", +"f c #808080", +"b c #aaaaaa", +"e c #c8c8c8", +"# c #ffffff", +"..................#aa#", +".................#abca", +"................#abcca", +"...####........#abccda", +"..#aaaa#......#abccda#", +".#a####a#....#abccda#.", +".#a#eeba#...#abccda#..", +".#a#eeba#..#abccda#...", +".#a#eeba#.#abccda#....", +".#a#eeba##abccda#.....", +".#a#ebba#abccda#......", +".#a#bbbfaeccda#.......", +"..#a#bfgaebda#.#####..", +"..#a#bfaebffa##ddddd#.", +"...#afaebbfa##ddaaada#", +"..#a#eebbfadddda###da#", +".#a#eebbfa#aaaa#..#da#", +"#a#eebbfa#.####..#da#.", +"#aeebbfa#.......#da#..", +".#ebbfa#.......#da#...", +"dhfffa#.......#da#....", +"hd.aa#........#da#...."}; diff --git a/tdeiconedit/pics/toolbar/areaselect.png b/tdeiconedit/pics/toolbar/areaselect.png new file mode 100644 index 00000000..de3fe8fb Binary files /dev/null and b/tdeiconedit/pics/toolbar/areaselect.png differ diff --git a/tdeiconedit/pics/toolbar/circle.png b/tdeiconedit/pics/toolbar/circle.png new file mode 100644 index 00000000..ccb5c9db Binary files /dev/null and b/tdeiconedit/pics/toolbar/circle.png differ diff --git a/tdeiconedit/pics/toolbar/colorpicker-cursor.xpm b/tdeiconedit/pics/toolbar/colorpicker-cursor.xpm new file mode 100644 index 00000000..8edc155e --- /dev/null +++ b/tdeiconedit/pics/toolbar/colorpicker-cursor.xpm @@ -0,0 +1,36 @@ +/* XPM */ +static char *colorpicker[]={ +"22 22 11 1", +". c None", +"# c #000000", +"f c #151515", +"e c #2a2a2a", +"c c #333333", +"d c #3a3a3a", +"i c #808080", +"g c #aaaaaa", +"b c #d5d5d5", +"h c #dcdcdc", +"a c #ffffff", +"..................##a.", +".................#bc#a", +"................#bdcc#", +"...............#bddce#", +"..............#bddcef#", +"............##bddcef#a", +"...........#bdddcef#a.", +"............#becef#a..", +"...........#agbee#a...", +"..........#ahgibf#a...", +".........#ahgi#.#a....", +"........#ahgi#........", +".......#ahgi#.........", +"......#ahgi#..........", +".....#ahgi#...........", +"....#ahgi#............", +"...#ahgi#.............", +"..#ahgi#..............", +".#ahgi#...............", +".#hgi#................", +"#ig##.................", +"#i#..................."}; diff --git a/tdeiconedit/pics/toolbar/ellipse.png b/tdeiconedit/pics/toolbar/ellipse.png new file mode 100644 index 00000000..658b944d Binary files /dev/null and b/tdeiconedit/pics/toolbar/ellipse.png differ diff --git a/tdeiconedit/pics/toolbar/eraser-cursor.xpm b/tdeiconedit/pics/toolbar/eraser-cursor.xpm new file mode 100644 index 00000000..12c07f11 --- /dev/null +++ b/tdeiconedit/pics/toolbar/eraser-cursor.xpm @@ -0,0 +1,32 @@ +/* XPM */ +static char *eraser[]={ +"22 22 7 1", +"b c #000080", +"e c #800000", +"a c #8080ff", +"d c #c00000", +"# c #c0c0ff", +"c c #ffc0c0", +". c #ffffff", +"......................", +"...............#aa....", +"..............#aaaa...", +".............#aaaaaa..", +"............#aaaaaaaa.", +"...........#aaaaaaaaa.", +"..........#aaaaaaaaab.", +".........#aaaaaaaaab..", +"........#aaaaaaaaab...", +".......c##aaaaaaab....", +"......cdd##aaaaab.....", +".....cdddd##aaab......", +"....cdddddd##ab.......", +"...cdddddddd#b........", +"..cddddddddde.........", +".cddddddddde..........", +".ccddddddde...........", +".cccddddde............", +"..cccddde.............", +"...cccde..............", +"....cce...............", +"......................"}; diff --git a/tdeiconedit/pics/toolbar/fileclose.png b/tdeiconedit/pics/toolbar/fileclose.png new file mode 100644 index 00000000..906b2ec5 Binary files /dev/null and b/tdeiconedit/pics/toolbar/fileclose.png differ diff --git a/tdeiconedit/pics/toolbar/fill-cursor.xpm b/tdeiconedit/pics/toolbar/fill-cursor.xpm new file mode 100644 index 00000000..d5ca3034 --- /dev/null +++ b/tdeiconedit/pics/toolbar/fill-cursor.xpm @@ -0,0 +1,36 @@ +/* XPM */ +static char *fill[]={ +"22 22 11 1", +". c None", +"a c #000000", +"i c #222222", +"c c #2a2a2a", +"e c #333333", +"g c #3a3a3a", +"d c #404040", +"h c #555555", +"f c #aaaaaa", +"b c #d5d5d5", +"# c #ffffff", +"......................", +"............#.........", +"...........#a#........", +"..........#aba#.......", +".........#abcca#......", +"........#adceca#......", +".......#afdcecca#.....", +"......#abcedcecca#....", +".....#afcgeedeeca#....", +"...##fddcggeeeecca#...", +"..#fdccddcggeeeecca#..", +".#ddcdcdddcggeeeeca#..", +".#dccbdddddcggeeecca#.", +".#ddcddbbdddgggeeccba#", +".#ddhadddbddggggeebia#", +".#fda#adddbdddggebca#.", +".#fda##aaddbbddgbca#..", +".#fda#.##adddbdbca#...", +"..#da#...#aaddbca#....", +"..#fa#....##abca#.....", +"..#f#.......#aa#......", +"...#.........##......."}; diff --git a/tdeiconedit/pics/toolbar/filledcircle.png b/tdeiconedit/pics/toolbar/filledcircle.png new file mode 100644 index 00000000..1431fbe2 Binary files /dev/null and b/tdeiconedit/pics/toolbar/filledcircle.png differ diff --git a/tdeiconedit/pics/toolbar/filledellipse.png b/tdeiconedit/pics/toolbar/filledellipse.png new file mode 100644 index 00000000..3f1d6220 Binary files /dev/null and b/tdeiconedit/pics/toolbar/filledellipse.png differ diff --git a/tdeiconedit/pics/toolbar/filledrectangle.png b/tdeiconedit/pics/toolbar/filledrectangle.png new file mode 100644 index 00000000..1a011a63 Binary files /dev/null and b/tdeiconedit/pics/toolbar/filledrectangle.png differ diff --git a/tdeiconedit/pics/toolbar/flood-cursor.xpm b/tdeiconedit/pics/toolbar/flood-cursor.xpm new file mode 100644 index 00000000..8707443d --- /dev/null +++ b/tdeiconedit/pics/toolbar/flood-cursor.xpm @@ -0,0 +1,32 @@ +/* XPM */ +static char *flood[]={ +"22 22 7 1", +"b c #000000", +"c c #303030", +"# c #808080", +"e c #a0a0a4", +"a c #c0c0c0", +"d c #dcdcdc", +". c #ffffff", +"......................", +"......................", +"...........##.........", +"..........####........", +".........##aa##.......", +".........##ba##.......", +".........##.b##.......", +".......cc##..b#.......", +".....cccd##d..b.......", +"....cccdd#b.d..b......", +"...ccceddbdb.d..b.....", +"..eccceeddbdd.d..b....", +"..ecccceeddddd.d..b...", +"..ecccebeeddddd.d.b...", +"..eccceebeeddddd.b....", +"..eccc.eebeeddd.b.....", +"..eecc..eebeeddb......", +"...eec...eebeeb.......", +"....e.....eebb........", +"...........ee.........", +"......................", +"......................"}; diff --git a/tdeiconedit/pics/toolbar/flood.png b/tdeiconedit/pics/toolbar/flood.png new file mode 100644 index 00000000..45e1130b Binary files /dev/null and b/tdeiconedit/pics/toolbar/flood.png differ diff --git a/tdeiconedit/pics/toolbar/grayscale.png b/tdeiconedit/pics/toolbar/grayscale.png new file mode 100644 index 00000000..3b475550 Binary files /dev/null and b/tdeiconedit/pics/toolbar/grayscale.png differ diff --git a/tdeiconedit/pics/toolbar/grid.png b/tdeiconedit/pics/toolbar/grid.png new file mode 100644 index 00000000..acf1b687 Binary files /dev/null and b/tdeiconedit/pics/toolbar/grid.png differ diff --git a/tdeiconedit/pics/toolbar/kdepalette.png b/tdeiconedit/pics/toolbar/kdepalette.png new file mode 100644 index 00000000..705865a2 Binary files /dev/null and b/tdeiconedit/pics/toolbar/kdepalette.png differ diff --git a/tdeiconedit/pics/toolbar/line.png b/tdeiconedit/pics/toolbar/line.png new file mode 100644 index 00000000..25964286 Binary files /dev/null and b/tdeiconedit/pics/toolbar/line.png differ diff --git a/tdeiconedit/pics/toolbar/paintbrush-cursor.xpm b/tdeiconedit/pics/toolbar/paintbrush-cursor.xpm new file mode 100644 index 00000000..fa4a1e32 --- /dev/null +++ b/tdeiconedit/pics/toolbar/paintbrush-cursor.xpm @@ -0,0 +1,36 @@ +/* XPM */ +static char *paintbrush[]={ +"22 22 11 1", +". c None", +"a c #000000", +"d c #272727", +"i c #2c2c2c", +"h c #303030", +"c c #3b3b3b", +"g c #aaaaaa", +"e c #c8c8c8", +"b c #d5d5d5", +"f c #ececec", +"# c #ffffff", +".................#abcc", +"................#abccc", +"...............#abcccd", +"..............#abcccdd", +".............#abcccdda", +"............#abcccdda#", +"...........#abcccdda#.", +"..........#abcccdda#..", +"..........abcccdda#...", +".........##cccdda#....", +".........#eecdda#.....", +"......##f#eegda#......", +".....#aabeggga#.......", +"....#abbchgaa#........", +"...#abcccda##.........", +"...abcccdda#..........", +"..#abccddia#..........", +".#abccdiaa#...........", +"#abdddaa##............", +"aaaaaa##..............", +"######................", +"......................"}; diff --git a/tdeiconedit/pics/toolbar/paintbrush.png b/tdeiconedit/pics/toolbar/paintbrush.png new file mode 100644 index 00000000..53774e19 Binary files /dev/null and b/tdeiconedit/pics/toolbar/paintbrush.png differ diff --git a/tdeiconedit/pics/toolbar/pointer.png b/tdeiconedit/pics/toolbar/pointer.png new file mode 100644 index 00000000..62229be5 Binary files /dev/null and b/tdeiconedit/pics/toolbar/pointer.png differ diff --git a/tdeiconedit/pics/toolbar/rectangle.png b/tdeiconedit/pics/toolbar/rectangle.png new file mode 100644 index 00000000..7075cf10 Binary files /dev/null and b/tdeiconedit/pics/toolbar/rectangle.png differ diff --git a/tdeiconedit/pics/toolbar/selectcircle.png b/tdeiconedit/pics/toolbar/selectcircle.png new file mode 100644 index 00000000..91f528ec Binary files /dev/null and b/tdeiconedit/pics/toolbar/selectcircle.png differ diff --git a/tdeiconedit/pics/toolbar/selectrect.png b/tdeiconedit/pics/toolbar/selectrect.png new file mode 100644 index 00000000..0ce3aa21 Binary files /dev/null and b/tdeiconedit/pics/toolbar/selectrect.png differ diff --git a/tdeiconedit/pics/toolbar/spraycan-cursor.xpm b/tdeiconedit/pics/toolbar/spraycan-cursor.xpm new file mode 100644 index 00000000..13d84b80 --- /dev/null +++ b/tdeiconedit/pics/toolbar/spraycan-cursor.xpm @@ -0,0 +1,30 @@ +/* XPM */ +static char *spraycan[]={ +"22 22 5 1", +"# c #000000", +"c c #808080", +"b c #a0a0a4", +"a c #c0c0c0", +". c #ffffff", +"......................", +"......................", +"......................", +"......................", +"........##............", +"#.#..#..#a####........", +".........#a.#.#.......", +"......#..#b#a..#......", +".#.......##aaa..#.....", +"....#....#cbaaa..#....", +".........b#cbaaa..#...", +"..#...#..bc#cbaaa..#..", +"..........bc#cbaaa..#.", +".....#.....bc#cbaaa..#", +"............bc#cbaaa#.", +".............bc#cba#..", +"..............bc#c#...", +"...............bc#....", +"................b.....", +"......................", +"......................", +"......................"}; diff --git a/tdeiconedit/pics/toolbar/spraycan.png b/tdeiconedit/pics/toolbar/spraycan.png new file mode 100644 index 00000000..c2ce7e8d Binary files /dev/null and b/tdeiconedit/pics/toolbar/spraycan.png differ diff --git a/tdeiconedit/pics/toolbar/transform.png b/tdeiconedit/pics/toolbar/transform.png new file mode 100644 index 00000000..3a5ca2b3 Binary files /dev/null and b/tdeiconedit/pics/toolbar/transform.png differ diff --git a/tdeiconedit/pics/toolbar/window_new.png b/tdeiconedit/pics/toolbar/window_new.png new file mode 100644 index 00000000..4d0a40a0 Binary files /dev/null and b/tdeiconedit/pics/toolbar/window_new.png differ diff --git a/tdeiconedit/properties.cpp b/tdeiconedit/properties.cpp new file mode 100644 index 00000000..4a90d7fe --- /dev/null +++ b/tdeiconedit/properties.cpp @@ -0,0 +1,147 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include + +#include "properties.h" + +TDEIconEditProperties* TDEIconEditProperties::m_self = 0; + +TDEIconEditProperties* TDEIconEditProperties::self() +{ + if (!m_self) + m_self = new TDEIconEditProperties(); + return m_self; +} + +TDEIconEditProperties::TDEIconEditProperties() : TQObject() +{ + TDEConfig *config = kapp->config(); + + config->setGroup( "Appearance" ); + + m_bgMode = (TQWidget::BackgroundMode)config->readNumEntry( "BackgroundMode", TQWidget::FixedPixmap); + m_bgColor = config->readColorEntry( "BackgroundColor", &gray); + m_bgPixmap = config->readPathEntry("BackgroundPixmap"); + + config->setGroup( "Grid" ); + m_pasteTransparent = config->readBoolEntry( "PasteTransparent", false ); + m_showGrid = config->readBoolEntry( "ShowGrid", true ); + m_gridScale = config->readNumEntry( "GridScaling", 10 ); + m_showRulers = config->readBoolEntry( "ShowRulers", true ); + + if(config->readEntry( "TransparencyDisplayType", "Checkerboard" ) == "Checkerboard") + { + m_transparencyDisplayType = TDEIconEditGrid::TRD_CHECKERBOARD; + } + else + { + m_transparencyDisplayType = TDEIconEditGrid::TRD_SOLIDCOLOR; + } + + TQColor checkColor1(255, 255, 255); + TQColor checkColor2(127, 127, 127); + + m_checkerboardColor1 = config->readColorEntry( "CheckerboardColor1", &checkColor1); + m_checkerboardColor2 = config->readColorEntry( "CheckerboardColor2", &checkColor2); + + TQString checkerboardSize = config->readEntry( "CheckerboardSize", "Medium" ); + + if(checkerboardSize == "Small") + { + m_checkerboardSize = TDEIconEditGrid::CHK_SMALL; + } + else + if(checkerboardSize == "Medium") + { + m_checkerboardSize = TDEIconEditGrid::CHK_MEDIUM; + } + else + { + m_checkerboardSize = TDEIconEditGrid::CHK_LARGE; + } + + TQColor solidColor(255, 255, 255); + m_transparencySolidColor = config->readColorEntry( "TransparencySolidColor", &solidColor); +} + +TDEIconEditProperties::~TDEIconEditProperties() +{ + kdDebug(4640) << "TDEIconEditProperties: Deleting properties" << endl; + m_self = 0; +} + +void TDEIconEditProperties::save() +{ + TDEConfig *config = kapp->config(); + + config->setGroup( "Appearance" ); + + config->writeEntry("BackgroundMode", m_bgMode ); + config->writeEntry("BackgroundColor", m_bgColor ); + config->writePathEntry("BackgroundPixmap", m_bgPixmap ); + + config->setGroup( "Grid" ); + config->writeEntry("PasteTransparent", m_pasteTransparent ); + config->writeEntry("ShowGrid", m_showGrid ); + config->writeEntry("GridScaling", m_gridScale ); + config->writeEntry("ShowRulers", m_showRulers ); + + TQString transparencyDisplayType; + + switch(m_transparencyDisplayType) + { + case TDEIconEditGrid::TRD_SOLIDCOLOR: + transparencyDisplayType = "SolidColor"; + break; + case TDEIconEditGrid::TRD_CHECKERBOARD: + default: + transparencyDisplayType = "Checkerboard"; + break; + } + + config->writeEntry( "TransparencyDisplayType", transparencyDisplayType ); + config->writeEntry( "CheckerboardColor1", m_checkerboardColor1 ); + config->writeEntry( "CheckerboardColor2", m_checkerboardColor2 ); + + TQString checkerboardSize; + + switch(m_checkerboardSize) + { + case TDEIconEditGrid::CHK_SMALL: + checkerboardSize = "Small"; + break; + case TDEIconEditGrid::CHK_MEDIUM: + checkerboardSize = "Medium"; + break; + case TDEIconEditGrid::CHK_LARGE: + default: + checkerboardSize = "Large"; + break; + } + + config->writeEntry( "CheckerboardSize", checkerboardSize ); + config->writeEntry( "TransparencySolidColor", m_transparencySolidColor ); + + config->sync(); +} + diff --git a/tdeiconedit/properties.h b/tdeiconedit/properties.h new file mode 100644 index 00000000..e9ac5a88 --- /dev/null +++ b/tdeiconedit/properties.h @@ -0,0 +1,82 @@ +/* + tdeiconedit - a small graphics drawing program the KDE. + + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __PROPS_H__ +#define __PROPS_H__ + +#include + +#include "tdeicongrid.h" + +class TDEIconEditProperties : public TQObject +{ +public: + static TDEIconEditProperties* self(); + ~TDEIconEditProperties(); + + TQString bgPixmap() { return m_bgPixmap; } + TQColor bgColor() { return m_bgColor; } + TQWidget::BackgroundMode bgMode() { return m_bgMode; } + bool showGrid() { return m_showGrid; } + bool pasteTransparent() { return m_pasteTransparent; } + bool showRulers() { return m_showRulers; } + int gridScale() { return m_gridScale; } + + TDEIconEditGrid::TransparencyDisplayType transparencyDisplayType() const { return m_transparencyDisplayType; } + TQColor checkerboardColor1() const { return m_checkerboardColor1; } + TQColor checkerboardColor2() const { return m_checkerboardColor2; } + TDEIconEditGrid::CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } + TQColor transparencySolidColor() const { return m_transparencySolidColor; } + + void setBgPixmap( const TQString &p ) { m_bgPixmap = p; } + void setBgColor( const TQColor &c ) { m_bgColor = c; } + void setBgMode( TQWidget::BackgroundMode m ) { m_bgMode = m; } + void setShowGrid( bool b ) { m_showGrid = b; } + void setPasteTransparent( bool b ) { m_pasteTransparent = b; } + void setShowRulers( bool b ) { m_showRulers = b; } + void setGridScale( int s ) { m_gridScale = s; } + void setTransparencyDisplayType(TDEIconEditGrid::TransparencyDisplayType t) { m_transparencyDisplayType = t; } + void setCheckerboardColor1(const TQColor& c) { m_checkerboardColor1 = c; } + void setCheckerboardColor2(const TQColor& c) { m_checkerboardColor2 = c; } + void setCheckerboardSize(TDEIconEditGrid::CheckerboardSize size) { m_checkerboardSize = size; } + void setTransparencySolidColor(const TQColor& c) { m_transparencySolidColor = c; } + + void save(); + +protected: + TDEIconEditProperties(); + TQString m_bgPixmap; + TQColor m_bgColor; + TQWidget::BackgroundMode m_bgMode; + bool m_showGrid; + bool m_pasteTransparent; + bool m_showRulers; + int m_gridScale; + TDEIconEditGrid::TransparencyDisplayType m_transparencyDisplayType; + TQColor m_checkerboardColor1; + TQColor m_checkerboardColor2; + TDEIconEditGrid::CheckerboardSize m_checkerboardSize; + TQColor m_transparencySolidColor; + + static TDEIconEditProperties* m_self; +}; + +#endif //__PROPS_H__ diff --git a/tdeiconedit/tdeicon.cpp b/tdeiconedit/tdeicon.cpp new file mode 100644 index 00000000..cd3ab63a --- /dev/null +++ b/tdeiconedit/tdeicon.cpp @@ -0,0 +1,279 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include "tdeicon.h" +#include "utils.h" + +TDEIconEditIcon::TDEIconEditIcon(TQObject *parent, const TQImage *img, KURL url) + : TQObject(parent) +{ + f = 0; + _lastdir = "/"; + //checkUnNamedBackup(img); + + if(!url.isEmpty()) + { + open(img, url); + } +} + + +TDEIconEditIcon::~TDEIconEditIcon() +{ +} + + +bool TDEIconEditIcon::open(const TQImage *image, KURL url) +{ + TQImage *img = (TQImage*)image; + + if(url.isEmpty()) + return false; + + kdDebug(4640) << "TDEIconEditIcon::open " << url.prettyURL() << endl; + + if(!url.isValid()) // try to see if it is a relative filename + { + kdDebug(4640) << "TDEIconEditIcon::open (malformed) " << url.prettyURL() << endl; + + TQFileInfo fi(url.url()); + if(fi.isRelative()) + url = "file:" + fi.absFilePath(); + + if(!url.isValid()) // Giving up + { + TQString msg = i18n("The URL: %1 \nseems to be malformed.\n").arg(url.url()); + KMessageBox::sorry((TQWidget*)parent(), msg); + return false; + } + } + + TQString filename; + + if(url.isLocalFile()) + { + filename = url.path(); + } + else + { + if(!TDEIO::NetAccess::download( url, filename, (TQWidget*)parent() )) + { + TQString msg = i18n("There was an error loading:\n%1\n").arg(url.prettyURL()); + KMessageBox::error((TQWidget*)parent(), msg); + return false; + } + } + + bool loadedOk = img->load(filename); + + if(!url.isLocalFile()) + { + TDEIO::NetAccess::removeTempFile( filename ); + } + + if(!loadedOk) + { + TQString msg = i18n("There was an error loading:\n%1\n").arg(url.prettyURL()); + KMessageBox::error((TQWidget*)parent(), msg); + } + else + { + kdDebug(4640) << "TDEIconEditIcon::open - Image loaded" << endl; + + // _url is saved off for use in saving the image to the same + // file later - should include full path + if(url.isLocalFile()) + { + _url = url.path(); + } + else + { + _url = ""; + } + + kdDebug(4640) << "TDEIcon: _url: " << _url << endl; + + // this causes updates of preview, color palettes, etc. + emit loaded(img); + kdDebug(4640) << "loaded(img)" << endl; + + // this is the name that shows up in status bar - + // should be filename with path + emit newname(url.prettyURL()); + kdDebug(4640) << "newname(_url) : " << url.prettyURL() << endl; + + emit addrecent(url.prettyURL()); + + kdDebug(4640) << "TDEIconEditIcon::open - done" << endl; + } + + return loadedOk; +} + + + +bool TDEIconEditIcon::promptForFile(const TQImage *img) +{ + kdDebug(4640) << "TDEIconEditIcon::promptForFile(const TQImage *img)" << endl; + /* + TQString filter = i18n("*|All Files (*)\n" + "*.xpm|XPM (*.xpm)\n" + "*.png|PNG (*.png)\n" + "*.gif|GIF files (*.gif)\n" + "*.jpg|JPEG files (*.jpg)\n" + "*.ico|Icon files (*.ico)\n"); + + + KURL url = KFileDialog::getOpenURL( TQString(), filter ); + */ + bool loaded = false; + KURL url = KFileDialog::getImageOpenURL( TQString(), TQT_TQWIDGET(parent()) ); + + if( !url.isEmpty() ) + { + loaded = open( img, url ); + } + + return loaded; +} + + + +bool TDEIconEditIcon::saveAs(const TQImage *image) +{ + kdDebug(4640) << "TDEIconEditIcon::saveAs" << endl; + + TQString file; + + //Get list of file types.. + KFileDialog *dialog=new KFileDialog(TQString(), TQString(), TQT_TQWIDGET(parent()), "file dialog", true); + dialog->setCaption( i18n("Save Icon As") ); + dialog->setKeepLocation( true ); + dialog->setMimeFilter( KImageIO::mimeTypes(KImageIO::Writing), "image/png" ); + dialog->setOperationMode( KFileDialog::Saving ); + + if(dialog->exec()==TQDialog::Accepted) + { + file = dialog->selectedFile(); + if( file.isNull() ) + { + delete dialog; + return false; + } + if ( !KImageIO::canWrite(KImageIO::type(file)) ) + { + if ( KImageIO::canWrite(KImageIO::typeForMime(dialog->currentFilter())) ) + file += "."+KImageIO::suffix(KImageIO::typeForMime(dialog->currentFilter())); + else + file += ".png"; + } + } + else + { + delete dialog; + return false; + } + + delete dialog; + + if(TQFile::exists(file)) + { + int r=KMessageBox::warningContinueCancel(TQT_TQWIDGET(parent()), + i18n( "A file named \"%1\" already exists. " + "Overwrite it?" ).arg(file), + i18n( "Overwrite File?" ), + i18n( "&Overwrite" ) ); + + if(r==KMessageBox::Cancel) + { + return false; + } + } + + return save( image, file ); +} + + + +bool TDEIconEditIcon::save(const TQImage *image, const TQString &_filename) +{ + kdDebug(4640) << "TDEIconEditIcon::save" << endl; + TQString filename = _filename; + + if(filename.isEmpty()) + { + if(_url.isEmpty()) + { + return saveAs(image); + } + else + { + KURL turl(_url); + filename = turl.path(); + } + } + + TQImage *img = (TQImage*)image; + img->setAlphaBuffer(true); + + KURL turl(filename); + TQString str = turl.path(); + bool savedOk = false; + + /* base image type on file extension - let kimageio + take care of this determination */ + + if(img->save(str, KImageIO::type(str).ascii())) + { + kdDebug(4640) << "img->save()) successful" << endl; + emit saved(); + _url = filename; + + // emit signal to change title bar to reflect new name + emit newname(filename); + kdDebug(4640) << "newname(filenamme) : " << _url << endl; + savedOk = true; + emit addrecent(filename); + } + else + { + TQString msg = i18n("There was an error saving:\n%1\n").arg(str); + KMessageBox::error((TQWidget*)parent(), msg); + kdDebug(4640) << "TDEIconEditIcon::save - " << msg << endl; + } + + kdDebug(4640) << "TDEIconEditIcon::save - done" << endl; + + return savedOk; +} + + +#include "tdeicon.moc" diff --git a/tdeiconedit/tdeicon.h b/tdeiconedit/tdeicon.h new file mode 100644 index 00000000..ede75f71 --- /dev/null +++ b/tdeiconedit/tdeicon.h @@ -0,0 +1,79 @@ +/* + KDE Icon Editor - a small icon drawing program for the KDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KICON_H__ +#define __KICON_H__ + +#include +#include +#include +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#if defined(HAVE_FCNTL_H) && !defined(HAVE_FLOCK) +#include +#endif + +#ifdef HAVE_STDC_HEADERS +#include +#endif +#include +#include +#include + +class TQImage; + +class TDEIconEditIcon : public TQObject +{ + Q_OBJECT + +public: + TDEIconEditIcon(TQObject*, const TQImage*, KURL url = KURL() ); + ~TDEIconEditIcon(); + + bool isLocal() { return local; } + TQString url() { return _url; } + void setUrl( const TQString & u ) { _url = u; }; + +public slots: + bool open(const TQImage*, KURL url = KURL()); + bool promptForFile(const TQImage*); + bool save(const TQImage*, const TQString &filename=TQString()); + bool saveAs(const TQImage*); + +signals: + void newmessage( const TQString &); + void newname(const TQString &); + void addrecent(const TQString &); + void opennewwin(const TQString &); + void loaded(TQImage *); + void saved(); + +protected: + bool local; + TQString _url; + TQString _lastdir; + FILE *f; +}; + +#endif //__KICON_H__ diff --git a/tdeiconedit/tdeiconcolors.cpp b/tdeiconedit/tdeiconcolors.cpp new file mode 100644 index 00000000..6b695fc5 --- /dev/null +++ b/tdeiconedit/tdeiconcolors.cpp @@ -0,0 +1,170 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include + +#include + +#include "tdeiconcolors.h" + +KDrawColors::KDrawColors(TQWidget *parent) : KColorGrid(parent, 0, 3) +{ + kdDebug(4640) << "KDrawColors - constructor" << endl; + setCellSize(17); + setGrid(true); + setGridState(KColorGrid::Shaded); + selected = 0; + kdDebug(4640) << "KDrawColors - constructor - done" << endl; +} + +void KDrawColors::paintCell( TQPainter *painter, int row, int col ) +{ + //KColorGrid::paintCell(painter, row, col); + uint c = colorAt( row * numCols() + col ); + TQBrush brush(c); + int d = spacing(); + + qDrawShadePanel( painter, d, d, cellSize()-d, cellSize()-d, + colorGroup(), true, 1, &brush); + if ( row * numCols() + col == selected) + painter->drawWinFocusRect( d+1, d+1, cellSize()-(2*d)+1, cellSize()-(2*d)+1 ); +} + +void KDrawColors::mouseReleaseEvent( TQMouseEvent *e ) +{ + int row = findRow( e->pos().y() ); + int col = findCol( e->pos().x() ); + int cell = row * numCols() + col; + + if ( selected != cell ) + { + int prevSel = selected; + selected = cell; + updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); + updateCell( row, col, FALSE ); + } + + emit newColor(colorAt(cell)|OPAQUE_MASK); +} + +KSysColors::KSysColors(TQWidget *parent) : KDrawColors(parent) +{ + kdDebug(4640) << "KSysColors - constructor" << endl; + + setNumRows(7); + setNumCols(6); + //fill(backgroundColor().rgb()|OPAQUE_MASK); + setFixedSize(numCols()*cellSize(), numRows()*cellSize()); + fill(TRANSPARENT|OPAQUE_MASK); + + int numcells = 42; + + kdDebug(4640) << "KSysColors - constructor - before setColor" << endl; + for(int i = 0; i < numcells; i++) + { + setColor(i, iconpalette[i]|OPAQUE_MASK); + } + kdDebug(4640) << "KSysColors - constructor - done" << endl; +} + +KCustomColors::KCustomColors(TQWidget *parent) : KDrawColors(parent) +{ + kdDebug(4640) << "KCustomColors - constructor" << endl; + setNumRows(3); + setNumCols(6); + fill(TRANSPARENT|OPAQUE_MASK); + setFixedSize(numCols()*cellSize(), numRows()*cellSize()); + freecells = new bool[numRows()*numCols()]; + for(int i = 0; i < numRows()*numCols(); i++) + freecells[i] = true; + kdDebug(4640) << "KCustomColors - constructor - done" << endl; +} + +KCustomColors::~KCustomColors() +{ + delete [] freecells; +} + +void KCustomColors::mouseDoubleClickEvent(TQMouseEvent *e) +{ + int row = findRow( e->pos().y() ); + int col = findCol( e->pos().x() ); + int cell = row * numCols() + col; + TQColor color=colorAt(cell); + if(KColorDialog::getColor(color)) + { + setColor(cell, color.rgb()); + emit newColor(color.rgb()|OPAQUE_MASK); + freecells[cell] = false; + } +} + +void KCustomColors::addColor(uint c) +{ + if(!contains(c)) + { + int f = getFreeCell(); + if(f != -1) + { + TQColor color(c); + if(!color.isValid()) + { + kdDebug(4640) << "KCustomColors::addColor: Not a valid color: " << c << endl; + return; + } + //kdDebug(4640) << "KCustomColors::addColor: Adding color: " << c << " - " << tqRed(c) << " " << tqGreen(c) << " " << tqBlue(c) << endl; + setColor(f, c); + freecells[f] = false; + } + } +} + +int KCustomColors::getFreeCell() +{ + for (int i = 0; i < numRows()*numCols(); i++) + { + if(freecells[i]) + { + if(i+1 < numRows()*numCols()) + freecells[i+1] = true; + else + freecells[0] = true; + return i; + break; + } + } + freeAllCells(); // start over again - not very elegant + return 0; +} + +void KCustomColors::freeAllCells() +{ + for (int i = 0; i < numRows()*numCols(); i++) + freecells[i] = true; +} + +void KCustomColors::clear() +{ + fill(TRANSPARENT); + freeAllCells(); + update(); +} +#include "tdeiconcolors.moc" diff --git a/tdeiconedit/tdeiconcolors.h b/tdeiconedit/tdeiconcolors.h new file mode 100644 index 00000000..6e12d810 --- /dev/null +++ b/tdeiconedit/tdeiconcolors.h @@ -0,0 +1,86 @@ +/* + tdeiconedit - a small graphics drawing program for creating KDE icons + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KDRAWCOLORS_H__ +#define __KDRAWCOLORS_H__ + +#include + +#include + +#include "kcolorgrid.h" +#include "utils.h" + +class KDrawColors : public KColorGrid +{ + Q_OBJECT + +public: + KDrawColors(TQWidget *parent); + + //bool hasColor(uint); + +signals: + void newColor(uint); + +protected: + virtual void paintCell( TQPainter*, int, int ); + virtual void mouseReleaseEvent(TQMouseEvent*); + + int selected; +}; + +class KCustomColors : public KDrawColors +{ + Q_OBJECT + +public: + KCustomColors(TQWidget *parent); + ~KCustomColors(); + + void addColor(uint); + void clear(); + +protected: + virtual void mouseDoubleClickEvent(TQMouseEvent*); + int getFreeCell(); + void freeAllCells(); + +protected: + bool *freecells; + TQPopupMenu *popup; +}; + +class KSysColors : public KDrawColors +{ + Q_OBJECT + +public: + + KSysColors(TQWidget *parent); + +}; + + + +#endif //__KDRAWCOLORS_H__ + + + diff --git a/tdeiconedit/tdeiconconfig.cpp b/tdeiconedit/tdeiconconfig.cpp new file mode 100644 index 00000000..0fb4639a --- /dev/null +++ b/tdeiconedit/tdeiconconfig.cpp @@ -0,0 +1,589 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "tdeiconconfig.h" +#include "tdeiconedit.h" + +#ifndef PICS_INCLUDED +#define PICS_INCLUDED +#include "pics/logo.xpm" +#endif + +// little helper: +static inline TQPixmap loadIcon( const char * name ) +{ + return TDEGlobal::instance()->iconLoader() + ->loadIcon( TQString::fromLatin1(name), TDEIcon::NoGroup, TDEIcon::SizeMedium ); +} + +KTemplateEditDlg::KTemplateEditDlg(TQWidget *parent) + : KDialogBase(parent, "KTemplateEditDlg", true, i18n( "Icon Template" ), + Ok|Cancel ) +{ + TQFrame *frame = makeMainWidget(); + TQVBoxLayout *ml = new TQVBoxLayout(frame); + TQGroupBox *grp = new TQGroupBox(i18n("Template"), frame); + grp->setColumnLayout(0, Qt::Vertical); + grp->layout()->setSpacing(spacingHint()); + grp->layout()->setMargin(marginHint()); + TQGridLayout *l = new TQGridLayout(grp->layout()); + + ln_name = new TQLineEdit( grp ); + connect( ln_name, TQT_SIGNAL( textChanged( const TQString & ) ), + TQT_SLOT( slotTextChanged() ) ); + TQLabel* lb_name = new TQLabel( ln_name, i18n( "Description:" ), grp ); + + ln_path = new KURLRequester(grp); + connect( ln_path, TQT_SIGNAL( textChanged( const TQString & ) ), + TQT_SLOT( slotTextChanged() ) ); + TQLabel* lb_path = new TQLabel( ln_path, i18n( "Path:" ), grp ); + + l->addWidget(lb_name, 0, 0); + l->addWidget(ln_name, 0, 1); + l->addWidget(lb_path, 1, 0); + l->addWidget(ln_path, 1, 1); + + ml->addWidget( grp, 1); + + slotTextChanged(); + + setMinimumSize( 400, 150 ); +} + +void KTemplateEditDlg::slotTextChanged() +{ + TQString name = ln_name->text(), path = ln_path->url(); + enableButtonOK(name.length() && path.length()); +} + +void KTemplateEditDlg::setName(const TQString & name) +{ + ln_name->setText(name); +} + +TQString KTemplateEditDlg::name() +{ + return ln_name->text(); +} + +void KTemplateEditDlg::setPath(const TQString & path) +{ + ln_path->setURL(path); +} + +TQString KTemplateEditDlg::path() +{ + return ln_path->url(); +} + +KTemplateConfig::KTemplateConfig(TQWidget *parent) : TQWidget(parent) +{ + kdDebug(4640) << "KTemplateConfig constructor" << endl; + + btadd = btremove = btedit = 0L; + + TQGroupBox* grp = new TQGroupBox( i18n( "Templates" ), this ); + grp->setColumnLayout( 0, Qt::Horizontal ); + + templates = new TDEIconListBox( grp ); + connect( templates, TQT_SIGNAL( highlighted( int ) ), + TQT_SLOT( checkSelection( int ) ) ); + connect( templates, TQT_SIGNAL(doubleClicked( TQListBoxItem * ) ), + TQT_SLOT( edit() ) ); + + TQVBoxLayout* ml = new TQVBoxLayout( this ); + ml->addWidget( grp ); + + TQVBoxLayout* l = new TQVBoxLayout( grp->layout(), KDialog::spacingHint() ); + l->addWidget( templates ); + + for( unsigned int i = 0; i < TDEIconTemplateContainer::self()->count(); i++ ) + templates->insertItem( new TDEIconListBoxItem( *TDEIconTemplateContainer::self()->at( i ) ) ) ; + + KButtonBox *bbox = new KButtonBox( grp ); + + btadd = bbox->addButton( i18n( "&Add..." ) ); + connect( btadd, TQT_SIGNAL( clicked() ), TQT_SLOT( add() ) ); + + btedit = bbox->addButton( i18n( "&Edit..." ) ); + connect( btedit, TQT_SIGNAL( clicked() ), TQT_SLOT( edit() ) ); + btedit->setEnabled( false ); + + btremove = bbox->addButton( i18n( "&Remove" ) ); + connect( btremove, TQT_SIGNAL( clicked() ), TQT_SLOT( remove() ) ); + btremove->setEnabled( false ); + + bbox->addStretch( 1 ); + + bbox->layout(); + l->addWidget( bbox ); +} + +KTemplateConfig::~KTemplateConfig() +{ +} + +void KTemplateConfig::saveSettings() +{ + kdDebug(4640) << "KTemplateConfig::saveSettings" << endl; + + TDEIconTemplateContainer::self()->clear(); + + for(int i = 0; i < (int)templates->count(); i++) + { + TDEIconTemplateContainer::self()->append(templates->iconTemplate(i)); + } + TDEIconTemplateContainer::self()->save(); + kdDebug(4640) << "KTemplateConfig::saveSettings - done" << endl; + +} + +void KTemplateConfig::checkSelection(int) +{ + kdDebug(4640) << "KTemplateConfig::checkSelection" << endl; + if(templates->currentItem() != -1) + { + if(btremove) btremove->setEnabled(true); + if(btedit) btedit->setEnabled(true); + } + else + { + if(btremove) btremove->setEnabled(false); + if(btedit) btedit->setEnabled(false); + } + kdDebug(4640) << "KTemplateConfig::checkSelection - done" << endl; +} + +void KTemplateConfig::remove() +{ + templates->removeItem(templates->currentItem()); +} + +void KTemplateConfig::add() +{ + KTemplateEditDlg dlg(this); + if(dlg.exec()) + { + TDEIconTemplate it; + it.path = dlg.path(); + it.title = dlg.name(); + templates->insertItem(new TDEIconListBoxItem(it)); + } +} + +void KTemplateConfig::edit() +{ + KTemplateEditDlg dlg(this); + dlg.setPath(templates->path(templates->currentItem())); + dlg.setName(templates->text(templates->currentItem())); + templates->item(templates->currentItem()); + if(dlg.exec()) + { + //Edit the entry + TDEIconTemplate &it=templates->iconTemplate(templates->currentItem()); + it.path = dlg.path(); + it.title = dlg.name(); + static_cast(templates->item(templates->currentItem()))->reloadIcon(); + templates->update(); + } +} + +KBackgroundConfig::KBackgroundConfig( TQWidget* parent ) + : TQWidget( parent ) +{ + kdDebug(4640) << "KBackgroundConfig - constructor" << endl; + + lb_ex = 0L; + + TDEIconEditProperties *props = TDEIconEditProperties::self(); + + pixpath = props->bgPixmap(); + pix.load(pixpath); + if(pix.isNull()) + { + kdDebug(4640) << "BGPIX: " << pixpath << " not valid!" << endl; + TQPixmap pmlogo((const char**)logo); + pix = pmlogo; + } + + TQVBoxLayout *mainLayout = new TQVBoxLayout( this ); + + TQGroupBox *grp1 = new TQGroupBox( i18n( "Select Background" ), this ); + grp1->setColumnLayout(0, Qt::Vertical ); + grp1->layout()->setSpacing( KDialog::spacingHint() ); + grp1->layout()->setMargin( KDialog::marginHint() ); + mainLayout->addWidget( grp1 ); + + TQGridLayout *grp1Layout = new TQGridLayout( grp1->layout(), 3, 2 ); + + TQButtonGroup* btngrp = new TQButtonGroup( grp1 ); + btngrp->setExclusive( true ); + btngrp->setFrameStyle( TQFrame::NoFrame ); + connect( btngrp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( slotBackgroundMode( int ) ) ); + grp1Layout->addWidget( btngrp, 0, 0 ); + + TQVBoxLayout *bgl = new TQVBoxLayout( btngrp, 5 ); + + TQRadioButton *rbc = new TQRadioButton( i18n( "Use co&lor" ), btngrp ); + btngrp->insert( rbc, 0 ); + bgl->addWidget( rbc ); + + TQRadioButton *rbp = new TQRadioButton( i18n( "Use pix&map" ), btngrp ); + btngrp->insert( rbp, 1 ); + bgl->addWidget( rbp ); + + bgl->addStretch( 1 ); + + TQVBox *bbox = new TQVBox( grp1 ); + grp1Layout->addWidget( bbox, 0, 1 ); + + btcolor = new KColorButton(props->bgColor(), bbox) ; + connect(btcolor, TQT_SIGNAL(changed(const TQColor &)), + TQT_SLOT( selectColor(const TQColor &))); + + btpix = new TQPushButton(i18n( "Choose..." ), bbox); + connect( btpix, TQT_SIGNAL( clicked() ), TQT_SLOT( selectPixmap() ) ); + + TQGroupBox *grp2 = new TQGroupBox( i18n( "Preview" ), this ); + mainLayout->addWidget( grp2, 1 ); + + TQBoxLayout *l2 = new TQVBoxLayout( grp2, 15 ); + + l2->addSpacing( 10 ); + + lb_ex = new TQLabel( grp2 ); + lb_ex->setFrameStyle( TQFrame::Panel | TQFrame::Sunken ); + l2->addWidget( lb_ex ); + +/* + l1->addWidget( btngrp, 0, AlignLeft ); + l1->addLayout( l1r ); +*/ + bgmode = props->bgMode(); + + if( bgmode == TQWidget::FixedPixmap ) + { + btngrp->setButton( 1 ); + btcolor->setEnabled( false ); + lb_ex->setBackgroundPixmap( pix ); + } + else + { + btngrp->setButton( 0 ); + btpix->setEnabled( false ); + lb_ex->setBackgroundColor(btcolor->color()); + } +} + +KBackgroundConfig::~KBackgroundConfig() +{ +} + +void KBackgroundConfig::slotBackgroundMode(int id) +{ + if(id == 0) + { + bgmode = TQWidget::FixedColor; + btpix->setEnabled(false); + btcolor->setEnabled(true); + if(lb_ex) + lb_ex->setBackgroundColor(btcolor->color()); + } + else + { + bgmode = TQWidget::FixedPixmap; + btpix->setEnabled(true); + btcolor->setEnabled(false); + if(lb_ex) + lb_ex->setBackgroundPixmap(pix); + } +} + +void KBackgroundConfig::saveSettings() +{ + kdDebug(4640) << "KBackgroundConfig::saveSettings" << endl; + TDEIconEditProperties *props = TDEIconEditProperties::self(); + props->setBgMode( bgmode ); + props->setBgPixmap( pixpath ); + props->setBgColor( btcolor->color() ); + kdDebug(4640) << "KBackgroundConfig::saveSettings - done" << endl; +} + +void KBackgroundConfig::selectColor(const TQColor & newColor) +{ + lb_ex->setBackgroundColor(newColor); +} + +void KBackgroundConfig::selectPixmap() +{ + // KURL url = KFileDialog::getOpenURL("/", "*.xpm"); + KURL url = KFileDialog::getImageOpenURL("/"); + + if( url.isEmpty() ) + return; + + if( !url.isLocalFile() ) + { + KMessageBox::sorry( 0L, i18n( "Only local files are supported yet." ) ); + return; + } + + TQPixmap p(url.path()); + + if( !p.isNull() ) + { + lb_ex->setBackgroundPixmap( p ); + pixpath = url.path(); + } +} + +KMiscConfig::KMiscConfig(TQWidget *parent) : TQWidget(parent) +{ + kdDebug(4640) << "KMiscConfig - constructor" << endl; + + TDEIconEditProperties* props = TDEIconEditProperties::self(); + + TQBoxLayout *ml = new TQVBoxLayout( this, 0, 5 ); + + TQCheckBox *cbp = new TQCheckBox( i18n( "Paste &transparent pixels" ), this ); + connect( cbp, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( pasteMode( bool ) ) ); + ml->addWidget(cbp); + + TQCheckBox *cbr = new TQCheckBox( i18n( "Show &rulers" ), this ); + connect( cbr, TQT_SIGNAL( toggled( bool ) ), TQT_SLOT( showRulers( bool ) ) ); + ml->addWidget(cbr); + + TQButtonGroup* btngrp = new TQButtonGroup( i18n( "Transparency Display" ), this); + btngrp->setExclusive( true ); + connect( btngrp, TQT_SIGNAL( clicked( int ) ), TQT_SLOT( slotTransparencyDisplayType( int ) ) ); + ml->addWidget( btngrp ); + + TQVBoxLayout *tgl = new TQVBoxLayout( btngrp, KDialog::marginHint(), KDialog::spacingHint() ); + tgl->insertSpacing(0, 10); + + TQHBoxLayout *hl = new TQHBoxLayout(tgl); + + TQRadioButton *solidColorRButton = new TQRadioButton( i18n( "&Solid color:" ), btngrp ); + btngrp->insert( solidColorRButton, 0 ); + hl->addWidget( solidColorRButton ); + + m_solidColorButton = new KColorButton(props->transparencySolidColor(), btngrp); + btngrp->insert( m_solidColorButton, 2 ); + hl->addWidget(m_solidColorButton); + //connect(btcolor, TQT_SIGNAL(changed(const TQColor &)), + // TQT_SLOT( selectColor(const TQColor &))); + + TQRadioButton *checkerboardRButton = new TQRadioButton( i18n( "Checker&board" ), btngrp ); + btngrp->insert( checkerboardRButton, 1 ); + tgl->addWidget( checkerboardRButton ); + + TQGridLayout *grid = new TQGridLayout(tgl, 3, 3); + grid->addColSpacing(0, 40); + grid->setColStretch(1, 1); + grid->setColStretch(2, 1); + + m_checkerboardSizeCombo = new TQComboBox(btngrp); + m_checkerboardSizeCombo->insertItem( i18n( "Small" ) ); + m_checkerboardSizeCombo->insertItem( i18n( "Medium" ) ); + m_checkerboardSizeCombo->insertItem( i18n( "Large" ) ); + m_checkerboardSizeCombo->setCurrentItem(props->checkerboardSize()); + + TQLabel *label = new TQLabel(m_checkerboardSizeCombo, i18n("Si&ze:"), btngrp); + + grid->addWidget(label, 0, 1); + grid->addWidget(m_checkerboardSizeCombo, 0, 2); + + m_checkerboardColor1Button = new KColorButton(props->checkerboardColor1(), btngrp); + label = new TQLabel(m_checkerboardColor1Button, i18n("Color &1:"), btngrp); + + grid->addWidget(label, 1, 1); + grid->addWidget(m_checkerboardColor1Button, 1, 2); + + m_checkerboardColor2Button = new KColorButton(props->checkerboardColor2(), btngrp); + label = new TQLabel(m_checkerboardColor2Button, i18n("Color &2:"), btngrp); + + grid->addWidget(label, 2, 1); + grid->addWidget(m_checkerboardColor2Button, 2, 2); + + if(props->transparencyDisplayType() == TDEIconEditGrid::TRD_CHECKERBOARD) + { + checkerboardRButton->setChecked(true); + m_checkerboardColor1Button->setEnabled(true); + m_checkerboardColor2Button->setEnabled(true); + m_checkerboardSizeCombo->setEnabled(true); + + solidColorRButton->setChecked(false); + m_solidColorButton->setEnabled(false); + } + else + { + checkerboardRButton->setChecked(false); + m_checkerboardColor1Button->setEnabled(false); + m_checkerboardColor2Button->setEnabled(false); + m_checkerboardSizeCombo->setEnabled(false); + + solidColorRButton->setChecked(true); + m_solidColorButton->setEnabled(true); + } + + ml->addStretch(1); + + cbp->setChecked( props->pasteTransparent() ); + cbr->setChecked( props->showRulers() ); +} + +KMiscConfig::~KMiscConfig() +{ + +} + +void KMiscConfig::saveSettings() +{ + kdDebug(4640) << "KMiscConfig::saveSettings" << endl; + TDEIconEditProperties* props = TDEIconEditProperties::self(); + props->setPasteTransparent( pastemode ); + props->setShowRulers( showrulers ); + if(m_solidColorButton->isEnabled()) + { + props->setTransparencyDisplayType(TDEIconEditGrid::TRD_SOLIDCOLOR); + props->setTransparencySolidColor(m_solidColorButton->color()); + } + else + { + props->setTransparencyDisplayType(TDEIconEditGrid::TRD_CHECKERBOARD); + props->setCheckerboardColor1(m_checkerboardColor1Button->color()); + props->setCheckerboardColor2(m_checkerboardColor2Button->color()); + props->setCheckerboardSize((TDEIconEditGrid::CheckerboardSize)m_checkerboardSizeCombo->currentItem()); + } +} + +void KMiscConfig::pasteMode(bool mode) +{ + pastemode = mode; +} + +void KMiscConfig::showRulers(bool mode) +{ + showrulers = mode; +} + +void KMiscConfig::slotTransparencyDisplayType(int id) +{ + if(id == 0) + { + m_checkerboardColor1Button->setEnabled(false); + m_checkerboardColor2Button->setEnabled(false); + m_checkerboardSizeCombo->setEnabled(false); + + m_solidColorButton->setEnabled(true); + } + else + if(id == 1) + { + m_checkerboardColor1Button->setEnabled(true); + m_checkerboardColor2Button->setEnabled(true); + m_checkerboardSizeCombo->setEnabled(true); + + m_solidColorButton->setEnabled(false); + } +} + +TDEIconConfig::TDEIconConfig(TQWidget *parent) + : KDialogBase(KDialogBase::IconList, i18n("Configure"), + KDialogBase::Help | + KDialogBase::Ok | + KDialogBase::Apply | + KDialogBase::Cancel, + KDialogBase::Ok, + parent, "configDialog", true, true) +{ + setHelp(TQString()); + //KWin::setIcons(winId(), kapp->icon(), kapp->miniIcon()); + connect(this, TQT_SIGNAL(finished()), this, TQT_SLOT(finis())); + + TQVBox* page = addVBoxPage(i18n("Icon Templates"), TQString(), loadIcon("icons")); + temps = new KTemplateConfig(page); + + page = addVBoxPage(i18n("Background"), TQString(), loadIcon("background")); + backs = new KBackgroundConfig(page); + + page = addVBoxPage(i18n("Icon Grid"), TQString(), loadIcon("tdeiconedit")); + misc = new KMiscConfig(page); + + TQSize min(300, 400); + + if (300 < sizeHint().width()) { min.setWidth(sizeHint().width()); } + if (400 < sizeHint().height()) { min.setHeight(sizeHint().height()); } + + resize(min); +} + +TDEIconConfig::~TDEIconConfig() +{ + //delete dict; +} + +void TDEIconConfig::slotApply() +{ + kdDebug(4640) << "TDEIconEditConfig::saveSettings" << endl; + + temps->saveSettings(); + backs->saveSettings(); + misc->saveSettings(); + + for (TDEIconEdit* window = TDEIconEdit::windowList.first(); + window; + window = TDEIconEdit::windowList.next()) + { + window->updateProperties(); + } +} + +void TDEIconConfig::slotOk() +{ + slotApply(); + KDialogBase::slotOk(); +} + +void TDEIconConfig::finis() +{ + delayedDestruct(); +} + +#include "tdeiconconfig.moc" diff --git a/tdeiconedit/tdeiconconfig.h b/tdeiconedit/tdeiconconfig.h new file mode 100644 index 00000000..62f7938c --- /dev/null +++ b/tdeiconedit/tdeiconconfig.h @@ -0,0 +1,158 @@ +/* + KDE Icon Editor - a small icon drawing program for the KDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KICONCONFIG_H__ +#define __KICONCONFIG_H__ + +#include +#include + +#include "knew.h" +#include "utils.h" +#include "properties.h" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +class TDEAccel; +class KKeyChooser; +class KColorButton; +class KURLRequester; +class TQComboBox; + +class KTemplateEditDlg : public KDialogBase +{ + Q_OBJECT + +public: + KTemplateEditDlg(TQWidget *); + ~KTemplateEditDlg() {}; + + TQString name(); + TQString path(); + void setName(const TQString &); + void setPath(const TQString &); + +public slots: + void slotTextChanged(); + +protected: + TQLineEdit *ln_name; + KURLRequester *ln_path; +}; + +class KTemplateConfig : public TQWidget +{ + Q_OBJECT + +public: + KTemplateConfig(TQWidget*); + ~KTemplateConfig(); + + void saveSettings(); + +protected slots: + void add(); + void edit(); + void remove(); + void checkSelection(int); + +protected: + TDEIconListBox *templates; + TQPushButton *btadd, *btedit, *btremove; +}; + +class KBackgroundConfig : public TQWidget +{ + Q_OBJECT + +public: + KBackgroundConfig(TQWidget *parent); + ~KBackgroundConfig(); + +public slots: + void saveSettings(); + void selectColor(const TQColor & newColor); + void selectPixmap(); + +signals: + +protected slots: + void slotBackgroundMode(int); + +protected: + KColorButton *btcolor; + TQPushButton *btpix; + TQPixmap pix; + TQString pixpath; + TQWidget::BackgroundMode bgmode; + TQLabel *lb_ex; +}; + +class KMiscConfig : public TQWidget +{ + Q_OBJECT + +public: + KMiscConfig(TQWidget *parent); + ~KMiscConfig(); + +public slots: + void saveSettings(); + void pasteMode(bool); + void showRulers(bool); + +protected slots: + void slotTransparencyDisplayType(int); + +signals: + +protected: + bool pastemode, showrulers; + TQRadioButton *rbp; + KColorButton *m_solidColorButton; + KColorButton *m_checkerboardColor1Button; + KColorButton *m_checkerboardColor2Button; + TQComboBox *m_checkerboardSizeCombo; +}; + +class TDEIconConfig : public KDialogBase +{ + Q_OBJECT + + +public: + + TDEIconConfig(TQWidget *parent); + ~TDEIconConfig(); + +protected slots: + void slotApply(); + void slotOk(); + void finis(); + +protected: + KTemplateConfig *temps; + KBackgroundConfig *backs; + KMiscConfig *misc; +}; + +#endif //__KICONCONFIG_H__ diff --git a/tdeiconedit/tdeiconedit.cpp b/tdeiconedit/tdeiconedit.cpp new file mode 100644 index 00000000..4705d102 --- /dev/null +++ b/tdeiconedit/tdeiconedit.cpp @@ -0,0 +1,497 @@ +/* + tdeiconedit - a small graphics drawing program for the KDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "tdeiconedit.h" +#include "palettetoolbar.h" + +WindowList TDEIconEdit::windowList; + +TDEIconEdit::TDEIconEdit(const TQImage image, const char *name) + : TDEMainWindow(0, name) +{ + init(); + img = image; + img.detach(); + grid->load(&img); + grid->setModified(true); +} + +TDEIconEdit::TDEIconEdit(KURL url, const char *name) + : TDEMainWindow(0, name) +{ + init(); + icon->open(&img, url); +} + +void TDEIconEdit::init() +{ + setMinimumSize( 600, 540 ); + + windowList.append(this); + setCaption(kapp->caption()); + + m_paletteToolBar = 0L; + statusbar = 0L; + + history = new KCommandHistory( actionCollection(), true ); + + gridview = new KGridView(&img, history, this); + grid = gridview->grid(); + icon = new TDEIconEditIcon(TQT_TQOBJECT(this), &grid->image()); + + setAcceptDrops(true); + + setupActions(); + setupStatusBar(); + setStandardToolBarMenuEnabled( true ); + + createGUI(); + + connect(this, TQT_SIGNAL(newname(const TQString &)), + TQT_SLOT( slotUpdateStatusName(const TQString &))); + + connect( icon, TQT_SIGNAL( saved()), TQT_SLOT(slotSaved())); + connect( icon, TQT_SIGNAL( loaded(TQImage *)), grid, TQT_SLOT(load(TQImage *))); + connect( icon, TQT_SIGNAL(opennewwin(const TQString &)), + TQT_SLOT(slotNewWin(const TQString &))); + connect(icon, TQT_SIGNAL(newname(const TQString &)), + TQT_SLOT( slotUpdateStatusName(const TQString &))); + connect(icon, TQT_SIGNAL(newmessage(const TQString &)), + TQT_SLOT( slotUpdateStatusMessage(const TQString &))); + connect(icon, TQT_SIGNAL(addrecent(const TQString &)), + TQT_SLOT( addRecent(const TQString &))); + + connect( m_paletteToolBar, TQT_SIGNAL( newColor(uint)), + grid, TQT_SLOT(setColorSelection(uint))); + + connect( grid, TQT_SIGNAL( changed(const TQPixmap &) ), + m_paletteToolBar, TQT_SLOT( previewChanged(const TQPixmap &) ) ); + connect( grid, TQT_SIGNAL( addingcolor(uint) ), + m_paletteToolBar, TQT_SLOT(addColor(uint))); + connect( grid, TQT_SIGNAL( colorschanged(uint, uint*) ), + m_paletteToolBar, TQT_SLOT(addColors(uint, uint*))); + + connect(grid, TQT_SIGNAL(sizechanged(int, int)), + TQT_SLOT( slotUpdateStatusSize(int, int))); + connect(grid, TQT_SIGNAL(poschanged(int, int)), + TQT_SLOT( slotUpdateStatusPos(int, int))); + connect(grid, TQT_SIGNAL(scalingchanged(int)), + TQT_SLOT( slotUpdateStatusScaling(int))); + connect(grid, TQT_SIGNAL(scalingchanged(int)), + TQT_SLOT( slotUpdateZoom(int))); + connect( grid, TQT_SIGNAL( addingcolor(uint) ), + TQT_SLOT(slotUpdateStatusColors(uint))); + connect(grid, TQT_SIGNAL(colorschanged(uint, uint*)), + TQT_SLOT( slotUpdateStatusColors(uint, uint*))); + connect(grid, TQT_SIGNAL(newmessage(const TQString &)), + TQT_SLOT( slotUpdateStatusMessage(const TQString &))); + connect(grid, TQT_SIGNAL(clipboarddata(bool)), + TQT_SLOT( slotUpdatePaste(bool))); + connect(grid, TQT_SIGNAL(colorSelected(uint)), + m_paletteToolBar, TQT_SLOT(currentColorChanged(uint))); + connect(grid, TQT_SIGNAL(modifiedchanged(bool)), + TQT_SLOT( slotUpdateStatusModified(bool))); + gridview->checkClipboard(); //Not very elegant, but fixes a buglet + + connect(grid, TQT_SIGNAL(selecteddata(bool)), TQT_SLOT( slotUpdateCopy(bool))); + + kdDebug(4640) << "Updating statusbar" << endl; + slotUpdateStatusSize(grid->cols(), grid->rows()); + slotUpdateStatusScaling(grid->scaling()); + + slotUpdateZoom( grid->scaling() ); + + if(icon->url().length()) + slotUpdateStatusName(icon->url()); + else + slotUpdateStatusName(i18n("Untitled")); + + slotUpdateCopy(false); + + uint *c = 0, n = 0; + n = grid->getColors(c); + slotUpdateStatusColors(n, c); + + setCentralWidget(gridview); + + applyMainWindowSettings( kapp->config(), "MainWindowSettings" ); + updateProperties(); + + updateAccels(); + show(); + moveDockWindow( m_paletteToolBar, TQt::DockRight, true, 0 ); +} + +TDEIconEdit::~TDEIconEdit() +{ + windowList.remove(this); + + if (windowList.count() < 1) + { + kapp->quit(); + } +} + +bool TDEIconEdit::queryClose() +{ + bool cancel = false; + if (grid->isModified()) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"), TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch(r) + { + case KMessageBox::Yes: + if (!icon->save(&grid->image())) + { + cancel = true; + } + break; + case KMessageBox::Cancel: + cancel = true; + break; + case KMessageBox::No: + default: + break; + } + } + + if(!cancel) + { + writeConfig(); + } + return (!cancel); +} + +// this is for exit by request of the session manager +void TDEIconEdit::saveProperties(TDEConfig *config ) +{ + kdDebug(4640) << "TDEIconEdit::saveProperties" << endl; + + config->writePathEntry("Name", icon->url()); +} + +// this is for instances opened by the session manager +void TDEIconEdit::readProperties(TDEConfig *config) +{ + kdDebug(4640) << "TDEIconEdit::readProperties" << endl; + + TQString entry = config->readPathEntry("Name"); // no default + if (entry.isEmpty()) return; + icon->open(&grid->image(), KURL::fromPathOrURL( entry )); +} + +/* + this is for normal exits or request from "Options->Save options". +*/ +void TDEIconEdit::writeConfig() +{ + TDEConfig *config = kapp->config(); + m_actRecent->saveEntries( kapp->config() ); + + TDEIconEditProperties::self()->save(); + + saveMainWindowSettings( config, "MainWindowSettings" ); +} + +TQSize TDEIconEdit::sizeHint() const +{ + if(gridview) + return gridview->sizeHint(); + else + return TQSize(-1, -1); +} + +void TDEIconEdit::setupActions() +{ + kdDebug(4640) << "setupActions" << endl; + + TDEAction *action; + TDERadioAction *toolAction; + TDEShortcut cut; + + // File Menu + action = new TDEAction(i18n("New &Window"), "window_new", cut, + TQT_TQOBJECT(this), TQT_SLOT(slotNewWin()), actionCollection(), "file_new_window"); + action->setWhatsThis(i18n("New window\n\nOpens a new icon editor window.")); + + action = KStdAction::openNew(TQT_TQOBJECT(this), TQT_SLOT(slotNew()), actionCollection()); + action->setWhatsThis(i18n("New\n\nCreate a new icon, either from a" + " template or by specifying the size")); + + action = KStdAction::open(TQT_TQOBJECT(this), TQT_SLOT(slotOpen()), actionCollection()); + action->setWhatsThis(i18n("Open\n\nOpen an existing icon")); + + m_actRecent = KStdAction::openRecent(TQT_TQOBJECT(this), + TQT_SLOT(slotOpenRecent(const KURL&)), actionCollection()); + m_actRecent->setMaxItems(15); // FIXME should be configurable! + m_actRecent->loadEntries(kapp->config()); + + action = KStdAction::save(TQT_TQOBJECT(this), TQT_SLOT(slotSave()), actionCollection()); + action->setWhatsThis(i18n("Save\n\nSave the current icon")); + + KStdAction::saveAs(TQT_TQOBJECT(this), TQT_SLOT(slotSaveAs()), actionCollection()); + + action = KStdAction::print(TQT_TQOBJECT(this), TQT_SLOT(slotPrint()), actionCollection()); + action->setWhatsThis(i18n("Print\n\nOpens a print dialog to let you print" + " the current icon.")); + + KStdAction::close(TQT_TQOBJECT(this), TQT_SLOT(slotClose()), actionCollection()); + + // Edit Menu + + m_actCut = KStdAction::cut(TQT_TQOBJECT(this), TQT_SLOT(slotCut()), actionCollection()); + m_actCut->setWhatsThis(i18n("Cut\n\nCut the current selection out of the" + " icon.\n\n(Tip: You can make both rectangular and circular selections)")); + + m_actCopy = KStdAction::copy(TQT_TQOBJECT(this), TQT_SLOT(slotCopy()), actionCollection()); + m_actCopy->setWhatsThis(i18n("Copy\n\nCopy the current selection out of the" + " icon.\n\n(Tip: You can make both rectangular and circular selections)")); + + m_actPaste = KStdAction::paste(TQT_TQOBJECT(this), TQT_SLOT(slotPaste()), actionCollection()); + m_actPaste->setWhatsThis(i18n("Paste\n\n" + "Paste the contents of the clipboard into the current icon.\n\n" + "If the contents are larger than the current icon you can paste them" + " in a new window.\n\n" + "(Tip: Select \"Paste transparent pixels\" in the configuration dialog" + " if you also want to paste transparency.)")); + + m_actPasteNew = new TDEAction( i18n( "Paste as &New" ), cut, TQT_TQOBJECT(grid), + TQT_SLOT( editPasteAsNew() ), actionCollection(), "edit_paste_as_new" ); + + KStdAction::clear(TQT_TQOBJECT(this), TQT_SLOT(slotClear()), actionCollection()); + KStdAction::selectAll(TQT_TQOBJECT(this), TQT_SLOT(slotSelectAll()), actionCollection()); + + action = new TDEAction(i18n("Resi&ze..."), "transform", cut, + TQT_TQOBJECT(grid), TQT_SLOT(editResize()), actionCollection(), "edit_resize"); + action->setWhatsThis(i18n("Resize\n\nSmoothly resizes the icon while" + " trying to preserve the contents")); + + action = new TDEAction(i18n("&GrayScale"), "grayscale", cut, + TQT_TQOBJECT(grid), TQT_SLOT(grayScale()), actionCollection(), "edit_grayscale"); + action->setWhatsThis(i18n("Gray scale\n\nGray scale the current icon.\n" + "(Warning: The result is likely to contain colors not in the icon" + " palette")); + + // View Menu + m_actZoomIn = KStdAction::zoomIn(TQT_TQOBJECT(this), TQT_SLOT(slotZoomIn()), + actionCollection()); + m_actZoomIn->setWhatsThis(i18n("Zoom in\n\nZoom in by one.")); + + m_actZoomOut = KStdAction::zoomOut(TQT_TQOBJECT(this), TQT_SLOT(slotZoomOut()), + actionCollection()); + m_actZoomOut->setWhatsThis(i18n("Zoom out\n\nZoom out by one.")); + + TDEActionMenu *actMenu = new TDEActionMenu( i18n( "&Zoom" ), "viewmag", + actionCollection(), "view_zoom" ); + + // xgettext:no-c-format + action = new TDEAction( i18n( "100%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom1() ), + actionCollection(), "view_zoom_1" ); + actMenu->insert( action ); + // xgettext:no-c-format + action = new TDEAction( i18n( "200%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom2() ), + actionCollection(), "view_zoom_2" ); + actMenu->insert( action ); + // xgettext:no-c-format + action = new TDEAction( i18n( "500%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom5() ), + actionCollection(), "view_zoom_5" ); + actMenu->insert( action ); + // xgettext:no-c-format + action = new TDEAction( i18n( "1000%" ), cut, TQT_TQOBJECT(this), TQT_SLOT( slotZoom10() ), + actionCollection(), "view_zoom_10" ); + actMenu->insert( action ); + + // Settings Menu + KStdAction::keyBindings(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureKeys()), + actionCollection()); + KStdAction::preferences(TQT_TQOBJECT(this), TQT_SLOT(slotConfigureSettings()), + actionCollection()); + + createStandardStatusBarAction(); + + TDEToggleAction *toggle; + + toggle = new TDEToggleAction( i18n( "Show &Grid" ), "grid", + cut, TQT_TQOBJECT(this), TQT_SLOT( slotShowGrid() ), actionCollection(), + "options_show_grid" ); + toggle->setCheckedState(i18n("Hide &Grid")); + toggle->setWhatsThis( i18n( "Show grid\n\nToggles the grid in the icon" + " edit grid on/off" ) ); + toggle->setChecked( TDEIconEditProperties::self()->showGrid() ); + + // Tools Menu + toolAction = new TDERadioAction(i18n("Color Picker"), "colorpicker", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolPointer()), actionCollection(), + "tool_find_pixel"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Color Picker\n\nThe color of the pixel clicked" + " on will be the current draw color")); + + toolAction = new TDERadioAction(i18n("Freehand"), "paintbrush", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFreehand()), actionCollection(), + "tool_freehand"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Free hand\n\nDraw non-linear lines")); + + toolAction->setChecked( true ); + grid->setTool(TDEIconEditGrid::Freehand); + + toolAction = new TDERadioAction(i18n("Rectangle"), "rectangle", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolRectangle()), actionCollection(), + "tool_rectangle"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Rectangle\n\nDraw a rectangle")); + + toolAction = new TDERadioAction(i18n("Filled Rectangle"), "filledrectangle", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledRectangle()), actionCollection(), + "tool_filled_rectangle"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Filled rectangle\n\nDraw a filled rectangle")); + + toolAction = new TDERadioAction(i18n("Circle"), "circle", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolCircle()), actionCollection(), + "tool_circle"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Circle\n\nDraw a circle")); + + toolAction = new TDERadioAction(i18n("Filled Circle"), "filledcircle", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledCircle()), actionCollection(), + "tool_filled_circle"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Filled circle\n\nDraw a filled circle")); + + toolAction = new TDERadioAction(i18n("Ellipse"), "ellipse", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEllipse()), actionCollection(), + "tool_ellipse"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Ellipse\n\nDraw an ellipse")); + + toolAction = new TDERadioAction(i18n("Filled Ellipse"), "filledellipse", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFilledEllipse()), actionCollection(), + "tool_filled_ellipse"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Filled ellipse\n\nDraw a filled ellipse")); + + toolAction = new TDERadioAction(i18n("Spray"), "airbrush", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSpray()), actionCollection(), + "tool_spray"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Spray\n\nDraw scattered pixels in the" + " current color")); + + toolAction = new TDERadioAction(i18n("Flood Fill"), "fill", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolFlood()), actionCollection(), + "tool_flood_fill"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Flood fill\n\nFill adjoining pixels with" + " the same color with the current color")); + + toolAction = new TDERadioAction(i18n("Line"), "line", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolLine()), actionCollection(), + "tool_line"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Line\n\nDraw a straight line vertically," + " horizontally or at 45 deg. angles")); + + toolAction = new TDERadioAction(i18n("Eraser (Transparent)"), "eraser", + cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolEraser()), actionCollection(), + "tool_eraser"); + toolAction->setExclusiveGroup("toolActions"); + toolAction->setWhatsThis(i18n("Erase\n\nErase pixels. Set the pixels to" + " be transparent\n\n(Tip: If you want to draw transparency with a" + " different tool, first click on \"Erase\" then on the tool you want" + " to use)")); + + toolAction = new TDERadioAction(i18n("Rectangular Selection"), + "selectrect", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectRect()), + actionCollection(), "edit_select_rectangle"); + toolAction->setExclusiveGroup( "toolActions" ); + toolAction->setWhatsThis(i18n("Select\n\nSelect a rectangular section" + " of the icon using the mouse.")); + + toolAction = new TDERadioAction(i18n("Circular Selection"), + "selectcircle", cut, TQT_TQOBJECT(this), TQT_SLOT(slotToolSelectCircle()), + actionCollection(), "edit_select_circle"); + toolAction->setExclusiveGroup( "toolActions" ); + toolAction->setWhatsThis(i18n("Select\n\nSelect a circular section of the" + " icon using the mouse.")); +} + +void TDEIconEdit::updateAccels() +{ + actionCollection()->readShortcutSettings(); +} + +TQWidget *TDEIconEdit::createContainer( TQWidget *parent, int index, + const TQDomElement &element, int &id ) +{ + if ( element.attribute( "name" ) == "paletteToolBar" ) + { + m_paletteToolBar = new PaletteToolBar( this, "paletteToolBar" ); + m_paletteToolBar->setText( i18n( "Palette Toolbar" ) ); + return m_paletteToolBar; + } + + return KXMLGUIBuilder::createContainer( parent, index, element, id ); +} + +bool TDEIconEdit::setupStatusBar() +{ + statusbar = statusBar(); + + TQString str = i18n("Statusbar\n\nThe statusbar gives information on" + " the status of the current icon. The fields are:\n\n" + "\t- Application messages\n\t- Cursor position\n\t- Size\n\t- Zoom factor\n" + "\t- Number of colors"); + TQWhatsThis::add(statusBar(), str); + + statusbar->insertFixedItem("99999,99999", 0, true); + statusbar->insertFixedItem("99999 x 99999", 1, true); + statusbar->insertFixedItem(" 1:999", 2, true); + str = i18n("Colors: %1").arg(9999999); + statusbar->insertFixedItem(str, 3, true); + statusbar->insertItem("", 4); + + statusbar->changeItem( "", 0); + statusbar->changeItem( "", 1); + statusbar->changeItem( "", 2); + statusbar->changeItem( "", 3); + + return true; +} + +void TDEIconEdit::addRecent(const TQString & path) +{ + m_actRecent->addURL(KURL( path )); +} + +#include "tdeiconedit.moc" diff --git a/tdeiconedit/tdeiconedit.desktop b/tdeiconedit/tdeiconedit.desktop new file mode 100644 index 00000000..44e23ba2 --- /dev/null +++ b/tdeiconedit/tdeiconedit.desktop @@ -0,0 +1,94 @@ +[Desktop Entry] +GenericName=Icon Editor +GenericName[af]=Ikoon Redigeerder +GenericName[ar]=محرر الإيقونات +GenericName[bg]=Редактор на икони +GenericName[br]=Aozer arlunioù +GenericName[bs]=Editor ikona +GenericName[ca]=Editor d'icones +GenericName[cs]=Editor ikon +GenericName[cy]=Golygydd Eiconau +GenericName[da]=Ikoneditor +GenericName[de]=Editor für Arbeitsflächensymbole +GenericName[el]=Επεξεργαστής εικονιδίων +GenericName[eo]=Ilo por pentri kaj redakti piktogramojn +GenericName[es]=Editor de iconos +GenericName[et]=Ikoonide redaktor +GenericName[eu]=Ikono editorea +GenericName[fa]=ویرایشگر شمایل +GenericName[fi]=Kuvakemuokkain +GenericName[fr]=Éditeur d'icônes +GenericName[ga]=Eagarthóir Deilbhíní +GenericName[gl]=Editor de iconas +GenericName[he]=עורך סמלים +GenericName[hi]=प्रतीक (आइकॉन) संपादक +GenericName[hr]=Uređivač ikona +GenericName[hu]=Ikonszerkesztő +GenericName[is]=Táknmyndaritill +GenericName[it]=Editor di icone +GenericName[ja]=アイコンエディタ +GenericName[kk]=Таңбаша өңдегіші +GenericName[km]=កម្មវិធី​និពន្ធ​រូបតំណាង +GenericName[lt]=Ženkliukų redaktorius +GenericName[lv]=Ikonu Redaktors +GenericName[ms]=Editor Ikon +GenericName[nb]=Ikonredigerer +GenericName[nds]=Lüttbildeditor +GenericName[ne]=प्रतिमा सम्पादक +GenericName[nl]=Pictogrambewerker +GenericName[nn]=Ikonredigering +GenericName[nso]=Mofetosi wa Seemedi +GenericName[pa]=ਆਈਕਾਨ ਸੰਪਾਦਕ +GenericName[pl]=Edytor ikon +GenericName[pt]=Editor de Ícones +GenericName[pt_BR]=Editor de Ícones +GenericName[ro]=Editor de iconiţe +GenericName[ru]=Редактор пиктограмм +GenericName[se]=Govašdoaimmaheaddji +GenericName[sk]=Editor ikon +GenericName[sl]=Urejevalnik ikon +GenericName[sr]=Уређивач икона +GenericName[sr@Latn]=Uređivač ikona +GenericName[sv]=Ikoneditor +GenericName[ta]= கேசின்னம் திருத்தி +GenericName[tg]=Муҳаррири ишорот +GenericName[th]=เครื่องมือแก้ไขไอคอน +GenericName[tr]=Simge Düzenleyici +GenericName[uk]=Редактор піктограм +GenericName[uz]=Nishoncha tahrirchi +GenericName[uz@cyrillic]=Нишонча таҳрирчи +GenericName[ven]=Musengulusi wa Aikhono +GenericName[wa]=Aspougneu d' imådjetes +GenericName[xh]=Umhleli we Icon +GenericName[zh_CN]=图标编辑器 +GenericName[zh_HK]=圖示編輯器 +GenericName[zh_TW]=圖示編輯器 +GenericName[zu]=Umhleli we Icon +Name=TDEIconEdit +Name[af]=TDE-ikoon-redigeer +Name[ar]=برنامج TDEIconEdit +Name[cy]=KGolyguEicon +Name[eo]=Piktogramredaktilo +Name[hi]=के-आइकॉन-एडिट +Name[hr]=Uređivač ikona +Name[is]=Táknmyndaritill +Name[lv]=KIkonuRedaktors +Name[ms]=KIkonEdit +Name[ne]=केडीई प्रतिमा सम्पादन +Name[pl]=Edytor ikon +Name[pt_BR]=KEditor de Ícones +Name[ro]=Editor iconiţe +Name[sv]=TDEiconedit +Name[ta]=கேசின்னம் திருத்து +Name[tr]=K Icon Düzenleyici +Name[ven]=U sengulusa ha aikhono ya K +Name[zh_TW]=TDEIconEdit 圖示編輯器 +MimeType=image/x-xpm;image/x-ico;image/png;image/jpeg; +Exec=tdeiconedit -caption "%c" %i %m %u +Icon=tdeiconedit +Path= +DocPath=tdeiconedit/index.html +Type=Application +Terminal=false +X-DCOP-ServiceType=Multi +Categories=Qt;TDE;Graphics; diff --git a/tdeiconedit/tdeiconedit.h b/tdeiconedit/tdeiconedit.h new file mode 100644 index 00000000..90a21d9f --- /dev/null +++ b/tdeiconedit/tdeiconedit.h @@ -0,0 +1,158 @@ +/* + tdeiconedit - a small graphics drawing program for creating KDE icons + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __TDEICONEDIT_H__ +#define __TDEICONEDIT_H__ + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "knew.h" +#include "tdeicon.h" +#include "tdeiconconfig.h" +#include "tdeicongrid.h" +#include "kresize.h" +#include "properties.h" + +class TDEIconEdit; +class KCommandHistory; +typedef TQPtrList WindowList; + +class TQWhatsThis; +class TQToolButton; +class TQLabel; +class PaletteToolBar; + +/** +* TDEIconEdit +* @short TDEIconEdit +* @author Thomas Tanghus +* @version 0.4 +*/ +class TDEIconEdit : public TDEMainWindow +{ + Q_OBJECT + +public: + TDEIconEdit( KURL url = KURL(), const char *name = "tdeiconedit"); + TDEIconEdit( const TQImage image, const char *name = "tdeiconedit"); + ~TDEIconEdit(); + + virtual TQSize sizeHint() const; + static WindowList windowList; + +signals: + void newname(const TQString &); + +public slots: + virtual void saveProperties(TDEConfig*); + virtual void readProperties(TDEConfig*); + void updateProperties(); + +protected slots: + void slotNewWin(const TQString & url = 0); + void slotNew(); + void slotOpen(); + void slotClose(); + void slotSave(); + void slotSaveAs(); + void slotPrint(); + void slotZoomIn(); + void slotZoomOut(); + void slotZoom1(); + void slotZoom2(); + void slotZoom5(); + void slotZoom10(); + void slotCopy(); + void slotCut(); + void slotPaste(); + void slotClear(); + void slotSaved(); + void slotSelectAll(); + void slotOpenRecent(const KURL&); + void slotToolPointer(); + void slotToolFreehand(); + void slotToolRectangle(); + void slotToolFilledRectangle(); + void slotToolCircle(); + void slotToolFilledCircle(); + void slotToolEllipse(); + void slotToolFilledEllipse(); + void slotToolSpray(); + void slotToolFlood(); + void slotToolLine(); + void slotToolEraser(); + void slotToolSelectRect(); + void slotToolSelectCircle(); + void slotConfigureSettings(); + void slotConfigureKeys(); + void slotShowGrid(); + void slotUpdateZoom( int ); + void slotUpdateStatusColors(uint); + void slotUpdateStatusColors(uint, uint*); + void slotUpdateStatusPos(int, int); + void slotUpdateStatusSize(int, int); + void slotUpdateStatusMessage(const TQString &); + void slotUpdateStatusName(const TQString &); + void slotUpdateStatusModified(bool); + void slotUpdateStatusScaling(int); + void slotUpdatePaste(bool); + void slotUpdateCopy(bool); + void slotOpenBlank(const TQSize); + void addRecent(const TQString &); + + virtual void dragEnterEvent(TQDragEnterEvent* event); + virtual void dropEvent(TQDropEvent *e); + +protected: + void init(); + void setupActions(); + bool setupStatusBar(); + void writeConfig(); + void updateAccels(); + + virtual bool queryClose(); + virtual TQWidget *createContainer( TQWidget*, int, const TQDomElement&, int& ); + + KCommandHistory* history; + PaletteToolBar *m_paletteToolBar; + KStatusBar *statusbar; + TDEIconEditGrid *grid; + KGridView *gridview; + TDEIconEditIcon *icon; + TQImage img; + TQString m_name; + + TDEAction *m_actCopy, *m_actPaste, *m_actCut, *m_actPasteNew; + TDEAction *m_actZoomIn, *m_actZoomOut; + TDERecentFilesAction *m_actRecent; +}; + +#endif //__TDEICONEDIT_H__ diff --git a/tdeiconedit/tdeiconeditslots.cpp b/tdeiconedit/tdeiconeditslots.cpp new file mode 100644 index 00000000..913c4037 --- /dev/null +++ b/tdeiconedit/tdeiconeditslots.cpp @@ -0,0 +1,543 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include + +#include +#include +#include +#include +#include +#include + +#include "tdeiconedit.h" +#include "tdeiconcolors.h" +#include "palettetoolbar.h" + +#ifndef PICS_INCLUDED +#define PICS_INCLUDED +#include "pics/logo.xpm" +#endif + +void TDEIconEdit::updateProperties() +{ + TDEIconEditProperties *props = TDEIconEditProperties::self(); + gridview->setShowRulers(props->showRulers()); + if(props->bgMode() == TQWidget::FixedPixmap) + { + TQPixmap pix(props->bgPixmap()); + if(pix.isNull()) + { + TQPixmap pmlogo((const char**)logo); + pix = pmlogo; + } + gridview->viewPortWidget()->viewport()->setBackgroundPixmap(pix); + m_paletteToolBar->setPreviewBackground(pix); + } + else + { + gridview->viewPortWidget()->viewport() + ->setBackgroundColor(props->bgColor()); + m_paletteToolBar->setPreviewBackground(props->bgColor()); + } + grid->setTransparencyDisplayType(props->transparencyDisplayType()); + grid->setTransparencySolidColor(props->transparencySolidColor()); + grid->setCheckerboardColor1(props->checkerboardColor1()); + grid->setCheckerboardColor2(props->checkerboardColor2()); + grid->setCheckerboardSize(props->checkerboardSize()); + grid->update(); +} + +void TDEIconEdit::slotNewWin(const TQString & url) +{ + //kdDebug(4640) << "TDEIconEdit::openNewWin() - " << url << endl; + + TDEIconEdit *w = new TDEIconEdit(KURL(url), "tdeiconedit"); + TQ_CHECK_PTR(w); +} + + +void TDEIconEdit::slotNew() +{ + bool cancel = false; + if (grid->isModified()) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"), TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch(r) + { + case KMessageBox::Yes: + if(!icon->save(&grid->image())) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + if(!cancel) + { + KNewIcon newicon(this); + if(newicon.exec()) + { + int r = newicon.openStyle(); + if(r == KNewIcon::Blank) + { + grid->editClear(); + const TQSize s = newicon.templateSize(); + //kdDebug(4640) << "Size: " << s.width() << " x " << s.height() << endl; + grid->setSize(s); + grid->setModified(false); + } + else if(r == KNewIcon::Template) + { + TQString str = newicon.templatePath(); + icon->open(&grid->image(), KURL( str )); + } + icon->setUrl(""); + emit newname(i18n("Untitled")); + } + } +} + + +void TDEIconEdit::slotOpen() +{ + bool cancel = false; + + if( grid->isModified() ) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch( r ) + { + case KMessageBox::Yes: + if(!icon->save( &grid->image() )) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + + if( !cancel ) + { + if (icon->promptForFile( &grid->image() )) + { + grid->setModified(false); + } + } +} + +/* + close only the current window +*/ +void TDEIconEdit::slotClose() +{ + //kdDebug(4640) << "TDEIconEdit: Closing " << endl; + close(); +} + +void TDEIconEdit::slotSave() +{ + //kdDebug(4640) << "TDEIconEdit: slotSave() " << endl; + icon->save(&grid->image()); +} + + +void TDEIconEdit::slotSaveAs() +{ + //kdDebug(4640) << "TDEIconEdit: slotSaveAs() " << endl; + icon->saveAs(&grid->image()); +} + + +void TDEIconEdit::slotPrint() +{ + KPrinter printer; + + if ( printer.setup(this, i18n("Print %1").arg(icon->url().section('/', -1))) ) + { + int margin = 10, yPos = 0; + printer.setCreator("TDE Icon Editor"); + + TQPainter p; + p.begin( &printer ); + TQFontMetrics fm = p.fontMetrics(); + // need width/height + TQPaintDeviceMetrics metrics( &printer ); + + p.drawText( margin, margin + yPos, metrics.width(), fm.lineSpacing(), + ExpandTabs | DontClip, icon->url() ); + yPos = yPos + fm.lineSpacing(); + p.drawPixmap( margin, margin + yPos, grid->pixmap() ); + p.end(); + } +} + +void TDEIconEdit::slotZoomIn() +{ + grid->zoom(DirIn); +} + +void TDEIconEdit::slotZoomOut() +{ + grid->zoom(DirOut); +} + +void TDEIconEdit::slotZoom1() +{ + grid->zoomTo(1); +} + +void TDEIconEdit::slotZoom2() +{ + grid->zoomTo(2); +} + +void TDEIconEdit::slotZoom5() +{ + grid->zoomTo(5); +} + +void TDEIconEdit::slotZoom10() +{ + grid->zoomTo(10); +} + +void TDEIconEdit::slotCopy() +{ + grid->editCopy(); +} + +void TDEIconEdit::slotCut() +{ + grid->editCopy(true); +} + +void TDEIconEdit::slotPaste() +{ + static_cast(actionCollection() + ->action("tool_find_pixel"))->setChecked(true); + grid->setTool(TDEIconEditGrid::Find); + grid->editPaste(); +} + +void TDEIconEdit::slotClear() +{ + grid->editClear(); +} + +void TDEIconEdit::slotSelectAll() +{ + grid->setTool(TDEIconEditGrid::SelectRect); + grid->editSelectAll(); +} + +void TDEIconEdit::slotOpenRecent(const KURL& iconFile) +{ + bool cancel = false; + + if( grid->isModified() ) + { + int r = KMessageBox::warningYesNoCancel(this, + i18n("The current file has been modified.\nDo you want to save it?"),TQString(), KStdGuiItem::save(), KStdGuiItem::discard()); + + switch( r ) + { + case KMessageBox::Yes: + if (!icon->save( &grid->image() )) + { + cancel = true; + } + break; + + case KMessageBox::No: + break; + + case KMessageBox::Cancel: + cancel = true; + break; + + default: + break; + } + } + + if( !cancel ) + { + if(icon->open(&grid->image(), iconFile)) + { + grid->setModified(false); + } + } +} + +void TDEIconEdit::slotConfigureSettings() +{ + TDEIconConfig* c = new TDEIconConfig(this); + c->exec(); + delete c; +} + +void TDEIconEdit::slotConfigureKeys() +{ + KKeyDialog::configure(actionCollection()); + + TDEIconEdit *ki = 0L; + for (ki = windowList.first(); ki; ki = windowList.next()) + { + if (ki != this) + { + ki->updateAccels(); + } + } +} + +void TDEIconEdit::slotShowGrid() +{ + bool b = TDEIconEditProperties::self()->showGrid(); + grid->setGrid( !b ); + TDEIconEditProperties::self()->setShowGrid( !b ); +} + +void TDEIconEdit::slotToolPointer() +{ + grid->setTool(TDEIconEditGrid::Find); +} + +void TDEIconEdit::slotToolFreehand() +{ + grid->setTool(TDEIconEditGrid::Freehand); +} + +void TDEIconEdit::slotToolRectangle() +{ + grid->setTool(TDEIconEditGrid::Rect); +} + +void TDEIconEdit::slotToolFilledRectangle() +{ + grid->setTool(TDEIconEditGrid::FilledRect); +} + +void TDEIconEdit::slotToolCircle() +{ + grid->setTool(TDEIconEditGrid::Circle); +} + +void TDEIconEdit::slotToolFilledCircle() +{ + grid->setTool(TDEIconEditGrid::FilledCircle); +} + +void TDEIconEdit::slotToolEllipse() +{ + grid->setTool(TDEIconEditGrid::Ellipse); +} + +void TDEIconEdit::slotToolFilledEllipse() +{ + grid->setTool(TDEIconEditGrid::FilledEllipse); +} + +void TDEIconEdit::slotToolSpray() +{ + grid->setTool(TDEIconEditGrid::Spray); +} + +void TDEIconEdit::slotToolFlood() +{ + grid->setTool(TDEIconEditGrid::FloodFill); +} + +void TDEIconEdit::slotToolLine() +{ + grid->setTool(TDEIconEditGrid::Line); +} + +void TDEIconEdit::slotToolEraser() +{ + grid->setTool(TDEIconEditGrid::Eraser); +} + +void TDEIconEdit::slotToolSelectRect() +{ + grid->setTool(TDEIconEditGrid::SelectRect); +} + +void TDEIconEdit::slotToolSelectCircle() +{ + grid->setTool(TDEIconEditGrid::SelectCircle); +} + +void TDEIconEdit::slotSaved() +{ + grid->setModified(false); +} + +void TDEIconEdit::slotUpdateZoom( int s ) +{ + m_actZoomOut->setEnabled( s>1 ); +} + +void TDEIconEdit::slotUpdateStatusPos(int x, int y) +{ + TQString str = i18n("Status Position", "%1, %2").arg(x).arg(y); + statusbar->changeItem( str, 0); +} + +void TDEIconEdit::slotUpdateStatusSize(int x, int y) +{ + TQString str = i18n("Status Size", "%1 x %2").arg(x).arg(y); + statusbar->changeItem( str, 1); +} + +void TDEIconEdit::slotUpdateStatusScaling(int s) +{ + TDEIconEditProperties::self()->setGridScale( s ); + TQString str; + + str.sprintf("1:%d", s); + statusbar->changeItem( str, 2); +} + +void TDEIconEdit::slotUpdateStatusColors(uint) +{ + TQString str = i18n("Colors: %1").arg(grid->numColors()); + statusbar->changeItem( str, 3); +} + +void TDEIconEdit::slotUpdateStatusColors(uint n, uint *) +{ + TQString str = i18n("Colors: %1").arg(n); + statusbar->changeItem( str, 3); +} + + +void TDEIconEdit::slotUpdateStatusMessage(const TQString & msg) +{ + statusbar->changeItem( msg, 4); +} + + +void TDEIconEdit::slotUpdateStatusName(const TQString & name) +{ + m_name = name; + + TQString text = m_name; + + if(grid->isModified()) + { + text += " ["+i18n("modified")+"]"; + } + + setCaption(text); +} + + +void TDEIconEdit::slotUpdateStatusModified(bool) +{ + slotUpdateStatusName(m_name); +} + +void TDEIconEdit::slotUpdatePaste(bool state) +{ + m_actPaste->setEnabled(state); + m_actPasteNew->setEnabled(state); +} + + +void TDEIconEdit::slotUpdateCopy(bool state) +{ + m_actCopy->setEnabled(state); + m_actCut->setEnabled(state); +} + + +void TDEIconEdit::slotOpenBlank(const TQSize s) +{ + grid->loadBlank( s.width(), s.height()); +} + + +void TDEIconEdit::dragEnterEvent(TQDragEnterEvent* e) +{ + e->accept(KURLDrag::canDecode(e)); +} + + +/* + accept drop of a file - opens file in current window + old code to drop image, as image, should be removed +*/ +void TDEIconEdit::dropEvent( TQDropEvent *e ) +{ + //kdDebug(4640) << "Got TQDropEvent!" << endl; + + KURL::List fileList; + bool loadedinthis = false; + + if(KURLDrag::decode(e, fileList)) + { + for(KURL::List::ConstIterator it = fileList.begin(); + it != fileList.end(); ++it) + { + //kdDebug(4640) << "In dropEvent for " << (*it).prettyURL() << endl; + const KURL &url = *it; + if(url.isValid()) + { + if (!grid->isModified() && !loadedinthis) + { + icon->open(&grid->image(), url); + loadedinthis = true; + } + else + { + slotNewWin(url.url()); + } + } + } + } +} + + diff --git a/tdeiconedit/tdeiconeditui.rc b/tdeiconedit/tdeiconeditui.rc new file mode 100644 index 00000000..1b1eff81 --- /dev/null +++ b/tdeiconedit/tdeiconeditui.rc @@ -0,0 +1,66 @@ + + + + &File + + + &Edit + + + + + + &Tools + + + + + + + + + + + + + + + + + &Settings + + + + + Main Toolbar + + + + + + + + + + Tools Toolbar + + + + + + + + + + + + + + + + + + Pallette Toolbar + + + diff --git a/tdeiconedit/tdeicongrid.cpp b/tdeiconedit/tdeicongrid.cpp new file mode 100644 index 00000000..8c336428 --- /dev/null +++ b/tdeiconedit/tdeicongrid.cpp @@ -0,0 +1,2263 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@kde.org) + + Includes portions of code from TQt, + Copyright (C) 1992-2000 Trolltech AS. + + 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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include "kresize.h" +#include "properties.h" +#include "tdeicongrid.h" +#include "tdeiconedit.h" +#ifndef PICS_INCLUDED +#include "pics/logo.xpm" +#define PICS_INCLUDED +#endif + +#include + +void DrawCommand::execute() +{ + oldcolor = *((uint*)image->scanLine(y) + x); + *((uint*)image->scanLine(y) + x) = newcolor; + int cell = y * grid->numCols() + x; + grid->setUndoColor( cell, newcolor, false ); +} + +void DrawCommand::unexecute() +{ + *((uint*)image->scanLine(y) + x) = oldcolor; + int cell = y * grid->numCols() + x; + grid->setUndoColor( cell, oldcolor, false ); +} + +void RepaintCommand::execute() +{ + grid->update( area); +} + +KGridView::KGridView(TQImage *image, KCommandHistory* history, TQWidget *parent, const char *name) +: TQFrame(parent, name) +{ + _corner = 0L; + _hruler = _vruler = 0L; + _grid = 0L; + + acceptdrop = false; + + TDEIconEditProperties *props = TDEIconEditProperties::self(); + + viewport = new TQScrollView(this); + TQ_CHECK_PTR(viewport); + + _grid = new TDEIconEditGrid(image, history, viewport->viewport()); + TQ_CHECK_PTR(_grid); + viewport->addChild(_grid); + _grid->setGrid(props->showGrid()); + _grid->setCellSize(props->gridScale()); + + TQString str = i18n( "Icon draw grid\n\nThe icon grid is the area where" + " you draw the icons.\nYou can zoom in and out using the magnifying" + " glasses on the toolbar.\n(Tip: Hold the magnify button down for a" + " few seconds to zoom to a predefined scale)" ); + TQWhatsThis::add( _grid, str ); + + if(props->bgMode() == FixedPixmap) + { + TQPixmap pix(props->bgPixmap()); + if(pix.isNull()) + { + TQPixmap pmlogo((const char **)logo); + pix = pmlogo; + } + viewport->viewport()->setBackgroundPixmap(pix); + _grid->setBackgroundPixmap(pix); + } + else + { + viewport->viewport()->setBackgroundColor(props->bgColor()); + } + + _corner = new TQFrame(this); + _corner->setFrameStyle(TQFrame::WinPanel | TQFrame::Raised); + + _hruler = new KRuler(Qt::Horizontal, this); + _hruler->setEndLabel(i18n("width")); + _hruler->setOffset( -2 ); + _hruler->setRange(0, 1000); + + _vruler = new KRuler(Qt::Vertical, this); + _vruler->setEndLabel(i18n("height")); + _vruler->setOffset( -2 ); + _vruler->setRange(0, 1000); + + str = i18n( "Rulers\n\nThis is a visual representation of the current" + " cursor position" ); + TQWhatsThis::add( _hruler, str ); + TQWhatsThis::add( _vruler, str ); + + connect(_grid, TQT_SIGNAL(scalingchanged(int)), TQT_SLOT(scalingChange(int))); + connect(_grid, TQT_SIGNAL(sizechanged(int, int)), TQT_SLOT(sizeChange(int, int))); + connect(_grid, TQT_SIGNAL(needPainting()), TQT_SLOT(paintGrid())); + connect( _grid, TQT_SIGNAL(xposchanged(int)), _hruler, TQT_SLOT(slotNewValue(int)) ); + connect( _grid, TQT_SIGNAL(yposchanged(int)), _vruler, TQT_SLOT(slotNewValue(int)) ); + connect(viewport, TQT_SIGNAL(contentsMoving(int, int)), TQT_SLOT(moving(int, int))); + + setSizes(); + TQResizeEvent e(size(), size()); + resizeEvent(&e); +} + +void KGridView::paintGrid() +{ + _grid->update(viewRect()); +} + +void KGridView::setSizes() +{ + if(TDEIconEditProperties::self()->showRulers()) + { + _hruler->setLittleMarkDistance(_grid->scaling()); + _vruler->setLittleMarkDistance(_grid->scaling()); + + _hruler->setMediumMarkDistance(5); + _vruler->setMediumMarkDistance(5); + + _hruler->setBigMarkDistance(10); + _vruler->setBigMarkDistance(10); + + _hruler->setShowTinyMarks(true); + _hruler->setShowLittleMarks(false); + _hruler->setShowMediumMarks(true); + _hruler->setShowBigMarks(true); + _hruler->setShowEndMarks(true); + + _vruler->setShowTinyMarks(true); + _vruler->setShowLittleMarks(false); + _vruler->setShowMediumMarks(true); + _vruler->setShowBigMarks(true); + _vruler->setShowEndMarks(true); + + _hruler->setPixelPerMark(_grid->scaling()); + _vruler->setPixelPerMark(_grid->scaling()); + + _hruler->setMaxValue(_grid->width()+20); + _vruler->setMaxValue(_grid->height()+20); + + _hruler->show(); + _vruler->show(); + + _corner->show(); + //resize(_grid->width()+_vruler->width(), _grid->height()+_hruler->height()); + } + else + { + _hruler->hide(); + _vruler->hide(); + _corner->hide(); + //resize(_grid->size()); + } +} + +void KGridView::sizeChange(int, int) +{ + setSizes(); +} + +void KGridView::moving(int x, int y) +{ + _hruler->setOffset(abs(x)); + _vruler->setOffset(abs(y)); +} + +void KGridView::scalingChange(int) +{ + setSizes(); +} + +void KGridView::setShowRulers(bool mode) +{ + TDEIconEditProperties::self()->setShowRulers( mode ); + setSizes(); + TQResizeEvent e(size(), size()); + resizeEvent(&e); +} + +void KGridView::setAcceptDrop(bool a) +{ + if(a == acceptdrop) return; + acceptdrop = a; + paintDropSite(); +} + +void KGridView::checkClipboard() +{ + _grid->checkClipboard(); +} + +const TQRect KGridView::viewRect() +{ + int x, y, cx, cy; + if(viewport->horizontalScrollBar()->isVisible()) + { + x = viewport->contentsX(); + cx = viewport->viewport()->width(); + } + else + { + x = 0; + cx = viewport->contentsWidth(); + } + + if(viewport->verticalScrollBar()->isVisible()) + { + y = viewport->contentsY(); + cy = viewport->viewport()->height(); + } + else + { + y = 0; + cy = viewport->contentsHeight(); + } + + return TQRect(x, y, cx, cy); +} + +void KGridView::paintDropSite() +{ + TQPainter p; + p.begin( _grid ); + p.setRasterOp (NotROP); + p.drawRect(viewRect()); + p.end(); +} + +void KGridView::paintEvent(TQPaintEvent *) +{ + if(acceptdrop) + paintDropSite(); +} + + +void KGridView::resizeEvent(TQResizeEvent*) +{ + kdDebug(4640) << "KGridView::resizeEvent" << endl; + + setSizes(); + + if(TDEIconEditProperties::self()->showRulers()) + { + _hruler->setGeometry(_vruler->width(), 0, width(), _hruler->height()); + _vruler->setGeometry(0, _hruler->height(), _vruler->width(), height()); + + _corner->setGeometry(0, 0, _vruler->width(), _hruler->height()); + viewport->setGeometry(_corner->width(), _corner->height(), + width()-_corner->width(), height()-_corner->height()); + } + else + viewport->setGeometry(0, 0, width(), height()); +} + + +TDEIconEditGrid::TDEIconEditGrid(TQImage *image, KCommandHistory* h, TQWidget *parent, const char *name) + : KColorGrid(parent, name, 1) +{ + img = image; + history = h; + selected = 0; + m_command = 0; + + // the 42 normal kde colors - there can be an additional + // 18 custom colors in the custom colors palette + for(uint i = 0; i < 42; i++) + iconcolors.append(iconpalette[i]); + + setupImageHandlers(); + btndown = isselecting = ispasting = modified = false; + + img->create(32, 32, 32); + img->setAlphaBuffer(true); + clearImage(img); + + currentcolor = tqRgb(0,0,0)|OPAQUE_MASK; + emit colorSelected(currentcolor); + + setMouseTracking(true); + + setNumRows(32); + setNumCols(32); + fill(TRANSPARENT); + + connect( kapp->clipboard(), TQT_SIGNAL(dataChanged()), TQT_SLOT(checkClipboard())); + connect( h, TQT_SIGNAL(commandExecuted()), this, TQT_SLOT(updatePreviewPixmap() )); + createCursors(); + + TDEIconEditProperties *props = TDEIconEditProperties::self(); + + setTransparencyDisplayType(props->transparencyDisplayType()); + setTransparencySolidColor(props->transparencySolidColor()); + setCheckerboardColor1(props->checkerboardColor1()); + setCheckerboardColor2(props->checkerboardColor2()); + setCheckerboardSize(props->checkerboardSize()); +} + +TDEIconEditGrid::~TDEIconEditGrid() +{ + kdDebug(4640) << "TDEIconEditGrid - destructor: done" << endl; +} + +void TDEIconEditGrid::paintEvent(TQPaintEvent *e) +{ + const TQRect cellsRect(0, 0, numCols() * cellSize(), numRows() * cellSize()); + const TQRect paintCellsRect = cellsRect.intersect(e->rect()); + + if(!paintCellsRect.isEmpty()) + { + //TQTime time; + + //time.start(); + + TQRgb *imageBuffer = new TQRgb[paintCellsRect.width() * paintCellsRect.height()]; + const int cellsize = cellSize(); + const int firstCellPixelsRemaining = cellsize - paintCellsRect.left() % cellsize; + + if(transparencyDisplayType() == TRD_SOLIDCOLOR) + { + const TQRgb backgroundColor = transparencySolidColor().rgb(); + const int backgroundRed = transparencySolidColor().red(); + const int backgroundGreen = transparencySolidColor().green(); + const int backgroundBlue = transparencySolidColor().blue(); + const int firstCellX = paintCellsRect.left() / cellsize; + + for(int y = paintCellsRect.top(); y <= paintCellsRect.bottom(); y++) + { + TQRgb *dest = imageBuffer + (y - paintCellsRect.top()) * paintCellsRect.width(); + + if(y % cellsize == 0 || dest == imageBuffer) + { + // Paint the first scanline in each block of cellSize() identical lines. + // The remaineder can just be copied from this one. + const int cellY = y / cellsize; + TQRgb *src = gridcolors.data() + cellY * numCols() + firstCellX; + + TQRgb sourcePixel = *src++; + int sourceAlpha = tqAlpha(sourcePixel); + + TQRgb c; + + if(sourceAlpha == 255) + { + c = sourcePixel; + } + else + if(sourceAlpha == 0) + { + c = backgroundColor; + } + else + { + const int sourceRed = tqRed(sourcePixel); + const int sourceGreen = tqGreen(sourcePixel); + const int sourceBlue = tqBlue(sourcePixel); + + int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; + r = backgroundRed + ((r + (r >> 8)) >> 8); + + int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; + g = backgroundGreen + ((g + (g >> 8)) >> 8); + + int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; + b = backgroundBlue + ((b + (b >> 8)) >> 8); + + c = tqRgb(r, g, b); + } + + int cellPixelsRemaining = firstCellPixelsRemaining; + + for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) + { + if(cellPixelsRemaining == 0) + { + cellPixelsRemaining = cellsize; + + // Fetch the next source pixel + sourcePixel = *src++; + sourceAlpha = tqAlpha(sourcePixel); + + if(sourceAlpha == 255) + { + c = sourcePixel; + } + else + if(sourceAlpha == 0) + { + c = backgroundColor; + } + else + { + const int sourceRed = tqRed(sourcePixel); + const int sourceGreen = tqGreen(sourcePixel); + const int sourceBlue = tqBlue(sourcePixel); + + //int r = backgroundRed + (sourceAlpha * (sourceRed - backgroundRed)) / 255; + //int g = backgroundGreen + (sourceAlpha * (sourceGreen - backgroundGreen)) / 255; + //int b = backgroundBlue + (sourceAlpha * (sourceBlue - backgroundBlue)) / 255; + + int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; + r = backgroundRed + ((r + (r >> 8)) >> 8); + + int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; + g = backgroundGreen + ((g + (g >> 8)) >> 8); + + int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; + b = backgroundBlue + ((b + (b >> 8)) >> 8); + + c = tqRgb(r, g, b); + } + } + + cellPixelsRemaining--; + + *dest++ = c; + } + } + else + { + // Copy the scanline above. + memcpy(dest, dest - paintCellsRect.width(), paintCellsRect.width() * sizeof(TQRgb)); + } + } + } + else + { + int squareSize; + const int fixedPointMultiplier = 4; + + if(checkerboardSize() == CHK_SMALL) + { + squareSize = (cellSize() * fixedPointMultiplier) / 4; + } + else + if(checkerboardSize() == CHK_MEDIUM) + { + squareSize = (cellSize() * fixedPointMultiplier) / 2; + } + else + { + squareSize = (2 * cellSize() * fixedPointMultiplier) / 2; + } + + TQRgb *color1ScanLine = new TQRgb[paintCellsRect.width()]; + TQRgb *color2ScanLine = new TQRgb[paintCellsRect.width()]; + TQRgb *color1Buffer = color1ScanLine; + TQRgb *color2Buffer = color2ScanLine; + + for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) + { + if((((x * fixedPointMultiplier) / squareSize) & 1) == 0) + { + *color1Buffer++ = checkerboardColor1().rgb(); + *color2Buffer++ = checkerboardColor2().rgb(); + } + else + { + *color1Buffer++ = checkerboardColor2().rgb(); + *color2Buffer++ = checkerboardColor1().rgb(); + } + } + + const int firstCellX = paintCellsRect.left() / cellsize; + const int firstCellPixelsRemaining = cellsize - paintCellsRect.left() % cellsize; + int lastCellY = -1; + int lastLineFirstSquareColour = 0; + + for(int y = paintCellsRect.top(); y <= paintCellsRect.bottom(); y++) + { + TQRgb *dest = imageBuffer + (y - paintCellsRect.top()) * paintCellsRect.width(); + const int cellY = y / cellsize; + + int firstSquareColour; + const TQRgb *checkerboardSrc; + + if((((y * fixedPointMultiplier) / squareSize) & 1) == 0) + { + firstSquareColour = 1; + checkerboardSrc = color1ScanLine; + } + else + { + firstSquareColour = 2; + checkerboardSrc = color2ScanLine; + } + + if(cellY == lastCellY && firstSquareColour == lastLineFirstSquareColour) + { + // Copy the scanline above. + memcpy(dest, dest - paintCellsRect.width(), paintCellsRect.width() * sizeof(TQRgb)); + } + else + { + TQRgb *src = gridcolors.data() + cellY * numCols() + firstCellX; + + TQRgb sourcePixel = *src++; + int sourceRed = tqRed(sourcePixel); + int sourceGreen = tqGreen(sourcePixel); + int sourceBlue = tqBlue(sourcePixel); + int sourceAlpha = tqAlpha(sourcePixel); + + int cellPixelsRemaining = firstCellPixelsRemaining; + + for(int x = paintCellsRect.left(); x <= paintCellsRect.right(); x++) + { + if(cellPixelsRemaining == 0) + { + cellPixelsRemaining = cellsize; + + // Fetch the next source pixel + sourcePixel = *src++; + sourceRed = tqRed(sourcePixel); + sourceGreen = tqGreen(sourcePixel); + sourceBlue = tqBlue(sourcePixel); + sourceAlpha = tqAlpha(sourcePixel); + } + + cellPixelsRemaining--; + + TQRgb c; + + if(sourceAlpha == 255) + { + c = sourcePixel; + } + else + if(sourceAlpha == 0) + { + c = *checkerboardSrc; + } + else + { + const int backgroundColor = *checkerboardSrc; + const int backgroundRed = tqRed(backgroundColor); + const int backgroundGreen = tqGreen(backgroundColor); + const int backgroundBlue = tqBlue(backgroundColor); + + //int r = backgroundRed + (sourceAlpha * (sourceRed - backgroundRed)) / 255; + //int g = backgroundGreen + (sourceAlpha * (sourceGreen - backgroundGreen)) / 255; + //int b = backgroundBlue + (sourceAlpha * (sourceBlue - backgroundBlue)) / 255; + + int r = (sourceAlpha * (sourceRed - backgroundRed)) + 0x80; + r = backgroundRed + ((r + (r >> 8)) >> 8); + + int g = (sourceAlpha * (sourceGreen - backgroundGreen)) + 0x80; + g = backgroundGreen + ((g + (g >> 8)) >> 8); + + int b = (sourceAlpha * (sourceBlue - backgroundBlue)) + 0x80; + b = backgroundBlue + ((b + (b >> 8)) >> 8); + + c = tqRgb(r, g, b); + } + + *dest++ = c; + checkerboardSrc++; + } + } + + lastCellY = cellY; + lastLineFirstSquareColour = firstSquareColour; + } + + delete [] color1ScanLine; + delete [] color2ScanLine; + } + + TQImage image((uchar *)(imageBuffer), paintCellsRect.width(), paintCellsRect.height(), 32, 0, 0, +#if X_BYTE_ORDER == X_LITTLE_ENDIAN + TQImage::LittleEndian); +#else + TQImage::BigEndian); +#endif + Q_ASSERT(!image.isNull()); + + TQPixmap _pixmap; + _pixmap.convertFromImage(image); + + TQPainter p; + p.begin(&_pixmap); + paintForeground(&p, e); + p.end(); + + bitBlt(this, paintCellsRect.left(), paintCellsRect.top(), &_pixmap); + + //kdDebug(4640) << "Image render elapsed: " << time.elapsed() << endl; + + delete [] imageBuffer; + } +} + +void TDEIconEditGrid::paintForeground(TQPainter* p, TQPaintEvent* e) +{ + TQWMatrix matrix; + + matrix.translate(-e->rect().x(), -e->rect().y()); + p->setWorldMatrix( matrix ); + + TQRect cellsRect(0, 0, numCols() * cellSize(), numRows() * cellSize()); + TQRect paintCellsRect = cellsRect.intersect(e->rect()); + + if(!paintCellsRect.isEmpty()) + { + int firstColumn = paintCellsRect.left() / cellSize(); + int lastColumn = paintCellsRect.right() / cellSize(); + + int firstRow = paintCellsRect.top() / cellSize(); + int lastRow = paintCellsRect.bottom() / cellSize(); + + p->setPen(TQColor(0, 0, 0)); + p->setBrush(TQColor(0, 0, 0)); + + for(int column = firstColumn; column <= lastColumn; column++) + { + for(int row = firstRow; row <= lastRow; row++) + { + int x = column * cellSize(); + int y = row * cellSize(); + + if((ispasting || isselecting) && isMarked(column, row)) + { + p->drawWinFocusRect(x + 1, y + 1, cellSize() - 2, cellSize() - 2); + } + else + { + switch( tool ) + { + case FilledRect: + case Rect: + case Ellipse: + case Circle: + case FilledEllipse: + case FilledCircle: + case Line: + if(btndown && isMarked(column, row)) + { + if(cellSize() > 1) + { + p->drawWinFocusRect( x + 1, y + 1, cellSize() - 2, cellSize() - 2); + } + else + { + p->drawPoint(x, y); + } + } + break; + + default: + break; + } + } + } + } + } + + if(hasGrid()&& !(cellSize()==1)) + { + p->setPen(TQColor(0, 0, 0)); + int x = e->rect().x() - ((e->rect().x() % cellSize()) + cellSize()); + if(x < 0) x = 0; + int y = e->rect().y() - ((e->rect().y() % cellSize()) + cellSize()); + if(y < 0) y = 0; + int cx = e->rect().right() + cellSize(); + int cy = e->rect().bottom() + cellSize(); + + // draw grid lines + for(int i = x; i < cx; i += cellSize()) + p->drawLine(i, y, i, cy); + + for(int i = y; i < cy; i += cellSize()) + p->drawLine(x, i, cx, i); + } +} + +void TDEIconEditGrid::mousePressEvent( TQMouseEvent *e ) +{ + if(!e || (e->button() != Qt::LeftButton)) + return; + + int row = findRow( e->pos().y() ); + int col = findCol( e->pos().x() ); + //int cell = row * numCols() + col; + + if(!img->valid(col, row)) + return; + + btndown = true; + start.setX(col); + start.setY(row); + + if(ispasting) + { + ispasting = false; + editPaste(true); + } + + if(isselecting) + { + TQPointArray a(pntarray.copy()); + pntarray.resize(0); + drawPointArray(a, Mark); + emit selecteddata(false); + } + + switch( tool ) + { + case SelectRect: + case SelectCircle: + isselecting = true; + break; + default: + break; + } +} + +void TDEIconEditGrid::mouseMoveEvent( TQMouseEvent *e ) +{ + if(!e) return; + + int row = findRow( e->pos().y() ); + int col = findCol( e->pos().x() ); + int cell = row * numCols() + col; + + if(img->valid(col, row)) + { + //kdDebug(4640) << col << " X " << row << endl; + emit poschanged(col, row); + // for the rulers + emit xposchanged((col*scaling())+scaling()/2); + emit yposchanged((row*scaling())+scaling()/2); + } + + TQPoint tmpp(col, row); + if(tmpp == end) return; + + // need to use intersection of rectangles to allow pasting + // only that part of clip image which intersects -jwc- + if(ispasting && !btndown && img->valid(col, row)) + { + if( (col + cbsize.width()) > (numCols()-1) ) + insrect.setX(numCols()-insrect.width()); + else + insrect.setX(col); + if( (row + cbsize.height()) > (numRows()-1) ) + insrect.setY(numRows()-insrect.height()); + else + insrect.setY(row); + + insrect.setSize(cbsize); + start = insrect.topLeft(); + end = insrect.bottomRight(); + drawRect(false); + return; + } + + if(!img->valid(col, row) || !btndown) + return; + + end.setX(col); + end.setY(row); + + if(isselecting) + { + if(tool == SelectRect) + drawRect(false); + else + drawEllipse(false); + return; + } + + bool erase=false; + switch( tool ) + { + case Eraser: + erase=true; + + case Freehand: + { + if( !m_command ) + m_command = new KMacroCommand( i18n("Free Hand") ); + + if(erase) + setColor( cell, TRANSPARENT ); + else + setColor( cell, currentcolor ); + + if ( selected != cell ) + { + setModified( true ); + int prevSel = selected; + selected = cell; + TQRect area = TQRect( col*cellsize,row*cellsize, cellsize, cellsize ).unite( + TQRect ( (prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize ) ); + + m_command->addCommand( new RepaintCommand( area, this ) ); + DrawCommand* dc = new DrawCommand( col, row, colorAt(cell), img, this ); + RepaintCommand* rp = new RepaintCommand( area, this ); + dc->execute(); + rp->execute(); + m_command->addCommand( dc ); + m_command->addCommand( rp ); + } + break; + } + case Find: + { + iconcolors.closestMatch(colorAt(cell)); + if ( selected != cell ) + { + int prevSel = selected; + selected = cell; + update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); + update(col*cellsize,row*cellsize, cellsize, cellsize); + emit colorSelected(colorAt(selected)); + } + break; + } + case Ellipse: + case Circle: + case FilledEllipse: + case FilledCircle: + { + drawEllipse(false); + break; + } + case FilledRect: + case Rect: + { + drawRect(false); + break; + } + case Line: + { + drawLine(false, false); + break; + } + case Spray: + { + drawSpray(TQPoint(col, row)); + setModified(true); + break; + } + default: + break; + } + + p = *img; + emit changed(TQPixmap(p)); +} + +void TDEIconEditGrid::mouseReleaseEvent( TQMouseEvent *e ) +{ + if(!e || (e->button() != Qt::LeftButton)) + return; + + int row = findRow( e->pos().y() ); + int col = findCol( e->pos().x() ); + btndown = false; + end.setX(col); + end.setY(row); + int cell = row * numCols() + col; + bool erase=false; + switch( tool ) + { + case Eraser: + erase=true; + //currentcolor = TRANSPARENT; + case Freehand: + { + if(!img->valid(col, row)) + return; + if(erase) + setColor( cell, TRANSPARENT ); + else + setColor( cell, currentcolor ); + //if ( selected != cell ) + //{ + setModified( true ); + int prevSel = selected; + selected = cell; + update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); + update(col*cellsize,row*cellsize, cellsize, cellsize); + //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); + //updateCell( row, col, FALSE ); + *((uint*)img->scanLine(row) + col) = colorAt(cell); + p = *img; + //} + + if( m_command ) { + history->addCommand( m_command, false ); + m_command = 0; + } + + break; + } + case Ellipse: + case Circle: + case FilledEllipse: + case FilledCircle: + { + drawEllipse(true); + break; + } + case FilledRect: + case Rect: + { + drawRect(true); + break; + } + case Line: + { + drawLine(true, false); + break; + } + case Spray: + { + drawSpray(TQPoint(col, row)); + break; + } + case FloodFill: + { + TQApplication::setOverrideCursor(waitCursor); + drawFlood(col, row, colorAt(cell)); + TQApplication::restoreOverrideCursor(); + updateColors(); + emit needPainting(); + p = *img; + break; + } + case Find: + { + currentcolor = colorAt(cell); + if ( selected != cell ) + { + int prevSel = selected; + selected = cell; + update((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize); + update(col*cellsize,row*cellsize, cellsize, cellsize); + emit colorSelected(currentcolor); + //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); + //updateCell( row, col, FALSE ); + } + + break; + } + default: + break; + } + + emit changed(TQPixmap(p)); + //emit colorschanged(numColors(), data()); +} + +//void TDEIconEditGrid::setColorSelection( const TQColor &color ) +void TDEIconEditGrid::setColorSelection( uint c ) +{ + currentcolor = c; + emit colorSelected(currentcolor); +} + +void TDEIconEditGrid::loadBlank( int w, int h ) +{ + img->create(w, h, 32); + img->setAlphaBuffer(true); + clearImage(img); + setNumRows(h); + setNumCols(w); + fill(TRANSPARENT); + emit sizechanged(numCols(), numRows()); + emit colorschanged(numColors(), data()); + history->clear(); +} + + + +void TDEIconEditGrid::load( TQImage *image) +{ + kdDebug(4640) << "TDEIconEditGrid::load" << endl; + + setUpdatesEnabled(false); + + if(image == 0L) + { + TQString msg = i18n("There was an error loading a blank image.\n"); + KMessageBox::error(this, msg); + return; + } + + *img = image->convertDepth(32); + img->setAlphaBuffer(true); + setNumRows(img->height()); + setNumCols(img->width()); + + for(int y = 0; y < numRows(); y++) + { + uint *l = (uint*)img->scanLine(y); + for(int x = 0; x < numCols(); x++, l++) + { + setColor((y*numCols())+x, *l, false); + } + //kdDebug(4640) << "Row: " << y << endl; + kapp->processEvents(200); + } + + updateColors(); + emit sizechanged(numCols(), numRows()); + emit colorschanged(numColors(), data()); + emit changed(pixmap()); + setUpdatesEnabled(true); + emit needPainting(); + //repaint(viewRect(), false); + history->clear(); +} + +const TQPixmap &TDEIconEditGrid::pixmap() +{ + if(!img->isNull()) + p = *img; + //p.convertFromImage(*img, 0); + return(p); +} + +void TDEIconEditGrid::getImage(TQImage *image) +{ + kdDebug(4640) << "TDEIconEditGrid::getImage" << endl; + *image = *img; +} + +bool TDEIconEditGrid::zoomTo(int scale) +{ + TQApplication::setOverrideCursor(waitCursor); + setUpdatesEnabled(false); + setCellSize( scale ); + setUpdatesEnabled(true); + emit needPainting(); + TQApplication::restoreOverrideCursor(); + emit scalingchanged(cellSize()); + + if(scale == 1) + return false; + return true; +} + +bool TDEIconEditGrid::zoom(Direction d) +{ + int f = (d == DirIn) ? (cellSize()+1) : (cellSize()-1); + TQApplication::setOverrideCursor(waitCursor); + setUpdatesEnabled(false); + setCellSize( f ); + setUpdatesEnabled(true); + //emit needPainting(); + TQApplication::restoreOverrideCursor(); + + emit scalingchanged(cellSize()); + if(d == DirOut && cellSize() <= 1) + return false; + return true; +} + +void TDEIconEditGrid::checkClipboard() +{ + bool ok = false; + TQImage tmp = clipboardImage(ok); + if(ok) + emit clipboarddata(true); + else + { + emit clipboarddata(false); + } +} + +TQImage TDEIconEditGrid::clipboardImage(bool &ok) +{ + //###### Remove me later. + //Workaround TQt bug -- check whether format provided first. + //Code below is from TQDragObject, to match the mimetype list.... + + TQStrList fileFormats = TQImageIO::inputFormats(); + fileFormats.first(); + bool oneIsSupported = false; + while ( fileFormats.current() ) + { + TQCString format = fileFormats.current(); + TQCString type = "image/" + format.lower(); + if (kapp->clipboard()->data()->provides(type ) ) + { + oneIsSupported = true; + } + fileFormats.next(); + } + if (!oneIsSupported) + { + ok = false; + return TQImage(); + } + + TQImage image = kapp->clipboard()->image(); + ok = !image.isNull(); + if ( ok ) + { + image = image.convertDepth(32); + image.setAlphaBuffer(true); + } + return image; +} + + +void TDEIconEditGrid::editSelectAll() +{ + start.setX(0); + start.setY(0); + end.setX(numCols()-1); + end.setY(numRows()-1); + isselecting = true; + drawRect(false); + emit newmessage(i18n("All selected")); +} + +void TDEIconEditGrid::editClear() +{ + clearImage(img); + fill(TRANSPARENT); + update(); + setModified(true); + p = *img; + emit changed(p); + emit newmessage(i18n("Cleared")); +} + +TQImage TDEIconEditGrid::getSelection(bool cut) +{ + const TQRect rect = pntarray.boundingRect(); + int nx = 0, ny = 0, nw = 0, nh = 0; + rect.rect(&nx, &ny, &nw, &nh); + + TQImage tmp(nw, nh, 32); + tmp.setAlphaBuffer(true); + clearImage(&tmp); + + int s = pntarray.size(); + + for(int i = 0; i < s; i++) + { + int x = pntarray[i].x(); + int y = pntarray[i].y(); + if(img->valid(x, y) && rect.contains(TQPoint(x, y))) + { + *((uint*)tmp.scanLine(y-ny) + (x-nx)) = *((uint*)img->scanLine(y) + x); + if(cut) + { + *((uint*)img->scanLine(y) + x) = TRANSPARENT; + setColor( (y*numCols()) + x, TRANSPARENT, false ); + } + } + } + + TQPointArray a(pntarray.copy()); + pntarray.resize(0); + drawPointArray(a, Mark); + emit selecteddata(false); + if(cut) + { + updateColors(); + update(rect.x()*cellSize(), rect.y()*cellSize(), + rect.width()*cellSize(), rect.height()*cellSize()); + p = *img; + emit changed(p); + emit colorschanged(numColors(), data()); + emit newmessage(i18n("Selected area cut")); + setModified(true); + } + else + emit newmessage(i18n("Selected area copied")); + + return tmp; +} + +void TDEIconEditGrid::editCopy(bool cut) +{ + kapp->clipboard()->setImage(getSelection(cut)); + isselecting = false; +} + + +void TDEIconEditGrid::editPaste(bool paste) +{ + bool ok = false; + TQImage tmp = clipboardImage(ok); + + TDEIconEditProperties *props = TDEIconEditProperties::self(); + + if(ok) + { + if( (tmp.size().width() > img->size().width()) + || (tmp.size().height() > img->size().height()) ) + { + if(KMessageBox::warningYesNo(this, + i18n("The clipboard image is larger than the current" + " image!\nPaste as new image?"),TQString(),i18n("Paste"), i18n("Do Not Paste")) == 0) + { + editPasteAsNew(); + } + return; + } + else if(!paste) + { + ispasting = true; + cbsize = tmp.size(); + return; + // emit newmessage(i18n("Pasting")); + } + else + { + //kdDebug(4640) << "TDEIconEditGrid: Pasting at: " << insrect.x() << " x " << insrect.y() << endl; + TQApplication::setOverrideCursor(waitCursor); + + for(int y = insrect.y(), ny = 0; y < numRows() && ny < insrect.height(); y++, ny++) + { + uint *l = ((uint*)img->scanLine(y)+insrect.x()); + uint *cl = (uint*)tmp.scanLine(ny); + for(int x = insrect.x(), nx = 0; x < numCols() && nx < insrect.width(); x++, nx++, l++, cl++) + { + if(props->pasteTransparent()) + { + *l = *cl; + } + else + { + // Porter-Duff Over composition + double alphaS = tqAlpha(*cl) / 255.0; + double alphaD = tqAlpha(*l) / 255.0; + + double r = tqRed(*cl) * alphaS + (1 - alphaS) * tqRed(*l) * alphaD; + double g = tqGreen(*cl) * alphaS + (1 - alphaS) * tqGreen(*l) * alphaD; + double b = tqBlue(*cl) * alphaS + (1 - alphaS) * tqBlue(*l) * alphaD; + double a = alphaS + (1 - alphaS) * alphaD; + + // Remove multiplication by alpha + + if(a > 0) + { + r /= a; + g /= a; + b /= a; + } + else + { + r = 0; + g = 0; + b = 0; + } + + int ir = (int)(r + 0.5); + + if(ir < 0) + { + ir = 0; + } + else + if(ir > 255) + { + ir = 255; + } + + int ig = (int)(g + 0.5); + + if(ig < 0) + { + ig = 0; + } + else + if(ig > 255) + { + ig = 255; + } + + int ib = (int)(b + 0.5); + + if(ib < 0) + { + ib = 0; + } + else + if(ib > 255) + { + ib = 255; + } + + int ia = (int)((a * 255) + 0.5); + + if(ia < 0) + { + ia = 0; + } + else + if(ia > 255) + { + ia = 255; + } + + *l = tqRgba(ir, ig, ib, ia); + } + + setColor((y*numCols())+x, (uint)*l, false); + } + } + updateColors(); + update(insrect.x()*cellSize(), insrect.y()*cellSize(), + insrect.width()*cellSize(), insrect.height()*cellSize()); + + TQApplication::restoreOverrideCursor(); + + setModified(true); + p = *img; + emit changed(TQPixmap(p)); + emit sizechanged(numCols(), numRows()); + emit colorschanged(numColors(), data()); + emit newmessage(i18n("Done pasting")); + } + } + else + { + TQString msg = i18n("Invalid pixmap data in clipboard!\n"); + KMessageBox::sorry(this, msg); + } +} + + +void TDEIconEditGrid::editPasteAsNew() +{ + bool ok = false; + TQImage tmp = clipboardImage(ok); + + if(ok) + { + if(isModified()) + { + TDEIconEdit *w = new TDEIconEdit(tmp); + TQ_CHECK_PTR(w); + } + else + { + *img = tmp; + load(img); + setModified(true); + //repaint(viewRect(), false); + + p = *img; + emit changed(TQPixmap(p)); + emit sizechanged(numCols(), numRows()); + emit colorschanged(numColors(), data()); + emit newmessage(i18n("Done pasting")); + history->clear(); + } + } + else + { + TQString msg = i18n("Invalid pixmap data in clipboard!\n"); + KMessageBox::error(this, msg); + } +} + + +void TDEIconEditGrid::editResize() +{ + kdDebug(4640) << "TDEIconGrid::editResize" << endl; + KResizeDialog *rs = new KResizeDialog(this, 0, TQSize(numCols(), numRows())); + if(rs->exec()) + { + const TQSize s = rs->getSize(); + *img = img->smoothScale(s.width(), s.height()); + load(img); + + setModified(true); + } + delete rs; +} + + +void TDEIconEditGrid::setSize(const TQSize s) +{ + kdDebug(4640) << "::setSize: " << s.width() << " x " << s.height() << endl; + + img->create(s.width(), s.height(), 32); + img->setAlphaBuffer(true); + clearImage(img); + load(img); +} + + +void TDEIconEditGrid::createCursors() +{ + TQBitmap mask(22, 22); + TQPixmap pix; + + cursor_normal = TQCursor(arrowCursor); + + pix = BarIcon("colorpicker-cursor"); + if(pix.isNull()) + { + cursor_colorpicker = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading colorpicker-cursor.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask()); + pix.setMask(mask); + cursor_colorpicker = TQCursor(pix, 1, 21); + } + + pix = BarIcon("paintbrush-cursor"); + if(pix.isNull()) + { + cursor_paint = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading paintbrush.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask()); + pix.setMask(mask); + cursor_paint = TQCursor(pix, 0, 19); + } + + pix = BarIcon("fill-cursor"); + if(pix.isNull()) + { + cursor_flood = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading fill-cursor.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask()); + pix.setMask(mask); + cursor_flood = TQCursor(pix, 3, 20); + } + + pix = BarIcon("aim-cursor"); + if(pix.isNull()) + { + cursor_aim = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading aim-cursor.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask()); + pix.setMask(mask); + cursor_aim = TQCursor(pix, 10, 10); + } + + pix = BarIcon("airbrush-cursor"); + if(pix.isNull()) + { + cursor_spray = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading airbrush-cursor.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask(true)); + pix.setMask(mask); + cursor_spray = TQCursor(pix, 0, 20); + } + + pix = BarIcon("eraser-cursor"); + if(pix.isNull()) + { + cursor_erase = cursor_normal; + kdDebug(4640) << "TDEIconEditGrid: Error loading eraser-cursor.xpm" << endl; + } + else + { + mask = TQPixmap(pix.createHeuristicMask(true)); + pix.setMask(mask); + cursor_erase = TQCursor(pix, 1, 16); + } +} + + + +void TDEIconEditGrid::setTool(DrawTool t) +{ + btndown = false; + tool = t; + + if(tool != SelectRect && tool != SelectCircle) + isselecting = false; + + switch( tool ) + { + case SelectRect: + isselecting = true; + setCursor(cursor_aim); + break; + case SelectCircle: + isselecting = true; + setCursor(cursor_aim); + break; + case Line: + case Ellipse: + case Circle: + case FilledEllipse: + case FilledCircle: + case FilledRect: + case Rect: + setCursor(cursor_aim); + break; + case Freehand: + setCursor(cursor_paint); + break; + case Spray: + setCursor(cursor_spray); + break; + case Eraser: + setCursor(cursor_erase); + break; + case FloodFill: + setCursor(cursor_flood); + break; + case Find: + setCursor(cursor_colorpicker); + break; + default: + break; + } +} + + +void TDEIconEditGrid::drawFlood(int x, int y, uint oldcolor) +{ + if((!img->valid(x, y)) + || (colorAt((y * numCols())+x) != oldcolor) + || (colorAt((y * numCols())+x) == currentcolor)) + return; + + *((uint*)img->scanLine(y) + x) = currentcolor; + setColor((y*numCols())+x, currentcolor, false); + + setModified(true); + + drawFlood(x, y-1, oldcolor); + drawFlood(x, y+1, oldcolor); + drawFlood(x-1, y, oldcolor); + drawFlood(x+1, y, oldcolor); + //TODO: add undo +} + + +void TDEIconEditGrid::drawSpray(TQPoint point) +{ + int x = (point.x()-5); + int y = (point.y()-5); + + //kdDebug(4640) << "drawSpray() - " << x << " X " << y << endl; + + pntarray.resize(0); + int points = 0; + for(int i = 1; i < 4; i++, points++) + { + int dx = (rand() % 10); + int dy = (rand() % 10); + pntarray.putPoints(points, 1, x+dx, y+dy); + } + + drawPointArray(pntarray, Draw); +} + + +//This routine is from TQt sources -- it's the branch of TQPointArray::makeEllipse( int x, int y, int w, int h ) that's not normally compiled +//It seems like TDEIconEdit relied on the TQt1 semantics for makeEllipse, which broke +//the tool with reasonably recent TQt versions. +//Thankfully, TQt includes the old code #ifdef'd, which is hence included here +static void TQPA_makeEllipse(TQPointArray& ar, int x, int y, int w, int h ) +{ // midpoint, 1/4 ellipse + if ( w <= 0 || h <= 0 ) { + if ( w == 0 || h == 0 ) { + ar.resize( 0 ); + return; + } + if ( w < 0 ) { // negative width + w = -w; + x -= w; + } + if ( h < 0 ) { // negative height + h = -h; + y -= h; + } + } + int s = (w+h+2)/2; // max size of xx,yy array + int *px = new int[s]; // 1/4th of ellipse + int *py = new int[s]; + int xx, yy, i=0; + double d1, d2; + double a2=(w/2)*(w/2), b2=(h/2)*(h/2); + xx = 0; + yy = int(h/2); + d1 = b2 - a2*(h/2) + 0.25*a2; + px[i] = xx; + py[i] = yy; + i++; + while ( a2*(yy-0.5) > b2*(xx+0.5) ) { // region 1 + if ( d1 < 0 ) { + d1 = d1 + b2*(3.0+2*xx); + xx++; + } else { + d1 = d1 + b2*(3.0+2*xx) + 2.0*a2*(1-yy); + xx++; + yy--; + } + px[i] = xx; + py[i] = yy; + i++; + } + d2 = b2*(xx+0.5)*(xx+0.5) + a2*(yy-1)*(yy-1) - a2*b2; + while ( yy > 0 ) { // region 2 + if ( d2 < 0 ) { + d2 = d2 + 2.0*b2*(xx+1) + a2*(3-2*yy); + xx++; + yy--; + } else { + d2 = d2 + a2*(3-2*yy); + yy--; + } + px[i] = xx; + py[i] = yy; + i++; + } + s = i; + ar.resize( 4*s ); // make full point array + x += w/2; + y += h/2; + for ( i=0; i end.x()) + { + cx = x - end.x(); + x = x - cx; + } + else + cx = end.x() - x; + if(y > end.y()) + { + cy = y - end.y(); + y = y - cy; + } + else + cy = end.y() - y; + + int d = (cx > cy) ? cx : cy; + + //kdDebug(4640) << x << ", " << y << " - " << d << " " << d << endl; + pntarray.resize(0); + drawPointArray(a, Mark); + + if(tool == Circle || tool == FilledCircle || tool == SelectCircle) + TQPA_makeEllipse(pntarray, x, y, d, d); + else if(tool == Ellipse || tool == FilledEllipse) + TQPA_makeEllipse(pntarray, x, y, cx, cy); + + if((tool == FilledEllipse) || (tool == FilledCircle) + || (tool == SelectCircle)) + { + int s = pntarray.size(); + int points = s; + for(int i = 0; i < s; i++) + { + int x = pntarray[i].x(); + int y = pntarray[i].y(); + for(int j = 0; j < s; j++) + { + if((pntarray[j].y() == y) && (pntarray[j].x() > x)) + { + for(int k = x; k < pntarray[j].x(); k++, points++) + pntarray.putPoints(points, 1, k, y); + break; + } + } + } + } + + drawPointArray(pntarray, Mark); + + if(tool == SelectCircle && pntarray.size() > 0 && !ispasting) + emit selecteddata(true); +} + + +void TDEIconEditGrid::drawRect(bool drawit) +{ + if(drawit) + { + drawPointArray(pntarray, Draw); + p = *img; + emit changed(p); + return; + } + + TQPointArray a(pntarray.copy()); + int x = start.x(), y = start.y(), cx, cy; + + if(x > end.x()) + { + cx = x - end.x(); + x = x - cx; + } + else + cx = end.x() - x; + if(y > end.y()) + { + cy = y - end.y(); + y = y - cy; + } + else + cy = end.y() - y; + + //kdDebug(4640) << x << ", " << y << " - " << cx << " " << cy << endl; + pntarray.resize(0); + drawPointArray(a, Mark); // remove previous marking + + int points = 0; + bool pasting = ispasting; + + if(tool == FilledRect || (tool == SelectRect)) + { + for(int i = x; i <= x + (pasting ? cx + 1 : cx); i++) + { + for(int j = y; j <= y+cy; j++, points++) + pntarray.putPoints(points, 1, i, j); + } + } + else + { + for(int i = x; i <= x+cx; i++, points++) + pntarray.putPoints(points, 1, i, y); + for(int i = y; i <= y+cy; i++, points++) + pntarray.putPoints(points, 1, x, i); + for(int i = x; i <= x+cx; i++, points++) + pntarray.putPoints(points, 1, i, y+cy); + for(int i = y; i <= y+cy; i++, points++) + pntarray.putPoints(points, 1, x+cx, i); + } + + drawPointArray(pntarray, Mark); + + if(tool == SelectRect && pntarray.size() > 0 && !ispasting) + emit selecteddata(true); +} + + +void TDEIconEditGrid::drawLine(bool drawit, bool drawStraight) +{ + if(drawit) + { + drawPointArray(pntarray, Draw); + p = *img; + emit changed(p); + return; + } + + TQPointArray a(pntarray.copy()); + pntarray.resize(0); + + // remove previous marking + drawPointArray(a, Mark); + + int x, y, dx, dy, delta; + + dx = end.x() - start.x(); + dy = end.y() - start.y(); + x = start.x(); + y = start.y(); + + delta = TQMAX(abs(dx), abs(dy)); + int deltaX = abs(dx); + int deltaY = abs(dy); + + if ((drawStraight) && (delta > 0)) + { + dx /= delta; + dy /= delta; + + for(int i = 0; i <= delta; i++) + { + pntarray.putPoints(i, 1, x, y); + x += dx; + y += dy; + } + } + + else if ((delta > 0) && (deltaX >= deltaY)) + { + for(int i = 0; i <= deltaX; i++) + { + pntarray.putPoints(i, 1, x, y); + + if(dx > 0) + x++; + else + x--; + + if(dy >= 0) + y = start.y() + (abs(start.x() - x) * deltaY) / deltaX; + else + y = start.y() - (abs(start.x() - x) * deltaY) / deltaX; + } + } + + else if ((delta > 0) && (deltaY > deltaX)) + { + for(int i = 0; i <= deltaY; i++) + { + pntarray.putPoints(i, 1, x, y); + + if(dy > 0) + y++; + else + y--; + + if(dx >= 0) + x = start.x() + (abs(start.y() - y) * deltaX) / deltaY; + else + x = start.x() - (abs(start.y() - y) * deltaX) / deltaY; + } + } + + drawPointArray(pntarray, Mark); +} + + +void TDEIconEditGrid::drawPointArray(TQPointArray a, DrawAction action) +{ + TQRect area( a.boundingRect().x()*cellSize()-1, a.boundingRect().y()*cellSize()-1, + a.boundingRect().width()*cellSize()+1, a.boundingRect().height()*cellSize()+1 ); + + KMacroCommand* macro = 0; + bool doupdate = false; + + if( a.size() > 0 && action == Draw ) { + // might cause a memmory leak, if + // macro is never used and never + // added to the history! TODO: Fix this + macro = new KMacroCommand( i18n("Drawn Array") ); + RepaintCommand* rc = new RepaintCommand( area, this ); + macro->addCommand( rc ); + } + + int s = a.size(); //((rect.size().width()) * (rect.size().height())); + for(int i = 0; i < s; i++) + { + int x = a[i].x(); + int y = a[i].y(); + + if(img->valid(x, y) && TQT_TQRECT_OBJECT(a.boundingRect()).contains(a[ i ])) + { + //kdDebug(4640) << "x: " << x << " - y: " << y << endl; + switch( action ) + { + case Draw: + { + DrawCommand* dc = new DrawCommand( x, y, currentcolor, img, this ); + dc->execute(); + //*((uint*)img->scanLine(y) + x) = currentcolor; //colors[cell]|OPAQUE; + //int cell = y * numCols() + x; + //setColor( cell, currentcolor, false ); + doupdate = true; + //updateCell( y, x, FALSE ); + macro->addCommand( dc ); + break; + } + + case Mark: + case UnMark: + update(x*cellsize,y*cellsize, cellsize, cellsize); + //updateCell( y, x, true ); + break; + + default: + break; + } + } + } + + + if(doupdate) + { + setModified( true ); + updateColors(); + RepaintCommand* rc = new RepaintCommand( area, this ); + rc->execute(); + macro->addCommand( rc ); + pntarray.resize(0); + // add to undo/redo history + history->addCommand( macro, false ); } +} + +void TDEIconEditGrid::updatePreviewPixmap() +{ + p = *img; + emit changed(TQPixmap(p)); +} + + +bool TDEIconEditGrid::isMarked(TQPoint point) +{ + return isMarked(point.x(), point.y()); +} + + +bool TDEIconEditGrid::isMarked(int x, int y) +{ + if(((y * numCols()) + x) == selected) + return true; + + int s = pntarray.size(); + for(int i = 0; i < s; i++) + { + if(y == pntarray[i].y() && x == pntarray[i].x()) + return true; + } + + return false; +} + + +// Fast diffuse dither to 3x3x3 color cube +// Based on TQt's image conversion functions +static bool kdither_32_to_8( const TQImage *src, TQImage *dst ) +{ + register TQRgb *p; + uchar *b; + int y; + + //printf("kconvert_32_to_8\n"); + + if ( !dst->create(src->width(), src->height(), 8, 256) ) { + kdWarning() << "OImage: destination image not valid" << endl; + return FALSE; + } + + int ncols = 256; + + static uint bm[16][16]; + static int init=0; + if (!init) + { + // Build a Bayer Matrix for dithering + init = 1; + int n, i, j; + + bm[0][0]=0; + + for (n=1; n<16; n*=2) + { + for (i=0; isetNumColors( ncols ); + +#define MAX_R 2 +#define MAX_G 2 +#define MAX_B 2 +#define INDEXOF(r,g,b) (((r)*(MAX_G+1)+(g))*(MAX_B+1)+(b)) + + int rc, gc, bc; + + for ( rc=0; rc<=MAX_R; rc++ ) // build 2x2x2 color cube + for ( gc=0; gc<=MAX_G; gc++ ) + for ( bc=0; bc<=MAX_B; bc++ ) + { + dst->setColor( INDEXOF(rc,gc,bc), + tqRgb( rc*255/MAX_R, gc*255/MAX_G, bc*255/MAX_B ) ); + } + + int sw = src->width(); + int* line1[3]; + int* line2[3]; + int* pv[3]; + + line1[0] = new int[src->width()]; + line2[0] = new int[src->width()]; + line1[1] = new int[src->width()]; + line2[1] = new int[src->width()]; + line1[2] = new int[src->width()]; + line2[2] = new int[src->width()]; + pv[0] = new int[sw]; + pv[1] = new int[sw]; + pv[2] = new int[sw]; + + for ( y=0; y < src->height(); y++ ) + { + p = (TQRgb *)src->scanLine(y); + b = dst->scanLine(y); + int endian = (TQImage::systemByteOrder() == TQImage::BigEndian); + int x; + uchar* q = const_cast(src)->scanLine(y); + uchar* q2 = const_cast(src)->scanLine(y+1 < src->height() ? y + 1 : 0); + for (int chan = 0; chan < 3; chan++) + { + b = dst->scanLine(y); + int *l1 = (y&1) ? line2[chan] : line1[chan]; + int *l2 = (y&1) ? line1[chan] : line2[chan]; + if ( y == 0 ) + { + for (int i=0; iheight() ) + { + for (int i=0; i>4; + l2[x+1] += err>>4; + } + l2[x]+=(err*5)>>4; + if (x>1) + l2[x-1]+=(err*3)>>4; + } + } + else + { + for (x=sw; x-->0; ) + { + int pix = TQMAX(TQMIN(2, (l1[x] * 2 + 128)/ 255), 0); + int err = l1[x] - pix * 255 / 2; + pv[chan][x] = pix; + + // Spread the error around... + if ( x > 0 ) + { + l1[x-1] += (err*7)>>4; + l2[x-1] += err>>4; + } + l2[x]+=(err*5)>>4; + if (x+1 < sw) + l2[x+1]+=(err*3)>>4; + } + } + } + if (endian) + { + for (x=0; xheight(); y++) + { + uint *l = (uint*)img->scanLine(y); + for(int x = 0; x < img->width(); x++, l++) + { + if(*l < 0xff000000) + { + *l = *l | 0xff000000; + } + } + } + + load(img); + return; + +/* +#if [[[TQT_VERSION IS DEPRECATED]]] > 140 + *img = img->convertDepthWithPalette(32, iconpalette, 42); + load(img); + return; +#endif +*/ + + TQApplication::setOverrideCursor(waitCursor); + for(int y = 0; y < numRows(); y++) + { + uint *l = (uint*)img->scanLine(y); + for(int x = 0; x < numCols(); x++, l++) + { + if(*l != TRANSPARENT) + { + if(!iconcolors.contains(*l)) + *l = iconcolors.closestMatch(*l); + } + } + } + + load(img); + setModified(true); + TQApplication::restoreOverrideCursor(); +} + + +void TDEIconEditGrid::grayScale() +{ + for(int y = 0; y < numRows(); y++) + { + uint *l = (uint*)img->scanLine(y); + for(int x = 0; x < numCols(); x++, l++) + { + if(*l != TRANSPARENT) + { + uint c = tqGray(*l); + *l = tqRgba(c, c, c, tqAlpha(*l)); + } + } + } + + load(img); + setModified(true); +} + + +void TDEIconEditGrid::clearImage(TQImage *image) +{ + if(image->depth() != 32) + { + image->fill(TRANSPARENT); + } + else + { + // TQImage::fill() does not set the alpha channel so do it + // manually. + for(int y = 0; y < image->height(); y++) + { + uint *l = (uint*)image->scanLine(y); + for(int x = 0; x < image->width(); x++, l++) + { + *l = TRANSPARENT; + } + } + } +} + + +void TDEIconEditGrid::setModified(bool m) +{ + if(m != modified) + { + modified = m; + emit modifiedchanged(m); + } +} + + +#include "tdeicongrid.moc" +// vim: set ts=4: diff --git a/tdeiconedit/tdeicongrid.h b/tdeiconedit/tdeicongrid.h new file mode 100644 index 00000000..9f41084f --- /dev/null +++ b/tdeiconedit/tdeicongrid.h @@ -0,0 +1,265 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE. + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __TDEICONEDITGRID_H__ +#define __TDEICONEDITGRID_H__ + +#include +#include +#include +#include +#include +#include +#include + +#include "kcolorgrid.h" + +class KCommandHistory; +class KRuler; +class TDEIconEditGrid; +class TQScrollView; + +enum Direction { + DirIn = 0, DirOut = 1, + DirUp = DirIn, DirDown = DirOut, + DirLeft, DirRight +}; + +class DrawCommand : public KCommand { + public: + DrawCommand( int xx, int yy, uint newcol, TQImage* img, TDEIconEditGrid* g ) { + x = xx; + y = yy; + newcolor = newcol; + image = img; + grid = g; + } + + void execute(); + void unexecute(); + TQString name() const { + return i18n("Drawed Something"); + } + + protected: + int x; + int y; + uint newcolor; + uint oldcolor; + TQImage* image; + TDEIconEditGrid* grid; +}; + +class RepaintCommand : public KCommand { + public: + RepaintCommand( TQRect a, TDEIconEditGrid* g ) { + area = a; + grid = g; + } + + void execute(); + void unexecute() { + execute(); + } + + TQString name() const { + return "repainted"; + } + protected: + TDEIconEditGrid* grid; + TQRect area; +}; + +class KGridView : public TQFrame +{ + Q_OBJECT + +public: + KGridView( TQImage *image, KCommandHistory* history, TQWidget * parent = 0, const char *name = 0); + + KRuler *hruler() { return _hruler;} + KRuler *vruler() { return _vruler;} + TQFrame *corner() { return _corner;} + TDEIconEditGrid *grid() { return _grid; } + void setShowRulers(bool mode); + void setAcceptDrop(bool a); + const TQRect viewRect(); + TQScrollView *viewPortWidget() { return viewport;} + +public slots: + void sizeChange(int, int); + void moving(int, int); + void scalingChange(int); + void paintGrid(); + void checkClipboard(); + +protected: + virtual void paintEvent(TQPaintEvent*); + virtual void resizeEvent(TQResizeEvent*); + void paintDropSite(); + void setSizes(); + + TQFrame *_corner; + TDEIconEditGrid *_grid; + KRuler *_hruler, *_vruler; + TQScrollView *viewport; + bool acceptdrop; +}; + +/** +* TDEIconEditGrid +* @short TDEIconEditGrid +* @author Thomas Tanghus +* @version 0.3 +*/ +class TDEIconEditGrid : public KColorGrid +{ + Q_OBJECT + +public: + TDEIconEditGrid( TQImage *image, KCommandHistory* h, TQWidget * parent = 0, const char *name = 0); + virtual ~TDEIconEditGrid(); + + enum DrawTool { Line, Freehand, FloodFill, Spray, Rect, FilledRect, Circle, + FilledCircle, Ellipse, FilledEllipse, Eraser, SelectRect, SelectCircle, Find }; + enum DrawAction { Mark, UnMark, Draw }; + + void setGrid(bool g) { KColorGrid::setGrid(g); emit needPainting(); } + bool isModified() { return modified; }; + void setModified(bool m); + const TQPixmap &pixmap(); + const TQImage &image() { return *img; } + TQImage clipboardImage(bool &ok); + TQImage getSelection(bool); + int rows() { return numRows(); }; + int cols() { return numCols(); }; + uint getColors( uint *_colors) { return colors(_colors); } + bool isMarked(TQPoint p); + bool isMarked(int x, int y); + int scaling() { return cellSize(); } + void loadBlank( int w = 0, int h = 0); + void setUndoColor( int colNum, uint v, bool update = true ) { + setColor( colNum, v, update ); + }; + + enum TransparencyDisplayType + { + TRD_SOLIDCOLOR, + TRD_CHECKERBOARD + }; + enum CheckerboardSize + { + CHK_SMALL = 0, + CHK_MEDIUM = 1, + CHK_LARGE = 2 + }; + + TransparencyDisplayType transparencyDisplayType() const { return m_transparencyDisplayType; } + TQColor checkerboardColor1() const { return m_checkerboardColor1; } + TQColor checkerboardColor2() const { return m_checkerboardColor2; } + CheckerboardSize checkerboardSize() const { return m_checkerboardSize; } + TQColor transparencySolidColor() const { return m_transparencySolidColor; } + + void setTransparencyDisplayType(TransparencyDisplayType t) { m_transparencyDisplayType = t; } + void setCheckerboardColor1(const TQColor& c) { m_checkerboardColor1 = c; } + void setCheckerboardColor2(const TQColor& c) { m_checkerboardColor2 = c; } + void setCheckerboardSize(CheckerboardSize size) { m_checkerboardSize = size; } + void setTransparencySolidColor(const TQColor& c) { m_transparencySolidColor = c; } + +public slots: + void load( TQImage *); + void editCopy(bool cut = false); + void editPaste(bool paste = false); + void editPasteAsNew(); + void editSelectAll(); + void editClear(); + void getImage(TQImage *image); +//#if [[[TQT_VERSION IS DEPRECATED]]] <= 140 + void editResize(); +//#endif + void setSize(const TQSize s); + void grayScale(); + void mapToKDEPalette(); + void setTool(DrawTool tool); + bool zoom(Direction direct); + bool zoomTo(int); + + void checkClipboard(); + +signals: + void scalingchanged(int); + void changed( const TQPixmap & ); + void sizechanged( int, int ); + void poschanged( int, int ); + void xposchanged( int ); + void yposchanged( int ); + void newmessage(const TQString &); + void clipboarddata(bool); + void selecteddata(bool); + void needPainting(); + void modifiedchanged(bool); + void colorSelected(uint); + +protected slots: + void setColorSelection( uint ); + void updatePreviewPixmap(); + +protected: + virtual void paintEvent(TQPaintEvent*); + virtual void paintCell( TQPainter*, int, int ) {} + virtual void paintForeground(TQPainter* p, TQPaintEvent* e); + virtual void mousePressEvent(TQMouseEvent*); + virtual void mouseReleaseEvent(TQMouseEvent*); + virtual void mouseMoveEvent(TQMouseEvent*); + void createCursors(); + void drawPointArray(TQPointArray, DrawAction); + void drawEllipse(bool); + void drawLine(bool drawIt, bool drawStraight); + void drawRect(bool); + void drawSpray(TQPoint); + void drawFlood(int x, int y, uint oldcolor); + static void clearImage(TQImage *image); + + uint currentcolor; + TQPoint start, end; + TQRect insrect; + TQSize cbsize; + TQImage *img; + TQPixmap p; + int selected, tool; //, numrows, numcols; + bool modified, btndown, ispasting, isselecting; + TQPointArray pntarray; + KColorArray iconcolors; + KCommandHistory* history; + KMacroCommand* m_command; + TQCursor cursor_normal, cursor_aim, cursor_flood, cursor_spray, cursor_erase, cursor_paint, cursor_colorpicker; + TransparencyDisplayType m_transparencyDisplayType; + TQColor m_checkerboardColor1; + TQColor m_checkerboardColor2; + CheckerboardSize m_checkerboardSize; + TQColor m_transparencySolidColor; +}; + + + +#endif //__TDEICONEDITGRID_H__ + + + diff --git a/tdeiconedit/utils.cpp b/tdeiconedit/utils.cpp new file mode 100644 index 00000000..efd50d88 --- /dev/null +++ b/tdeiconedit/utils.cpp @@ -0,0 +1,134 @@ +/* + TDE Icon Editor - a small graphics drawing program for the TDE + + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include +#include +#include + +#include "utils.h" +#include "config.h" + +imageFormats *formats = 0L; + +void setupImageHandlers() +{ + if(formats != 0L) + return; + + KImageIO::registerFormats(); + + kdDebug(4640) << "Initializing formats" << endl; + formats = new imageFormats; + TQ_CHECK_PTR(formats); + formats->setAutoDelete(true); + formats->append(new imageFormat("GIF", "GIF", "gif")); +#ifdef HAVE_LIBJPEG + formats->append(new imageFormat("JFIF", "JPEG", "jpg")); +#endif + formats->append(new imageFormat("XPM", "XPM", "xpm")); + formats->append(new imageFormat("ICO", "Windows Icon File", "ico")); +/* +#ifdef HAVE_LIBJPEG + TQImageIO::defineIOHandler("JFIF","^\377\330\377\340", 0, read_jpeg_jfif, NULL); +#endif +*/ +} + +// Simple copy operation on local files (isn't there something like this in the libs?) +bool copyFile(const TQString &src, const TQString &dest) +{ + TQFile f_src(src); + TQFile f_dest(dest); + TQFileInfo fi(f_src); + uint src_size = fi.size(); + kdDebug(4640) << "Size: " << src_size << endl; + + if ( f_src.open(IO_ReadOnly) ) + { // file opened successfully + if ( !f_dest.open(IO_WriteOnly) ) + { + kdDebug(4640) << "copyFile - There was an error opening destination file: " << dest << endl; + f_src.close(); + return false; + } + char *data = new char[src_size]; + if(f_src.readBlock(data, src_size) == -1) + { + kdDebug(4640) << "copyFile - There was an error reading source file: " << src << endl; + f_src.close(); + f_dest.close(); + delete [] data; + return false; + } + if(f_dest.writeBlock(data, src_size) == -1) + { + kdDebug(4640) << "copyFile - There was an error writing to destination file: " << dest << endl; + f_src.close(); + f_dest.close(); + delete [] data; + return false; + } + + f_src.close(); + f_dest.close(); + delete [] data; + return true; + } + kdDebug(4640) << "copyFile - There was an error opening source file: " << src << endl; + return false; +} + +bool removeFile(const TQString &file) +{ + if(file.length() > 0 && TQFile::exists(file)) + { + TQDir d; + kdDebug(4640) << "Removing " << file << endl; + if(!d.remove(file)) + { + kdDebug(4640) << "removeFile - There was an error removing the file: " << file << endl; + return false; + } + return true; + } + return false; +} + +bool moveFile(const TQString &src, const TQString &dest) +{ + if(copyFile(src, dest)) + return removeFile(src); + return false; +} + +uint kdeColor(uint color) +{ + uint c = iconpalette[0]|OPAQUE_MASK; + + for(uint i = 0; i < 42; i++) + { + //kdDebug(4640) << "Color #" << i << " " << iconpalette[i] << endl; + if( (iconpalette[i]|OPAQUE_MASK) - c < (iconpalette[i]|OPAQUE_MASK) - color) + c = iconpalette[i]|OPAQUE_MASK; + } + //kdDebug(4640) << color << " -> " << c << endl; + return c; +} diff --git a/tdeiconedit/utils.h b/tdeiconedit/utils.h new file mode 100644 index 00000000..197d67b6 --- /dev/null +++ b/tdeiconedit/utils.h @@ -0,0 +1,73 @@ +/* + tdeiconedit - a small graphics drawing program for the KDE + + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __UTILS_H__ +#define __UTILS_H__ + +#include + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif // HAVE_CONFIG_H + +#include +#include +#include +#include + +#define OPAQUE_MASK 0xff000000 + +#ifdef TRANSPARENT +#undef TRANSPARENT +#endif +#define TRANSPARENT 0x00000000 + +const uint iconpalette[42] = { // kde palette + 0x303030,0x585858,0x808080,0xa0a0a0,0xc3c3c3,0xdcdcdc, + 0x000040,0x004000,0x000000,0x004040,0x404000,0x000000, + 0x000080,0x008000,0x800000,0x008080,0x808000,0x800080, + 0x0000c0,0x00c000,0xc00000,0x00c0c0,0xc0c000,0xc000c0, + 0x0000ff,0x00ff00,0xff0000,0x00ffff,0xffff00,0xff00ff, + 0xc0c0ff,0xc0ffc0,0xffc0c0,0xc0ffff,0xffffc0,0xffc0ff, + 0x0080ff,0x0058c0,0x58a8ff,0xa8dcff,0xffffff,0x000000}; + +struct imageFormat +{ + imageFormat(const char *f, const char *t, const char *e) { format = f; title = t, extension = e;} + const char *format; + const char *title; + const char *extension; +}; + +typedef TQPtrList imageFormats; +extern imageFormats *formats; + +void setupImageHandlers(); + +bool copyFile(const TQString &src, const TQString &dest); +bool removeFile(const TQString &file); +bool moveFile(const TQString &src, const TQString &dest); +uint kdeColor(uint c); + +#endif //__UTILS_H__ + + + diff --git a/tdeiconedit/version.h b/tdeiconedit/version.h new file mode 100644 index 00000000..3c7400a6 --- /dev/null +++ b/tdeiconedit/version.h @@ -0,0 +1,36 @@ +/* + tdeiconedit - a small graphics drawing program for the KDE + + Copyright (C) 1998 Thomas Tanghus (tanghus@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 Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __KIE_VERSION_H__ +#define __KIE_VERSION_H__ + +#define KIE_VERSION_MAJOR 0 +#define KIE_VERSION_MINOR 4 +#define KIE_VERSION_RELEASE 0 +#define KIE_VERSION ((KIE_VERSION_MAJOR * 100) + (KIE_VERSION_MINOR *10) + KIE_VERSION_RELEASE) +#define KIE_VERSION_STRING "0.4.0" + + + +#endif // __KIE_VERSION_H__ + + + -- cgit v1.2.3