Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/Notebook.py
diff options
context:
space:
mode:
Diffstat (limited to 'Notebook.py')
-rw-r--r--Notebook.py74
1 files changed, 65 insertions, 9 deletions
diff --git a/Notebook.py b/Notebook.py
index 3deb3a1..16eebe5 100644
--- a/Notebook.py
+++ b/Notebook.py
@@ -23,15 +23,28 @@ class TabLabel(Gtk.HBox):
([GObject.TYPE_PYOBJECT])),
}
- def __init__(self, child, label):
+ def __init__(self, child, label, tabs):
GObject.GObject.__init__(self)
self.child = child
- self._label = Gtk.Label(label=label)
+ self.label_text = label
+ self.tabs = tabs
+
+ self.label_box = Gtk.EventBox()
+ self._label = Gtk.Label(label=self.label_text)
self._label.set_alignment(0, 0.5)
- self.pack_start(self._label, True, True, 5)
self._label.show()
+ self.label_box.add(self._label)
+ self.label_box.connect("button-press-event", self._label_clicked)
+ self.label_box.show_all()
+ self.pack_start(self.label_box, True, True, 5)
+
+ self.label_entry = Gtk.Entry()
+ self.label_entry.connect("activate", self._label_entry_cb)
+ self.label_entry.connect("focus-out-event", self._label_entry_cb)
+ self.pack_start(self.label_entry, True, True, 0)
+
button = ToolButton("close-tab")
button.connect('clicked', self.__button_clicked_cb)
self.pack_start(button, False, True, 0)
@@ -41,6 +54,9 @@ class TabLabel(Gtk.HBox):
def set_text(self, title):
self._label.set_text(title)
+ def get_text(self):
+ return self._label.get_text()
+
def update_size(self, size):
self.set_size_request(size, -1)
@@ -53,6 +69,21 @@ class TabLabel(Gtk.HBox):
def __button_clicked_cb(self, button):
self.emit('tab-close', self.child)
+ def _label_clicked(self, eventbox, data):
+ if self.tabs.page_num(self.child) is not self.tabs.get_current_page():
+ self.child.grab_focus()
+ else:
+ self.label_entry.set_text(self.label_text)
+ eventbox.hide()
+ self.label_entry.grab_focus()
+ self.label_entry.show()
+
+ def _label_entry_cb(self, entry, focus=None):
+ self.label_text = self.label_entry.get_text()
+ self.label_box.show_all()
+ self.label_entry.hide()
+ self._label.set_text(self.label_text)
+
"""
AddNotebook
@@ -85,10 +116,9 @@ class SourceNotebook(AddNotebook):
def __init__(self, activity):
AddNotebook.__init__(self)
self.activity = activity
+ self.set_scrollable(True)
- self.add_tab()
-
- def add_tab(self, label=None):
+ def add_tab(self, label=None, buffer_text=None):
# Set text_buffer
text_buffer = GtkSource.Buffer()
@@ -109,6 +139,9 @@ class SourceNotebook(AddNotebook):
else:
text_buffer.set_highlight_syntax(True)
+ if buffer_text:
+ text_buffer.set_text(buffer_text)
+
# Set up SourceView
text_view = GtkSource.View()
text_view.set_buffer(text_buffer)
@@ -129,12 +162,13 @@ class SourceNotebook(AddNotebook):
Gtk.PolicyType.AUTOMATIC)
codesw.add(text_view)
- tabdex = self.get_n_pages()
+ tabdex = self.get_n_pages() + 1
if label:
- tablabel = TabLabel(codesw, label)
+ tablabel = TabLabel(codesw, label, self)
else:
tablabel = TabLabel(codesw,
- _("New Source File %d" % tabdex))
+ _("New Source File %d" % tabdex),
+ self)
tablabel.connect("tab-close", self._tab_closed_cb)
codesw.show_all()
index = self.append_page(codesw,
@@ -151,6 +185,24 @@ class SourceNotebook(AddNotebook):
text_view = tab[0]
return text_view
+ def get_all_data(self):
+ # Returns all the names of files and the buffer contents too.
+ names = []
+ contents = []
+ for i in range(0, self.get_n_pages()):
+ child = self.get_nth_page(i)
+ text_buffer = child.get_children()[0].get_buffer()
+ text = text_buffer.get_text(*text_buffer.get_bounds(),
+ include_hidden_chars=True)
+ contents.append(text)
+
+ label = self.get_tab_label(child).get_text()
+ if not label.endswith(".py"):
+ label = label + ".py"
+ names.append(label)
+
+ return (names, contents)
+
def child_exited_cb(self, *args):
"""Called whenever a child exits. If there's a handler, runadd it."""
h, self.activity._child_exited_handler = \
@@ -161,3 +213,7 @@ class SourceNotebook(AddNotebook):
def _tab_closed_cb(self, notebook, child):
index = self.page_num(child)
self.remove_page(index)
+ try:
+ del self.activity.session_data[index]
+ except IndexError:
+ pass