[orca] Move the code which has nothing to do with dbus out of dbusserver.py
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Move the code which has nothing to do with dbus out of dbusserver.py
- Date: Wed, 9 May 2012 01:18:20 +0000 (UTC)
commit 0d4734f4a866fb6fc14a0d4564dc47b5cdc7a868
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Tue May 8 21:16:54 2012 -0400
Move the code which has nothing to do with dbus out of dbusserver.py
src/orca/Makefile.am | 1 +
src/orca/dbusserver.py | 89 +++-----------------------------------
src/orca/logger.py | 113 ++++++++++++++++++++++++++++++++++++++++++++++++
src/orca/settings.py | 4 --
4 files changed, 120 insertions(+), 87 deletions(-)
---
diff --git a/src/orca/Makefile.am b/src/orca/Makefile.am
index d7f5f25..5eacbde 100644
--- a/src/orca/Makefile.am
+++ b/src/orca/Makefile.am
@@ -35,6 +35,7 @@ orca_python_PYTHON = \
label_inference.py \
laptop_keyboardmap.py \
liveregions.py \
+ logger.py \
mouse_review.py \
notification_messages.py \
orca.py \
diff --git a/src/orca/dbusserver.py b/src/orca/dbusserver.py
index c6fce3c..da119bd 100644
--- a/src/orca/dbusserver.py
+++ b/src/orca/dbusserver.py
@@ -31,12 +31,7 @@ import dbus.mainloop.glib
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
import debug
-import settings
-
-# Handlers for logging speech and braille output.
-#
-loggingFileHandlers = {}
-loggingStreamHandlers = {}
+import logger
# pylint: disable-msg=R0923
# Server: Interface not implemented
@@ -49,99 +44,27 @@ class Server(dbus.service.Object):
def __init__(self, object_path, bus_name):
dbus.service.Object.__init__(self, None, object_path, bus_name)
+ self._logger = logger.Logger()
@dbus.service.method(dbus_interface='org.gnome.Orca.Logging',
in_signature='si', out_signature='')
def setDebug(self, debugFile, debugLevel):
- """Sets the file to send detailed debug information."""
- if not settings.enableRemoteLogging:
- return
- debug.println(debug.LEVEL_FINEST,
- "DBus Logging.setDebug(%s, %d)" \
- % (debugFile, debugLevel))
- if debug.debugFile:
- debug.debugFile.close()
- debug.debugFile = None
- if debugFile and len(debugFile):
- debug.debugFile = open('%s.debug' % debugFile, 'w', 0)
- debug.debugLevel = debugLevel
+ self._logger.setDebug(debugFile, debugLevel)
@dbus.service.method(dbus_interface='org.gnome.Orca.Logging',
in_signature='s', out_signature='')
def setLogFile(self, logFile):
- """Sets the file to send speech and braille logging information."""
- if not settings.enableRemoteLogging:
- return
- import logging
- debug.println(debug.LEVEL_FINEST,
- "DBus Logging.setLogFile(%s)" % logFile)
- for logger in ['braille', 'speech']:
- log = logging.getLogger(logger)
- formatter = logging.Formatter('%(message)s')
- try:
- loggingFileHandlers[logger].flush()
- loggingFileHandlers[logger].close()
- log.removeHandler(loggingFileHandlers[logger])
- except:
- pass
- if logFile and len(logFile):
- loggingFileHandlers[logger] = logging.FileHandler(
- '%s.%s' % (logFile, logger), 'w')
- loggingFileHandlers[logger].setFormatter(formatter)
- log.addHandler(loggingFileHandlers[logger])
- log.setLevel(logging.INFO)
+ self._logger.setLogFile(logFile)
@dbus.service.method(dbus_interface='org.gnome.Orca.Logging',
in_signature='', out_signature='')
def startRecording(self):
- """Tells Orca to start logging speech and braille output."""
- if not settings.enableRemoteLogging:
- return
- debug.println(debug.LEVEL_FINEST, "DBus Logging.startRecording")
- import logging
- import StringIO
- for logger in ['braille', 'speech']:
- log = logging.getLogger(logger)
- try:
- [stringIO, handler] = loggingStreamHandlers[logger]
- handler.close()
- log.removeHandler(handler)
- stringIO.close()
- except:
- pass
- formatter = logging.Formatter('%(message)s')
- stringIO = StringIO.StringIO()
- handler = logging.StreamHandler(stringIO)
- handler.setFormatter(formatter)
- log.addHandler(handler)
- loggingStreamHandlers[logger] = [stringIO, handler]
- log.setLevel(logging.INFO)
+ self._logger.startRecording()
@dbus.service.method(dbus_interface='org.gnome.Orca.Logging',
in_signature='', out_signature='s')
def stopRecording(self):
- """Tells Orca to stop logging speech and braille output and
- to return whatever was recorded since the last call to
- startRecording."""
- if not settings.enableRemoteLogging:
- return ""
- debug.println(debug.LEVEL_FINEST, "DBus Logging.stopRecording")
- import logging
- import StringIO
- result = ''
- for logger in ['braille', 'speech']:
- log = logging.getLogger(logger)
- try:
- [stringIO, handler] = loggingStreamHandlers[logger]
- handler.flush()
- handler.close()
- log.removeHandler(handler)
- result += stringIO.getvalue()
- stringIO.close()
- except:
- debug.printException(debug.LEVEL_OFF)
- stringIO = StringIO.StringIO()
- return result
+ return self._logger.stopRecording()
def init():
"""Sets up the Orca DBus service. This will only take effect once
diff --git a/src/orca/logger.py b/src/orca/logger.py
new file mode 100644
index 0000000..700b642
--- /dev/null
+++ b/src/orca/logger.py
@@ -0,0 +1,113 @@
+# Orca
+#
+# Copyright 2008 Sun Microsystems Inc.
+# Copyright 2012 Igalia, S.L.
+#
+# Author: Joanmarie Diggs <jdiggs igalia com>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the
+# Free Software Foundation, Inc., Franklin Street, Fifth Floor,
+# Boston MA 02110-1301 USA.
+
+"""Output logger for regression testing."""
+
+__id__ = "$Id$"
+__version__ = "$Revision$"
+__date__ = "$Date$"
+__copyright__ = "Copyright (c) 2012 Igalia, S.L."
+__license__ = "LGPL"
+
+import logging
+import StringIO
+
+import debug
+
+class Logger:
+
+ def __init__(self, *types):
+ self._types = types or ['braille', 'speech']
+ self._fileHandlers = {}
+ self._streamHandlers = {}
+ self._formatter = logging.Formatter('%(message)s')
+
+ def setDebug(self, debugFile, debugLevel):
+ if debug.debugFile:
+ debug.debugFile.close()
+ debug.debugFile = None
+ if debugFile:
+ debug.debugFile = open('%s.debug' % debugFile, 'w', 0)
+ debug.debugLevel = debugLevel
+
+ def setLogFile(self, logFile):
+ self._closeFileHandlers()
+ self._createFileHandlers(logFile)
+
+ def startRecording(self):
+ self._closeStreamHandlers()
+ self._createStreamHandlers()
+
+ def stopRecording(self):
+ return self._closeStreamHandlers()
+
+ def _createFileHandlers(self, fileName):
+ if not fileName:
+ return
+
+ for logger in self._types:
+ handler = logging.FileHandler('%s.%s' % (fileName, logger), 'w')
+ self._fileHandlers[logger] = handler
+ log = logging.getLogger(logger)
+ self._createHandler(log, handler)
+
+ def _createStreamHandlers(self):
+ for logger in self._types:
+ stringIO = StringIO.StringIO()
+ handler = logging.StreamHandler(stringIO)
+ self._streamHandlers[logger] = [stringIO, handler]
+ log = logging.getLogger(logger)
+ self._createHandler(log, handler)
+
+ def _createHandler(self, log, handler):
+ handler.setFormatter(self._formatter)
+ log.setLevel(logging.INFO)
+ log.addHandler(handler)
+
+ def _closeFileHandlers(self):
+ for logger in self._types:
+ log = logging.getLogger(logger)
+ handler = self._fileHandlers.get(logger)
+ self._closeHandler(log, handler)
+
+ def _closeStreamHandlers(self):
+ result = ''
+ for logger in self._types:
+ log = logging.getLogger(logger)
+ stringIO, handler = self._streamHandlers.get(logger, (None, None))
+ self._closeHandler(log, handler)
+ if stringIO:
+ try:
+ result += stringIO.getvalue()
+ stringIO.close()
+ except ValueError:
+ pass
+
+ return result
+
+ def _closeHandler(self, log, handler):
+ try:
+ handler.flush()
+ handler.close()
+ log.removeHandler(handler)
+ except:
+ pass
diff --git a/src/orca/settings.py b/src/orca/settings.py
index 71a1ed7..66f9e57 100644
--- a/src/orca/settings.py
+++ b/src/orca/settings.py
@@ -289,10 +289,6 @@ if os.getenv("DBUS_SESSION_BUS_ADDRESS"):
else:
useDBus = False
-# Whether or not recording is enabled via the HTTP server.
-#
-enableRemoteLogging = False
-
# If True, enable speech.
#
enableSpeech = True
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]