From 9662ca660ec96917afaf72139c76a3a1d11c8aae Mon Sep 17 00:00:00 2001 From: Jaex Date: Mon, 22 Feb 2016 00:22:07 +0200 Subject: [PATCH] Added icons and hotkeys to quick task menu --- ShareX/Properties/Resources.Designer.cs | 100 +++++++++++++++++++ ShareX/Properties/Resources.resx | 30 ++++++ ShareX/QuickTaskMenu.cs | 74 +++++++++++++- ShareX/Resources/notification-counter-00.png | Bin 0 -> 492 bytes ShareX/Resources/notification-counter-02.png | Bin 0 -> 424 bytes ShareX/Resources/notification-counter-03.png | Bin 0 -> 429 bytes ShareX/Resources/notification-counter-04.png | Bin 0 -> 421 bytes ShareX/Resources/notification-counter-05.png | Bin 0 -> 423 bytes ShareX/Resources/notification-counter-06.png | Bin 0 -> 428 bytes ShareX/Resources/notification-counter-07.png | Bin 0 -> 416 bytes ShareX/Resources/notification-counter-08.png | Bin 0 -> 434 bytes ShareX/Resources/notification-counter-09.png | Bin 0 -> 423 bytes ShareX/Resources/notification-counter.png | Bin 0 -> 407 bytes ShareX/ShareX.csproj | 10 ++ 14 files changed, 209 insertions(+), 5 deletions(-) create mode 100644 ShareX/Resources/notification-counter-00.png create mode 100644 ShareX/Resources/notification-counter-02.png create mode 100644 ShareX/Resources/notification-counter-03.png create mode 100644 ShareX/Resources/notification-counter-04.png create mode 100644 ShareX/Resources/notification-counter-05.png create mode 100644 ShareX/Resources/notification-counter-06.png create mode 100644 ShareX/Resources/notification-counter-07.png create mode 100644 ShareX/Resources/notification-counter-08.png create mode 100644 ShareX/Resources/notification-counter-09.png create mode 100644 ShareX/Resources/notification-counter.png diff --git a/ShareX/Properties/Resources.Designer.cs b/ShareX/Properties/Resources.Designer.cs index 23d037034..5337cee51 100644 --- a/ShareX/Properties/Resources.Designer.cs +++ b/ShareX/Properties/Resources.Designer.cs @@ -1383,6 +1383,106 @@ public static System.Drawing.Bitmap notebook { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter { + get { + object obj = ResourceManager.GetObject("notification_counter", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_00 { + get { + object obj = ResourceManager.GetObject("notification_counter_00", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_02 { + get { + object obj = ResourceManager.GetObject("notification_counter_02", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_03 { + get { + object obj = ResourceManager.GetObject("notification_counter_03", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_04 { + get { + object obj = ResourceManager.GetObject("notification_counter_04", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_05 { + get { + object obj = ResourceManager.GetObject("notification_counter_05", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_06 { + get { + object obj = ResourceManager.GetObject("notification_counter_06", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_07 { + get { + object obj = ResourceManager.GetObject("notification_counter_07", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_08 { + get { + object obj = ResourceManager.GetObject("notification_counter_08", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + public static System.Drawing.Bitmap notification_counter_09 { + get { + object obj = ResourceManager.GetObject("notification_counter_09", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/ShareX/Properties/Resources.resx b/ShareX/Properties/Resources.resx index 44b0a6b6f..1ae98c407 100644 --- a/ShareX/Properties/Resources.resx +++ b/ShareX/Properties/Resources.resx @@ -814,4 +814,34 @@ Would you like to restart ShareX? ..\Resources\layout-select.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\notification-counter.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-00.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-02.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-03.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-04.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-05.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-06.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-07.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-08.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\notification-counter-09.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ShareX/QuickTaskMenu.cs b/ShareX/QuickTaskMenu.cs index 7cc2a6c85..9effe9d39 100644 --- a/ShareX/QuickTaskMenu.cs +++ b/ShareX/QuickTaskMenu.cs @@ -24,6 +24,9 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using ShareX.HelpersLib; +using ShareX.Properties; +using System; +using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; @@ -34,29 +37,39 @@ public class QuickTaskMenu public delegate void TaskInfoSelectedEventHandler(QuickTaskInfo taskInfo); public TaskInfoSelectedEventHandler TaskInfoSelected; + private ContextMenuStrip cms; + private List quickTaskInfoList; + public void ShowMenu() { - ContextMenuStrip cms = new ContextMenuStrip + quickTaskInfoList = new List(); + + cms = new ContextMenuStrip() { - Font = new Font("Arial", 10f), - AutoClose = false, - ShowImageMargin = false + Font = new Font("Arial", 10f) }; + cms.KeyUp += Cms_KeyUp; + cms.Closed += (sender, e) => cms = null; + if (Program.Settings != null && Program.Settings.QuickTaskPresets != null && Program.Settings.QuickTaskPresets.Count > 0) { + int index = 0; + foreach (QuickTaskInfo taskInfo in Program.Settings.QuickTaskPresets) { if (taskInfo.IsValid) { ToolStripMenuItem tsmi = new ToolStripMenuItem { Text = taskInfo.ToString().Replace("&", "&&"), Tag = taskInfo }; + tsmi.Image = GetNumberImage(index); tsmi.Click += (sender, e) => { QuickTaskInfo selectedTaskInfo = ((ToolStripMenuItem)sender).Tag as QuickTaskInfo; - cms.Close(); OnTaskInfoSelected(selectedTaskInfo); }; cms.Items.Add(tsmi); + quickTaskInfoList.Add(taskInfo); + index++; } else { @@ -71,6 +84,7 @@ public void ShowMenu() // Translate ToolStripMenuItem tsmiEdit = new ToolStripMenuItem("Edit this menu..."); + tsmiEdit.Image = Resources.gear; tsmiEdit.Click += (sender, e) => { cms.Close(); @@ -81,6 +95,7 @@ public void ShowMenu() cms.Items.Add(new ToolStripSeparator()); ToolStripMenuItem tsmiCancel = new ToolStripMenuItem("Cancel"); + tsmiCancel.Image = Resources.cross; tsmiCancel.Click += (sender, e) => cms.Close(); cms.Items.Add(tsmiCancel); @@ -89,10 +104,59 @@ public void ShowMenu() cms.Show(cursorPosition); } + private void Cms_KeyUp(object sender, KeyEventArgs e) + { + switch (e.KeyCode) + { + case Keys.D1: case Keys.NumPad1: ExecuteTaskAt(0); break; + case Keys.D2: case Keys.NumPad2: ExecuteTaskAt(1); break; + case Keys.D3: case Keys.NumPad3: ExecuteTaskAt(2); break; + case Keys.D4: case Keys.NumPad4: ExecuteTaskAt(3); break; + case Keys.D5: case Keys.NumPad5: ExecuteTaskAt(4); break; + case Keys.D6: case Keys.NumPad6: ExecuteTaskAt(5); break; + case Keys.D7: case Keys.NumPad7: ExecuteTaskAt(6); break; + case Keys.D8: case Keys.NumPad8: ExecuteTaskAt(7); break; + case Keys.D9: case Keys.NumPad9: ExecuteTaskAt(8); break; + case Keys.D0: case Keys.NumPad0: ExecuteTaskAt(9); break; + } + } + + private Image GetNumberImage(int index) + { + switch (index) + { + case 0: return Resources.notification_counter; + case 1: return Resources.notification_counter_02; + case 2: return Resources.notification_counter_03; + case 3: return Resources.notification_counter_04; + case 4: return Resources.notification_counter_05; + case 5: return Resources.notification_counter_06; + case 6: return Resources.notification_counter_07; + case 7: return Resources.notification_counter_08; + case 8: return Resources.notification_counter_09; + case 9: return Resources.notification_counter_00; + } + + return null; + } + + private void ExecuteTaskAt(int index) + { + if (quickTaskInfoList != null && quickTaskInfoList.Count > 0 && quickTaskInfoList.Count > index) + { + OnTaskInfoSelected(quickTaskInfoList[index]); + } + } + protected void OnTaskInfoSelected(QuickTaskInfo taskInfo) { if (TaskInfoSelected != null) { + if (cms != null && !cms.IsDisposed) + { + cms.Close(); + } + TaskInfoSelected(taskInfo); } } diff --git a/ShareX/Resources/notification-counter-00.png b/ShareX/Resources/notification-counter-00.png new file mode 100644 index 0000000000000000000000000000000000000000..f77ff8020c03125438ad5b63fa2a634763701b5d GIT binary patch literal 492 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ+nVO$@hVV#(KIqhFJJ7op9RADNv;Cde!Pzz!QvUqY`148b;(t>uZ>Qb6wdQ)DOa8kkoxS|ixofvezqgZj+bFSbl4niU zt=TdgwnwgC+)?-0=kkS(Hx1TZS7lmuR!!}q#)Oj&d?(gsU)NYr>xgKJr_ zYY!JlOb9P%-`>4@FyTeg<~a9>Mi>1it|;&-2^Z*VRetDjW4ev@@7Z6iy8f_2 gLV)M+edb?mS@X|r+L*iD2pAa*p00i_>zopr0QC&er2qf` literal 0 HcmV?d00001 diff --git a/ShareX/Resources/notification-counter-02.png b/ShareX/Resources/notification-counter-02.png new file mode 100644 index 0000000000000000000000000000000000000000..d942c80ee488c74ddbd930ae7278ada5da83cd33 GIT binary patch literal 424 zcmV;Z0ayNsP)3c5VFly4qS#i zbMAM~3^Ss&MxJ3H=g18x>?hA6w@1K(1)P~cY>C9_%t$C)vfId0>g6CHEv_~iH?HTE zL&IQI0k-47aa|-q5WEcrin7CiwDYm=mp4%ayWPe~t%je;1mS1|$M?@ExyU?1YFA7X zCcCfueM||u9uBcqY`on+yIe(s7IgC}skPcMJj|ic2h> z_IhwXqc0000zc)YcIE37>x#UoA?Yvl-g~~B@6F%kb9F!03oC>3}m7R`AP-X)hZ_4E_4DEVG(ee_!o#bH3DK6 zi(U^OwHj>CL&%mSV+q)a4mQ*x%afpkT)mFVQVFYmf3Fn*0lycM01Kt2lhJ6FFBC3T zoet*fHFWlVMps|M;cTqb&tC`P@G8Fw@xVSC3@4=C9t8E6>(7r$y&MJn&$o~o@GHOo Xb~Jz8s$Y}!00000NkvXXu0mjfvIDip literal 0 HcmV?d00001 diff --git a/ShareX/Resources/notification-counter-04.png b/ShareX/Resources/notification-counter-04.png new file mode 100644 index 0000000000000000000000000000000000000000..4966b37db0fa54c2ec7ff021a060a41d8a38569a GIT binary patch literal 421 zcmV;W0b2fvP)>*)Oxd z`DVy6r4-7n3zS@?0ebfE%Giwt+?#-F0HMiPnCui0C3;ltsUhWCE+Dzw>i4f5A$Y85 zIO+7+G~w7bq3jwR$#%?}O^%FUg6cJz*0tjDCdaialsrA-mlIpcy z4{;FS0PsRUKr_+Efwov+KOEwHFi3TOHlyZ3Y|du(XNW&a?f2`o&zsG<6)bgK>D P00000NkvXXu0mjfkbSmt literal 0 HcmV?d00001 diff --git a/ShareX/Resources/notification-counter-05.png b/ShareX/Resources/notification-counter-05.png new file mode 100644 index 0000000000000000000000000000000000000000..e566b3f5be4e022fed028a9aaa1863814c9eac5c GIT binary patch literal 423 zcmV;Y0a*TtP)jYu z|1Zpt5CTPpgo2|mpp+JmL>Dq}tpX75rlG3qh?Yz5bvTT8SvDYcHf-Bm`94l3lizuNFhIq&>-=ivwh+f9B@Vnx^mC_! zW5d89r@(%XC<&SK6BVL}%4Mjkn&`9f7`0vx0Ru%Cg0Wg|0>)P)2Izb?ynY{XE6!+y z)piR_mhlCcxqxrh#O@M19(B8@w_5OLGe{g?1OYt$?&JYJg?L{t7MohLdEif{_+V#+ zH&;2;%Y43Zg?Rg$fYL|#f#{O^yy0qutbvW0kKr)kvT3G;bn>xfRlj^6qTNPqFo4qOAoe_{mUYG@=eZWrbxBbW zM-fhK8*jZH>V|<@xeUZHlHHOym#7dW#KkEjjmyypM!yd~3?Wz%pydJ>Uy&FftLiR) z?RKFxoA9?=Btd{5pqdNt*%EQH#@f#3xEhb)&1R5zeZc_t!1A9v_!eUQxm<2e8V$pn zOt9j~3O66|R_}|&#t~w52%!C6`I+d3ecrRokn>QCSDuh(&e1LQ+q9I_yaUObiJIg_B*2VZwOH*Of#Q^Nq; zHZ0dg;QLVP_3CplP;%@%Kr3HFQGJu9XbgwH`*F96%P6{%Wmwt+oi2%LO;nT72=Dzq z)NTi*Z>lJuev&K$5GktF;Cmi;JVw}VBb`n)7@TFu0k;$&c+U`k0nT%<09GeG`vXXrzrW`57}9kw2$1x82&5d-vhXpR z#Y^VRDS(cj@(ah4N{@ng@*qNKpP+>jL};~W(iZv`aDXRdo` z+P1aSG-lxdDak_6BCFnkvP3F5;jgbt>-KCv=fku%k}z&>-%10 z7*rKtI}RMzMG}VLTc@Mgwi}R6-VXxrYq^BeZsV|4!*Vo2)a$_sf>XAfW$qxgE2as> za4CLnG*GNo5hV$*UPEn6X6(QeQDWOD@;;q>-tTYfieeqdAf}k1l%*C=G6nM=hjw=<+heH%n2LyzCUd{q6wEp~6DTknKdCTx)=Buq>K4tyxTI>6rfdBa~+2P4?_APJ=klZ;DZR_sn5|uT8f}jZJJH8>ugjAmFAL@14DKuGr##@m$cSs zBNkdpYk*xho{6qIz?}fj93U4&x%sjd9GGymhft}>PJl_i?DekvFbp!wf))b4@5Avt z$oYKnG8!oko9rCHR6dBJAkA~Q{XUL|L#)#j*lZx8=$u0?8h2pYCC7nqT`UKK%BP6F zf0iXw)nvmC93n-WENmP5obW5!oVlw4@EQS(-?JD{N(uP`Ncrq51)J~78VDLk$QVex zIMen?99O%0IFZ* zC!!mkGiD8Qwq;G(PS}5ctM%hf!2f&;tpQ&G3;=encF^^l%D?~s002ovPDHLkV1lip Bv9SOE literal 0 HcmV?d00001 diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj index 398c2d89c..b47f8e877 100644 --- a/ShareX/ShareX.csproj +++ b/ShareX/ShareX.csproj @@ -1266,6 +1266,16 @@ + + + + + + + + + +