Bug 131632

Summary: Add keyboard shortcut for better captioning workflow
Product: [Applications] digikam Reporter: Brad Templeton <kdebug>
Component: Usability-KeyboardAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: normal CC: althio.forum, caulier.gilles, gsking1, jgoerzen, jonrysh, julien.t43+kde, lure, mikmach, pave, t.tichy, terri.bugs, Thomas.Hutterer, wstephenson
Priority: NOR    
Version: 0.8.2   
Target Milestone: ---   
Platform: Debian testing   
OS: Linux   
Latest Commit: Version Fixed In: 4.4.0

Description Brad Templeton 2006-08-01 06:13:18 UTC
Version:           0.8.2-2 (using KDE KDE 3.5.4)
Installed from:    Debian testing/unstable Packages
OS:                Linux

I seek a faster workflow for captioning photographs.  In my workflow, I first identify the potential "winners" (which can be done in digikam with the new shortcuts for setting ratings.)   Then I review the winners to remove near-duplicates and in general do a second pass.

After this is done, it's time to caption, and I want to do it fast.  Without using the mouse.   Ideally I want to see a picture at decent resolution, be in the box to type a caption, and after hitting return or some other easy key, I'm on to the next photo to caption.

Currently you can do this with the tag/comment editor (F3) which puts you in place ready to write comments.  However, this only presents a thumbnail.  Expanding the window does not change the size of the image for captioning.   So making it so changing this window size (and remembering the size) would allow better captioning.   Also nice if could set my own shortcut choice (other than alt-n) to store caption and move to next image.  (Page up and page down do not work here.)

Alternately, the full image editor view could be set to also display captions, tags and rating along the bottom, and allow them to be typed and a key pressed (such as pgdn currently) would move to the next image to caption.

-------------

Adding suggestions, for the 2nd stage of the workflow, which is review of choices, what would be ideal would be a full sized view with a single row of thumbnails showing the current picture and its neighbours, allowing easy detection of duplicates.     Today it is typical for serious photograhers to take several shots of the same interesting image.  Some of those will make it to the winner's circle, and then they must be pruned down to the single best.  In this case seeing both the big view (to judge) and the thumbs (to know what to look at for comparison) is necessary. 

Even better would be a dual view which shows two pictures as big as possible and then allows selection of which will be the winner.
Comment 1 Marcel Wiesweg 2006-08-01 23:29:34 UTC
This is related to bug #114465.
I'm really in favor of better tagging possibilities, but definitely post-0.9.0.
(#131601 might be related as well, for a better preview)
Comment 2 caulier.gilles 2006-12-22 13:13:37 UTC
Brad, 

all points reported is now fixed in 0.9.0 release witch use sidebar everywhere (album gui and image editor) and provide a fast preview mode in album gui witch can display a large preview of picture during captionning... excepted the point about to always have the keyboard focus on Comments widget from Comments & Tags area to have a better captionning issue.

I have patch on my computer to commit about focus stuff... 

I tag this file like duplicate of #131743

Gilles caulier

Gilles

*** This bug has been marked as a duplicate of 131743 ***
Comment 3 caulier.gilles 2007-01-10 09:09:04 UTC
SVN commit 621996 by cgilles:

digikam from trunk : improve Comments edit widget Focus rule : this one is only set on when the Comments & Tab side bar is visible _and_ selected, else it is off.
CCBUGS: 131743, 131632

 M  +8 -3      imageproperties/imagedescedittab.cpp  
 M  +1 -1      imageproperties/imagedescedittab.h  
 M  +19 -11    imageproperties/imagepropertiessidebardb.cpp  
 M  +5 -3      imageproperties/imagepropertiessidebardb.h  
 M  +25 -23    widgets/common/sidebar.cpp  
 M  +11 -2     widgets/common/sidebar.h  


--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #621995:621996
@@ -251,7 +251,7 @@
     d->dateTimeEdit->installEventFilter(this);
     d->ratingWidget->installEventFilter(this);
     d->tagsView->installEventFilter(this);
-    setFocusToComments();
+    setFocusToComments(true);
     updateRecentTags();
 
     // Connect to album manager -----------------------------
@@ -553,9 +553,14 @@
     d->revertBtn->setEnabled(true);
 }
 
-void ImageDescEditTab::setFocusToComments()
+void ImageDescEditTab::setFocusToComments(bool f)
 {
-    d->commentsEdit->setFocus();
+    DDebug() << "Comments focus = " << f << endl;
+
+    if (f)
+        d->commentsEdit->setFocus();
+    else
+        d->commentsEdit->clearFocus();
 }
 
 void ImageDescEditTab::assignRating(int rating)
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.h #621995:621996
@@ -57,7 +57,7 @@
     void assignRating(int rating);
     void setItem(ImageInfo *info=0);
     void populateTags();
