Hello community,

here is the log from the commit of package kolourpaint for openSUSE:Factory 
checked in at 2016-01-10 13:05:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kolourpaint (Old)
 and      /work/SRC/openSUSE:Factory/.kolourpaint.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kolourpaint"

Changes:
--------
--- /work/SRC/openSUSE:Factory/kolourpaint/kolourpaint.changes  2015-11-15 
12:38:13.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kolourpaint.new/kolourpaint.changes     
2016-01-10 13:05:53.000000000 +0100
@@ -1,0 +2,9 @@
+Sun Dec 13 13:23:38 UTC 2015 - tittiatc...@gmail.com
+
+- Update to KDE Applications 15.12.0
+   * KDE Applications 15.12.0 
+   * https://www.kde.org/announcements/announce-applications-15.12.0.php
+   * boo#958887
+
+
+-------------------------------------------------------------------

Old:
----
  kolourpaint-15.08.3.tar.xz

New:
----
  kolourpaint-15.12.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kolourpaint.spec ++++++
--- /var/tmp/diff_new_pack.kwo9k9/_old  2016-01-10 13:05:55.000000000 +0100
+++ /var/tmp/diff_new_pack.kwo9k9/_new  2016-01-10 13:05:55.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           kolourpaint
-Version:        15.08.3
+Version:        15.12.0
 Release:        0
 # See bnc#717722 for license details
 Summary:        Paint Program

++++++ kolourpaint-15.08.3.tar.xz -> kolourpaint-15.12.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/CMakeLists.txt 
new/kolourpaint-15.12.0/CMakeLists.txt
--- old/kolourpaint-15.08.3/CMakeLists.txt      2015-11-04 11:39:20.000000000 
+0100
+++ new/kolourpaint-15.12.0/CMakeLists.txt      2015-12-06 07:06:20.000000000 
+0100
@@ -1,3 +1,4 @@
+cmake_minimum_required(VERSION 2.8.9)
 project(kolourpaint)
 
 find_package(KDE4 REQUIRED)
