diff --git a/deskutils/Makefile b/deskutils/Makefile index f877e027e807..67d2fb2e23cf 100644 --- a/deskutils/Makefile +++ b/deskutils/Makefile @@ -1,270 +1,271 @@ COMMENT = Things that used to be on the desktop before computers were invented SUBDIR += affiche SUBDIR += akonadi-calendar-tools SUBDIR += akonadi-import-wizard SUBDIR += akonadiconsole SUBDIR += akregator SUBDIR += alarm-clock-applet SUBDIR += anydesk SUBDIR += appwrapper SUBDIR += aspostit SUBDIR += ausweisapp2 SUBDIR += autocutsel SUBDIR += baobab SUBDIR += basket SUBDIR += belcard SUBDIR += bigyear SUBDIR += bijiben SUBDIR += birdtray SUBDIR += bitcollider SUBDIR += cairo-dock SUBDIR += cairo-dock-plugins SUBDIR += caja-extensions SUBDIR += cal SUBDIR += calcurse SUBDIR += calendar SUBDIR += calendar-data SUBDIR += calibre SUBDIR += calindori SUBDIR += cartotheque SUBDIR += cfiles SUBDIR += charmtimetracker SUBDIR += chart SUBDIR += clipit SUBDIR += clipmenu SUBDIR += clipnotify SUBDIR += conkyforecast SUBDIR += coolreader SUBDIR += copyq SUBDIR += countdown SUBDIR += dailystrips SUBDIR += deforaos-todo SUBDIR += dfshow SUBDIR += docear SUBDIR += dosage SUBDIR += dstask SUBDIR += easystroke SUBDIR += egroupware SUBDIR += elementary-calendar SUBDIR += fasd SUBDIR += fbreader SUBDIR += fet SUBDIR += fff SUBDIR += flameshot SUBDIR += foliate SUBDIR += freemind SUBDIR += freeplane SUBDIR += ganttproject SUBDIR += gcal SUBDIR += gcalcli SUBDIR += genius SUBDIR += glabels SUBDIR += gnome-calendar SUBDIR += gnome-characters SUBDIR += gnome-clocks SUBDIR += gnome-contacts SUBDIR += gnome-dictionary SUBDIR += gnome-documents SUBDIR += gnome-font-viewer SUBDIR += gnome-initial-setup SUBDIR += gnome-maps SUBDIR += gnome-photos SUBDIR += gnome-pomodoro SUBDIR += gnome-screenshot SUBDIR += gnome-search-tool SUBDIR += gnome-shell-extension-audio-output-switcher SUBDIR += gnome-shell-extension-coverflow SUBDIR += gnome-shell-extension-dashtodock SUBDIR += gnome-shell-extension-dashtopanel SUBDIR += gnome-shell-extension-filesmenu SUBDIR += gnome-shell-extension-hidetopbar SUBDIR += gnome-shell-extension-lockkeys SUBDIR += gnome-shell-extension-mediaplayer SUBDIR += gnome-shell-extension-openweather SUBDIR += gnome-shell-extension-panel-osd SUBDIR += gnome-shell-extension-recent-items SUBDIR += gnome-shell-extension-trash SUBDIR += gnome-shell-extension-weather SUBDIR += gnome-shell-extension-windowoverlay-icons SUBDIR += gnome-shell-extra-extensions SUBDIR += gnome-sound-recorder SUBDIR += gnome-system-log SUBDIR += gnome-todo SUBDIR += gnome-tweaks SUBDIR += gnome-utils SUBDIR += gnome-weather SUBDIR += gnote SUBDIR += gnustep-wrapper SUBDIR += go-for-it SUBDIR += goesimage SUBDIR += gpicker SUBDIR += grantlee-editor SUBDIR += grantleetheme SUBDIR += griffith SUBDIR += growl-for-linux SUBDIR += gsimplecal SUBDIR += gtimer SUBDIR += gucharmap SUBDIR += gworkspace SUBDIR += gworkspace-gwmetadata SUBDIR += gxmessage SUBDIR += gxneur SUBDIR += hebcal SUBDIR += helpviewer SUBDIR += horde-groupware SUBDIR += horde-kronolith SUBDIR += horde-mnemo SUBDIR += horde-nag SUBDIR += hot-babe SUBDIR += howm SUBDIR += hs-arbtt SUBDIR += ical SUBDIR += itinerary SUBDIR += jjclient SUBDIR += jlj SUBDIR += just SUBDIR += kaddressbook SUBDIR += kalarm SUBDIR += kcharselect SUBDIR += kchmviewer SUBDIR += kdeconnect-kde SUBDIR += kdepim SUBDIR += kdepim-addons SUBDIR += kdepim-runtime SUBDIR += keditbookmarks SUBDIR += kfind SUBDIR += kmail SUBDIR += kmail-account-wizard SUBDIR += knotes SUBDIR += kongress SUBDIR += kontact SUBDIR += korganizer SUBDIR += kruler SUBDIR += ktimetracker SUBDIR += kuserfeedback SUBDIR += latte-dock SUBDIR += libkdepim SUBDIR += libportal SUBDIR += ljclive SUBDIR += lookbook SUBDIR += lumina-archiver SUBDIR += lumina-calculator SUBDIR += lumina-fileinfo SUBDIR += lumina-fm SUBDIR += lumina-mediaplayer SUBDIR += lumina-pdf SUBDIR += lumina-photo SUBDIR += lumina-screenshot SUBDIR += lumina-textedit SUBDIR += lxqt-notificationd SUBDIR += mate-indicator-applet SUBDIR += mate-notification-daemon SUBDIR += mate-utils SUBDIR += mbox-importer SUBDIR += mencal SUBDIR += menumaker SUBDIR += meteo SUBDIR += moregroupware SUBDIR += mozo SUBDIR += myitcrm SUBDIR += nautilus-actions SUBDIR += nautilus-sendto SUBDIR += nextcloudclient SUBDIR += note SUBDIR += noti SUBDIR += notification-daemon SUBDIR += notify-osd SUBDIR += osmo SUBDIR += owncloudclient SUBDIR += p5-Data-ICal SUBDIR += p5-Data-ICal-DateTime SUBDIR += p5-Goo SUBDIR += pal SUBDIR += parcellite SUBDIR += peaclock SUBDIR += pet SUBDIR += phpicalendar SUBDIR += pim-data-exporter SUBDIR += pim-sieve-editor SUBDIR += pinot SUBDIR += plan SUBDIR += plans SUBDIR += plasma5-milou SUBDIR += plasma5-sddm-kcm SUBDIR += plopfolio SUBDIR += preferences + SUBDIR += presage SUBDIR += projectlibre SUBDIR += puush SUBDIR += py-autokey SUBDIR += py-bugwarrior SUBDIR += py-khal SUBDIR += py-khard SUBDIR += py-paperless SUBDIR += py-py3status SUBDIR += py-pystash SUBDIR += py-send2trash SUBDIR += py-taskw SUBDIR += py-term-background SUBDIR += py-todoman SUBDIR += py-vdirsyncer SUBDIR += py-vobject SUBDIR += qlipper SUBDIR += qownnotes SUBDIR += recoll SUBDIR += remind SUBDIR += rolo SUBDIR += rubrica SUBDIR += rubygem-shellplay SUBDIR += rubygem-taskjuggler SUBDIR += semantik SUBDIR += showdown SUBDIR += simpleagenda SUBDIR += sliderule SUBDIR += sowon SUBDIR += spice-gtk SUBDIR += synapse SUBDIR += syncthingtray SUBDIR += sysctlview SUBDIR += systempreferences SUBDIR += taskd SUBDIR += tasksh SUBDIR += taskwarrior SUBDIR += teapot SUBDIR += terminal-image-viewer SUBDIR += thinkingrock SUBDIR += timewarrior SUBDIR += todo SUBDIR += toolboxkit SUBDIR += tpb SUBDIR += treeline SUBDIR += treesheets SUBDIR += ultralist SUBDIR += virt-manager SUBDIR += vit SUBDIR += when SUBDIR += wmpinboard SUBDIR += x026 SUBDIR += xcalendar SUBDIR += xchm SUBDIR += xdg-desktop-portal SUBDIR += xfce4-generic-slider SUBDIR += xfce4-notes-plugin SUBDIR += xfce4-notifyd SUBDIR += xfce4-tumbler SUBDIR += xfce4-volumed-pulse SUBDIR += xfce4-xkb-plugin SUBDIR += xmdiary SUBDIR += xneur SUBDIR += xpad SUBDIR += xpad3 SUBDIR += xpostit SUBDIR += xpostitPlus SUBDIR += xwrits SUBDIR += ydotool SUBDIR += zanshin SUBDIR += zim SUBDIR += znotes SUBDIR += zorro .include diff --git a/deskutils/presage/Makefile b/deskutils/presage/Makefile new file mode 100644 index 000000000000..506d6eae92ff --- /dev/null +++ b/deskutils/presage/Makefile @@ -0,0 +1,37 @@ +PORTNAME= presage +DISTVERSION= 0.9.1 +CATEGORIES= deskutils kde +MASTER_SITES= SF/${PORTNAME}/${PORTNAME}/${DISTVERSION} + +MAINTAINER= kde@FreeBSD.org +COMMENT= An intelligent predictive text entry system + +BUILD_DEPENDS= help2man:misc/help2man \ + ${PYTHON_PKGNAMEPREFIX}dbus>0:devel/py-dbus@${PY_FLAVOR} +LIB_DEPENDS= libexpat.so:textproc/expat2 \ + libfontconfig.so:x11-fonts/fontconfig \ + libfreetype.so:print/freetype2 \ + libharfbuzz.so:print/harfbuzz \ + libtinyxml.so:textproc/tinyxml \ + libuuid.so:misc/e2fsprogs-libuuid +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dbus>0:devel/py-dbus@${PY_FLAVOR} + +USES= gmake gnome libtool:build localbase shebangfix python:3.6+ sqlite +USE_GNOME= atk cairo gdkpixbuf2 glib20 gtk20 pango + +SHEBANG_FILES= apps/dbus/presage_dbus_python_demo \ + apps/dbus/presage_dbus_python_demo.in \ + apps/dbus/presage_dbus_service \ + apps/dbus/presage_dbus_service.py \ + apps/python/presagemate/presagemate.py \ + apps/python/pypresagemate.in \ + apps/python/pyprompter.in \ + bindings/python/presage_python_demo.in + +GNU_CONFIGURE= yes +CONFIGURE_ARGS= --disable-documentation \ + --disable-gprompter \ + --disable-static +INSTALL_TARGET= install-strip + +.include diff --git a/deskutils/presage/distinfo b/deskutils/presage/distinfo new file mode 100644 index 000000000000..7025150d0003 --- /dev/null +++ b/deskutils/presage/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1624863940 +SHA256 (presage-0.9.1.tar.gz) = 5ed567e350402a1d72c9053c78ecec3be710b7e72153a0223c6d19a7fe58a366 +SIZE (presage-0.9.1.tar.gz) = 2687519 diff --git a/deskutils/presage/files/patch-opensuse_gcc11 b/deskutils/presage/files/patch-opensuse_gcc11 new file mode 100644 index 000000000000..23d03029e7da --- /dev/null +++ b/deskutils/presage/files/patch-opensuse_gcc11 @@ -0,0 +1,263 @@ +Index: presage-0.9.1/src/lib/presage.cpp +=================================================================== +--- src/lib/presage.cpp.orig ++++ src/lib/presage.cpp +@@ -31,7 +31,7 @@ + #include "core/predictorActivator.h" + + Presage::Presage (PresageCallback* callback) +- throw (PresageException) ++ EXCEPT (PresageException) + { + profileManager = new ProfileManager(); + configuration = profileManager->get_configuration(); +@@ -42,7 +42,7 @@ Presage::Presage (PresageCallback* callb + } + + Presage::Presage (PresageCallback* callback, const std::string config_filename) +- throw (PresageException) ++ EXCEPT (PresageException) + { + profileManager = new ProfileManager(config_filename); + configuration = profileManager->get_configuration(); +@@ -62,7 +62,7 @@ Presage::~Presage() + } + + std::vector Presage::predict () +- throw (PresageException) ++ EXCEPT (PresageException) + { + std::vector result; + +@@ -88,7 +88,7 @@ std::vector Presage::predic + } + + std::multimap Presage::predict (std::vector filter) +- throw (PresageException) ++ EXCEPT (PresageException) + { + std::multimap result; + +@@ -137,20 +137,20 @@ std::multimap Presa + } + + void Presage::learn(const std::string text) const +- throw (PresageException) ++ EXCEPT (PresageException) + { + contextTracker->learn(text); // TODO: can pass additional param to + // learn to specify offline learning + } + + PresageCallback* Presage::callback (PresageCallback* callback) +- throw (PresageException) ++ EXCEPT (PresageException) + { + return const_cast(contextTracker->callback(callback)); + } + + std::string Presage::completion (const std::string str) +- throw (PresageException) ++ EXCEPT (PresageException) + { + // There are two types of completions: normal and erasing. + // normal_completion = prefix + remainder +@@ -198,37 +198,37 @@ std::string Presage::completion (const s + } + + std::string Presage::context () const +- throw (PresageException) ++ EXCEPT (PresageException) + { + return contextTracker->getPastStream(); + } + + bool Presage::context_change () const +- throw (PresageException) ++ EXCEPT (PresageException) + { + return contextTracker->contextChange(); + } + + std::string Presage::prefix () const +- throw (PresageException) ++ EXCEPT (PresageException) + { + return contextTracker->getPrefix(); + } + + std::string Presage::config (const std::string variable) const +- throw (PresageException) ++ EXCEPT (PresageException) + { + return configuration->find (variable)->get_value (); + } + + void Presage::config (const std::string variable, const std::string value) const +- throw (PresageException) ++ EXCEPT (PresageException) + { + configuration->insert (variable, value); + } + + void Presage::save_config () const +- throw (PresageException) ++ EXCEPT (PresageException) + { + profileManager->save_profile (); + } +Index: presage-0.9.1/src/lib/presage.h +=================================================================== +--- src/lib/presage.h.orig ++++ src/lib/presage.h +@@ -28,6 +28,12 @@ + #include "presageException.h" + #include "presageCallback.h" + ++#if __cplusplus >= 201103L ++#define EXCEPT(...) noexcept(false) ++#else ++#define EXCEPT(...) throw(__VA_ARGS__) ++#endif ++ + /** \mainpage + + \section intro_section Introduction +@@ -112,7 +118,7 @@ public: + * + * Presage does not take ownership of the callback object. + */ +- Presage(PresageCallback* callback) throw (PresageException); ++ Presage(PresageCallback* callback) EXCEPT(PresageException); + + + /** Creates and initializes presage with supplied configuration. +@@ -122,7 +128,7 @@ public: + * + * Presage does not take ownership of the callback object. + */ +- Presage(PresageCallback* callback, const std::string config) throw (PresageException); ++ Presage(PresageCallback* callback, const std::string config) EXCEPT(PresageException); + + + /** Destroys presage. +@@ -138,7 +144,7 @@ public: + * context. + * + */ +- std::vector predict() throw (PresageException); ++ std::vector predict() EXCEPT(PresageException); + + /** \brief Obtain a prediction that matches the supplied token + * filter. +@@ -153,7 +159,7 @@ public: + * of the filter tokens. + * + */ +- std::multimap predict(std::vector filter) throw (PresageException); ++ std::multimap predict(std::vector filter) EXCEPT(PresageException); + + /** \brief Learn from text offline. + * +@@ -167,7 +173,7 @@ public: + * \param text a text string to learn from. + * + */ +- void learn(const std::string text) const throw (PresageException); ++ void learn(const std::string text) const EXCEPT(PresageException); + + /** \brief Callback getter/setter. + * +@@ -176,7 +182,7 @@ public: + * + * \return pointer to previously used callback + */ +- PresageCallback* callback(PresageCallback* callback) throw (PresageException); ++ PresageCallback* callback(PresageCallback* callback) EXCEPT(PresageException); + + /** \brief Request presage to return the completion string for the given predicted token. + * +@@ -190,26 +196,26 @@ public: + * + * \return completion string + */ +- std::string completion(std::string str) throw (PresageException); ++ std::string completion(std::string str) EXCEPT(PresageException); + + /** \brief Returns the text entered so far. + * + * \return context, text entered so far. + */ +- std::string context() const throw (PresageException); ++ std::string context() const EXCEPT(PresageException); + + /** \brief Returns true if a context change occured. + * + * \return true if a context change occured after the last update + * or predict calls, or false otherwise. + */ +- bool context_change() const throw (PresageException); ++ bool context_change() const EXCEPT(PresageException); + + /** \brief Returns the current prefix. + * + * \return prefix + */ +- std::string prefix() const throw (PresageException); ++ std::string prefix() const EXCEPT(PresageException); + + /** \brief Gets the value of specified configuration variable. + * +@@ -218,7 +224,7 @@ public: + * + * \return value assigned to configuration variable. + */ +- std::string config(const std::string variable) const throw (PresageException); ++ std::string config(const std::string variable) const EXCEPT(PresageException); + + /** \brief Sets the value of specified configuration variable. + * +@@ -227,7 +233,7 @@ public: + * from the configuration file in use. + * + */ +- void config(const std::string variable, const std::string value) const throw (PresageException); ++ void config(const std::string variable, const std::string value) const EXCEPT(PresageException); + + /** \brief Save current configuration to file. + * +@@ -236,7 +242,7 @@ public: + * active XML profile. + * + */ +- void save_config() const throw (PresageException); ++ void save_config() const EXCEPT(PresageException); + + /* + * Presage public API ends here +From e9faf7fa918e75bdf26f3068794c97b34d14b406 Mon Sep 17 00:00:00 2001 +From: Martin Liska +Date: Wed, 12 May 2021 14:13:23 +0200 +Subject: [PATCH] Fix GCC 11 warning. + +--- + apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx b/apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx +index 926457b..8f4816d 100644 +--- apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx.orig ++++ apps/gtk/gprompter/scintilla/gtk/ScintillaGTK.cxx +@@ -1626,7 +1626,7 @@ void ScintillaGTK::ReceivedDrop(GtkSelectionData *selection_data) { + drop.push_back('\0'); + NotifyURIDropped(&drop[0]); + } else if ((TypeOfGSD(selection_data) == GDK_TARGET_STRING) || (TypeOfGSD(selection_data) == atomUTF8)) { +- if (TypeOfGSD(selection_data) > 0) { ++ if (TypeOfGSD(selection_data) != NULL) { + SelectionText selText; + GetGtkSelectionText(selection_data, selText); + DropAt(posDrop, selText.Data(), selText.Length(), false, selText.rectangular); +-- +2.31.1 + + diff --git a/deskutils/presage/files/patch-opensuse_gcc6 b/deskutils/presage/files/patch-opensuse_gcc6 new file mode 100644 index 000000000000..d8b4cd8e2360 --- /dev/null +++ b/deskutils/presage/files/patch-opensuse_gcc6 @@ -0,0 +1,531 @@ +Obtained from: + https://build.opensuse.org/package/view_file/openSUSE:Factory/presage/presage-0.9.1-gcc6.patch + +Index: presage-0.9.1/src/lib/core/iso8859_1.h +=================================================================== +--- src/lib/core/iso8859_1.h.orig ++++ src/lib/core/iso8859_1.h +@@ -27,266 +27,266 @@ + + // ISO 8859-1 standard /////////////////////// + +-const int NUL = 0; // NUL +-const int SOH = 1; // SOH +-const int STX = 2; // STX +-const int ETX = 3; // ETX +-const int EOT = 4; // EOT +-const int ENQ = 5; // ENQ +-const int ACK = 6; // ACK +-const int BEL = 7; // BEL +-const int BS = 8; // BS +-const int HT = 9; // HT +-const int NL = 10; // NL +-const int VT = 11; // VT +-const int NP = 12; // NP +-const int CR = 13; // CR +-const int SO = 14; // SO +-const int SI = 15; // SI +-const int DLE = 16; // DLE +-const int DC1 = 17; // DC1 +-const int DC2 = 18; // DC2 +-const int DC3 = 19; // DC3 +-const int DC4 = 20; // DC4 +-const int NAK = 21; // NAK +-const int SYN = 22; // SYN +-const int ETB = 23; // ETB +-const int CAN = 24; // CAN +-const int EM = 25; // EM +-const int SUB = 26; // SUB +-const int ESC = 27; // ESC +-const int FS = 28; // FS +-const int GS = 29; // GS +-const int RS = 30; // RS +-const int US = 31; // US +-const int space = 32; // normal space +-const int exclamation = 33; // ! +-const int quote = 34; // " +-const int hashsign = 35; // # +-const int dollar = 36; // $ +-const int percent = 37; // % +-const int ampersand = 38; // & +-const int apostrophe = 39; // ' +-const int openbracket = 40; // ( +-const int closebracket= 41; // ) +-const int asterisk = 42; // * +-const int plus = 43; // + +-const int comma = 44; // , +-const int minus = 45; // - +-const int period = 46; // . +-const int slash = 47; // / +-const int digit0 = 48; // 0 +-const int digit1 = 49; // 1 +-const int digit2 = 50; // 2 +-const int digit3 = 51; // 3 +-const int digit4 = 52; // 4 +-const int digit5 = 53; // 5 +-const int digit6 = 54; // 6 +-const int digit7 = 55; // 7 +-const int digit8 = 56; // 8 +-const int digit9 = 57; // 9 +-const int colon = 58; // : +-const int semicolon = 59; // ; +-const int lessthan = 60; // < +-const int equals = 61; // = +-const int greaterthan = 62; // > +-const int question = 63; // ? +-const int at = 64; // @ +-const int Aletter = 65; // A +-const int Bletter = 66; // B +-const int Cletter = 67; // C +-const int Dletter = 68; // D +-const int Eletter = 69; // E +-const int Fletter = 70; // F +-const int Gletter = 71; // G +-const int Hletter = 72; // H +-const int Iletter = 73; // I +-const int Jletter = 74; // J +-const int Kletter = 75; // K +-const int Lletter = 76; // L +-const int Mletter = 77; // M +-const int Nletter = 78; // N +-const int Oletter = 79; // O +-const int Pletter = 80; // P +-const int Qletter = 81; // Q +-const int Rletter = 82; // R +-const int Sletter = 83; // S +-const int Tletter = 84; // T +-const int Uletter = 85; // U +-const int Vletter = 86; // V +-const int Wletter = 87; // W +-const int Xletter = 88; // X +-const int Yletter = 89; // Y +-const int Zletter = 90; // Z +-const int opensquare = 91; // [ +-const int backslash = 92; // +-const int closesquare = 93; // ] +-const int pointer = 94; // ^ +-const int underscore = 95; // _ +-const int grave = 96; // ` +-const int aletter = 97; // a +-const int bletter = 98; // b +-const int cletter = 99; // c +-const int dletter = 100; // d +-const int eletter = 101; // e +-const int fletter = 102; // f +-const int gletter = 103; // g +-const int hletter = 104; // h +-const int iletter = 105; // i +-const int jletter = 106; // j +-const int kletter = 107; // k +-const int lletter = 108; // l +-const int mletter = 109; // m +-const int nletter = 110; // n +-const int oletter = 111; // o +-const int pletter = 112; // p +-const int qletter = 113; // q +-const int rletter = 114; // r +-const int sletter = 115; // s +-const int tletter = 116; // t +-const int uletter = 117; // u +-const int vletter = 118; // v +-const int wletter = 119; // w +-const int xletter = 120; // x +-const int yletter = 121; // y +-const int zletter = 122; // z +-const int leftbrace = 123; // { +-const int verticalbar = 124; // | +-const int rightbrace = 125; // } +-const int tilde = 126; // ~ ++const char NUL = 0; // NUL ++const char SOH = 1; // SOH ++const char STX = 2; // STX ++const char ETX = 3; // ETX ++const char EOT = 4; // EOT ++const char ENQ = 5; // ENQ ++const char ACK = 6; // ACK ++const char BEL = 7; // BEL ++const char BS = 8; // BS ++const char HT = 9; // HT ++const char NL = 10; // NL ++const char VT = 11; // VT ++const char NP = 12; // NP ++const char CR = 13; // CR ++const char SO = 14; // SO ++const char SI = 15; // SI ++const char DLE = 16; // DLE ++const char DC1 = 17; // DC1 ++const char DC2 = 18; // DC2 ++const char DC3 = 19; // DC3 ++const char DC4 = 20; // DC4 ++const char NAK = 21; // NAK ++const char SYN = 22; // SYN ++const char ETB = 23; // ETB ++const char CAN = 24; // CAN ++const char EM = 25; // EM ++const char SUB = 26; // SUB ++const char ESC = 27; // ESC ++const char FS = 28; // FS ++const char GS = 29; // GS ++const char RS = 30; // RS ++const char US = 31; // US ++const char space = 32; // normal space ++const char exclamation = 33; // ! ++const char quote = 34; // " ++const char hashsign = 35; // # ++const char dollar = 36; // $ ++const char percent = 37; // % ++const char ampersand = 38; // & ++const char apostrophe = 39; // ' ++const char openbracket = 40; // ( ++const char closebracket= 41; // ) ++const char asterisk = 42; // * ++const char plus = 43; // + ++const char comma = 44; // , ++const char minus = 45; // - ++const char period = 46; // . ++const char slash = 47; // / ++const char digit0 = 48; // 0 ++const char digit1 = 49; // 1 ++const char digit2 = 50; // 2 ++const char digit3 = 51; // 3 ++const char digit4 = 52; // 4 ++const char digit5 = 53; // 5 ++const char digit6 = 54; // 6 ++const char digit7 = 55; // 7 ++const char digit8 = 56; // 8 ++const char digit9 = 57; // 9 ++const char colon = 58; // : ++const char semicolon = 59; // ; ++const char lessthan = 60; // < ++const char equals = 61; // = ++const char greaterthan = 62; // > ++const char question = 63; // ? ++const char at = 64; // @ ++const char Aletter = 65; // A ++const char Bletter = 66; // B ++const char Cletter = 67; // C ++const char Dletter = 68; // D ++const char Eletter = 69; // E ++const char Fletter = 70; // F ++const char Gletter = 71; // G ++const char Hletter = 72; // H ++const char Iletter = 73; // I ++const char Jletter = 74; // J ++const char Kletter = 75; // K ++const char Lletter = 76; // L ++const char Mletter = 77; // M ++const char Nletter = 78; // N ++const char Oletter = 79; // O ++const char Pletter = 80; // P ++const char Qletter = 81; // Q ++const char Rletter = 82; // R ++const char Sletter = 83; // S ++const char Tletter = 84; // T ++const char Uletter = 85; // U ++const char Vletter = 86; // V ++const char Wletter = 87; // W ++const char Xletter = 88; // X ++const char Yletter = 89; // Y ++const char Zletter = 90; // Z ++const char opensquare = 91; // [ ++const char backslash = 92; // ++const char closesquare = 93; // ] ++const char pointer = 94; // ^ ++const char underscore = 95; // _ ++const char grave = 96; // ` ++const char aletter = 97; // a ++const char bletter = 98; // b ++const char cletter = 99; // c ++const char dletter = 100; // d ++const char eletter = 101; // e ++const char fletter = 102; // f ++const char gletter = 103; // g ++const char hletter = 104; // h ++const char iletter = 105; // i ++const char jletter = 106; // j ++const char kletter = 107; // k ++const char lletter = 108; // l ++const char mletter = 109; // m ++const char nletter = 110; // n ++const char oletter = 111; // o ++const char pletter = 112; // p ++const char qletter = 113; // q ++const char rletter = 114; // r ++const char sletter = 115; // s ++const char tletter = 116; // t ++const char uletter = 117; // u ++const char vletter = 118; // v ++const char wletter = 119; // w ++const char xletter = 120; // x ++const char yletter = 121; // y ++const char zletter = 122; // z ++const char leftbrace = 123; // { ++const char verticalbar = 124; // | ++const char rightbrace = 125; // } ++const char tilde = 126; // ~ + + +-const int DEL = 127; // DEL +-const int PAD = 128; // -- +-const int HOP = 129; // -- +-const int BPH = 130; // -- +-const int NBH = 131; // -- +-const int IND = 132; // -- +-const int NEL = 133; // -- +-const int SSA = 134; // -- +-const int ESA = 135; // -- +-const int HTS = 136; // -- +-const int HTJ = 137; // -- +-const int VTS = 138; // -- +-const int PLD = 139; // -- +-const int PLU = 140; // -- +-const int RI = 141; // -- +-const int SS2 = 142; // -- +-const int SS3 = 143; // -- +-const int DCS = 144; // -- +-const int PU1 = 145; // -- +-const int PU2 = 146; // -- +-const int STS = 147; // -- +-const int CCH = 148; // -- +-const int MW = 149; // -- +-const int SPA = 150; // -- +-const int EPA = 151; // -- +-const int SOS = 152; // -- +-const int SGCI= 153; // -- +-const int SCI = 154; // -- +-const int CSI = 155; // -- +-const int ST = 156; // -- +-const int OSC = 157; // -- +-const int PM = 158; // -- +-const int APC = 159; // -- ++const char DEL = 127; // DEL ++const char PAD = 128; // -- ++const char HOP = 129; // -- ++const char BPH = 130; // -- ++const char NBH = 131; // -- ++const char IND = 132; // -- ++const char NEL = 133; // -- ++const char SSA = 134; // -- ++const char ESA = 135; // -- ++const char HTS = 136; // -- ++const char HTJ = 137; // -- ++const char VTS = 138; // -- ++const char PLD = 139; // -- ++const char PLU = 140; // -- ++const char RI = 141; // -- ++const char SS2 = 142; // -- ++const char SS3 = 143; // -- ++const char DCS = 144; // -- ++const char PU1 = 145; // -- ++const char PU2 = 146; // -- ++const char STS = 147; // -- ++const char CCH = 148; // -- ++const char MW = 149; // -- ++const char SPA = 150; // -- ++const char EPA = 151; // -- ++const char SOS = 152; // -- ++const char SGCI= 153; // -- ++const char SCI = 154; // -- ++const char CSI = 155; // -- ++const char ST = 156; // -- ++const char OSC = 157; // -- ++const char PM = 158; // -- ++const char APC = 159; // -- + + +-const int nbsp = 160; // non-breaking space +-const int iexcl = 161; // ¡ +-const int cent = 162; // ¢ +-const int pound = 163; // £ +-const int curren = 164; // ¤ +-const int yen = 165; // ¥ +-const int brvbar = 166; // ¦ +-const int sect = 167; // § +-const int uml = 168; // ¨ +-const int copyr = 169; // © +-const int ordf = 170; // ª +-const int laquo = 171; // « +-const int notsign= 172; // ¬ +-const int shy = 173; // ­ +-const int reg = 174; // ® +-const int macr = 175; // ¯ +-const int deg = 176; // ° +-const int plusmn = 177; // ± +-const int sup2 = 178; // ² +-const int sup3 = 179; // ³ +-const int acute = 180; // ´ +-const int micro = 181; // µ +-const int para = 182; // ¶ +-const int middot = 183; // · +-const int cedil = 184; // ¸ +-const int sup1 = 185; // ¹ +-const int ordm = 186; // º +-const int raquo = 187; // » +-const int frac14 = 188; // ¼ +-const int frac12 = 189; // ½ +-const int frac34 = 190; // ¾ +-const int iquest = 191; // ¿ +-const int Agrave = 192; // À +-const int Aacute = 193; // Á +-const int Acirc = 194; // Â +-const int Atilde = 195; // Ã +-const int Auml = 196; // Ä +-const int Aring = 197; // Å +-const int AElig = 198; // Æ +-const int Ccedil = 199; // Ç +-const int Egrave = 200; // È +-const int Eacute = 201; // É +-const int Ecirc = 202; // Ê +-const int Euml = 203; // Ë +-const int Igrave = 204; // Ì +-const int Iacute = 205; // Í +-const int Icirc = 206; // Î +-const int Iuml = 207; // Ï +-const int ETH = 208; // Ð +-const int Ntilde = 209; // Ñ +-const int Ograve = 210; // Ò +-const int Oacute = 211; // Ó +-const int Ocirc = 212; // Ô +-const int Otilde = 213; // Õ +-const int Ouml = 214; // Ö +-const int times = 215; // × +-const int Oslash = 216; // Ø +-const int Ugrave = 217; // Ù +-const int Uacute = 218; // Ú +-const int Ucirc = 219; // Û +-const int Uuml = 220; // Ü +-const int Yacute = 221; // Ý +-const int THORN = 222; // Þ +-const int szlig = 223; // ß +-const int agrave = 224; // à +-const int aacute = 225; // á +-const int acirc = 226; // â +-const int atilde = 227; // ã +-const int auml = 228; // ä +-const int aring = 229; // å +-const int aelig = 230; // æ +-const int ccedil = 231; // ç +-const int egrave = 232; // è +-const int eacute = 233; // é +-const int ecirc = 234; // ê +-const int euml = 235; // ë +-const int igrave = 236; // ì +-const int iacute = 237; // í +-const int icirc = 238; // î +-const int iuml = 239; // ï +-const int eth = 240; // ð +-const int ntilde = 241; // ñ +-const int ograve = 242; // ò +-const int oacute = 243; // ó +-const int ocirc = 244; // ô +-const int otilde = 245; // õ +-const int ouml = 246; // ö +-const int divide = 247; // ÷ +-const int oslash = 248; // ø +-const int ugrave = 249; // ù +-const int uacute = 250; // ú +-const int ucirc = 251; // û +-const int uuml = 252; // ü +-const int yacute = 253; // ý +-const int thorn = 254; // þ +-const int yuml = 255; // ÿ ++const char nbsp = 160; // non-breaking space ++const char iexcl = 161; // ¡ ++const char cent = 162; // ¢ ++const char pound = 163; // £ ++const char curren = 164; // ¤ ++const char yen = 165; // ¥ ++const char brvbar = 166; // ¦ ++const char sect = 167; // § ++const char uml = 168; // ¨ ++const char copyr = 169; // © ++const char ordf = 170; // ª ++const char laquo = 171; // « ++const char notsign= 172; // ¬ ++const char shy = 173; // ­ ++const char reg = 174; // ® ++const char macr = 175; // ¯ ++const char deg = 176; // ° ++const char plusmn = 177; // ± ++const char sup2 = 178; // ² ++const char sup3 = 179; // ³ ++const char acute = 180; // ´ ++const char micro = 181; // µ ++const char para = 182; // ¶ ++const char middot = 183; // · ++const char cedil = 184; // ¸ ++const char sup1 = 185; // ¹ ++const char ordm = 186; // º ++const char raquo = 187; // » ++const char frac14 = 188; // ¼ ++const char frac12 = 189; // ½ ++const char frac34 = 190; // ¾ ++const char iquest = 191; // ¿ ++const char Agrave = 192; // À ++const char Aacute = 193; // Á ++const char Acirc = 194; // Â ++const char Atilde = 195; // Ã ++const char Auml = 196; // Ä ++const char Aring = 197; // Å ++const char AElig = 198; // Æ ++const char Ccedil = 199; // Ç ++const char Egrave = 200; // È ++const char Eacute = 201; // É ++const char Ecirc = 202; // Ê ++const char Euml = 203; // Ë ++const char Igrave = 204; // Ì ++const char Iacute = 205; // Í ++const char Icirc = 206; // Î ++const char Iuml = 207; // Ï ++const char ETH = 208; // Ð ++const char Ntilde = 209; // Ñ ++const char Ograve = 210; // Ò ++const char Oacute = 211; // Ó ++const char Ocirc = 212; // Ô ++const char Otilde = 213; // Õ ++const char Ouml = 214; // Ö ++const char times = 215; // × ++const char Oslash = 216; // Ø ++const char Ugrave = 217; // Ù ++const char Uacute = 218; // Ú ++const char Ucirc = 219; // Û ++const char Uuml = 220; // Ü ++const char Yacute = 221; // Ý ++const char THORN = 222; // Þ ++const char szlig = 223; // ß ++const char agrave = 224; // à ++const char aacute = 225; // á ++const char acirc = 226; // â ++const char atilde = 227; // ã ++const char auml = 228; // ä ++const char aring = 229; // å ++const char aelig = 230; // æ ++const char ccedil = 231; // ç ++const char egrave = 232; // è ++const char eacute = 233; // é ++const char ecirc = 234; // ê ++const char euml = 235; // ë ++const char igrave = 236; // ì ++const char iacute = 237; // í ++const char icirc = 238; // î ++const char iuml = 239; // ï ++const char eth = 240; // ð ++const char ntilde = 241; // ñ ++const char ograve = 242; // ò ++const char oacute = 243; // ó ++const char ocirc = 244; // ô ++const char otilde = 245; // õ ++const char ouml = 246; // ö ++const char divide = 247; // ÷ ++const char oslash = 248; // ø ++const char ugrave = 249; // ù ++const char uacute = 250; // ú ++const char ucirc = 251; // û ++const char uuml = 252; // ü ++const char yacute = 253; // ý ++const char thorn = 254; // þ ++const char yuml = 255; // ÿ + + + #endif // ISO8859_1 + diff --git a/deskutils/presage/files/patch-opensuse_python3 b/deskutils/presage/files/patch-opensuse_python3 new file mode 100644 index 000000000000..76c5d9b67e0b --- /dev/null +++ b/deskutils/presage/files/patch-opensuse_python3 @@ -0,0 +1,1169 @@ +Index: presage-0.9.1/bindings/python/Makefile.am +=================================================================== +--- bindings/python/Makefile.am.orig ++++ 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 +=================================================================== +--- bindings/python/presage_python_demo.in.orig ++++ bindings/python/presage_python_demo.in +@@ -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 +=================================================================== +--- configure.ac.orig ++++ 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 +=================================================================== +--- apps/python/pyprompter.in.orig ++++ apps/python/pyprompter.in +@@ -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 +=================================================================== +--- apps/python/prompter/prompter.py.orig ++++ 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 +=================================================================== +--- apps/dbus/presage_dbus_python_demo.in.orig ++++ apps/dbus/presage_dbus_python_demo.in +@@ -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 +=================================================================== +--- apps/dbus/presage_dbus_service.py.orig ++++ apps/dbus/presage_dbus_service.py +@@ -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 +=================================================================== +--- apps/python/presagemate/presagemate.py.orig ++++ apps/python/presagemate/presagemate.py +@@ -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 +=================================================================== +--- apps/python/pypresagemate.in.orig ++++ apps/python/pypresagemate.in +@@ -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)) diff --git a/deskutils/presage/pkg-descr b/deskutils/presage/pkg-descr new file mode 100644 index 000000000000..cfa77743ca1e --- /dev/null +++ b/deskutils/presage/pkg-descr @@ -0,0 +1,11 @@ +Presage is an intelligent predictive text entry system. + +Presage (formerly known as Soothsayer) generates predictions by modelling +natural language as a combination of redundant information sources. Presage +computes probabilities for words which are most likely to be entered next by +merging predictions generated by the different predictive algorithms. Presage’s +modular and extensible architecture allows its language model to be extended +and customized to utilize statistical, syntactic, and semantic predictive +algorithms. + +WWW: https://presage.sourceforge.io/ diff --git a/deskutils/presage/pkg-plist b/deskutils/presage/pkg-plist new file mode 100644 index 000000000000..8747866534f4 --- /dev/null +++ b/deskutils/presage/pkg-plist @@ -0,0 +1,33 @@ +bin/presage_dbus_python_demo +bin/presage_dbus_service +bin/presage_demo +bin/presage_demo_text +bin/presage_simulator +bin/text2ngram +etc/presage.xml +include/presage.h +include/presageCallback.h +include/presageException.h +lib/libpresage.so +lib/libpresage.so.1 +lib/libpresage.so.1.1.1 +%%PYTHON_SITELIBDIR%%/presage_dbus_service.py +%%PYTHON_SITELIBDIR%%/presage_dbus_service.pyc +%%PYTHON_SITELIBDIR%%/presage_dbus_service.pyo +man/man1/presage_dbus_python_demo.1.gz +man/man1/presage_dbus_service.1.gz +man/man1/presage_demo.1.gz +man/man1/presage_demo_text.1.gz +man/man1/presage_simulator.1.gz +man/man1/text2ngram.1.gz +share/dbus-1/services/org.gnome.presage.service +%%DATADIR%%/abbreviations_en.txt +%%DATADIR%%/abbreviations_it.txt +%%DATADIR%%/database_en.db +%%DATADIR%%/database_es.db +%%DATADIR%%/database_it.db +%%DATADIR%%/getting_started.txt +%%DATADIR%%/presage.png +%%DATADIR%%/presage.svg +%%DATADIR%%/presage.xpm +%%DATADIR%%/python_binding.txt