-    void setFocusToComments();
+    void setFocusToComments(bool f);
 
 protected:
 
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagepropertiessidebardb.cpp #621995:621996
@@ -1,10 +1,12 @@
 /* ============================================================
- * Author: Caulier Gilles <caulier dot gilles at kdemail dot net>
- * Date  : 2004-11-17
+ * Authors: Caulier Gilles <caulier dot gilles at kdemail dot net>
+ *         Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
+ * Date   : 2004-11-17
  * Description : image properties side bar using data from 
  *               digiKam database.
  *
  * Copyright 2004-2006 by Gilles Caulier
+ * Copyright 2007 by Gilles Caulier and Marcel Wiesweg
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -94,6 +96,9 @@
     connectTab(m_colorTab);
     connectTab(d->desceditTab);
 
+    connect(this, SIGNAL(signalViewChanged()),
+            this, SLOT(slotSetFocus()));
+
     connect(this, SIGNAL(signalChangedTab(QWidget*)),
             this, SLOT(slotChangedTab(QWidget*)));
 
@@ -177,9 +182,7 @@
 
     NavigateBarTab *navtab = dynamic_cast<NavigateBarTab *>(getActiveTab());
     if (navtab)
-    {
         navtab->setNavigateBarState(d->hasPrevious, d->hasNext);
-    }
 }
 
 void ImagePropertiesSideBarDB::slotChangedTab(QWidget* tab)
@@ -255,16 +258,22 @@
         navtab->setNavigateBarFileName(m_currentURL.filename());
     }
 
-    if (tab == d->desceditTab)
-    {
-        // See B.K.O #131632 and #131743 : always give focus to Comments widget 
-        // when we toogle between tab and when we change current item.
-        d->desceditTab->setFocusToComments();
-    }
+    slotSetFocus();
 
     unsetCursor();
 }
 
+void ImagePropertiesSideBarDB::slotSetFocus()
+{
+    // See B.K.O #131632 and #131743 : always give focus to Comments widget 
+    // when we toogle between tab and when we change current item.
+
+    if (getActiveTab() == d->desceditTab && isExpanded())
+        d->desceditTab->setFocusToComments(true);
+    else
+        d->desceditTab->setFocusToComments(false);
+}
+
 void ImagePropertiesSideBarDB::slotFileMetadataChanged(const KURL &url)
 {
     if (url == m_currentURL)
@@ -321,4 +330,3 @@
 }
 
 }  // NameSpace Digikam
-
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagepropertiessidebardb.h #621995:621996
@@ -1,10 +1,12 @@
 /* ============================================================
- * Author: Caulier Gilles <caulier dot gilles at kdemail dot net>
- * Date  : 2004-11-17
+ * Authors: Caulier Gilles <caulier dot gilles at kdemail dot net>
+ *         Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
+ * Date   : 2004-11-17
  * Description : image properties side bar using data from 
  *               digiKam database.
  *
  * Copyright 2004-2006 by Gilles Caulier
+ * Copyright 2007 by Gilles Caulier and Marcel Wiesweg
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -85,6 +87,7 @@
 
 private slots:
 
+    void slotSetFocus();
     void slotChangedTab(QWidget* tab);
     void slotThemeChanged();
     void slotFileMetadataChanged(const KURL &url);
@@ -98,7 +101,6 @@
 private:
 
     ImagePropertiesSideBarDBPriv* d;
-
 };
 
 }  // NameSpace Digikam
--- trunk/extragear/graphics/digikam/libs/widgets/common/sidebar.cpp #621995:621996
@@ -5,7 +5,7 @@
  * Description : a widget to manage sidebar in gui.
  *
  * Copyright 2005-2006 by Joern Ahrens
- * Copyright 2006 by Gilles Caulier  
+ * Copyright 2006-2007 by Gilles Caulier  
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -39,6 +39,7 @@
 // Local includes.
 
 #include "sidebar.h"
+#include "sidebar.moc"
 
 namespace Digikam
 {
@@ -56,20 +57,20 @@
         minimized = false;
     }
 
-    bool          minimizedDefault;
-    bool          minimized;
-    bool          isMinimized;         
+    bool           minimizedDefault;
+    bool           minimized;
+    bool           isMinimized;      // Backup of minimized status (used with Fullscreen)
 
-    int           tabs;
-    int           activeTab;
-    int           minSize;
-    int           maxSize;
+    int            tabs;
+    int            activeTab;
+    int            minSize;
+    int            maxSize;
         
-    QWidgetStack *stack;
-    QSplitter    *splitter;
-    QSize         bigSize;
+    QWidgetStack  *stack;
+    QSplitter     *splitter;
+    QSize          bigSize;
 
-    Sidebar::Side side;
+    Sidebar::Side  side;
 };
 
 Sidebar::Sidebar(QWidget *parent, const char *name, Side side, bool minimizedDefault)
@@ -77,7 +78,7 @@
 {
     d = new SidebarPriv;
     d->minimizedDefault = minimizedDefault;
-    d->side = side;
+    d->side             = side;
 }
 
 Sidebar::~Sidebar()
@@ -131,7 +132,6 @@
 {
     KConfig *config = kapp->config();
     config->setGroup(QString("%1").arg(name()));
-    
     config->writeEntry("ActiveTab", d->activeTab);
     config->writeEntry("Minimized", d->minimized);
     config->sync();
@@ -232,21 +232,19 @@
 void Sidebar::shrink()
 {
     d->minimized = true;
-    d->bigSize = size();
-    d->minSize = minimumWidth();
-    d->maxSize = maximumWidth();
+    d->bigSize   = size();
+    d->minSize   = minimumWidth();
+    d->maxSize   = maximumWidth();
             
     d->stack->hide();
 
     KMultiTabBarTab* tab = tabs()->first();
     if (tab)
-    {
         setFixedWidth(tab->width());
-    }
     else
-    {
         setFixedWidth(width());
-    }
+
+    emit signalViewChanged();
 }
 
 void Sidebar::expand()
@@ -256,8 +254,12 @@
     resize(d->bigSize);
     setMinimumWidth(d->minSize);
     setMaximumWidth(d->maxSize);
+    emit signalViewChanged();
 }
 
+bool Sidebar::isExpanded()
+{
+    return !d->minimized; 
+}
+
 }  // namespace Digikam
-
-#include "sidebar.moc"
--- trunk/extragear/graphics/digikam/libs/widgets/common/sidebar.h #621995:621996
@@ -5,7 +5,7 @@
  * Description : a widget to manage sidebar in gui.
  *
  * Copyright 2005-2006 by Joern Ahrens
- * Copyright 2006 by Gilles Caulier  
+ * Copyright 2006-2007 by Gilles Caulier  
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -129,6 +129,11 @@
      */ 
     void restore();
 
