Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-02-25 00:53:49 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-03-02 06:32:18 (GMT)
commita449baef2c29830e49ff0c040d011ce11478f455 (patch)
treebf3cc020de82433c45fcac93f0d1d7fdd3d6df53
parentc29649d919b6e4aab3eb3fadc6b4a518d2da026e (diff)
Adapt i18n patches to current code; change fileformat to unix
-rw-r--r--GUI_Components/Edit_Pane.py298
-rw-r--r--GUI_Components/Format_Pane.py194
-rw-r--r--GUI_Components/Image_Pane.py256
-rw-r--r--GUI_Components/Library_Pane.py210
-rw-r--r--GUI_Components/Pane.py72
-rw-r--r--GUI_Components/Publish_Pane.py82
-rw-r--r--GUI_Components/__init__.py42
-rw-r--r--Infoslicer_GUI.py436
-rw-r--r--sugaractivity.py131
9 files changed, 577 insertions, 1144 deletions
diff --git a/GUI_Components/Edit_Pane.py b/GUI_Components/Edit_Pane.py
index f6c8056..ea23045 100644
--- a/GUI_Components/Edit_Pane.py
+++ b/GUI_Components/Edit_Pane.py
@@ -1,149 +1,149 @@
-# Copyright (C) IBM Corporation 2008
-import pygtk
-pygtk.require('2.0')
-import gtk
-from GUI_Components.Pane import Pane
-from GUI_Components.Compound_Widgets.Reading_View import Reading_View
-from GUI_Components.Compound_Widgets.Editing_View import Editing_View
-from GUI_Components.Compound_Widgets.Library_View import Library_View
-from Processing.Article.Article import Article
-from Processing.IO_Manager import IO_Manager
-import logging
-from gettext import gettext as _
-
-logger = logging.getLogger('infoslicer')
-
-class Edit_Pane(Pane):
- """
- Created by Jonathan Mace
-
- See __init__.py for overview of panes.
-
- The Edit Pane gives a side-by-side view of the source article and edit article
- and allows users to drag text selections from the left hand (source) to the right
- hand side (edited version).
-
- The article displayed in the left hand side (source) can be changed by the
- drop-down menu (implemented in Compound_Widgets.Reading_View)
-
- The toolbar gives options to change the selection type.
- """
-
- def __init__(self):
- Pane.__init__(self)
- self.name = _("Edit")
-
- """
- Create reading and editing panels
- """
- self.panel = gtk.HBox()
- self.panel.set_homogeneous(True)
- self.panel.show()
-
- self.readarticle = Reading_View()
- self.panel.pack_start(self.readarticle)
- self.readarticle.show()
-
- self.editarticle = Editing_View()
- self.panel.pack_start(self.editarticle)
- self.editarticle.show()
-
- self.toolbar = gtk.Toolbar()
-
- self.label = gtk.Label(_("Snap selection to: "))
- self.label.show()
-
- self.labelcontainer = gtk.ToolItem()
- self.labelcontainer.add(self.label)
- self.toolbar.insert(self.labelcontainer, -1)
- self.labelcontainer.show()
-
- """ Snap selection box """
- self.combobox = gtk.combo_box_new_text()
- self.combobox.append_text(_("Nothing"))
- self.combobox.append_text(_("Sentences"))
- self.combobox.append_text(_("Paragraphs"))
- self.combobox.append_text(_("Sections"))
- self.combobox.connect("changed", self.selection_mode_changed, None)
- self.combobox.set_active(1)
- self.combobox.show()
-
- self.combocontainer = gtk.ToolItem()
- self.combocontainer.add(self.combobox)
- self.toolbar.insert(self.combocontainer, -1)
- self.combocontainer.show()
-
- """
- When highlighting text, while editing, different selection snap methods
- can be used (characters, sentences, paragraphs and sections). Change the selection
- mode based on user request
- """
- def selection_mode_changed(self, widget, data):
- current_selection = widget.get_active_text()
- if current_selection == _("Nothing"):
- self.readarticle.set_full_edit_mode()
- self.editarticle.set_full_edit_mode()
- elif current_selection == _("Sentences"):
- self.readarticle.set_sentence_selection_mode()
- self.editarticle.set_sentence_selection_mode()
- elif current_selection == _("Paragraphs"):
- self.readarticle.set_paragraph_selection_mode()
- self.editarticle.set_paragraph_selection_mode()
- elif current_selection == _("Sections"):
- self.readarticle.set_section_selection_mode()
- self.editarticle.set_section_selection_mode()
- #logger.debug(current_selection)
-
- def get_source_article(self):
- return self.readarticle.textbox.get_article()
-
- """
- Grab source article from IO manager and set up as editing source.
- """
- def set_source_article(self, article):
- # Populate the drop down menu with the articles in the current theme
- article_theme = article.article_theme
- article_title = article.article_title
- if article_title == None:
- article_title = ""
- """ Grab media wiki pages from default wikipedia theme """
- titles = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
- self.readarticle.articlemenu.get_model().clear()
- """ Check user has downloaded some source articles """
- if titles != []:
- self.readarticle.articlemenu.append_text(_("Select a source article from this menu"))
- if article_title == "":
- buf = article.getBuffer()
- start = buf.get_start_iter()
- end = buf.get_end_iter()
- buf.delete(start, end)
- buf.insert(buf.get_start_iter(), _("You can choose a Wikipedia article to copy from by selecting it from the drop-down menu above."))
- buf.insert(buf.get_end_iter(), _("If you want to download more articles from Wikipedia, you can do this in the Library tab."))
- else:
- buf = article.getBuffer()
- buf.insert(buf.get_start_iter(), _("You have not downloaded any articles from Wikipedia. You can download new articles in the Library tab."))
-
- i = 0
- selectionindex = 0
- for title in titles:
- self.readarticle.articlemenu.append_text(title)
- i = i + 1
- if title == article_title:
- selectionindex = i
-
- self.readarticle.articlemenu.set_active(selectionindex)
-
- # Set the read article as appropriate.
- self.readarticle.textbox.set_article(article)
-
-
- def get_working_article(self):
- article = self.editarticle.textbox.get_article()
- return article
-
- def set_working_article(self, article):
- self.editarticle.articletitle.set_markup("<span size='medium'><b> %s </b> %s \n<b> %s </b> %s</span>" % \
- (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
- self.editarticle.textbox.set_article(article)
- self.editarticle.article_theme = _("Wikipedia Articles")
-
+# Copyright (C) IBM Corporation 2008
+import pygtk
+pygtk.require('2.0')
+import gtk
+from GUI_Components.Pane import Pane
+from GUI_Components.Compound_Widgets.Reading_View import Reading_View
+from GUI_Components.Compound_Widgets.Editing_View import Editing_View
+from GUI_Components.Compound_Widgets.Library_View import Library_View
+from Processing.Article.Article import Article
+from Processing.IO_Manager import IO_Manager
+import logging
+from gettext import gettext as _
+
+logger = logging.getLogger('infoslicer')
+
+class Edit_Pane(Pane):
+ """
+ Created by Jonathan Mace
+
+ See __init__.py for overview of panes.
+
+ The Edit Pane gives a side-by-side view of the source article and edit article
+ and allows users to drag text selections from the left hand (source) to the right
+ hand side (edited version).
+
+ The article displayed in the left hand side (source) can be changed by the
+ drop-down menu (implemented in Compound_Widgets.Reading_View)
+
+ The toolbar gives options to change the selection type.
+ """
+
+ def __init__(self):
+ Pane.__init__(self)
+ self.name = _("Edit")
+
+ """
+ Create reading and editing panels
+ """
+ self.panel = gtk.HBox()
+ self.panel.set_homogeneous(True)
+ self.panel.show()
+
+ self.readarticle = Reading_View()
+ self.panel.pack_start(self.readarticle)
+ self.readarticle.show()
+
+ self.editarticle = Editing_View()
+ self.panel.pack_start(self.editarticle)
+ self.editarticle.show()
+
+ self.toolbar = gtk.Toolbar()
+
+ self.label = gtk.Label(_("Snap selection to: "))
+ self.label.show()
+
+ self.labelcontainer = gtk.ToolItem()
+ self.labelcontainer.add(self.label)
+ self.toolbar.insert(self.labelcontainer, -1)
+ self.labelcontainer.show()
+
+ """ Snap selection box """
+ self.combobox = gtk.combo_box_new_text()
+ self.combobox.append_text(_("Nothing"))
+ self.combobox.append_text(_("Sentences"))
+ self.combobox.append_text(_("Paragraphs"))
+ self.combobox.append_text(_("Sections"))
+ self.combobox.connect("changed", self.selection_mode_changed, None)
+ self.combobox.set_active(1)
+ self.combobox.show()
+
+ self.combocontainer = gtk.ToolItem()
+ self.combocontainer.add(self.combobox)
+ self.toolbar.insert(self.combocontainer, -1)
+ self.combocontainer.show()
+
+ """
+ When highlighting text, while editing, different selection snap methods
+ can be used (characters, sentences, paragraphs and sections). Change the selection
+ mode based on user request
+ """
+ def selection_mode_changed(self, widget, data):
+ current_selection = widget.get_active_text()
+ if current_selection == _("Nothing"):
+ self.readarticle.set_full_edit_mode()
+ self.editarticle.set_full_edit_mode()
+ elif current_selection == _("Sentences"):
+ self.readarticle.set_sentence_selection_mode()
+ self.editarticle.set_sentence_selection_mode()
+ elif current_selection == _("Paragraphs"):
+ self.readarticle.set_paragraph_selection_mode()
+ self.editarticle.set_paragraph_selection_mode()
+ elif current_selection == _("Sections"):
+ self.readarticle.set_section_selection_mode()
+ self.editarticle.set_section_selection_mode()
+ #logger.debug(current_selection)
+
+ def get_source_article(self):
+ return self.readarticle.textbox.get_article()
+
+ """
+ Grab source article from IO manager and set up as editing source.
+ """
+ def set_source_article(self, article):
+ # Populate the drop down menu with the articles in the current theme
+ article_theme = article.article_theme
+ article_title = article.article_title
+ if article_title == None:
+ article_title = ""
+ """ Grab media wiki pages from default wikipedia theme """
+ titles = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
+ self.readarticle.articlemenu.get_model().clear()
+ """ Check user has downloaded some source articles """
+ if titles != []:
+ self.readarticle.articlemenu.append_text(_("Select a source article from this menu"))
+ if article_title == "":
+ buf = article.getBuffer()
+ start = buf.get_start_iter()
+ end = buf.get_end_iter()
+ buf.delete(start, end)
+ buf.insert(buf.get_start_iter(), _("You can choose a Wikipedia article to copy from by selecting it from the drop-down menu above."))
+ buf.insert(buf.get_end_iter(), _("If you want to download more articles from Wikipedia, you can do this in the Library tab."))
+ else:
+ buf = article.getBuffer()
+ buf.insert(buf.get_start_iter(), _("You have not downloaded any articles from Wikipedia. You can download new articles in the Library tab."))
+
+ i = 0
+ selectionindex = 0
+ for title in titles:
+ self.readarticle.articlemenu.append_text(title)
+ i = i + 1
+ if title == article_title:
+ selectionindex = i
+
+ self.readarticle.articlemenu.set_active(selectionindex)
+
+ # Set the read article as appropriate.
+ self.readarticle.textbox.set_article(article)
+
+
+ def get_working_article(self):
+ article = self.editarticle.textbox.get_article()
+ return article
+
+ def set_working_article(self, article):
+ self.editarticle.articletitle.set_markup("<span size='medium'><b> %s </b> %s \n<b> %s </b> %s</span>" % \
+ (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
+ self.editarticle.textbox.set_article(article)
+ self.editarticle.article_theme = _("Wikipedia Articles")
+
diff --git a/GUI_Components/Format_Pane.py b/GUI_Components/Format_Pane.py
index d4bba35..92d887b 100644
--- a/GUI_Components/Format_Pane.py
+++ b/GUI_Components/Format_Pane.py
@@ -1,100 +1,100 @@
-# Copyright (C) IBM Corporation 2008
-import pygtk
-pygtk.require('2.0')
-import gtk
-from GUI_Components.Pane import Pane
-from GUI_Components.Compound_Widgets.Editing_View import Editing_View
+# Copyright (C) IBM Corporation 2008
+import pygtk
+pygtk.require('2.0')
+import gtk
+from GUI_Components.Pane import Pane
+from GUI_Components.Compound_Widgets.Editing_View import Editing_View
from gettext import gettext as _
-
-class Format_Pane(Pane):
- """
- Created by Jonathan Mace
-
- See __init__.py for overview of panes.
-
- The Format Pane shows only the current edit article.
- Users can apply formatting such as bold, underline etc.
- Formatting has currently not been implemented. Dummy buttons are on the toolbar.
- """
-
- def __init__(self):
- Pane.__init__(self)
- self.name = _("Format")
-
- self.panel = Editing_View()
- self.panel.show()
-
- self.toolbar = gtk.Toolbar()
-
- """
- Snapping has been turned off in the Editable Textbox, so we no longer
- make use of snapping. This has been left in case we turn it back on.
-
- self.label = gtk.Label("Snap selection to: ")
- self.label.show()
-
- self.labelcontainer = gtk.ToolItem()
- self.labelcontainer.add(self.label)
- self.toolbar.insert(self.labelcontainer, -1)
- self.labelcontainer.show()
-
-
- self.combobox = gtk.combo_box_new_text()
- self.combobox.append_text("Nothing")
- self.combobox.append_text("Sentences")
- self.combobox.append_text("Paragraphs")
- self.combobox.append_text("Sections")
- self.combobox.connect("changed", self.selection_mode_changed, None)
- self.combobox.set_active(1)
- self.combobox.show()
-
-
- self.combocontainer = gtk.ToolItem()
- self.combocontainer.add(self.combobox)
- self.toolbar.insert(self.combocontainer, -1)
- self.combocontainer.show()
- """
-
- self.boldbutton = gtk.ToolButton(gtk.STOCK_BOLD)
- self.boldbutton.set_expand(False)
- self.toolbar.insert(self.boldbutton, -1)
- self.boldbutton.show()
-
- self.italicbutton = gtk.ToolButton(gtk.STOCK_ITALIC)
- self.italicbutton.set_expand(False)
- self.toolbar.insert(self.italicbutton, -1)
- self.italicbutton.show()
-
- self.underlinebutton = gtk.ToolButton(gtk.STOCK_UNDERLINE)
- self.underlinebutton.set_expand(False)
- self.toolbar.insert(self.underlinebutton, -1)
- self.underlinebutton.show()
-
- """
- User wants to change the default snap selection method
- """
- def selection_mode_changed(self, widget, data):
- current_selection = widget.get_active_text()
- if current_selection == _("Nothing"):
- self.panel.set_full_edit_mode()
- elif current_selection == _("Sentences"):
- self.panel.set_sentence_selection_mode()
- elif current_selection == _("Paragraphs"):
- self.panel.set_paragraph_selection_mode()
- elif current_selection == _("Sections"):
- self.panel.set_section_selection_mode()
-
- def get_source_article(self):
- return self.source
-
- def set_source_article(self, article):
- self.source = article
-
- def get_working_article(self):
- article = self.panel.textbox.get_article()
- return article
-
- def set_working_article(self, article):
+
+class Format_Pane(Pane):
+ """
+ Created by Jonathan Mace
+
+ See __init__.py for overview of panes.
+
+ The Format Pane shows only the current edit article.
+ Users can apply formatting such as bold, underline etc.
+ Formatting has currently not been implemented. Dummy buttons are on the toolbar.
+ """
+
+ def __init__(self):
+ Pane.__init__(self)
+ self.name = _("Format")
+
+ self.panel = Editing_View()
+ self.panel.show()
+
+ self.toolbar = gtk.Toolbar()
+
+ """
+ Snapping has been turned off in the Editable Textbox, so we no longer
+ make use of snapping. This has been left in case we turn it back on.
+
+ self.label = gtk.Label("Snap selection to: ")
+ self.label.show()
+
+ self.labelcontainer = gtk.ToolItem()
+ self.labelcontainer.add(self.label)
+ self.toolbar.insert(self.labelcontainer, -1)
+ self.labelcontainer.show()
+
+
+ self.combobox = gtk.combo_box_new_text()
+ self.combobox.append_text("Nothing")
+ self.combobox.append_text("Sentences")
+ self.combobox.append_text("Paragraphs")
+ self.combobox.append_text("Sections")
+ self.combobox.connect("changed", self.selection_mode_changed, None)
+ self.combobox.set_active(1)
+ self.combobox.show()
+
+
+ self.combocontainer = gtk.ToolItem()
+ self.combocontainer.add(self.combobox)
+ self.toolbar.insert(self.combocontainer, -1)
+ self.combocontainer.show()
+ """
+
+ self.boldbutton = gtk.ToolButton(gtk.STOCK_BOLD)
+ self.boldbutton.set_expand(False)
+ self.toolbar.insert(self.boldbutton, -1)
+ self.boldbutton.show()
+
+ self.italicbutton = gtk.ToolButton(gtk.STOCK_ITALIC)
+ self.italicbutton.set_expand(False)
+ self.toolbar.insert(self.italicbutton, -1)
+ self.italicbutton.show()
+
+ self.underlinebutton = gtk.ToolButton(gtk.STOCK_UNDERLINE)
+ self.underlinebutton.set_expand(False)
+ self.toolbar.insert(self.underlinebutton, -1)
+ self.underlinebutton.show()
+
+ """
+ User wants to change the default snap selection method
+ """
+ def selection_mode_changed(self, widget, data):
+ current_selection = widget.get_active_text()
+ if current_selection == _("Nothing"):
+ self.panel.set_full_edit_mode()
+ elif current_selection == _("Sentences"):
+ self.panel.set_sentence_selection_mode()
+ elif current_selection == _("Paragraphs"):
+ self.panel.set_paragraph_selection_mode()
+ elif current_selection == _("Sections"):
+ self.panel.set_section_selection_mode()
+
+ def get_source_article(self):
+ return self.source
+
+ def set_source_article(self, article):
+ self.source = article
+
+ def get_working_article(self):
+ article = self.panel.textbox.get_article()
+ return article
+
+ def set_working_article(self, article):
self.panel.articletitle.set_markup("<span size='medium'><b> %s </b> %s \n<b> %s </b> %s</span>" % \
- (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
+ (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
self.panel.textbox.set_article(article)
diff --git a/GUI_Components/Image_Pane.py b/GUI_Components/Image_Pane.py
index 56161e4..435d35c 100644
--- a/GUI_Components/Image_Pane.py
+++ b/GUI_Components/Image_Pane.py
@@ -1,131 +1,131 @@
-# Copyright (C) IBM Corporation 2008
-import pygtk
-pygtk.require('2.0')
-import gtk
-from GUI_Components.Pane import Pane
-from GUI_Components.Compound_Widgets.Editing_View import Editing_View
-from GUI_Components.Compound_Widgets.Gallery_View import Gallery_View
-from Processing.Article.Article import Article
-from Processing.IO_Manager import IO_Manager
-import logging
+# Copyright (C) IBM Corporation 2008
+import pygtk
+pygtk.require('2.0')
+import gtk
+from GUI_Components.Pane import Pane
+from GUI_Components.Compound_Widgets.Editing_View import Editing_View
+from GUI_Components.Compound_Widgets.Gallery_View import Gallery_View
+from Processing.Article.Article import Article
+from Processing.IO_Manager import IO_Manager
+import logging
from gettext import gettext as _
-
-logger = logging.getLogger('infoslicer')
-
-class Image_Pane(Pane):
- """
- Created by Christopher Leonard
-
- See __init__.py for overview of panes.
-
- The Image Pane gives a side-by-side view of the source article and edit article.
- The left hand side shows images in the source article. These can be dragged into
- the edit article.
- """
-
- def __init__(self):
- Pane.__init__(self)
- self.name = _("Images")
-
- self.panel = gtk.HBox()
- self.panel.set_homogeneous(True)
- self.panel.show()
- self.gallery = Gallery_View()
- self.panel.pack_start(self.gallery)
- self.editarticle = Editing_View()
- self.panel.pack_start(self.editarticle)
- self.editarticle.show_all()
-
- self.gallery._source_article = None
-
- self.toolbar = gtk.Toolbar()
- """
- Snapping has been turned off in the Editable Textbox, so we no longer
- make use of snapping. This has been left in case we turn it back on.
-
-
- self.combobox = gtk.combo_box_new_text()
- self.combobox.append_text("Nothing")
- self.combobox.append_text("Sentences")
- self.combobox.append_text("Paragraphs")
- self.combobox.append_text("Sections")
- self.combobox.connect("changed", self.selection_mode_changed, None)
- self.combobox.set_active(1)
- self.combobox.show()
-
- self.combocontainer = gtk.ToolItem()
- self.combocontainer.add(self.combobox)
- self.toolbar.insert(self.combocontainer, -1)
- self.combocontainer.show()
- """
-
- def selection_mode_changed(self, widget, data):
- current_selection = widget.get_active_text()
- if current_selection == _("Nothing"):
- self.editarticle.set_full_edit_mode()
- elif current_selection == _("Sentences"):
- self.editarticle.set_sentence_selection_mode()
- elif current_selection == _("Paragraphs"):
- self.editarticle.set_paragraph_selection_mode()
- elif current_selection == _("Sections"):
- self.editarticle.set_section_selection_mode()
-
-
- def set_source_article(self, source):
- logger.debug("source received. title: %s, theme: %s" %
- (source.article_title, source.article_theme))
- current = self.gallery._source_article
- self.gallery._source_article = source
- if source and source.article_title:
- source.article_theme = _("Wikipedia Articles")
- if current:
- if current.article_title == source.article_title and current.article_theme == source.article_theme:
- logger.debug("same")
- return
- self.gallery.current_index = 0
- if source.image_list != []:
- logger.debug("setting images")
- self.gallery.set_image_list(source.image_list)
- self.gallery.get_first_item()
-
- self.gallery.theme = _("Wikipedia Articles")
- self.gallery.source_article_id = source.source_article_id
- logger.debug(source.image_list)
- else:
- self.gallery.imagenumberlabel.set_label("")
- self.gallery.image.clear()
- self.gallery.caption.set_text(_("This article does not have any images"))
- else:
- self.gallery.imagenumberlabel.set_label("")
- self.gallery.caption.set_text(_("Please select a Wikipedia article from the menu above"))
-
- def get_source_article(self):
- return self.gallery._source_article
-
- def get_working_article(self):
- article = self.editarticle.textbox.get_article()
- #data = article.getData()
- return article
-
- def set_working_article(self, article):
+
+logger = logging.getLogger('infoslicer')
+
+class Image_Pane(Pane):
+ """
+ Created by Christopher Leonard
+
+ See __init__.py for overview of panes.
+
+ The Image Pane gives a side-by-side view of the source article and edit article.
+ The left hand side shows images in the source article. These can be dragged into
+ the edit article.
+ """
+
+ def __init__(self):
+ Pane.__init__(self)
+ self.name = _("Images")
+
+ self.panel = gtk.HBox()
+ self.panel.set_homogeneous(True)
+ self.panel.show()
+ self.gallery = Gallery_View()
+ self.panel.pack_start(self.gallery)
+ self.editarticle = Editing_View()
+ self.panel.pack_start(self.editarticle)
+ self.editarticle.show_all()
+
+ self.gallery._source_article = None
+
+ self.toolbar = gtk.Toolbar()
+ """
+ Snapping has been turned off in the Editable Textbox, so we no longer
+ make use of snapping. This has been left in case we turn it back on.
+
+
+ self.combobox = gtk.combo_box_new_text()
+ self.combobox.append_text("Nothing")
+ self.combobox.append_text("Sentences")
+ self.combobox.append_text("Paragraphs")
+ self.combobox.append_text("Sections")
+ self.combobox.connect("changed", self.selection_mode_changed, None)
+ self.combobox.set_active(1)
+ self.combobox.show()
+
+ self.combocontainer = gtk.ToolItem()
+ self.combocontainer.add(self.combobox)
+ self.toolbar.insert(self.combocontainer, -1)
+ self.combocontainer.show()
+ """
+
+ def selection_mode_changed(self, widget, data):
+ current_selection = widget.get_active_text()
+ if current_selection == _("Nothing"):
+ self.editarticle.set_full_edit_mode()
+ elif current_selection == _("Sentences"):
+ self.editarticle.set_sentence_selection_mode()
+ elif current_selection == _("Paragraphs"):
+ self.editarticle.set_paragraph_selection_mode()
+ elif current_selection == _("Sections"):
+ self.editarticle.set_section_selection_mode()
+
+
+ def set_source_article(self, source):
+ logger.debug("source received. title: %s, theme: %s" %
+ (source.article_title, source.article_theme))
+ current = self.gallery._source_article
+ self.gallery._source_article = source
+ if source and source.article_title:
+ source.article_theme = _("Wikipedia Articles")
+ if current:
+ if current.article_title == source.article_title and current.article_theme == source.article_theme:
+ logger.debug("same")
+ return
+ self.gallery.current_index = 0
+ if source.image_list != []:
+ logger.debug("setting images")
+ self.gallery.set_image_list(source.image_list)
+ self.gallery.get_first_item()
+
+ self.gallery.theme = _("Wikipedia Articles")
+ self.gallery.source_article_id = source.source_article_id
+ logger.debug(source.image_list)
+ else:
+ self.gallery.imagenumberlabel.set_label("")
+ self.gallery.image.clear()
+ self.gallery.caption.set_text(_("This article does not have any images"))
+ else:
+ self.gallery.imagenumberlabel.set_label("")
+ self.gallery.caption.set_text(_("Please select a Wikipedia article from the menu above"))
+
+ def get_source_article(self):
+ return self.gallery._source_article
+
+ def get_working_article(self):
+ article = self.editarticle.textbox.get_article()
+ #data = article.getData()
+ return article
+
+ def set_working_article(self, article):
logger.debug("working received, title %s theme %s " %
- (article.article_title, article.article_theme))
+ (article.article_title, article.article_theme))
self.editarticle.articletitle.set_markup("<span size='medium'><b> %s </b> %s \n<b> %s </b> %s</span>"% \
- (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
- if article == None:
- article = Article()
- self.editarticle.textbox.set_article(article)
- if article.article_theme == None:
- article.article_theme = _("My Articles")
- theme_list = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
- self.gallery.theme = _("Wikipedia Articles")
- count = -1
- self.gallery.articlemenu.get_model().clear()
-
- for item in theme_list:
- count += 1
- self.gallery.articlemenu.append_text(item)
- if self.gallery._source_article != None and item == self.gallery._source_article.article_title:
- self.gallery.articlemenu.set_active(count)
-
-
+ (_("Theme:"), article.article_theme, _("Article:"), article.article_title))
+ if article == None:
+ article = Article()
+ self.editarticle.textbox.set_article(article)
+ if article.article_theme == None:
+ article.article_theme = _("My Articles")
+ theme_list = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
+ self.gallery.theme = _("Wikipedia Articles")
+ count = -1
+ self.gallery.articlemenu.get_model().clear()
+
+ for item in theme_list:
+ count += 1
+ self.gallery.articlemenu.append_text(item)
+ if self.gallery._source_article != None and item == self.gallery._source_article.article_title:
+ self.gallery.articlemenu.set_active(count)
+
+
diff --git a/GUI_Components/Library_Pane.py b/GUI_Components/Library_Pane.py
index 1ecb7d6..337efb9 100644
--- a/GUI_Components/Library_Pane.py
+++ b/GUI_Components/Library_Pane.py
@@ -1,107 +1,107 @@
-# Copyright (C) IBM Corporation 2008
-import pygtk
-pygtk.require('2.0')
-import gtk
-from GUI_Components.Pane import Pane
-from GUI_Components.Compound_Widgets.Library_View import Library_View
-from GUI_Components.Compound_Widgets.Reading_View import Reading_View
-from Processing.IO_Manager import *
+# Copyright (C) IBM Corporation 2008
+import pygtk
+pygtk.require('2.0')
+import gtk
+from GUI_Components.Pane import Pane
+from GUI_Components.Compound_Widgets.Library_View import Library_View
+from GUI_Components.Compound_Widgets.Reading_View import Reading_View
+from Processing.IO_Manager import *
from gettext import gettext as _
-
-class Library_Pane(Pane):
- """
- Created by Jonathan Mace
-
- The Library Pane sets up a Library View and includes a toolbar which has
- a text entry used for getting articles from Wikipedia.
-
- The Library View contains the entire sum of articles downloaded from Wikipedia.
- These articles can then be added to themes, editing and bundled into content packages
- """
-
- def __init__(self):
- Pane.__init__(self)
- self.wikis = {_("English Wikipedia") : "en.wikipedia.org",
- _("Simple English Wikipedia") : "simple.wikipedia.org",
- _("German Wikipedia") : "de.wikipedia.org"}
- self.toolbar = gtk.Toolbar()
-
-
- self.panel = gtk.HBox()
- self.panel.set_homogeneous(True)
- self.panel.show()
-
- self.librarypanel = Library_View()
- self.panel.pack_start(self.librarypanel)
- self.librarypanel.show()
-
- statuslabel = self.librarypanel.statusbar
-
- # Set up the components of the toolbar
- searchlabelitem = gtk.ToolItem()
- self.toolbar.insert(searchlabelitem, -1)
- searchlabelitem.show()
-
- """
- User search dialog
- """
- searchlabel = gtk.Label(_("Get article from "))
- searchlabelitem.add(searchlabel)
- searchlabel.show()
-
- wikitoolitem = gtk.ToolItem()
- self.toolbar.insert(wikitoolitem, -1)
- wikitoolitem.show()
-
- wikimenu = gtk.combo_box_new_text()
- keys = self.wikis.keys()
- keys.sort()
- for wiki in keys:
- wikimenu.append_text(wiki)
- wikimenu.set_active(0)
- wikitoolitem.add(wikimenu)
- wikimenu.show()
-
- searchentryitem = gtk.ToolItem()
- self.toolbar.insert(searchentryitem, -1)
- searchentryitem.show()
-
- searchentry = gtk.Entry()
- searchentry.set_text(_("Article name"))
- searchentry.connect("activate", self.click_search_button, None)
- searchentryitem.add(searchentry)
- searchentry.show()
-
- self.searchbutton = gtk.ToolButton(gtk.STOCK_FIND)
- self.searchbutton.connect("clicked", self.librarypanel.commence_retrieval, searchentry, statuslabel, wikimenu, self.wikis)
- self.toolbar.insert(self.searchbutton, -1)
- self.searchbutton.show()
-
- # Add some blank space
- blanklabel = gtk.Label(" ")
- blanklabel.show()
-
- blankitem = gtk.ToolItem()
- blankitem.add(blanklabel)
- self.toolbar.insert(blankitem, -1)
- blankitem.show()
-
-
- self.toolbar = self.toolbar
- self.name = _("Library")
-
- def click_search_button(self, widget, data):
- self.searchbutton.emit("clicked")
-
- def get_source_article(self):
- return self.librarypanel.get_source()
-
- def set_source_article(self, article):
- self.librarypanel.set_source(article)
-
- def get_working_article(self):
- return self.librarypanel.get_working()
-
- def set_working_article(self, article):
- self.librarypanel.set_working(article)
+
+class Library_Pane(Pane):
+ """
+ Created by Jonathan Mace
+
+ The Library Pane sets up a Library View and includes a toolbar which has
+ a text entry used for getting articles from Wikipedia.
+
+ The Library View contains the entire sum of articles downloaded from Wikipedia.
+ These articles can then be added to themes, editing and bundled into content packages
+ """
+
+ def __init__(self):
+ Pane.__init__(self)
+ self.wikis = {_("English Wikipedia") : "en.wikipedia.org",
+ _("Simple English Wikipedia") : "simple.wikipedia.org",
+ _("German Wikipedia") : "de.wikipedia.org"}
+ self.toolbar = gtk.Toolbar()
+
+
+ self.panel = gtk.HBox()
+ self.panel.set_homogeneous(True)
+ self.panel.show()
+
+ self.librarypanel = Library_View()
+ self.panel.pack_start(self.librarypanel)
+ self.librarypanel.show()
+
+ statuslabel = self.librarypanel.statusbar
+
+ # Set up the components of the toolbar
+ searchlabelitem = gtk.ToolItem()
+ self.toolbar.insert(searchlabelitem, -1)
+ searchlabelitem.show()
+
+ """
+ User search dialog
+ """
+ searchlabel = gtk.Label(_("Get article from "))
+ searchlabelitem.add(searchlabel)
+ searchlabel.show()
+
+ wikitoolitem = gtk.ToolItem()
+ self.toolbar.insert(wikitoolitem, -1)
+ wikitoolitem.show()
+
+ wikimenu = gtk.combo_box_new_text()
+ keys = self.wikis.keys()
+ keys.sort()
+ for wiki in keys:
+ wikimenu.append_text(wiki)
+ wikimenu.set_active(0)
+ wikitoolitem.add(wikimenu)
+ wikimenu.show()
+
+ searchentryitem = gtk.ToolItem()
+ self.toolbar.insert(searchentryitem, -1)
+ searchentryitem.show()
+
+ searchentry = gtk.Entry()
+ searchentry.set_text(_("Article name"))
+ searchentry.connect("activate", self.click_search_button, None)
+ searchentryitem.add(searchentry)
+ searchentry.show()
+
+ self.searchbutton = gtk.ToolButton(gtk.STOCK_FIND)
+ self.searchbutton.connect("clicked", self.librarypanel.commence_retrieval, searchentry, statuslabel, wikimenu, self.wikis)
+ self.toolbar.insert(self.searchbutton, -1)
+ self.searchbutton.show()
+
+ # Add some blank space
+ blanklabel = gtk.Label(" ")
+ blanklabel.show()
+
+ blankitem = gtk.ToolItem()
+ blankitem.add(blanklabel)
+ self.toolbar.insert(blankitem, -1)
+ blankitem.show()
+
+
+ self.toolbar = self.toolbar
+ self.name = _("Library")
+
+ def click_search_button(self, widget, data):
+ self.searchbutton.emit("clicked")
+
+ def get_source_article(self):
+ return self.librarypanel.get_source()
+
+ def set_source_article(self, article):
+ self.librarypanel.set_source(article)
+
+ def get_working_article(self):
+ return self.librarypanel.get_working()
+
+ def set_working_article(self, article):
+ self.librarypanel.set_working(article)
diff --git a/GUI_Components/Pane.py b/GUI_Components/Pane.py
index 033dfb8..01e15fc 100644
--- a/GUI_Components/Pane.py
+++ b/GUI_Components/Pane.py
@@ -1,36 +1,36 @@
-# Copyright (C) IBM Corporation 2008
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-class Pane:
- """
- An instance of the Pane class has a panel which is the main view,
- a toolbar which interacts with the panel,
- and methods for getting and setting the source and working articles.
-
- - name
- - toolbar
- - panel
-
- """
-
- def __init__(self):
- # Pane instances have a panel, which is the main view of the pane
- self.panel = gtk.Label()
-
- # Pane instances have a toolbar
- self.toolbar = gtk.Toolbar()
-
- def get_working_article(self):
- return self.working
-
- def set_working_article(self, article):
- self.working = article
-
- def get_source_article(self):
- return self.source
-
- def set_source_article(self, article):
- self.source = article
+# Copyright (C) IBM Corporation 2008
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+
+class Pane:
+ """
+ An instance of the Pane class has a panel which is the main view,
+ a toolbar which interacts with the panel,
+ and methods for getting and setting the source and working articles.
+
+ - name
+ - toolbar
+ - panel
+
+ """
+
+ def __init__(self):
+ # Pane instances have a panel, which is the main view of the pane
+ self.panel = gtk.Label()
+
+ # Pane instances have a toolbar
+ self.toolbar = gtk.Toolbar()
+
+ def get_working_article(self):
+ return self.working
+
+ def set_working_article(self, article):
+ self.working = article
+
+ def get_source_article(self):
+ return self.source
+
+ def set_source_article(self, article):
+ self.source = article
diff --git a/GUI_Components/Publish_Pane.py b/GUI_Components/Publish_Pane.py
index 94b9f0f..1d5b1e6 100644
--- a/GUI_Components/Publish_Pane.py
+++ b/GUI_Components/Publish_Pane.py
@@ -1,43 +1,43 @@
-# Copyright (C) IBM Corporation 2008
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-from GUI_Components.Pane import Pane
-from GUI_Components.Compound_Widgets.Publish_View import Publish_View
+# Copyright (C) IBM Corporation 2008
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+from GUI_Components.Pane import Pane
+from GUI_Components.Compound_Widgets.Publish_View import Publish_View
from Processing.IO_Manager import *
-from gettext import gettext as _
-
-"""
-This pane is used when the user decides to package up articles in themes for distribution
-"""
-class Publish_Pane(Pane):
-
- def __init__(self):
- Pane.__init__(self)
- self.toolbar = gtk.Toolbar()
-
- self.name = _("Publish")
-
- self.panel = Publish_View()
- self.panel.show()
-
- self.toolbar = gtk.Toolbar()
-
- def get_source_article(self):
- return self.source
-
- def set_source_article(self, article):
- self.source = article
-
- def get_working_article(self):
- return self.working
-
- def set_working_article(self, article):
- theme = article.article_theme
- title = article.article_title
- if theme != None and title != None:
- IO_Manager().save_article(article)
- self.working = article
- self.panel.populate_themes()
+from gettext import gettext as _
+
+"""
+This pane is used when the user decides to package up articles in themes for distribution
+"""
+class Publish_Pane(Pane):
+
+ def __init__(self):
+ Pane.__init__(self)
+ self.toolbar = gtk.Toolbar()
+
+ self.name = _("Publish")
+
+ self.panel = Publish_View()
+ self.panel.show()
+
+ self.toolbar = gtk.Toolbar()
+
+ def get_source_article(self):
+ return self.source
+
+ def set_source_article(self, article):
+ self.source = article
+
+ def get_working_article(self):
+ return self.working
+
+ def set_working_article(self, article):
+ theme = article.article_theme
+ title = article.article_title
+ if theme != None and title != None:
+ IO_Manager().save_article(article)
+ self.working = article
+ self.panel.populate_themes()
self.panel.export_message.set_text(_("Select the theme you want, choose the articles you wish to include in the package and click 'Publish'."))
diff --git a/GUI_Components/__init__.py b/GUI_Components/__init__.py
index d9b54cd..533d012 100644
--- a/GUI_Components/__init__.py
+++ b/GUI_Components/__init__.py
@@ -1,21 +1,21 @@
-# Copyright (C) IBM Corporation 2008
-"""
-Every class of type *_Pane has the following.
-Thank python for not having interfaces.
-
-pane.panel
-pane.toolbar
-
-These correspond to the main view and toolbar associated with this pane.
-
-set_source_article
-get_source_article
-set_working_article
-get_working_article
-
-The GUI passes the currently selected source and working articles between panes
-when panes are switched. The pane will always be given an article using
-set_source_article before the get_source_article method is called. Thus it is
-feasible to just save the article argument and return it in the get method.
-
-""" \ No newline at end of file
+# Copyright (C) IBM Corporation 2008
+"""
+Every class of type *_Pane has the following.
+Thank python for not having interfaces.
+
+pane.panel
+pane.toolbar
+
+These correspond to the main view and toolbar associated with this pane.
+
+set_source_article
+get_source_article
+set_working_article
+get_working_article
+
+The GUI passes the currently selected source and working articles between panes
+when panes are switched. The pane will always be given an article using
+set_source_article before the get_source_article method is called. Thus it is
+feasible to just save the article argument and return it in the get method.
+
+"""
diff --git a/Infoslicer_GUI.py b/Infoslicer_GUI.py
deleted file mode 100644
index e40c0e6..0000000
--- a/Infoslicer_GUI.py
+++ /dev/null
@@ -1,436 +0,0 @@
-# Copyright (C) IBM Corporation 2008
-
-import pygtk
-import sys
-pygtk.require('2.0')
-import gtk
-import time
-import platform
-from GUI_Components.Edit_Pane import Edit_Pane
-from GUI_Components.Format_Pane import Format_Pane
-from GUI_Components.Library_Pane import Library_Pane
-from GUI_Components.Image_Pane import Image_Pane
-from GUI_Components.Publish_Pane import Publish_Pane
-from Processing.Article.Article import Article
-from Processing.IO_Manager import IO_Manager
-from gettext import gettext as _
-
-class Infoslicer_GUI:
- """
- Created by Jonathan Mace
-
- This is an abstract class. Whichever platform decides to run the app
- must created a subclass of this class.
-
- """
-
- def __init__(self):
- print "InfoSlicer version 0.1, Copyright (C) 2008 IBM Corporation\
- \nInfoSlicer comes with ABSOLUTELY NO WARRANTY; for details run the program with the `-warranty' argument.\
- \nThis is free software, and you are welcome to redistribute it under certain conditions; type `-conditions' for details."
- self._parse_args()
- self.__set_up_GUI()
-
- def _parse_args(self):
- for arg in sys.argv:
- if arg == "-warranty" or arg == "-conditions":
- print "GNU GENERAL PUBLIC LICENSE \
- \nTERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION \
- \n \
-0. This License applies to any program or other work which contains\n\
-a notice placed by the copyright holder saying it may be distributed\n\
-under the terms of this General Public License. The \"Program\", below,\n\
-refers to any such program or work, and a \"work based on the Program\"\n\
-means either the Program or any derivative work under copyright law:\n\
-that is to say, a work containing the Program or a portion of it,\n\
-either verbatim or with modifications and/or translated into another\n\
-language. (Hereinafter, translation is included without limitation in\n\
-the term \"modification\".) Each licensee is addressed as \"you\".\n\
-Activities other than copying, distribution and modification are not\n\
-covered by this License; they are outside its scope. The act of\n\
-running the Program is not restricted, and the output from the Program\n\
-is covered only if its contents constitute a work based on the\n\
-Program (independent of having been made by running the Program).\n\
-Whether that is true depends on what the Program does.\n\
-\n\
- 1. You may copy and distribute verbatim copies of the Program's\n\
-source code as you receive it, in any medium, provided that you\n\
-conspicuously and appropriately publish on each copy an appropriate\n\
-copyright notice and disclaimer of warranty; keep intact all the\n\
-notices that refer to this License and to the absence of any warranty;\n\
-and give any other recipients of the Program a copy of this License\n\
-along with the Program.\n\
-\n\
-You may charge a fee for the physical act of transferring a copy, and\n\
-you may at your option offer warranty protection in exchange for a fee.\n\
-\n\
- 2. You may modify your copy or copies of the Program or any portion\n\
-of it, thus forming a work based on the Program, and copy and\n\
-distribute such modifications or work under the terms of Section 1\n\
-above, provided that you also meet all of these conditions:\n\
-\n\
- a) You must cause the modified files to carry prominent notices\n\
- stating that you changed the files and the date of any change.\n\
-\n\
- b) You must cause any work that you distribute or publish, that in\n\
- whole or in part contains or is derived from the Program or any\n\
- part thereof, to be licensed as a whole at no charge to all third\n\
- parties under the terms of this License.\n\
-\n\
- c) If the modified program normally reads commands interactively\n\
- when run, you must cause it, when started running for such\n\
- interactive use in the most ordinary way, to print or display an\n\
- announcement including an appropriate copyright notice and a\n\
- notice that there is no warranty (or else, saying that you provide\n\
- a warranty) and that users may redistribute the program under\n\
- these conditions, and telling the user how to view a copy of this\n\
- License. (Exception: if the Program itself is interactive but\n\
- does not normally print such an announcement, your work based on\n\
- the Program is not required to print an announcement.)\n\
-\n\
-These requirements apply to the modified work as a whole. If\n\
-identifiable sections of that work are not derived from the Program,\n\
-and can be reasonably considered independent and separate works in\n\
-themselves, then this License, and its terms, do not apply to those\n\
-sections when you distribute them as separate works. But when you\n\
-distribute the same sections as part of a whole which is a work based\n\
-on the Program, the distribution of the whole must be on the terms of\n\
-this License, whose permissions for other licensees extend to the\n\
-entire whole, and thus to each and every part regardless of who wrote it.\n\
-\n\
-Thus, it is not the intent of this section to claim rights or contest\n\
-your rights to work written entirely by you; rather, the intent is to\n\
-exercise the right to control the distribution of derivative or\n\
-collective works based on the Program.\n\
-\n\
-In addition, mere aggregation of another work not based on the Program\n\
-with the Program (or with a work based on the Program) on a volume of\n\
-a storage or distribution medium does not bring the other work under\n\
-the scope of this License.\n\
-\n\
- 3. You may copy and distribute the Program (or a work based on it,\n\
-under Section 2) in object code or executable form under the terms of\n\
-Sections 1 and 2 above provided that you also do one of the following:\n\
-\n\
- a) Accompany it with the complete corresponding machine-readable\n\
- source code, which must be distributed under the terms of Sections\n\
- 1 and 2 above on a medium customarily used for software interchange; or,\n\
-\n\
- b) Accompany it with a written offer, valid for at least three\n\
- years, to give any third party, for a charge no more than your\n\
- cost of physically performing source distribution, a complete\n\
- machine-readable copy of the corresponding source code, to be\n\
- distributed under the terms of Sections 1 and 2 above on a medium\n\
- customarily used for software interchange; or,\n\
-\n\
- c) Accompany it with the information you received as to the offer\n\
- to distribute corresponding source code. (This alternative is\n\
- allowed only for noncommercial distribution and only if you\n\
- received the program in object code or executable form with such\n\
- an offer, in accord with Subsection b above.)\n\
-\n\
-The source code for a work means the preferred form of the work for\n\
-making modifications to it. For an executable work, complete source\n\
-code means all the source code for all modules it contains, plus any\n\
-associated interface definition files, plus the scripts used to\n\
-control compilation and installation of the executable. However, as a\n\
-special exception, the source code distributed need not include\n\
-anything that is normally distributed (in either source or binary\n\
-form) with the major components (compiler, kernel, and so on) of the\n\
-operating system on which the executable runs, unless that component\n\
-itself accompanies the executable.\n\
-\n\
-If distribution of executable or object code is made by offering\n\
-access to copy from a designated place, then offering equivalent\n\
-access to copy the source code from the same place counts as\n\
-distribution of the source code, even though third parties are not\n\
-compelled to copy the source along with the object code.\n\
-\n\
- 4. You may not copy, modify, sublicense, or distribute the Program\n\
-except as expressly provided under this License. Any attempt\n\
-otherwise to copy, modify, sublicense or distribute the Program is\n\
-void, and will automatically terminate your rights under this License.\n\
-However, parties who have received copies, or rights, from you under\n\
-this License will not have their licenses terminated so long as such\n\
-parties remain in full compliance.\n\
-\n\
- 5. You are not required to accept this License, since you have not\n\
-signed it. However, nothing else grants you permission to modify or\n\
-distribute the Program or its derivative works. These actions are\n\
-prohibited by law if you do not accept this License. Therefore, by\n\
-modifying or distributing the Program (or any work based on the\n\
-Program), you indicate your acceptance of this License to do so, and\n\
-all its terms and conditions for copying, distributing or modifying\n\
-the Program or works based on it.\n\
-\n\
- 6. Each time you redistribute the Program (or any work based on the\n\
-Program), the recipient automatically receives a license from the\n\
-original licensor to copy, distribute or modify the Program subject to\n\
-these terms and conditions. You may not impose any further\n\
-restrictions on the recipients' exercise of the rights granted herein.\n\
-You are not responsible for enforcing compliance by third parties to\n\
-this License.\n\
-\n\
- 7. If, as a consequence of a court judgment or allegation of patent\n\
-infringement or for any other reason (not limited to patent issues),\n\
-conditions are imposed on you (whether by court order, agreement or\n\
-otherwise) that contradict the conditions of this License, they do not\n\
-excuse you from the conditions of this License. If you cannot\n\
-distribute so as to satisfy simultaneously your obligations under this\n\
-License and any other pertinent obligations, then as a consequence you\n\
-may not distribute the Program at all. For example, if a patent\n\
-license would not permit royalty-free redistribution of the Program by\n\
-all those who receive copies directly or indirectly through you, then\n\
-the only way you could satisfy both it and this License would be to\n\
-refrain entirely from distribution of the Program.\n\
-\n\
-If any portion of this section is held invalid or unenforceable under\n\
-any particular circumstance, the balance of the section is intended to\n\
-apply and the section as a whole is intended to apply in other\n\
-circumstances.\n\
-\n\
-It is not the purpose of this section to induce you to infringe any\n\
-patents or other property right claims or to contest validity of any\n\
-such claims; this section has the sole purpose of protecting the\n\
-integrity of the free software distribution system, which is\n\
-implemented by public license practices. Many people have made\n\
-generous contributions to the wide range of software distributed\n\
-through that system in reliance on consistent application of that\n\
-system; it is up to the author/donor to decide if he or she is willing\n\
-to distribute software through any other system and a licensee cannot\n\
-impose that choice.\n\
-\n\
-This section is intended to make thoroughly clear what is believed to\n\
-be a consequence of the rest of this License.\n\
-\n\
- 8. If the distribution and/or use of the Program is restricted in\n\
-certain countries either by patents or by copyrighted interfaces, the\n\
-original copyright holder who places the Program under this License\n\
-may add an explicit geographical distribution limitation excluding\n\
-those countries, so that distribution is permitted only in or among\n\
-countries not thus excluded. In such case, this License incorporates\n\
-the limitation as if written in the body of this License.\n\
-\n\
- 9. The Free Software Foundation may publish revised and/or new versions\n\
-of the General Public License from time to time. Such new versions will\n\
-be similar in spirit to the present version, but may differ in detail to\n\
-address new problems or concerns.\n\
-\n\
-Each version is given a distinguishing version number. If the Program\n\
-specifies a version number of this License which applies to it and \"any\n\
-later version\", you have the option of following the terms and conditions\n\
-either of that version or of any later version published by the Free\n\
-Software Foundation. If the Program does not specify a version number of\n\
-this License, you may choose any version ever published by the Free Software\n\
-Foundation.\n\
-\n\
- 10. If you wish to incorporate parts of the Program into other free\n\
-programs whose distribution conditions are different, write to the author\n\
-to ask for permission. For software which is copyrighted by the Free\n\
-Software Foundation, write to the Free Software Foundation; we sometimes\n\
-make exceptions for this. Our decision will be guided by the two goals\n\
-of preserving the free status of all derivatives of our free software and\n\
-of promoting the sharing and reuse of software generally.\n\
-\n\
- NO WARRANTY\n\
-\n\
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n\
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN\n\
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n\
-PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n\
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n\
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS\n\
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE\n\
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n\
-REPAIR OR CORRECTION.\n\
-\n\
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n\
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n\
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n\
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n\
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n\
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n\
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n\
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n\
-POSSIBILITY OF SUCH DAMAGES.\n\
-\n\
- END OF TERMS AND CONDITIONS\n\
-\n\
- How to Apply These Terms to Your New Programs\n\
-\n\
- If you develop a new program, and you want it to be of the greatest\n\
-possible use to the public, the best way to achieve this is to make it\n\
-free software which everyone can redistribute and change under these terms.\n\
-\n\
- To do so, attach the following notices to the program. It is safest\n\
-to attach them to the start of each source file to most effectively\n\
-convey the exclusion of warranty; and each file should have at least\n\
-the \"copyright\" line and a pointer to where the full notice is found.\n\
-\n\
- <one line to give the program's name and a brief idea of what it does.>\n\
- Copyright (C) <year> <name of author>\n\
-\n\
- This program is free software; you can redistribute it and/or modify\n\
- it under the terms of the GNU General Public License as published by\n\
- the Free Software Foundation; either version 2 of the License, or\n\
- (at your option) any later version.\n\
-\n\
- This program is distributed in the hope that it will be useful,\n\
- but WITHOUT ANY WARRANTY; without even the implied warranty of\n\
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
- GNU General Public License for more details.\n\
-\n\
- You should have received a copy of the GNU General Public License along\n\
- with this program; if not, write to the Free Software Foundation, Inc.,\n\
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\
-\n\
-Also add information on how to contact you by electronic and paper mail.\n\
-\n\
-If the program is interactive, make it output a short notice like this\n\
-when it starts in an interactive mode:\n\
-\n\
- Gnomovision version 69, Copyright (C) year name of author\n\
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n\
- This is free software, and you are welcome to redistribute it\n\
- under certain conditions; type `show c' for details.\n\
-\n\
-The hypothetical commands `show w' and `show c' should show the appropriate\n\
-parts of the General Public License. Of course, the commands you use may\n\
-be called something other than `show w' and `show c'; they could even be\n\
-mouse-clicks or menu items--whatever suits your program.\n\
-\n\
-You should also get your employer (if you work as a programmer) or your\n\
-school, if any, to sign a \"copyright disclaimer\" for the program, if\n\
-necessary. Here is a sample; alter the names:\n\
-\n\
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n\
- `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\
-\n\
- <signature of Ty Coon>, 1 April 1989\n\
- Ty Coon, President of Vice\n\
-\n\
-This General Public License does not permit incorporating your program into\n\
-proprietary programs. If your program is a subroutine library, you may\n\
-consider it more useful to permit linking proprietary applications with the\n\
-library. If this is what you want to do, use the GNU Lesser General\n\
-Public License instead of this License.\n\
-"
- return
-
- def setpanel(self, panel):
- """
- This method sets the main display to the panel specified.
- """
- pass
-
- def clearpanel(self):
- """
- This method clears the main display (if setpanel does not clear it before setting)
- """
- pass
-
- def settoolbars(self):
- """
- This method sets the toolbars. Toolbars are stored in self.toolbars and the
- corresponding toolbar names are stored in self.toolbarnames
- """
- pass
-
- def switch_page(self, page_num):
- """
- This method sets the current page to page_num when called.
- """
- pass
-
- """
- Change tab shown and available to the user.
- """
- def mode_switched(self, mode):
- # Mode is the index of the tab that has been switched to
- if self.currentindex != mode:
- pane = self.panes[mode]
- if self.currentpane != None:
- self.source = self.currentpane.get_source_article()
- self.working = self.currentpane.get_working_article()
- pane.set_source_article(self.source)
- pane.set_working_article(self.working)
- self.clearpanel()
- self.setpanel(pane.panel)
- self.currentpane = pane
- self.currentindex = mode
-
- def __set_up_GUI(self):
- # Set up dummy library if appropriate
- running_on = platform.system()
- if running_on == "Linux" and "olpc" in platform.platform().lower():
- themes = IO_Manager().get_themes()
- if themes == []:
- IO_Manager().install_library()
- # Instantiate the panels to be displayed by the GUI
- self.library = Library_Pane()
- self.panes = [self.library,
- Edit_Pane(),
- Format_Pane(),
- Image_Pane(),
- Publish_Pane()]
-
- # Create the original and edited articles to be used by the GUI
-
- self.source = Article()
- self.working = Article()
- ignore = False
-
-
- themes = IO_Manager().get_themes()
- if _("Wikipedia Articles") in themes:
- i = themes.index(_("Wikipedia Articles"))
- del themes[i]
-
- wikiarticles = IO_Manager().get_pages_in_theme(_("Wikipedia Articles"))
- for theme in themes:
- articles = IO_Manager().get_pages_in_theme(theme)
- for article in articles:
- if ignore == True:
- break
- for wikiarticle in wikiarticles:
- if article in wikiarticle:
- self.source = IO_Manager().load_article(wikiarticle, _("Wikipedia Articles"))
- self.working = IO_Manager().load_article(article, theme)
- print "loading source %s from %s" % (wikiarticle, _("Wikipedia Articles"))
- print "loading edit %s from %s" % (article, theme)
- ignore = True
-
- self.currentpane = None
-
- self.library.panel.connect("key-press-event", self.go_arrange_mode, None)
-
- # Add toolbars and panels but keep hidden]
- toolbars = [pane.toolbar for pane in self.panes]
- toolbarnames = [pane.name for pane in self.panes]
- self.settoolbars(toolbars, toolbarnames)
-
- # Set the current index to -1 so that the first pane will always be shown
- self.currentindex = -1
-
- """
- Respond to function key presses
- """
- def go_arrange_mode(self, widget, event, data):
- key = event.keyval
- if key == gtk.keysyms.F1:
- print "f1"
- self.switch_page(0)
- if key == gtk.keysyms.F2:
- print "f2"
- self.switch_page(1)
- if key == gtk.keysyms.F3:
- print "f3"
- self.switch_page(2)
-
- """
- Save and quit current article
- """
- def do_quit_event(self):
- print "quitting"
- article = self.currentpane.get_working_article()
- IO_Manager().save_article(article)
diff --git a/sugaractivity.py b/sugaractivity.py
deleted file mode 100644
index 713365d..0000000
--- a/sugaractivity.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright (C) IBM Corporation 2008
-
-import gtk
-from Infoslicer_GUI import Infoslicer_GUI
-from sugar.activity import activity
-from gettext import gettext as _
-from Processing.IO_Manager import IO_Manager
-
-class sugaractivity( activity.Activity, Infoslicer_GUI ):
- """
- Created by Jonathan Mace
-
- This is the Sugar implementation of the infoslicer GUI.
-
- It sets things in the sugar.activity class in the abstract methods.
- """
-
- """
- Set up Sugar specific GUI config and show interface
- """
- def __init__(self, handle):
- activity.Activity.__init__(self, handle)
- gtk.gdk.threads_init()
- gtk.gdk.threads_enter()
- self.toolbox = activity.ActivityToolbox(self)
- Infoslicer_GUI.__init__(self)
- self._name = handle
- self.toolbox.connect("current-toolbar-changed", self.page_switched, None)
-
- self.set_title(_('InfoSlicer'))
-
- self.set_toolbox(self.toolbox)
- self.toolbox.show()
-
- self.show_all()
- self.toolbox.set_current_toolbar(2)
-
- print "dictionary:"
- print handle.get_dict()
-
- """
- Operating system specific file reading and writing methods are below
- """
- def read_file(self, file_path):
- print "reading the file"
- """
- At the moment, the format of a saved file will just be:
- sourcetitle
- edittitle
- edittheme
- currentindex
- """
-
- file = open(file_path, 'r')
- text = file.read()
- file.close()
- lines = text.splitlines()
- if len(lines) < 3:
- return
- sourcetitle = lines[0]
- workingtitle = lines[1]
- workingtheme = lines[2]
- currentindex = lines[3]
-
- print "file read"
- print "sourcetitle: %s, workingtitle: %s, workingtheme: %s, currentindex: %s" % (sourcetitle, workingtitle, workingtheme, currentindex)
- iomanager = IO_Manager()
- if iomanager.page_exists(sourcetitle, _("Wikipedia Articles")):
- sourcearticle = iomanager.load_article(sourcetitle, _("Wikipedia Articles"))
- else:
- sourcearticle = Article()
- sourcearticle.article_title = sourcetitle
- sourcearticle.article_theme = _("Wikipedia Articles")
- if iomanager.page_exists(workingtitle, workingtheme):
- workingarticle = iomanager.load_article(workingtitle, workingtheme)
- else:
- workingarticle = Article()
- workingarticle.article_title = workingtitle
- workingarticle.article_theme = workingtheme
-
- self.switch_page(currentindex)
-
- self.currentpane.set_source_article(sourcearticle)
- self.currentpane.set_working_article(workingarticle)
-
- def write_file(self, file_path):
- print "writing the file to %s" % file_path
- sourcearticle = self.currentpane.get_source_article()
- workingarticle = self.currentpane.get_working_article()
-
- sourcetitle = sourcearticle.article_title
- if not sourcetitle:
- sourcetitle = "none"
- workingtitle = workingarticle.article_title
- if not workingtitle:
- workingtitle = "none"
- workingtheme = workingarticle.article_theme
- if not workingtheme:
- workingtheme = "none"
- currentindex = self.currentindex
-
- file = open(file_path, 'w')
- print "writing source: %s, working: %s, theme: %s" % (sourcetitle, workingtitle, workingtheme)
- file.write("%s\n%s\n%s\n%s" % (sourcetitle, workingtitle, workingtheme, str(currentindex)))
- file.close()
-
-
-
- def settoolbars(self, toolbars, toolbarnames):
- for i in range(0, len(toolbars)):
- self.toolbox.add_toolbar(toolbarnames[i], toolbars[i])
- toolbars[i].show()
-
-
- def setpanel(self, panel):
- self._main_view = panel
- self.set_canvas(self._main_view)
- self._main_view.show()
-
-
- def page_switched(self, widget, page_num, data):
- print "page_switched to %s" % (page_num, )
- if page_num > 0:
- self.mode_switched(page_num - 1)
-
- def switch_page(self, page_num):
- self.mode_switched(page_num)
-
- def can_close(self):
- self.do_quit_event()
- return True