From 8ed9ea65d8d6a4be0523c90dba0cbb5e9342b4a2 Mon Sep 17 00:00:00 2001 From: Saumya-Mishra9129 Date: Mon, 23 Mar 2020 22:17:12 +0530 Subject: [PATCH 1/4] Port to Python3, GLib , Gtk3.0 --- activity/activity.info | 4 +-- frotz.py | 61 +++++++++++++++++++++--------------------- setup.py | 4 +-- 3 files changed, 35 insertions(+), 34 deletions(-) diff --git a/activity/activity.info b/activity/activity.info index 4d40e3a..c69c1b8 100644 --- a/activity/activity.info +++ b/activity/activity.info @@ -1,8 +1,8 @@ [Activity] name = Frotz activity_version = 3 -bundle_id = vu.lux.olpc.Frotz -exec = sugar-activity frotz.FrotzActivity +bundle_id = org.sugarlabs.Frotz +exec = sugar-activity3 frotz.FrotzActivity icon = activity-frotz mime_types = application/x-zmachine license = GPLv3+ diff --git a/frotz.py b/frotz.py index 72e683a..508dc3a 100644 --- a/frotz.py +++ b/frotz.py @@ -21,25 +21,26 @@ # # You should have received a copy of the GNU General Public License # along with Frotz.activity. If not, see . - +import gi +gi.require_version('Gtk', '3.0') import os import sys import logging from gettext import gettext as _ -import gtk -import gobject +from gi.repository import Gtk, Gdk,GLib import dbus -from sugar.activity import activity -from sugar.activity import activityfactory -from sugar import env -from sugar.graphics.toolbutton import ToolButton -from sugar.graphics.palette import Palette -import ConfigParser +from sugar3.activity import activity +from sugar3.activity import activityfactory +from sugar3 import env +from sugar3.graphics.toolbutton import ToolButton +from sugar3.graphics.palette import Palette +import configparser import os.path -import pango +from gi.repository import Pango +from gi.repository import Vte import platform, sys from ctypes import cdll @@ -54,7 +55,7 @@ vte = cdll.LoadLibrary("lib/%s/libvte.so.9" % vte_path) sys.path.append("lib/%s" % vte_path) -import vte + class FrotzActivity(activity.Activity): @@ -91,13 +92,13 @@ def __init__(self, handle): self.set_toolbox(toolbox) toolbox.show() - box = gtk.HBox(False, 4) + box = Gtk.HBox(False, 4) self._vte = VTE() self._vte.show() self._vte.connect("child-exited", self._quit_cb) - scrollbar = gtk.VScrollbar(self._vte.get_adjustment()) + scrollbar = Gtk.VScrollbar(self._vte.get_adjustment()) scrollbar.show() box.pack_start(self._vte) @@ -112,10 +113,10 @@ def __init__(self, handle): default_game_file = os.path.join(activity.get_bundle_path(), "Advent.z5") # when we return to the idle state, launch the default game # if read_file is called, that will override this - gobject.idle_add(self.start_game, default_game_file) + GLib.idle_add(self.start_game, default_game_file) def _quit_cb(self, foo=None): - print "Quitting..." + print("Quitting...") sys.exit(0) def start_game(self, game_file): @@ -143,10 +144,10 @@ def read_file(self, file_path): def open_url(self, url): """Ask the journal to open an URL for us.""" - from sugar import profile + from sugar3 import profile from shutil import rmtree - from sugar.datastore import datastore - from sugar.activity.activity import show_object_in_journal + from sugar3.datastore import datastore + from sugar3.activity.activity import show_object_in_journal from tempfile import mkdtemp tmpfolder = mkdtemp('.tmp', 'url', os.path.join(self.get_activity_root(), 'instance')) tmpfilepath = os.path.join(tmpfolder, 'url') @@ -154,8 +155,8 @@ def open_url(self, url): tmpfile = open(tmpfilepath, 'w') tmpfile.write(url) tmpfile.close() - os.chmod(tmpfolder, 0755) - os.chmod(tmpfilepath, 0755) + os.chmod(tmpfolder, 0o755) + os.chmod(tmpfilepath, 0o755) jobject = datastore.create() metadata = { 'title': url, @@ -165,7 +166,7 @@ def open_url(self, url): 'icon-color': profile.get_color().to_string(), 'mime_type': 'text/uri-list', } - for k, v in metadata.items(): + for k, v in list(metadata.items()): jobject.metadata[k] = v # the dict.update method is missing =( jobject.file_path = tmpfilepath datastore.write(jobject) @@ -187,28 +188,28 @@ def _paste_cb(self, button): self._vte.paste_clipboard() def __key_press_cb(self, window, event): - if event.state & gtk.gdk.CONTROL_MASK and event.state & gtk.gdk.SHIFT_MASK: + if event.state & Gtk.gdk.CONTROL_MASK and event.state & Gtk.gdk.SHIFT_MASK: - if gtk.gdk.keyval_name(event.keyval) == "C": + if Gtk.gdk.keyval_name(event.keyval) == "C": if self._vte.get_has_selection(): self._vte.copy_clipboard() return True - elif gtk.gdk.keyval_name(event.keyval) == "V": + elif Gtk.gdk.keyval_name(event.keyval) == "V": self._vte.paste_clipboard() return True return False -class VTE(vte.Terminal): +class VTE(Vte.Terminal): def __init__(self): - vte.Terminal.__init__(self) + Vte.Terminal.__init__(self) self._configure_vte() #os.chdir(os.environ["HOME"]) self.fork_command() def _configure_vte(self): - conf = ConfigParser.ConfigParser() + conf = configparser.ConfigParser() conf_file = os.path.join(env.get_profile_path(), 'terminalrc') if os.path.isfile(conf_file): @@ -223,7 +224,7 @@ def _configure_vte(self): else: font = 'Monospace 8' conf.set('terminal', 'font', font) - self.set_font(pango.FontDescription(font)) + self.set_font(Pango.FontDescription(font)) if conf.has_option('terminal', 'fg_color'): fg_color = conf.get('terminal', 'fg_color') @@ -235,8 +236,8 @@ def _configure_vte(self): else: bg_color = '#FFFFFF' conf.set('terminal', 'bg_color', bg_color) - self.set_colors(gtk.gdk.color_parse (fg_color), - gtk.gdk.color_parse (bg_color), + self.set_colors(Gtk.gdk.color_parse (fg_color), + Gtk.gdk.color_parse (bg_color), []) if conf.has_option('terminal', 'cursor_blink'): diff --git a/setup.py b/setup.py index 4029ad8..d70b502 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ #!/usr/bin/python -from sugar.activity import bundlebuilder -bundlebuilder.start('Frotz') +from sugar3.activity import bundlebuilder +bundlebuilder.start() From 3acdc820d1e1d9d6fa37f5a0753238b5c5ea98dd Mon Sep 17 00:00:00 2001 From: Saumya-Mishra9129 Date: Mon, 23 Mar 2020 23:09:23 +0530 Subject: [PATCH 2/4] added Vte version --- frotz.py | 1 + 1 file changed, 1 insertion(+) diff --git a/frotz.py b/frotz.py index 508dc3a..3a88546 100644 --- a/frotz.py +++ b/frotz.py @@ -23,6 +23,7 @@ # along with Frotz.activity. If not, see . import gi gi.require_version('Gtk', '3.0') +gi.require_version('Vte', '2.91') import os import sys From 3e662f30202dc744aef4804e142712b96ec39760 Mon Sep 17 00:00:00 2001 From: Saumya-Mishra9129 Date: Tue, 24 Mar 2020 00:05:34 +0530 Subject: [PATCH 3/4] libvte path changed --- frotz.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frotz.py b/frotz.py index 3a88546..b59cfcc 100644 --- a/frotz.py +++ b/frotz.py @@ -50,11 +50,11 @@ pass # FIXME else: if platform.architecture()[0] == '64bit': - vte_path = "x86-64" + vte_path = "x86_64" else: vte_path = "x86" - vte = cdll.LoadLibrary("lib/%s/libvte.so.9" % vte_path) - sys.path.append("lib/%s" % vte_path) + vte = cdll.LoadLibrary("/usr/lib/"+vte_path+"-linux-gnu/libvte-2.91.so.0") + sys.path.append("/usr/lib/"+vte_path+"-linux-gnu" ) From 24db0c48dc57b601d1c63288c2891fd939c7274b Mon Sep 17 00:00:00 2001 From: Saumya-Mishra9129 Date: Tue, 24 Mar 2020 00:13:03 +0530 Subject: [PATCH 4/4] added ToolbarBox import statement from sugar3.graphics --- frotz.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frotz.py b/frotz.py index b59cfcc..6e4b9db 100644 --- a/frotz.py +++ b/frotz.py @@ -34,6 +34,7 @@ import dbus from sugar3.activity import activity +from sugar3.graphics.toolbarbox import ToolbarBox from sugar3.activity import activityfactory from sugar3 import env from sugar3.graphics.toolbutton import ToolButton @@ -68,7 +69,7 @@ def __init__(self, handle): self.set_title(_('Frotz')) self.connect('key-press-event', self.__key_press_cb) - toolbox = activity.ActivityToolbox(self) + toolbox = ToolbarBox() self._edit_toolbar = activity.EditToolbar() toolbox.add_toolbar(_('Edit'), self._edit_toolbar)