Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Simmons <nicestep@gmail.com>2014-01-14 22:43:23 (GMT)
committer James Simmons <nicestep@gmail.com>2014-01-14 22:43:23 (GMT)
commit829462a52dcb1b201937d6740a38924edce75ba3 (patch)
treec5f70475cee4d2a786cc1de0c5c14d7553d019a0
parent0baa8ea202a2e389331c6bf00e0065a4a6804b2b (diff)
modified: Add_Refinements_gtk3/ReadEtextsActivity2.py
modified: Add_Refinements_gtk3/activity/activity.info modified: Add_Refinements_gtk3/toolbar.py modified: New_Style_Toolbars_gtk3/ReadEtextsActivity4.py Give the example correct new style toolbars. modified: Add_Refinements_gtk3/ReadEtextsActivity2.py modified: Add_Refinements_gtk3/activity/activity.info modified: Add_Refinements_gtk3/toolbar.py modified: New_Style_Toolbars_gtk3/ReadEtextsActivity4.py
-rw-r--r--Add_Refinements_gtk3/ReadEtextsActivity2.py149
-rw-r--r--Add_Refinements_gtk3/activity/activity.info1
-rw-r--r--Add_Refinements_gtk3/toolbar.py69
-rw-r--r--New_Style_Toolbars_gtk3/ReadEtextsActivity4.py2
4 files changed, 117 insertions, 104 deletions
diff --git a/Add_Refinements_gtk3/ReadEtextsActivity2.py b/Add_Refinements_gtk3/ReadEtextsActivity2.py
index 0b78614..f3d192a 100644
--- a/Add_Refinements_gtk3/ReadEtextsActivity2.py
+++ b/Add_Refinements_gtk3/ReadEtextsActivity2.py
@@ -20,18 +20,20 @@
import os
import zipfile
+import re
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import Pango
from sugar3.activity import activity
from sugar3.graphics import style
+from sugar3.graphics.toolbutton import ToolButton
from sugar3.graphics.toolbarbox import ToolbarButton
from sugar3.graphics.toolbarbox import ToolbarBox
from sugar3.activity.widgets import StopButton
from sugar3.activity.widgets import EditToolbar
from sugar3.activity.widgets import ActivityToolbar
from sugar3.activity.widgets import _create_activity_icon
-from toolbar import ReadToolbar, ViewToolbar
+from toolbar import ViewToolbar
from gettext import gettext as _
page=0
@@ -67,41 +69,78 @@ class ReadEtextsActivity(activity.Activity):
toolbar_box.toolbar.insert(activity_button, 0)
activity_button.show()
- edit_toolbar = EditToolbar()
- edit_toolbar.undo.props.visible = False
- edit_toolbar.redo.props.visible = False
- edit_toolbar.separator.props.visible = False
- edit_toolbar.copy.set_sensitive(False)
- edit_toolbar.copy.connect('clicked', self.edit_toolbar_copy_cb)
- edit_toolbar.paste.props.visible = False
- edit_toolbar_button = ToolbarButton(page=edit_toolbar,
- label=_("Edit"))
- edit_toolbar.show()
+ self.edit_toolbar = EditToolbar()
+ self.edit_toolbar.undo.props.visible = False
+ self.edit_toolbar.redo.props.visible = False
+ self.edit_toolbar.separator.props.visible = False
+ self.edit_toolbar.copy.set_sensitive(False)
+ self.edit_toolbar.copy.connect('clicked', self.edit_toolbar_copy_cb)
+ self.edit_toolbar.paste.props.visible = False
+ edit_toolbar_button = ToolbarButton(
+ page=self.edit_toolbar,
+ icon_name='toolbar-edit')
+ self.edit_toolbar.show()
toolbar_box.toolbar.insert(edit_toolbar_button, -1)
edit_toolbar_button.show()
- read_toolbar = ReadToolbar()
- read_toolbar.back.connect('clicked', self.go_back_cb)
- read_toolbar.forward.connect('clicked', self.go_forward_cb)
- read_toolbar.num_page_entry.connect('activate',
- self.num_page_entry_activate_cb)
- read_toolbar.show()
- read_toolbar_button = ToolbarButton(page=read_toolbar,
- label=_("Read"))
- toolbar_box.toolbar.insert(read_toolbar_button, -1)
- read_toolbar_button.show()
-
view_toolbar = ViewToolbar()
view_toolbar.connect('go-fullscreen',
self.view_toolbar_go_fullscreen_cb)
view_toolbar.zoom_in.connect('clicked', self.zoom_in_cb)
view_toolbar.zoom_out.connect('clicked', self.zoom_out_cb)
view_toolbar.show()
- view_toolbar_button = ToolbarButton(page=view_toolbar,
- label=_("View"))
+ view_toolbar_button = ToolbarButton(
+ page=view_toolbar,
+ icon_name='toolbar-view')
toolbar_box.toolbar.insert(view_toolbar_button, -1)
view_toolbar_button.show()
+ self.back = ToolButton('go-previous')
+ self.back.set_tooltip(_('Back'))
+ self.back.props.sensitive = False
+ self.back.connect('clicked', self.go_back_cb)
+ toolbar_box.toolbar.insert(self.back, -1)
+ self.back.show()
+
+ self.forward = ToolButton('go-next')
+ self.forward.set_tooltip(_('Forward'))
+ self.forward.props.sensitive = False
+ self.forward.connect('clicked', self.go_forward_cb)
+ toolbar_box.toolbar.insert(self.forward, -1)
+ self.forward.show()
+
+ num_page_item = Gtk.ToolItem()
+ self.num_page_entry = Gtk.Entry()
+ self.num_page_entry.set_text('0')
+ self.num_page_entry.set_alignment(1)
+ self.num_page_entry.connect('insert-text',
+ self.__new_num_page_entry_insert_text_cb)
+ self.num_page_entry.connect('activate',
+ self.__new_num_page_entry_activate_cb)
+ self.num_page_entry.set_width_chars(4)
+ num_page_item.add(self.num_page_entry)
+ self.num_page_entry.show()
+ toolbar_box.toolbar.insert(num_page_item, -1)
+ num_page_item.show()
+
+ total_page_item = Gtk.ToolItem()
+ self.total_page_label = Gtk.Label()
+
+ self.total_page_label.set_markup("<span foreground='#FFF'" \
+ " size='14000'></span>")
+
+ self.total_page_label.set_text(' / 0')
+ total_page_item.add(self.total_page_label)
+ self.total_page_label.show()
+ toolbar_box.toolbar.insert(total_page_item, -1)
+ total_page_item.show()
+
+ separator = Gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ toolbar_box.toolbar.insert(separator, -1)
+ separator.show()
+
stop_button = StopButton(self)
stop_button.props.accelerator = '<Ctrl><Shift>Q'
toolbar_box.toolbar.insert(stop_button, -1)
@@ -132,6 +171,48 @@ class ReadEtextsActivity(activity.Activity):
buffer = self.textview.get_buffer()
self.markset_id = buffer.connect("mark-set", self.mark_set_cb)
+ def __new_num_page_entry_insert_text_cb(self, entry, text, length, position):
+ if not re.match('[0-9]', text):
+ entry.emit_stop_by_name('insert-text')
+ return True
+ return False
+
+ def __new_num_page_entry_activate_cb(self, entry):
+ global page
+ if entry.props.text:
+ new_page = int(entry.props.text) - 1
+ else:
+ new_page = 0
+
+ if new_page >= self.total_pages:
+ new_page = self.total_pages - 1
+ elif new_page < 0:
+ new_page = 0
+
+ self.current_page = new_page
+ self.set_current_page(new_page)
+ self.show_page(new_page)
+ entry.props.text = str(new_page + 1)
+ self.update_nav_buttons()
+ page = new_page
+
+ def update_nav_buttons(self):
+ current_page = self.current_page
+ self.back.props.sensitive = current_page > 0
+ self.forward.props.sensitive = \
+ current_page < self.total_pages - 1
+
+ self.num_page_entry.props.text = str(current_page + 1)
+ self.total_page_label.props.label = \
+ ' / ' + str(self.total_pages)
+
+ def set_total_pages(self, pages):
+ self.total_pages = pages
+
+ def set_current_page(self, page):
+ self.current_page = page
+ self.update_nav_buttons()
+
def keypress_cb(self, widget, event):
"Respond when the user presses one of the arrow keys"
keyname = Gdk.keyval_name(event.keyval)
@@ -165,16 +246,16 @@ class ReadEtextsActivity(activity.Activity):
else:
new_page = 0
- if new_page >= self.read_toolbar.total_pages:
- new_page = self.read_toolbar.total_pages - 1
+ if new_page >= self.total_pages:
+ new_page = self.total_pages - 1
elif new_page < 0:
new_page = 0
- self.read_toolbar.current_page = new_page
- self.read_toolbar.set_current_page(new_page)
+ self.current_page = new_page
+ self.set_current_page(new_page)
self.show_page(new_page)
entry.props.text = str(new_page + 1)
- self.read_toolbar.update_nav_buttons()
+ self.update_nav_buttons()
page = new_page
def go_back_cb(self, button):
@@ -187,7 +268,7 @@ class ReadEtextsActivity(activity.Activity):
global page
page=page-1
if page < 0: page=0
- self.read_toolbar.set_current_page(page)
+ self.set_current_page(page)
self.show_page(page)
v_adjustment = self.scrolled_window.get_vadjustment()
v_adjustment.set_value(v_adjustment.get_upper() - \
@@ -197,7 +278,7 @@ class ReadEtextsActivity(activity.Activity):
global page
page=page+1
if page >= len(self.page_index): page=0
- self.read_toolbar.set_current_page(page)
+ self.set_current_page(page)
self.show_page(page)
v_adjustment = self.scrolled_window.get_vadjustment()
v_adjustment.set_value(v_adjustment.get_lower())
@@ -233,7 +314,7 @@ class ReadEtextsActivity(activity.Activity):
def edit_toolbar_copy_cb(self, button):
textbuffer = self.textview.get_buffer()
begin, end = textbuffer.get_selection_bounds()
- copy_text = textbuffer.get_text(begin, end)
+ copy_text = textbuffer.get_text(begin, end, False)
self.clipboard.set_text(copy_text)
def view_toolbar_go_fullscreen_cb(self, view_toolbar):
@@ -354,8 +435,8 @@ class ReadEtextsActivity(activity.Activity):
os.remove(currentFileName)
self.get_saved_page_number()
self.show_page(page)
- self.read_toolbar.set_total_pages(pagecount + 1)
- self.read_toolbar.set_current_page(page)
+ self.set_total_pages(pagecount + 1)
+ self.set_current_page(page)
def make_new_filename(self, filename):
partition_tuple = filename.rpartition('/')
diff --git a/Add_Refinements_gtk3/activity/activity.info b/Add_Refinements_gtk3/activity/activity.info
index d8850ca..9bfe4e0 100644
--- a/Add_Refinements_gtk3/activity/activity.info
+++ b/Add_Refinements_gtk3/activity/activity.info
@@ -7,3 +7,4 @@ show_launcher = no
mime_types = text/plain;application/zip
activity_version = 1
license = GPLv2+
+summary = Example of adding a toolbar to your application.
diff --git a/Add_Refinements_gtk3/toolbar.py b/Add_Refinements_gtk3/toolbar.py
index 70dd1b8..a7a582a 100644
--- a/Add_Refinements_gtk3/toolbar.py
+++ b/Add_Refinements_gtk3/toolbar.py
@@ -26,75 +26,6 @@ from gi.repository import GObject
from sugar3.graphics.toolbutton import ToolButton
-class ReadToolbar(Gtk.Toolbar):
- __gtype_name__ = 'ReadToolbar'
-
- def __init__(self):
- Gtk.Toolbar.__init__(self)
-
- self.back = ToolButton('go-previous')
- self.back.set_tooltip(_('Back'))
- self.back.props.sensitive = False
- self.insert(self.back, -1)
- self.back.show()
-
- self.forward = ToolButton('go-next')
- self.forward.set_tooltip(_('Forward'))
- self.forward.props.sensitive = False
- self.insert(self.forward, -1)
- self.forward.show()
-
- num_page_item = Gtk.ToolItem()
-
- self.num_page_entry = Gtk.Entry()
- self.num_page_entry.set_text('0')
- self.num_page_entry.set_alignment(1)
- self.num_page_entry.connect('insert-text',
- self.num_page_entry_insert_text_cb)
-
- self.num_page_entry.set_width_chars(4)
-
- num_page_item.add(self.num_page_entry)
- self.num_page_entry.show()
-
- self.insert(num_page_item, -1)
- num_page_item.show()
-
- total_page_item = Gtk.ToolItem()
-
- self.total_page_label = Gtk.Label()
- self.total_page_label.set_markup("<span foreground='#FFF' size='14000'></span>")
-
- self.total_page_label.set_text(' / 0')
- total_page_item.add(self.total_page_label)
- self.total_page_label.show()
-
- self.insert(total_page_item, -1)
- total_page_item.show()
-
- def num_page_entry_insert_text_cb(self, entry, text, length, position):
- if not re.match('[0-9]', text):
- entry.emit_stop_by_name('insert-text')
- return True
- return False
-
- def update_nav_buttons(self):
- current_page = self.current_page
- self.back.props.sensitive = current_page > 0
- self.forward.props.sensitive = \
- current_page < self.total_pages - 1
-
- self.num_page_entry.props.text = str(current_page + 1)
- self.total_page_label.props.label = \
- ' / ' + str(self.total_pages)
-
- def set_total_pages(self, pages):
- self.total_pages = pages
-
- def set_current_page(self, page):
- self.current_page = page
- self.update_nav_buttons()
-
class ViewToolbar(Gtk.Toolbar):
__gtype_name__ = 'ViewToolbar'
diff --git a/New_Style_Toolbars_gtk3/ReadEtextsActivity4.py b/New_Style_Toolbars_gtk3/ReadEtextsActivity4.py
index deeed3f..7352f63 100644
--- a/New_Style_Toolbars_gtk3/ReadEtextsActivity4.py
+++ b/New_Style_Toolbars_gtk3/ReadEtextsActivity4.py
@@ -387,7 +387,7 @@ class ReadEtextsActivity(activity.Activity):
def edit_toolbar_copy_cb(self, button):
textbuffer = self.textview.get_buffer()
begin, end = textbuffer.get_selection_bounds()
- copy_text = textbuffer.get_text(begin, end)
+ copy_text = textbuffer.get_text(begin, end, False)
self.clipboard.set_text(copy_text)
def view_toolbar_go_fullscreen_cb(self, view_toolbar):