sonist-gtk/ui/option_menu.py

72 lines
1.6 KiB
Python

#!/usr/bin/env python3
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, Gdk, GObject
from .image import ScaleImage
class OptionMenu(Gtk.Menu):
app = None
on_top = False
def __init__(self, app):
Gtk.Menu.__init__(self)
self.app = app
btn_icos = [
'./usr/share/sonist/setting.png',
'./usr/share/sonist/pin.png',
'./usr/share/sonist/switch.png',
'./usr/share/sonist/info.png'
]
btn_txts = [
'首选项',
'窗口置顶',
'退出应用',
'关于播放器'
]
for i in range(4):
item = Gtk.MenuItem()
box = Gtk.Box(spacing = 0)
label = Gtk.Label(label = btn_txts[i])
img = ScaleImage(btn_icos[i]).resize(16, 16)
box.set_size_request(92, 32)
box.pack_start(img, False, False, 0)
box.pack_start(label, False, False, 6)
item.name = btn_txts[i]
item.add(box)
item.connect('activate', self.on_menu_select)
self.append(item)
self.show_all()
def on_menu_select(self, item):
match(item.name):
case '首选项':
pass
case '窗口置顶':
self.on_top = not self.on_top
self.app.window.set_keep_above(self.on_top)
if self.on_top:
item.select()
else:
item.deselect()
case '退出应用':
self.app.quit_all()
case '关于播放器':
self.app.about.present()
def show(self, widget):
# 在按钮下方显示菜单
self.popup_at_widget(widget, Gdk.Gravity.NORTH_WEST, Gdk.Gravity.NORTH_WEST, None)
python + gtk3开发的基于mpd后端的音乐播放器
Python 99.1%
Shell 0.9%