temp: show the popover if name is pressed for 1 second (longpress)
This commit is contained in:
parent
4cb17c18a9
commit
2902e95068
@ -3,7 +3,7 @@ import logging
|
|||||||
import contextlib
|
import contextlib
|
||||||
|
|
||||||
gi.require_version("Gtk", "3.0")
|
gi.require_version("Gtk", "3.0")
|
||||||
from gi.repository import Gtk, GLib, Pango
|
from gi.repository import Gtk, GLib
|
||||||
|
|
||||||
from ks_includes.screen_panel import ScreenPanel
|
from ks_includes.screen_panel import ScreenPanel
|
||||||
from ks_includes.widgets.graph import HeaterGraph
|
from ks_includes.widgets.graph import HeaterGraph
|
||||||
@ -20,6 +20,8 @@ class TemperaturePanel(ScreenPanel):
|
|||||||
|
|
||||||
def __init__(self, screen, title, back=True):
|
def __init__(self, screen, title, back=True):
|
||||||
super().__init__(screen, title, back)
|
super().__init__(screen, title, back)
|
||||||
|
self.popover_timeout = None
|
||||||
|
self.left_panel = None
|
||||||
self.popover_device = None
|
self.popover_device = None
|
||||||
self.h = 1
|
self.h = 1
|
||||||
self.tempdeltas = ["1", "5", "10", "25"]
|
self.tempdeltas = ["1", "5", "10", "25"]
|
||||||
@ -348,7 +350,8 @@ class TemperaturePanel(ScreenPanel):
|
|||||||
self.labels['da'].add_object(device, "temperatures", rgb, False, True)
|
self.labels['da'].add_object(device, "temperatures", rgb, False, True)
|
||||||
if can_target:
|
if can_target:
|
||||||
self.labels['da'].add_object(device, "targets", rgb, True, False)
|
self.labels['da'].add_object(device, "targets", rgb, True, False)
|
||||||
name.connect('clicked', self.select_heater, device)
|
name.connect('button-press-event', self.name_pressed, device)
|
||||||
|
name.connect('button-release-event', self.name_released, device)
|
||||||
else:
|
else:
|
||||||
name.connect("clicked", self.toggle_visibility, device)
|
name.connect("clicked", self.toggle_visibility, device)
|
||||||
self.labels['da'].set_showing(device, visible)
|
self.labels['da'].set_showing(device, visible)
|
||||||
@ -378,6 +381,16 @@ class TemperaturePanel(ScreenPanel):
|
|||||||
self.labels['devices'].show_all()
|
self.labels['devices'].show_all()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def name_pressed(self, widget, event, device):
|
||||||
|
self.popover_timeout = GLib.timeout_add_seconds(1, self.popover_popup, widget, device)
|
||||||
|
|
||||||
|
def name_released(self, widget, event, device):
|
||||||
|
if self.popover_timeout is not None:
|
||||||
|
GLib.source_remove(self.popover_timeout)
|
||||||
|
self.popover_timeout = None
|
||||||
|
if not self.popover_device:
|
||||||
|
self.select_heater(None, device)
|
||||||
|
|
||||||
def toggle_visibility(self, widget, device=None):
|
def toggle_visibility(self, widget, device=None):
|
||||||
if device is None:
|
if device is None:
|
||||||
device = self.popover_device
|
device = self.popover_device
|
||||||
@ -451,6 +464,7 @@ class TemperaturePanel(ScreenPanel):
|
|||||||
self.labels['popover_vbox'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
self.labels['popover_vbox'] = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||||
popover.add(self.labels['popover_vbox'])
|
popover.add(self.labels['popover_vbox'])
|
||||||
popover.set_position(Gtk.PositionType.BOTTOM)
|
popover.set_position(Gtk.PositionType.BOTTOM)
|
||||||
|
popover.connect('closed', self.popover_closed)
|
||||||
self.labels['popover'] = popover
|
self.labels['popover'] = popover
|
||||||
|
|
||||||
for d in self._printer.get_temp_store_devices():
|
for d in self._printer.get_temp_store_devices():
|
||||||
@ -473,7 +487,10 @@ class TemperaturePanel(ScreenPanel):
|
|||||||
self.grid.attach(self.create_right_panel(), 1, 0, 1, 1)
|
self.grid.attach(self.create_right_panel(), 1, 0, 1, 1)
|
||||||
self.grid.show_all()
|
self.grid.show_all()
|
||||||
|
|
||||||
def on_popover_clicked(self, widget, device):
|
def popover_closed(self, widget):
|
||||||
|
self.popover_device = None
|
||||||
|
|
||||||
|
def popover_popup(self, widget, device):
|
||||||
self.popover_device = device
|
self.popover_device = device
|
||||||
po = self.labels['popover']
|
po = self.labels['popover']
|
||||||
po.set_relative_to(widget)
|
po.set_relative_to(widget)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user