From 9ab0d2b2f303ba91aae255f98b258338b4463934 Mon Sep 17 00:00:00 2001 From: Hombre Date: Sat, 22 Feb 2014 14:09:36 +0100 Subject: [PATCH] Contextual cursor shape in "On Preview" editing mode for the Gradient tool --- rtdata/images/move-1D-h.png | Bin 0 -> 499 bytes rtdata/images/move-1D-v.png | Bin 0 -> 612 bytes rtdata/images/move-2D.png | Bin 0 -> 750 bytes rtdata/images/move-rotate.png | Bin 0 -> 1177 bytes rtgui/cursormanager.cc | 20 +- rtgui/cursormanager.h | 7 +- rtgui/gradient.cc | 22 +- tools/source_icons/scalable/move-1D-h.svg | 297 +++++++++++++++++++ tools/source_icons/scalable/move-1D-v.svg | 297 +++++++++++++++++++ tools/source_icons/scalable/move-2D.svg | 297 +++++++++++++++++++ tools/source_icons/scalable/rotate-move.svg | 301 ++++++++++++++++++++ 11 files changed, 1233 insertions(+), 8 deletions(-) create mode 100644 rtdata/images/move-1D-h.png create mode 100644 rtdata/images/move-1D-v.png create mode 100644 rtdata/images/move-2D.png create mode 100644 rtdata/images/move-rotate.png create mode 100644 tools/source_icons/scalable/move-1D-h.svg create mode 100644 tools/source_icons/scalable/move-1D-v.svg create mode 100644 tools/source_icons/scalable/move-2D.svg create mode 100644 tools/source_icons/scalable/rotate-move.svg diff --git a/rtdata/images/move-1D-h.png b/rtdata/images/move-1D-h.png new file mode 100644 index 0000000000000000000000000000000000000000..44babcfb4cd58fc1206f90ba538580a9e8edee7e GIT binary patch literal 499 zcmVq6y zC#p`K2m~S`3w?w@AaLSfU3Gn5pdtw+5$#SzlX6XMQz&HI%zX3XgWVagC7ryV`IOiUUQr1Vk5CDo&-j3?A@B7!zx%;A&*B_4OV{f3fesa!D0bKP5 zms4(-`GuKZmQ!x#V=wNpubgvJt@YD<>e3jq={q8#yDZCY+qR9{ zwvDqayCtH#zQ!1{sjBKyDfPIRgd+ez6h*TnNw!_riHJy=rfUGh{YHk&yt3BHA*{8+ z%qsxlUNcP7bS)y%b)6(hvW=o>cCyDqQ3`?}7%8Q8bzQ$3W4;_0rGSWLu1UkuIqQD)Gi2uQBle#crO@et)Br%9}FNSqK27Q%)BC^20+{g1Cagf p;86Ga*X=jIn|D5&XYk*FKL8VLwHQOiWKsYC002ovPDHLkV1lk_*M$H8 literal 0 HcmV?d00001 diff --git a/rtdata/images/move-1D-v.png b/rtdata/images/move-1D-v.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc1c7e686a0e0c0c785253bfefab19f6387c251 GIT binary patch literal 612 zcmV-q0-ODbP)<}GAE6`& znsz7&+y{u3j2Q$DF4Qd;LuV}!1cEhmP?k=nqd<@kU@#5{B%8YqX}9(y+kNYM|KGiP z_vaoNN{u@4{j2pE0A9aaf2dPW>lEFM8fT2L6UNxd-KcT)U%*j7dX&2&%uo6P_KN-5-d zeoQGn1@LJvuu|$9fGo?hzvUiGT2j{)yGAWn06-LwMida^4R-=Z0kQ7K{F-yV z$NV}9h;=ZSF?MO&_IVt~RvgEcZQJLJvCAr*amGBF?9=6_!t1nvb7I0nnJpgE}CuLb) zRq1N`_>a}9I^7w(YZyoI+pn+wk$xCTz1|BA5<)yGrDi5=<&2|%^qS4)kNJGg0bno~6r0WF&zKE!KStV-Ab0000_5tACr~c33eV{*A%AHc@s?$c7rUKB-UiYSVVl(GjPJ>hKRa=E@S#)M&Lvf1p7ZQJ_` zZQhIE`39*}s?0eb)oQhSt@Xpio^K$8sJpH^ilWFwQDj`#9SI@o(>{O=t#!XvtKDuU^z>8$!20_7@7vp3*YnMfR~ZB2m0w<7-UWc`>+9|J+jrld g(kz^c=l)Fp0JMcD^4;OB;s5{u07*qoM6N<$f+!4IL;wH) literal 0 HcmV?d00001 diff --git a/rtdata/images/move-rotate.png b/rtdata/images/move-rotate.png new file mode 100644 index 0000000000000000000000000000000000000000..70309972b7810edfd0c0fb586d99ac3804ee8d8b GIT binary patch literal 1177 zcmV;K1ZMk*P)h4!Kyh~bxjWfx_FapK-==R6%XQtKEGB;U z@+`9_P0KgzblyO)<%R#r$;Q`1&s zW25iPnKRHdtym}&!T=U_tN`FsRdp+wObX7qIDY(i9>AObocUE%9io&zp_D#RRdoo! z2>`DG=+QLobHCsJv!WU$>aJ2LP(7_Mbj|`jTzi6aW}w zmr|(|&R*nw0OkRV?X_9nx=~7L2>>#g3}jhe_QsbasmHc$8i_;@i9}%AHkBl)r_7o? z<$+aIRZ9TCIfoFUa8S}w{j%#`&>OC=?z%c%ZemwnA0aW4TR{jKyLV zOG`_*diAP&?%cT(hG9I6+fs{H+%(N^BuPrm-1L1Lx1|>k0{`b+8tp^XTsGMj#MCI-N#uZ}0Z(?5yj$u4yshmUEujMb7!< z&CSiysZ*!kjz*(ye}BK$(b4hDsM%~53kwS+LdalPDt4vPI7RnhVZ1apiO00000NkvXXu0mjf*W4&j literal 0 HcmV?d00001 diff --git a/rtgui/cursormanager.cc b/rtgui/cursormanager.cc index 99bdb6701..a625c7adc 100644 --- a/rtgui/cursormanager.cc +++ b/rtgui/cursormanager.cc @@ -44,11 +44,19 @@ void CursorManager::init (Glib::RefPtr mainWin) { Glib::RefPtr close_hand = safe_create_from_file("closedhand.png"); Glib::RefPtr wbpick = safe_create_from_file("gtk-color-picker-small.png"); Glib::RefPtr empty = safe_create_from_file("empty.png"); - + Glib::RefPtr move2D = safe_create_from_file("move-2D.png"); + Glib::RefPtr move1DH = safe_create_from_file("move-1D-h.png"); + Glib::RefPtr move1DV = safe_create_from_file("move-1D-v.png"); + Glib::RefPtr moveRotate = safe_create_from_file("move-rotate.png"); + cHand = hand ? new Gdk::Cursor (cAdd->get_display(), hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2); cClosedHand = close_hand ? new Gdk::Cursor (cAdd->get_display(), close_hand, 10, 10) : new Gdk::Cursor (Gdk::HAND2); cWB = wbpick ? new Gdk::Cursor (cAdd->get_display(), wbpick, 1, 12) : new Gdk::Cursor (Gdk::ARROW); cHidden = empty ? new Gdk::Cursor (cAdd->get_display(), empty, 12, 12) : new Gdk::Cursor (Gdk::FLEUR); + cMove2D = move2D ? new Gdk::Cursor (cAdd->get_display(), move2D, 11, 11) : new Gdk::Cursor (Gdk::FLEUR); + cMove1DH = move1DH ? new Gdk::Cursor (cAdd->get_display(), move1DH, 11, 11) : new Gdk::Cursor (Gdk::FLEUR); + cMove1DV = move1DV ? new Gdk::Cursor (cAdd->get_display(), move1DV, 11, 11) : new Gdk::Cursor (Gdk::FLEUR); + cMoveRotate = moveRotate ? new Gdk::Cursor (cAdd->get_display(), moveRotate, 11, 11) : new Gdk::Cursor (Gdk::CIRCLE); mainWindow = mainWin; } @@ -57,7 +65,7 @@ void CursorManager::init (Glib::RefPtr mainWin) { void CursorManager::setCursor (Glib::RefPtr window, CursorShape shape) { if (shape==CSArrow) - // set_cursor without any arguments to select system default + // set_cursor without any arguments to select system default window->set_cursor (); else if (shape==CSOpenHand) window->set_cursor (*cHand); @@ -79,6 +87,14 @@ void CursorManager::setCursor (Glib::RefPtr window, CursorShape sha window->set_cursor (*cResizeBottomLeft); else if (shape==CSResizeBottomRight) window->set_cursor (*cResizeBottomRight); + else if (shape==CSMove2D) + window->set_cursor (*cMove2D); + else if (shape==CSMove1DH) + window->set_cursor (*cMove1DH); + else if (shape==CSMove1DV) + window->set_cursor (*cMove1DV); + else if (shape==CSMoveRotate) + window->set_cursor (*cMoveRotate); else if (shape==CSSpotWB) window->set_cursor (*cWB); else if (shape==CSCropSelect) diff --git a/rtgui/cursormanager.h b/rtgui/cursormanager.h index 19b024155..1302708c7 100644 --- a/rtgui/cursormanager.h +++ b/rtgui/cursormanager.h @@ -25,13 +25,14 @@ enum CursorShape { CSArrow, CSOpenHand, CSClosedHand, CSMove, CSMoveLeft, CSMoveRight, CSResizeWidth, CSResizeHeight, CSResizeDiagonal, CSResizeTopLeft, CSResizeTopRight, CSResizeBottomLeft, CSResizeBottomRight, + CSMove2D, CSMove1DH, CSMove1DV, CSMoveRotate, CSSpotWB, CSCropSelect, CSStraighten, CSPlus, CSWait, CSEmpty }; class CursorManager { protected: - Gdk::Cursor* cResizeWidth; + Gdk::Cursor* cResizeWidth; Gdk::Cursor* cResizeHeight; Gdk::Cursor* cResizeDiag; Gdk::Cursor* cResizeTopLeft; @@ -50,6 +51,10 @@ class CursorManager { Gdk::Cursor* cClosedHand; Gdk::Cursor* cWB; Gdk::Cursor* cHidden; + Gdk::Cursor* cMove2D; + Gdk::Cursor* cMove1DH; + Gdk::Cursor* cMove1DV; + Gdk::Cursor* cMoveRotate; Glib::RefPtr mainWindow; public: diff --git a/rtgui/gradient.cc b/rtgui/gradient.cc index 177b19668..dacba208d 100644 --- a/rtgui/gradient.cc +++ b/rtgui/gradient.cc @@ -310,12 +310,24 @@ void Gradient::editToggled () { unsubscribe(); } -// TODO CursorShape Gradient::getCursor(int objectID) { - EditDataProvider* editProvider = getEditProvider(); - if (editProvider->object >= 0 || editProvider->object<=2) - return CSMove; - return CSOpenHand; + switch (objectID) { + case (0): + case (1): + return CSMoveRotate; + case (2): + case (3): + { + int angle = degree->getIntValue(); + if (angle<-135 || (angle>=-45 && angle<=45) || angle>135) + return CSMove1DV; + return CSMove1DH; + } + case (4): + return CSMove2D; + default: + return CSOpenHand; + } } bool Gradient::mouseOver(int modifierKey) { diff --git a/tools/source_icons/scalable/move-1D-h.svg b/tools/source_icons/scalable/move-1D-h.svg new file mode 100644 index 000000000..64514eed1 --- /dev/null +++ b/tools/source_icons/scalable/move-1D-h.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/move-1D-v.svg b/tools/source_icons/scalable/move-1D-v.svg new file mode 100644 index 000000000..24b49a7de --- /dev/null +++ b/tools/source_icons/scalable/move-1D-v.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/move-2D.svg b/tools/source_icons/scalable/move-2D.svg new file mode 100644 index 000000000..bb0eece8f --- /dev/null +++ b/tools/source_icons/scalable/move-2D.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + diff --git a/tools/source_icons/scalable/rotate-move.svg b/tools/source_icons/scalable/rotate-move.svg new file mode 100644 index 000000000..362803b65 --- /dev/null +++ b/tools/source_icons/scalable/rotate-move.svg @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + +