aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/tunnelspage.go
diff options
context:
space:
mode:
authorSteven Honson <steven@honson.id.au>2019-05-11 22:04:08 +1000
committerJason A. Donenfeld <Jason@zx2c4.com>2019-05-11 17:33:22 +0200
commitdf2e2fb78d353e041e8772dcd62e310447120b33 (patch)
tree374939792068b6eeb7d6cbf62a46f4e3b61a9036 /ui/tunnelspage.go
parentui: edit requires further information (diff)
downloadwireguard-windows-df2e2fb78d353e041e8772dcd62e310447120b33.tar.xz
wireguard-windows-df2e2fb78d353e041e8772dcd62e310447120b33.zip
ui: tunnel cloning
Allows a tunnel to be cloned verbatim. It's not part of the toolbar or with a shortcut, as it's a rather obscure action. Signed-off-by: Steven Honson <steven@honson.id.au> [zx2c4: removed from toolbar and shortcut]
Diffstat (limited to 'ui/tunnelspage.go')
-rw-r--r--ui/tunnelspage.go24
1 files changed, 20 insertions, 4 deletions
diff --git a/ui/tunnelspage.go b/ui/tunnelspage.go
index 592e8d4f..32c89694 100644
--- a/ui/tunnelspage.go
+++ b/ui/tunnelspage.go
@@ -134,6 +134,7 @@ func (tp *TunnelsPage) CreateToolbar() {
importAction.SetShortcut(walk.Shortcut{walk.ModControl, walk.KeyO})
importAction.SetDefault(true)
importAction.Triggered().Attach(tp.onImport)
+ addMenu.Actions().Add(importAction)
addAction := walk.NewAction()
addAction.SetText("Add empty tunnel...")
addActionIcon, _ := loadSystemIcon("imageres", 2, imageSize.Width)
@@ -141,7 +142,6 @@ func (tp *TunnelsPage) CreateToolbar() {
addAction.SetImage(addActionImage)
addAction.SetShortcut(walk.Shortcut{walk.ModControl, walk.KeyN})
addAction.Triggered().Attach(tp.onAddTunnel)
- addMenu.Actions().Add(importAction)
addMenu.Actions().Add(addAction)
addMenuAction := walk.NewMenuAction(addMenu)
addMenuActionIcon, _ := loadSystemIcon("shell32", 149, imageSize.Width)
@@ -204,6 +204,10 @@ func (tp *TunnelsPage) CreateToolbar() {
editAction.SetShortcut(walk.Shortcut{walk.ModControl, walk.KeyE})
editAction.Triggered().Attach(tp.onEditTunnel)
contextMenu.Actions().Add(editAction)
+ cloneAction := walk.NewAction()
+ cloneAction.SetText("Clone selected tunnel...")
+ cloneAction.Triggered().Attach(tp.onCloneTunnel)
+ contextMenu.Actions().Add(cloneAction)
deleteAction2 := walk.NewAction()
deleteAction2.SetText("Remove selected tunnel(s)")
deleteAction2.SetShortcut(walk.Shortcut{0, walk.KeyDelete})
@@ -228,6 +232,7 @@ func (tp *TunnelsPage) CreateToolbar() {
toggleAction.SetEnabled(selected == 1)
selectAllAction.SetEnabled(selected < all)
editAction.SetEnabled(selected == 1)
+ cloneAction.SetEnabled(selected == 1)
}
tp.listView.SelectedIndexesChanged().Attach(setSelectionOrientedOptions)
setSelectionOrientedOptions()
@@ -418,11 +423,10 @@ func (tp *TunnelsPage) onTunnelsViewItemActivated() {
func (tp *TunnelsPage) onEditTunnel() {
tunnel := tp.listView.CurrentTunnel()
if tunnel == nil {
- // Misfired event?
return
}
- if config := runTunnelEditDialog(tp.Form(), tunnel); config != nil {
+ if config := runTunnelEditDialog(tp.Form(), tunnel, false); config != nil {
go func() {
priorState, err := tunnel.State()
tunnel.Delete()
@@ -435,8 +439,20 @@ func (tp *TunnelsPage) onEditTunnel() {
}
}
+func (tp *TunnelsPage) onCloneTunnel() {
+ tunnel := tp.listView.CurrentTunnel()
+ if tunnel == nil {
+ return
+ }
+
+ if config := runTunnelEditDialog(tp.Form(), tunnel, true); config != nil {
+ // Save new
+ tp.addTunnel(config)
+ }
+}
+
func (tp *TunnelsPage) onAddTunnel() {
- if config := runTunnelEditDialog(tp.Form(), nil); config != nil {
+ if config := runTunnelEditDialog(tp.Form(), nil, false); config != nil {
// Save new
tp.addTunnel(config)
}