[Digikam-devel] [Bug 135048] easy comparing similar pictures using a lighttable

Gilles Caulier caulier.gilles at gmail.com
Thu May 3 16:21:23 BST 2007


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=135048         




------- Additional Comments From caulier.gilles gmail com  2007-05-03 17:21 -------
SVN commit 660737 by cgilles:

digiKam from trunk : first implementation of digiKam Light Table tool. It not yet suitable as well because the tool do not provide yet a comparison method between 2 images.

The Light Table is a pictures container witch can handle items from everywhere on Albums library. Just use the Album Gui pop-up menu to insert an item in Light Table. The Light table has a thumbar on the right. when you click on one item, it's displayed on central view, where you can process zooming and panning.

http://digikam3rdparty.free.fr/Screenshots/lighttable_v2.png

Gerhard, this implementation is in _alpha_ stage, and must be _disable_ for next 0.9.2-beta1 release. Paco and me we working on actually. To disable it before to release digiKam 0.9.2-beta1, please just comment the line 26 from digikam/albumiconview.cpp. Thanks in advance

CCBUG: 135048
CCMAIL: digikam-devel kde org 
CCMAIL: francisco.jct gmail com
CCMAIL: gerhard kulzer net

 M  +76 -7     digikam/albumiconview.cpp  
 M  +8 -6      digikam/albumiconview.h  
 M  +18 -8     utilities/lighttable/Makefile.am  
 AM            utilities/lighttable/lighttableview.cpp   [License: GPL]
 AM            utilities/lighttable/lighttableview.h   [License: GPL]
 AM            utilities/lighttable/lighttablewindow.cpp   [License: GPL]
 AM            utilities/lighttable/lighttablewindow.h   [License: GPL]
 A             utilities/lighttable/lighttablewindowui.rc  


--- trunk/extragear/graphics/digikam/digikam/albumiconview.cpp #660736:660737
 @ -1,12 +1,13  @
 /* ============================================================
- * Authors: Renchi Raju <renchi pooh tam uiuc edu>
- *          Caulier Gilles 
- *          Marcel Wiesweg <marcel.wiesweg gmx de>
- * Date   : 2002-16-10
+ * Authors     : Renchi Raju 
+ *               Caulier Gilles 
+ *               Marcel Wiesweg 
+ * Date        : 2002-16-10
  * Description : album icon view 
  * 
- * Copyright 2002-2005 by Renchi Raju by Gilles Caulier <caulier dot gilles at gmail dot com>
- * Copyright 2006-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> and Marcel Wiesweg
+ * Copyright 2002-2005 by Renchi Raju <renchi pooh tam uiuc edu>
+ * Copyright 2002-2007 by Gilles Caulier <caulier dot gilles at gmail dot com>
+ * Copyright 2006-2007 by Marcel Wiesweg <marcel.wiesweg gmx de>
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -21,6 +22,9  @
  * 
  * ============================================================ */
 
+// Uncomment this line to enable Light Table tool.
+#define ENABLE_LIGHTTABLE 1
+
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #endif
 @ -120,6 +124,7  @
 #include "albumiconitem.h"
 #include "albumicongroupitem.h"
 #include "loadingcacheinterface.h"
+#include "lighttablewindow.h"
 #include "statusprogressbar.h"
 #include "metadatahub.h"
 #include "albumiconview.h"
 @ -526,6 +531,10  @
     popmenu.insertItem(SmallIcon("editimage"), i18n("Edit..."), 10);
     popmenu.insertItem(i18n("Open With"), &openWithMenu, 11);
 
+#ifdef ENABLE_LIGHTTABLE
+    popmenu.insertItem(SmallIcon("idea"), i18n("Insert to Light Table"), 19);
+#endif
+
     // Merge in the KIPI plugins actions ----------------------------
 
     KIPI::PluginLoader* kipiPluginLoader      = KIPI::PluginLoader::instance();
 @ -674,6 +683,12  @
           break;
       }
   
+      case 19: 
+      {
+          slotInsertToLightTable(iconItem);
+          break;
+      }
+
       default:
           break;
     }
 @ -931,7 +946,7  @
         setCurrentItem(item);
 }
 
-void AlbumIconView::slotDisplayItem(AlbumIconItem *item )
+void AlbumIconView::slotDisplayItem(AlbumIconItem *item)
 {
     if (!item) return;
 
 @ -1015,6 +1030,60  @
     imview->setFocus();
 }
 
