# -*- Mode: Python; py-indent-offset: 4 -*- # pygtk - Python bindings for the GTK toolkit. # Copyright (C) 1998-2003 James Henstridge # 2004-2006 Johan Dahlin # # gtk/__init__.py: initialisation file for gtk package. # # 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 Street, Fifth Floor, Boston, MA 02110-1301 # USA import sys # For broken embedded programs which forgot to call Sys_SetArgv if not hasattr(sys, 'argv'): sys.argv = [] # load the required modules: import gobject as _gobject ver = getattr(_gobject, 'pygobject_version', ()) if ver < (2, 11, 1): raise ImportError( "PyGTK requires PyGObject 2.11.1 or higher, but %s was found" % (ver,)) if 'gtk._gtk' in sys.modules: _gtk = sys.modules['gtk._gtk'] else: from gtk import _gtk import gdk from gtk._lazyutils import LazyNamespace, LazyModule from gtk.deprecation import _Deprecated, _DeprecatedConstant def _init(): import sys try: sys_path = sys.path[:] try: _gtk.init_check() except RuntimeError, e: import warnings warnings.warn(str(e), _gtk.Warning) finally: # init_check calls PySys_SetArgv which calls sys.path.insert(0, ''), # which causes problems for pychecker, restore it if modified. if sys.path != sys_path: sys.path[:] = sys_path # install the default log handlers _gtk.add_log_handlers() keysyms = LazyModule('keysyms', locals()) _init() # CAPI _PyGtk_API = _gtk._PyGtk_API gdk.INPUT_READ = _gobject.IO_IN | _gobject.IO_HUP | _gobject.IO_ERR gdk.INPUT_WRITE = _gobject.IO_OUT | _gobject.IO_HUP gdk.INPUT_EXCEPTION = _gobject.IO_PRI # Python 2.5+ context manager, usable through 'with' keyword. class _Lock(object): __enter__ = gdk.threads_enter def __exit__(*ignored): gdk.threads_leave() gdk.lock = _Lock() # old names compatibility ... idle_add = _Deprecated(_gobject, 'idle_add', 'idle_add', 'gobject') idle_remove = _Deprecated(_gobject, 'source_remove', 'idle_remove', 'gobject') timeout_add = _Deprecated(_gobject, 'timeout_add', 'timeout_add', 'gobject') timeout_remove = _Deprecated(_gobject, 'source_remove', 'timeout_remove', 'gobject') input_add = _Deprecated(_gobject, 'io_add_watch', 'input_add', 'gobject') input_add_full = _Deprecated(_gobject, 'io_add_watch', 'input_add_full', 'gobject') input_remove = _Deprecated(_gobject, 'source_remove', 'input_remove', 'gobject') mainloop = _Deprecated('gtk', 'main', 'mainloop') mainquit = _Deprecated('gtk', 'main_quit', 'mainquit') mainiteration = _Deprecated('gtk', 'main_iteration', 'mainiteration') load_font = _Deprecated(gdk, 'Font', 'load_font', 'gtk.gdk') load_fontset = _Deprecated(gdk, 'fontset_load', 'load_fontset', 'gtk.gdk') create_pixmap = _Deprecated(gdk, 'Pixmap', 'create_pixmap', 'gtk.gdk') create_pixmap_from_xpm = _Deprecated(gdk, 'pixmap_create_from_xpm', 'pixmap_create_from_xpm', 'gtk.gdk') create_pixmap_from_xpm_d = _Deprecated(gdk, 'pixmap_create_from_xpm_d', 'pixmap_create_from_xpm_d', 'gtk.gdk') threads_init = _Deprecated(gdk, 'threads_init', 'threads_init', 'gtk.gdk') threads_enter = _Deprecated(gdk, 'threads_enter', 'threads_enter', 'gtk.gdk') threads_leave = _Deprecated(gdk, 'threads_leave', 'threads_leave', 'gtk.gdk') TRUE = _DeprecatedConstant(True, 'gtk.TRUE', 'True') FALSE = _DeprecatedConstant(False, 'gtk.FALSE', 'False') # Can't figure out how to deprecate gdk.Warning gdk.Warning = Warning # We don't want to export this del _Deprecated, _DeprecatedConstant, _gobject, _init, _Lock # Do this as late as possible, so programs like pyflakes can check # everything above from gtk._gtk import * # Make PyGTK interactive set_interactive(1) # # For testing, so you can just turn off dynamicnamespace in gtk.override # if hasattr(_gtk, '_get_symbol_names'): # import gtk # ns = LazyNamespace(_gtk, locals()) # ns.add_submodule('glade', '_glade') # ns.add_submodule('_gtk', 'gtk._gtk') # sys.modules['gtk'] = ns # sys.modules['gtk.glade'] = LazyModule('_glade', {})