console: add switch to turn off autoscroll (#540)
also fix keyborard not closing, when the console is touched and set Send button as translatable
This commit is contained in:
parent
6ce0ea7253
commit
d6672ee41f
@ -24,12 +24,23 @@ COLORS = {
|
|||||||
class ConsolePanel(ScreenPanel):
|
class ConsolePanel(ScreenPanel):
|
||||||
def initialize(self, panel_name):
|
def initialize(self, panel_name):
|
||||||
_ = self.lang.gettext
|
_ = self.lang.gettext
|
||||||
|
self.autoscroll = True
|
||||||
|
|
||||||
gcodes = self._screen._ws.send_method("server.gcode_store", {"count": 100}, self.gcode_response)
|
gcodes = self._screen._ws.send_method("server.gcode_store", {"count": 100}, self.gcode_response)
|
||||||
|
|
||||||
vbox = Gtk.VBox()
|
o1_lbl = Gtk.Label(_("Auto-scroll"))
|
||||||
vbox.set_hexpand(True)
|
o1_lbl.set_halign(Gtk.Align.END)
|
||||||
vbox.set_vexpand(True)
|
o1_switch = Gtk.Switch()
|
||||||
|
o1_switch.set_property("width-request", round(self._gtk.get_font_size()*6))
|
||||||
|
o1_switch.set_property("height-request", round(self._gtk.get_font_size()*3))
|
||||||
|
o1_switch.set_active(self.autoscroll)
|
||||||
|
o1_switch.connect("notify::active", self.set_autoscroll)
|
||||||
|
|
||||||
|
options = Gtk.HBox()
|
||||||
|
options.set_hexpand(True)
|
||||||
|
options.set_vexpand(False)
|
||||||
|
options.add(o1_lbl)
|
||||||
|
options.pack_start(o1_switch, False, 0, 5)
|
||||||
|
|
||||||
sw = Gtk.ScrolledWindow()
|
sw = Gtk.ScrolledWindow()
|
||||||
sw.set_hexpand(True)
|
sw.set_hexpand(True)
|
||||||
@ -38,7 +49,8 @@ class ConsolePanel(ScreenPanel):
|
|||||||
tb = Gtk.TextBuffer()
|
tb = Gtk.TextBuffer()
|
||||||
tv = Gtk.TextView()
|
tv = Gtk.TextView()
|
||||||
tv.set_buffer(tb)
|
tv.set_buffer(tb)
|
||||||
tv.set_sensitive(False)
|
tv.set_editable(False)
|
||||||
|
tv.set_cursor_visible(False)
|
||||||
tv.connect("size-allocate", self._autoscroll)
|
tv.connect("size-allocate", self._autoscroll)
|
||||||
|
|
||||||
sw.add(tv)
|
sw.add(tv)
|
||||||
@ -51,14 +63,16 @@ class ConsolePanel(ScreenPanel):
|
|||||||
entry.set_hexpand(True)
|
entry.set_hexpand(True)
|
||||||
entry.set_vexpand(False)
|
entry.set_vexpand(False)
|
||||||
entry.connect("focus-in-event", self._show_keyboard)
|
entry.connect("focus-in-event", self._show_keyboard)
|
||||||
|
entry.connect("focus-out-event", self._remove_keyboard)
|
||||||
entry.connect("activate", self._send_command)
|
entry.connect("activate", self._send_command)
|
||||||
|
|
||||||
enter = self._gtk.Button("Send")
|
enter = self._gtk.Button(_("Send"))
|
||||||
enter.set_hexpand(False)
|
enter.set_hexpand(False)
|
||||||
enter.connect("clicked", self._send_command)
|
enter.connect("clicked", self._send_command)
|
||||||
|
|
||||||
ebox.add(entry) # , True, 0, 0)
|
|
||||||
ebox.add(enter) # , True, 0, 0)
|
ebox.add(entry)
|
||||||
|
ebox.add(enter)
|
||||||
|
|
||||||
self.labels.update({
|
self.labels.update({
|
||||||
"entry": entry,
|
"entry": entry,
|
||||||
@ -67,9 +81,11 @@ class ConsolePanel(ScreenPanel):
|
|||||||
"tv": tv
|
"tv": tv
|
||||||
})
|
})
|
||||||
|
|
||||||
vbox.add(sw)
|
content_box = Gtk.VBox()
|
||||||
vbox.pack_end(ebox, False, 0, 0)
|
content_box.pack_start(options, False, 0, 0)
|
||||||
self.content.add(vbox)
|
content_box.add(sw)
|
||||||
|
content_box.pack_end(ebox, False, 0, 0)
|
||||||
|
self.content.add(content_box)
|
||||||
|
|
||||||
def add_gcode(self, type, time, message):
|
def add_gcode(self, type, time, message):
|
||||||
if type == "command":
|
if type == "command":
|
||||||
@ -103,13 +119,21 @@ class ConsolePanel(ScreenPanel):
|
|||||||
if action == "notify_gcode_response":
|
if action == "notify_gcode_response":
|
||||||
self.add_gcode("response", time.time(), data)
|
self.add_gcode("response", time.time(), data)
|
||||||
|
|
||||||
|
def set_autoscroll(self, *args):
|
||||||
|
self.autoscroll ^= True
|
||||||
|
logging.debug(self.autoscroll)
|
||||||
|
|
||||||
def _autoscroll(self, *args):
|
def _autoscroll(self, *args):
|
||||||
adj = self.labels['sw'].get_vadjustment()
|
if self.autoscroll:
|
||||||
adj.set_value(adj.get_upper() - adj.get_page_size())
|
adj = self.labels['sw'].get_vadjustment()
|
||||||
|
adj.set_value(adj.get_upper() - adj.get_page_size())
|
||||||
|
|
||||||
def _show_keyboard(self, *args):
|
def _show_keyboard(self, *args):
|
||||||
self._screen.show_keyboard()
|
self._screen.show_keyboard()
|
||||||
|
|
||||||
|
def _remove_keyboard(self, *args):
|
||||||
|
self._screen.remove_keyboard()
|
||||||
|
|
||||||
def _send_command(self, *args):
|
def _send_command(self, *args):
|
||||||
cmd = self.labels['entry'].get_text()
|
cmd = self.labels['entry'].get_text()
|
||||||
self.labels['entry'].set_text('')
|
self.labels['entry'].set_text('')
|
||||||
|
Loading…
x
Reference in New Issue
Block a user