From ac707a2c1a34dde5e523f4c74a26c195f6a1a6d7 Mon Sep 17 00:00:00 2001 From: sui Date: Wed, 7 Jan 2015 09:18:54 +0800 Subject: [PATCH] select serveritem at ConfigForm, not only tray menu. --- shadowsocks-csharp/Data/cn.txt | 1 + shadowsocks-csharp/View/ConfigForm.cs | 40 +++++++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/shadowsocks-csharp/Data/cn.txt b/shadowsocks-csharp/Data/cn.txt index 63e95167..78f5d19e 100644 --- a/shadowsocks-csharp/Data/cn.txt +++ b/shadowsocks-csharp/Data/cn.txt @@ -43,3 +43,4 @@ Disabled=已禁用代理 Shadowsocks URI=Shadowsocks URI Shadowsocks URI Parse=Shadowsocks URI解析 URI Parse=URI解析 +Select=使用 diff --git a/shadowsocks-csharp/View/ConfigForm.cs b/shadowsocks-csharp/View/ConfigForm.cs index 92f07fed..cf5080c3 100755 --- a/shadowsocks-csharp/View/ConfigForm.cs +++ b/shadowsocks-csharp/View/ConfigForm.cs @@ -20,6 +20,8 @@ namespace Shadowsocks.View private Configuration _modifiedConfiguration; private int _oldSelectedIndex = -1; + private ContextMenuStrip ServersListBoxContextMenu = null; + public ConfigForm(ShadowsocksController controller) { this.Font = System.Drawing.SystemFonts.MessageBoxFont; @@ -38,6 +40,38 @@ namespace Shadowsocks.View LoadCurrentConfiguration(); } + private void ServersListBoxContextMenu_Opening(object sender, CancelEventArgs e) + { + //clear the menu and add custom items + string contextItemText = I18N.GetString("Select"); + + ServersListBoxContextMenu.Items.Clear(); + ToolStripItem item = new ToolStripMenuItem(); + item.Name = string.Format("{0}", ServersListBox.SelectedIndex.ToString()); + item.Text = string.Format("{0} - {1}", contextItemText, ServersListBox.SelectedItem.ToString()); + ServersListBoxContextMenu.Items.Add(item); + ServersListBoxContextMenu.ItemClicked += new ToolStripItemClickedEventHandler(ServersListBoxContextMenu_ItemClicked); + } + + void ServersListBoxContextMenu_ItemClicked(object sender, ToolStripItemClickedEventArgs e) + { + ToolStripItem item = e.ClickedItem; + controller.SelectServerIndex(int.Parse(item.Name)); + } + + private void ServersListBox_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + //select the item under the mouse pointer + ServersListBox.SelectedIndex = ServersListBox.IndexFromPoint(e.Location); + if (ServersListBox.SelectedIndex != -1) + { + ServersListBoxContextMenu.Show(); + } + } + } + private void UpdateTexts() { AddButton.Text = I18N.GetString("&Add"); @@ -141,7 +175,9 @@ namespace Shadowsocks.View private void ConfigForm_Load(object sender, EventArgs e) { - + ServersListBoxContextMenu = new ContextMenuStrip(); + ServersListBoxContextMenu.Opening += new CancelEventHandler(ServersListBoxContextMenu_Opening); + ServersListBox.ContextMenuStrip = ServersListBoxContextMenu; } private void ServersListBox_SelectedIndexChanged(object sender, EventArgs e) @@ -204,7 +240,7 @@ namespace Shadowsocks.View return; } controller.SaveServers(_modifiedConfiguration.configs); - this.Close(); + //this.Close(); } private void CancelButton_Click(object sender, EventArgs e)