On Tuesday 31 December 2002 07:12, Jim Bublitz wrote: > name() returns a QString, so > > print self.mimetype.latin1() > > should print the "appication/x-shellscript" and you should be able > to use the value of self.mimetype.latin1() as a Python string.
Yes, that works but now there's another problem, see below. One of the problems was, I think, that findByPath() never returns None, even if you ask for a file that doesn't exist. It seems instead you get some undefined result. But this is a problem with the KDE API, which never returns 0 (that's what the KDE documentation says). Anyway, I think I've now built a small test case which crashes. I've attached it, see the comment marked with "***". Make sure that the filename in self.url really exists. I get "KCrash: crashing...." but the crash dialog doesn't appear so I don't have a backtrace. Actually it doesn't always crash, but at least the problem that the returned name().latin1() contains random characters appears each time. Regards Daniel -- http://www.danielnaber.de
#!/usr/bin/python import sys from qt import * from kdecore import KApplication, KCmdLineArgs, KURL from kio import KMimeType, KServiceTypeProfile class MainWindow(QMainWindow): def __init__(self, ap): apply(QMainWindow.__init__, (self,)) self.url = "/home/dnaber/DesktopDig/test/test1.html" self.mimetype = KMimeType.findByPath(self.url).name() self.mimestr = self.mimetype.latin1() print "mimestr=%s (%s)" % (self.mimestr, type(self.mimestr)) self.offer = KServiceTypeProfile.preferredService(self.mimestr, "Application") print "offer=%s" % self.offer if self.offer: # *** the following line sometimes makes this script # crash (KCrash), it also crashes without .latin1(). It # also prints out "name=????ueror", the question marks # are random characters when I use .utf8() instead: name = self.offer.name().latin1() print "name=%s" % name print "isValid=%s" % self.offer.isValid() return def slotQuit(): app.quit() KCmdLineArgs.init(sys.argv, "testapp", "test", "0.1") app = KApplication() main_win = MainWindow(app) main_win.show() app.connect(app, SIGNAL("lastWindowClosed()"), slotQuit) app.exec_loop()