From 829462a52dcb1b201937d6740a38924edce75ba3 Mon Sep 17 00:00:00 2001 From: James Simmons Date: Tue, 14 Jan 2014 22:43:23 +0000 Subject: 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 --- 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("") + + 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 = '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("") - - 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): -- cgit v0.9.1