Image navigation for single tab editor, synchronization of editor with file browser and improvements to various other shortcuts (see issue 47, comment 52). Thanks Hombre & DrSlony for help!

This commit is contained in:
michael
2013-04-06 18:38:23 -04:00
parent fae7971dcc
commit 1e4e8e97ab
22 changed files with 2571 additions and 108 deletions

View File

@@ -223,6 +223,35 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
iops->pack_end (*iareapanel->imageArea->zoomPanel, Gtk::PACK_SHRINK, 1);
iops->pack_end (*vsepz3, Gtk::PACK_SHRINK, 2);
// Navigation buttons
Gtk::Image *navPrevImage = Gtk::manage (new RTImage ("nav-prev.png"));
navPrevImage->set_padding(0,0);
navPrev = Gtk::manage (new Gtk::Button ());
navPrev->add(*navPrevImage);
navPrev->set_relief(Gtk::RELIEF_NONE);
navPrev->set_tooltip_markup(M("MAIN_BUTTON_NAVPREV_TOOLTIP"));
Gtk::Image *navNextImage = Gtk::manage (new RTImage ("nav-next.png"));
navNextImage->set_padding(0,0);
navNext = Gtk::manage (new Gtk::Button ());
navNext->add(*navNextImage);
navNext->set_relief(Gtk::RELIEF_NONE);
navNext->set_tooltip_markup(M("MAIN_BUTTON_NAVNEXT_TOOLTIP"));
Gtk::Image *navSyncImage = Gtk::manage (new RTImage ("nav-sync.png"));
navSyncImage->set_padding(0,0);
navSync = Gtk::manage (new Gtk::Button ());
navSync->add(*navSyncImage);
navSync->set_relief(Gtk::RELIEF_NONE);
navSync->set_tooltip_markup(M("MAIN_BUTTON_NAVSYNC_TOOLTIP"));
if (!simpleEditor && !options.tabbedUI){
iops->pack_end (*Gtk::manage(new Gtk::VSeparator()), Gtk::PACK_SHRINK, 0);
iops->pack_end (*navNext, Gtk::PACK_SHRINK, 0);
iops->pack_end (*navSync, Gtk::PACK_SHRINK, 0);
iops->pack_end (*navPrev, Gtk::PACK_SHRINK, 0);
}
editbox->pack_start (*Gtk::manage(new Gtk::HSeparator()), Gtk::PACK_SHRINK, 0);
editbox->pack_start (*iops, Gtk::PACK_SHRINK, 0);
editbox->show_all ();
@@ -295,6 +324,10 @@ EditorPanel::EditorPanel (FilePanel* filePanel)
saveimgas->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::saveAsPressed) );
queueimg->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::queueImgPressed) );
sendtogimp->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::sendToGimpPressed) );
navPrev->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::openPreviousEditorImage) );
navNext->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::openNextEditorImage) );
navSync->signal_pressed().connect( sigc::mem_fun(*this, &EditorPanel::syncFileBrowser) );
ShowHideSidePanelsconn = tbShowHideSidePanels->signal_toggled().connect ( sigc::mem_fun(*this, &EditorPanel::toggleSidePanels), true);
if (tbTopPanel_1)
tbTopPanel_1->signal_toggled().connect( sigc::mem_fun(*this, &EditorPanel::tbTopPanel_1_toggled) );
@@ -866,7 +899,7 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
case GDK_underscore:
iareapanel->imageArea->zoomPanel->zoomOutClicked();
return true;
case GDK_1:
case GDK_z://GDK_1
iareapanel->imageArea->zoomPanel->zoom11Clicked();
return true;
@@ -909,6 +942,18 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
case GDK_F5:
openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1);
return true;
case GDK_y: // synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!=""){
fPanel->fileCatalog->selectImage(fname, false);
return true;
}
break; // to avoid gcc complain
case GDK_x: // clear filters and synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!=""){
fPanel->fileCatalog->selectImage(fname, true);
return true;
}
break; // to avoid gcc complain
}
}
else {
@@ -949,12 +994,34 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
return true;
}
}
if (shift){
switch (event->keyval) {
case GDK_F3: // open Previous image from Editor's perspective
if (!simpleEditor && fPanel && fname!=""){
EditorPanel::openPreviousEditorImage();
return true;
}
break; // to avoid gcc complain
case GDK_F4: // open next image from Editor's perspective
if (!simpleEditor && fPanel && fname!=""){
EditorPanel::openNextEditorImage();
return true;
}
break; // to avoid gcc complain
}
}
if(tpc->getToolBar()->handleShortcutKey(event))
if(tpc->getToolBar() && tpc->getToolBar()->handleShortcutKey(event))
return true;
if(tpc->handleShortcutKey(event))
return true;
if (!simpleEditor && fPanel){
if (fPanel->handleShortcutKey(event))
return true;
}
return false;
}
@@ -1163,6 +1230,22 @@ void EditorPanel::sendToGimpPressed () {
sendtogimp->set_sensitive(false);
}
void EditorPanel::openPreviousEditorImage() {
if (!simpleEditor && fPanel && fname!="")
fPanel->fileCatalog->openNextPreviousEditorImage(fname, true, NAV_PREVIOUS);
}
void EditorPanel::openNextEditorImage() {
if (!simpleEditor && fPanel && fname!="")
fPanel->fileCatalog->openNextPreviousEditorImage(fname, true, NAV_NEXT);
}
void EditorPanel::syncFileBrowser() { // synchronize filebrowser with image in Editor
if (!simpleEditor && fPanel && fname!="")
fPanel->fileCatalog->selectImage(fname, true);
}
bool EditorPanel::idle_sendToGimp( ProgressConnector<rtengine::IImage16*> *pc){
rtengine::IImage16* img = pc->returnValue();