[meld] Initial port of bin/meld
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Initial port of bin/meld
- Date: Mon, 14 Oct 2013 21:09:35 +0000 (UTC)
commit 5f35830ba066bb52c942a66a9a042c147395d9ee
Author: Kai Willadsen <kai willadsen gmail com>
Date: Sun Sep 29 05:36:02 2013 +1000
Initial port of bin/meld
bin/meld | 54 ++++++++++++++++++++++--------------------------------
1 files changed, 22 insertions(+), 32 deletions(-)
---
diff --git a/bin/meld b/bin/meld
index 58c9df1..4da0e54 100755
--- a/bin/meld
+++ b/bin/meld
@@ -41,13 +41,6 @@ class Unbuffered(object):
return getattr(self.file, attr)
sys.stdout = Unbuffered(sys.stdout)
-# Use pychecker if requested
-if "--pychecker" in sys.argv:
- sys.argv.remove("--pychecker")
- os.environ['PYCHECKER'] = "--no-argsused --no-classattr --stdlib"
- #'--blacklist=gettext,locale,pygtk,gtk,gtk.keysyms,popen2,random,difflib,filecmp,tempfile'
- import pychecker.checker
-
# Ignore session management
for ignore in "--sm-config-prefix", "--sm-client-id":
try:
@@ -78,11 +71,9 @@ import meld.conf
if uninstalled:
meld.conf.uninstalled()
-# i18n support
+# TODO: Possibly move to elib.intl
import gettext
_ = gettext.gettext
-# Locale setting in gtk.Builder appears somewhat broken under Python. See:
-# https://bugzilla.gnome.org/show_bug.cgi?id=574520
locale_domain = meld.conf.__package__
locale_dir = meld.conf.LOCALEDIR
@@ -97,12 +88,13 @@ try:
libintl = cdll.intl
libintl.bindtextdomain(locale_domain, locale_dir)
libintl.bind_textdomain_codeset(locale_domain, 'UTF-8')
+ del libintl
else:
locale.bindtextdomain(locale_domain, locale_dir)
locale.bind_textdomain_codeset(locale_domain, 'UTF-8')
except AttributeError as e:
- # Python builds linked without libintl doesn't have bindtextdomain(), which
- # causes gtk.Builder translations to fail.
+ # Python builds linked without libintl (i.e., OSX) don't have
+ # bindtextdomain(), which causes Gtk.Builder translations to fail.
print "Couldn't bind the translation domain. Some translations won't work."
print e
except locale.Error as e:
@@ -110,10 +102,10 @@ except locale.Error as e:
print e
-# Check requirements: Python 2.6, pygtk 2.14
-pyver = (2, 6)
-pygtkver = (2, 14, 0)
-pygobjectver = (2, 16, 0)
+pyver = (2, 7)
+gtk_requirement = (3, 8)
+glib_requirement = (2, 36, 0)
+
def missing_reqs(mod, ver, exception=None):
if isinstance(exception, ImportError):
@@ -128,28 +120,26 @@ if sys.version_info[:2] < pyver:
# gtk+ and related imports
try:
- import pygtk
- pygtk.require("2.0")
-except (ImportError, AssertionError) as e:
- missing_reqs("pygtk", pygtkver, e)
-
-try:
- import gtk
- assert gtk.pygtk_version >= pygtkver
+ # FIXME: Extra clause for gi
+ import gi
+ from gi.repository import Gtk
+ gi.require_version("Gtk", "3.0")
+ version = (Gtk.get_major_version(), Gtk.get_minor_version())
+ assert version >= gtk_requirement
except (ImportError, AssertionError) as e:
- missing_reqs("pygtk", pygtkver, e)
+ missing_reqs("GTK+", gtk_requirement, e)
try:
- import gobject
- assert gobject.pygobject_version >= pygobjectver
+ from gi.repository import GObject
+ assert GObject.glib_version >= glib_requirement
except (ImportError, AssertionError) as e:
- missing_reqs("pygobject", pygobjectver, e)
+ missing_reqs("GLib", glib_requirement, e)
-gobject.threads_init()
+GObject.threads_init()
icon_dir = os.path.join(meld.conf.DATADIR, "icons")
-gtk.icon_theme_get_default().append_search_path(icon_dir)
+Gtk.IconTheme.get_default().append_search_path(icon_dir)
rc_file = os.path.join(meld.conf.DATADIR, "gtkrc")
-gtk.rc_parse(rc_file)
+Gtk.rc_parse(rc_file)
def main():
@@ -165,7 +155,7 @@ def main():
app.create_window()
new_window = app.parse_args(sys.argv[1:])
if new_window or not already_running:
- gtk.main()
+ Gtk.main()
if profiling:
import profile
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]