Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

pyqtdependency.py - nalazi koju QT klasu iz kojeg QT modula importovati

[es] :: Python :: pyqtdependency.py - nalazi koju QT klasu iz kojeg QT modula importovati

[ Pregleda: 2434 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.3.nat.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon pyqtdependency.py - nalazi koju QT klasu iz kojeg QT modula importovati18.03.2009. u 15:38 - pre 183 meseci
Pozdrav dobri ljudi :)

Skrpio sam neku skripticu za sebe, pa da podelim :)

Skripta nalazi iz druge .py skripte sve (bar se nadam) Qt klase i pomocu dokumentacije na http://doc.trolltech.com/4.4/ odredjuje koju Qt klasu iz kog Qt modula treba importovati. Cisto da se ne radi from PyQt4.QtCore import * :)

Ako se ode na stranicu neke klase, primera radi http://doc.trolltech.com/4.4/qaction.html ispod glavnog naslova stoji kom modulu pripada data klasa. U html source-u je to red 15.

Kod:
Code:

#!/usr/bin python

'''pyqtdependency.py a script to grab all Qt classes from a .py script
and see from which Qt module should those classes be imported'''

import sys
import os
import re
import urllib2
import string

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print "Bah! I need a file to process!"
        sys.exit()
    modules = {}
    classes = []
    '''patt finds from rows like:
        class Spam(QWidget):
        qidget = QWidget()
        action = QAction(QIcon(...))'''
    patt = re.compile('.*(Q[A-Z]{1}[a-zA-Z]+)[(.*]')
    '''On row 15 there's only 1 anchor tag with the module name in it'''
    patt2 = re.compile('(Q[a-zA-Z]+)</a>')
    file = sys.argv[1]
    fp = open(file, 'rb')
    lines = fp.readlines()
    fp.close()

    for line in lines:
        match = patt.search(line)
        if match is not None:
            match = match.group(1)
            if match not in classes:
                classes.append(match)
    
    for cl in classes:
        url = 'http://doc.trolltech.com/4.4/%s.html' % string.lower(cl)
        resp = urllib2.urlopen(url)
        '''The module name is in row 15, go there'''
        for i in range(0,15):
            if i < 14:
                resp.next()
            elif i == 14:
                match = patt2.search(resp.readline())
                match = match.group(1)
            else:
                break

        if match in modules:
            modules[match].append(cl)
        else:
            modules[match] = [cl]

    print modules


Skripta je dosta gruba, nema nikakvih provera na greske, ali radi :) Pozivanje je jednostavno: ./qtDependency.py imeskripte.py

Primer output-a:
Code:

{'QtCore': ['QTranslator'], 'QtGui': ['QMainWindow', 'QMessageBox', 'QApplication']}


Za sada sam proveravao samo sa skriptama koje imaju QtCore i QtGui module, mada, trebalo bi da radi i sa ostalima.

Osim provere na greske, moze jos da se ubaci da koristi dokumentaciju sa file sistema, da nalazi stvari kao sto su Qt.WA_DeleteOnClose itd.

Interesuje me, da li ima (a mora da ima :D) neki efikasniji nacin citanja 15og reda iz html-a?

Svako dobro :)

Edit: promenio sam ime u pyqtdependency.py, da bude jasnije.
Takodje, nabacio sam na Google Code http://code.google.com/p/pyqtdependency/


[Ovu poruku je menjao kazil dana 18.03.2009. u 21:51 GMT+1]

[Ovu poruku je menjao kazil dana 18.03.2009. u 21:51 GMT+1]
 
Odgovor na temu

[es] :: Python :: pyqtdependency.py - nalazi koju QT klasu iz kojeg QT modula importovati

[ Pregleda: 2434 | Odgovora: 0 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.