Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/AbiWordActivity.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2012-08-23 10:47:43 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2012-10-11 20:58:10 (GMT)
commit9741582464d50c6a3367d9391068095236d3cad9 (patch)
tree22fba4d567fc48e25080513a1748acc839729cec /AbiWordActivity.py
parent7c84598386c1b341c7be2ca914ac9d7bf882c397 (diff)
Initial port to Gtk3 and Abiword introspection bindings.
Signed-off-by: Carlos Garnacho <carlos.garnacho@lanedo.com> Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Diffstat (limited to 'AbiWordActivity.py')
-rw-r--r--AbiWordActivity.py94
1 files changed, 49 insertions, 45 deletions
diff --git a/AbiWordActivity.py b/AbiWordActivity.py
index b272f04..abe065f 100644
--- a/AbiWordActivity.py
+++ b/AbiWordActivity.py
@@ -21,25 +21,25 @@ import logging
import os
# Abiword needs this to happen as soon as possible
-import gobject
-gobject.threads_init()
+from gi.repository import GObject
+GObject.threads_init()
-import gtk
+from gi.repository import Gtk
+from gi.repository import Abi
+from gi.repository import GdkPixbuf
import telepathy
import telepathy.client
-from abiword import Canvas
+from sugar3.activity import activity
+from sugar3.activity.widgets import StopButton
+from sugar3.activity.widgets import ActivityToolbarButton
+from sugar3.activity.activity import get_bundle_path
-from sugar.activity import activity
-from sugar.activity.widgets import StopButton
-from sugar.activity.widgets import ActivityToolbarButton
-from sugar.activity.activity import get_bundle_path
+from sugar3 import mime
-from sugar import mime
-
-from sugar.graphics.toolbutton import ToolButton
-from sugar.graphics.toolbarbox import ToolbarButton, ToolbarBox
-from sugar.graphics import style
+from sugar3.graphics.toolbutton import ToolButton
+from sugar3.graphics.toolbarbox import ToolbarButton, ToolbarBox
+from sugar3.graphics import style
from toolbar import EditToolbar
from toolbar import ViewToolbar
@@ -49,8 +49,9 @@ from toolbar import InsertToolbar
from toolbar import ParagraphToolbar
from widgets import ExportButtonFactory
from port import chooser
-import speech
-from speechtoolbar import SpeechToolbar
+# TODO Gtk3
+#import speech
+#from speechtoolbar import SpeechToolbar
logger = logging.getLogger('write-activity')
@@ -64,14 +65,14 @@ class AbiWordActivity(activity.Activity):
os.chdir(os.path.expanduser('~'))
# create our main abiword canvas
- self.abiword_canvas = Canvas()
+ self.abiword_canvas = Abi.Widget()
toolbar_box = ToolbarBox()
self.activity_button = ActivityToolbarButton(self)
toolbar_box.toolbar.insert(self.activity_button, -1)
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.show()
self.activity_button.props.page.insert(separator, 2)
ExportButtonFactory(self, self.abiword_canvas)
@@ -89,7 +90,7 @@ class AbiWordActivity(activity.Activity):
view_toolbar.props.label = _('View')
toolbar_box.toolbar.insert(view_toolbar, -1)
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
toolbar_box.toolbar.insert(separator, -1)
text_toolbar = ToolbarButton()
@@ -116,7 +117,7 @@ class AbiWordActivity(activity.Activity):
insert_toolbar.props.label = _('Table')
toolbar_box.toolbar.insert(insert_toolbar, -1)
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
toolbar_box.toolbar.insert(separator, -1)
image = ToolButton('insert-picture')
@@ -125,23 +126,24 @@ class AbiWordActivity(activity.Activity):
toolbar_box.toolbar.insert(image, -1)
palette = image.get_palette()
- content_box = gtk.VBox()
+ content_box = Gtk.VBox()
palette.set_content(content_box)
- image_floating_checkbutton = gtk.CheckButton(_('Floating'))
+ image_floating_checkbutton = Gtk.CheckButton(_('Floating'))
image_floating_checkbutton.connect('toggled',
self._image_floating_checkbutton_toggled_cb)
- content_box.pack_start(image_floating_checkbutton)
+ content_box.pack_start(image_floating_checkbutton, True, True, 0)
content_box.show_all()
self.floating_image = False
- if speech.supported:
- self.speech_toolbar_button = ToolbarButton(icon_name='speak')
- toolbar_box.toolbar.insert(self.speech_toolbar_button, -1)
- self.speech_toolbar = SpeechToolbar(self)
- self.speech_toolbar_button.set_page(self.speech_toolbar)
- self.speech_toolbar_button.show()
+ # TODO Gtk3
+# if speech.supported:
+# self.speech_toolbar_button = ToolbarButton(icon_name='speak')
+# toolbar_box.toolbar.insert(self.speech_toolbar_button, -1)
+# self.speech_toolbar = SpeechToolbar(self)
+# self.speech_toolbar_button.set_page(self.speech_toolbar)
+# self.speech_toolbar_button.show()
- separator = gtk.SeparatorToolItem()
+ separator = Gtk.SeparatorToolItem()
separator.props.draw = False
separator.set_expand(True)
separator.show()
@@ -161,13 +163,14 @@ class AbiWordActivity(activity.Activity):
self.abiword_canvas.connect('size-allocate', self.size_allocate_cb)
def size_allocate_cb(self, abi, alloc):
- gobject.idle_add(abi.queue_draw)
+ logging.error('size allocate %s', alloc)
+ GObject.idle_add(abi.queue_draw)
def __map_event_cb(self, event, activity):
- logger.debug('__map_event_cb')
+ logger.debug('__map_event_cb abi')
# no ugly borders please
- self.abiword_canvas.set_property("shadow-type", gtk.SHADOW_NONE)
+ self.abiword_canvas.set_property("shadow-type", Gtk.ShadowType.NONE)
# we only do per-word selections (when using the mouse)
self.abiword_canvas.set_word_selections(True)
@@ -200,13 +203,13 @@ class AbiWordActivity(activity.Activity):
# we do it later because have problems if done before - OLPC #11049
logger.error('Loading keybindings')
keybindings_file = os.path.join(get_bundle_path(), 'keybindings.xml')
- self.abiword_canvas.invoke_cmd(
+ self.abiword_canvas.invoke_ex(
'com.abisource.abiword.loadbindings.fromURI',
keybindings_file, 0, 0)
# set default font
self.abiword_canvas.select_all()
# get_selection return content and length
- if self.abiword_canvas.get_selection('text/plain')[1] == 0:
+ if self.abiword_canvas.get_selection('text/plain') is None:
logging.error('Setting default font to Sans in new documents')
self.abiword_canvas.set_font_name('Sans')
self.abiword_canvas.moveto_bod()
@@ -217,14 +220,15 @@ class AbiWordActivity(activity.Activity):
pixbuf = self.abiword_canvas.render_page_to_image(1)
pixbuf = pixbuf.scale_simple(style.zoom(300), style.zoom(225),
- gtk.gdk.INTERP_BILINEAR)
+ GdkPixbuf.InterpType.BILINEAR)
preview_data = []
- def save_func(buf, data):
+ def save_func(buf, lenght, data):
data.append(buf)
+ return True
- pixbuf.save_to_callback(save_func, 'png', user_data=preview_data)
+ pixbuf.save_to_callbackv(save_func, preview_data, 'png', [], [])
preview_data = ''.join(preview_data)
return preview_data
@@ -313,18 +317,18 @@ class AbiWordActivity(activity.Activity):
if self.joined:
logger.error('Passing tube address to abicollab (join): %s',
address)
- self.abiword_canvas.invoke_cmd(cmd_prefix + 'joinTube',
+ self.abiword_canvas.invoke_ex(cmd_prefix + 'joinTube',
address, 0, 0)
# The intiator of the session has to be the first passed
# to the Abicollab backend.
logger.error('Adding the initiator to the session: %s',
initiator_dbus_name)
- self.abiword_canvas.invoke_cmd(cmd_prefix + 'buddyJoined',
+ self.abiword_canvas.invoke_ex(cmd_prefix + 'buddyJoined',
initiator_dbus_name, 0, 0)
else:
logger.error('Passing tube address to abicollab (offer): %s',
address)
- self.abiword_canvas.invoke_cmd(cmd_prefix + 'offerTube', address,
+ self.abiword_canvas.invoke_ex(cmd_prefix + 'offerTube', address,
0, 0)
self.tube_id = id
@@ -345,7 +349,7 @@ class AbiWordActivity(activity.Activity):
for handle, bus_name in added:
logger.error('added handle: %s, with dbus_name: %s',
handle, bus_name)
- self.abiword_canvas.invoke_cmd(cmd_prefix + '.buddyJoined',
+ self.abiword_canvas.invoke_ex(cmd_prefix + '.buddyJoined',
bus_name, 0, 0)
self.participants[handle] = bus_name
@@ -362,7 +366,7 @@ class AbiWordActivity(activity.Activity):
cmd_prefix = 'com.abisource.abiword.abicollab.olpc'
logger.error('removed handle: %d, with dbus name: %s', handle,
bus_name)
- self.abiword_canvas.invoke_cmd(cmd_prefix + '.buddyLeft',
+ self.abiword_canvas.invoke_ex(cmd_prefix + '.buddyLeft',
bus_name, 0, 0)
def _buddy_joined_cb(self, activity, buddy):
@@ -400,9 +404,9 @@ class AbiWordActivity(activity.Activity):
self.abiword_canvas.save('file://' + file_path,
self.metadata['mime_type'], '')
-
- self.metadata['fulltext'] = self.abiword_canvas.get_content(
- extension_or_mimetype=".txt")[:3000]
+ # TODO Gtk3
+ #self.metadata['fulltext'] = self.abiword_canvas.get_content(
+ # extension_or_mimetype=".txt")[:3000]
def _is_plain_text(self, mime_type):
# These types have 'text/plain' in their mime_parents but we need