fake_wx.py
branchpython3
changeset 3767 485fe0e78bfd
parent 3752 9f6f46dbe3ae
child 3790 9ec48ec13b65
equal deleted inserted replaced
3766:f99def63cdd8 3767:485fe0e78bfd
     1 #!/usr/bin/env python
     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     2 # -*- coding: utf-8 -*-
     3 
     3 
     4 import sys
     4 import sys
     5 import new
       
     6 from types import ModuleType
     5 from types import ModuleType
     7 
     6 
     8 # TODO use gettext instead
     7 # TODO use gettext instead
     9 def get_translation(txt):
     8 def get_translation(txt):
    10     return txt
     9     return txt
    14     def __init__(self, *args, **kwargs):
    13     def __init__(self, *args, **kwargs):
    15         self.__classname__ = kwargs["__classname__"]
    14         self.__classname__ = kwargs["__classname__"]
    16 
    15 
    17     def __getattr__(self,name):
    16     def __getattr__(self,name):
    18         if name.startswith('__'):
    17         if name.startswith('__'):
    19             raise AttributeError, name
    18             raise AttributeError(name)
    20         return FakeObject(__classname__=self.__classname__+"."+name)
    19         return FakeObject(__classname__=self.__classname__+"."+name)
    21 
    20 
    22     def __call__(self, *args, **kwargs):
    21     def __call__(self, *args, **kwargs):
    23         return FakeObject(__classname__=self.__classname__+"()")
    22         return FakeObject(__classname__=self.__classname__+"()")
    24 
    23 
    25     def __getitem__(self, key):
    24     def __getitem__(self, key):
    26         raise IndexError, key
    25         raise IndexError(key)
    27 
    26 
    28     def __str__(self):
    27     def __str__(self):
    29         return self.__classname__
    28         return self.__classname__
    30 
    29 
    31     def __or__(self, other):
    30     def __or__(self, other):
    32         return FakeObject(__classname__=self.__classname__+"|"+other.__classname__)
    31         return FakeObject(__classname__=self.__classname__+"|"+other.__classname__)
    33 
    32 
    34 
    33 
    35 class FakeClass:
    34 class FakeClass:
    36     def __init__(self, *args, **kwargs):
    35     def __init__(self, *args, **kwargs):
    37         print("DUMMY Class __init__ !",self.__name__,args,kwargs)
    36         print(("DUMMY Class __init__ !",self.__name__,args,kwargs))
    38 
    37 
    39 
    38 
    40 class FakeModule(ModuleType):
    39 class FakeModule(ModuleType):
    41     def __init__(self, name, classes):
    40     def __init__(self, name, classes):
    42         self.__modname__ = name
    41         self.__modname__ = name
    43         self.__objects__ = dict(map(lambda desc: 
    42         self.__objects__ = dict([(desc, type(desc, (FakeClass,), {}))
    44             (desc, new.classobj(desc, (FakeClass,), {}))
    43             if type(desc)==str else desc for desc in classes])
    45             if type(desc)==str else desc, classes))
       
    46         ModuleType(name)
    44         ModuleType(name)
    47 
    45 
    48     def __getattr__(self,name):
    46     def __getattr__(self,name):
    49         if name.startswith('__'):
    47         if name.startswith('__'):
    50             raise AttributeError, name
    48             raise AttributeError(name)
    51   
    49   
    52         if self.__objects__.has_key(name):
    50         if name in self.__objects__:
    53             return self.__objects__[name]
    51             return self.__objects__[name]
    54   
    52   
    55         obj = FakeObject(__classname__=self.__modname__+"."+name)
    53         obj = FakeObject(__classname__=self.__modname__+"."+name)
    56         self.__objects__[name] = obj
    54         self.__objects__[name] = obj
    57         return obj
    55         return obj