+    /**
+     * return the visible status of current sidebar tab.
+     */ 
+    bool isExpanded();
+
 private:
     
     
@@ -151,10 +156,14 @@
      */
     void signalChangedTab(QWidget *w);
 
+    /**
+     * is emitted, when tab is shrink or expanded
+     */
+    void signalViewChanged();
+
 private:
     
     SidebarPriv* d;
-
 };
 
 }  // namespace Digikam
Comment 4 caulier.gilles 2007-01-31 16:11:19 UTC
SVN commit 628812 by cgilles:

digikam from trunk : forcing focus to Comments Edit Widget from Comments & Tags sidebar is not the right solution. Focus stuff  is a complicated problem witch must be study indeep.

In fact the folder view and album icon view take the focus with the mouse. The previous implementation cannot work with that. Also, alots of menu shorcuts are broken if we force Comments edit widget to take focus.

My viewpoint is to implement a shortcut to toggle gui to captionning mode. It a better/simple solution. Please give me your viewpoint.

CCBUGS: 131632, 131743

BUG: 140412

 M  +0 -9      imagedescedittab.cpp  
 M  +0 -1      imagedescedittab.h  
 M  +0 -16     imagepropertiessidebardb.cpp  
 M  +0 -1      imagepropertiessidebardb.h  


--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #628811:628812
@@ -265,7 +265,6 @@
     d->dateTimeEdit->installEventFilter(this);
     d->ratingWidget->installEventFilter(this);
     d->tagsView->installEventFilter(this);
-    setFocusToComments(true);
     updateRecentTags();
 
     // Connect to album manager -----------------------------
@@ -588,14 +587,6 @@
     d->revertBtn->setEnabled(true);
 }
 
-void ImageDescEditTab::setFocusToComments(bool f)
-{
-    if (f)
-        d->commentsEdit->setFocus();
-    else
-        d->commentsEdit->clearFocus();
-}
-
 void ImageDescEditTab::assignRating(int rating)
 {
     d->ratingWidget->setRating(rating);
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.h #628811:628812
@@ -59,7 +59,6 @@
     void setItem(ImageInfo *info=0);
     void setItems(QPtrList<ImageInfo> infos);
     void populateTags();
-    void setFocusToComments(bool f);
 
 signals:
 
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagepropertiessidebardb.cpp #628811:628812
@@ -98,9 +98,6 @@
     connectTab(m_colorTab);
     connectTab(d->desceditTab);
 
-    connect(this, SIGNAL(signalViewChanged()),
-            this, SLOT(slotSetFocus()));
-
     connect(this, SIGNAL(signalChangedTab(QWidget*)),
             this, SLOT(slotChangedTab(QWidget*)));
 
@@ -360,22 +357,9 @@
         }
     }
 
