Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- # Popover dialog on mouse position
- import gi
- import cairo
- gi.require_version('Gtk', '3.0')
- gi.require_version('Gdk', '3.0')
- from gi.repository import Gtk, Gdk
- class Popover(Gtk.Window):
- def __init__(self):
- Gtk.Window.__init__(self, Gtk.WindowType.TOPLEVEL)
- self.set_title("Popover")
- self.set_default_size(190, 75)
- self.connect("destroy", Gtk.main_quit)
- self.screen = self.get_screen()
- self.visual = self.screen.get_rgba_visual()
- if self.visual != None and self.screen.is_composited():
- print ("Composited")
- self.set_visual(self.visual)
- self.set_app_paintable(True)
- self.connect("draw", self.area_draw)
- box = Gtk.Box()
- box.set_spacing(5)
- box.set_orientation(Gtk.Orientation.VERTICAL)
- self.add(box)
- self.popover = Gtk.Popover()
- self.popover.set_position(Gtk.PositionType.TOP)
- self.popover.set_relative_to(box)
- box = Gtk.Box()
- box.set_spacing(5)
- box.set_orientation(Gtk.Orientation.VERTICAL)
- self.popover.add(box)
- button = Gtk.Button("Close")
- button.connect("button-press-event", Gtk.main_quit)
- label = Gtk.Label("Click this to close")
- box.add(button)
- checkbutton = Gtk.CheckButton("A CheckButton widget")
- box.add(checkbutton)
- self.popover.show_all()
- def area_draw(self, widget, cr):
- cr.set_source_rgba(0, 0, 0, 0)
- cr.set_operator(cairo.OPERATOR_SOURCE)
- cr.paint()
- cr.set_operator(cairo.OPERATOR_OVER)
- w2 = Popover()
- w2.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
- w2.connect("button-press-event", Gtk.main_quit)
- w2.connect("destroy", Gtk.main_quit)
- w2.connect("focus-out-event", Gtk.main_quit)
- w2.set_position(Gtk.WindowPosition.MOUSE)
- w2.set_decorated(False)
- w2.set_skip_taskbar_hint(True)
- w2.show()
- Gtk.main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement