Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/com/gmail/bernabe/laurent/sugar_olpc
diff options
context:
space:
mode:
Diffstat (limited to 'com/gmail/bernabe/laurent/sugar_olpc')
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/__init__.py0
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/__init__.py0
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/InputDialog.py53
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/MenuActions.py73
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/TheDrawingAreaEventBox.py216
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/__init__.py0
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/PurePyGTKLauncher.py12
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/TheWindow.py69
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/__init__.py0
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/Launcher.py87
-rw-r--r--com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/__init__.py0
11 files changed, 0 insertions, 510 deletions
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/__init__.py b/com/gmail/bernabe/laurent/sugar_olpc/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/__init__.py
+++ /dev/null
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/__init__.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/__init__.py
+++ /dev/null
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/InputDialog.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/InputDialog.py
deleted file mode 100644
index fc06d01..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/InputDialog.py
+++ /dev/null
@@ -1,53 +0,0 @@
-'''
-Created on 13 mai 2011
-
-@author: laurent_bernabe
-'''
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-class InputDialog(gtk.MessageDialog):
- '''
- Creates an input dialog with
- => a label (for the prompt)
- => a text entry
- => ok_button and cancel_button
- '''
-
-
- def __init__(self, prompt, parent=None):
- '''
- Constructor(prompt, parent=None)
- prompt argument : the text of the dialog
- parent : the parent control
- '''
- gtk.MessageDialog.__init__(self,
- parent, gtk.DIALOG_MODAL, gtk.MESSAGE_QUESTION,
- gtk.BUTTONS_OK_CANCEL, prompt)
- self.__entry = gtk.Entry()
- self.vbox.pack_start(self.__entry, True, True, 0)
- self.connect("delete-event", lambda widget, event : self.__close() )
-
- def run(self):
- '''
- Run()
- Runs the dialog
- '''
- self.show_all()
- response = super(InputDialog,self).run()
- if response == gtk.RESPONSE_OK :
- text = self.__entry.get_text()
- else :
- text = None
- self.destroy()
- return text
-
- def __close(self):
- '''
- __close()
- Closes the dialog and returns None
- '''
- self.destroy()
- return None \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/MenuActions.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/MenuActions.py
deleted file mode 100644
index 095024d..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/MenuActions.py
+++ /dev/null
@@ -1,73 +0,0 @@
-'''
-Created on 12 mai 2011
-
-@author: laurent_bernabe
-'''
-from gettext import gettext as _
-from com.gmail.bernabe.laurent.sugar_olpc.learning_writing.gui.InputDialog import \
- InputDialog
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-class MenuActions(object):
- '''
- Wraps codes for the menu actions in both
- pure pygtk mode and in sugar mode
- '''
-
- def __init__(self, wrappedDrawingArea):
- '''
- Constructor
- => wrappedDrawingArea argument : the instance of
- TheDrawingAreaEventBox to act upon
- => MenuActions(wrappedDrawingArea)
- '''
- self.__wrappedDrawingArea = wrappedDrawingArea
-
- def manageDrawingWrite(self):
- '''
- manageDrawingWrite()
- Wraps code for menu Drawing->Write
- '''
- dialog = InputDialog(_("Line thickness value ?\n(I advice you 5)"))
- user_value = dialog.run()
- if user_value != None :
- try:
- line_thickness = int(user_value)
- assert line_thickness > 0
- except (ValueError, AssertionError) :
- message = _("As you did not give an correct integer value,\n5 will be taken")
- message_dialog = gtk.MessageDialog(None,
- gtk.DIALOG_MODAL,
- gtk.MESSAGE_ERROR,
- gtk.BUTTONS_OK,
- message)
- message_dialog.run()
- message_dialog.destroy()
- line_thickness = 5
- self.__wrappedDrawingArea.setRecordingMode(line_thickness)
-
- def manageDrawingRead(self):
- '''
- manageDrawingRead()
- Wraps code for menu Drawing->Read
- '''
- dialog = InputDialog(_("Steps drawing delays (milliseconds) ?\n(I advice you 10)"))
- user_value = dialog.run()
- if user_value != None :
- try:
- delay_milliseconds = int(user_value)
- assert delay_milliseconds > 0
- except (ValueError, AssertionError) :
- message = _("As you did not give an correct integer value,\n10 will be taken")
- message_dialog = gtk.MessageDialog(None,
- gtk.DIALOG_MODAL,
- gtk.MESSAGE_ERROR,
- gtk.BUTTONS_OK,
- message)
- message_dialog.run()
- message_dialog.destroy()
- delay_milliseconds = 10
- self.__wrappedDrawingArea.setReadingMode(delay_milliseconds) \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/TheDrawingAreaEventBox.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/TheDrawingAreaEventBox.py
deleted file mode 100644
index 03c26e7..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/TheDrawingAreaEventBox.py
+++ /dev/null
@@ -1,216 +0,0 @@
-'''
-Created on 10 mai 2011
-
-@author: laurent_bernabe
-'''
-import pygtk
-pygtk.require('2.0')
-import gtk
-import cairo
-import gobject
-
-class TheDrawingAreaEventBox(gtk.EventBox):
- '''
- A gtk.EventBox wrapping the DrawingArea (or canvas) of the application
- We use an EventBox in order to pass events to the contained DrawingArea
- '''
- __DARK_GREEN = (27.0/255.0, 103.0/255.0,46.0/255.0)
- __WHITE = (1.0, 1.0, 1.0)
-
-
- def __init__(self):
- '''
- Simple constructor without argument
- '''
- gtk.EventBox.__init__(self)
- self.__setFields()
- self.__setConnections()
-
- def __setFields(self):
- '''
- Gives values to fields
- '''
- self.__drawingArea = gtk.DrawingArea()
- self.add(self.__drawingArea)
- self.__figures = []
- self.__lineThickness = 1
- # number of steps (for the figures overall) currently drawn
- # only used in reading mode (which is the starting mode)
- self.__drawn_steps = -1
- # __overall_maximum_steps stores the steps of all the figures
- # only used in reading mode (which is the starting mode)
- self.__overall_maximum_steps = -1
- # __current_maximum_steps stores the maximum steps the updater thread
- # is allowing to draw. In each cycle of the updater thread, this value
- # is incremented, giving this impression of a tape reading
- # only used in reading mode (which is the starting mode)
- self.__current_maximum_steps = -1
- # the updater delay in milliseconds
- # => at which intervals, in reading mode,
- # the redraws should be done
- self.__updater_delay_milliseconds = -1
- self.__mousePressed = False
- self.__readingMode = False
-
- def __setConnections(self):
- '''
- Define the events connections
- '''
- self.__drawingArea.connect("expose-event", self.__paintSurface)
- self.connect("motion-notify-event", self.__manageMouseMovedEvent)
- self.connect("button-press-event", self.__manageButtonPressedEvent)
- self.connect("button-release-event", self.__manageButtonReleasedEvent)
-
- def setRecordingMode(self, line_thickness):
- '''
- Switch drawing area management to recording mode
- => setRecordingMode(line_thickness)
- where line_thickness is an integer
- '''
- self.__readingMode = False
- self.__figures = []
- self.__drawingArea.queue_draw()
- self.__startNewFigure()
- self.__setLineThickness(line_thickness)
-
- def setReadingMode(self, intervals_between_steps_milliseconds):
- '''
- Switch drawing area management to reading mode
- => intervals_between_steps argument is an integer saying delays
- in millisecond between steps
- => setReadingMode(intervals_between_steps_milliseconds)
- => intervals_between_steps_milliseconds : integer
- '''
- self.__updater_delay_milliseconds = intervals_between_steps_milliseconds
- self.__drawn_steps = 0
- self.__current_maximum_steps = 0
- self.__computeOverallMaximumSteps()
- self.__drawingArea.queue_draw()
- self.__readingMode = True
- self.__regularlyUpdatePaintForReadingMode()
-
-
- def __setLineThickness(self, line_thickness):
- '''
- Sets lines thickness. Only integers greater than 0 will be taken
- in consideration.
- => __setLineThickness(line_thickness)
- where line_thickness is an integer
- '''
- if isinstance(line_thickness, int) and line_thickness > 0:
- self.__lineThickness = line_thickness
-
- def __paintSurface(self, widget, event):
- '''
- Paint the whole drawing area
- => __paintSurface(widget, event)
- '''
- cairoContext = self.__drawingArea.window.cairo_create()
- self.__drawBackground(cairoContext)
- self.__drawFigures(cairoContext)
- return True
-
- def __drawBackground(self, cairoContext):
- '''
- Paints the background
- => __drawBackground(cairoContext)
- where cairoContext is a cairo context of the DrawingArea
- '''
- cairoContext.set_source_rgb(*TheDrawingAreaEventBox.__DARK_GREEN)
- cairoContext.rectangle( 0,0, *(self.window.get_size()) )
- cairoContext.fill()
-
- def __drawFigures(self, cairoContext):
- '''
- Draws the figures
- => __drawFigures(cairoContext)
- where cairoContext is a cairo context of the DrawingArea
- '''
- cairoContext.set_source_rgb(*TheDrawingAreaEventBox.__WHITE)
- cairoContext.set_line_width(self.__lineThickness)
- cairoContext.set_line_join(cairo.LINE_JOIN_ROUND)
- cairoContext.set_line_cap(cairo.LINE_CAP_ROUND)
- if self.__readingMode:
- self.__drawn_steps = 0
- for current_figure in self.__figures:
- if len(current_figure) > 0 :
- startPoint = current_figure[0]
- cairoContext.move_to(*startPoint)
- if self.__readingMode:
- self.__drawn_steps += 1
- for pointIndex in range(1, len(current_figure)):
- if self.__readingMode and self.__drawn_steps >= self.__current_maximum_steps :
- cairoContext.stroke()
- return
- endPoint = current_figure[pointIndex]
- cairoContext.line_to(*endPoint)
- startPoint = endPoint
- if self.__readingMode :
- self.__drawn_steps += 1
- cairoContext.stroke()
-
- def __startNewFigure(self):
- '''
- Starts a new figure
- '''
- self.__figures += [[]]
-
- def __addPointToCurrentFigure(self, pointTuple):
- '''
- Adds a point to the current figure
- ==> __addPointToCurrentFigure(pointTuple)
- where pointTuple is a tuple of the point coordinates
- '''
- self.__figures[len(self.__figures)-1] += [pointTuple]
-
- def __computeOverallMaximumSteps(self):
- '''
- Computes the number of steps of all the Figures to draw
- '''
- self.__overall_maximum_steps = 0
- for current_figure in self.__figures :
- self.__overall_maximum_steps += len(current_figure)
-
- def __manageMouseMovedEvent(self, widget, event):
- '''
- Manage mouse move event
- => __manageMouseMovedEvent(widget, event)
- '''
- if self.__mousePressed:
- self.__addPointToCurrentFigure((event.x, event.y))
- self.__drawingArea.queue_draw() # repaint the drawing area
- return True # we don't need further handling for this event
-
- def __manageButtonPressedEvent(self, widget, event):
- '''
- Manage button pressed event
- => __manageButtonPressedEvent(widget, event)
- '''
- self.__startNewFigure()
- self.__mousePressed = True
- return True # we don't need further handling for this event
-
- def __manageButtonReleasedEvent(self, widget, event):
- '''
- Manage button released event
- => __manageButtonReleasedEvent(widget, event)
- '''
- self.__mousePressed = False
- return True # we don't need further handling for this event
-
- def __regularlyUpdatePaintForReadingMode(self):
- '''
- Increases the current maximum drawn steps and repaint all, at
- regular delays. (For reading mode)
- => __regularlyUpdatePaintForReadingMode(regular_delay_milliseconds)
- regular_delay_milliseconds : integer
- '''
- if self.__readingMode:
- self.__current_maximum_steps += 1
- self.__drawingArea.queue_draw()
- if self.__current_maximum_steps < self.__overall_maximum_steps :
- gobject.timeout_add(
- self.__updater_delay_milliseconds,
- self.__regularlyUpdatePaintForReadingMode
- )
- \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/__init__.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/gui/__init__.py
+++ /dev/null
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/PurePyGTKLauncher.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/PurePyGTKLauncher.py
deleted file mode 100644
index 204552d..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/PurePyGTKLauncher.py
+++ /dev/null
@@ -1,12 +0,0 @@
-'''
-Created on 10 mai 2011
-
-@author: laurent_bernabe
-'''
-
-import gtk
-from com.gmail.bernabe.laurent.sugar_olpc.learning_writing.pure_pygtk_launcher.TheWindow import TheWindow
-
-if __name__ == '__main__':
- TheWindow()
- gtk.main() \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/TheWindow.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/TheWindow.py
deleted file mode 100644
index d45e418..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/TheWindow.py
+++ /dev/null
@@ -1,69 +0,0 @@
-'''
-Created on 10 mai 2011
-
-@author: laurent_bernabe
-'''
-import pygtk
-
-from com.gmail.bernabe.laurent.sugar_olpc.learning_writing.gui.MenuActions \
-import MenuActions
-
-pygtk.require('2.0')
-import gtk
-
-from \
-com.gmail.bernabe.laurent.sugar_olpc.learning_writing.gui.TheDrawingAreaEventBox \
-import TheDrawingAreaEventBox
-
-class TheWindow(gtk.Window):
- '''
- The Window of the application
- '''
-
- def __init__(self):
- '''
- Simple constructor
- '''
- gtk.Window.__init__(self)
- self.__wrapped_drawing_area = TheDrawingAreaEventBox()
- self.__menu_actions = MenuActions(self.__wrapped_drawing_area)
- self.__vbox = gtk.VBox(False, 2)
- self.add(self.__vbox)
- self.__addMenuBar()
- self.__vbox.pack_start(self.__wrapped_drawing_area)
- self.set_size_request(300, 300)
- self.connect("delete-event", lambda widget, event : gtk.main_quit())
- self.show_all()
-
- def __addMenuBar(self):
- '''
- Adds a menu bar
- '''
- menu_bar = gtk.MenuBar()
- drawing_item = gtk.MenuItem("_Drawing")
- menu_bar.append(drawing_item)
- drawing_sub_menu = gtk.Menu()
- drawing_write_item = gtk.RadioMenuItem(None, "_Write")
- drawing_write_item.set_active(True)
- drawing_write_item.connect("activate", self.__manageDrawingWrite)
- drawing_read_item = gtk.RadioMenuItem(drawing_write_item, "_Read")
- drawing_read_item.connect("activate", self.__manageDrawingRead)
- drawing_sub_menu.append(drawing_write_item)
- drawing_sub_menu.append(drawing_read_item)
- drawing_item.set_submenu(drawing_sub_menu)
- self.__vbox.pack_start(menu_bar, False, True)
- menu_bar.show_all()
-
- def __manageDrawingWrite(self, menu_item):
- '''
- Manages drawing->write menu
- '''
- if menu_item.get_active() :
- self.__menu_actions.manageDrawingWrite()
-
- def __manageDrawingRead(self, menu_item):
- '''
- Manages drawing->read menu
- '''
- if menu_item.get_active() :
- self.__menu_actions.manageDrawingRead() \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/__init__.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/pure_pygtk_launcher/__init__.py
+++ /dev/null
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/Launcher.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/Launcher.py
deleted file mode 100644
index 6aa9e3c..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/Launcher.py
+++ /dev/null
@@ -1,87 +0,0 @@
-'''
-Created on 10 mai 2011
-
-@author: laurent_bernabe
-'''
-from gettext import gettext as _
-from sugar.activity import activity
-
-from com.gmail.bernabe.laurent.sugar_olpc.learning_writing.gui.MenuActions \
-import MenuActions
-
-from com.gmail.bernabe.laurent.sugar_olpc.learning_writing.gui.TheDrawingAreaEventBox \
-import TheDrawingAreaEventBox
-
-import pygtk
-pygtk.require('2.0')
-import gtk
-
-class Launcher(activity.Activity):
- '''
- Launcher for sugar bundle
- '''
-
- def __init__(self, handle):
- '''
- Constructor
- '''
- activity.Activity.__init__(self, handle)
- # Be carefull on the callings order !!!
- # => self.__wrapped_drawing_area is not defined before
- # self.__createAndSetCanvas() call
- # => self.__createAndSetToolbox need self.__menu_actions
- self.__createAndSetCanvas()
- self.__menu_actions = MenuActions(self.__wrapped_drawing_area)
- self.__createAndSetToolbox()
-
- def __createAndSetToolbox(self):
- '''
- Creates and sets the tool box
- '''
- toolbox = activity.ActivityToolbox(self)
- self.__addDrawingToolbarIn(toolbox)
- self.set_toolbox(toolbox)
- toolbox.show_all()
-
- def __createAndSetCanvas(self):
- '''
- Creates and set the Canvas
- '''
- self.__wrapped_drawing_area = TheDrawingAreaEventBox()
- self.set_canvas(self.__wrapped_drawing_area)
- self.show_all()
-
- def __manageDrawingWrite(self, menu_item):
- '''
- Manages drawing->write menu
- '''
- if menu_item.get_active() :
- self.__menu_actions.manageDrawingWrite()
-
- def __manageDrawingRead(self, menu_item):
- '''
- Manages drawing->read menu
- '''
- if menu_item.get_active() :
- self.__menu_actions.manageDrawingRead()
-
- def __addDrawingToolbarIn(self, toolbox):
- '''
- Creates and add Drawing toolbar in toolbox
- => __addDrawingToolbarIn(toolbox)
- '''
- drawing_toolbar = gtk.Toolbar()
- drawing_toolbar.set_style(gtk.TOOLBAR_ICONS)
- #----------------------
- drawing_toolbar_write_button = gtk.RadioToolButton(None, gtk.STOCK_MEDIA_RECORD)
- drawing_toolbar_write_button.set_active(True)
- drawing_toolbar_write_button.connect("clicked", self.__manageDrawingWrite )
- drawing_toolbar.insert(drawing_toolbar_write_button, 0)
- #---------------------
- drawing_toolbar_read_button = gtk.RadioToolButton(drawing_toolbar_write_button, gtk.STOCK_MEDIA_PLAY)
- drawing_toolbar_read_button.set_active(False)
- drawing_toolbar_read_button.connect("clicked", self.__manageDrawingRead )
- drawing_toolbar.insert(drawing_toolbar_read_button, 1)
- #--------------------
- toolbox.add_toolbar(_('Drawing'), drawing_toolbar)
- drawing_toolbar.show_all() \ No newline at end of file
diff --git a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/__init__.py b/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/com/gmail/bernabe/laurent/sugar_olpc/learning_writing/sugar_launcher/__init__.py
+++ /dev/null