[Butia-devel-list] [PATCH] Deshabilitar Energia - Final
nachoel01 en gmail.com
nachoel01 en gmail.com
Vie Feb 22 14:58:42 UYST 2013
From: Ignacio Rodríguez <nachoel01 en gmail.com>
---
TurtleArt/tautils.py | 46 ++++++++++++++++++++++++++++++++++++++++++++--
plugins/butia/butia.py | 7 +++++++
2 files changed, 51 insertions(+), 2 deletions(-)
diff --git a/TurtleArt/tautils.py b/TurtleArt/tautils.py
index 3f9d1c4..66af526 100644
--- a/TurtleArt/tautils.py
+++ b/TurtleArt/tautils.py
@@ -1,5 +1,6 @@
#copyright (c) 2007-8, Playful Invention Company.
#Copyright (c) 2008-13, Walter Bender
+#Copyright (c) 2013, Ignacio Rodriguez
#Permission is hereby granted, free of charge, to any person obtaining a copy
#of this software and associated documentation files (the "Software"), to deal
@@ -24,6 +25,8 @@ import cairo
import pickle
import subprocess
import os
+import gconf
+import dbus
import string
from gettext import gettext as _
@@ -48,6 +51,9 @@ from taconstants import (HIT_HIDE, HIT_SHOW, XO1, XO15, XO175, XO4, UNKNOWN,
import logging
_logger = logging.getLogger('turtleart-activity')
+client = gconf.client_get_default()
+ACTUAL_POWER = client.get_bool('/desktop/sugar/power/automatic')
+
def debug_output(message_string, running_sugar=False):
''' unified debugging output '''
@@ -711,7 +717,7 @@ def get_hardware():
if version == '1':
return XO1
elif version == '1.5':
- return XO15
+ return XO15
elif version == '1.75':
return XO175
elif version == '4':
@@ -719,7 +725,7 @@ def get_hardware():
else:
# Some systems (e.g. ARM) don't have dmi info
if os.path.exists('/sys/devices/platform/lis3lv02d/position'):
- return XO175
+ return XO175
elif os.path.exists('/etc/olpc-release'):
return XO1
else:
@@ -763,3 +769,39 @@ def check_output(command, warning):
print(warning)
return None
return output
+
+
+def power_manager(status):
+ '''
+ Power Management
+ Use: power_manager(True) --> Disable power manager
+ power_manager(False) --> User custom power manager
+ '''
+
+ # Constants
+ 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'
+
+ if status:
+ VALUE = False
+ else:
+ VALUE = ACTUAL_POWER
+
+ client.set_bool('/desktop/sugar/power/automatic', VALUE)
+
+ try:
+ bus = dbus.SystemBus()
+ proxy = bus.get_object(OHM_SERVICE_NAME, OHM_SERVICE_PATH)
+ self._keystore = dbus.Interface(proxy, OHM_SERVICE_IFACE)
+ self._keystore.SetKey("suspend.automatic_pm", bool(VALUE))
+ except:
+ if status:
+ fd = open(PATH, "w")
+ fd.close()
+ if not status and ACTUAL_POWER:
+ try:
+ os.remove(PATH)
+ except OSError:
+ pass
diff --git a/plugins/butia/butia.py b/plugins/butia/butia.py
index f34201a..1bdaac8 100755
--- a/plugins/butia/butia.py
+++ b/plugins/butia/butia.py
@@ -32,6 +32,7 @@ from TurtleArt.tapalette import make_palette
from TurtleArt.talogo import primitive_dictionary, logoerror
from TurtleArt.tautils import debug_output
from TurtleArt.tawindow import block_names
+from TurtleArt.tautils import power_manager
from plugins.plugin import Plugin
@@ -554,21 +555,27 @@ class Butia(Plugin):
self.butia.set2MotorSpeed(sentLeft, abs(left), sentRight, abs(right))
def moveButia(self, left, right):
+ power_manager(True)
self.set_vels(left, right)
def forwardButia(self):
+ power_manager(True)
self.set_vels(self.actualSpeed[0], self.actualSpeed[1])
def backwardButia(self):
+ power_manager(True)
self.set_vels(-self.actualSpeed[0], -self.actualSpeed[1])
def leftButia(self):
+ power_manager(True)
self.set_vels(self.actualSpeed[0], -self.actualSpeed[1])
def rightButia(self):
+ power_manager(True)
self.set_vels(-self.actualSpeed[0], self.actualSpeed[1])
def stopButia(self):
+ power_manager(False)
self.set_vels(0, 0)
def speedButia(self, speed):
--
1.6.2.5
Más información sobre la lista de distribución Butia-devel-l