[Python-de] blackadder

René Liebscher R.Liebscher at gmx.de
Die Jun 3 16:11:29 EDT 2003


Roland Kruggel schrieb:
> 
> Am Montag Juni 2 2003 19:32 schrieb Roland Kruggel:
> > Hallo Liste,
> >
> > kennt sich hier jemand mit BlackAdder aus?
> >
> > Ich habe ein Problem. Das .ui file welches im qt-designer
> > erzeugt wurde wird von BlackAdder nicht gelesen.
> >
> > Weiß da jemand rat? Von TheKompany kommt keinerlei Reation auf
> > meine Mails.
> >
> > BlackAdder Version 1.0 Beta 4
> > designer   Version 3.1
> 
> Ich habe den 'bug' gefunden.
> 
> ich habe zwei Programme die einander eine XML Datei übergeben.
> Die XML-Dateien weichen leider voneinander ab. Weiß da jeman ein
> Convertierungsprogramm für. Google schweigt sich leider aus.
> 
> --snip   source version="3.1"
> <widget class="QDialog">
>     <property name="name">
>         <cstring>test2</cstring>
>     </property>
>     <property name="geometry">
> --snap
> 
> soll convertirt werden zu
> 
> --snip destination version=weis nicht
> <widget>
>     <class>QDialog</class>
>     <property stdset="1">
>         <name>name</name>
>         <cstring>test1</cstring>
>     </property>
>     <property stdset="1">
>         <name>geometry</name>
> --snap
> 
> wäre um Tips dankbar.
> 
> cu
> 
> --
> Roland Kruggel          mailto: rkruggel at bbf7.de
> System: AMD 1200Mhz, Debian woody, 2.4.20, KDE 3.1
> 

Ich hatte mal auch so ein Problem (QT3 Dateien zu bekommen und QT2 zu
brauchen)
Ich hatte da ein kleines Script gemacht, was mir das meiste rüberholte.

convert3_2.py qt3-file qt2-file

Das Teil kann zwar nicht alles, aber macht schon allerhand für seine
Einfachheit.


MfG
Rene Liebscher
-------------- nächster Teil --------------
#!/usr/bin/env python

# convert files from qt3 designer to qt2 designer format

# Copyright 2003 Rene Liebscher <R.Liebscher at gmx.de>
# this program is public domain
# if you have made some improvements to it, it would like to get the improved version if possible

# use it:
# convert3_2.py qt3-file qt2-file


from xmllib import TestXMLParser
from string import strip,join,split,atoi,find
import sys
import re

fo = sys.stdout


class UIParser(TestXMLParser):
    def __init__(self):
	TestXMLParser.__init__(self)

    def handle_data(self, data):
	fo.write(data)


    def start_widget(self, attrs):
	fo.write('<widget>')
	fo.write('<class>%s</class>' % attrs['class'])

    def end_widget(self):
	fo.write('</widget>')

    def start_property(self, attrs):
	fo.write('<property stdset="1">')
	if attrs['name'] == "paletteBackgroundColor":
	    attrs['name'] = "backgroundColor"
	if attrs['name'] == "paletteBackgroundPixmap":
	    attrs['name'] = "backgroundPixmap"
	fo.write('<name>%s</name>' % attrs['name'])

    def end_property(self):
	fo.write('</property>')

    def start_image(self, attrs):
	fo.write('<image>')
	fo.write('<name>%s</name>' % attrs['name'])

    def end_image(self):
	fo.write('</image>')

    def unknown_starttag(self, tag, attrs):
	s = ""
	for i in  attrs.keys():
	    s = '%s %s="%s"' % (s,i,attrs[i])
	fo.write('<%s%s>' % (tag,s))

    def unknown_endtag(self, tag):
	fo.write('</%s>' % tag)
    

import xmllib

def test(args = None):
    outfile = 'test.xml'
    global fo
    
    if not args:
        args = sys.argv[1:]


    if args:
        file = args[0]
    else:
        return

    if file == '-':
        f = sys.stdin
    else:
        try:
            f = open(file, 'r')
        except IOError, msg:
            print file, ":", msg
            sys.exit(1)

    if (len(args) > 1):
        outfile = args[1]

    if outfile != '-':
        try:
            fo = open(outfile, 'w')
        except IOError, msg:
            print file, ":", msg
            sys.exit(1)

    data = f.read()
    if f is not sys.stdin:
        f.close()

    fo.write("<!DOCTYPE UI>")
        
    x = UIParser()

    try:
        for c in data:
            x.feed(c)
        x.close()
    except RuntimeError, msg:
        print msg
        sys.exit(1)

    
if __name__ == '__main__':
    test()