mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Remove VTE use textview for terminal
This commit is contained in:
parent
f1fdf2e5ca
commit
97bf3d90fe
@ -1,7 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<interface>
|
<interface>
|
||||||
<!-- interface-requires gtk+ 3.0 -->
|
<!-- interface-requires gtk+ 3.0 -->
|
||||||
<!-- interface-requires vte 0.0 -->
|
|
||||||
<!-- interface-naming-policy toplevel-contextual -->
|
<!-- interface-naming-policy toplevel-contextual -->
|
||||||
<object class="GtkAdjustment" id="brightness_adjust">
|
<object class="GtkAdjustment" id="brightness_adjust">
|
||||||
<property name="lower">-2</property>
|
<property name="lower">-2</property>
|
||||||
@ -1157,15 +1156,13 @@
|
|||||||
<object class="GtkScrolledWindow" id="vte_scrolledwindow">
|
<object class="GtkScrolledWindow" id="vte_scrolledwindow">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
|
<signal name="size-allocate" handler="on_vte_size_allocate" swapped="no"/>
|
||||||
<child>
|
<child>
|
||||||
<object class="VteTerminal" id="terminal">
|
<object class="GtkTextView" id="vte_textview">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="app_paintable">True</property>
|
|
||||||
<property name="can_focus">True</property>
|
<property name="can_focus">True</property>
|
||||||
<property name="background_tint_color">#ffff0fa0ffff</property>
|
<property name="editable">False</property>
|
||||||
<property name="encoding">UTF-8</property>
|
<property name="wrap_mode">word</property>
|
||||||
<property name="scroll_on_keystroke">True</property>
|
|
||||||
<property name="scroll_on_output">False</property>
|
|
||||||
</object>
|
</object>
|
||||||
</child>
|
</child>
|
||||||
</object>
|
</object>
|
||||||
|
|||||||
@ -2,8 +2,8 @@
|
|||||||
import pydfu
|
import pydfu
|
||||||
import openmv
|
import openmv
|
||||||
import gtk
|
import gtk
|
||||||
import vte
|
|
||||||
import gobject
|
import gobject
|
||||||
|
import pango
|
||||||
import serial
|
import serial
|
||||||
import usb.core
|
import usb.core
|
||||||
import usb.util
|
import usb.util
|
||||||
@ -79,12 +79,17 @@ class OMVGtk:
|
|||||||
# Configure source viewer
|
# Configure source viewer
|
||||||
self.buffer = CodeBuffer(lang=SyntaxLoader("python"))
|
self.buffer = CodeBuffer(lang=SyntaxLoader("python"))
|
||||||
self.buffer.connect("changed", self.text_changed)
|
self.buffer.connect("changed", self.text_changed)
|
||||||
self.builder.get_object("src_scrolledwindow").add(gtk.TextView(self.buffer))
|
tabs = pango.TabArray(1, True)
|
||||||
|
tabs.set_tab(0, pango.TAB_LEFT, 8*4) #seems right
|
||||||
|
txtview = gtk.TextView(self.buffer)
|
||||||
|
txtview.set_tabs(tabs)
|
||||||
|
self.builder.get_object("src_scrolledwindow").add(txtview)
|
||||||
|
|
||||||
#configure the terminal
|
# Configure terminal window
|
||||||
self.fd = -1
|
self.terminal_scroll = self.builder.get_object('vte_scrolledwindow')
|
||||||
self.terminal = self.builder.get_object('terminal')
|
self.terminal = self.builder.get_object('vte_textview')
|
||||||
self.terminal.set_size(80,24)
|
self.terminal.modify_base(gtk.STATE_NORMAL, gtk.gdk.color_parse('black'))
|
||||||
|
self.terminal.modify_text(gtk.STATE_NORMAL, gtk.gdk.color_parse('green'))
|
||||||
|
|
||||||
# get drawingarea
|
# get drawingarea
|
||||||
self.pixbuf = None
|
self.pixbuf = None
|
||||||
@ -125,6 +130,7 @@ class OMVGtk:
|
|||||||
"on_zoomout_clicked" : self.zoomout_clicked,
|
"on_zoomout_clicked" : self.zoomout_clicked,
|
||||||
"on_bestfit_clicked" : self.bestfit_clicked,
|
"on_bestfit_clicked" : self.bestfit_clicked,
|
||||||
"on_updatefb_clicked" : self.updatefb_clicked,
|
"on_updatefb_clicked" : self.updatefb_clicked,
|
||||||
|
"on_vte_size_allocate" : self.scroll_terminal,
|
||||||
}
|
}
|
||||||
self.builder.connect_signals(signals)
|
self.builder.connect_signals(signals)
|
||||||
|
|
||||||
@ -186,13 +192,10 @@ class OMVGtk:
|
|||||||
sleep(wait)
|
sleep(wait)
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
self.terminal = self.builder.get_object('terminal')
|
|
||||||
try:
|
try:
|
||||||
# open VCP and configure the terminal
|
# open VCP and configure the terminal
|
||||||
self.fd = os.open(self.config.get("main", "serial_port"), os.O_RDWR)
|
self.serial = serial.Serial(self.config.get("main", "serial_port"), 115200, timeout=0.001)
|
||||||
self.terminal.reset(True, True)
|
gobject.gobject.idle_add(omvgtk.update_terminal)
|
||||||
self.terminal.set_size(80,24)
|
|
||||||
self.terminal.set_pty(self.fd)
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.show_message_dialog(gtk.MESSAGE_ERROR, "Failed to connect to OpenMV\n%s"%e)
|
self.show_message_dialog(gtk.MESSAGE_ERROR, "Failed to connect to OpenMV\n%s"%e)
|
||||||
return
|
return
|
||||||
@ -214,15 +217,9 @@ class OMVGtk:
|
|||||||
map(lambda x:x.set_sensitive(True), self.controls)
|
map(lambda x:x.set_sensitive(True), self.controls)
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
try:
|
|
||||||
# close VCP
|
|
||||||
os.close(self.fd)
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
#reset terminal
|
#reset terminal
|
||||||
self.terminal.set_pty(-1)
|
#self.terminal.set_pty(-1)
|
||||||
self.terminal.reset(True, True)
|
#self.terminal.reset(True, True)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# stop running code
|
# stop running code
|
||||||
@ -336,7 +333,7 @@ class OMVGtk:
|
|||||||
# call dfu-util
|
# call dfu-util
|
||||||
openmv.enter_dfu()
|
openmv.enter_dfu()
|
||||||
sleep(1.0)
|
sleep(1.0)
|
||||||
gobject.gobject.idle_add(self.fwupdate_task, state);
|
gobject.gobject.idle_add(self.fwupdate_task, state)
|
||||||
else:
|
else:
|
||||||
dialog.hide()
|
dialog.hide()
|
||||||
|
|
||||||
@ -396,6 +393,16 @@ class OMVGtk:
|
|||||||
self.statusbar.pop(self.statusbar_ctx)
|
self.statusbar.pop(self.statusbar_ctx)
|
||||||
self.statusbar.push(self.statusbar_ctx, rgb)
|
self.statusbar.push(self.statusbar_ctx, rgb)
|
||||||
|
|
||||||
|
def scroll_terminal(self, widget, event):
|
||||||
|
adj = self.terminal_scroll.get_vadjustment()
|
||||||
|
adj.set_value(adj.upper - adj.page_size)
|
||||||
|
|
||||||
|
def update_terminal(self):
|
||||||
|
if (self.serial.readable()):
|
||||||
|
buffer = self.terminal.get_buffer()
|
||||||
|
buffer.insert(buffer.get_end_iter(), self.serial.readline())
|
||||||
|
return True
|
||||||
|
|
||||||
def update_drawing(self):
|
def update_drawing(self):
|
||||||
if (not self.connected):
|
if (not self.connected):
|
||||||
return True
|
return True
|
||||||
@ -410,7 +417,7 @@ class OMVGtk:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
if fb:
|
if fb:
|
||||||
# create pixbuf from np array
|
# create pixbuf from RGB888
|
||||||
self.pixbuf =gtk.gdk.pixbuf_new_from_data(fb[2], gtk.gdk.COLORSPACE_RGB, False, 8, fb[0], fb[1], fb[0]*3)
|
self.pixbuf =gtk.gdk.pixbuf_new_from_data(fb[2], gtk.gdk.COLORSPACE_RGB, False, 8, fb[0], fb[1], fb[0]*3)
|
||||||
self.pixbuf = self.pixbuf.scale_simple(fb[0]*SCALE, fb[1]*SCALE, gtk.gdk.INTERP_BILINEAR)
|
self.pixbuf = self.pixbuf.scale_simple(fb[0]*SCALE, fb[1]*SCALE, gtk.gdk.INTERP_BILINEAR)
|
||||||
|
|
||||||
@ -583,5 +590,5 @@ class OMVGtk:
|
|||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
omvgtk = OMVGtk()
|
omvgtk = OMVGtk()
|
||||||
omvgtk.window.show_all()
|
omvgtk.window.show_all()
|
||||||
gobject.gobject.idle_add(omvgtk.update_drawing);
|
gobject.gobject.idle_add(omvgtk.update_drawing)
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user