diff options
| author | fffw | 2015-02-08 16:12:36 +0800 |
|---|---|---|
| committer | fffw | 2015-02-08 16:12:36 +0800 |
| commit | 0b3ba10b6e00fafdf72e2f6c41e530daac45476a (patch) | |
| tree | 33a341d1fc8c3925a896f09b00154850b630b0c3 | |
| parent | cc1b27b47c1436c3075c02f78e0004f202b6e0ba (diff) | |
| download | systray-0b3ba10b6e00fafdf72e2f6c41e530daac45476a.tar.bz2 | |
wrap MenuItem attributes as methods
| -rw-r--r-- | example/main.go | 18 | ||||
| -rw-r--r-- | systray.go | 68 |
2 files changed, 61 insertions, 25 deletions
diff --git a/example/main.go b/example/main.go index 944fb6f..83f2dad 100644 --- a/example/main.go +++ b/example/main.go @@ -37,20 +37,18 @@ func onReady() { for { select { case <-mChange.Ch: - mChange.Title = "I've Changed" - mChange.Update() + mChange.SetTitle("I've Changed") case <-mChecked.Ch: - mChecked.Checked = !mChecked.Checked - if mChecked.Checked { - mChecked.Title = "Checked" + if mChecked.Checked() { + mChecked.Uncheck() + mChecked.SetTitle("Unchecked") } else { - mChecked.Title = "Unchecked" + mChecked.Check() + mChecked.SetTitle("Checked") } - mChecked.Update() case <-mEnabled.Ch: - mEnabled.Disabled = !mEnabled.Disabled - mEnabled.Title = "Disabled" - mEnabled.Update() + mChange.SetTitle("Disabled") + mEnabled.Disable() case <-mUrl.Ch: open.Run("https://www.getlantern.org") case <-mQuit.Ch: @@ -26,14 +26,14 @@ import ( type MenuItem struct { // id uniquely identify a menu item, not supposed to be modified id string - // Title is the text shown on menu item - Title string - // Tooltip is the text shown when pointing to menu item - Tooltip string - // Disabled menu item is grayed out and has no effect when clicked - Disabled bool - // Checked menu item has a tick before the title - Checked bool + // title is the text shown on menu item + title string + // tooltip is the text shown when pointing to menu item + tooltip string + // disabled menu item is grayed out and has no effect when clicked + disabled bool + // checked menu item has a tick before the title + checked bool // Ch is the channel which will be notified when the menu item is clicked Ch chan interface{} @@ -95,27 +95,65 @@ func AddMenuItem(title string, tooltip string) *MenuItem { id := uuid.New() item := &MenuItem{id, title, tooltip, false, false, nil} item.Ch = make(chan interface{}) - item.Update() + item.update() return item } -// Update propogates changes on a menu item to systray -func (item *MenuItem) Update() { +func (item *MenuItem) SetTitle(title string) { + item.title = title + item.update() +} + +func (item *MenuItem) SetTooltip(tooltip string) { + item.tooltip = tooltip + item.update() +} + +func (item *MenuItem) Disabled() bool { + return item.disabled +} + +func (item *MenuItem) Enable() { + item.disabled = false + item.update() +} + +func (item *MenuItem) Disable() { + item.disabled = true + item.update() +} + +func (item *MenuItem) Checked() bool { + return item.checked +} + +func (item *MenuItem) Check() { + item.checked = true + item.update() +} + +func (item *MenuItem) Uncheck() { + item.checked = false + item.update() +} + +// update propogates changes on a menu item to systray +func (item *MenuItem) update() { menuItemsLock.Lock() defer menuItemsLock.Unlock() menuItems[item.id] = item var disabled C.short = 0 - if item.Disabled { + if item.disabled { disabled = 1 } var checked C.short = 0 - if item.Checked { + if item.checked { checked = 1 } C.add_or_update_menu_item( C.CString(item.id), - C.CString(item.Title), - C.CString(item.Tooltip), + C.CString(item.title), + C.CString(item.tooltip), disabled, checked, ) |
