UI enhancement: new shortcuts for toolpanelcoord & browse path

Ctrl-e: exposure tab
Ctrl-d: detail tab
Ctrl-c: color tab
Ctrl-t: transform tab
Ctrl-r: raw tab
Ctrl-m: metadata tab

In file browser: Ctrl-O - sets focus in browse path entry box
This commit is contained in:
michael
2011-01-19 08:26:12 -05:00
parent 4feaf6950b
commit 16c12e6db8
7 changed files with 200 additions and 93 deletions

View File

@@ -51,7 +51,7 @@ FILEBROWSER_ARRANGEMENTHINT;Change between vertical/horizontal alignment of thum
FILEBROWSER_AUTODARKFRAME;Auto dark frame
FILEBROWSER_AUTOFLATFIELD;Auto flat field
FILEBROWSER_BROWSEPATHBUTTONHINT;Click to browse to the chosen path
FILEBROWSER_BROWSEPATHHINT;Type path to browse (Ctrl-Enter in File Browser)
FILEBROWSER_BROWSEPATHHINT;Type path to browse (<b>Ctrl-o</b> set focus,<b>Ctrl-Enter</b> to browse in File Browser)
FILEBROWSER_CLEARPROFILE;Clear profile
FILEBROWSER_COPYPROFILE;Copy profile
FILEBROWSER_CURRENT_NAME;Current name:
@@ -355,17 +355,23 @@ MAIN_MSG_PLACES;Places
MAIN_MSG_QOVERWRITE;Do you want to overwrite it?
MAIN_TAB_BASIC;Basic
MAIN_TAB_COLOR;Color
MAIN_TAB_COLOR_TOOLTIP;<b>Alt-c</b>
MAIN_TAB_DETAIL;Detail
MAIN_TAB_DEVELOP;Develop
MAIN_TAB_DETAIL_TOOLTIP;<b>Alt-d</b>
MAIN_TAB_EXIF;Exif
MAIN_TAB_EXPOSURE;Exposure
MAIN_TAB_EXPOSURE_TOOLTIP;<b>Alt-e</b>
MAIN_TAB_FILTER;Filter
MAIN_TAB_ICM;ICM
MAIN_TAB_IPTC;IPTC
MAIN_TAB_METADATA;Metadata
MAIN_TAB_METADATA_TOOLTIP;<b>Alt-m</b>
MAIN_TAB_RAW;RAW
MAIN_TAB_RAW_TOOLTIP;<b>Alt-r</b>
MAIN_TAB_TAGGING;Tagging
MAIN_TAB_TRANSFORM;Transform
MAIN_TAB_TRANSFORM_TOOLTIP;<b>Alt-t</b>
MAIN_TOGGLE_BEFORE_AFTER;B|A
MAIN_TOOLTIP_HIDEFP;Show/hide the bottom panel (directory and file browser) <b>F</b>
MAIN_TOOLTIP_HIDEHP;Show/hide the left panel (including the history) <b>l</b>

View File

@@ -790,85 +790,92 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
return true;
}
case GDK_m: // Maximize preview panel: hide top AND right AND history panels
if (!ctrl) toggleSidePanels();
return true;
if (!ctrl && !alt) {
toggleSidePanels();
return true;
}
case GDK_M: // Maximize preview panel: hide top AND right AND history panels AND (fit image preview)
if (!ctrl) toggleSidePanelsZoomFit();
return true;
if (!ctrl && !alt) {
toggleSidePanelsZoomFit();
return true;
}
}
if (!ctrl) {
// Normal
switch(event->keyval) {
case GDK_bracketright:
tpc->coarse->rotateRight();
return true;
case GDK_bracketleft:
tpc->coarse->rotateLeft();
return true;
if (!alt){
if (!ctrl) {
// Normal
switch(event->keyval) {
case GDK_bracketright:
tpc->coarse->rotateRight();
return true;
case GDK_bracketleft:
tpc->coarse->rotateLeft();
return true;
case GDK_i:
case GDK_I:
info->set_active (!info->get_active());
return true;
case GDK_b:
case GDK_B:
beforeAfter->set_active (!beforeAfter->get_active());
return true;
case GDK_plus:
case GDK_equal:
iarea->imageArea->zoomPanel->zoomInClicked();
return true;
case GDK_minus:
case GDK_underscore:
iarea->imageArea->zoomPanel->zoomOutClicked();
return true;
case GDK_1:
iarea->imageArea->zoomPanel->zoom11Clicked();
return true;
case GDK_i:
case GDK_I:
info->set_active (!info->get_active());
return true;
case GDK_b:
case GDK_B:
beforeAfter->set_active (!beforeAfter->get_active());
return true;
case GDK_plus:
case GDK_equal:
iarea->imageArea->zoomPanel->zoomInClicked();
return true;
case GDK_minus:
case GDK_underscore:
iarea->imageArea->zoomPanel->zoomOutClicked();
return true;
case GDK_1:
iarea->imageArea->zoomPanel->zoom11Clicked();
return true;
case GDK_f:
iarea->imageArea->zoomPanel->zoomFitClicked();
return true;
case GDK_less:
iarea->imageArea->indClippedPanel->toggleClipped(true);
return true;
case GDK_greater:
iarea->imageArea->indClippedPanel->toggleClipped(false);
return true;
case GDK_f:
iarea->imageArea->zoomPanel->zoomFitClicked();
return true;
case GDK_less:
iarea->imageArea->indClippedPanel->toggleClipped(true);
return true;
case GDK_greater:
iarea->imageArea->indClippedPanel->toggleClipped(false);
return true;
case GDK_F5:
openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1);
return true;
}
}
else {
// With control
switch (event->keyval) {
case GDK_s:
saveAsPressed();
return true;
case GDK_q:
queueImgPressed();
return true;
case GDK_e:
sendToGimpPressed();
return true;
case GDK_z:
history->undo ();
return true;
case GDK_Z:
history->redo ();
return true;
case GDK_F5:
openThm->openDefaultViewer(3);
return true;
}
}
case GDK_F5:
openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1);
return true;
}
}
else {
// With control
switch (event->keyval) {
case GDK_s:
saveAsPressed();
return true;
case GDK_q:
queueImgPressed();
return true;
case GDK_e:
sendToGimpPressed();
return true;
case GDK_z:
history->undo ();
return true;
case GDK_Z:
history->redo ();
return true;
case GDK_F5:
openThm->openDefaultViewer(3);
return true;
}
} //if (!ctrl)
} //if (!alt)
if(tpc->getToolBar()->handleShortcutKey(event))
return true;
if(tpc->handleShortcutKey(event))
return true;
return false;
}

