亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gladegen.py

?? python programm from Russia
?? PY
字號:
#!/usr/bin/env python#----------------------------------------------------------------------# GladeGen.py# Dave Reed# 02/03/2004#----------------------------------------------------------------------import sysimport os.pathimport timeimport reimport inspectimport xml.dom.minidomimport GladeGenConfig#----------------------------------------------------------------------class GladeGen:    #------------------------------------------------------------------    def __init__(self, module, glade_file, class_name):        '''__init__(self, module, glade_file, class_name):        module: file name without .py exentsion        glade_file: full name of Glade XML file        class_name: name of class to create        '''                self.module = module        self.glade_file = glade_file        self.class_name = class_name        self.filename = '%s.py' % module        # dict of function objects in the file        # maps name to function object        self.functions = {}        # dict of class objects in the file        # maps name to class object        self.classes = {}        # list of class methods in the file        self.methods = []        # widgets to be able to acces - see GladeGenConfig.include_widget_types        # for which types from the file will be included        self.widgets = []        # handlers specified in the XML file        self.handlers = []        # contains all lines in file        self.lines = []        # contains handler methods that need to be added to .py file        self.missing = []        # line number where init (not __init__) methods starts        self.init_start = None                        # create file if doesn't exist        if not os.path.exists(self.filename):            f = file(self.filename, 'w')            f.write(self.create_file())            f.close()        # read existing file into self.lines        f = file(self.filename, 'r')        self.lines = f.readlines()        f.close()            #------------------------------------------------------------------    def create_file(self):        '''create_file(self):        create empty python file for the class'''                lines = []        lines.append(self.create_header())        lines.append(GladeGenConfig.class_header % self.class_name)        lines.append(GladeGenConfig.constructor)        lines.append(self.create_footer())        return '\n'.join(lines)            #------------------------------------------------------------------    def get_members(self):        '''get_members(self):        get information on functions, classes, methods, handlers, etc.        from the Python code'''        self.functions = {}        self.classes = {}        self.methods = []        self.module = __import__(self.module)        # functions        l = inspect.getmembers(self.module, inspect.isroutine)        for name, obj in l:            self.functions[name] = obj        # classes        l = inspect.getmembers(self.module, inspect.isclass)        for name, obj in l:            self.classes[name] = obj            # methods in the class            methods = inspect.getmembers(obj, inspect.ismethod)            for m in methods:                self.methods.append((name, m[0]))                # find init method (not __init__) since we will be replacing                # it with a new method each time                if m[0] == 'init':                    self.init_lines, self.init_start = \                                     inspect.getsourcelines(m[1])    #----------------------------------------------------------------------    def get_xml(self):        '''get_xml(self):        parse the XML file to get widget and handler names'''        self.widgets = []        self.handlers = []        self.top_window = None        # load XML file        doc = xml.dom.minidom.parse(self.glade_file)        # look for widgets and get their widget type and name        for node in doc.getElementsByTagName('widget'):            widget = str(node.getAttribute('class'))            name = str(node.getAttribute('id'))            if self.top_window is None and widget == 'GtkWindow':                self.top_window = name            # if the widget type is in list of widgets user specified            # in config file, include it in the list                        if widget in GladeGenConfig.include_widget_types:                # (widget type, name)                # ('GtkWindow', 'window1')                self.widgets.append((widget, name))        # get signal handler names        for node in doc.getElementsByTagName('signal'):            name = str(node.getAttribute('handler'))            if name not in self.handlers:                self.handlers.append(name)                #----------------------------------------------------------------------    def get_missing_methods(self):        '''get_missing_methods(self):        determine which handlers do not exist in the Python file'''                self.missing = []        method_names = map(lambda x: x[1], self.methods)        for h in self.handlers:            if h not in method_names:                self.missing.append(h)                #----------------------------------------------------------------------    def get_init_method(self, indent):        '''get_init_method(self, indent):        create the init (not __init__) method'''        indent1 = ' ' * indent        indent2 = '  ' * indent        indent3 = '   ' * indent        lines = []        # method name        lines.append('%sdef init(self):' % indent1)        lines.append('')        # specify Glade XML file        lines.append("%sfilename = '%s'" % (indent2, self.glade_file))        lines.append('')        # specify widgets the user wnats        lines.append('%swidget_list = [' % indent2)        for w in self.widgets:            lines.append("%s'%s'," % (indent3, w[1]))        lines.append('%s]' % indent3)        lines.append('')        # specify handlers        lines.append('%shandlers = [' % indent2)        for h in self.handlers:            lines.append("%s'%s'," % (indent3, h))        lines.append('%s]' % indent3)        lines.append('')        # specify  the top level window widget        lines.append("%stop_window = '%s'" % (indent2, self.top_window))        # call the subclass constructor        lines.append('%sGladeWindow.__init__(self, %s, %s, %s, %s)' % (            indent2, 'filename', 'top_window', 'widget_list', 'handlers'))        lines.append('')        return '\n'.join(lines)            #----------------------------------------------------------------------    def insert_missing_methods(self):        '''insert_missing_methods(self):        insert the missing handlers in the Python code stored in        self.lines        also updates the init (not __init__) method'''        # get lines for the class object        obj = self.classes[self.class_name]        lines, start = inspect.getsourcelines(obj)        end = start + len(lines)                # determine indentation level for class methods        for l in lines:            if re.search('\sdef', l) is not None:                indent = l.find('def')        # remove existing init method        s_pos = self.init_start - start        e_pos = s_pos + len(self.init_lines)        if self.init_start is not None:            del lines[s_pos:e_pos]        # insert new init (not __init__ method)        lines.insert(s_pos, self.get_init_method(indent))        # insert code for missing functions        for m in self.missing:            lines.append('%s#%s\n' % (indent * ' ', 70 * '-'))            lines.append('\n')            lines.append('%sdef %s(self, *args):\n' % (indent * ' ', m))            lines.append('%spass\n' % (2 * indent * ' '))            lines.append('\n')        lines.append('\n')        # delete class from self.lines        del self.lines[start-1:end]        # replace with updated class stored in lines        self.lines.insert(start-1, ''.join(lines))        return self.lines                      #----------------------------------------------------------------------    def print_info(self):        '''print_info(self):        print stored information - useful for debugging'''        print 'funcs'        for k in self.functions:            print k, self.functions[k]        print                print 'classes'        for k in self.classes:            print k, self.classes[k]        print                print 'methods'        for k in self.methods:            print k        print        print 'widgets'        for k in self.widgets:            print k        print        print 'handlers'        for k in self.handlers:            print k        print        #------------------------------------------------------------------    #------------------------------------------------------------------    def create_header(self):        '''create_header(self):        return header lines for Python file'''                date = time.strftime(GladeGenConfig.date_format)        header = '''#!/usr/bin/env python    #----------------------------------------------------------------------# %s# %s# %s#----------------------------------------------------------------------import sysfrom GladeWindow import *#----------------------------------------------------------------------''' % (self.filename, GladeGenConfig.author, date)        return header        #------------------------------------------------------------------    def create_footer(self):        '''return footer lines for Python file'''        footer = """#----------------------------------------------------------------------def main(argv):    w = %s()    w.show()    gtk.main()#----------------------------------------------------------------------if __name__ == '__main__':    main(sys.argv)""" % self.class_name        return footer                #------------------------------------------------------------------#----------------------------------------------------------------------def main(argv):    if len(argv) != 4:        print 'usage: GladeGen.py glade_file module_name class_name'        return        glade_file = argv[1]    module = argv[2]    class_name = argv[3]    pg = GladeGen(module, glade_file, class_name)    pg.get_members()    pg.get_xml()    pg.print_info()    pg.get_missing_methods()    lines = ''.join(pg.insert_missing_methods())    f = file('%s.py' % module, 'w')    f.write(lines)    f.close()    #----------------------------------------------------------------------if __name__ == '__main__':    main(sys.argv)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产99久久6| 一区二区三区在线免费| 欧美揉bbbbb揉bbbbb| 成人av集中营| 国产综合一区二区| 国产一区二区三区免费看| 日韩高清在线观看| 蜜桃久久久久久| 卡一卡二国产精品| 精品在线一区二区| 国产中文字幕精品| 国产精品一区二区黑丝| 国产a久久麻豆| 9久草视频在线视频精品| 成年人国产精品| 日本韩国欧美国产| 欧美日韩你懂得| 欧美岛国在线观看| 精品国产免费一区二区三区四区 | 日韩在线观看一区二区| 香蕉成人啪国产精品视频综合网| 亚洲综合精品自拍| 欧美aaaaa成人免费观看视频| 天天综合色天天| 国产乱人伦偷精品视频免下载| 国产suv精品一区二区6| 在线免费观看不卡av| 欧美日韩国产首页| 欧美精品一区二区三区蜜桃 | 99久久国产综合精品女不卡| 91在线视频免费观看| 欧美综合色免费| 亚洲精品在线电影| 亚洲激情一二三区| 久99久精品视频免费观看| 成人av午夜电影| 欧美一区二区久久| 国产精品久久毛片| 奇米色777欧美一区二区| 成人午夜av影视| 337p亚洲精品色噜噜狠狠| 日本一区二区成人| 日韩黄色免费网站| 成人免费观看av| 欧美大片在线观看| 亚洲国产成人精品视频| 国产不卡免费视频| 555夜色666亚洲国产免| 亚洲色图在线播放| 国产在线播放一区| 4hu四虎永久在线影院成人| 国产精品电影一区二区| 日本aⅴ亚洲精品中文乱码| av在线免费不卡| www国产精品av| 亚洲国产另类av| 91麻豆国产自产在线观看| 日韩精品一区国产麻豆| 亚洲线精品一区二区三区| 丰满少妇在线播放bd日韩电影| 制服丝袜在线91| 亚洲一区二区精品久久av| av一区二区三区在线| 久久蜜臀精品av| 久久99国产精品久久| 欧美美女bb生活片| 亚洲一区二区三区视频在线播放 | 欧美精品久久久久久久久老牛影院| 久久久久一区二区三区四区| 日韩综合在线视频| 精品视频在线看| 亚洲乱码国产乱码精品精小说| 丁香婷婷综合网| 欧美激情一区二区三区全黄| 狠狠色丁香久久婷婷综合丁香| 欧美精品日日鲁夜夜添| 性做久久久久久久久| 欧美无砖专区一中文字| 亚洲综合在线视频| 欧美亚洲综合网| 亚洲黄色免费网站| 欧美亚洲高清一区二区三区不卡| 国产精品久久精品日日| 99视频超级精品| 亚洲精品高清视频在线观看| 91浏览器打开| 亚洲国产一区视频| 欧美日韩精品高清| 青青草成人在线观看| 欧美一区二区啪啪| 国产一区二区三区免费观看| 久久久综合网站| 不卡视频在线观看| 亚洲黄色尤物视频| 欧美一级理论性理论a| 久久不见久久见免费视频7 | 综合av第一页| 欧美日韩日本视频| 国精产品一区一区三区mba视频| 久久久国产综合精品女国产盗摄| 国产aⅴ综合色| 亚洲综合免费观看高清完整版在线 | 91国产成人在线| 亚洲国产裸拍裸体视频在线观看乱了 | 中文字幕精品一区二区三区精品 | 亚洲视频一二区| 欧美三电影在线| 国产一区在线看| 亚洲一区二区视频| 精品少妇一区二区三区视频免付费| 国产精品一二三| 亚洲综合色丁香婷婷六月图片| 日韩欧美亚洲另类制服综合在线| 国产激情视频一区二区在线观看| 亚洲精品免费视频| 日韩一区二区精品| 91美女在线观看| 国产一区在线观看视频| 亚洲高清一区二区三区| 久久噜噜亚洲综合| 91精品国产综合久久精品| 成人精品电影在线观看| 视频一区欧美日韩| 亚洲欧洲精品成人久久奇米网 | 日韩精品午夜视频| 欧美国产日韩亚洲一区| 精品视频999| 99亚偷拍自图区亚洲| 麻豆精品新av中文字幕| 亚洲欧美一区二区三区国产精品 | 国产欧美1区2区3区| 在线综合亚洲欧美在线视频| av在线免费不卡| 国产91精品一区二区麻豆网站| 亚洲国产精品一区二区久久 | 麻豆久久久久久| 亚洲午夜久久久久久久久久久| 国产婷婷色一区二区三区四区| 欧美喷潮久久久xxxxx| 91免费版pro下载短视频| 国产成人亚洲精品狼色在线| 美女久久久精品| 性做久久久久久久久| 亚洲一区二区三区影院| 亚洲激情成人在线| 亚洲精品欧美综合四区| 国产精品第一页第二页第三页| 欧美国产亚洲另类动漫| 亚洲精品在线观看视频| www国产精品av| 精品国内片67194| 精品999久久久| 精品少妇一区二区三区在线播放| 日韩一区二区三区免费观看| 色噜噜狠狠色综合中国| 91免费在线播放| 色网站国产精品| 色94色欧美sute亚洲线路一ni| 不卡电影免费在线播放一区| 成人福利视频网站| 成人免费毛片app| 成人午夜激情视频| 91视频在线观看免费| 91老师片黄在线观看| 色狠狠一区二区| 欧美美女视频在线观看| 日韩免费视频一区二区| 久久久久97国产精华液好用吗| 久久九九全国免费| 成人欧美一区二区三区小说| 中文字幕一区二区三区在线播放 | 欧美大片在线观看一区| 欧美精品一区二区久久久| 国产精品色一区二区三区| 中文字幕一区二区三区在线不卡 | 91精品国产高清一区二区三区| 538prom精品视频线放| 久久色成人在线| 亚洲日穴在线视频| 午夜一区二区三区在线观看| 麻豆成人91精品二区三区| 国产乱色国产精品免费视频| 97久久超碰国产精品电影| 欧美优质美女网站| 欧美成人aa大片| 中文字幕高清一区| 午夜精品在线视频一区| 国内欧美视频一区二区| 99久久99精品久久久久久| 欧美日韩亚洲国产综合| 亚洲精品在线免费播放| 亚洲精品免费在线| 国产乱色国产精品免费视频| 91免费版在线| 久久久久国产免费免费 | 婷婷六月综合亚洲| 国产精品1024久久| 欧美日韩一级二级三级| 国产精品系列在线| 日韩中文字幕麻豆|