-
;p<c    	   sD     d  k  Z  d  k Z  d  k Z  d  k Z  d  k Z  y  d k l Z Wn&  e j
 o  d k l Z n X
 d  k Z  d Z	  d Z
  d Z  d Z  d Z  d Z  d Z  d	 Z  d
 Z $ d Z + h  d d <d d <d d <d d <d d <d d <d d <d d <d d <Z 7 d   Z U d   Z ] d    Z c h  Z e h  Z i h  Z l h  d! d" d# f d$ <d% d& d' f d( <d) d* d+ f d, <d- d. d/ f d0 <d1 d2 d3 f d4 <d5 d6 d7 f d8 <d5 d6 d7 f d9 <d5 d6 d7 f d: <d5 d6 d7 f d; <d< d= d> f d? <d@ dA dB f dC <dD dE dF f dG <dH dI dJ f dK <dL dM dN f dO <dP dQ dR f dS <dT dU dV f dW <Z  dX f  dY     YZ  dZ e i f d[     YZ  d\ e f d]     YZ d^ e f d_     YZ e  d` j o(e i e  i! d da db dc dd de df dg g  \ Z" Z#  e$ Z% e$ Z& g  Z' g  Z( x
e" D] \ Z) Z* e) dh di f j o e* Z% n e) dj dk f j o e* Z& n 	e) dl j o 
e' i+ e*  n e) dm j o e, i+ e*  nf e) dn j o e e*  i-   n? e) e. do f j o' e  i/ i0 dp  e  i1 d  n qWe% p e& o' e  i/ i0 dp  e  i1 d  n e dq e% dr e& ds dt  Z2 x! e' D] Z3 e2 i4 e3  qWx! e, D] Z5 e2 i6 e5  qWe2 i-   n d  S(u   N(   s   StringIOi   i    s       { "%s", _wrap_%s, 1 },
s<   static PyObject *_wrap_%s(PyObject *self, PyObject *args) {
sG       if (PyGtkEnum_get_value(%s, %s, (gint *)&%s))
        return NULL;
sG       if (PyGtkFlag_get_value(%s, %s, (gint *)&%s))
        return NULL;
s     if (py_%s)
        %s = %s;
s   static PyObject *_wrap_%s(PyObject *self, PyObject *args) {
    if (!PyArg_ParseTuple(args, ":%s"))
        return NULL;
    return PyInt_FromLong(%s());
}

s       if (PyGtk_Check(py_%s))
        %s = %s(PyGtk_Get(py_%s));
    else if (py_%s != Py_None) {
        PyErr_SetString(PyExc_TypeError, "%s argument must be a %s or None");
	return NULL;
    }
s       if (Py%s_Check(py_%s))
        %s = %s(py_%s);
    else if (py_%s != Py_None) {
        PyErr_SetString(PyExc_TypeError, "%s argument must be a %s or None");
	return NULL;
    }
s
   _GTK_CLISTs   GtkCLists
   _GTK_CTREEs   GtkCTrees   _GTK_CTREE_POSs   GtkCTreePoss   _GTK_CTREE_LINE_STYLEs   GtkCTreeLineStyles   _GTK_CTREE_EXPANDER_STYLEs   GtkCTreeExpanderStyles   _GTK_CTREE_EXPANSION_STYLEs   GtkCTreeExpansionStyles   _GNOME_ROOTWINs   GnomeRootWins   _GNOME_APPBARs   GnomeAppBars   _GNOME_DENTRY_EDITs   GnomeDEntryEditc    s  7 : ; t  i |   o < t  |  Sn = g  } > x> |  o? t |   d j o% |  d t i j o |  d t i j o) A | i d |  d   B |  d }  n<C t |   d j oJ |  d t i j o6 |  d d j o% |  d t i j o |  d t i j o4 H | i |  d d |  d d ! I |  d }  n J t |   d j o9 |  d t i j o% |  d t i j o |  d t i j o1 N | i |  d d |  d  O |  d }  n" Q | i |  d  R |  d }  q7 WS t i	 t i
 | d   Sd S(	   s   Converts a typename to the equivalent upercase and underscores
	name.  This is used to form the type conversion macros and enum/flag
	name variablesi   i    s   _i   i   s   HVs    N(   s   convSpecialCasess   has_keys   strs   rets   lens   strings	   uppercases	   lowercases   appends   uppers   join(   s   strs   ret(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys
   toUpperStr7 s$   	 
>c#R c    s^   U V W t  |   } X t |  d j o | d  d j o Y d | d Sn [ d | Sd S(   s,   create a GTK_TYPE_* name from the given typei   s   _GTKs   GTK_TYPEN(   s
   toUpperStrs   typenames   parts   len(   s   typenames   part(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   enumNameU s
   'c    s   ] ^ _ t  |   d Sd S(   s+   get the conversion macro for the given typei   N(   s
   toUpperStrs   typename(   s   typename(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   conversionMacro] s   s   PyGtkAccelGroup_Types   PyGtkAccelGroup_Gets   PyGtkAccelGroup_News   GtkAccelGroups   PyGtkStyle_Types   PyGtkStyle_Gets   PyGtkStyle_News   GtkStyles   PyGdkFont_Types   PyGdkFont_Gets   PyGdkFont_News   GdkFonts   PyGdkColor_Types   PyGdkColor_Gets   PyGdkColor_News   GdkColors   PyGdkEvent_Types   PyGdkEvent_Gets   PyGdkEvent_News   GdkEvents   PyGdkWindow_Types   PyGdkWindow_Gets   PyGdkWindow_News	   GdkWindows	   GdkPixmaps	   GdkBitmaps   GdkDrawables   PyGdkGC_Types   PyGdkGC_Gets   PyGdkGC_News   GdkGCs   PyGdkColormap_Types   PyGdkColormap_Gets   PyGdkColormap_News   GdkColormaps   PyGdkDragContext_Types   PyGdkDragContext_Gets   PyGdkDragContext_News   GdkDragContexts   PyGtkSelectionData_Types   PyGtkSelectionData_Gets   PyGtkSelectionData_News   GtkSelectionDatas   PyGdkAtom_Types   PyGdkAtom_Gets   PyGdkAtom_News   GdkAtoms   PyGdkCursor_Types   PyGdkCursor_Gets   PyGdkCursor_News	   GdkCursors   PyGtkCTreeNode_Types   PyGtkCTreeNode_Gets   PyGtkCTreeNode_News   GtkCTreeNodes   VarDefsc      s)     d   Z   d   Z  d   Z RS(   Nc    s     h  |  _ d  S(   N(   s   selfs   vars(   s   self(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   __init__ s   c    sR     |  i i |  o"  |  i | | f |  i | <n  | f |  i | <d  S(   N(   s   selfs   varss   has_keys   types   name(   s   selfs   types   name(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   add s   "c    s     g  }  x} |  i i   D ]i }  | i d   | i |   | i d   | i t i |  i | d    | i d  q W | o  | i d  n  t i | d  Sd  S(   Ns       s    s   , s   ;
s   
s    (   s   rets   selfs   varss   keyss   types   appends   strings   join(   s   selfs   types   ret(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   __str__ s   	 	#
 (   s   __init__s   adds   __str__(    (    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   VarDefs s   s   TypesParserc      sS    d  Z    d   Z  d   Z  d   Z  e e e d  Z  d   Z RS(   s2   A parser that only parses definitions -- no outputc    s2     t  i |  o  t |  t  | <n d  S(   N(   s   enumss   has_keys   names   enumName(   s   selfs   names   values(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_enum s   c    s2     t  i |  o  t |  t  | <n d  S(   N(   s   flagss   has_keys   names   enumName(   s   selfs   names   values(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_flags s   c    s2     t  i |  o  t |  t  | <n d  S(   N(   s   objectss   has_keys   names   conversionMacro(   s   selfs   names   args(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_object s   c    s/     t  i |  o  d G| Gd GHn d  S(   Ns
   Warning --s   not supported(   s   boxeds   has_keys   name(   s   selfs   names   reffuncs	   unreffuncs   size(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_boxed s   c    s     | d d j o.  t i i t i i |  i    |  } n
  | }  t i i |  o  | } n  t |  }  |  i
 t i |   d  S(   Ni    s   /(   s   filenames   oss   paths   joins   dirnames   selfs   afiles   existss   opens   fps   startParsings   scmexprs   parse(   s   selfs   filenames   fps   afile(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   include s   	(   s   __doc__s   define_enums   define_flagss   define_objects   Nones   define_boxeds   include(    (    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   TypesParser s   	s   FunctionDefsParserc      s\     d d d  Z   d   Z  f  f  d  Z  d   Z  d   Z e d  Z RS(	   Ns	   gtkmodules   &c    sX     t  i |  |   t | d d  |  _  t | d d  |  _  | |  _	 d  S(   Ns   _impl.cs   ws   _defs.c(
   s   TypesParsers   __init__s   selfs   inputs   opens   prefixs   impls   defss
   typeprefixs   tp(   s   selfs   inputs   prefixs
   typeprefix(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   __init__ s   c    s%     d G| o | d p d GHd  S(   Ns   Unknown function:i    s    (   s   tup(   s   selfs   tup(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   unknown s   c    s     t  i |  |   t i t |  d }  |  i i	 t
 | | f   |  i i	 t | | | f   | o | d d j o;  x1 | d D ]" \ } }  |  i | | |  q Wn d  S(   Ns	   _get_typei    s   fieldsi   (   s   TypesParsers   define_objects   selfs   names   strings   lowers   objectss   get_types   defss   writes   funcDefTmpls   impls   getTypeTmpls   fieldss   retTypes   attrnames   get_attr_func(   s   selfs   names   parents   fieldss   retTypes   attrnames   get_type(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_object s     c    s$    t    }  t i t |  d | }  | i t	 | f   | i d   | i d   | i |   | i d |  i d   | i d   d t | | f }  |  i | | |  o  d  Sn  | i d   |  i i t | | f   |  i i | i    d  S(	   Ns   _get_s       PyObject *obj;

s$       if (!PyArg_ParseTuple(args, "O!:s   ", s   PyGtk_Type, &obj))
s           return NULL;
s   %s(PyGtk_Get(obj))->%ss   }

(   s   StringIOs   impls   strings   lowers   objectss   names   attrnames   funcNames   writes   funcLeadTmpls   selfs   tps   funcCalls	   decodeRets   retTypes   defss   funcDefTmpls   getvalue(   s   selfs   names   retTypes   attrnames   funcCalls   funcNames   impl(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   get_attr_func s   c    sq
    t    }  | i t | f   t   }  d }  g  }  g  }  g  }  t }	  t |  t f   j o  | d }	  | d } n  | d j o*  | i d d   | i d d  n  x:| D ]/}  | d }  | d }  | d	 d
 d d d d d d d f	 j o  d | } n  d }  t }
  t |  d j o  x | d D ] }  t |  t f   j o | d d j o6  d | d }  d | j o  | d } n n;  t |  t f   j o | d d j o  t }
 n qrWn  | d j ok  | i d d | |   |
 o | d } n | d } | i d |  | i |  nu| d d f j oL | i d | |  | d } 	| i d |  
| i |  n| d d d  d! d" d# d$ f j oL | i d | |  | d% } | i d |  | i |  n| d& d' f j oL | i d' | |  | d( } | i d |  | i |  n@| d) j oh | i d d | |  | d* } | i d+  | i d |  | i d, | d-  n| t i   j o | i | | |   | o !| i d d. | d/  n $| i d d. |  %| d0 } &| i d1 |  '| i |  (| i t t | d2 | | f  n,| t i   j o -| i | | |  .| o /| i d d. | d/  n 2| i d d. |  3| d0 } 4| i d1 |  5| i |  6| i t t | d2 | | f  n::| t  i   j o;|
 o <| d0 } =| i d1 |  >| i d d. | d3  @| i | d | d/  B| i t! | | t  | | | | | f  G| i |  n)H| o I| d* } J| i |  i# d4  K| i d d. | d/  M| i | d | |  O| i d1 |  P| i t$ | | t  | d5 | d6 f  U| i |  np W| d* } X| i |  i# d4  Y| i d d |  Z| i d |  [| i t  | d7 | d6  nV^| t% i   j o&_t% | \ } } } `|
 o a| i d d. | d3  c| i | d | d/  e| d0 } f| i d1 |  g| i t( | | | | | | | | f  l| i |  nl n| i d d |  o| d* } p| i |  i# |  q| i d |  r| i | d8 | d-  n td9 | | f GHvd  Sq Wx| i t) |   y| i d:  z| i |  {| i d;  || i |  }| i d<  ~| o0 | i d=  | i t* i+ | d=   n | i d>  | i t* i+ | d   | d8 t* i+ | d=  d- } |  i- | | | |	  o d  Sn | i d?  |  i. i t/ | | f  |  i i | i0    d  S(@   Ns    i   i    s   strings   chars   *rets   PyObjects   *py_rets   defaults   ifs   thens   elses   whiles   fors   dos   cases   selects   _i   s   =s    = s   |s   null-oks   *s   zs   ss   &s   uchars   cs   bools   ints   uints   longs   ulongs   guints   GdkAtoms   is   floats   doubles   ds   FILEs   O!s   &PyFile_Types   PyFile_AsFile(s   )s   *py_s    = NULLs   Os   &py_s   py_s
    = Py_Nones
   PyGtk_Types   (PyGtk_Get(py_s   ))s   (PyGtk_Get(s   (s   %s: unknown arg type '%s's!       if (!PyArg_ParseTuple(args, "s   :s   "s   , s   ))
        return NULL;
s   }

(1   s   StringIOs   impls   writes   funcLeadTmpls   names   VarDefss   varDefss   parseStrs	   parseLists   argLists	   extraCodes   Nones   retArgss   types   retTypes   adds   argss   args   argTypes   argNames   defaults   FALSEs   nulloks   lens   as   TRUEs   appends   enumss   keyss   enumCodeTmpls   flagss   flagCodeTmpls   objectss
   nullokTmpls   selfs   tps
   setVarTmpls   boxeds   gets   news   nullokBoxedTmpls   strs   strings   joins   funcCalls	   decodeRets   defss   funcDefTmpls   getvalue(   s   selfs   names   retTypes   argss   as   gets	   parseLists   args	   extraCodes   retArgss   nulloks   funcCalls   defaults   parseStrs   varDefss   tps   argLists   news   argNames   argTypes   impl(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_func s  					
 	+		 	--
%
)
)
-
-$
, 
 !c    s  t  } | o; | d d j o t } n d | f GHd Sn | d j o4 | i d  | i |  | i d  nG| d j o4 | i d	  | i |  | i d
  n| d j oj | o8 | i d |  | i d  | i d  n% | i d |  | i d  n| d d f j o4 | i d  | i |  | i d  n?| d d d d d d f j p# | t i	   j p | t
 i	   j o4 | i d  | i |  | i d
  n| d d f j o4 | i d  | i |  | i d
  ny| t i	   j o | oZ | i d | | f  | i d  | i d  t | d!  | i d"  nY | i d#  | i t | d!  | i d$  | i |  | i d
  n | t i	   j ov | o8 | i d% |  | i d&  | i d"  n1 | i d'  | i |  | i d
  n d( | f GHd Sd Sd  S()   Ni    s   null-oks   unknown return attribute '%s'i   s   nones       s.   ;
    Py_INCREF(Py_None);
    return Py_None;
s   static_strings       return PyString_FromString(s   );
s   strings       ret = %s;
s       if (ret) {
s           py_ret = PyString_FromString(ret);
        g_free(ret);
        return py_ret;
    } else {
        Py_INCREF(Py_None);
        return Py_None;
    }
sK       py_ret = PyString_FromString(ret);
    g_free(ret);
    return py_ret;
s   chars   uchars(       return PyString_fromStringAndSize(*(s   ));
s   bools   ints   uints   longs   ulongs   guints       return PyInt_FromLong(s   floats   doubles       return PyFloat_FromDouble(s       {
        %s *p = %s;
s           if (p)
s               return %s(p);
i   s:           Py_INCREF(Py_None);
        return Py_None;
    }
s       return s   (s.       {
        GtkObject *p = (GtkObject *) %s;s>           if (p)
            return PyGtk_New((GtkObject *) p);
s"       return PyGtk_New((GtkObject *)s   unknown return type '%s'(   s   FALSEs   nulloks   retArgss   TRUEs   retTypes   impls   writes   funcCalls   enumss   keyss   flagss   boxeds   objects(   s   selfs   impls   funcCalls   retTypes   retArgss   nullok(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys	   decodeRetsn   	

H

(   s   __init__s   unknowns   define_objects   get_attr_funcs   define_funcs   Nones	   decodeRet(    (    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   FunctionDefsParser s   
s   FilteringParserc      sP   d  Z  d d d  Z d   Z d   Z d   Z d   Z RS(   sJ   A refinement of FunctionDefsParser with some common filter types
	built ins	   gtkmodules   &c    s8   t  i |  | | |  h  |  _ g  |  _ d  S(   N(   s   FunctionDefsParsers   __init__s   selfs   inputs   prefixs
   typeprefixs   excludeLists   excludeGlob(   s   selfs   inputs   prefixs
   typeprefix(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   __init__s   c    sj   |  i i |  o d Sn x5 |  i D]' } t i | |  o d Sn q1 Wd Sd  S(   Ni    i   (   s   selfs   excludeLists   has_keys   names   excludeGlobs   globs   fnmatchs   fnmatchcase(   s   selfs   names   glob(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   filters    	c    sC   |  i |  o t i |  | | |  n d | GHd  S(   Ns   %s: filtered out(   s   selfs   filters   names   FunctionDefsParsers   define_funcs   retTypes   args(   s   selfs   names   retTypes   args(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   define_funcs   c    sp   t  |  i   } t d   |  } t d   |  } x! | D] } t |  i	 | <qO Wd S(   s6   Adds the function names from file fname to excludeListc    s   |  d  S(   Ni(   s   x(   s   x(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   <lambda>s    c    s   |  o |  d d j S(   Ni    s   #(   s   x(   s   x(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   <lambda>s    N(
   s   opens   fnames	   readliness   liness   maps   filters   names   Nones   selfs   excludeList(   s   selfs   fnames   names   lines(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   addExcludeFiles   
 	c    s1   | |  i j o |  i i |  n d  S(   N(   s   globs   selfs   excludeGlobs   append(   s   selfs   glob(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   addExcludeGlobs   (   s   __doc__s   __init__s   filters   define_funcs   addExcludeFiles   addExcludeGlob(    (    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   FilteringParsers   		s   __main__s   d:o:hs   defs=s   output-prefix=s   exclude-file=s   exclude-globs	   register=s   helps   -ds   --defss   -os   --output-prefixs   --exclude-files   --exclude-globs
   --registers   --helps1   usage: generate.py -d defs file -o output-prefix
s   inputs   prefixs
   typeprefixs   &(7   s   syss   getopts   oss   strings   scmexprs	   cStringIOs   StringIOs   ImportErrors   fnmatchs   TRUEs   FALSEs   funcDefTmpls   funcLeadTmpls   enumCodeTmpls   flagCodeTmpls
   setVarTmpls   getTypeTmpls
   nullokTmpls   nullokBoxedTmpls   convSpecialCasess
   toUpperStrs   enumNames   conversionMacros   enumss   flagss   objectss   boxeds   VarDefss   Parsers   TypesParsers   FunctionDefsParsers   FilteringParsers   __name__s   argvs   optss   argss   Nones   defss   output_prefixs   exclude_filess   exclude_globs   opts   args   appends   exclude_globss   startParsings   hs   stderrs   writes   exits   parsers   files   addExcludeFiles   globs   addExcludeGlob((   s   opts   flagCodeTmpls   conversionMacros   FunctionDefsParsers   files   args   TRUEs   boxeds   nullokBoxedTmpls   getTypeTmpls   convSpecialCasess   getopts
   toUpperStrs   enumCodeTmpls   exclude_filess   defss   TypesParsers   parsers   strings   globs   argss   VarDefss   syss
   nullokTmpls   objectss   exclude_globs   FALSEs   enumss   funcLeadTmpls
   setVarTmpls   StringIOs   FilteringParsers   funcDefTmpls   enumNames   output_prefixs   flagss   fnmatchs   scmexprs   oss   opts(    (    s/   /mit/python/share/pygtk/1.2/codegen/generate.pys   ? s   										Z			 * '!$				
 
 	
 	