From ca04eb9c2a13e6a5d51c98d763f81cb3fbe6a602 Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 30 Dec 2013 11:07:26 -0500 Subject: [PATCH] Keyboard shortcut in SaveAs window (issue 2165) --- rtdata/languages/default | 1 + rtgui/saveasdlg.cc | 19 +++++++++++++++++++ rtgui/saveasdlg.h | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/rtdata/languages/default b/rtdata/languages/default index 06d3ac889..5a0733617 100644 --- a/rtdata/languages/default +++ b/rtdata/languages/default @@ -1392,6 +1392,7 @@ TP_RGBCURVES_RED;R TP_ROTATE_DEGREE;Degree TP_ROTATE_LABEL;Rotate TP_ROTATE_SELECTLINE;Select Straight Line +TP_SAVEDIALOG_OK_TIP;Shortcut Ctrl-Enter TP_SHADOWSHLIGHTS_HIGHLIGHTS;Highlights TP_SHADOWSHLIGHTS_HLTONALW;Tonal Width for Highlights TP_SHADOWSHLIGHTS_LABEL;Shadows/Highlights diff --git a/rtgui/saveasdlg.cc b/rtgui/saveasdlg.cc index bdc9a06fc..e056fad10 100644 --- a/rtgui/saveasdlg.cc +++ b/rtgui/saveasdlg.cc @@ -97,6 +97,8 @@ SaveAsDialog::SaveAsDialog (Glib::ustring initialDir) { ok->set_image (*Gtk::manage(new RTImage ("gtk-apply.png"))); cancel->set_image (*Gtk::manage(new RTImage ("gtk-cancel.png"))); + + ok->set_tooltip_markup (M("TP_SAVEDIALOG_OK_TIP")); ok->signal_clicked().connect( sigc::mem_fun(*this, &SaveAsDialog::okPressed) ); cancel->signal_clicked().connect( sigc::mem_fun(*this, &SaveAsDialog::cancelPressed) ); @@ -128,6 +130,7 @@ SaveAsDialog::SaveAsDialog (Glib::ustring initialDir) { set_border_width (4); show_all_children (); + signal_key_press_event().connect( sigc::mem_fun(*this, &SaveAsDialog::keyPressed) ); } void SaveAsDialog::saveImmediatlyClicked () { @@ -269,3 +272,19 @@ void SaveAsDialog::setImagePath (Glib::ustring ipath) { } catch (Gtk::FileChooserError &err) {} } + + +bool SaveAsDialog::keyPressed (GdkEventKey* event) { + + bool ctrl = event->state & GDK_CONTROL_MASK; + + if (ctrl){ + switch(event->keyval) { + case GDK_Return: // Ctrl-Enter equivalent to pressing OK button + case GDK_KP_Enter: + SaveAsDialog::okPressed(); + return true; + } + } + return false; +} diff --git a/rtgui/saveasdlg.h b/rtgui/saveasdlg.h index 177616af0..9cafe7ded 100644 --- a/rtgui/saveasdlg.h +++ b/rtgui/saveasdlg.h @@ -17,7 +17,6 @@ * along with RawTherapee. If not, see . */ #ifndef _SAVEASDLG_ -#define _SAVEASDLG_ #include #include "adjuster.h" @@ -62,6 +61,7 @@ class SaveAsDialog : public Gtk::Dialog, public FormatChangeListener { void okPressed (); void cancelPressed (); void formatChanged (Glib::ustring f); + bool keyPressed (GdkEventKey* event); };