Summary: | small wishes for the light-table | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Arnd Baecker <arnd.baecker> |
Component: | LightTable-Engine | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | wishlist | ||
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Debian stable | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 0.9.2 | |
Sentry Crash Report: |
Description
Arnd Baecker
2007-05-09 18:17:02 UTC
e) DEL as short-cut to remove items from the thumbs would be nice. f) On my computer (with the latest svn version) the mouse wheel pan speed is much to slow compared to other display modes. Has anybody else the same problem. If yes, it should be changed. Gerhard ad f): To me it seems all fine (but this is on a Core 2 Duo with 2 GHz, I have no idea how it would be on my old PIII laptop ...) Gerhard, Yes, i can conform it. Let's me explain what i have seen : - Go to a preview on LT (not fit to window) and press mouse wheel button to pan. It's slow. - Now, use the pan icon widget on the left botoom corner. It's fast. Both mode use the same implementation, but not by the same way, especially to use cache mecanism about preview tile rendering (witch is used to pan/zoom on preview). I suspect a bug somewhere... Marcel. Can you confirm this behaviours ? Any idea ? Gilles To Arnd :
>c) left-double click on thumb: insert into left panel
> right-double click on thumb: inser into right panel
No. It too complex, and right click give the thumbbar pop-up menu.
There is a more simple way to do what you want. Use drag & drop. It's implemented everywhere. You can drag a icon from thumbbar to Left or Right panel... and also, if you want, between Album Gui and Light Table.
Try it... It very powerfull...
Gilles
Arnd, I forget to said, than the reverse is true... D&D _from_ LT _to_ Album Gui work... Gilles To Arnd,
>P.S.: Is there a way to more directly enter bugs in the B.K.O for
>the same component than to go through the whole sequence
>(of specifying KDE version, OS, ...) every time again?
I don't know. I only use B.K.O to fix bug, not to create new one (:=)))
Gilles
To Arnd, >a) The switching of the synchronization of previews works > very nice. > It would be very convenient (i.e. much faster) for quick > adjustments, that for example > CTRL-slider (and CTRL-middle-mouse-button move) > would just do the unsynchronized operation? CTRL+SHIFT+Y toogle sync between panels. This is not enough ? b) A way to go through pairs of images of the thumb-bar one after-another, i.e. [ image 1] [ image 2] are displayed side by side; then pressing (for example) Page-Up would show [ image 2] [image 3] so that comparing a sequence of images (at the same place) could be done very very quickly. Interressing, but the tool is not designed like this. I think than its require huge changes in implementation... Marcel, if you have a good idea to implement this wish speedly, i'm hear you... >c) left-double click on thumb: insert into left panel > right-double click on thumb: inser into right panel This one is invalid now. See previous message. d) keyboard navigation in the thumbs-display? Witch Keyboard shortcuts ? Gilles Arnd, Fresh screenshot of Light Table in action can be seen here: http://digikam3rdparty.free.fr/Screenshots/lighttable_v7.png Gilles On Thu, 10 May 2007, Gilles Caulier wrote:
[bugs.kde.org quoted mail]
OK (though shouldn't Qt technically be able to distinguish
a single from a double right-click?).
> There is a more simple way to do what you want. Use drag & drop. It's implemented everywhere. You can drag a icon from thumbbar to Left or Right panel... and also, if you want, between Album Gui and Light Table.
It does work very nicely indeed.
Still maybe some keyboard short-cuts?
(Something like l/r L/R or ALT-L ALT-R to put
the currently selected thumb into the left or right panel.)
But Mikolaj is the expert for keyboard short-cuts,
so before he has to do a mass-filing on key-board-actions
for the light-table, his opinion might be helpful!
> I don't know. I only use B.K.O to fix bug, not to create new one (:=))) ;-) and you are fast at that!!! (faster than I can create new ones it seems;-) Ad a) > CTRL+SHIFT+Y toogle sync between panels. This is not enough ? I think that the suggested option would be even more convenient/faster (but I don't know how difficult it would be to do the coding ...) Ad b) going through pairs of images: > Interressing, but the tool is not designed like this. I think than its require > huge changes in implementation... Not sure, but maybe it can be done quite easily with all what is available now: - the images are organized in some kind of list in the thumb-bar, let's say index_l for the left one and index_r for the right one - when going right (and index_l+1<number_of_thumbs and index_r+1<number_of_thumbs) the left panel is replaced by the image corresponding to index_l+1 and the right one by index_r+1. The same for the other direction of going left. For changing the images, couldn't one just use the routine which is called after drag and drop? (Haven't looked at the code yet) - All this could be activated on some keyboard short-cut (maybe CTRL-right CTRL-left?) Ad d) > keyboard navigation in the thumbs-display? maybe some Cursor keys to go left/right in the thumbs? (Mikolaj, what do you think) Gilles, you are really doing a brilliant job - the light-table is approaching perfection much faster than I would ever anticipated! Many thanks, Arnd To Arnd, >>Ad b) going through pairs of images: >> Interressing, but the tool is not designed like this. I think than its require >> huge changes in implementation... >Not sure, but maybe it can be done quite easily with all what is available now: >- the images are organized in some kind of list in the thumb-bar, > let's say index_l for the left one and index_r for the right one >- when going right (and index_l+1<number_of_thumbs and > index_r+1<number_of_thumbs) > the left panel is replaced by the image corresponding to index_l+1 > and the right one by index_r+1. > The same for the other direction of going left. > For changing the images, couldn't one just use the routine > which is called after drag and drop? > (Haven't looked at the code yet) >- All this could be activated on some keyboard short-cut > (maybe CTRL-right CTRL-left?) ok. I understand. Naviguate by pair of images. It's can be easy to do. I will take a look tomorow. Gilles > maybe some Cursor keys to go left/right in the thumbs? > (Mikolaj, what do you think) IMO it should be PageUp, PageDown. Arrors should be saved for panning of images. > Gilles, you are really doing a brilliant job - the light-table > is approaching perfection much faster than I would ever anticipated! /aol m. SVN commit 663493 by cgilles: digikam from trunk : Light Table : added new options to navigate between thumbbar items (first, previous, next, last). Shortcuts are the same than Album Gui and Image Editor CCBUGS: 145237 M +1 -1 lighttablebar.cpp M +1 -1 lighttablebar.h M +72 -3 lighttablewindow.cpp M +5 -0 lighttablewindow.h M +14 -1 lighttablewindowui.rc --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablebar.cpp #663492:663493 @@ -284,7 +284,7 @@ return list; } -void LightTableBar::setSelected(LightTableBarItem* ltItem) +void LightTableBar::setSelectedItem(LightTableBarItem* ltItem) { ThumbBarItem *item = static_cast<ThumbBarItem*>(ltItem); if (item) ThumbBarView::setSelected(item); --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablebar.h #663492:663493 @@ -59,7 +59,7 @@ ImageInfo* currentItemImageInfo() const; ImageInfoList itemsImageInfoList(); - void setSelected(LightTableBarItem* ltItem); + void setSelectedItem(LightTableBarItem* ltItem); LightTableBarItem* findItemByInfo(const ImageInfo* info) const; LightTableBarItem* findItemByPos(const QPoint& pos) const; --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.cpp #663492:663493 @@ -109,6 +109,10 @@ statusProgressBar = 0; leftZoomBar = 0; rightZoomBar = 0; + forwardAction = 0; + backwardAction = 0; + firstAction = 0; + lastAction = 0; } bool fullScreenHideToolBar; @@ -127,6 +131,11 @@ KAction *star4; KAction *star5; + KAction *forwardAction; + KAction *backwardAction; + KAction *firstAction; + KAction *lastAction; + KAction *setItemLeftAction; KAction *setItemRightAction; KAction *clearListAction; @@ -378,6 +387,22 @@ { // -- Standard 'File' menu actions --------------------------------------------- + d->backwardAction = KStdAction::back(this, SLOT(slotBackward()), + actionCollection(), "lighttable_backward"); + + d->forwardAction = KStdAction::forward(this, SLOT(slotForward()), + actionCollection(), "lighttable_forward"); + + d->firstAction = new KAction(i18n("&First"), "start", + KStdAccel::shortcut( KStdAccel::Home), + this, SLOT(slotFirst()), + actionCollection(), "lighttable_first"); + + d->lastAction = new KAction(i18n("&Last"), "finish", + KStdAccel::shortcut( KStdAccel::End), + this, SLOT(slotLast()), + actionCollection(), "lighttable_last"); + d->setItemLeftAction = new KAction(i18n("Show item on left panel"), "previous", CTRL+Key_L, this, SLOT(slotSetItemLeft()), actionCollection(), "lighttable_setitemleft"); @@ -510,6 +535,26 @@ Key_Escape, this, SLOT(slotEscapePressed()), false, true); + d->accelerators->insert("Next Image Key_Space", i18n("Next Image"), + i18n("Load Next Image"), + Key_Space, this, SLOT(slotForward()), + false, true); + + d->accelerators->insert("Previous Image Key_Backspace", i18n("Previous Image"), + i18n("Load Previous Image"), + Key_Backspace, this, SLOT(slotBackward()), + false, true); + + d->accelerators->insert("Next Image Key_Next", i18n("Next Image"), + i18n("Load Next Image"), + Key_Next, this, SLOT(slotForward()), + false, true); + + d->accelerators->insert("Previous Image Key_Prior", i18n("Previous Image"), + i18n("Load Previous Image"), + Key_Prior, this, SLOT(slotBackward()), + false, true); + d->accelerators->insert("Zoom Plus Key_Plus", i18n("Zoom in"), i18n("Zoom in on image"), Key_Plus, d->previewView, SLOT(slotIncreaseZoom()), @@ -530,7 +575,7 @@ LightTableBarItem *item = new LightTableBarItem(d->barView, *it); if (*it == imageInfoCurrent) { - d->barView->setSelected(item); + d->barView->setSelectedItem(item); } } } @@ -580,12 +625,12 @@ void LightTableWindow::slotLeftPanelLeftButtonClicked() { - d->barView->setSelected(d->barView->findItemByInfo(d->previewView->leftImageInfo())); + d->barView->setSelectedItem(d->barView->findItemByInfo(d->previewView->leftImageInfo())); } void LightTableWindow::slotRightPanelLeftButtonClicked() { - d->barView->setSelected(d->barView->findItemByInfo(d->previewView->rightImageInfo())); + d->barView->setSelectedItem(d->barView->findItemByInfo(d->previewView->rightImageInfo())); } void LightTableWindow::slotLeftPreviewLoaded(bool b) @@ -1165,5 +1210,29 @@ } } +void LightTableWindow::slotBackward() +{ + ThumbBarItem* curr = d->barView->currentItem(); + if (curr && curr->prev()) + d->barView->setSelected(curr->prev()); +} + +void LightTableWindow::slotForward() +{ + ThumbBarItem* curr = d->barView->currentItem(); + if (curr && curr->next()) + d->barView->setSelected(curr->next()); +} + +void LightTableWindow::slotFirst() +{ + d->barView->setSelected( d->barView->firstItem() ); +} + +void LightTableWindow::slotLast() +{ + d->barView->setSelected( d->barView->lastItem() ); +} + } // namespace Digikam --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindow.h #663492:663493 @@ -85,6 +85,11 @@ private slots: + void slotBackward(); + void slotForward(); + void slotFirst(); + void slotLast(); + void slotSetItemLeft(); void slotSetItemRight(); void slotSetItemOnLeftPanel(ImageInfo*); --- trunk/extragear/graphics/digikam/utilities/lighttable/lighttablewindowui.rc #663492:663493 @@ -1,9 +1,14 @@ <!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> -<gui version="12" name="lighttablewindow" > +<gui version="13" name="lighttablewindow" > <MenuBar> <Menu name="File" ><text>&File</text> + <Action name="lighttable_first" /> + <Action name="lighttable_backward" /> + <Action name="lighttable_forward" /> + <Action name="lighttable_last" /> + <Separator/> <Action name="lighttable_setitemleft" /> <Action name="lighttable_setitemright" /> <Action name="lighttable_edititem" /> @@ -49,6 +54,14 @@ </MenuBar> <ToolBar name="ToolBar" ><text>Main Toolbar</text> + <Action name="lighttable_first" /> + <Action name="lighttable_backward" /> + <Action name="lighttable_forward" /> + <Action name="lighttable_last" /> + <Separator/> + <Action name="lighttable_setitemleft" /> + <Action name="lighttable_setitemright" /> + <Separator/> <Action name="lighttable_syncpreview" /> <Action name="lighttable_zoomplus" /> <Action name="lighttable_zoomminus" /> A very minor glitch: invoking the light-table the first time (or after emptying the light-table), the "Forward" and "Last" buttons are not activated. Another thing (which wasn't there in one of the earlier versions, I think): - zoom in a bit - ``un-synchronize'' the preview - move one of the panel to the correct place, such that in both panels the object of interest is centered - then activate synchronization again - zooming in/out or panning in one panel leads a jump in the other. Well, this is of course what synchronization says, but I think it would be better if it behaves the following way: - if synchronization is turned on again, the two panels keep the relative offset. Reason: if the object of interest (or view, or photographer) moved slightly from one shot to the next, it is still possible to compare the images. - What todo about different zoom-levels: if, in the unsynchronized situation the zoom is changed, switching synchronization on, leads to the smaller (or larger, does not really matter I think) zoom value for both. There is one technical problem with keeping an offset, namely, what should one do when during panning the edge of one of the images is reached. Presumably the simplest is to just stop (in both panels) in this case. P.S.: watching the progress of the light-table is better than many movies - every `svn up` gives new features! ;-) >A very minor glitch: invoking the light-table the first time
>(or after emptying the light-table),
>the "Forward" and "Last" buttons are not activated.
No problem here. Checkout and try again.
Resynchronization of panels is fixed with commit #663723.
Gilles
Arnd, About the feature "going through pairs of images", What i can use in English words to describe this new option in View menu ? "Navigate by pair of items" is fine ? Gilles > "Navigate by pair of items" is fine ?
Hmm, that is a not so easy one - your suggestion seems fine to me.
Maybe "Navigate by pairs" would be ok as well?
Maybe someone else has an even better suggestion...
Best, Arnd
SVN commit 663883 by mwiesweg: Adapt the line step of the scroll bars to the zoom factor. For low zoom factors, scrolling with the mouse wheel is still precise, for higher zoom rates the steps get bigger. This means the approx. the same amount of mouse wheel scrolling is required for to scroll the same span in the original picture, regardless of zoom rate. For the overall relative speed, I added a factor of 2 which feels good, please report if scrolling steps are too big or too small. (bug 145237, #4) CCBUG: 145237 M +6 -0 previewwidget.cpp --- trunk/extragear/graphics/digikam/libs/widgets/common/previewwidget.cpp #663882:663883 @@ -219,6 +219,12 @@ updateContentsSize(); + int step = QMAX(2, 2*lround(d->zoom)); + horizontalScrollBar()->setLineStep( step ); + horizontalScrollBar()->setPageStep( step * 10 ); + verticalScrollBar()->setLineStep( step ); + verticalScrollBar()->setPageStep( step * 10 ); + viewport()->setUpdatesEnabled(false); center((int)((cpx * d->tileSize ) / floor(d->tileSize / d->zoom)), (int)((cpy * d->tileSize ) / floor(d->tileSize / d->zoom))); >For the overall relative speed, I added a factor of 2 which feels good, please >report
>if scrolling steps are too big or too small.
Thanks Marcel for this fix. it sound fine for me.
Gerhard, can you give us your viewpoint ?
Gilles
Marcel, Like Image Editor Canvas and Image Preview are very similar, i suspect than canvas.cpp need to be patched in the same way. Right ? To be honest, later 0.9.2, i will use ImagePreview class like parent of canvas to factorize implementation (:=))) Gilles > >A very minor glitch: invoking the light-table the first time > >(or after emptying the light-table), > >the "Forward" and "Last" buttons are not activated. > > No problem here. Checkout and try again. Still here. To really observe this: restart digikam, mark a few images in the album view and then invoke the light-table with F6 (it does not show up once the light-table has been activated once during a digikam session). Then all the Forward/Last (and First/Back, as it should be for the first item) are disabled. > Resynchronization of panels is fixed with commit #663723. Yes and no ;-) Namely, you solved the jump on slider move/zoom, so that it jumps when one presses CTRL-SHIFT-Y. However, "it would be better if it behaves the following way: " [ ... see the text I wrote under #15 above ...] What do you think about that? A cosmetic issue: when panning (either with the mouse or scrollbars), the horizontal (sometimes also the vertical) slider of the other panel reduces its length for a very short time (leading to some flickering of the slider). A similar flickering also arise when using the zoom slider (but then for both joined images). Best, Arnd Arnd,
Navigate by Pair feature is now implemented in svn. Checkout and try it.
> >A very minor glitch: invoking the light-table the first time
> >(or after emptying the light-table),
> >the "Forward" and "Last" buttons are not activated.
ok, now i can reproduce. Something is not initialized properly. I will take a look.
Gilles
> >A very minor glitch: invoking the light-table the first time
> >(or after emptying the light-table),
> >the "Forward" and "Last" buttons are not activated.
Fixed in svn
Gilles
Gilles, thanks a lot - all works very fine! Only remaining: Points a) from #0 and #15 (after: "it would be better if it behaves the following way: "). This might need a separate discussion and input from other users - should I create a new B.K.O.? (this one got pretty long for "small" wishes ... ;-) |