summaryrefslogtreecommitdiff
path: root/gi/pygtkcompat.py
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2017-07-12 08:39:06 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2017-07-12 08:39:09 +0900
commit23384e73cb73bc8875384183d5916e33af4196d4 (patch)
treebe92faf8967d24f2be88a92b4f7506e9d65fbf3d /gi/pygtkcompat.py
parent705bf16f6a14a07ccdc0c1a5fe1b31d92c3bd96e (diff)
downloadpygobject2-23384e73cb73bc8875384183d5916e33af4196d4.tar.gz
pygobject2-23384e73cb73bc8875384183d5916e33af4196d4.tar.bz2
pygobject2-23384e73cb73bc8875384183d5916e33af4196d4.zip
Imported Upstream version 3.10.0
Change-Id: Ib97d541be276a6a70923c214755d8273c4437a2f Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'gi/pygtkcompat.py')
-rw-r--r--gi/pygtkcompat.py459
1 files changed, 25 insertions, 434 deletions
diff --git a/gi/pygtkcompat.py b/gi/pygtkcompat.py
index 26f803a..4a9c4be 100644
--- a/gi/pygtkcompat.py
+++ b/gi/pygtkcompat.py
@@ -1,436 +1,27 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# vim: tabstop=4 shiftwidth=4 expandtab
-#
-# Copyright (C) 2011-2012 Johan Dahlin <johan@gnome.org>
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-"""
-PyGTK compatibility layer.
-
-This modules goes a little bit longer to maintain PyGTK compatibility than
-the normal overrides system.
-
-It is recommended to not depend on this layer, but only use it as an
-intermediate step when porting your application to PyGI.
-
-Compatibility might never be 100%, but the aim is to make it possible to run
-a well behaved PyGTK application mostly unmodified on top of PyGI.
-
-"""
-
-import sys
+from __future__ import absolute_import
import warnings
-try:
- # Python 3
- from collections import UserList
- from imp import reload
-except ImportError:
- # Python 2 ships that in a different module
- from UserList import UserList
-
-import gi
-from gi.repository import GObject
-
-
-def _install_enums(module, dest=None, strip=''):
- if dest is None:
- dest = module
- modname = dest.__name__.rsplit('.', 1)[1].upper()
- for attr in dir(module):
- try:
- obj = getattr(module, attr, None)
- except:
- continue
- try:
- if issubclass(obj, GObject.GEnum):
- for value, enum in obj.__enum_values__.items():
- name = enum.value_name
- name = name.replace(modname + '_', '')
- if strip and name.startswith(strip):
- name = name[len(strip):]
- setattr(dest, name, enum)
- except TypeError:
- continue
- try:
- if issubclass(obj, GObject.GFlags):
- for value, flag in obj.__flags_values__.items():
- for name in flag.value_names:
- name = name.replace(modname + '_', '')
- setattr(dest, name, flag)
- except TypeError:
- continue
-
-
-def enable():
- # gobject
- from gi.repository import GLib
- sys.modules['glib'] = GLib
-
- # gobject
- from gi.repository import GObject
- sys.modules['gobject'] = GObject
- from gi._gobject import propertyhelper
- sys.modules['gobject.propertyhelper'] = propertyhelper
-
- # gio
- from gi.repository import Gio
- sys.modules['gio'] = Gio
-
-_unset = object()
-
-
-def enable_gtk(version='2.0'):
- # set the default encoding like PyGTK
- reload(sys)
- if sys.version_info < (3,0):
- sys.setdefaultencoding('utf-8')
-
- # atk
- gi.require_version('Atk', '1.0')
- from gi.repository import Atk
- sys.modules['atk'] = Atk
- _install_enums(Atk)
-
- # pango
- gi.require_version('Pango', '1.0')
- from gi.repository import Pango
- sys.modules['pango'] = Pango
- _install_enums(Pango)
-
- # pangocairo
- gi.require_version('PangoCairo', '1.0')
- from gi.repository import PangoCairo
- sys.modules['pangocairo'] = PangoCairo
-
- # gdk
- gi.require_version('Gdk', version)
- gi.require_version('GdkPixbuf', '2.0')
- from gi.repository import Gdk
- from gi.repository import GdkPixbuf
- sys.modules['gtk.gdk'] = Gdk
- _install_enums(Gdk)
- _install_enums(GdkPixbuf, dest=Gdk)
- Gdk._2BUTTON_PRESS = 5
- Gdk.BUTTON_PRESS = 4
-
- Gdk.screen_get_default = Gdk.Screen.get_default
- Gdk.Pixbuf = GdkPixbuf.Pixbuf
- Gdk.pixbuf_new_from_file = GdkPixbuf.Pixbuf.new_from_file
- Gdk.PixbufLoader = GdkPixbuf.PixbufLoader.new_with_type
-
- orig_get_frame_extents = Gdk.Window.get_frame_extents
-
- def get_frame_extents(window):
- try:
- try:
- rect = Gdk.Rectangle(0, 0, 0, 0)
- except TypeError:
- rect = Gdk.Rectangle()
- orig_get_frame_extents(window, rect)
- except TypeError:
- rect = orig_get_frame_extents(window)
- return rect
- Gdk.Window.get_frame_extents = get_frame_extents
-
- orig_get_origin = Gdk.Window.get_origin
- def get_origin(self):
- return orig_get_origin(self)[1:]
- Gdk.Window.get_origin = get_origin
-
- # gtk
- gi.require_version('Gtk', version)
- from gi.repository import Gtk
- sys.modules['gtk'] = Gtk
- Gtk.gdk = Gdk
-
- Gtk.pygtk_version = (2, 99, 0)
-
- Gtk.gtk_version = (Gtk.MAJOR_VERSION,
- Gtk.MINOR_VERSION,
- Gtk.MICRO_VERSION)
- _install_enums(Gtk)
-
- # Action
-
- def set_tool_item_type(menuaction, gtype):
- warnings.warn('set_tool_item_type() is not supported',
- DeprecationWarning, stacklevel=2)
- Gtk.Action.set_tool_item_type = classmethod(set_tool_item_type)
-
- # Alignment
-
- orig_Alignment = Gtk.Alignment
-
- class Alignment(orig_Alignment):
- def __init__(self, xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0):
- orig_Alignment.__init__(self)
- self.props.xalign = xalign
- self.props.yalign = yalign
- self.props.xscale = xscale
- self.props.yscale = yscale
-
- Gtk.Alignment = Alignment
-
- # Box
-
- orig_pack_end = Gtk.Box.pack_end
-
- def pack_end(self, child, expand=True, fill=True, padding=0):
- orig_pack_end(self, child, expand, fill, padding)
- Gtk.Box.pack_end = pack_end
-
- orig_pack_start = Gtk.Box.pack_start
-
- def pack_start(self, child, expand=True, fill=True, padding=0):
- orig_pack_start(self, child, expand, fill, padding)
- Gtk.Box.pack_start = pack_start
-
- # TreeViewColumn
-
- orig_tree_view_column_pack_end = Gtk.TreeViewColumn.pack_end
- def tree_view_column_pack_end(self, cell, expand=True):
- orig_tree_view_column_pack_end(self, cell, expand)
- Gtk.TreeViewColumn.pack_end = tree_view_column_pack_end
-
- orig_tree_view_column_pack_start = Gtk.TreeViewColumn.pack_start
- def tree_view_column_pack_start(self, cell, expand=True):
- orig_tree_view_column_pack_start(self, cell, expand)
- Gtk.TreeViewColumn.pack_start = tree_view_column_pack_start
-
- # TreeView
-
- def insert_column_with_attributes(view, position, title, cell, *args, **kwargs):
- pass
- Gtk.TreeView.insert_column_with_attributes = insert_column_with_attributes
-
- # CellLayout
-
- orig_cell_pack_end = Gtk.CellLayout.pack_end
-
- def cell_pack_end(self, cell, expand=True):
- orig_cell_pack_end(self, cell, expand)
- Gtk.CellLayout.pack_end = cell_pack_end
-
- orig_cell_pack_start = Gtk.CellLayout.pack_start
-
- def cell_pack_start(self, cell, expand=True):
- orig_cell_pack_start(self, cell, expand)
- Gtk.CellLayout.pack_start = cell_pack_start
-
- orig_set_cell_data_func = Gtk.CellLayout.set_cell_data_func
-
- def set_cell_data_func(self, cell, func, user_data=_unset):
- def callback(*args):
- if args[-1] == _unset:
- args = args[:-1]
- return func(*args)
- orig_set_cell_data_func(self, cell, callback, user_data)
- Gtk.CellLayout.set_cell_data_func = set_cell_data_func
-
- # CellRenderer
-
- class GenericCellRenderer(Gtk.CellRenderer):
- pass
- Gtk.GenericCellRenderer = GenericCellRenderer
-
- # ComboBox
-
- orig_combo_row_separator_func = Gtk.ComboBox.set_row_separator_func
-
- def combo_row_separator_func(self, func, user_data=_unset):
- def callback(*args):
- if args[-1] == _unset:
- args = args[:-1]
- return func(*args)
- orig_combo_row_separator_func(self, callback, user_data)
- Gtk.ComboBox.set_row_separator_func = combo_row_separator_func
-
- # Container
-
- def install_child_property(container, flag, pspec):
- warnings.warn('install_child_property() is not supported',
- DeprecationWarning, stacklevel=2)
- Gtk.Container.install_child_property = classmethod(install_child_property)
-
- def new_text():
- combo = Gtk.ComboBox()
- model = Gtk.ListStore(str)
- combo.set_model(model)
- combo.set_entry_text_column(0)
- return combo
- Gtk.combo_box_new_text = new_text
- def append_text(self, text):
- model = self.get_model()
- model.append([text])
- Gtk.ComboBox.append_text = append_text
- Gtk.expander_new_with_mnemonic = Gtk.Expander.new_with_mnemonic
- Gtk.icon_theme_get_default = Gtk.IconTheme.get_default
- Gtk.image_new_from_pixbuf = Gtk.Image.new_from_pixbuf
- Gtk.image_new_from_stock = Gtk.Image.new_from_stock
- Gtk.settings_get_default = Gtk.Settings.get_default
- Gtk.window_set_default_icon = Gtk.Window.set_default_icon
-
- # Scale
-
- orig_HScale = Gtk.HScale
- orig_VScale = Gtk.VScale
-
- class HScale(orig_HScale):
- def __init__(self, adjustment=None):
- orig_HScale.__init__(self, adjustment=adjustment)
- Gtk.HScale = HScale
-
- class VScale(orig_VScale):
- def __init__(self, adjustment=None):
- orig_VScale.__init__(self, adjustment=adjustment)
- Gtk.VScale = VScale
-
- Gtk.stock_add = lambda items: None
-
- # Widget
-
- Gtk.widget_get_default_direction = Gtk.Widget.get_default_direction
- orig_size_request = Gtk.Widget.size_request
- def size_request(widget):
- class SizeRequest(UserList):
- def __init__(self, req):
- self.height = req.height
- self.width = req.width
- UserList.UserList.__init__(self, [self.width,
- self.height])
- return SizeRequest(orig_size_request(widget))
- Gtk.Widget.size_request = size_request
- Gtk.Widget.hide_all = Gtk.Widget.hide
-
- class BaseGetter(object):
- def __init__(self, context):
- self.context = context
-
- def __getitem__(self, state):
- color = self.context.get_background_color(state)
- return Gdk.Color(red=color.red,
- green=color.green,
- blue=color.blue)
-
- class Styles(object):
- def __init__(self, widget):
- context = widget.get_style_context()
- self.base = BaseGetter(context)
- self.black = Gdk.Color(red=0, green=0, blue=0)
-
- class StyleDescriptor(object):
- def __get__(self, instance, class_):
- return Styles(instance)
- Gtk.Widget.style = StyleDescriptor()
-
- # gtk.unixprint
- class UnixPrint(object):
- pass
- unixprint = UnixPrint()
- sys.modules['gtkunixprint'] = unixprint
-
- # gtk.keysyms
- class Keysyms(object):
- pass
- keysyms = Keysyms()
- sys.modules['gtk.keysyms'] = keysyms
- Gtk.keysyms = keysyms
- for name in dir(Gdk):
- if name.startswith('KEY_'):
- target = name[4:]
- if target[0] in '0123456789':
- target = '_' + target
- value = getattr(Gdk, name)
- setattr(keysyms, target, value)
-
-
-def enable_vte():
- gi.require_version('Vte', '0.0')
- from gi.repository import Vte
- sys.modules['vte'] = Vte
-
-
-def enable_poppler():
- gi.require_version('Poppler', '0.18')
- from gi.repository import Poppler
- sys.modules['poppler'] = Poppler
- Poppler.pypoppler_version = (1, 0, 0)
-
-
-def enable_webkit(version='1.0'):
- gi.require_version('WebKit', version)
- from gi.repository import WebKit
- sys.modules['webkit'] = WebKit
- WebKit.WebView.get_web_inspector = WebKit.WebView.get_inspector
-
-
-def enable_gudev():
- gi.require_version('GUdev', '1.0')
- from gi.repository import GUdev
- sys.modules['gudev'] = GUdev
-
-def enable_gst():
- gi.require_version('Gst', '0.10')
- from gi.repository import Gst
- sys.modules['gst'] = Gst
- _install_enums(Gst)
- Gst.registry_get_default = Gst.Registry.get_default
- Gst.element_register = Gst.Element.register
- Gst.element_factory_make = Gst.ElementFactory.make
- Gst.caps_new_any = Gst.Caps.new_any
- Gst.get_pygst_version = lambda : (0, 10, 19)
- Gst.get_gst_version = lambda : (0, 10, 40)
-
- from gi.repository import GstInterfaces
- sys.modules['gst.interfaces'] = GstInterfaces
- _install_enums(GstInterfaces)
-
- from gi.repository import GstAudio
- sys.modules['gst.audio'] = GstAudio
- _install_enums(GstAudio)
-
- from gi.repository import GstVideo
- sys.modules['gst.video'] = GstVideo
- _install_enums(GstVideo)
-
- from gi.repository import GstBase
- sys.modules['gst.base'] = GstBase
- _install_enums(GstBase)
-
- Gst.BaseTransform = GstBase.BaseTransform
- Gst.BaseSink = GstBase.BaseSink
-
- from gi.repository import GstController
- sys.modules['gst.controller'] = GstController
- _install_enums(GstController, dest=Gst)
-
- from gi.repository import GstPbutils
- sys.modules['gst.pbutils'] = GstPbutils
- _install_enums(GstPbutils)
-
-
-def enable_goocanvas():
- gi.require_version('GooCanvas', '2.0')
- from gi.repository import GooCanvas
- sys.modules['goocanvas'] = GooCanvas
- _install_enums(GooCanvas, strip='GOO_CANVAS_')
- GooCanvas.ItemSimple = GooCanvas.CanvasItemSimple
- GooCanvas.Item = GooCanvas.CanvasItem
- GooCanvas.Image = GooCanvas.CanvasImage
- GooCanvas.Group = GooCanvas.CanvasGroup
- GooCanvas.Rect = GooCanvas.CanvasRect
+from gi import PyGIDeprecationWarning
+
+warnings.warn('gi.pygtkcompat is being deprecated in favor of using "pygtkcompat" directly.',
+ PyGIDeprecationWarning)
+
+# pyflakes.ignore
+from pygtkcompat import (enable,
+ enable_gtk,
+ enable_vte,
+ enable_poppler,
+ enable_webkit,
+ enable_gudev,
+ enable_gst,
+ enable_goocanvas)
+
+
+__all__ = ['enable',
+ 'enable_gtk',
+ 'enable_vte',
+ 'enable_poppler',
+ 'enable_webkit',
+ 'enable_gudev',
+ 'enable_gst',
+ 'enable_goocanvas']