Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPootle daemon <pootle@pootle.sugarlabs.org>2013-03-22 04:31:36 (GMT)
committer Pootle daemon <pootle@pootle.sugarlabs.org>2013-03-22 04:31:36 (GMT)
commit815b1b178d11bcee99918f63227392434984debe (patch)
tree807c40806b18ac46a2d3f7eee2ed17d6604e9804
parentcde3a263c180f2dec5d6b8bc2e18375d1247c2bf (diff)
parentedf6d4698bfbfac0c202480c2f3d89102a7d95ce (diff)
Merge branch 'master' of git.sugarlabs.org:turtleart/mainline
-rw-r--r--TurtleArt/tautils.py66
-rw-r--r--TurtleArt/tawindow.py12
2 files changed, 68 insertions, 10 deletions
diff --git a/TurtleArt/tautils.py b/TurtleArt/tautils.py
index 3f9d1c4..0bad48a 100644
--- a/TurtleArt/tautils.py
+++ b/TurtleArt/tautils.py
@@ -1,5 +1,6 @@
-#copyright (c) 2007-8, Playful Invention Company.
+#copyright (c) 2007-8, Playful Invention Company
#Copyright (c) 2008-13, Walter Bender
+#Copyright (c) 2013 Alan Aguiar
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
@@ -20,6 +21,8 @@
#THE SOFTWARE.
import gtk
+import gconf
+import dbus
import cairo
import pickle
import subprocess
@@ -49,6 +52,9 @@ import logging
_logger = logging.getLogger('turtleart-activity')
+FIRST_TIME = True
+
+
def debug_output(message_string, running_sugar=False):
''' unified debugging output '''
if running_sugar:
@@ -207,9 +213,13 @@ def get_save_name(filefilter, load_save_folder, save_file_name):
gtk.FILE_CHOOSER_ACTION_SAVE, (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
gtk.STOCK_SAVE, gtk.RESPONSE_OK))
dialog.set_default_response(gtk.RESPONSE_OK)
+ if filefilter in ['.png', '.svg']:
+ suffix = filefilter
+ else:
+ suffix = SUFFIX[1]
if save_file_name is not None:
- if not save_file_name.endswith(SUFFIX):
- save_file_name = save_file_name + SUFFIX[1]
+ if not save_file_name.endswith(suffix):
+ save_file_name = save_file_name + suffix
dialog.set_current_name(save_file_name)
return do_dialog(dialog, filefilter, load_save_folder)
@@ -763,3 +773,53 @@ def check_output(command, warning):
print(warning)
return None
return output
+
+
+def power_manager_off(status):
+ '''
+ Power management in Sugar
+ power_manager_off(True) --> Disable power manager
+ power_manager_off(False) --> Use custom power manager
+ '''
+ global FIRST_TIME
+
+ OHM_SERVICE_NAME = 'org.freedesktop.ohm'
+ OHM_SERVICE_PATH = '/org/freedesktop/ohm/Keystore'
+ OHM_SERVICE_IFACE = 'org.freedesktop.ohm.Keystore'
+ PATH = '/etc/powerd/flags/inhibit-suspend'
+
+ client = gconf.client_get_default()
+
+ ACTUAL_POWER = True
+
+ if FIRST_TIME:
+ ACTUAL_POWER = client.get_bool('/desktop/sugar/power/automatic')
+ FIRST_TIME = False
+
+ if status:
+ VALUE = False
+ else:
+ VALUE = ACTUAL_POWER
+
+ try:
+ client.set_bool('/desktop/sugar/power/automatic', VALUE)
+ except gconf.GError:
+ pass
+
+ _bus = dbus.SystemBus()
+ try:
+ _proxy = _bus.get_object(OHM_SERVICE_NAME, OHM_SERVICE_PATH)
+ _keystore = dbus.Interface(_proxy, OHM_SERVICE_IFACE)
+ _keystore.SetKey('suspend.automatic_pm', bool(VALUE))
+ except dbus.exceptions.DBusException:
+ if status:
+ try:
+ fd = open(PATH, 'w')
+ fd.close()
+ except IOError:
+ pass
+ elif ACTUAL_POWER:
+ try:
+ os.remove(PATH)
+ except OSError:
+ pass
diff --git a/TurtleArt/tawindow.py b/TurtleArt/tawindow.py
index ebc1e3d..8d2c664 100644
--- a/TurtleArt/tawindow.py
+++ b/TurtleArt/tawindow.py
@@ -317,11 +317,8 @@ class TurtleArtWindow():
# Add the icon dir to the icon_theme search path
self._add_plugin_icon_dir(os.path.join(self._get_plugin_home(),
plugin_dir))
- except ImportError as e:
- debug_output('Failed to import %s: %s' % (plugin_class, str(e)),
- self.running_sugar)
- except:
- debug_output('Failed to load %s' % (plugin_class),
+ except Exception as e:
+ debug_output('Failed to load %s: %s' % (plugin_class, str(e)),
self.running_sugar)
def _add_plugin_icon_dir(self, dirname):
@@ -2769,7 +2766,8 @@ may not terminate.', False)
self.running_blocks = True
self._start_plugins() # Let the plugins know we are running.
top = find_top_block(blk)
- self.lc.run_blocks(top, self.just_blocks(), True)
+ code = self.lc.generate_code(top, self.just_blocks())
+ self.lc.run_blocks(code)
if self.interactive_mode:
gobject.idle_add(self.lc.doevalstep)
else:
@@ -3984,7 +3982,7 @@ may not terminate.', False)
filename = name + suffix
datapath = get_path(self.activity, 'instance')
elif len(name) == 0:
- name = 'ta'
+ name = 'turtleblocks' + suffix
if self.save_folder is not None:
self.load_save_folder = self.save_folder
filename, self.load_save_folder = get_save_name(