Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AbiWordActivity.py59
-rw-r--r--toolbar.py199
2 files changed, 136 insertions, 122 deletions
diff --git a/AbiWordActivity.py b/AbiWordActivity.py
index 2642b8a..ae7ca77 100644
--- a/AbiWordActivity.py
+++ b/AbiWordActivity.py
@@ -14,13 +14,12 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
+from gettext import gettext as _
import logging
import os
import time
-import gobject
-import hippo
+import gtk
from sugar.activity import activity
from sugar.datastore import datastore
@@ -28,7 +27,7 @@ from sugar.datastore.datastore import Text
from sugar import profile
from abiword import Canvas
-from toolbar import AbiToolbar
+from toolbar import TextToolbar, ImageToolbar, TableToolbar
class AbiWordActivity (activity.Activity):
@@ -36,24 +35,42 @@ class AbiWordActivity (activity.Activity):
activity.Activity.__init__ (self, handle)
self.set_title ("Write")
+ toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(toolbox)
+ toolbox.show()
+
self._journal_handle = None
self._last_saved_text = None
- hippoCanvasBox = hippo.CanvasBox()
- self.set_root(hippoCanvasBox)
-
# create our main abiword canvas
self.abiword_canvas = Canvas()
+ self.abiword_canvas.connect("can-undo", self._can_undo_cb)
+ self.abiword_canvas.connect("can-redo", self._can_redo_cb)
+
+ self._edit_toolbar = activity.EditToolbar()
+
+ self._edit_toolbar.undo.set_sensitive(False)
+ self._edit_toolbar.undo.connect('clicked', self._undo_cb)
+
+ self._edit_toolbar.redo.set_sensitive(False)
+ self._edit_toolbar.redo.connect('clicked', self._redo_cb)
+
+ toolbox.add_toolbar(_('Edit'), self._edit_toolbar)
+ self._edit_toolbar.show()
- # create and add a toolbar for our window, which listens to our canvas
- abiToolbar = AbiToolbar(hippoCanvasBox, self.abiword_canvas)
+ text_toolbar = TextToolbar(self.abiword_canvas)
+ toolbox.add_toolbar(_('Text'), text_toolbar)
+ text_toolbar.show()
- # create a hippo container to embed our canvas in
- abiwordCanvasContainer = hippo.CanvasWidget()
- abiwordCanvasContainer.props.widget = self.abiword_canvas
+ image_toolbar = ImageToolbar(self.abiword_canvas)
+ toolbox.add_toolbar(_('Image'), image_toolbar)
+ image_toolbar.show()
- # add the controls to our window
- hippoCanvasBox.append(abiwordCanvasContainer, hippo.PACK_EXPAND)
+ table_toolbar = TableToolbar(self.abiword_canvas)
+ toolbox.add_toolbar(_('Table'), table_toolbar)
+ table_toolbar.show()
+
+ self.set_canvas(self.abiword_canvas)
if handle.object_id:
self._journal_handle = handle.object_id
@@ -68,12 +85,24 @@ class AbiWordActivity (activity.Activity):
self.connect('focus-out-event', self._focus_out_event_cb)
self.connect('delete-event', self._delete_event_cb)
+ def _can_undo_cb(self, canvas, can_undo):
+ self._edit_toolbar.undo.set_sensitive(can_undo)
+
+ def _can_redo_cb(self, canvas, can_redo):
+ self._edit_toolbar.redo.set_sensitive(can_redo)
+
+ def _undo_cb(self, button):
+ self.abiword_canvas.undo()
+
+ def _redo_cb(self, button):
+ self.abiword_canvas.redo()
+
def _focus_out_event_cb(self, widget, event):
self._autosave()
def _delete_event_cb(self, widget, event):
self._autosave()
-
+
def _autosave(self):
text_content = self.abiword_canvas.get_content(".txt")[0]
if not self._journal_handle:
diff --git a/toolbar.py b/toolbar.py
index 1231f1f..d72e92a 100644
--- a/toolbar.py
+++ b/toolbar.py
@@ -14,146 +14,131 @@
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
+from gettext import gettext as _
import logging
+
import abiword
-import hippo
+import gtk
-from sugar.graphics.toolbar import Toolbar
-from sugar.graphics.iconbutton import IconButton
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.toggletoolbutton import ToggleToolButton
-class AbiToolbar(object):
- def __init__(self, hippoCanvasBox, abiword_canvas):
- toolbar = Toolbar()
- hippoCanvasBox.append(toolbar)
+class TextToolbar(gtk.Toolbar):
+ def __init__(self, abiword_canvas):
+ gtk.Toolbar.__init__(self)
self._abiword_canvas = abiword_canvas
-
-# self._insert_separator()
-
- self._undo = IconButton(icon_name='theme:stock-undo')
- self._undo.connect("activated", self._undo_cb)
- self._abiword_canvas.connect("can_undo", self._canUndo_cb)
- toolbar.append(self._undo)
-
- self._redo = IconButton(icon_name='theme:stock-redo')
- self._redo.connect("activated", self._redo_cb)
- self._abiword_canvas.connect("can_redo", self._canRedo_cb)
- toolbar.append(self._redo)
-
-# self._insert_separator()
-
- self._underline = IconButton(icon_name='theme:stock-underline')
- self._underline_id = self._underline.connect("activated", self._underline_cb)
- self._abiword_canvas.connect("underline", self._isUnderline_cb)
- toolbar.append(self._underline)
-
- self._bold = IconButton(icon_name='theme:stock-bold')
- self._bold_id = self._bold.connect("activated", self._bold_cb)
- self._abiword_canvas.connect("bold", self._isBold_cb)
- toolbar.append(self._bold)
-
-# self._insert_separator()
-
- self._align_left = IconButton(icon_name='theme:stock-justify-left')
- self._align_left_id = self._align_left.connect("activated", self._align_left_cb)
- self._abiword_canvas.connect("left-align", self._isLeftAlign_cb)
- toolbar.append(self._align_left)
-
- self._align_center = IconButton(icon_name='theme:stock-justify-center')
- self._align_center_id = self._align_center.connect("activated", self._align_center_cb)
- self._abiword_canvas.connect("center-align", self._isCenterAlign_cb)
- toolbar.append(self._align_center)
-
- self._align_right = IconButton(icon_name='theme:stock-justify-right')
- self._align_right_id = self._align_right.connect("activated", self._align_right_cb)
- self._abiword_canvas.connect("right-align", self._isRightAlign_cb)
- toolbar.append(self._align_right)
-
- # theme:stock-image does not exist yet; someone kick Eben please :)
- self._image = IconButton(icon_name='theme:stock-image')
- self._image_id = self._image.connect("activated", self._image_cb)
- toolbar.append(self._image)
-
-# reenable this after march 6th
-# self._table = abiword.TableCreator()
-# self._table.set_labels("Table", "Cancel")
-# self._table.show()
-# #self._tableCreate.label().hide()
-
-# tableContainer = hippo.CanvasWidget()
-# tableContainer.props.widget = self._table;
-# self._table_id = self._table.connect("selected", self._table_cb)
- #self._table_id = self._abiword_canvas.connect("table-state", self._tableState)
-# toolbar.append(tableContainer)
-
-# def _insert_separator(self):
-# separator = gtk.SeparatorToolItem()
-# separator.set_draw(True)
-# self.insert(separator, -1)
-# separator.show()
-#
-# def setToggleButtonState(self, button, b, id):
-# button.handler_block(id)
-# button.set_active(b)
-# button.handler_unblock(id)
-
- def _isDirty_cb(self, abi, b):
- print "isDirty",b
-# self._save.set_sensitive(b)
- def _undo_cb(self, button):
- self._abiword_canvas.undo()
-
- def _canUndo_cb(self, abi, b):
- print "canUndo",b
-# self._undo.set_sensitive(b)
-
- def _redo_cb(self, button):
- self._abiword_canvas.redo()
+ self._bold = ToggleToolButton('format-text-bold')
+ self._bold_id = self._bold.connect('clicked', self._bold_cb)
+ self._abiword_canvas.connect('bold', self._isBold_cb)
+ self.insert(self._bold, -1)
+ self._bold.show()
+
+ # TODO: Add italic ToggleToolButton.
+
+ self._underline = ToggleToolButton('format-text-underline')
+ self._underline_id = self._underline.connect('clicked', self._underline_cb)
+ self._abiword_canvas.connect('underline', self._isUnderline_cb)
+ self.insert(self._underline, -1)
+ self._underline.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.set_draw(True)
+ self.insert(separator, -1)
+ separator.show()
+
+ self._align_left = ToggleToolButton('format-justify-left')
+ self._align_left_id = self._align_left.connect('clicked', self._align_left_cb)
+ self._abiword_canvas.connect('left-align', self._isLeftAlign_cb)
+ self.insert(self._align_left, -1)
+ self._align_left.show()
+
+ self._align_center = ToggleToolButton('format-justify-center')
+ self._align_center_id = self._align_center.connect('clicked', self._align_center_cb)
+ self._abiword_canvas.connect('center-align', self._isCenterAlign_cb)
+ self.insert(self._align_center, -1)
+ self._align_center.show()
+
+ self._align_right = ToggleToolButton('format-justify-right')
+ self._align_right_id = self._align_right.connect('clicked', self._align_right_cb)
+ self._abiword_canvas.connect('right-align', self._isRightAlign_cb)
+ self.insert(self._align_right, -1)
+ self._align_right.show()
- def _canRedo_cb(self, abi ,b):
- print "canRedo",b
-# self._redo.set_sensitive(b)
+ def setToggleButtonState(self,button,b,id):
+ button.handler_block(id)
+ button.set_active(b)
+ button.handler_unblock(id)
def _underline_cb(self, button):
self._abiword_canvas.toggle_underline()
def _isUnderline_cb(self, abi, b):
- print "isUnderline",b
-# self.setToggleButtonState(self._underline, b, self._underline_id)
+ print 'isUnderline',b
+ self.setToggleButtonState(self._underline, b, self._underline_id)
def _bold_cb(self, button):
self._abiword_canvas.toggle_bold()
def _isBold_cb(self, abi, b):
- print "isBold",b
-# self.setToggleButtonState(self._bold,b,self._bold_id)
+ print 'isBold',b
+ self.setToggleButtonState(self._bold,b,self._bold_id)
def _align_left_cb(self, button):
self._abiword_canvas.align_left()
def _isLeftAlign_cb(self, abi, b):
- print "isLeftAlign",b
-# self.setToggleButtonState(self._align_left,b,self._align_left_id)
+ print 'isLeftAlign',b
+ self.setToggleButtonState(self._align_left,b,self._align_left_id)
def _align_center_cb(self, button):
self._abiword_canvas.align_center()
def _isCenterAlign_cb(self, abi, b):
- print "isCenterAlign",b
-# self.setToggleButtonState(self._align_center,b,self._align_center_id)
+ print 'isCenterAlign',b
+ self.setToggleButtonState(self._align_center,b,self._align_center_id)
def _align_right_cb(self, button):
self._abiword_canvas.align_right()
def _isRightAlign_cb(self, abi, b):
- print "isRightAlign",b
-# self.setToggleButtonState(self._align_right,b,self._align_right_id)
+ print 'isRightAlign',b
+ self.setToggleButtonState(self._align_right,b,self._align_right_id)
+
+class ImageToolbar(gtk.Toolbar):
+ def __init__(self, abiword_canvas):
+ gtk.Toolbar.__init__(self)
+
+ self._abiword_canvas = abiword_canvas
+
+ # insert-image does not exist yet; someone kick Eben please :)
+ self._image = ToolButton('insert-image')
+ self._image_id = self._image.connect('clicked', self._image_cb)
+ self.insert(self._image, -1)
+ self._image.show()
def _image_cb(self, button):
- print "fileInsertGraphic"
- self._abiword_canvas.invoke_cmd("fileInsertGraphic", "", 0, 0)
+ print 'fileInsertGraphic'
+ self._abiword_canvas.invoke_cmd('fileInsertGraphic', '', 0, 0)
+
+class TableToolbar(gtk.Toolbar):
+ def __init__(self, abiword_canvas):
+ gtk.Toolbar.__init__(self)
+
+ self._abiword_canvas = abiword_canvas
+
+ self._table = abiword.TableCreator()
+ self._table.set_labels(_('Table'), _('Cancel'))
+ self._table_id = self._table.connect('selected', self._table_cb)
+ #self._table_id = self._abiword_canvas.connect('table-state', self._tableState)
+
+ tool_item = gtk.ToolItem()
+ tool_item.add(self._table)
+ self._table.show()
+
+ self.insert(tool_item, -1)
+ tool_item.show()
-# def _table_cb(self, abi, rows, cols):
-# self._abiword_canvas.insert_table(rows,cols)
+ def _table_cb(self, abi, rows, cols):
+ self._abiword_canvas.insert_table(rows,cols)