take care of updating tab close buttons when the setting changes

This commit is contained in:
Chris Jones 2008-11-19 17:04:36 +00:00
parent 8decf82577
commit 408a7246d9
2 changed files with 50 additions and 28 deletions

View File

@ -303,17 +303,15 @@ class ProfileEditor:
angle = 0
if isinstance (notebook, gtk.Notebook):
notebook.set_tab_pos(new_pos)
if new_pos == gtk.POS_LEFT:
angle = 90
elif new_pos == gtk.POS_RIGHT:
angle = 270
num_pages = notebook.get_n_pages()
for i in xrange(0,num_pages):
tab = notebook.get_tab_label(notebook.get_nth_page(i))
label = tab.get_children()[0]
label.set_angle(angle)
for i in xrange(0,notebook.get_n_pages()):
notebook.get_tab_label(notebook.get_nth_page(i)).update_angle()
pass
# FIXME: which others? cycle_term_tab, close_button_on_tab, copy_on_selection, extreme_tabs, try_posix_regexp
elif changer == "close_button_on_tab":
notebook = self.term.window.get_child()
if isinstance (notebook, gtk.Notebook):
for i in xrange(0,notebook.get_n_pages()):
notebook.get_tab_label(notebook.get_nth_page(i)).update_closebut()
# FIXME: which others? cycle_term_tab, copy_on_selection, extreme_tabs, try_posix_regexp
self.term.reconfigure_vtes()

View File

@ -32,26 +32,36 @@ from terminatorlib.terminatorterm import TerminatorTerm
from terminatorlib.prefs_profile import ProfileEditor
class TerminatorNotebookTabLabel(gtk.HBox):
_terminator = None
_notebook = None
_label = None
_icon = None
_button = None
def __init__(self, title, notebook, terminator):
gtk.HBox.__init__(self, False)
self._notebook = notebook
self.terminator = terminator
self._terminator = terminator
self._label = gtk.Label(title)
tab_pos = notebook.get_tab_pos()
if tab_pos == gtk.POS_LEFT:
self._label.set_angle(90)
elif tab_pos == gtk.POS_RIGHT:
self._label.set_angle(270)
icon = gtk.Image()
icon.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
self.update_angle()
self.pack_start(self._label, True, True)
if terminator.conf.close_button_on_tab:
self._icon = gtk.Image()
self._icon.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
self.update_closebut()
self.show_all()
def update_closebut(self):
if self._terminator.conf.close_button_on_tab:
if not self._button:
self._button = gtk.Button()
self._button.set_relief(gtk.RELIEF_NONE)
self._button.set_focus_on_click(False)
self._button.set_relief(gtk.RELIEF_NONE)
self._button.add(icon)
self._button.add(self._icon)
self._button.connect('clicked', self.on_close)
self._button.set_name("terminator-tab-close-button")
self.connect("style-set", self.on_style_set)
@ -59,6 +69,21 @@ class TerminatorNotebookTabLabel(gtk.HBox):
self._button.set_tooltip_text(_("Close Tab"))
self.pack_start(self._button, False, False)
self.show_all()
else:
if self._button:
self._button.remove(self._icon)
self.remove(self._button)
del(self._button)
self._button = None
def update_angle(self):
tab_pos = self._notebook.get_tab_pos()
if tab_pos == gtk.POS_LEFT:
self._label.set_angle(90)
elif tab_pos == gtk.POS_RIGHT:
self._label.set_angle(270)
else:
self._label.set_angle(0)
def on_style_set(self, widget, prevstyle):
x, y = gtk.icon_size_lookup_for_settings( self._button.get_settings(), gtk.ICON_SIZE_MENU)
@ -69,13 +94,13 @@ class TerminatorNotebookTabLabel(gtk.HBox):
for i in xrange(0,nbpages):
if self._notebook.get_tab_label(self._notebook.get_nth_page(i)) == self:
#dbg("[Close from tab] Found tab at position [%d]" % i)
term = self.terminator._notebook_first_term(self._notebook.get_nth_page(i))
term = self._terminator._notebook_first_term(self._notebook.get_nth_page(i))
while term:
if term == self._notebook.get_nth_page(i):
self.terminator.closeterm(term)
self._terminator.closeterm(term)
break
self.terminator.closeterm(term)
term = self.terminator._notebook_first_term(self._notebook.get_nth_page(i))
self._terminator.closeterm(term)
term = self._terminator._notebook_first_term(self._notebook.get_nth_page(i))
break
def set_title(self, title):
@ -90,7 +115,6 @@ class TerminatorNotebookTabLabel(gtk.HBox):
def width_request(self):
return self.size_request()[0]
class Terminator:
options = None