From b9029092b88a641f8ff89d8a22c724201d2f40b0 Mon Sep 17 00:00:00 2001 From: Walter Bender Date: Thu, 11 Mar 2010 19:02:59 +0000 Subject: pylint cleanup --- (limited to 'TurtleArtActivity.py') diff --git a/TurtleArtActivity.py b/TurtleArtActivity.py index 9292f65..93a367a 100644 --- a/TurtleArtActivity.py +++ b/TurtleArtActivity.py @@ -28,38 +28,30 @@ import gobject import logging _logger = logging.getLogger('turtleart-activity') -import sugar from sugar.activity import activity try: # 0.86 toolbar widgets - from sugar.bundle.activitybundle import ActivityBundle from sugar.activity.widgets import ActivityToolbarButton from sugar.activity.widgets import StopButton from sugar.graphics.toolbarbox import ToolbarBox from sugar.graphics.toolbarbox import ToolbarButton - _new_sugar_system = True + NEW_SUGAR_SYSTEM = True except ImportError: - _new_sugar_system = False - pass + NEW_SUGAR_SYSTEM = False from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.menuitem import MenuItem -from sugar.graphics.icon import Icon from sugar.datastore import datastore import telepathy -from dbus.service import method, signal +from dbus.service import signal from dbus.gobject_service import ExportedGObject from sugar.presence import presenceservice from sugar.presence.tubeconn import TubeConnection from sugar import profile from gettext import gettext as _ -import locale import os.path -import subprocess import tarfile -import sys -from taconstants import * +from taconstants import PALETTE_NAMES, OVERLAY_LAYER, HELP_STRINGS from taexporthtml import save_html from taexportlogo import save_logo from tautils import data_to_file, data_to_string, data_from_string, get_path @@ -72,30 +64,31 @@ PATH = '/org/laptop/TurtleArtActivity' class TurtleArtActivity(activity.Activity): def __init__(self, handle): + """ Activity subclass for Turtle Art """ super(TurtleArtActivity, self).__init__(handle) datapath = get_path(activity, 'data') self._setup_visibility_handler() - self.new_sugar_system = _new_sugar_system + self.new_sugar_system = NEW_SUGAR_SYSTEM self._setup_toolbar() canvas = self._setup_scrolled_window() - lang = self._check_ver_lang_change(datapath) + self._check_ver_change(datapath) - self._setup_canvas(canvas, lang) + self._setup_canvas(canvas) self._load_python_code() self._setup_sharing() - """ Activity toolbar callbacks """ + # Activity toolbar callbacks - def _do_save_as_html_cb(self, button): - # write html out to datastore + def do_save_as_html_cb(self, button): + """ Write html out to datastore. """ self.save_as_html.set_icon("htmlon") _logger.debug("saving html code") # until we have URLs for datastore objects, always embed images @@ -153,16 +146,16 @@ class TurtleArtActivity(activity.Activity): dsobject.metadata['activity'] = 'org.laptop.WebActivity' datastore.write(dsobject) dsobject.destroy() - gobject.timeout_add(250,self.save_as_html.set_icon, "htmloff") + gobject.timeout_add(250, self.save_as_html.set_icon, "htmloff") self.tw.saved_pictures = [] return - def _do_save_as_logo_cb(self, button): - # write logo code out to datastore + def do_save_as_logo_cb(self, button): + """ Write logo code out to datastore. """ self.save_as_logo.set_icon("logo-saveon") # grab code from stacks - logocode = save_logo(self,self.tw) + logocode = save_logo(self.tw) if len(logocode) == 0: return filename = "logosession.lg" @@ -191,10 +184,11 @@ class TurtleArtActivity(activity.Activity): dsobject.set_file_path(file_path) datastore.write(dsobject) - gobject.timeout_add(250,self.save_as_logo.set_icon, "logo-saveoff") + gobject.timeout_add(250, self.save_as_logo.set_icon, "logo-saveoff") return - def _do_load_ta_project_cb(self, button): + def do_load_ta_project_cb(self, button): + """ Load a project from the Journal """ from sugar.graphics.objectchooser import ObjectChooser chooser = ObjectChooser(_("Project"), None, gtk.DIALOG_MODAL | \ gtk.DIALOG_DESTROY_WITH_PARENT) @@ -213,14 +207,15 @@ class TurtleArtActivity(activity.Activity): del chooser return - def _do_load_python_cb(self, button): + def do_load_python_cb(self, button): + """ Load Python code from the Journal. """ self.load_python.set_icon("pippy-openon") self.import_py() - gobject.timeout_add(250,self.load_python.set_icon, "pippy-openoff") + gobject.timeout_add(250, self.load_python.set_icon, "pippy-openoff") return - # Import Python code from the Journal to load into "myblock" def import_py(self): + """ Import Python code from the Journal to load into 'myblock'. """ from sugar.graphics.objectchooser import ObjectChooser chooser = ObjectChooser('Python code', None, gtk.DIALOG_MODAL | \ gtk.DIALOG_DESTROY_WITH_PARENT) @@ -233,12 +228,13 @@ class TurtleArtActivity(activity.Activity): chooser.destroy() del chooser - def _load_python(self,dsobject): + def _load_python(self, dsobject): + """ Read the Python code from the Journal object """ try: _logger.debug("opening %s " % dsobject.file_path) - FILE = open(dsobject.file_path, "r") - self.tw.myblock = FILE.read() - FILE.close() + file_handle = open(dsobject.file_path, "r") + self.tw.myblock = file_handle.read() + file_handle.close() self.tw.set_userdefined() # save reference to Pythin code in the project metadata self.metadata['python code'] = dsobject.object_id @@ -246,21 +242,19 @@ class TurtleArtActivity(activity.Activity): _logger.debug("couldn't open %s" % dsobject.file_path) dsobject.destroy() - def _do_save_as_image_cb(self, button): + def do_save_as_image_cb(self, button): + """ Save the canvas to the Journal. """ self.save_as_image.set_icon("image-saveon") _logger.debug("saving image to journal") self.tw.save_as_image() - gobject.timeout_add(250,self.save_as_image.set_icon, "image-saveoff") + gobject.timeout_add(250, self.save_as_image.set_icon, "image-saveoff") return - """ Save snapshot """ - def _do_keep_cb(self, button): - # Create a datastore object + def do_keep_cb(self, button): + """ Save a snapshot of the project to the Journal. """ datapath = get_path(activity, 'instance') - tafile = os.path.join(datapath,"tmpfile.ta") - print tafile try: data_to_file(self.tw.assemble_data_to_save(), tafile) except: @@ -283,9 +277,10 @@ class TurtleArtActivity(activity.Activity): os.remove(tafile) return - """ Main toolbar button callbacks """ - """ Show/hide palette """ - def _do_palette_cb(self, button): + # Main toolbar button callbacks + + def do_palette_cb(self, button): + """ Show/hide palette """ if self.tw.palette == True: self.tw.hideshow_palette(False) self.palette_button.set_icon("paletteon") @@ -300,8 +295,8 @@ class TurtleArtActivity(activity.Activity): if self.new_sugar_system: self.palette_buttons[0].set_icon(PALETTE_NAMES[0]+'on') - """ Palette selector buttons """ - def _do_palette_buttons_cb(self, button, i): + def do_palette_buttons_cb(self, button, i): + """ Palette selector buttons """ if self.tw.selected_palette is not None: if self.tw.selected_palette != i: self.palette_buttons[self.tw.selected_palette].set_icon( @@ -311,16 +306,20 @@ class TurtleArtActivity(activity.Activity): self.palette_button.set_icon("paletteoff") self.palette_button.set_tooltip(_('Hide palette')) - """ These methods are called both from buttons and palette """ + # These methods are called both from buttons and palette. + def do_hidepalette(self): + """ Hide the palette. """ self.palette_button.set_icon("paletteon") self.palette_button.set_tooltip(_('Show palette')) def do_showpalette(self): + """ Show the palette. """ self.palette_button.set_icon("paletteoff") self.palette_button.set_tooltip(_('Hide palette')) - def _do_hideshow_cb(self, button): + def do_hideshow_cb(self, button): + """ Toggle visibility. """ self.tw.hideshow_button() if self.tw.hide == True: # we just hid the blocks self.blocks_button.set_icon("hideshowon") @@ -337,59 +336,64 @@ class TurtleArtActivity(activity.Activity): self.palette_button.set_tooltip(_('Hide palette')) def do_hide(self): + """ Hide blocks. """ self.blocks_button.set_icon("hideshowon") self.blocks_button.set_tooltip(_('Show blocks')) self.palette_button.set_icon("paletteon") self.palette_button.set_tooltip(_('Show palette')) def do_show(self): + """ Show blocks. """ self.blocks_button.set_icon("hideshowoff") self.blocks_button.set_tooltip(_('Hide blocks')) self.palette_button.set_icon("paletteoff") self.palette_button.set_tooltip(_('Hide palette')) - def _do_eraser_cb(self, button): + def do_eraser_cb(self, button): + """ Clear the screen and recenter. """ self.eraser_button.set_icon("eraseroff") self.recenter() self.tw.eraser_button() - gobject.timeout_add(250,self.eraser_button.set_icon,"eraseron") + gobject.timeout_add(250, self.eraser_button.set_icon, "eraseron") - def _do_run_cb(self, button): + def do_run_cb(self, button): + """ Callback for run button (rabbit). """ self.run_button.set_icon("run-faston") self.tw.lc.trace = 0 self.tw.run_button(0) - gobject.timeout_add(1000,self.run_button.set_icon,"run-fastoff") + gobject.timeout_add(1000, self.run_button.set_icon, "run-fastoff") - def _do_step_cb(self, button): + def do_step_cb(self, button): + """ Callback for step button (turtle). """ self.step_button.set_icon("run-slowon") self.tw.lc.trace = 0 self.tw.run_button(3) - gobject.timeout_add(1000,self.step_button.set_icon,"run-slowoff") + gobject.timeout_add(1000, self.step_button.set_icon, "run-slowoff") - def _do_debug_cb(self, button): + def do_debug_cb(self, button): + """ Callback for debug button (bug). """ self.debug_button.set_icon("debugon") self.tw.lc.trace = 1 self.tw.run_button(6) - gobject.timeout_add(1000,self.debug_button.set_icon,"debugoff") + gobject.timeout_add(1000, self.debug_button.set_icon, "debugoff") - def _do_stop_cb(self, button): + def do_stop_cb(self, button): + """ Callback for stop button. """ self.stop_button.set_icon("stopitoff") self.tw.stop_button() self.step_button.set_icon("run-slowoff") self.run_button.set_icon("run-fastoff") - """ Sample projects open dialog """ - def _do_samples_cb(self, button): + def do_samples_cb(self, button): + """ Sample projects open dialog """ # FIXME: encapsulation! self.tw.load_file(True) # run the activity self.stop_button.set_icon("stopiton") self.tw.run_button(0) - """ - Recenter scrolled window around canvas - """ def recenter(self): + """ Recenter scrolled window around canvas. """ hadj = self.sw.get_hadjustment() hadj.set_value(0) self.sw.set_hadjustment(hadj) @@ -397,33 +401,32 @@ class TurtleArtActivity(activity.Activity): vadj.set_value(0) self.sw.set_vadjustment(vadj) - def _do_fullscreen_cb(self, button): + def do_fullscreen_cb(self, button): + """ Hide the Sugar toolbars. """ self.fullscreen() self.recenter() - def _do_resize_blocks_cb(self, button, scale_factor): + def do_resize_blocks_cb(self, button, scale_factor): + """ Scale the blocks. """ self.tw.block_scale *= scale_factor self.tw.resize_blocks() - """ - Display coordinate grids - """ - def _do_cartesian_cb(self, button): + def do_cartesian_cb(self, button): + """ Display Cartesian coordinate grid. """ if self.tw.cartesian: self.tw.set_cartesian(False) else: self.tw.set_cartesian(True) - def _do_polar_cb(self, button): + def do_polar_cb(self, button): + """ Display Polar coordinate grid. """ if self.tw.polar: self.tw.set_polar(False) else: self.tw.set_polar(True) - """ - Rescale coordinate system to 100 == height/2 or 100 == 100 pixels (default) - """ - def _do_rescale_cb(self, button): + def do_rescale_cb(self, button): + """ Rescale coordinate system (100==height/2 or 100 pixels). """ if self.tw.coord_scale == 1: self.tw.coord_scale = self.tw.height/200 self.rescale_button.set_icon("contract-coordinates") @@ -442,29 +445,28 @@ class TurtleArtActivity(activity.Activity): self.tw.overlay_shapes['Cartesian_labeled'].set_layer( OVERLAY_LAYER) - """ - View logo code as part of view source. - """ def get_document_path(self, async_cb, async_err_cb): + """ View Logo code as part of view source. """ logo_code_path = self._dump_logo_code() async_cb(logo_code_path) def _dump_logo_code(self): + """ Save Logo code to Journal. """ datapath = get_path(activity, 'instance') tafile = os.path.join(datapath,"tmpfile.ta") try: - code = save_logo(self, self.tw) + code = save_logo(self.tw) f = file(tafile, "w") f.write(code) f.close() except Exception, e: - print("couldn't dump code to view source: " + str(e)) + print("Couldn't dump code to view source: " + str(e)) return tafile - """ - Either set up initial share... - """ + # Sharing-related callbacks + def _shared_cb(self, activity): + """ Either set up initial share... """ if self._shared_activity is None: _logger.error("Failed to share or join activity ... \ _shared_activity is null in _shared_cb()") @@ -486,10 +488,8 @@ class TurtleArtActivity(activity.Activity): id = self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES].OfferDBusTube( SERVICE, {}) - """ - ...or join an exisiting share. - """ def _joined_cb(self, activity): + """ ...or join an exisiting share. """ if self._shared_activity is None: _logger.error("Failed to share or join activity ... \ _shared_activity is null in _shared_cb()") @@ -521,10 +521,8 @@ class TurtleArtActivity(activity.Activity): def _list_tubes_error_cb(self, e): _logger.error('ListTubes() failed: %s', e) - """ - Create a new tube - """ def _new_tube_cb(self, id, initiator, type, service, params, state): + """ Create a new tube. """ _logger.debug('New tube: ID=%d initator=%d type=%d service=%s ' 'params=%r state=%d', id, initiator, type, service, params, state) @@ -544,70 +542,67 @@ class TurtleArtActivity(activity.Activity): # now that we have the tube, we can ask for an initialization if self.waiting_for_blocks: - self._send_event("i") - - """ - Handle the receiving of events in share - Events are sent as a tuple - cmd:data - where cmd is a mouse or keyboard event and data are x,y coordinates - or a keysroke - """ + self.send_event("i") + def event_received_cb(self, text): + """ Handle the receiving of events in share """ + + """ DEPRECIATED + Events are sent as a tuple + cmd:data + where cmd is a mouse or keyboard event and data are x,y coordinates + or a keysroke + """ # maybe we can use a stack to share events to new-comers? # self._share += "text + "\n" if text[0] == 'p': # button press - e,x,y,mask = text.split(":") + e, x, y, mask = text.split(":") # _logger.debug("receiving button press: "+x+" "+y+" "+mask) if mask == 'T': - self.tw.button_press(True,int(x),int(y),False) + self.tw.button_press(True, int(x), int(y), False) else: - self.tw.button_press(False,int(x),int(y),False) + self.tw.button_press(False, int(x), int(y), False) elif text[0] == 'r': # block release - e,x,y = text.split(":") + e, x, y = text.split(":") # _logger.debug("receiving button release: " + x + " " + y) - self.tw.button_release(int(x),int(y),False) + self.tw.button_release(int(x), int(y), False) elif text[0] == 'm': # mouse move - e,x,y = text.split(":") + e, x, y = text.split(":") _logger.debug("receiving move: " + x + " " + y) - self.tw.mouse_move(0,0,False,int(x),int(y)) + self.tw.mouse_move(0, 0, False, int(x), int(y)) elif text[0] == 'k': # typing - e,mask,keyname = text.split(":",3) + e, mask, keyname = text.split(":", 3) # _logger.debug("recieving key press: " + mask + " " + keyname) if mask == 'T': - self.tw.key_press(True,keyname,False) + self.tw.key_press(True, keyname, False) else: - self.tw.key_press(False,keyname,False) + self.tw.key_press(False, keyname, False) elif text[0] == 'i': # request for current state # sharer should send current state to joiner if self.initiating: _logger.debug("serialize the project and send to joiner") text = data_to_string(self.tw.assemble_data_to_save(True, True)) - self._send_event("I:" + text) + self.send_event("I:" + text) self.tw.show_palette() elif text[0] == 'I': # receiving current state if self.waiting_for_blocks: _logger.debug("receiving project from sharer") - e,text = text.split(":",2) + e, text = text.split(":", 2) if len(text) > 0: self.tw.new_project() self.tw.process_data(data_from_string(text)) # all caught up self.waiting_for_blocks = False - """ - Send event through the tube - """ - def _send_event(self, entry): + def send_event(self, entry): + """ Send event through the tube. """ # nick = profile.get_nick_name() # nick = nick.upper() if hasattr(self, 'chattube') and self.chattube is not None: self.chattube.SendText(entry) - """ - Callback method for when the activity's visibility changes - """ def __visibility_notify_cb(self, window, event): + """ Callback method for when the activity's visibility changes. """ if event.state == gtk.gdk.VISIBILITY_FULLY_OBSCURED: # _logger.debug("I am not visible so I should free the audio") self.tw.lc.ag = None @@ -616,18 +611,17 @@ class TurtleArtActivity(activity.Activity): pass def update_title_cb(self, widget, event, toolbox): + """ Update the title. """ toolbox._activity_toolbar._update_title_cb() toolbox._activity_toolbar._update_title_sid = True def _keep_clicked_cb(self, button): + """ Keep button clicked. """ self.jobject_new_patch() - """ - Setup toolbar according to Sugar version - """ def _setup_toolbar(self): - + """ Setup toolbar according to Sugar version """ if self.new_sugar_system: # Use 0.86 toolbar design toolbar_box = ToolbarBox() @@ -637,35 +631,35 @@ class TurtleArtActivity(activity.Activity): # Save snapshot is like Keep, but it creates a new activity id self.keep_button = ToolButton('filesave') self.keep_button.set_tooltip(_("Save snapshot")) - self.keep_button.connect('clicked', self._do_keep_cb) + self.keep_button.connect('clicked', self.do_keep_cb) self.keep_button.show() activity_button.props.page.insert(self.keep_button, -1) # Save as HTML self.save_as_html = ToolButton('htmloff') self.save_as_html.set_tooltip(_("Save as HTML")) - self.save_as_html.connect('clicked', self._do_save_as_html_cb) + self.save_as_html.connect('clicked', self.do_save_as_html_cb) self.save_as_html.show() activity_button.props.page.insert(self.save_as_html, -1) # Save as Logo self.save_as_logo = ToolButton('logo-saveoff') self.save_as_logo.set_tooltip(_("Save as Logo")) - self.save_as_logo.connect('clicked', self._do_save_as_logo_cb) + self.save_as_logo.connect('clicked', self.do_save_as_logo_cb) self.save_as_logo.show() activity_button.props.page.insert(self.save_as_logo, -1) # Save as image self.save_as_image = ToolButton('image-saveoff') self.save_as_image.set_tooltip(_("Save as image")) - self.save_as_image.connect('clicked', self._do_save_as_image_cb) + self.save_as_image.connect('clicked', self.do_save_as_image_cb) self.save_as_image.show() activity_button.props.page.insert(self.save_as_image, -1) # Load Python code into programmable brick self.load_python = ToolButton('pippy-openoff') self.load_python.set_tooltip(_("Load my block")) - self.load_python.connect('clicked', self._do_load_python_cb) + self.load_python.connect('clicked', self.do_load_python_cb) self.load_python.show() activity_button.props.page.insert(self.load_python, -1) @@ -673,7 +667,7 @@ class TurtleArtActivity(activity.Activity): self.load_ta_project = ToolButton('load-from-journal') self.load_ta_project.set_tooltip(\ _("Import project from the Journal")) - self.load_ta_project.connect('clicked', self._do_load_ta_project_cb) + self.load_ta_project.connect('clicked', self.do_load_ta_project_cb) self.load_ta_project.show() activity_button.props.page.insert(self.load_ta_project, -1) @@ -695,20 +689,20 @@ class TurtleArtActivity(activity.Activity): fullscreen_button = ToolButton('view-fullscreen') fullscreen_button.set_tooltip(_("Fullscreen")) fullscreen_button.props.accelerator = 'Enter' - fullscreen_button.connect('clicked', self._do_fullscreen_cb) - view_toolbar.insert(fullscreen_button,-1) + fullscreen_button.connect('clicked', self.do_fullscreen_cb) + view_toolbar.insert(fullscreen_button, -1) fullscreen_button.show() cartesian_button = ToolButton('view-Cartesian') cartesian_button.set_tooltip(_("Cartesian coordinates")) - cartesian_button.connect('clicked', self._do_cartesian_cb) - view_toolbar.insert(cartesian_button,-1) + cartesian_button.connect('clicked', self.do_cartesian_cb) + view_toolbar.insert(cartesian_button, -1) cartesian_button.show() polar_button = ToolButton('view-polar') polar_button.set_tooltip(_("Polar coordinates")) - polar_button.connect('clicked', self._do_polar_cb) - view_toolbar.insert(polar_button,-1) + polar_button.connect('clicked', self.do_polar_cb) + view_toolbar.insert(polar_button, -1) polar_button.show() separator = gtk.SeparatorToolItem() @@ -723,7 +717,7 @@ class TurtleArtActivity(activity.Activity): self.coordinates_label.show() self.coordinates_toolitem = gtk.ToolItem() self.coordinates_toolitem.add(self.coordinates_label) - view_toolbar.insert(self.coordinates_toolitem,-1) + view_toolbar.insert(self.coordinates_toolitem, -1) self.coordinates_toolitem.show() separator = gtk.SeparatorToolItem() @@ -734,22 +728,22 @@ class TurtleArtActivity(activity.Activity): self.rescale_button = ToolButton('expand-coordinates') self.rescale_button.set_tooltip(_("Rescale coordinates up")) - self.rescale_button.connect('clicked', self._do_rescale_cb) - view_toolbar.insert(self.rescale_button,-1) + self.rescale_button.connect('clicked', self.do_rescale_cb) + view_toolbar.insert(self.rescale_button, -1) self.rescale_button.show() self.resize_up_button = ToolButton('resize+') self.resize_up_button.set_tooltip(_("Grow blocks")) self.resize_up_button.connect('clicked', - self._do_resize_blocks_cb, 1.5) - view_toolbar.insert(self.resize_up_button,-1) + self.do_resize_blocks_cb, 1.5) + view_toolbar.insert(self.resize_up_button, -1) self.resize_up_button.show() self.resize_down_button = ToolButton('resize-') self.resize_down_button.set_tooltip(_("Shrink blocks")) self.resize_down_button.connect('clicked', - self._do_resize_blocks_cb, 0.667) - view_toolbar.insert(self.resize_down_button,-1) + self.do_resize_blocks_cb, 0.667) + view_toolbar.insert(self.resize_down_button, -1) self.resize_down_button.show() view_toolbar_button = ToolbarButton( @@ -770,7 +764,7 @@ class TurtleArtActivity(activity.Activity): self.palette_buttons[i].set_tooltip(HELP_STRINGS[name]) self.palette_buttons[i].props.sensitive = True self.palette_buttons[i].connect('clicked', - self._do_palette_buttons_cb, i) + self.do_palette_buttons_cb, i) palette_toolbar.insert(self.palette_buttons[i], -1) self.palette_buttons[i].show() @@ -783,7 +777,7 @@ class TurtleArtActivity(activity.Activity): self.palette_button = ToolButton( "paletteoff" ) self.palette_button.set_tooltip(_('Hide palette')) self.palette_button.props.sensitive = True - self.palette_button.connect('clicked', self._do_palette_cb) + self.palette_button.connect('clicked', self.do_palette_cb) self.palette_button.props.accelerator = _('p') palette_toolbar.insert(self.palette_button, -1) self.palette_button.show() @@ -791,7 +785,7 @@ class TurtleArtActivity(activity.Activity): self.blocks_button = ToolButton( "hideshowoff" ) self.blocks_button.set_tooltip(_('Hide blocks')) self.blocks_button.props.sensitive = True - self.blocks_button.connect('clicked', self._do_hideshow_cb) + self.blocks_button.connect('clicked', self.do_hideshow_cb) self.blocks_button.props.accelerator = _('b') palette_toolbar.insert(self.blocks_button, -1) self.blocks_button.show() @@ -813,7 +807,7 @@ class TurtleArtActivity(activity.Activity): self.eraser_button = ToolButton( "eraseron" ) self.eraser_button.set_tooltip(_('Clean')) self.eraser_button.props.sensitive = True - self.eraser_button.connect('clicked', self._do_eraser_cb) + self.eraser_button.connect('clicked', self.do_eraser_cb) self.eraser_button.props.accelerator = _('e') toolbar_box.toolbar.insert(self.eraser_button, -1) self.eraser_button.show() @@ -822,7 +816,7 @@ class TurtleArtActivity(activity.Activity): self.run_button = ToolButton( "run-fastoff" ) self.run_button.set_tooltip(_('Run')) self.run_button.props.sensitive = True - self.run_button.connect('clicked', self._do_run_cb) + self.run_button.connect('clicked', self.do_run_cb) self.run_button.props.accelerator = _('r') toolbar_box.toolbar.insert(self.run_button, -1) self.run_button.show() @@ -831,7 +825,7 @@ class TurtleArtActivity(activity.Activity): self.step_button = ToolButton( "run-slowoff" ) self.step_button.set_tooltip(_('Step')) self.step_button.props.sensitive = True - self.step_button.connect('clicked', self._do_step_cb) + self.step_button.connect('clicked', self.do_step_cb) self.step_button.props.accelerator = _('w') toolbar_box.toolbar.insert(self.step_button, -1) self.step_button.show() @@ -840,7 +834,7 @@ class TurtleArtActivity(activity.Activity): self.debug_button = ToolButton( "debugoff" ) self.debug_button.set_tooltip(_('Debug')) self.debug_button.props.sensitive = True - self.debug_button.connect('clicked', self._do_debug_cb) + self.debug_button.connect('clicked', self.do_debug_cb) self.debug_button.props.accelerator = _('d') toolbar_box.toolbar.insert(self.debug_button, -1) self.debug_button.show() @@ -849,7 +843,7 @@ class TurtleArtActivity(activity.Activity): self.stop_button = ToolButton( "stopitoff" ) self.stop_button.set_tooltip(_('Stop turtle')) self.stop_button.props.sensitive = True - self.stop_button.connect('clicked', self._do_stop_cb) + self.stop_button.connect('clicked', self.do_stop_cb) self.stop_button.props.accelerator = _('s') toolbar_box.toolbar.insert(self.stop_button, -1) self.stop_button.show() @@ -863,7 +857,7 @@ class TurtleArtActivity(activity.Activity): help_toolbar = gtk.Toolbar() samples_button = ToolButton( "stock-open" ) samples_button.set_tooltip(_('Samples')) - samples_button.connect('clicked', self._do_samples_cb) + samples_button.connect('clicked', self.do_samples_cb) samples_button.show() help_toolbar.insert(samples_button, -1) @@ -878,7 +872,7 @@ class TurtleArtActivity(activity.Activity): self.hover_help_label.show() self.hover_toolitem = gtk.ToolItem() self.hover_toolitem.add(self.hover_help_label) - help_toolbar.insert(self.hover_toolitem,-1) + help_toolbar.insert(self.hover_toolitem, -1) self.hover_toolitem.show() help_toolbar_button = ToolbarButton( @@ -919,16 +913,14 @@ class TurtleArtActivity(activity.Activity): self.saveasToolbar = SaveAsToolbar(self) self.toolbox.add_toolbar( _('Import/Export'), self.saveasToolbar ) self.helpToolbar = HelpToolbar(self) - self.toolbox.add_toolbar(_('Help'),self.helpToolbar) + self.toolbox.add_toolbar(_('Help'), self.helpToolbar) self.toolbox.show() # Set the project toolbar as the initial one selected self.toolbox.set_current_toolbar(1) - """ - Create a scrolled window to contain the turtle canvas - """ def _setup_scrolled_window(self): + """ Create a scrolled window to contain the turtle canvas. """ self.sw = gtk.ScrolledWindow() self.set_canvas(self.sw) self.sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) @@ -941,40 +933,24 @@ class TurtleArtActivity(activity.Activity): canvas.show() return canvas - """ - To be replaced with date checking in tasetup.py; - each language group should be stored in it's own sub-directory - """ - def _check_ver_lang_change(self, datapath): - # Check to see if the version or language has changed + def _check_ver_change(self, datapath): + """ To be replaced with date checking. """ + # Check to see if the version has changed try: version = os.environ['SUGAR_BUNDLE_VERSION'] except: version = " unknown" - lang = locale.getdefaultlocale()[0] - if not lang: - lang = 'en' - lang = lang[0:2] - if not os.path.isdir(os.path.join(activity.get_bundle_path(), \ - 'images', lang)): - lang = 'en' - - # If either has changed, remove the old png files filename = "version.dat" versiondata = [] newversion = True try: FILE = open(os.path.join(datapath, filename), "r") - if FILE.readline() == lang + version: + if FILE.readline() == version: newversion = False - else: - _logger.debug("out with the old, in with the new") - cmd = "rm " + os.path.join(datapath, '*.png') - subprocess.check_call(cmd, shell=True) except: - _logger.debug("writing new version data") - _logger.debug("and creating a tamyblock.py Journal entry") + _logger.debug("Writing new version data...") + _logger.debug("...and creating a tamyblock.py Journal entry") # Make sure there is a copy of tamyblock.py in the Journal if newversion: @@ -989,46 +965,38 @@ class TurtleArtActivity(activity.Activity): datastore.write(dsobject) dsobject.destroy() - versiondata.append(lang + version) - FILE = open(os.path.join(datapath, filename), "w") - FILE.writelines(versiondata) - FILE.close() - - return lang + versiondata.append(version) + file_handle = open(os.path.join(datapath, filename), "w") + file_handle.writelines(versiondata) + file_handle.close() + return - """ - Initialize the turtle art canvas - """ - def _setup_canvas(self, canvas, lang): + def _setup_canvas(self, canvas): + """ Initialize the turtle art canvas. """ bundle_path = activity.get_bundle_path() - self.tw = TurtleArtWindow(canvas, bundle_path, lang, self, + self.tw = TurtleArtWindow(canvas, bundle_path, self, profile.get_color().to_string()) # self.tw.activity = self self.tw.window.grab_focus() path = os.path.join(os.environ['SUGAR_ACTIVITY_ROOT'], 'data') - self.tw.save_folder= path + self.tw.save_folder = path if self._jobject and self._jobject.file_path: self.read_file(self._jobject.file_path) else: # if new, load a start brick onto the canvas self.tw.load_start() - """ - Check to see if there is Python code to be loaded - """ def _load_python_code(self): + """ Check to see if there is Python code to be loaded. """ try: dsobject = datastore.get(self.metadata['python code']) self._load_python(dsobject) except: pass - - """ - A simplistic sharing model: the sharer is the master; - TODO: hand off role of master is sharer leaves - """ def _setup_sharing(self): + """ A simplistic sharing model: the sharer is the master """ + # TODO: hand off role of master is sharer leaves # Get the Presence Service self.pservice = presenceservice.get_instance() self.initiating = None # sharing (True) or joining (False) @@ -1043,26 +1011,20 @@ class TurtleArtActivity(activity.Activity): self.connect('joined', self._joined_cb) - """ - Notify when the visibility state changes - """ def _setup_visibility_handler(self): + """ Notify when the visibility state changes """ self.add_events(gtk.gdk.VISIBILITY_NOTIFY_MASK) self.connect("visibility-notify-event", self.__visibility_notify_cb) - """ - Write the project to the Journal - """ def write_file(self, file_path): + """ Write the project to the Journal. """ _logger.debug("Write file: %s" % file_path) self.metadata['mime_type'] = 'application/x-turtle-art' data_to_file(self.tw.assemble_data_to_save(), file_path) - """ - Read a project in and then run it - """ def read_file(self, file_path, run_it = True): - import tarfile,os,tempfile,shutil + """ Read a project in and then run it. """ + import tarfile, os, tempfile, shutil if hasattr(self, 'tw'): _logger.debug("Read file: %s" % file_path) @@ -1098,10 +1060,8 @@ class TurtleArtActivity(activity.Activity): else: _logger.debug("Deferring reading file %s" % file_path) - """ - Save instance to Journal - """ def jobject_new_patch(self): + """ Save instance to Journal. """ oldj = self._jobject self._jobject = datastore.create() self._jobject.metadata['title'] = oldj.metadata['title'] @@ -1120,12 +1080,10 @@ class TurtleArtActivity(activity.Activity): error_handler=self._internal_jobject_error_cb) self._jobject.destroy() -""" -Class for setting up tube for sharing -""" class ChatTube(ExportedGObject): def __init__(self, tube, is_initiator, stack_received_cb): + """Class for setting up tube for sharing.""" super(ChatTube, self).__init__(tube, PATH) self.tube = tube self.is_initiator = is_initiator # Are we sharing or joining activity? @@ -1145,11 +1103,9 @@ class ChatTube(ExportedGObject): def SendText(self, text): self.stack = text -""" -View toolbar: fullscreen, Cartesian, polar, coordinates -""" class ViewToolbar(gtk.Toolbar): def __init__(self, pc): + """ View toolbar: fullscreen, Cartesian, polar, coordinates """ gtk.Toolbar.__init__(self) self.activity = pc @@ -1162,7 +1118,7 @@ class ViewToolbar(gtk.Toolbar): except: pass self.activity.fullscreen_button.connect('clicked', \ - self.activity._do_fullscreen_cb) + self.activity.do_fullscreen_cb) self.insert(self.activity.fullscreen_button, -1) self.activity.fullscreen_button.show() @@ -1171,7 +1127,7 @@ class ViewToolbar(gtk.Toolbar): self.activity.cartesian_button.set_tooltip(_('Cartesian coordinates')) self.activity.cartesian_button.props.sensitive = True self.activity.cartesian_button.connect('clicked', \ - self.activity._do_cartesian_cb) + self.activity.do_cartesian_cb) self.insert(self.activity.cartesian_button, -1) self.activity.cartesian_button.show() @@ -1180,7 +1136,7 @@ class ViewToolbar(gtk.Toolbar): self.activity.polar_button.set_tooltip(_('Polar coordinates')) self.activity.polar_button.props.sensitive = True self.activity.polar_button.connect('clicked', \ - self.activity._do_polar_cb) + self.activity.do_polar_cb) self.insert(self.activity.polar_button, -1) self.activity.polar_button.show() @@ -1196,7 +1152,7 @@ class ViewToolbar(gtk.Toolbar): self.activity.coordinates_label.show() self.activity.coordinates_toolitem = gtk.ToolItem() self.activity.coordinates_toolitem.add(self.activity.coordinates_label) - self.insert(self.activity.coordinates_toolitem,-1) + self.insert(self.activity.coordinates_toolitem, -1) self.activity.coordinates_toolitem.show() separator = gtk.SeparatorToolItem() @@ -1208,29 +1164,27 @@ class ViewToolbar(gtk.Toolbar): self.activity.resize_up_button = ToolButton('resize+') self.activity.resize_up_button.set_tooltip(_("Grow blocks")) self.activity.resize_up_button.connect('clicked', - self.activity._do_resize_blocks_cb, 1.5) - self.insert(self.activity.resize_up_button,-1) + self.activity.do_resize_blocks_cb, 1.5) + self.insert(self.activity.resize_up_button, -1) self.activity.resize_up_button.show() self.activity.resize_down_button = ToolButton('resize-') self.activity.resize_down_button.set_tooltip(_("Shrink blocks")) self.activity.resize_down_button.connect('clicked', - self.activity._do_resize_blocks_cb, 0.667) - self.insert(self.activity.resize_down_button,-1) + self.activity.do_resize_blocks_cb, 0.667) + self.insert(self.activity.resize_down_button, -1) self.activity.resize_down_button.show() self.activity.rescale_button = ToolButton('expand-coordinates') self.activity.rescale_button.set_tooltip(_("Rescale coordinates up")) self.activity.rescale_button.connect('clicked', \ - self.activity._do_rescale_cb) - self.insert(self.activity.rescale_button,-1) + self.activity.do_rescale_cb) + self.insert(self.activity.rescale_button, -1) self.activity.rescale_button.show() -""" -Edit toolbar: copy and paste text and stacks -""" class EditToolbar(gtk.Toolbar): def __init__(self, pc): + """ Edit toolbar: copy and paste text and stacks """ gtk.Toolbar.__init__(self) self.activity = pc @@ -1279,11 +1233,9 @@ class EditToolbar(gtk.Toolbar): else: self.activity.tw.process_data(data_from_string(text)) -""" -Help toolbar: Just an icon and a label for displaying hover help -""" class HelpToolbar(gtk.Toolbar): def __init__(self, pc): + """ Help toolbar: Just an icon and a label for displaying hover help """ gtk.Toolbar.__init__(self) self.activity = pc @@ -1300,15 +1252,12 @@ class HelpToolbar(gtk.Toolbar): self.activity.hover_help_label.show() self.activity.hover_toolitem = gtk.ToolItem() self.activity.hover_toolitem.add(self.activity.hover_help_label) - self.insert(self.activity.hover_toolitem,-1) + self.insert(self.activity.hover_toolitem, -1) self.activity.hover_toolitem.show() -""" -SaveAs toolbar: (1) load samples; (2) save as HTML; (3) save as LOGO; -(4) save as PNG; and (5) import Python code. -""" class SaveAsToolbar(gtk.Toolbar): def __init__(self, pc): + """ SaveAs toolbar """ gtk.Toolbar.__init__(self) self.activity = pc @@ -1317,7 +1266,7 @@ class SaveAsToolbar(gtk.Toolbar): self.activity.save_as_html.set_tooltip(_('Save as HTML')) self.activity.save_as_html.props.sensitive = True self.activity.save_as_html.connect('clicked', \ - self.activity._do_save_as_html_cb) + self.activity.do_save_as_html_cb) self.insert(self.activity.save_as_html, -1) self.activity.save_as_html.show() @@ -1326,7 +1275,7 @@ class SaveAsToolbar(gtk.Toolbar): self.activity.save_as_logo.set_tooltip(_('Save Logo')) self.activity.save_as_logo.props.sensitive = True self.activity.save_as_logo.connect('clicked', \ - self.activity._do_save_as_logo_cb) + self.activity.do_save_as_logo_cb) self.insert(self.activity.save_as_logo, -1) self.activity.save_as_logo.show() @@ -1335,7 +1284,7 @@ class SaveAsToolbar(gtk.Toolbar): self.activity.save_as_image.set_tooltip(_('Save as image')) self.activity.save_as_image.props.sensitive = True self.activity.save_as_image.connect('clicked', \ - self.activity._do_save_as_image_cb) + self.activity.do_save_as_image_cb) self.insert(self.activity.save_as_image, -1) self.activity.save_as_image.show() @@ -1349,7 +1298,7 @@ class SaveAsToolbar(gtk.Toolbar): self.activity.load_python.set_tooltip(_('Load my block')) self.activity.load_python.props.sensitive = True self.activity.load_python.connect('clicked', \ - self.activity._do_load_python_cb) + self.activity.do_load_python_cb) self.insert(self.activity.load_python, -1) self.activity.load_python.show() @@ -1359,18 +1308,15 @@ class SaveAsToolbar(gtk.Toolbar): _("Import project from the Journal")) self.activity.load_ta_project.props.sensitive = True self.activity.load_ta_project.connect('clicked', \ - self.activity._do_load_ta_project_cb) + self.activity.do_load_ta_project_cb) self.insert(self.activity.load_ta_project, -1) self.activity.load_ta_project.show() -""" -Project toolbar: show/hide palettes; show/hide blocks; run; walk; stop; erase; - save as snapshot -""" class ProjectToolbar(gtk.Toolbar): def __init__(self, pc): + """ Project toolbar """ gtk.Toolbar.__init__(self) self.activity = pc @@ -1379,7 +1325,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.palette_button.set_tooltip(_('Hide palette')) self.activity.palette_button.props.sensitive = True self.activity.palette_button.connect('clicked', \ - self.activity._do_palette_cb) + self.activity.do_palette_cb) try: self.activity.palette_button.props.accelerator = _('p') except: @@ -1392,7 +1338,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.blocks_button.set_tooltip(_('Hide blocks')) self.activity.blocks_button.props.sensitive = True self.activity.blocks_button.connect('clicked', \ - self.activity._do_hideshow_cb) + self.activity.do_hideshow_cb) try: self.activity.blocks_button.props.accelerator = _('b') except: @@ -1409,7 +1355,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.run_button = ToolButton( "run-fastoff" ) self.activity.run_button.set_tooltip(_('Run')) self.activity.run_button.props.sensitive = True - self.activity.run_button.connect('clicked', self.activity._do_run_cb) + self.activity.run_button.connect('clicked', self.activity.do_run_cb) try: self.activity.run_button.props.accelerator = _('r') except: @@ -1421,7 +1367,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.step_button = ToolButton( "run-slowoff" ) self.activity.step_button.set_tooltip(_('Step')) self.activity.step_button.props.sensitive = True - self.activity.step_button.connect('clicked', self.activity._do_step_cb) + self.activity.step_button.connect('clicked', self.activity.do_step_cb) try: self.activity.step_button.props.accelerator = _('w') except: @@ -1434,7 +1380,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.debug_button.set_tooltip(_('Debug')) self.activity.debug_button.props.sensitive = True self.activity.debug_button.connect('clicked', \ - self.activity._do_debug_cb) + self.activity.do_debug_cb) try: self.activity.debug_button.props.accelerator = _('d') except: @@ -1446,7 +1392,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.stop_button = ToolButton( "stopitoff" ) self.activity.stop_button.set_tooltip(_('Stop turtle')) self.activity.stop_button.props.sensitive = True - self.activity.stop_button.connect('clicked', self.activity._do_stop_cb) + self.activity.stop_button.connect('clicked', self.activity.do_stop_cb) try: self.activity.stop_button.props.accelerator = _('s') except: @@ -1464,7 +1410,7 @@ class ProjectToolbar(gtk.Toolbar): self.activity.eraser_button.set_tooltip(_('Clean')) self.activity.eraser_button.props.sensitive = True self.activity.eraser_button.connect('clicked', \ - self.activity._do_eraser_cb) + self.activity.do_eraser_cb) try: self.activity.eraser_button.props.accelerator = _('e') except: @@ -1486,7 +1432,7 @@ class ProjectToolbar(gtk.Toolbar): except: pass self.activity.keep_button.connect('clicked', \ - self.activity._do_keep_cb) + self.activity.do_keep_cb) self.insert(self.activity.keep_button, -1) self.activity.keep_button.show() @@ -1500,9 +1446,9 @@ class ProjectToolbar(gtk.Toolbar): self.activity.samples_button.set_tooltip(_('Samples')) self.activity.samples_button.props.sensitive = True self.activity.samples_button.connect('clicked', \ - self.activity._do_samples_cb) + self.activity.do_samples_cb) try: - self.activity.samples_button.props.accelerator = _('o') + self.activity.samples_button.props.accelerator = _('o') except: pass self.insert(self.activity.samples_button, -1) -- cgit v0.9.1