diff options
author | Daniel Francis <francis@sugarlabs.org> | 2012-06-03 20:53:52 (GMT) |
---|---|---|
committer | Daniel Francis <francis@sugarlabs.org> | 2012-06-03 20:53:52 (GMT) |
commit | 2a3addb355c60e98dd714e8216a77f07a6f38d9a (patch) | |
tree | 56fdfb8e730289ace38a0d5682e983a2bd8561c5 /terminal.py | |
parent | b6410e9337d21abbcd91e222b5e5cc85af651536 (diff) |
The same tabs as browse
Diffstat (limited to 'terminal.py')
-rw-r--r-- | terminal.py | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/terminal.py b/terminal.py index 0ba2871..6918e3f 100644 --- a/terminal.py +++ b/terminal.py @@ -32,7 +32,6 @@ from gi.repository import Pango from sugar3.graphics.toolbutton import ToolButton from sugar3.graphics.toolbarbox import ToolbarBox from sugar3.graphics.toolbarbox import ToolbarButton -from sugar3.graphics.notebook import Notebook from sugar3.activity.widgets import EditToolbar from sugar3.activity.widgets import ActivityToolbarButton @@ -40,6 +39,9 @@ from sugar3.activity.widgets import StopButton from sugar3.activity import activity from sugar3 import env +from widgets import BrowserNotebook +from widgets import TabLabel + MASKED_ENVIRONMENT = [ 'DBUS_SESSION_BUS_ADDRESS', 'PPID'] @@ -118,7 +120,8 @@ class TerminalActivity(activity.Activity): toolbar_box.show() self._update_accelerators(toolbar_box) - self._notebook = Notebook() + self._notebook = BrowserNotebook() + self._notebook.connect("tab-added", self.__open_tab_cb) self._notebook.set_property("tab-pos", Gtk.PositionType.TOP) self._notebook.set_scrollable(True) self._notebook.show() @@ -248,17 +251,24 @@ class TerminalActivity(activity.Activity): index = self._create_tab(None) self._notebook.page = index if self._notebook.get_n_pages() == 2: + self._notebook.get_tab_label(self._notebook.get_nth_page(0 + )).show_close_button() self._delete_tab_button.props.sensitive = True self._previous_tab_button.props.sensitive = True self._next_tab_button.props.sensitive = True - def __close_tab_cb(self, btn): - self._close_tab(self._notebook.props.page) + def __close_tab_cb(self, btn, child): + index = self._notebook.page_num(child) + self._close_tab(index) if self._notebook.get_n_pages() == 1: + self._notebook.get_tab_label(self._notebook.get_nth_page(0 + )).hide_close_button() self._delete_tab_button.props.sensitive = False self._previous_tab_button.props.sensitive = False self._next_tab_button.props.sensitive = False + self._notebook.update_tab_sizes() + def __prev_tab_cb(self, btn): if self._notebook.props.page == 0: self._notebook.props.page = self._notebook.get_n_pages() - 1 @@ -305,9 +315,8 @@ class TerminalActivity(activity.Activity): vt.connect("window-title-changed", self.__tab_title_changed_cb) # FIXME have to resend motion events to parent, see #1402 - vt.connect('motion-notify-event', self.__motion_notify_cb) + #vt.connect('motion-notify-event', self.__motion_notify_cb) - #FIXME Drag and drop not working SL#3655 #vt.drag_dest_set(Gtk.DestDefaults.MOTION | Gtk.DestDefaults.DROP, # [('text/plain', 0, 0), ('STRING', 0, 1)], # Gdk.DragAction.DEFAULT | @@ -318,25 +327,32 @@ class TerminalActivity(activity.Activity): vt.show() - label = Gtk.Label() - scrollbar = Gtk.VScrollbar.new(vt.get_vadjustment()) - scrollbar.show() box = Gtk.HBox() box.pack_start(vt, True, True, 0) box.pack_start(scrollbar, False, True, 0) box.vt = vt - box.label = label + box.show() + + tablabel = TabLabel(box) + tablabel.connect('tab-close', self.__close_tab_cb) + tablabel.update_size(200) + box.label = tablabel + + index = self._notebook.append_page(box, tablabel) + tablabel.show_all() - index = self._notebook.append_page(box, label) + self._notebook.update_tab_sizes() self._notebook.show_all() # Uncomment this to only show the tab bar when there is at least # one tab. I think it's useful to always see it, since it displays # the 'window title'. # self._notebook.props.show_tabs = self._notebook.get_n_pages() > 1 + tablabel.hide_close_button() if self._notebook.get_n_pages() == 1\ + else None # Launch the default shell in the HOME directory. os.chdir(os.environ["HOME"]) @@ -380,8 +396,8 @@ class TerminalActivity(activity.Activity): return index - def __motion_notify_cb(self, widget, event): - self.emit('motion-notify-event', event) +# def __motion_notify_cb(self, widget, event): +# self.emit('motion-notify-event', event) def __become_root_cb(self, button): vt = self._notebook.get_nth_page(self._notebook.get_current_page()).vt |