now make the encoding submenu work

This commit is contained in:
Chris Jones 2009-10-08 21:27:00 +01:00
parent f0d7f2a9ca
commit 3d78428aae
2 changed files with 79 additions and 1 deletions

View File

@ -448,6 +448,14 @@ class Terminal(gtk.VBox):
else: else:
widget.show() widget.show()
def on_encoding_change(self, widget, encoding):
"""Handle the encoding changing"""
current = self.vte.get_encoding()
if current != encoding:
dbg('on_encoding_change: setting encoding to: %s' % encoding)
self.custom_encoding = not (encoding == self.config['encoding'])
self.vte.set_encoding(encoding)
def on_drag_begin(self, widget, drag_context, data): def on_drag_begin(self, widget, drag_context, data):
pass pass

View File

@ -8,6 +8,7 @@ import gtk
from version import APP_NAME from version import APP_NAME
from translation import _ from translation import _
from encoding import TerminatorEncoding
class TerminalPopupMenu(object): class TerminalPopupMenu(object):
"""Class implementing the Terminal context menu""" """Class implementing the Terminal context menu"""
@ -121,10 +122,79 @@ class TerminalPopupMenu(object):
item.set_sensitive(False) item.set_sensitive(False)
menu.append(item) menu.append(item)
# FIXME: Add menu items for profile editing, encodings item = gtk.MenuItem(_('Ed_it profile'))
item.connect('activate', lambda x:
terminal.terminator.edit_profile(terminal))
menu.append(item)
self.add_encoding_items(menu)
menu.show_all() menu.show_all()
menu.popup(None, None, None, button, time) menu.popup(None, None, None, button, time)
return(True) return(True)
def add_encoding_items(self, menu):
"""Add the encoding list to the menu"""
terminal = self.terminal
active_encodings = terminal.config['active_encodings']
item = gtk.MenuItem (_("Encodings"))
menu.append (item)
submenu = gtk.Menu ()
item.set_submenu (submenu)
encodings = TerminatorEncoding ().get_list ()
encodings.sort (lambda x, y: cmp (x[2].lower (), y[2].lower ()))
current_encoding = terminal.vte.get_encoding ()
group = None
if current_encoding not in active_encodings:
active_encodings.insert (0, _(current_encoding))
for encoding in active_encodings:
if encoding == terminal.default_encoding:
extratext = " (%s)" % _("Default")
elif encoding == current_encoding and terminal.custom_encoding == True:
extratext = " (%s)" % _("User defined")
else:
extratext = ""
radioitem = gtk.RadioMenuItem (group, _(encoding) + extratext)
if encoding == current_encoding:
radioitem.set_active (True)
if group is None:
group = radioitem
radioitem.connect ('activate', terminal.on_encoding_change, encoding)
submenu.append (radioitem)
item = gtk.MenuItem (_("Other Encodings"))
submenu.append (item)
#second level
submenu = gtk.Menu ()
item.set_submenu (submenu)
group = None
for encoding in encodings:
if encoding[1] in active_encodings:
continue
if encoding[1] is None:
label = "%s %s"%(encoding[2], terminal.vte.get_encoding ())
else:
label = "%s %s"%(encoding[2], encoding[1])
radioitem = gtk.RadioMenuItem (group, label)
if group is None:
group = radioitem
if encoding[1] == current_encoding:
radioitem.set_active (True)
radioitem.connect ('activate', terminal.on_encoding_change, encoding[1])
submenu.append (radioitem)