-    slotSetFocus();
-
     unsetCursor();
 }
 
-void ImagePropertiesSideBarDB::slotSetFocus()
-{
-    // See B.K.O #131632 and #131743 : always give focus to Comments widget 
-    // when we toogle between tab and when we change current item.
-
-    if (getActiveTab() == d->desceditTab && isExpanded())
-        d->desceditTab->setFocusToComments(true);
-    else
-        d->desceditTab->setFocusToComments(false);
-}
-
 void ImagePropertiesSideBarDB::slotFileMetadataChanged(const KURL &url)
 {
     if (url == m_currentURL)
--- trunk/extragear/graphics/digikam/libs/imageproperties/imagepropertiessidebardb.h #628811:628812
@@ -95,7 +95,6 @@
 
 private slots:
 
-    void slotSetFocus();
     void slotChangedTab(QWidget* tab);
     void slotThemeChanged();
     void slotFileMetadataChanged(const KURL &url);
Comment 5 caulier.gilles 2007-01-31 16:13:09 UTC
re-open. problem not solved yet...

Gilles
Comment 6 caulier.gilles 2007-01-31 16:15:13 UTC
*** Bug 131743 has been marked as a duplicate of this bug. ***
Comment 7 Brad Templeton 2007-07-10 00:21:32 UTC
We're getting close on this.   You can type comments in the box and then hit Page Down to go to the next picture.  (Other shortcuts do not work while entering text.)  However, oddly, when you are at the next picture, text you type does not appear in the comment box.  You have to click on it, requiring removal of hands from keyboard (a big no-no on this workflow.)   You can get to it in an odd way, by typing tab and shift-tab, indicating that somehow focus is on the comment box, but somehow it isn't.   This is the latest 092
Comment 8 Mikolaj Machowski 2007-07-10 08:32:10 UTC
*** Bug 146934 has been marked as a duplicate of this bug. ***
Comment 9 Arnd Baecker 2007-10-23 12:07:45 UTC
I can confirm the focus problem described by Brad in #7.
(note that this is the same in the light-table view, which 
solves the other wishes discussion in the original post).

Well, if this is the only remaining obstacle before closing
this bug, then I might have a look in the code. 
Gilles, do you have any pointer where to start with such a focus issue?
Comment 10 caulier.gilles 2007-10-23 12:40:16 UTC
Arnd, 

No other pointer. Focus policy is not simple to solve. We will take a look later with KDE4 port...

Gilles
Comment 11 caulier.gilles 2009-02-22 23:25:39 UTC
*** Bug 185277 has been marked as a duplicate of this bug. ***
Comment 12 Mikolaj Machowski 2009-06-04 17:53:49 UTC
*** Bug 195177 has been marked as a duplicate of this bug. ***
Comment 13 Mikolaj Machowski 2009-07-16 15:15:17 UTC
*** Bug 200392 has been marked as a duplicate of this bug. ***
Comment 14 Mikolaj Machowski 2009-07-16 15:16:54 UTC
*** Bug 200380 has been marked as a duplicate of this bug. ***
Comment 15 julien.t43+kde 2012-07-08 03:42:30 UTC
For me, related bug 297291 and still apply in 2.6. no fast/simple (low number) shortcuts
Comment 16 caulier.gilles 2014-09-10 06:59:48 UTC
Git commit fe90d5acb2e51fef4c1032affd1d4ca59ff8ad01 by Gilles Caulier.
Committed on 10/09/2014 at 06:56.
Pushed by cgilles into branch 'master'.

Add keyboard shortcuts to be able to switch focus to Comments edit or Titles edit widgets :

AlbumGUI and Image Editor :
   - Meta+C and Meta+T
LightTable :
   - right sidebar : Meta+C and Meta+T
   - left  sidebar : Shift+Meta+C and Shift+Meta+T
FIXED-IN: 4.4.0

M  +2    -1    NEWS
M  +10   -0    app/main/digikamapp.cpp
M  +15   -8    app/views/digikamview.cpp
M  +3    -0    app/views/digikamview.h
M  +16   -0    libs/imageproperties/imagedescedittab.cpp
M  +2    -0    libs/imageproperties/imagedescedittab.h
M  +31   -8    utilities/imageeditor/main/imagewindow.cpp
M  +3    -0    utilities/imageeditor/main/imagewindow.h
M  +45   -0    utilities/lighttable/lighttablewindow.cpp
M  +5    -0    utilities/lighttable/lighttablewindow.h

http://commits.kde.org/digikam/fe90d5acb2e51fef4c1032affd1d4ca59ff8ad01