@@ -6,6 +7,18 @@
 find_package(QImageBlitz REQUIRED)
 add_definitions(-DQT_USE_FAST_CONCATENATION -DQT_USE_FAST_OPERATOR_PLUS)
 
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules)
+find_package(KSane)
+macro_log_feature(KSANE_FOUND "KSane" "KDE sane library" 
"https://quickgit.kde.org/?p=libksane.git"; FALSE "" "Scanning support")
+
+if(KSANE_FOUND)
+    include_directories(${KSANE_INCLUDE_DIR})
+    add_definitions(-DHAVE_KSANE=1)
+else(KSANE_FOUND)
+    add_definitions(-DHAVE_KSANE=0)
+endif(KSANE_FOUND)
+
+
 include_directories(
 
 # GENERATED BY ./gen_cmake_include_dirs
@@ -104,439 +117,231 @@
 
 # GENERATED BY ./gen_cmake_srcs | fgrep -v /lgpl/
 
-if(CMAKE_MAJOR_VERSION MATCHES "2" AND CMAKE_MINOR_VERSION MATCHES "4" AND 
MINGW)
-
 set(kolourpaint_lib1_SRCS
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBalanceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectClearCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectCommandBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectEmbossCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectFlattenCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectHSVCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectInvertCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/kpDocumentMetaInfoCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformFlipCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformRotateCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformSkewCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistoryBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistory.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandSize.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpMacroCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpNamedCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/flow/kpToolFlowCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolColorPickerCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolFloodFillCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/polygonal/kpToolPolygonalCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/rectangular/kpToolRectangularCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpAbstractSelectionContentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionCreateCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionDestroyCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionMoveCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextDeleteCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextEnterCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextInsertCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorLightCross.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorProvider.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/effects/kpEffectsDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpColorSimilarityDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Open.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Save.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocumentSaveOptions.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Selection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/commands/kpCommandEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/document/kpDocumentEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/kpEnvironmentBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/kpToolEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/selection/kpToolSelectionEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/kpSetOverrideCursorSaver.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/kpWidgetMapper.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpResizeSignallingLabel.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpSubWindow.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBalance.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBlurSharpen.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectEmboss.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectFlatten.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectGrayscale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectHSV.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectInvert.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectReduceColors.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectToneEnhance.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor_Constants.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpDocumentMetaInfo.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpFloodFill.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpPainter.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformAutoCrop.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_ImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_TextSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBalanceCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectClearCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectCommandBase.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectEmbossCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectFlattenCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectHSVCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectInvertCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/kpDocumentMetaInfoCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformFlipCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformRotateCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformSkewCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistoryBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistory.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandSize.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpMacroCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/kpNamedCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/flow/kpToolFlowCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolColorPickerCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolFloodFillCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/polygonal/kpToolPolygonalCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/rectangular/kpToolRectangularCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpAbstractSelectionContentCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionCreateCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionDestroyCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionMoveCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextDeleteCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextEnterCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextInsertCommand.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorLightCross.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorProvider.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/effects/kpEffectsDialog.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpColorSimilarityDialog.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Open.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Save.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocumentSaveOptions.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Selection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/environments/commands/kpCommandEnvironment.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/environments/document/kpDocumentEnvironment.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/environments/kpEnvironmentBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/kpToolEnvironment.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/selection/kpToolSelectionEnvironment.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/generic/kpSetOverrideCursorSaver.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/generic/kpWidgetMapper.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpResizeSignallingLabel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpSubWindow.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBalance.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBlurSharpen.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectEmboss.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectFlatten.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectGrayscale.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectHSV.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectInvert.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectReduceColors.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectToneEnhance.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor_Constants.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpDocumentMetaInfo.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpFloodFill.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpPainter.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformAutoCrop.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_ImageSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_TextSelection.cpp
 )   # kolourpaint_lib1_SRCS
 
 set(kolourpaint_lib2_SRCS
-${CMAKE_CURRENT_SOURCE_DIR}/kolourpaint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/kpThumbnail.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/kpViewScrollableContainer.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpAbstractImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpEllipticalImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpFreeFormImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpImageSelectionTransparency.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpRectangularImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpAbstractSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionDrag.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionFactory.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Cursor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Paint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextStyle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpPreeditText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/tempImage/kpTempImage.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Colors.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Edit.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_File.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Image.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Settings.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_StatusBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Text.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Tools.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Thumbnail.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Zoom.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_DrawShapes.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_Transforms.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolBrush.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolColorEraser.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolEraser.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowPixmapBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolPen.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolSpraycan.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolAction.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolColorPicker.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Drawing.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolFloodFill.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_MouseEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_OtherEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_UserNotifications.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Utilities.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolZoom.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolCurve.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolLine.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygonalBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygon.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolyline.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolEllipse.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangularBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRoundedRectangle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolEllipticalSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolFreeFormSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolRectSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Create.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Move.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Commands.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Create.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_CursorCalc.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_InputMethodEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Move.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_ResizeScale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_SelectText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_TextStyle.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/kolourpaint.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/kpThumbnail.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/kpViewScrollableContainer.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpAbstractImageSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpEllipticalImageSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpFreeFormImageSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpImageSelectionTransparency.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpRectangularImageSelection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpAbstractSelection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionDrag.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionFactory.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Cursor.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Paint.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextStyle.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpPreeditText.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/layers/tempImage/kpTempImage.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Colors.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Edit.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_File.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Image.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Settings.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_StatusBar.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Text.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Tools.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Thumbnail.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Zoom.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_DrawShapes.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_Transforms.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolBrush.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolColorEraser.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolEraser.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowPixmapBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolPen.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolSpraycan.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolAction.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolColorPicker.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Drawing.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolFloodFill.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_KeyboardEvents.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_MouseEvents.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_OtherEvents.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_UserNotifications.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Utilities.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolZoom.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolCurve.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolLine.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygonalBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygon.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolyline.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolEllipse.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangle.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangularBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRoundedRectangle.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolEllipticalSelection.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolFreeFormSelection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolRectSelection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Create.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Move.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Commands.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Create.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_CursorCalc.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_InputMethodEvents.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Move.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_ResizeScale.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_SelectText.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_TextStyle.cpp
 )  # kolourpaint_lib2_SRCS
 
-set(kolourpaint_SRCS
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpUnzoomedThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Events.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Paint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Selections.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_TextCursor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_ViewUpdates.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityFrame.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityHolder.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBalanceWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectEmbossWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectFlattenWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectHSVWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectInvertWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectWidgetBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorCells.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorPalette.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDefaultColorCollection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDocumentSaveOptionsWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDualColorButton.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpPrintDialogPage.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpTransparentColorCell.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpColorToolBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpToolToolBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBrush.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetEraserSize.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetFillStyle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetLineWidth.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp
-
-
-)  # set(kolourpaint_SRCS
-kde4_add_library(kolourpaint_lib1 STATIC ${kolourpaint_lib1_SRCS})
-kde4_add_library(kolourpaint_lib2 STATIC ${kolourpaint_lib2_SRCS})
-# doubled for the linker
-set(mingw_libs kolourpaint_lib1 kolourpaint_lib2 kolourpaint_lib1 
kolourpaint_lib2)
+if(KSANE_FOUND)
+    set(kolourpaint_lib2_SRCS
+        ${kolourpaint_lib2_SRCS}
+        ${CMAKE_CURRENT_SOURCE_DIR}/scan/sanedialog.cpp
+    )
+endif(KSANE_FOUND)
 
-else(CMAKE_MAJOR_VERSION MATCHES "2" AND CMAKE_MINOR_VERSION MATCHES "4" AND 
MINGW)
+set(kolourpaint_app_SRCS
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpThumbnailView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpUnzoomedThumbnailView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Events.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Paint.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Selections.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedThumbnailView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedView.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_TextCursor.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_ViewUpdates.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityFrame.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityHolder.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBalanceWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectEmbossWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectFlattenWidget.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectHSVWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectInvertWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectWidgetBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorCells.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorPalette.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDefaultColorCollection.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDocumentSaveOptionsWidget.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDualColorButton.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpPrintDialogPage.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpTransparentColorCell.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpColorToolBar.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpToolToolBar.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBase.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBrush.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetEraserSize.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetFillStyle.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetLineWidth.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp
+    
${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp
+)  # set(kolourpaint_app_SRCS
 
 set(kolourpaint_SRCS
-
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBalanceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectBlurSharpenCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectClearCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectCommandBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectEmbossCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectFlattenCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectGrayscaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectHSVCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectInvertCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectReduceColorsCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/effects/kpEffectToneEnhanceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/kpDocumentMetaInfoCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformFlipCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformResizeScaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformRotateCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/imagelib/transforms/kpTransformSkewCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistoryBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandHistory.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpCommandSize.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpMacroCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/kpNamedCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/flow/kpToolFlowCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolColorPickerCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/kpToolFloodFillCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/polygonal/kpToolPolygonalCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/rectangular/kpToolRectangularCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpAbstractSelectionContentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolImageSelectionTransparencyCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionCreateCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionDestroyCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionMoveCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionPullFromDocumentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/kpToolSelectionResizeScaleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextBackspaceCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextChangeStyleCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextDeleteCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextEnterCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextGiveContentCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/commands/tools/selection/text/kpToolTextInsertCommand.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorLightCross.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/cursors/kpCursorProvider.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/effects/kpEffectsDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/kpDocumentMetaInfoDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformPreviewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformResizeScaleDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformRotateDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/imagelib/transforms/kpTransformSkewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpColorSimilarityDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/dialogs/kpDocumentSaveOptionsPreviewDialog.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Open.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Save.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocumentSaveOptions.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/document/kpDocument_Selection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/commands/kpCommandEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/dialogs/imagelib/transforms/kpTransformDialogEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/document/kpDocumentEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/kpEnvironmentBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/kpToolEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/environments/tools/selection/kpToolSelectionEnvironment.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/kpSetOverrideCursorSaver.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/kpWidgetMapper.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpResizeSignallingLabel.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/generic/widgets/kpSubWindow.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBalance.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectBlurSharpen.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectEmboss.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectFlatten.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectGrayscale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectHSV.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectInvert.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectReduceColors.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/effects/kpEffectToneEnhance.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor_Constants.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpColor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpDocumentMetaInfo.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpFloodFill.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/kpPainter.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformAutoCrop.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_ImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/imagelib/transforms/kpTransformCrop_TextSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/kolourpaint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/kpThumbnail.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/kpViewScrollableContainer.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpAbstractImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpEllipticalImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpFreeFormImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpImageSelectionTransparency.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/image/kpRectangularImageSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpAbstractSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionDrag.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/kpSelectionFactory.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Cursor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextSelection_Paint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpTextStyle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/selections/text/kpPreeditText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/layers/tempImage/kpTempImage.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Colors.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Edit.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_File.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Image.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Settings.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_StatusBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Text.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_Tools.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Thumbnail.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/mainWindow/kpMainWindow_View_Zoom.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_DrawShapes.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_GetSetPixmapParts.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/pixmapfx/kpPixmapFX_Transforms.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolBrush.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolColorEraser.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolEraser.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolFlowPixmapBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolPen.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/flow/kpToolSpraycan.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolAction.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolColorPicker.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Drawing.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolFloodFill.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_MouseEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_OtherEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_UserNotifications.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpTool_Utilities.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/kpToolZoom.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolCurve.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolLine.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygonalBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolygon.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/polygonal/kpToolPolyline.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolEllipse.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRectangularBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/rectangular/kpToolRoundedRectangle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpAbstractImageSelectionTool_Transparency.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolEllipticalSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolFreeFormSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/image/kpToolRectSelection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Create.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_Move.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/kpAbstractSelectionTool_ResizeScale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Commands.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Create.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_CursorCalc.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_InputMethodEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleArrowKeys.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_KeyboardEvents_HandleTypingKeys.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_Move.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_ResizeScale.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_SelectText.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/tools/selection/text/kpToolText_TextStyle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpUnzoomedThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Events.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Paint.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpView_Selections.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedThumbnailView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/kpZoomedView.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_TextCursor.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/views/manager/kpViewManager_ViewUpdates.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityCubeRenderer.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityFrame.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityHolder.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/colorSimilarity/kpColorSimilarityToolBarItem.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBalanceWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectBlurSharpenWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectEmbossWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectFlattenWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectHSVWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectInvertWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectReduceColorsWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectToneEnhanceWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/imagelib/effects/kpEffectWidgetBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorCells.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpColorPalette.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDefaultColorCollection.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDocumentSaveOptionsWidget.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpDualColorButton.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpPrintDialogPage.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/kpTransparentColorCell.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpColorToolBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/kpToolToolBar.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBase.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetBrush.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetEraserSize.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetFillStyle.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetLineWidth.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetOpaqueOrTransparent.cpp
-${CMAKE_CURRENT_SOURCE_DIR}/widgets/toolbars/options/kpToolWidgetSpraycanSize.cpp
-
-
-)  # set(kolourpaint_SRCS
-endif(CMAKE_MAJOR_VERSION MATCHES "2" AND CMAKE_MINOR_VERSION MATCHES "4" AND 
MINGW)
+    ${kolourpaint_lib1_SRCS}
+    ${kolourpaint_lib2_SRCS}
+    ${kolourpaint_app_SRCS}
+)
 
 set(kolourpaint_lgpl_SRCS
     ${CMAKE_CURRENT_SOURCE_DIR}/lgpl/generic/kpUrlFormatter.cpp
@@ -567,8 +372,18 @@
 
 kde4_add_executable(kolourpaint ${kolourpaint_SRCS})
 
-target_link_libraries(kolourpaint ${KDE4_KIO_LIBS} ${KDE4_KUTILS_LIBS}
-${QIMAGEBLITZ_LIBRARIES} kolourpaint_lgpl)
+target_link_libraries(kolourpaint
+    ${KDE4_KIO_LIBS}
+    ${KDE4_KUTILS_LIBS}
+    ${QIMAGEBLITZ_LIBRARIES}
+    kolourpaint_lgpl
+)
+
+if(KSANE_FOUND)
+    target_link_libraries(kolourpaint
+        ${KSANE_LIBRARY}
+    )
+endif(KSANE_FOUND)
 
 install(TARGETS kolourpaint ${INSTALL_TARGETS_DEFAULT_ARGS})
 
@@ -578,3 +393,5 @@
 install(PROGRAMS kolourpaint.desktop DESTINATION ${XDG_APPS_INSTALL_DIR})
 install(FILES kolourpaint.appdata.xml DESTINATION share/appdata/)
 install(FILES kolourpaintui.rc DESTINATION ${DATA_INSTALL_DIR}/kolourpaint)
+
+macro_display_feature_log()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kolourpaint-15.08.3/cmake/modules/COPYING-CMAKE-SCRIPTS 
new/kolourpaint-15.12.0/cmake/modules/COPYING-CMAKE-SCRIPTS
--- old/kolourpaint-15.08.3/cmake/modules/COPYING-CMAKE-SCRIPTS 1970-01-01 
01:00:00.000000000 +0100
+++ new/kolourpaint-15.12.0/cmake/modules/COPYING-CMAKE-SCRIPTS 2015-12-06 
07:06:20.000000000 +0100
@@ -0,0 +1,22 @@
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products 
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/cmake/modules/FindKSane.cmake 
new/kolourpaint-15.12.0/cmake/modules/FindKSane.cmake
--- old/kolourpaint-15.08.3/cmake/modules/FindKSane.cmake       1970-01-01 
01:00:00.000000000 +0100
+++ new/kolourpaint-15.12.0/cmake/modules/FindKSane.cmake       2015-12-06 
07:06:20.000000000 +0100
@@ -0,0 +1,44 @@
+# cmake macro to test if libksane is installed
+#
+#  KSANE_FOUND - system has KSANE libs
+#  KSANE_INCLUDE_DIR - the KSANE include directory
+#  KSANE_LIBRARY - The library needed to use KSANE
+
+if (KSANE_INCLUDE_DIR)
+  # Already in cache, be silent
+  set(KSANE_FIND_QUIETLY TRUE)
+endif (KSANE_INCLUDE_DIR)
+
+FIND_FILE(KSANE_LOCAL_FOUND libksane/version.h.cmake 
${CMAKE_SOURCE_DIR}/libs/libksane NO_DEFAULT_PATH)
+
+if (KSANE_LOCAL_FOUND)
+    set(KSANE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/libs/libksane)
+    set(KSANE_DEFINITIONS -I${KSANE_INCLUDE_DIR})
+    set(KSANE_LIBRARY ksane)
+    message(STATUS "Found KSane library in local sub-folder: ${KSANE_LIBRARY}")
+    set(KSANE_FOUND TRUE)
+    MARK_AS_ADVANCED(KSANE_INCLUDE_DIR KSANE_LIBRARY)
+else (KSANE_LOCAL_FOUND)
+
+    FIND_PATH(KSANE_INCLUDE_DIR libksane/ksane.h ${KDE4_INCLUDES})
+
+    FIND_LIBRARY(KSANE_LIBRARY ksane PATH ${KDE4_LIB_DIR})
+
+    if (KSANE_INCLUDE_DIR AND KSANE_LIBRARY)
+        set(KSANE_FOUND TRUE)
+    else (KSANE_INCLUDE_DIR AND KSANE_LIBRARY)
+        set(KSANE_FOUND FALSE)
+    endif (KSANE_INCLUDE_DIR AND KSANE_LIBRARY)
+
+    if (KSANE_FOUND)
+        if (NOT KSane_FIND_QUIETLY)
+            message(STATUS "Found libksane: ${KSANE_LIBRARY}")
+        endif (NOT KSane_FIND_QUIETLY)
+    else (KSANE_FOUND)
+        if (KSane_FIND_REQUIRED)
+            message(FATAL_ERROR "Could not find libksane")
+        endif (KSane_FIND_REQUIRED)
+    endif (KSANE_FOUND)
+endif (KSANE_LOCAL_FOUND)
+
+MARK_AS_ADVANCED(KSANE_INCLUDE_DIR KSANE_LIBRARY)
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/doc/index.docbook 
new/kolourpaint-15.12.0/doc/index.docbook
--- old/kolourpaint-15.08.3/doc/index.docbook   2015-11-04 11:39:20.000000000 
+0100
+++ new/kolourpaint-15.12.0/doc/index.docbook   2015-12-06 07:06:20.000000000 
+0100
@@ -754,6 +754,9 @@
 <para>You can apply Image Effects to a selection - see the <link
 linkend="image-effects-section">Image Effects</link> section for more
 information.</para>
+
+<para>It is possible to save selection to file using the <guimenuitem>Copy to 
File...</guimenuitem> item from the selection context menu or 
<menuchoice><guimenu>Edit</guimenu><guimenuitem>Copy to 
File...</guimenuitem></menuchoice> item from the main menu.
+</para>
 </sect1>
 
 <sect1 id="tool-spraycan">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/kolourpaint.desktop 
new/kolourpaint-15.12.0/kolourpaint.desktop
--- old/kolourpaint-15.08.3/kolourpaint.desktop 2015-11-04 11:39:20.000000000 
+0100
+++ new/kolourpaint-15.12.0/kolourpaint.desktop 2015-12-06 07:06:20.000000000 
+0100
@@ -150,6 +150,27 @@
 GenericName[zh_CN]=绘图程序
 GenericName[zh_HK]=繪圖程式
 GenericName[zh_TW]=繪圖程式
+
+Comment=An easy-to-use paint program
+Comment[ca]=Un programa de pintura senzill d'usar
+Comment[ca@valencia]=Un programa de pintura senzill d'usar
+Comment[de]=Ein einfach zu benutzendes Mal- und Zeichenprogramm
+Comment[el]=Ένα εύκολο στη χρήση πρόγραμμα ζωγραφικής
+Comment[en_GB]=An easy-to-use paint program
+Comment[es]=Un programa para pintar fácil de usar
+Comment[fi]=Helppokäyttöinen piirto-ohjelma
+Comment[it]=Un programma di disegno semplice da usare
+Comment[ko]=사용하기 쉬운 그리기 프로그램
+Comment[nl]=Een gemakkelijk te gebruiken tekenprogramma
+Comment[pl]=Łatwy w użyciu program do malowania
+Comment[pt]=Um programa de pintura simples de usar
+Comment[pt_BR]=Um programa de desenho fácil de usar
+Comment[sk]=Jednoduchý maľovací program
+Comment[sl]=Enostaven program za risanje
+Comment[sv]=Ett lättanvänt ritprogram
+Comment[uk]=Проста у користуванні програма для малювання
+Comment[x-test]=xxAn easy-to-use paint programxx
+
 Icon=kolourpaint
 
 Type=Application
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/mainWindow/kpMainWindow.h 
new/kolourpaint-15.12.0/mainWindow/kpMainWindow.h
--- old/kolourpaint-15.08.3/mainWindow/kpMainWindow.h   2015-11-04 
11:39:20.000000000 +0100
+++ new/kolourpaint-15.12.0/mainWindow/kpMainWindow.h   2015-12-06 
07:06:20.000000000 +0100
@@ -342,8 +342,10 @@
     void slotOpen ();
     void slotOpenRecent (const KUrl &url);
 
+#if HAVE_KSANE
     void slotScan ();
     void slotScanned (const QImage &image, int);
+#endif // HAVE_KSANE
 
     void slotScreenshot();
     void slotMakeScreenshot();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/mainWindow/kpMainWindowPrivate.h 
new/kolourpaint-15.12.0/mainWindow/kpMainWindowPrivate.h
--- old/kolourpaint-15.08.3/mainWindow/kpMainWindowPrivate.h    2015-11-04 
11:39:20.000000000 +0100
+++ new/kolourpaint-15.12.0/mainWindow/kpMainWindowPrivate.h    2015-12-06 
07:06:20.000000000 +0100
@@ -49,6 +49,8 @@
 class kpToolSelectionEnvironment;
 class kpTransformDialogEnvironment;
 
+class SaneDialog;
+
 
 struct kpMainWindowPrivate
 {
@@ -308,7 +310,7 @@
           *actionMail,
           *actionClose, *actionQuit;
 
-  KScanDialog *scanDialog;
+  SaneDialog *scanDialog;
 
   KUrl lastExportURL;
   kpDocumentSaveOptions lastExportSaveOptions;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/mainWindow/kpMainWindow_File.cpp 
new/kolourpaint-15.12.0/mainWindow/kpMainWindow_File.cpp
--- old/kolourpaint-15.08.3/mainWindow/kpMainWindow_File.cpp    2015-11-04 
11:39:20.000000000 +0100
+++ new/kolourpaint-15.12.0/mainWindow/kpMainWindow_File.cpp    2015-12-06 
07:06:20.000000000 +0100
@@ -60,7 +60,6 @@
 #include <klocale.h>
 #include <kmessagebox.h>
 #include <krecentfilesaction.h>
-#include <kscan.h>
 #include <kstandardshortcut.h>
 #include <kstandardaction.h>
 #include <ktoolinvocation.h>
@@ -79,6 +78,10 @@
 #include <kpView.h>
 #include <kpViewManager.h>
 
+#if HAVE_KSANE
+#include "../scan/sanedialog.h"
+#endif // HAVE_KSANE
+
 // private
 void kpMainWindow::setupFileMenuActions ()
 {
@@ -107,7 +110,11 @@
     d->actionScan = ac->addAction("file_scan");
     d->actionScan->setText(i18n ("Scan..."));
     d->actionScan->setIcon(SmallIcon("scanner"));
+#if HAVE_KSANE
     connect(d->actionScan, SIGNAL(triggered(bool)), SLOT(slotScan()));
+#else
+    d->actionScan->setEnabled(false);
+#endif // HAVE_KSANE
 
     d->actionScreenshot = ac->addAction("file_screenshot");
     d->actionScreenshot->setText(i18n("Acquire Screenshot"));
@@ -499,6 +506,7 @@
 
 //---------------------------------------------------------------------
 
+#if HAVE_KSANE
 // private slot
 void kpMainWindow::slotScan ()
 {
@@ -510,29 +518,15 @@
 
     if (!d->scanDialog)
     {
-        // Create scan dialog by looking for plugin.
-        // [takes about 500ms on 350Mhz]
-        d->scanDialog = KScanDialog::getScanDialog (this);
+        // Create scan dialog
+        d->scanDialog = new SaneDialog(this);
 
         // No scanning support (kdegraphics/libkscan) installed?
-        // [Remove $KDEDIR/share/servicetypes/kscan.desktop and
-        //         $KDEDIR/share/services/scanservice.desktop to simulate this]
         if (!d->scanDialog)
         {
-            // Instead, we could try to create the scan dialog in the ctor
-            // and just disable the action in the first place, removing
-            // the need for this dialog.
-            //
-            // But this increases startup time and is a bit risky e.g. if
-            // the scan support hangs, KolourPaint would not be able to be
-            // started at all.
-            //
-            // Also, disabling the action is bad because the scan support
-            // can be installed while KolourPaint is still running.
             KMessageBox::sorry (this,
-                         i18n ("No plugin was found which provides the scanner 
dialog.\n"
-                               "This usually means that the package providing 
the ksaneplugin is not installed."),
-                         i18n ("No Scanning Support"));
+                                i18n("Failed to open scanning dialog."),
+                                i18nc("@title:window", "Scanning Failed"));
             return;
         }
 
@@ -636,6 +630,7 @@
     // Send document to current or new window.
     setDocumentChoosingWindow (doc);
 }
+#endif // HAVE_KSANE
 
 //---------------------------------------------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/scan/sanedialog.cpp 
new/kolourpaint-15.12.0/scan/sanedialog.cpp
--- old/kolourpaint-15.08.3/scan/sanedialog.cpp 1970-01-01 01:00:00.000000000 
+0100
+++ new/kolourpaint-15.12.0/scan/sanedialog.cpp 2015-12-06 07:06:20.000000000 
+0100
@@ -0,0 +1,118 @@
+/* ============================================================
+ *
+ * Date        : 2008-04-17
+ * Description : Sane plugin interface for KDE
+ *
+ * Copyright (C) 2008 by Kare Sars <kare dot sars at iki dot fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) version 3, or any
+ * later version accepted by the membership of KDE e.V. (or its
+ * successor approved by the membership of KDE e.V.), which shall
+ * act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ * ============================================================ */
+
+#include "sanedialog.h"
+
+#include <KLocale>
+#include <KDebug>
+#include <KMessageBox>
+#include <KSharedConfig>
+
+SaneDialog::SaneDialog(QWidget *parent)
+    : KPageDialog(parent)
+{
+    setFaceType((KPageDialog::FaceType)Plain);
+    setWindowTitle(i18nc("@title:window", "Acquire Image"));
+
+    setButtons(KDialog::Close);
+    setDefaultButton(KDialog::Close);
+//     
buttonBox()->setStandardButtons((QDialogButtonBox::StandardButtons)Close);
+//     buttonBox()->button(QDialogButtonBox::Close)->setDefault(true);
+
+
+    m_ksanew = new KSaneIface::KSaneWidget(this);
+    addPage(m_ksanew, QString());
+
+    connect(m_ksanew, SIGNAL(imageReady(QByteArray &, int, int, int, int)),
+            this, SLOT(imageReady(QByteArray &, int, int, int, int)));
+
+    m_openDev = QString();
+}
+
+bool SaneDialog::setup()
+{
+    if(!m_ksanew) {
+        // new failed
+        return false;
+    }
+    if (!m_openDev.isEmpty()) {
+        return true;
+    }
+    // need to select a scanner
+    m_openDev = m_ksanew->selectDevice(0);
+    if (m_openDev.isEmpty()) {
+       // either no scanner was found or then cancel was pressed.
+        return false;
+    }
+    if (m_ksanew->openDevice(m_openDev) == false) {
+        // could not open the scanner
+        KMessageBox::sorry(0, i18n("Opening the selected scanner failed."));
+        m_openDev = QString();
+        return false;
+    }
+
+    // restore scan dialog size and all options for the selected device if 
available
+    KSharedConfigPtr configPtr = KSharedConfig::openConfig("scannersettings");
+    restoreDialogSize(KConfigGroup(configPtr, "ScanDialog"));
+    QString groupName = m_openDev;
+    if (configPtr->hasGroup(groupName)) {
+        KConfigGroup group(configPtr, groupName);
+        QStringList keys = group.keyList();
+        for (int i = 0; i < keys.count(); i++)
+            m_ksanew->setOptVal(keys[i], group.readEntry(keys[i]));
+    }
+
+   return true;
+}
+
+SaneDialog::~SaneDialog()
+{
+    if (m_ksanew && !m_openDev.isEmpty()) {
+        // save scan dialog size and all options for the selected device if 
available
+        KSharedConfigPtr configPtr = 
KSharedConfig::openConfig("scannersettings");
+        KConfigGroup group(configPtr, "ScanDialog");
+        saveDialogSize(group, KConfigGroup::Persistent);
+        group = configPtr->group(m_openDev);
+        QMap<QString, QString> opts;
+        m_ksanew->getOptVals(opts);
+        QMap<QString, QString>::const_iterator i = opts.constBegin();
+        for (; i != opts.constEnd(); ++i)
+            group.writeEntry(i.key(), i.value(), KConfigGroup::Persistent);
+    }
+}
+
+void SaneDialog::imageReady(QByteArray &data, int w, int h, int bpl, int f)
+{
+    /* copy the image data into img */
+    QImage img = m_ksanew->toQImage(data, w, h, bpl, 
(KSaneIface::KSaneWidget::ImageFormat)f);
+    emit finalImage(img, nextId());
+}
+
+int SaneDialog::nextId()
+{
+    return ++m_currentId;
+}
+
+#include "sanedialog.moc"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kolourpaint-15.08.3/scan/sanedialog.h 
new/kolourpaint-15.12.0/scan/sanedialog.h
--- old/kolourpaint-15.08.3/scan/sanedialog.h   1970-01-01 01:00:00.000000000 
+0100
+++ new/kolourpaint-15.12.0/scan/sanedialog.h   2015-12-06 07:06:20.000000000 
+0100
@@ -0,0 +1,67 @@
+/* ============================================================
+ *
+ * Date        : 2008-04-17
+ * Description : Sane plugin interface for KDE
+ *
+ * Copyright (C) 2008 by Kare Sars <kare dot sars at iki dot fi>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) version 3, or any
+ * later version accepted by the membership of KDE e.V. (or its
+ * successor approved by the membership of KDE e.V.), which shall
+ * act as a proxy defined in Section 6 of version 3 of the license.
+ *
+ * This library 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program.  If not, see 
<http://www.gnu.org/licenses/>.
+ *
+ * ============================================================ */
+
+#ifndef SANEDIALOG_H
+#define SANEDIALOG_H
+
+#include <libksane/ksane.h>
+
+#include <kpagedialog.h>
+
+class SaneDialog : public KPageDialog
+{
+    Q_OBJECT
+
+public:
+    explicit SaneDialog(QWidget *parent = 0);
+    ~SaneDialog();
+
+    bool setup();
+
+Q_SIGNALS:
+    /**
+     * Informs you that an image has scanned. @p id is the same as in the
+     * @p preview() signal, if this image had been previewed before.
+     *
+     * Note, that those id's may not be properly implemented in the current
+     * libkscan.
+     * @param img the image
+     * @param id the image's id
+     */
+    void finalImage(const QImage &img, int id);
+
+protected Q_SLOTS:
+    void imageReady(QByteArray &, int, int, int, int);
+
+private:
+    int nextId();
+
+    KSaneIface::KSaneWidget *m_ksanew;
+    QString m_openDev;
+
+    int m_currentId;
+};
+
+#endif // SANEDIALOG_H


Reply via email to