presage/presage-0.9.1-python3.patch

1226 lines
39 KiB
Diff

Index: presage-0.9.1/bindings/python/Makefile.am
===================================================================
--- presage-0.9.1.orig/bindings/python/Makefile.am
+++ presage-0.9.1/bindings/python/Makefile.am
@@ -81,7 +81,7 @@ clean-local:
rm -rf build
presage_wrap.cpp presage_wrap.h presage.py: $(SWIG_INTERFACE) $(PRESAGE_INTERFACE)
- $(SWIG) -c++ -python -I$(top_srcdir)/src/lib -o presage_wrap.cpp -outdir . $(srcdir)/$(SWIG_INTERFACE)
+ $(SWIG) -c++ -python -py3 -I$(top_srcdir)/src/lib -o presage_wrap.cpp -outdir . $(srcdir)/$(SWIG_INTERFACE)
if HAVE_HELP2MAN
presage_python_demo.1: presage_python_demo.in $(top_srcdir)/configure.ac
Index: presage-0.9.1/bindings/python/presage_python_demo.in
===================================================================
--- presage-0.9.1.orig/bindings/python/presage_python_demo.in
+++ presage-0.9.1/bindings/python/presage_python_demo.in
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -25,11 +25,12 @@ import getopt
PROGRAM_NAME = 'presage_python_demo'
-config = None
-suggestions = None
+CONFIG = None
+SUGGESTIONS = None
+
def disclaimer():
- print """
+ print("""
Presage python demo
-----------------------
@@ -42,19 +43,21 @@ Its intent is NOT to provide a predictiv
Think of Presage as the predictive backend that sits behind a shiny
user interface and does all the predictive heavy lifting.
-"""
+""")
+
def print_version():
- print """
+ print("""
%s (%s) version %s
Copyright (C) 2004 Matteo Vescovi.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
-""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@')
+""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@'))
+
def print_usage():
- print """
+ print("""
Usage: %s [OPTION]...
At the prompt, type in some text. Hit enter to generate a prediction.
@@ -66,40 +69,41 @@ Any text input is valid, including no te
-v, --version output version information and exit
Direct your bug reports to: %s
-""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@')
+""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@'))
+
def parse_cmd_line_args():
- global config
- global suggestions
+ global CONFIG
+ global SUGGESTIONS
+
+ short_options = "c:s:hv"
+ long_options = ["config=", "suggestions=", "help", "version"]
- short_options = "c:s:hv"
- long_options = ["config=", "suggestions=", "help", "version"]
-
- try:
- opts, args = getopt.getopt(sys.argv[1:], short_options, long_options)
- except getopt.GetoptError, err:
- print str(err)
- sys.exit(1)
-
- for opt, arg in opts:
- if opt in ('-v', '--version'):
- print_version()
- sys.exit()
- elif opt in ('-h', '--help'):
- print_usage()
- sys.exit()
- elif opt in ('-c', '--config'):
- config = arg
- elif opt in ('-s', '--suggestions'):
- suggestions = arg
+ try:
+ opts, _ = getopt.getopt(sys.argv[1:], short_options, long_options)
+ except getopt.GetoptError as err:
+ print(str(err))
+ sys.exit(1)
+
+ for opt, arg in opts:
+ if opt in ('-v', '--version'):
+ print_version()
+ sys.exit()
+ elif opt in ('-h', '--help'):
+ print_usage()
+ sys.exit()
+ elif opt in ('-c', '--config'):
+ CONFIG = arg
+ elif opt in ('-s', '--suggestions'):
+ SUGGESTIONS = arg
def main():
- try:
- import presage
+ try:
+ import presage
- except ImportError, e:
- print '''
+ except ImportError as err:
+ print('''
Error: failed to import module presage.
Check that presage python binding is properly installed (if
@@ -109,53 +113,53 @@ accordingly).
Check that presage library is properly installed (if installed in a
non-standard location, please set LD_LIBRARY_PATH (PATH, LIBPATH)
accordingly).
-'''
- print e
- sys.exit(1)
-
- try:
- # Define and create PresageCallback object
- class DemoCallback(presage.PresageCallback):
- def __init__(self):
- presage.PresageCallback.__init__(self)
- self.buffer = ''
-
- def get_past_stream(self):
- return self.buffer
-
- def get_future_stream(self):
- return ''
-
- # Presage owns callback, so we create it and disown it
- callback = DemoCallback().__disown__()
-
- # Create Presage object
- if config:
- prsg = presage.Presage(callback, config)
- else:
- prsg = presage.Presage(callback)
-
- if suggestions:
- prsg.config('Presage.Selector.SUGGESTIONS', suggestions)
-
- print "Enter text at the prompt (press enter on empty line to exit):"
- str = None
- while str != "":
- str = raw_input("> ")
- callback.buffer += str
- print prsg.predict()
-
- # Destroy Presage object
- del prsg
-
- except presage.PresageException,ex:
- print ex.what()
- sys.exit(1)
+''')
+ print(err)
+ sys.exit(1)
+
+ try:
+ # Define and create PresageCallback object
+ class DemoCallback(presage.PresageCallback):
+ def __init__(self):
+ presage.PresageCallback.__init__(self)
+ self.buffer = ''
+
+ def get_past_stream(self):
+ return self.buffer
+
+ def get_future_stream(self):
+ return ''
+
+ # Presage owns callback, so we create it and disown it
+ callback = DemoCallback().__disown__()
+
+ # Create Presage object
+ if CONFIG:
+ prsg = presage.Presage(callback, CONFIG)
+ else:
+ prsg = presage.Presage(callback)
+
+ if SUGGESTIONS:
+ prsg.config('Presage.Selector.SUGGESTIONS', SUGGESTIONS)
+
+ print("Enter text at the prompt (press enter on empty line to exit):")
+ strs = None
+ while strs != "":
+ strs = input("> ")
+ callback.buffer += strs
+ print(prsg.predict())
+
+ # Destroy Presage object
+ del prsg
+
+ except presage.PresageException as ex:
+ print(ex.what())
+ sys.exit(1)
- print "Goodbye"
+ print("Goodbye")
if __name__ == '__main__':
- parse_cmd_line_args()
- disclaimer()
- main()
+ parse_cmd_line_args()
+ disclaimer()
+ main()
Index: presage-0.9.1/configure.ac
===================================================================
--- presage-0.9.1.orig/configure.ac
+++ presage-0.9.1/configure.ac
@@ -233,7 +233,7 @@ AM_PATH_PYTHON([2.0],
[AC_MSG_WARN([Python not found. Python is required to build presage python binding. Python can be obtained from http://www.python.org])])
if test "$PYTHON" != :
then
- python_include_path=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc();"`
+ python_include_path=`$PYTHON -c "import sysconfig; print(sysconfig.get_path('include'));"`
AC_CHECK_HEADERS([${python_include_path}/Python.h],
[have_python_header=true],
[AC_MSG_WARN([Python.h header file not found. Python development files are required to build presage python binding. Python can be obtained from http://www.python.org])],
@@ -295,7 +295,7 @@ then
AC_MSG_RESULT($have_pyatspi)
AC_MSG_CHECKING(for python gtk module)
- $PYTHON -c "import gtk" 2&>/dev/null
+ $PYTHON -c "import gi; gi.require_version('Gtk', '3.0'); from gi.repository import Gtk" 2&>/dev/null
if test $? -eq 0;
then
have_python_gtk=yes
@@ -305,7 +305,7 @@ then
AC_MSG_RESULT($have_python_gtk)
AC_MSG_CHECKING(for python pango module)
- $PYTHON -c "import pango" 2&>/dev/null
+ $PYTHON -c "import gi; from gi.repository import Pango" 2&>/dev/null
if test $? -eq 0;
then
have_python_pango=yes
Index: presage-0.9.1/apps/python/pyprompter.in
===================================================================
--- presage-0.9.1.orig/apps/python/pyprompter.in
+++ presage-0.9.1/apps/python/pyprompter.in
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -25,20 +25,22 @@ import getopt
import os
PROGRAM_NAME = 'pyprompter'
-config = None
-suggestions = None
+CONFIG = None
+SUGGESTIONS = None
+
def print_version():
- print """
+ print("""
%s (%s) version %s
Copyright (C) 2004 Matteo Vescovi.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
-""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@')
+""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@'))
+
def print_usage():
- print """
+ print("""
Usage: %s [options]
Options:
@@ -55,60 +57,62 @@ clicking on it or by highlighting it wit
pressing ENTER; the desired text will be automatically entered.
Direct your bug reports to: %s
-""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@')
+""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@'))
+
def parse_cmd_line_args():
- short_options = "c:s:hv"
- long_options = ["config=", "suggestions=", "help", "version"]
-
- try:
- opts, args = getopt.getopt(sys.argv[1:], short_options, long_options)
- except getopt.GetoptError, err:
- print str(err)
- sys.exit(1)
-
- for opt, arg in opts:
- if opt in ('-v', '--version'):
- print_version()
- sys.exit()
- elif opt in ('-h', '--help'):
- print_usage()
- sys.exit()
- elif opt in ('-c', '--config'):
- global config
- config = arg
- elif opt in ('-s', '--suggestions'):
- global suggestions
- suggestions = arg
+ short_options = "c:s:hv"
+ long_options = ["config=", "suggestions=", "help", "version"]
+
+ try:
+ opts, _ = getopt.getopt(sys.argv[1:], short_options, long_options)
+ except getopt.GetoptError as err:
+ print(str(err))
+ sys.exit(1)
+
+ for opt, arg in opts:
+ if opt in ('-v', '--version'):
+ print_version()
+ sys.exit()
+ elif opt in ('-h', '--help'):
+ print_usage()
+ sys.exit()
+ elif opt in ('-c', '--config'):
+ global CONFIG
+ CONFIG = arg
+ elif opt in ('-s', '--suggestions'):
+ global SUGGESTIONS
+ SUGGESTIONS = arg
if __name__ == "__main__":
- parse_cmd_line_args()
+ parse_cmd_line_args()
- try:
- import prompter.prompter
- except ImportError, e:
- print '''
+ try:
+ import prompter.prompter
+ except ImportError as err:
+ print('''
Error: failed to import module prompter.
Check that prompter is properly installed (if installed in a
non-standard location, please set PYTHONPATH accordingly).
-'''
- print e
- else:
- if not config:
- # try to locate presage.xml config file
- scriptdir = os.path.dirname(sys.argv[0])
- # in scriptdir/etc
- conffile = os.path.join(scriptdir, 'etc', 'presage.xml')
- if os.path.isfile(conffile):
- config = conffile
- else:
- # in scriptdir/../etc
- conffile = os.path.join(scriptdir, '..', 'etc', 'presage.xml')
- if os.path.isfile(conffile):
- config = conffile
- print 'Configuration file: ' + str(config)
-
- app = prompter.prompter.Prompter("@PACKAGE_VERSION@", config, suggestions)
- app.MainLoop()
+''')
+ print(err)
+ else:
+ if not CONFIG:
+ # try to locate presage.xml config file
+ SCRIPTDIR = os.path.dirname(sys.argv[0])
+ # in scriptdir/etc
+ CONFFILE = os.path.join(SCRIPTDIR, 'etc', 'presage.xml')
+ if os.path.isfile(CONFFILE):
+ CONFIG = CONFFILE
+ else:
+ # in scriptdir/../etc
+ CONFFILE = os.path.join(SCRIPTDIR, '..', 'etc', 'presage.xml')
+ if os.path.isfile(CONFFILE):
+ CONFIG = CONFFILE
+ print('Configuration file: ' + str(CONFIG))
+
+ APP = prompter.prompter.Prompter(
+ "@PACKAGE_VERSION@", CONFIG, SUGGESTIONS)
+ APP.MainLoop()
Index: presage-0.9.1/apps/python/prompter/prompter.py
===================================================================
--- presage-0.9.1.orig/apps/python/prompter/prompter.py
+++ presage-0.9.1/apps/python/prompter/prompter.py
@@ -23,21 +23,22 @@ import sys
try:
import wx
import wx.stc
-except ImportError, ex:
- print '''
+ import wx.adv
+except ImportError as ex:
+ print('''
Error: failed to import module wxPython.
wxPython is a Python binding for the wxWidgets toolkit.
Check that wxPython is properly installed.
-'''
- print ex
+''')
+ print(ex)
sys.exit(1)
try:
import presage
-except ImportError, ex:
- print '''
+except ImportError as ex:
+ print('''
Error: failed to import module presage.
Check that presage python binding is properly installed (if
@@ -47,8 +48,8 @@ accordingly).
Check that presage library is properly installed (if installed in a
non-standard location, please set LD_LIBRARY_PATH (PATH, LIBPATH)
accordingly).
-'''
- print ex
+''')
+ print(ex)
sys.exit(1)
##########
@@ -238,7 +239,7 @@ class PrompterFrame(wx.Frame):
self.fileMenu.Enable(wx.ID_SAVEAS, False)
def OnFileMenuOpen(self, event):
- print "Opening a file.."
+ print("Opening a file..")
# Create the dialog. In this case the current directory is forced as the starting
# directory for the dialog, and no default file name is forced. This can easilly
@@ -249,7 +250,7 @@ class PrompterFrame(wx.Frame):
# dialog is set up to change the current working directory to the path chosen.
dlg = wx.FileDialog(
self, message="Choose a file", defaultDir="",
- defaultFile="", wildcard=self.wildcard, style=wx.OPEN | wx.CHANGE_DIR
+ defaultFile="", wildcard=self.wildcard, style=wx.FD_OPEN | wx.FD_CHANGE_DIR
)
# Show the dialog and retrieve the user response. If it is the OK response,
@@ -279,7 +280,7 @@ class PrompterFrame(wx.Frame):
dlg.Destroy()
def OnFileMenuSave(self, event):
- print "Save file"
+ print("Save file")
if self.editor.file == None:
self.OnFileMenuSaveAs(event)
else:
@@ -287,7 +288,7 @@ class PrompterFrame(wx.Frame):
self.fileMenu.Enable(wx.ID_SAVE, False)
def OnFileMenuSaveAs(self, event):
- print "Save file as"
+ print("Save file as")
# Create the dialog. In this case the current directory is forced as the starting
# directory for the dialog, and no default file name is forced. This can easilly
@@ -298,12 +299,12 @@ class PrompterFrame(wx.Frame):
# directory than the one initially set.
dlg = wx.FileDialog(
self, message="Save file as ...", defaultDir="",
- defaultFile="", wildcard=self.wildcard, style=wx.SAVE
+ defaultFile="", wildcard=self.wildcard, style=wx.FD_SAVE
)
# This sets the default filter that the user will initially see. Otherwise,
# the first filter in the list will be used by default.
- dlg.SetFilterIndex(2)
+ dlg.SetFilterIndex(1)
# Show the dialog and retrieve the user response. If it is the OK response,
# process the data.
@@ -321,31 +322,31 @@ class PrompterFrame(wx.Frame):
self.OnFileMenuNew(event) # this will do for now
def OnFileMenuQuit(self, event):
- print "This should first check that changes have been saved..."
+ print("This should first check that changes have been saved...")
self.Close(True)
def OnEditMenuUndo(self, event):
if self.editor.CanUndo():
self.editor.Undo()
- print "Undo last action"
+ print("Undo last action")
def OnEditMenuRedo(self, event):
if self.editor.CanRedo():
self.editor.Redo()
- print "Redo last action"
+ print("Redo last action")
def OnEditMenuCut(self, event):
self.clip = self.editor.GetSelectedText()
self.editor.ReplaceSelection('')
- print "Cut selected text: " + self.clip
+ print("Cut selected text: " + self.clip)
def OnEditMenuCopy(self, event):
self.clip = self.editor.GetSelectedText()
- print "Stored selected text into clip: " + self.clip
+ print("Stored selected text into clip: " + self.clip)
def OnEditMenuPaste(self, event):
self.editor.ReplaceSelection(self.clip)
- print "Replace selection with: " + self.clip
+ print("Replace selection with: " + self.clip)
def OnEditMenuSelectAll(self, event):
self.editor.SelectAll()
@@ -360,7 +361,7 @@ class PrompterFrame(wx.Frame):
self.editor.DecreaseTextSize()
def OnViewMenuShowToolbar(self, event):
- if event.Checked():
+ if event.IsChecked():
self.toolbar.Show()
else:
self.toolbar.Hide()
@@ -370,10 +371,10 @@ class PrompterFrame(wx.Frame):
self.editor.ShowPrediction()
def OnPresageMenuToggleFunctionMode(self, event):
- self.editor.function_keys_enabled = event.Checked()
+ self.editor.function_keys_enabled = event.IsChecked()
def OnPresageMenuToggleAutopunctuationMode(self, event):
- self.editor.autopunctuation = event.Checked()
+ self.editor.autopunctuation = event.IsChecked()
def OnHelpMenuContents(self, event):
message = "Sorry, help not written yet."
@@ -412,7 +413,7 @@ with this program; if not, write to the
# AboutBox and AboutDialogInfo were introduced in wxPython 2.7.1.1
if wx.VERSION > (2, 7, 1, 1):
# build about dialog information
- info = wx.AboutDialogInfo()
+ info = wx.adv.AboutDialogInfo()
info.SetName(name)
info.SetVersion(version)
info.SetCopyright(copyright)
@@ -426,7 +427,7 @@ with this program; if not, write to the
#info.SetIcon()
# show about dialog box
- wx.AboutBox(info)
+ wx.adv.AboutBox(info)
else:
message = name + ' ' + version + '\n' \
@@ -517,7 +518,7 @@ class PrompterEditor(wx.stc.StyledTextCt
wx.CallAfter(self.SetSTCFocus, 1)
def OnChar(self, event):
- print "------------ OnChar() handler"
+ print("------------ OnChar() handler")
if event.HasModifiers():
if self.AutoCompActive():
@@ -535,7 +536,7 @@ class PrompterEditor(wx.stc.StyledTextCt
self.__HandleFunctionKey(keycode)
else:
- key = unichr(key)
+ key = chr(key)
self.parent.fileMenu.Enable(wx.ID_SAVE, True)
self.parent.fileMenu.Enable(wx.ID_SAVEAS, True)
@@ -553,7 +554,7 @@ class PrompterEditor(wx.stc.StyledTextCt
self.__ShowPrediction(string)
def __ShowPrediction(self, string = ''):
- print "------------ __ShowPrediction()"
+ print("------------ __ShowPrediction()")
try:
prefix = self.prsg.prefix()
context = self.prsg.context()
@@ -565,18 +566,18 @@ class PrompterEditor(wx.stc.StyledTextCt
self.prediction = self.__PrependFunctionLabel(self.prediction)
self.suggestions = self.separator.join(self.prediction);
- except presage.PresageException, ex:
- print 'Caught exception %s' % (ex)
- print ' code: %d' % (ex.code())
- print ' what: %s' % (ex.what())
+ except presage.PresageException as ex:
+ print('Caught exception %s' % (ex))
+ print(' code: %d' % (ex.code()))
+ print(' what: %s' % (ex.what()))
- print "String: " + string
- print "Prefix: " + prefix
- print "Prefix len: " + str(len(prefix))
- print "Context: " + context
- print "Context change: " + str(context_change)
- print "Prediction: " + self.suggestions
+ print("String: " + string)
+ print("Prefix: " + prefix)
+ print("Prefix len: " + str(len(prefix)))
+ print("Context: " + context)
+ print("Context change: " + str(context_change))
+ print("Prediction: " + self.suggestions)
if self.AutoCompActive():
self.AutoCompCancel()
@@ -622,11 +623,11 @@ class PrompterEditor(wx.stc.StyledTextCt
return result
def __HandleFunctionKey(self, key):
- print "Got function key " + str(key)
+ print("Got function key " + str(key))
try:
idx = self.function_keys.index(key)
- print self.prediction[idx]
+ print(self.prediction[idx])
if self.AutoCompActive():
self.AutoCompCancel()
@@ -634,7 +635,7 @@ class PrompterEditor(wx.stc.StyledTextCt
self.AutoCompSelect(self.prediction[idx])
self.AutoCompComplete()
except IndexError:
- print 'Key not in prediction completion list'
+ print('Key not in prediction completion list')
def __PrependFunctionLabel(self, prediction):
return ['F' + str(i + 1) + ' ' + prediction[i] for i in range(len(prediction))]
@@ -646,15 +647,15 @@ class PrompterEditor(wx.stc.StyledTextCt
return completion
def OnUserListSelection(self, event):
- completion = unicode(event.GetText())
+ completion = str(event.GetText())
if self.function_keys_enabled:
completion = self.__RemoveFunctionLabel(completion)
- prefix_length = len(unicode(self.prsg.prefix()))
+ prefix_length = len(str(self.prsg.prefix()))
- print "----------- OnUserListSelection() handler"
- print "Completion: " + completion
- print "Prefix length: " + str(prefix_length)
- print "To be added: " + completion[prefix_length:]
+ print("----------- OnUserListSelection() handler")
+ print("Completion: " + completion)
+ print("Prefix length: " + str(prefix_length))
+ print("To be added: " + completion[prefix_length:])
# no need to call complete, using callbacks
#self.prsg.complete(completion.encode('utf-8'))
Index: presage-0.9.1/apps/dbus/presage_dbus_python_demo.in
===================================================================
--- presage-0.9.1.orig/apps/dbus/presage_dbus_python_demo.in
+++ presage-0.9.1/apps/dbus/presage_dbus_python_demo.in
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -32,13 +32,13 @@ PROGRAM_NAME = 'presage_dbus_python_demo
config = None
-presage_service_name = 'org.gnome.presage.beta'
-presage_service_path = '/org/gnome/presage/beta'
+presage_service_name = 'org.gnome.presage.beta'
+presage_service_path = '/org/gnome/presage/beta'
presage_service_interface = 'org.gnome.presage.beta'
def disclaimer():
- print """
+ print("""
Presage dbus python demo
------------------------
@@ -51,19 +51,21 @@ Its intent is NOT to provide a predictiv
Think of Presage as the predictive backend that sits behind a shiny
user interface and does all the predictive heavy lifting.
-"""
+""")
+
def print_version():
- print """
+ print("""
%s (%s) version %s
Copyright (C) 2010 Matteo Vescovi.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
-""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@')
+""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@'))
+
def print_usage():
- print """
+ print("""
Usage: %s [OPTION]...
At the prompt, type in some text. Hit enter to generate a prediction.
@@ -74,29 +76,30 @@ Any text input is valid, including no te
-v, --version output version information and exit
Direct your bug reports to: %s
-""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@')
+""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@'))
+
def parse_cmd_line_args():
- global config
+ global config
+
+ short_options = "c:s:hv"
+ long_options = ["config=", "suggestions=", "help", "version"]
+
+ try:
+ opts, _ = getopt.getopt(sys.argv[1:], short_options, long_options)
+ except getopt.GetoptError as err:
+ print(str(err))
+ sys.exit(1)
- short_options = "c:s:hv"
- long_options = ["config=", "suggestions=", "help", "version"]
-
- try:
- opts, args = getopt.getopt(sys.argv[1:], short_options, long_options)
- except getopt.GetoptError, err:
- print str(err)
- sys.exit(1)
-
- for opt, arg in opts:
- if opt in ('-v', '--version'):
- print_version()
- sys.exit()
- elif opt in ('-h', '--help'):
- print_usage()
- sys.exit()
- elif opt in ('-c', '--config'):
- config = arg
+ for opt, arg in opts:
+ if opt in ('-v', '--version'):
+ print_version()
+ sys.exit()
+ elif opt in ('-h', '--help'):
+ print_usage()
+ sys.exit()
+ elif opt in ('-c', '--config'):
+ config = arg
def main():
@@ -107,32 +110,38 @@ def main():
try:
bus = dbus.SessionBus(gloop)
if config:
- presage_object_path = bus.get_object(presage_service_name, presage_service_path).get_presage_object_path(config)
+ presage_object_path = bus.get_object(
+ presage_service_name,
+ presage_service_path).get_presage_object_path(config)
else:
- presage_object_path = bus.get_object(presage_service_name, presage_service_path).get_presage_object_path()
+ presage_object_path = bus.get_object(
+ presage_service_name, presage_service_path).get_presage_object_path()
# Get the Presage object
- presage_object = bus.get_object(presage_service_name, presage_object_path)
+ presage_object = bus.get_object(
+ presage_service_name, presage_object_path)
- print 'D-BUS connection to presage object %s created' % presage_object_path
+ print(
+ 'D-BUS connection to presage object %s created' %
+ presage_object_path)
- except Exception, e:
- print e
+ except Exception as err:
+ print(err)
sys.exit(1)
- print "Enter text at the prompt (press enter on empty line to exit):"
+ print("Enter text at the prompt (press enter on empty line to exit):")
string = None
buffer = ""
while string != "":
- string = raw_input("> ")
+ string = input("> ")
buffer += string
results = presage_object.get_prediction(buffer, '')
for result in results:
- print str(result)
+ print(str(result))
presage_object.destroy()
- print "Goodbye"
+ print("Goodbye")
if __name__ == '__main__':
- parse_cmd_line_args()
- disclaimer()
- main()
+ parse_cmd_line_args()
+ disclaimer()
+ main()
Index: presage-0.9.1/apps/dbus/presage_dbus_service.py
===================================================================
--- presage-0.9.1.orig/apps/dbus/presage_dbus_service.py
+++ presage-0.9.1/apps/dbus/presage_dbus_service.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -72,7 +72,7 @@ class PresageObject(dbus.service.Object)
self.callback = DbusPresageCallback().__disown__()
self.prsg = presage.Presage(self.callback, config)
dbus.service.Object.__init__(self, name, self.path)
- print 'Created presage object %s' % self.path
+ print('Created presage object %s' % self.path)
# def __del__( self ):
# print 'PresageObject destroyed: ', self
@@ -88,7 +88,7 @@ class PresageObject(dbus.service.Object)
@dbus.service.method(dbus_interface = presage_service_interface)
def destroy(self):
self.remove_from_connection()
- print 'Removed presage object ' + self.path
+ print('Removed presage object ' + self.path)
class PresageService(dbus.service.Object):
@@ -98,7 +98,7 @@ class PresageService(dbus.service.Object
self.path = presage_service_path
self.loop = loop
dbus.service.Object.__init__(self, self.name, self.path)
- print 'Service %s created, pid %d' % (presage_service_name, os.getpid())
+ print('Service %s created, pid %d' % (presage_service_name, os.getpid()))
@dbus.service.method(dbus_interface = presage_service_interface,
in_signature = 's',
@@ -112,11 +112,11 @@ class PresageService(dbus.service.Object
out_signature = '')
def shutdown(self):
self.loop.quit()
- print 'Service %s shutdown' % presage_service_name
+ print('Service %s shutdown' % presage_service_name)
def start():
- print 'Starting ' + presage_service_name + '...'
+ print('Starting ' + presage_service_name + '...')
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
loop = gobject.MainLoop()
@@ -124,16 +124,16 @@ def start():
loop.run()
def stop():
- print 'Stopping ' + presage_service_name + '...'
+ print('Stopping ' + presage_service_name + '...')
try:
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
presage_service_object = bus.get_object(presage_service_name, presage_service_path)
presage_service_object.shutdown()
- except Exception, e:
- print 'Caught exception while attempting to stop ' + presage_service_name
- print e
+ except Exception as err:
+ print('Caught exception while attempting to stop ' + presage_service_name)
+ print(err)
if __name__ == '__main__':
start()
Index: presage-0.9.1/apps/python/presagemate/presagemate.py
===================================================================
--- presage-0.9.1.orig/apps/python/presagemate/presagemate.py
+++ presage-0.9.1/apps/python/presagemate/presagemate.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -24,8 +24,8 @@ import string
try:
import presage
-except ImportError, ex:
- print '''
+except ImportError as ex:
+ print('''
Error: failed to import module presage.
Check that presage python binding is properly installed (if
@@ -35,11 +35,11 @@ accordingly).
Check that presage library is properly installed (if installed in a
non-standard location, please set LD_LIBRARY_PATH (PATH, LIBPATH)
accordingly).
-'''
+''')
try:
import pyatspi
-except ImportError, ex:
- print '''
+except ImportError as ex:
+ print('''
Error: failed to import module pyatspi.
Check that pyatspi python binding is properly installed (if
@@ -49,12 +49,14 @@ accordingly).
Check that pyatspi library is properly installed (if installed in a
non-standard location, please set LD_LIBRARY_PATH (PATH, LIBPATH)
accordingly).
-'''
+''')
try:
- import gtk
-except ImportError, ex:
- print '''
+ import gi
+ gi.require_version('Gtk', '3.0')
+ from gi.repository import Gtk as gtk, Gdk as gdk
+except ImportError as ex:
+ print('''
Error: failed to import module gtk.
Check that gtk python binding is properly installed (if
@@ -64,12 +66,12 @@ accordingly).
Check that gtk library is properly installed (if installed in a
non-standard location, please set LD_LIBRARY_PATH (PATH, LIBPATH)
accordingly).
-'''
+''')
-import ConfigParser
+import configparser
import os
-import pango
+from gi.repository import Pango as pango
import atexit
import Xlib
import Xlib.display
@@ -129,11 +131,11 @@ def process_event(event):
completion = prsg.completion(predicted_word)
- print 'Prediction: ' + predicted_word
- print 'Completion: ' + completion
+ print('Prediction: ' + predicted_word)
+ print('Completion: ' + completion)
for ch in completion:
- keyval = gtk.gdk.unicode_to_keyval(ord(ch))
+ keyval = gdk.unicode_to_keyval(ord(ch))
reg.generateKeyboardEvent(keyval, None, pyatspi.KEY_SYM)
callback.buffer += completion
@@ -173,7 +175,7 @@ def delete_event(widget, event, data=Non
def frame_event(window, event, data=None):
state = event.new_window_state
- if state & gtk.gdk.WINDOW_STATE_ICONIFIED:
+ if state & gdk.WindowState.ICONIFIED:
# re-map F1-10 to F1-10 when the window is iconified
remap_keys(False)
else:
@@ -182,7 +184,7 @@ def frame_event(window, event, data=None
def get_config():
writeconfig_flag = False
- config = ConfigParser.SafeConfigParser()
+ config = configparser.ConfigParser()
config.read(os.path.expanduser('~/.pypresagematerc'))
if config.has_section('Config') == False:
@@ -207,7 +209,7 @@ def get_config():
writeconfig_flag = True
if writeconfig_flag == True:
- configfile = open(os.path.expanduser('~/.pypresagematerc'), 'wb')
+ configfile = open(os.path.expanduser('~/.pypresagematerc'), 'w')
try:
config.write(configfile)
finally:
@@ -216,11 +218,11 @@ def get_config():
return config
def set_position_config(x, y):
- config = ConfigParser.SafeConfigParser()
+ config = configparser.ConfigParser()
config.read(os.path.expanduser('~/.pypresagematerc'))
config.set('Config', 'window_position_x', str(x))
config.set('Config', 'window_position_y', str(y))
- configfile = open(os.path.expanduser('~/.pypresagematerc'), 'wb')
+ configfile = open(os.path.expanduser('~/.pypresagematerc'), 'w')
try:
config.write(configfile)
finally:
@@ -279,15 +281,15 @@ def remap_keys(remap):
def popup_menu(widget, event):
if event.button == 3:
- menu.popup(None, None, None, event.button, event.time)
+ menu.popup(None, None, None, None, event.button, event.time)
return True
return False
def apply_preferences(widget):
- print "apply"
+ print("apply")
def close_preferences(widget):
- print "close"
+ print("close")
def update_no_selections(widget):
global number_of_suggestions
@@ -297,14 +299,14 @@ def update_no_selections(widget):
remap_keys(True)
def preferences(widget):
- preferences = gtk.Window(gtk.WINDOW_TOPLEVEL)
+ preferences = gtk.Window(gtk.WindowType.TOPLEVEL)
preferences.set_title("pypresagemate preferences")
- preferences.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
+ preferences.set_type_hint(gdk.WindowTypeHint.DIALOG)
preferences_box = gtk.VBox()
notebook = gtk.Notebook()
- notebook.set_tab_pos(gtk.POS_TOP)
+ notebook.set_tab_pos(gtk.PositionType.TOP)
appearance_frame = gtk.Frame()
appearance_tab = gtk.Label("Appearance")
@@ -319,7 +321,8 @@ def preferences(widget):
presage_placeholder = gtk.Label("\n\nPresage library configuration\n\n")
adj = gtk.Adjustment(float(number_of_suggestions), 3, 10, 1, 0, 0)
- no_of_selections = gtk.SpinButton(adj, 0, 0)
+ no_of_selections = gtk.SpinButton()
+ no_of_selections.configure(adj, 0, 0)
no_of_selections.connect("output", update_no_selections)
presage_frame.add(no_of_selections)
@@ -366,7 +369,7 @@ with this program; if not, write to the
about.set_website("http://presage.sourceforge.net/")
about.set_comments(comments)
if os.path.isfile("/usr/local/share/presage/presage.png"):
- about.set_logo(gtk.gdk.pixbuf_new_from_file("/usr/local/share/presage/presage.png"))
+ about.set_logo(gdk.pixbuf_new_from_file("/usr/local/share/presage/presage.png"))
about.run()
about.destroy()
@@ -410,7 +413,7 @@ prediction = prsg.predict()
reg.registerKeystrokeListener(process_event, mask=pyatspi.allModifiers())
-window = gtk.Window(gtk.WINDOW_TOPLEVEL)
+window = gtk.Window(gtk.WindowType.TOPLEVEL)
window.connect("delete-event", delete_event)
window.connect("window-state-event", frame_event)
@@ -419,17 +422,17 @@ window.set_keep_above(True)
window.move(window_position_x, window_position_y)
-window.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#c0c0ff"))
+window.modify_bg(gtk.StateType.NORMAL, gdk.color_parse("#c0c0ff"))
label = gtk.Label("pypresagemate")
-label.set_justify(gtk.JUSTIFY_LEFT)
+label.set_justify(gtk.Justification.LEFT)
label.set_width_chars(20)
font_desc = pango.FontDescription(pangofont)
label.modify_font(font_desc)
window.connect("button-press-event", popup_menu)
-window.add_events(gtk.gdk.BUTTON_PRESS_MASK)
+window.add_events(gdk.EventMask.BUTTON_PRESS_MASK)
menu = gtk.Menu()
menu_item1 = gtk.MenuItem('About')
Index: presage-0.9.1/apps/python/pypresagemate.in
===================================================================
--- presage-0.9.1.orig/apps/python/pypresagemate.in
+++ presage-0.9.1/apps/python/pypresagemate.in
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
@@ -27,17 +27,17 @@ import os
PROGRAM_NAME = 'pypresagemate'
def print_version():
- print """
+ print("""
%s (%s) version %s
Copyright (C) 2010 Matteo Vescovi.
Copyright (C) 2010 John Hills.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
-""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@')
+""" % (PROGRAM_NAME, '@PACKAGE_NAME@', '@PACKAGE_VERSION@'))
def print_usage():
- print """
+ print("""
Usage: %s [options]
Options:
@@ -54,16 +54,16 @@ keystrokes are typed and displaying pred
prediction is selected, text is sent to the active application.
Direct your bug reports to: %s
-""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@')
+""" % (PROGRAM_NAME, '@PACKAGE_BUGREPORT@'))
def parse_cmd_line_args():
short_options = "hv"
long_options = ["help", "version"]
try:
- opts, args = getopt.getopt(sys.argv[1:], short_options, long_options)
- except getopt.GetoptError, err:
- print str(err)
+ opts, _ = getopt.getopt(sys.argv[1:], short_options, long_options)
+ except getopt.GetoptError as err:
+ print(str(err))
sys.exit(1)
for opt, arg in opts:
@@ -80,14 +80,14 @@ if __name__ == "__main__":
try:
import presagemate.presagemate
- except ImportError, e:
- print '''
+ except ImportError as err:
+ print('''
Error: failed to import module presagemate.
Check that prompter is properly installed (if installed in a
non-standard location, please set PYTHONPATH accordingly).
-'''
- print e
+''')
+ print(err)
else:
if not config:
# try to locate presage.xml config file
@@ -101,4 +101,4 @@ non-standard location, please set PYTHON
conffile = os.path.join(scriptdir, '..', 'etc', 'presage.xml')
if os.path.isfile(conffile):
config = conffile
- print 'Configuration file: ' + str(config)
+ print('Configuration file: ' + str(config))
Index: presage-0.9.1/apps/dbus/presage_dbus_python_demo
===================================================================
--- presage-0.9.1.orig/apps/dbus/presage_dbus_python_demo
+++ presage-0.9.1/apps/dbus/presage_dbus_python_demo
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system
Index: presage-0.9.1/apps/dbus/presage_dbus_service
===================================================================
--- presage-0.9.1.orig/apps/dbus/presage_dbus_service
+++ presage-0.9.1/apps/dbus/presage_dbus_service
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/python3
##########
# Presage, an extensible predictive text entry system