From 0bc8cd5e206ca0c5450c4d0b5e4a6e011aee2a84 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Wed, 1 May 2019 18:30:07 +0200 Subject: ui: use icons instead of unicode font --- ui/icon/128.png | Bin 8419 -> 0 bytes ui/icon/16.png | Bin 869 -> 0 bytes ui/icon/256.png | Bin 17786 -> 0 bytes ui/icon/32.png | Bin 1951 -> 0 bytes ui/icon/48.png | Bin 2986 -> 0 bytes ui/icon/64.png | Bin 3922 -> 0 bytes ui/icon/add.svg | 2 ++ ui/icon/delete.svg | 2 ++ ui/icon/export.svg | 2 ++ ui/icon/icon.ico | Bin 117355 -> 0 bytes ui/icon/wireguard.svg | 2 ++ ui/iconprovider.go | 16 ++++----- ui/managewindow.go | 2 +- ui/tray.go | 2 +- ui/tunnelspage.go | 90 +++++++++++++++++++++++++++----------------------- ui/ui.go | 12 ++----- 16 files changed, 70 insertions(+), 60 deletions(-) delete mode 100644 ui/icon/128.png delete mode 100644 ui/icon/16.png delete mode 100644 ui/icon/256.png delete mode 100644 ui/icon/32.png delete mode 100644 ui/icon/48.png delete mode 100644 ui/icon/64.png create mode 100644 ui/icon/add.svg create mode 100644 ui/icon/delete.svg create mode 100644 ui/icon/export.svg delete mode 100644 ui/icon/icon.ico create mode 100644 ui/icon/wireguard.svg (limited to 'ui') diff --git a/ui/icon/128.png b/ui/icon/128.png deleted file mode 100644 index a3ba1ca0..00000000 Binary files a/ui/icon/128.png and /dev/null differ diff --git a/ui/icon/16.png b/ui/icon/16.png deleted file mode 100644 index 51c71e0e..00000000 Binary files a/ui/icon/16.png and /dev/null differ diff --git a/ui/icon/256.png b/ui/icon/256.png deleted file mode 100644 index 7b5f63e5..00000000 Binary files a/ui/icon/256.png and /dev/null differ diff --git a/ui/icon/32.png b/ui/icon/32.png deleted file mode 100644 index ee4acd97..00000000 Binary files a/ui/icon/32.png and /dev/null differ diff --git a/ui/icon/48.png b/ui/icon/48.png deleted file mode 100644 index 24ab1cb2..00000000 Binary files a/ui/icon/48.png and /dev/null differ diff --git a/ui/icon/64.png b/ui/icon/64.png deleted file mode 100644 index e0295697..00000000 Binary files a/ui/icon/64.png and /dev/null differ diff --git a/ui/icon/add.svg b/ui/icon/add.svg new file mode 100644 index 00000000..2e1dd028 --- /dev/null +++ b/ui/icon/add.svg @@ -0,0 +1,2 @@ + + diff --git a/ui/icon/delete.svg b/ui/icon/delete.svg new file mode 100644 index 00000000..6c204271 --- /dev/null +++ b/ui/icon/delete.svg @@ -0,0 +1,2 @@ + + diff --git a/ui/icon/export.svg b/ui/icon/export.svg new file mode 100644 index 00000000..caef7a2c --- /dev/null +++ b/ui/icon/export.svg @@ -0,0 +1,2 @@ + + diff --git a/ui/icon/icon.ico b/ui/icon/icon.ico deleted file mode 100644 index 9fd9f330..00000000 Binary files a/ui/icon/icon.ico and /dev/null differ diff --git a/ui/icon/wireguard.svg b/ui/icon/wireguard.svg new file mode 100644 index 00000000..b8ac5273 --- /dev/null +++ b/ui/icon/wireguard.svg @@ -0,0 +1,2 @@ + + diff --git a/ui/iconprovider.go b/ui/iconprovider.go index f9d3597e..64d5775d 100644 --- a/ui/iconprovider.go +++ b/ui/iconprovider.go @@ -17,7 +17,7 @@ type rectAndState struct { } type IconProvider struct { - baseIcon *walk.Icon + wireguardIcon *walk.Icon imagesByRectAndState map[rectAndState]*walk.Bitmap iconsByState map[service.TunnelState]*walk.Icon stoppedBrush *walk.SolidColorBrush @@ -121,10 +121,10 @@ func NewIconProvider(dpi int) (*IconProvider, error) { var disposables walk.Disposables defer disposables.Treat() - if tsip.baseIcon, err = walk.NewIconFromResourceId(1); err != nil { + if tsip.wireguardIcon, err = walk.NewIconFromResource("$wireguard.ico"); err != nil { return nil, err } - disposables.Add(tsip.baseIcon) + disposables.Add(tsip.wireguardIcon) if tsip.stoppedBrush, err = walk.NewSolidColorBrush(hexColor(colorStopped)); err != nil { return nil, err @@ -202,9 +202,9 @@ func (tsip *IconProvider) Dispose() { tsip.startedPen.Dispose() tsip.startedPen = nil } - if tsip.baseIcon != nil { - tsip.baseIcon.Dispose() - tsip.baseIcon = nil + if tsip.wireguardIcon != nil { + tsip.wireguardIcon.Dispose() + tsip.wireguardIcon = nil } if tsip.updateAvailableImage != nil { tsip.updateAvailableImage.Dispose() @@ -299,7 +299,7 @@ func (tsip *IconProvider) IconWithOverlayForState(state service.TunnelState) (*w return icon, nil } - size := tsip.baseIcon.Size() + size := tsip.wireguardIcon.Size() bmp, err := walk.NewBitmapWithTransparentPixels(size) if err != nil { @@ -313,7 +313,7 @@ func (tsip *IconProvider) IconWithOverlayForState(state service.TunnelState) (*w } defer canvas.Dispose() - if err := canvas.DrawImage(tsip.baseIcon, walk.Point{}); err != nil { + if err := canvas.DrawImage(tsip.wireguardIcon, walk.Point{}); err != nil { return nil, err } diff --git a/ui/managewindow.go b/ui/managewindow.go index 01e7f734..91dc39fb 100644 --- a/ui/managewindow.go +++ b/ui/managewindow.go @@ -41,7 +41,7 @@ func NewManageTunnelsWindow() (*ManageTunnelsWindow, error) { return nil, err } - mtw.SetIcon(iconProvider.baseIcon) + mtw.SetIcon(iconProvider.wireguardIcon) mtw.SetTitle("WireGuard") font, err := walk.NewFont("Segoe UI", 9, 0) if err != nil { diff --git a/ui/tray.go b/ui/tray.go index 492f820c..4f22fc4d 100644 --- a/ui/tray.go +++ b/ui/tray.go @@ -48,7 +48,7 @@ func NewTray(mtw *ManageTunnelsWindow) (*Tray, error) { func (tray *Tray) setup() error { tray.SetToolTip("WireGuard: Deactivated") tray.SetVisible(true) - tray.SetIcon(iconProvider.baseIcon) + tray.SetIcon(iconProvider.wireguardIcon) tray.MouseDown().Attach(func(x, y int, button walk.MouseButton) { if button == walk.LeftButton { diff --git a/ui/tunnelspage.go b/ui/tunnelspage.go index a305496e..1eca896a 100644 --- a/ui/tunnelspage.go +++ b/ui/tunnelspage.go @@ -55,47 +55,55 @@ func NewTunnelsPage() (*TunnelsPage, error) { tp.tunnelsView.ItemActivated().Attach(tp.onTunnelsViewItemActivated) tp.tunnelsView.CurrentIndexChanged().Attach(tp.updateConfView) - // ToolBar actions - { - // HACK: Because of https://github.com/lxn/walk/issues/481 - // we need to put the ToolBar into its own Composite. - toolBarContainer, _ := walk.NewComposite(tunnelsContainer) - hlayout := walk.NewHBoxLayout() - hlayout.SetMargins(walk.Margins{}) - toolBarContainer.SetLayout(hlayout) - - tunnelsToolBar, _ := walk.NewToolBarWithOrientationAndButtonStyle(toolBarContainer, walk.Horizontal, walk.ToolBarButtonTextOnly) - - importAction := walk.NewAction() - importAction.SetText("Import tunnels from file...") - importAction.Triggered().Attach(tp.onImport) - - addAction := walk.NewAction() - addAction.SetText("Add empty tunnel") - addAction.Triggered().Attach(tp.onAddTunnel) - - exportTunnelsAction := walk.NewAction() - exportTunnelsAction.SetText("Export tunnels to zip...") - exportTunnelsAction.Triggered().Attach(tp.onExportTunnels) - - addMenu, _ := walk.NewMenu() - tp.AddDisposable(addMenu) - addMenu.Actions().Add(addAction) - addMenu.Actions().Add(importAction) - addMenuAction, _ := tunnelsToolBar.Actions().AddMenu(addMenu) - addMenuAction.SetText("➕") - - deleteAction := walk.NewAction() - tunnelsToolBar.Actions().Add(deleteAction) - deleteAction.SetText("➖") - deleteAction.Triggered().Attach(tp.onDelete) - - settingsMenu, _ := walk.NewMenu() - tp.AddDisposable(settingsMenu) - settingsMenu.Actions().Add(exportTunnelsAction) - settingsMenuAction, _ := tunnelsToolBar.Actions().AddMenu(settingsMenu) - settingsMenuAction.SetText("⚙") - } + // HACK: Because of https://github.com/lxn/walk/issues/481 + // we need to put the ToolBar into its own Composite. + toolBarContainer, _ := walk.NewComposite(tunnelsContainer) + hlayout := walk.NewHBoxLayout() + hlayout.SetMargins(walk.Margins{}) + toolBarContainer.SetLayout(hlayout) + + tunnelsToolBar, _ := walk.NewToolBarWithOrientationAndButtonStyle(toolBarContainer, walk.Horizontal, walk.ToolBarButtonImageOnly) + imageSize := walk.Size{tp.DPI() / 6, tp.DPI() / 6} // Dividing by six is the same as dividing by 96 and multiplying by 16. TODO: Use dynamic DPI + imageList, _ := walk.NewImageList(imageSize, walk.RGB(255, 255, 255)) + tunnelsToolBar.SetImageList(imageList) + + addMenu, _ := walk.NewMenu() + tp.AddDisposable(addMenu) + importAction := walk.NewAction() + importAction.SetText("Import tunnel(s) from file...") + importAction.Triggered().Attach(tp.onImport) + addAction := walk.NewAction() + addAction.SetText("Add empty tunnel") + addAction.Triggered().Attach(tp.onAddTunnel) + addMenu.Actions().Add(addAction) + addMenu.Actions().Add(importAction) + addMenuAction := walk.NewMenuAction(addMenu) + addMenuActionIcon, _ := walk.NewIconFromResourceWithSize("add.ico", imageSize) + addMenuActionImage, _ := walk.NewBitmapFromIcon(addMenuActionIcon, imageSize) + addMenuAction.SetImage(addMenuActionImage) + addMenuAction.SetToolTip(importAction.Text()) + addMenuAction.Triggered().Attach(tp.onImport) + tunnelsToolBar.Actions().Add(addMenuAction) + + tunnelsToolBar.Actions().Add(walk.NewSeparatorAction()) + + deleteAction := walk.NewAction() + deleteActionIcon, _ := walk.NewIconFromResourceWithSize("delete.ico", imageSize) + deleteActionImage, _ := walk.NewBitmapFromIcon(deleteActionIcon, imageSize) + deleteAction.SetImage(deleteActionImage) + deleteAction.SetToolTip("Remove selected tunnel(s)") + deleteAction.Triggered().Attach(tp.onDelete) + tunnelsToolBar.Actions().Add(deleteAction) + + tunnelsToolBar.Actions().Add(walk.NewSeparatorAction()) + + exportAction := walk.NewAction() + exportActionIcon, _ := walk.NewIconFromResourceWithSize("export.ico", imageSize) + exportActionImage, _ := walk.NewBitmapFromIcon(exportActionIcon, imageSize) + exportAction.SetImage(exportActionImage) + exportAction.SetToolTip("Export all tunnels to zip...") + exportAction.Triggered().Attach(tp.onExportTunnels) + tunnelsToolBar.Actions().Add(exportAction) currentTunnelContainer, _ := walk.NewComposite(tp) vlayout = walk.NewVBoxLayout() diff --git a/ui/ui.go b/ui/ui.go index 2625423a..4aeb4f42 100644 --- a/ui/ui.go +++ b/ui/ui.go @@ -124,20 +124,14 @@ func onAbout(owner walk.Form) { dlg, _ := walk.NewDialogWithFixedSize(owner) dlg.SetTitle("About WireGuard") dlg.SetLayout(vbl) - dlg.SetIcon(iconProvider.baseIcon) + dlg.SetIcon(iconProvider.wireguardIcon) font, _ := walk.NewFont("Segoe UI", 9, 0) dlg.SetFont(font) - icon, err := walk.NewIconFromResourceIdWithSize(1, walk.Size{128, 128}) - if err != nil { - panic(err) - } - dlg.AddDisposable(icon) - iv, _ := walk.NewImageView(dlg) - iv.SetImage(icon) - + logo, _ := walk.NewIconFromResourceWithSize("$wireguard.ico", walk.Size{owner.DPI() * 4 / 3, owner.DPI() * 4 / 3}) + iv.SetImage(logo) wgFont, _ := walk.NewFont("Segoe UI", 16, walk.FontBold) wgLbl, _ := walk.NewLabel(dlg) -- cgit v1.2.3-59-g8ed1b