+void AlbumIconView::slotInsertToLightTable(AlbumIconItem *item)
+{
+    AlbumSettings *settings = AlbumSettings::instance();
+
+    if (!settings) return;
+
+    QString imagefilter = settings->getImageFileFilter().lower() +
+                          settings->getImageFileFilter().upper();
+
+    if (KDcrawIface::DcrawBinary::instance()->versionIsRight())
+    {
+        // add raw files only if dcraw is available
+        imagefilter += settings->getRawFileFilter().lower() +
+                       settings->getRawFileFilter().upper();
+    }
+
+    // Run Light Table with all selected image files in the current Album.
+
+    ImageInfoList imageInfoList;
+    ImageInfo *currentImageInfo = 0;
+
+    for (IconItem *it = firstItem() ; it ; it = it->nextItem())
+    {
+        if ((*it).isSelected())
+        {
+            AlbumIconItem *iconItem = static_cast<AlbumIconItem *>(it);
+            QString fileExtension = iconItem->imageInfo()->kurl().fileName().section( '.', -1 );
+    
+            if ( imagefilter.find(fileExtension) != -1 )
+            {
+                ImageInfo *info = new ImageInfo(*iconItem->imageInfo());
+                info->setViewItem(0);
+                imageInfoList.append(info);
+                if (iconItem == item)
+                    currentImageInfo = info;
+            }
+        }
+    }
+
+    LightTableWindow *ltview = LightTableWindow::lightTableWindow();
+
+    ltview->disconnect(this);
+
+    // TODO: Added slots connection here if necessary.
+
+    ltview->loadImageInfos(imageInfoList, currentImageInfo);
+
+    if (ltview->isHidden())
+        ltview->show();
+
+    ltview->raise();
+    ltview->setFocus();
+}
+
 // ------------------------------------------------------------------------------
 
 AlbumIconItem* AlbumIconView::firstSelectedItem() const
--- trunk/extragear/graphics/digikam/digikam/albumiconview.h #660736:660737
 @ -1,12 +1,13  @
 /* ============================================================
- * Authors: Renchi Raju <renchi pooh tam uiuc edu>
- *          Caulier Gilles 
- *          Marcel Wiesweg <marcel.wiesweg gmx de>
- * Date   : 2002-16-10
+ * Authors     : Renchi Raju 
+ *               Caulier Gilles 
+ *               Marcel Wiesweg 
+ * Date        : 2002-16-10
  * Description : album icon view 
  * 
- * Copyright 2002-2005 by Renchi Raju by Gilles Caulier <caulier dot gilles at gmail dot com>
- * Copyright 2006-2007 by Gilles Caulier <caulier dot gilles at gmail dot com> and Marcel Wiesweg
+ * Copyright 2002-2005 by Renchi Raju <renchi pooh tam uiuc edu>
+ * Copyright 2002-2007 by Gilles Caulier <caulier dot gilles at gmail dot com>
+ * Copyright 2006-2007 by Marcel Wiesweg <marcel.wiesweg gmx de>
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
 @ -132,6 +133,7  @
     void slotDeleteSelectedItems(bool deletePermanently = false);
     void slotDeleteSelectedItemsDirectly(bool useTrash);
     void slotDisplayItem(AlbumIconItem *item=0);
+    void slotInsertToLightTable(AlbumIconItem *item=0);
     void slotAlbumModified();
     void slotSetAlbumThumbnail(AlbumIconItem *iconItem);
     void slotCopy();
--- trunk/extragear/graphics/digikam/utilities/lighttable/Makefile.am #660736:660737
 @ -1,17 +1,27  @
 METASOURCES = AUTO
 
 INCLUDES = -I$(top_srcdir)/digikam/digikam \
-	   -I$(top_srcdir)/digikam/libs/dimg \
-	   -I$(top_srcdir)/digikam/libs/thumbbar \
-	   -I$(top_srcdir)/digikam/libs/dmetadata \
-	   -I$(top_srcdir)/digikam/libs/themeengine \
-	   -I$(top_srcdir)/digikam/libs/threadimageio \
-	   $(all_includes)
+	       -I$(top_srcdir)/digikam/libs/widgets/common \
+	       -I$(top_srcdir)/digikam/libs/dialogs \
+	       -I$(top_srcdir)/digikam/libs/thumbbar \
+	       -I$(top_srcdir)/digikam/libs/dimg \
+	       -I$(top_srcdir)/digikam/libs/themeengine \
+	       -I$(top_srcdir)/digikam/libs/dmetadata \
+	       -I$(top_srcdir)/digikam/libs/dimg/filters \
+	       -I$(top_srcdir)/digikam/libs/imageproperties \
+	       -I$(top_srcdir)/digikam/libs/threadimageio \
+	       -I$(top_srcdir)/digikam/utilities/setup \
+	       -I$(top_srcdir)/digikam/utilities/slideshow \
+	       -I$(top_srcdir)/digikam/utilities/imageeditor/canvas \
+	       -I$(top_srcdir)/digikam/utilities/imageeditor/tools \
+	       -I$(top_builddir)/digikam/libs/dialogs \
+	       $(LIBKEXIV2_CFLAGS) $(LIBKDCRAW_CFLAGS) $(all_includes) 
 
 noinst_LTLIBRARIES = liblighttable.la 
 
-liblighttable_la_SOURCES = lighttablebar.cpp  
+liblighttable_la_SOURCES = lighttablebar.cpp lighttablewindow.cpp lighttableview.cpp
 
 liblighttable_la_LDFLAGS = $(all_libraries) $(KDE_RPATH)
 
-
+rcdir = $(kde_datadir)/digikam
+rc_DATA = lighttablewindowui.rc
** trunk/extragear/graphics/digikam/utilities/lighttable/lighttableview.cpp #property svn:eol-style
   + native
** trunk/extragear/graphics/digikam/utilities/lighttable/lighttableview.h #property svn:eol-style
   + native
** trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.cpp #property svn:eol-style
   + native
** trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.h #property svn:eol-style
   + native



More information about the Digikam-devel mailing list