83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
# Copyright (C) 2006, Red Hat, Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
import gtk
|
|
import vte
|
|
import pango
|
|
|
|
from sugar.activity.Activity import Activity
|
|
|
|
_TERMINAL_ACTIVITY_TYPE = "_terminal._tcp"
|
|
|
|
class Terminal(gtk.HBox):
|
|
def __init__(self):
|
|
gtk.HBox.__init__(self, False, 4)
|
|
|
|
self._vte = vte.Terminal()
|
|
self._configure_vte()
|
|
self._vte.set_size(30, 5)
|
|
self._vte.set_size_request(200, 50)
|
|
self._vte.show()
|
|
self.pack_start(self._vte)
|
|
|
|
self._scrollbar = gtk.VScrollbar(self._vte.get_adjustment())
|
|
self._scrollbar.show()
|
|
self.pack_start(self._scrollbar, False, False, 0)
|
|
|
|
self._vte.connect("child-exited", lambda term: term.fork_command())
|
|
|
|
self._vte.fork_command()
|
|
|
|
def _configure_vte(self):
|
|
self._vte.set_font(pango.FontDescription('Monospace 10'))
|
|
self._vte.set_colors(gtk.gdk.color_parse ('#AAAAAA'),
|
|
gtk.gdk.color_parse ('#000000'),
|
|
[])
|
|
self._vte.set_cursor_blinks(False)
|
|
self._vte.set_audible_bell(False)
|
|
self._vte.set_scrollback_lines(100)
|
|
self._vte.set_allow_bold(True)
|
|
self._vte.set_scroll_on_keystroke(False)
|
|
self._vte.set_scroll_on_output(False)
|
|
self._vte.set_emulation('xterm')
|
|
self._vte.set_visible_bell(False)
|
|
|
|
def on_gconf_notification(self, client, cnxn_id, entry, what):
|
|
self.reconfigure_vte()
|
|
|
|
def on_vte_button_press(self, term, event):
|
|
if event.button == 3:
|
|
self.do_popup(event)
|
|
return True
|
|
|
|
def on_vte_popup_menu(self, term):
|
|
pass
|
|
|
|
def grab_focus(self):
|
|
self._vte.grab_focus()
|
|
|
|
class TerminalActivity(Activity):
|
|
def __init__(self):
|
|
Activity.__init__(self)
|
|
|
|
self.set_title("Terminal")
|
|
|
|
terminal = Terminal()
|
|
self.add(terminal)
|
|
terminal.show()
|
|
|
|
terminal.grab_focus()
|