View File

@@ -1035,7 +1035,7 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
}
return true;
case GDK_m:
if (!ctrl) toggleSidePanels();
if (!ctrl && !alt) toggleSidePanels();
return true;
}
@@ -1058,20 +1058,26 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
case GDK_grave:
categoryButtonToggled(bUnRanked);
return true;
case GDK_d:
case GDK_D:
categoryButtonToggled(bDir);
return true;
case GDK_t:
case GDK_T:
categoryButtonToggled(bTrash);
return true;
case GDK_Return:
case GDK_KP_Enter:
FileCatalog::buttonBrowsePathPressed ();
return true;
}
if (!ctrl && !alt) {
switch(event->keyval) {
case GDK_d:
case GDK_D:
categoryButtonToggled(bDir);
return true;
case GDK_t:
case GDK_T:
categoryButtonToggled(bTrash);
return true;
}
}
if (!ctrl) {
switch(event->keyval) {
@@ -1096,8 +1102,14 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) {
return true;
}
}
else {
else { // with Ctrl
switch (event->keyval) {
case GDK_o:
if (!alt){
BrowsePath->select_region(0, BrowsePath->get_text_length());
BrowsePath->grab_focus();
return true;
}
}
}

View File

@@ -238,6 +238,9 @@ bool FilePanel::handleShortcutKey (GdkEventKey* event) {
if(tpc->getToolBar()->handleShortcutKey(event))
return true;
if(tpc->handleShortcutKey(event))
return true;
if(fileCatalog->handleShortcutKey(event))
return true;

View File

@@ -198,8 +198,9 @@ bool ToolBar::handleShortcutKey (GdkEventKey* event) {
bool ctrl = event->state & GDK_CONTROL_MASK;
bool shift = event->state & GDK_SHIFT_MASK;
bool alt = event->state & GDK_MOD1_MASK;
if (!ctrl) {
if (!ctrl && !alt) {
switch(event->keyval) {
case GDK_w:
case GDK_W:

View File

@@ -105,11 +105,11 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
metadataPanel->append_page (*exifpanel, M("MAIN_TAB_EXIF"));
metadataPanel->append_page (*iptcpanel, M("MAIN_TAB_IPTC"));
Gtk::ScrolledWindow* exposurePanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
Gtk::ScrolledWindow* detailsPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
Gtk::ScrolledWindow* colorPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
Gtk::ScrolledWindow* transformPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
Gtk::ScrolledWindow* rawPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
exposurePanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
detailsPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
colorPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
transformPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
rawPanelSW = Gtk::manage (new Gtk::ScrolledWindow ());
exposurePanelSW->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
detailsPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
colorPanelSW->set_policy (Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
@@ -122,12 +122,47 @@ ToolPanelCoordinator::ToolPanelCoordinator () : ipc(NULL) {
transformPanelSW->add (*transformPanel);
rawPanelSW->add (*rawPanel);
toolPanelNotebook->append_page (*exposurePanelSW, M("MAIN_TAB_EXPOSURE"));
toolPanelNotebook->append_page (*detailsPanelSW, M("MAIN_TAB_DETAIL"));
toolPanelNotebook->append_page (*colorPanelSW, M("MAIN_TAB_COLOR"));
toolPanelNotebook->append_page (*transformPanelSW, M("MAIN_TAB_TRANSFORM"));
toolPanelNotebook->append_page (*rawPanelSW, M("MAIN_TAB_RAW"));
toolPanelNotebook->append_page (*metadataPanel, M("MAIN_TAB_METADATA"));
Gtk::HBox* hbe = Gtk::manage (new Gtk::HBox ());
hbe->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_EXPOSURE"))));
hbe->set_spacing (2);
hbe->set_tooltip_markup (M("MAIN_TAB_EXPOSURE_TOOLTIP"));
hbe->show_all ();
toolPanelNotebook->append_page (*exposurePanelSW, *hbe);
Gtk::HBox* hbd = Gtk::manage (new Gtk::HBox ());
hbd->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_DETAIL"))));
hbd->set_spacing (2);
hbd->set_tooltip_markup (M("MAIN_TAB_DETAIL_TOOLTIP"));
hbd->show_all ();
toolPanelNotebook->append_page (*detailsPanelSW, *hbd);
Gtk::HBox* hbc = Gtk::manage (new Gtk::HBox ());
hbc->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_COLOR"))));
hbc->set_spacing (2);
hbc->set_tooltip_markup (M("MAIN_TAB_COLOR_TOOLTIP"));
hbc->show_all ();
toolPanelNotebook->append_page (*colorPanelSW, *hbc);
Gtk::HBox* hbt = Gtk::manage (new Gtk::HBox ());
hbt->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_TRANSFORM"))));
hbt->set_spacing (2);
hbt->set_tooltip_markup (M("MAIN_TAB_TRANSFORM_TOOLTIP"));
hbt->show_all ();
toolPanelNotebook->append_page (*transformPanelSW, *hbt);
Gtk::HBox* hbr = Gtk::manage (new Gtk::HBox ());
hbr->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_RAW"))));
hbr->set_spacing (2);
hbr->set_tooltip_markup (M("MAIN_TAB_RAW_TOOLTIP"));
hbr->show_all ();
toolPanelNotebook->append_page (*rawPanelSW, *hbr);
Gtk::HBox* hbm = Gtk::manage (new Gtk::HBox ());
hbm->pack_start (*Gtk::manage (new Gtk::Label (M("MAIN_TAB_METADATA"))));
hbm->set_spacing (2);
hbm->set_tooltip_markup (M("MAIN_TAB_METADATA_TOOLTIP"));
hbm->show_all ();
toolPanelNotebook->append_page (*metadataPanel, *hbm);
toolPanelNotebook->set_current_page (0);
toolPanelNotebook->set_scrollable ();
@@ -439,3 +474,38 @@ void ToolPanelCoordinator::updateCurveBackgroundHistogram (unsigned* histrgb, un
curve->updateCurveBackgroundHistogram (histrgb);
lcurve->updateCurveBackgroundHistogram (histl);
}
bool ToolPanelCoordinator::handleShortcutKey (GdkEventKey* event) {
bool ctrl = event->state & GDK_CONTROL_MASK;
bool shift = event->state & GDK_SHIFT_MASK;
bool alt = event->state & GDK_MOD1_MASK;
if (alt){
switch(event->keyval) {
case GDK_e:
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*exposurePanelSW));
return true;
case GDK_d:
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*detailsPanelSW));
return true;
case GDK_c:
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*colorPanelSW));
return true;
case GDK_t:
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*transformPanelSW));
return true;
case GDK_r:
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*rawPanelSW));
return true;
case GDK_m:
// !!! this should be improved by detecting if metadataPanel is present,
// as this page is removed in BatchToolPanelCoordinator::BatchToolPanelCoordinator
if (toolPanelNotebook->get_n_pages()==6){
toolPanelNotebook->set_current_page (toolPanelNotebook->page_num(*metadataPanel));
return true;
}
}
}
return false;
}

View File

@@ -119,6 +119,12 @@ class ToolPanelCoordinator : public ToolPanelListener,
IPTCPanel* iptcpanel;
ToolBar* toolBar;
Gtk::ScrolledWindow* exposurePanelSW;
Gtk::ScrolledWindow* detailsPanelSW;
Gtk::ScrolledWindow* colorPanelSW;
Gtk::ScrolledWindow* transformPanelSW;
Gtk::ScrolledWindow* rawPanelSW;
std::vector<Gtk::Expander*> expList;
bool hasChanged;
@@ -187,6 +193,8 @@ class ToolPanelCoordinator : public ToolPanelListener,
ToolBar* getToolBar () { return toolBar; }
int getSpotWBRectSize ();
CropGUIListener* startCropEditing (Thumbnail* thm=NULL) { return crop; }
bool handleShortcutKey (GdkEventKey* event);
};
#endif