Re: [PyKDE] Suggestions for 3.6 :)
Jul wrote: As you greatly implemented the bash lexer, it would be nice to have an optional integrated shell console (standard one) as the Python console. If not too hard... It might be interesting to use IPython for the Python console since it can do shell commands as well as Python. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] PyQT, QMainWindow and OpenGL
dunk wrote: i have generated a file with pyuic and its all great. the main content of the window is open gl. before the opengl widget works perfectly outside the form i have generated. the trouble is that running inside the form it only receives mouse movement events when a button is pressed! no good :) i tried overriding the function mouseMoveEvent in my generated form but it doesnt seem to get called. Is there any way to get these events from the form? Try setting the mouseTracking property to true. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Confused on connects.
Hihn, Jason wrote: def 'Canceled' (): print 'Canceled' The above should be: def cancelled(): print 'Cancelled' a=QApplication(sys.argv) w=QWidgetFactory.create('network.ui') a.connect(a, SIGNAL(lastWindowClosed()), a, SLOT(quit())) Cancel=w.child('buttonCancel') # HOW DO I CONNECT THIS TO THE Canceled() ABOVE? a.connect(Cancel, SIGNAL(clicked()), a, SLOT('Canceled()')) # does not work QApplication does not define a 'Canceled()' slot. To connect the cancel button's 'clicked()' signal to the cancelled function above, use the following: a.connect(Cancel, SIGNAL(clicked()), cancelled) I would recommend that you read both the Qt and PyQt docs on slots and signals. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Threading QApplications. Possible?
Trost Johnson wrote: Suppose the minimal program: def foo(): app=QApplication(sys.argv) button=QPushButton(Hello World, None) app.setMainWidget(button) button.show() app.exec_loop() And I say thread.start_new_thread (foo, ()) Then the python console freezes Is it not possible o thread up multiple QApplications? How is this achieved? A couple of things to note here: 1. The Python threading module is higher-level and easier to use than the lower-level thread module. 2. I don't think Python and Qt threading mix well, so you should use QThread and related classes rather than Python threading. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] ANN: new eric snapshot
Hi Detlev, When running a script (using F2) that creates a threading.Thread, I get the following error in the Python-Shell when I call the thread's start(): Unhandled exception in thread started by bound method DebugThread.bootstrap of DebugThread.DebugThread instance at 0x421b03ec The following snippet of code should reproduce the problem: from threading import Thread def run(): print test t = Thread(target=run) t.start() The error does not occur when I run the script from the commandline. Thanks, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Vertical alignment of a QLabel in the StatusBar..
Timothy Grant wrote: Thanks to some help from here I've conquered my first geometry management problem. I now have a QStatusBar into which I am placing some text in a QLabel object. It works exactly as advertised. However, the text appears low on the StatusBar, and I'd love to have some control over it's vertical placement as it looks a bit odd. Is this possible? Try: statusBar.setAlignment(Qt.AlignVCenter) The PyQt API corresponds very closely to the normal Qt API, so you can use the http://doc.trolltech.com/ reference to find out stuff like this. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] A simple PyQt program
Joshua wrote: TypeError: update() takes exactly 2 arguments (3 given) I don't understand this, since I only gave update 2 arguments. If anyone could shed some light on this, I'd greatly appreciate it. Here's the code: This is something fairly fundamental to Python programming, so you have to make sure that you understand how this works. When you have a class with a method: class Foo: def bar(self, x): print x And you call that method on an instance of the class: f = Foo() f.bar(abc) The instance, f, is automatically passed as the first argument to the function before any other arguments that are provided in the call. Therefore, when you declare methods in a class they must have a self parameter as the first parameter. There's more to this than I've explained here so you should read a Python book or online manual. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] eric3 question ... project
Dave S wrote: ...mmm... refactoring ... some kind of speeding up ? - Ill give it a whirl. Refactoring is the process of incrementally improving the design/implementation of code while retaining its behaviour. An example of a particular refactoring is Extract Method, where a code fragment is turned into a separate method with a name which explains its purpose. One of the simpler refactorings is Rename -- renaming a class or a method or a field to better reflect what it is. The point of using a tool to perform the renaming is that it should change all references so that the program continues to function afterwards. Refactoring is easily done in statically-typed languages such as Java but it's somewhat harder in dynamically-typed languages such as Python. Martin Fowler wrote a book on refactoring, called Refactoring ;) which is considered recommended reading. He also maintains a website on the subject: http://www.refactoring.com/. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Newbie MDI question
John Fabiani wrote: When I create a QMainWindow (my main window) I add my menu's etc...from my menu actions I want to open a window in the space below the menu. The type of window is the question. Is the type of the new window also a QMainWindow (my child window)without menu's? If this is correct - can the child window receive events from the main window menu/toolbar etc... If not what is the correct type of window do I use? Your main window should contain a single QWorkspace widget which is then the container for QWidgets which are rendered as MDI child windows. For more information: http://doc.trolltech.com/3.2/qworkspace.html Ciao, Gordn ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Implementing un-enabled Qt modules
Eron Lloyd wrote: How difficult would it be to provide wrappers for modules in Qt currently not enabled in PyQt, such as XML and Networking? In developing applications, I can see the benefits of having a single API for even these items as opposed to the python equivalents. Since your application is written in Python and will be the same across all platforms, why not use the Python XML and networking APIs? They're more pythonic and should be easier to use than the designed-for-C++ Qt APIs. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[PyKDE] PyKDE 3.8 compilation error
Hi all, Since KDE 3.1.5 is now in Debian unstable I have finally upgraded from the Woody 3.1.4 debs (which were compiled with gcc-2.95) to the Debian unstable KDE debs (which are compiled with gcc3). This allows me to use Ricardo's python-qt3, etc. debs. So I have the 3.8 version of the python-qt3, etc. debs installed from Debian unstable and I'm trying to compile PyKDE 3.8 and it complains about a parse error in qtmod.sip. Here's the full build output: ### [EMAIL PROTECTED]:~/downloads/python/pykde/PyKDE-3.8.0$ python2.3 build.py -k /usr -s /usr/lib/python2.3/site-packages -v /usr/share/sip/qt Building PyKDE 3.8 on linux2. Python version is 2.3 Python parent directory is /usr/lib/python2.3 Python library directory is /usr/lib/python2.3/config Python include directory is /usr/include/python2.3 Home directory is /home/gordon sip code generator path (sip) is /usr/bin sip version is 3.8 sip lib directory (libsip*) is /usr/lib/python2.3/site-packages sip include directory (sipQt.h) is /usr/include/python2.3 Qt3 parent directory is /usr/share/qt3 Qt3 lib directory (libqt-mt.so.3) is /usr/share/qt3/lib Qt3 include directory (qglobal.h) is /usr/share/qt3/include Qt version is 3.2.3 PyQt lib directory is /usr/lib/python2.3/site-packages PyQt lib version is 3.8 PyQt sip files directory is /usr/share/sip/qt PyQt sip version is 3.8.1 KDE3 parent directory is /usr KDE3 library directory (libkdecore.so) is /usr/lib KDE3 include directory (kapplication.h) is /usr/include/kde build/discover.py:253: FutureWarning: xy losing bits or changing sign will return a long in Python 2.4 and up self.versNum = int (self.major) 16 + int (self.minor) 8 + int (self.micro) KDE version is 3.1.5 make program is make Makefile generator path (qmake) is /usr/share/qt3/bin Install directory is /usr/lib/python2.3/site-packages Component versions are compatible (3.8) Qt thread support is enabled. Checking to see if the C++ compiler supports -fno-exceptions. g++ -c -pipe -w -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -fno-exceptions -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/python2.3 -I/usr/include/qt3 -I/usr/include/kde -I/usr/include/qt3 -o qttest.o qttest.cpp g++ -o qttest qttest.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread The C++ compiler supports -fno-exceptions. rm -f qttest.o rm -f *~ core *.core Generating the features file. g++ -c -pipe -w -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -fno-exceptions -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/python2.3 -I/usr/include/qt3 -I/usr/include/kde -I/usr/include/qt3 -o qttest.o qttest.cpp g++ -o qttest qttest.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread /tmp/tmpW40fN6 Generated the features file. Generating the Makefile for the pythonize module. Generating the Makefile for the pythonize/test module. Generating the Makefile for the pykpanelapplet module. Generating the C++ source for the dcop module. sip: /usr/share/sip/qt/qtmod.sip:34: parse error /usr/bin/sip failed with an exit code of 256. An internal error occured. Review the installation documentation or report all the output from the program, including the traceback, to the PyKDE mailing list: [EMAIL PROTECTED]. Thanks. Traceback (most recent call last): File build.py, line 1038, in ? main (sys.argv) File build.py, line 1031, in main generateSipLibs (siplibs) File build.py, line 911, in generateSipLibs generateSipLib (mod, platformTag, qtTag) File build.py, line 690, in generateSipLib runProgram (dis.sipBin.bin, argv) File build.py, line 641, in generateSipLib shutil.rmtree (mname) File /usr/lib/python2.3/shutil.py, line 140, in rmtree raise exc[0], (exc[1][0], exc[1][1] + ' removing '+arg) OSError: [Errno 2] No such file or directory removing dcop ### Line 34 of qtmod.sip says: ### static unsigned PYQT_VERSION = 0x030801; ### Any ideas? Are there debs for PyKDE 3.8? Thanks, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Updating PyQt widgets question
Eric Williams wrote: I've re-written my app so that it uses a QTimer and timerEvent method to update the widgets, and that the long-running routine (actually an FTP download) runs in a thread; that works like I expected. I guess my question is, is using a QTimer the 'correct' way to update widgets during an expensive routine like the one above? And what sort of widgets can be reliably updated from within a function? QTimer is one way to go. You could also post custom events from your long-running thread to the GUI thread and have your widgets process those events to update their state. Be sure to read this: http://doc.trolltech.com/3.2/threads.html, especially the part about Thread-safe Event Posting. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Need to know who triggers a callback?
kscalet wrote: Gordon Tyler wrote: kscalet wrote: what would be the best approach in finding out, if a signal is send due to a real gui action like key-presses and mouse-clicks, or due to a programmatic action like setButton, setCurrentText, etc on a specific widget. It's often needed to trigger some action only in the former case, so I assume, there is an easy way to find out the source of action, but did not find it out myself. http://doc.trolltech.com/3.2/qobject.html#sender This looks more like a solution to my 2nd problem. Or is there some more info I can get from the sender (activated by gui-clicking / activated by set-function)? As of Phil, there isn't. What are you actually trying to accomplish here? What is the specific case? http://doc.trolltech.com/3.2/qsignalmapper.html If I understand this correctly, it would give me a nice way to, say, map 3 QButtons (no data!) to one slot. Yep. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Qt data structure support
Eron Lloyd wrote: Moving from Python to assembler would be an effort of insanity ;-). I guess I was simply thinking of the large number of overlap between Qt and Python, for areas such as container types, network sockets, threads, XML, datetime, etc. and wondering whether it was better to go one way or the other. I wonder if Since Python is the language in which you're implementing your application, to me it makes sense to use the facilities provided by the language and its builtin libraries before using a third-party library such as Qt. The exception being where the use of some non-overlapping Qt classes (e.g. the GUI stuff) requires the use of overlapping Qt classes (QThread I believe might be one). I personally find the Python data structures far easier to use than any C++ based structures. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] PyKDE update
On September 29, 2003 01:38 am, Jim Bublitz wrote: The next release will also support KDE 3.1.4. That's already done too, and doesn't have any major changes affecting PyKDE. Current releases will probably build against KDE 3.1.4 as is. Good news. I've recently upgraded my machine from Debain testing to unstable, including the default gcc from 2.95 to 3.3 but keeping KDE 3.1.4 from kde.org/stable and I haven't recompiled sip/PyQT/PyKDE yet. I'll let you know if I encounter any problems. I've also test-generated PyKDE3.2alpha1 and fixed a few problems with my sip file generator. I won't be releasing a PyKDE version for PyKDE3.2 until I can get KDE3.2 binaries to install and test against - compiling KDE from source just looks too time-consuming at the moment. Use Konstruct. Also the first KDE 3.2 alpha had quite a few compile problems which I couldn't figure out, but the second KDE 3.2 alpha compiled fine. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] QPushButton
GuineaPig wrote: I'm working with pyQt and I have a widget with 40 QPushButtons (toggles). On 'toggled()' the buttons emit a signal to a function. In this function I'd like to find out wich button was pressed. I'm thinking about iterating through all the buttons to check theirs state but I can't seem to find how to do this in the docs. Can someone point me in the right direction ? Should I handle this differently ? You might want to try QSignalMapper: http://doc.trolltech.com/3.2/qsignalmapper.html Code looks something like this (untested): def initGUI(self): sigmap = QSignalMapper(self) pushButton1 = QPushButton(Button 1, self) self.connect(pushButton1, SIGNAL(toggled(bool)), sigmap, SLOT(map()) sigmap.setMapping(pushButton1, 1) pushButton2 = QPushButton(Button 2, self) self.connect(pushButton2, SIGNAL(toggled(bool)), sigmap, SLOT(map()) sigmap.setMapping(pushButton2, 2) self.connect(sigmap, SIGNAL(mapped(int)), self.buttonPushed) def buttonPushed(self, index): print Button #%d pushed % index Unfortunately, it does look like the toggled signal's bool on parameter can't be carried through but since you'll know which QPushButton it is, you can easily check it's state. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Listbox returns dictionary key?
On August 6, 2003 11:31 pm, Peter Clark wrote: self.connect(self.listBox, SIGNAL(selected(int)), self.printWhatWeSelected) returns '0' if I select cat, '1' for 'dog', etc. To get the dictionary value for that selection, I could do d[k[int]] but this requires that I pass both d and k to the respective function, or make them both global. Is it possible for the listbox to report the text of what was selected, so that I could just use the text as the key? Looking at http://doc.trolltech.com/3.1/qlistbox.html, it seems you could use the selected(const QString ) signal. Also, what magic is required for changing the signal to clicked() rather than selected()? I tried both clicked() and clicked(int) but got an error saying: QObject::connect: No such signal QListBox::clicked(int) QObject::connect: (sender name: 'listBox') QObject::connect: (receiver name: 'unnamed') Try the clicked(QListBoxItem *) signal. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] PyKDE - almost
Jim Bublitz wrote: package it, so I hope to have it available by Wednesday, and certainly no later than the end of the week. Excellent news! Are you going to consider KDE 3.1.3 (just released last week) for a future -X release? 3.7. There are a bunch of bug reports and patches pending from the list (Pete's SMP patch, a bunch of stuff Gordon Tyler worked on, and some other stuff). I'll be getting to that next (after I think most, if not all, of my patches were to get PyKDE compiling with sip/PyQt 3.6, so there may not be anything of value in them since you've already accomplished that. [1] My servers had been up 459 days 12 hours when I had to shut them down. Ugh. You have my sympathies ;) I'm looking forward to the new version. Now if only I could figure out my PyQt segfault problem, everything would be peachy 8) Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] IOSlaves - initial attempts
Wido Depping wrote: On Monday 07 July 2003 23:08, Kasper Souren wrote: Cool. I am interested in controlling noatun myself. Can this be done with IOSlaves? playlist, too. Somewhere on the web is a tutorial for using dcop. In python you would spawn a dcop-process with the needed parameters. That's all. You don't need to execute a dcop process from python since PyKDE provides Python bindings for the dcop library. I think the KDE project also provides its own dcop bindings for Python which are implemented differently and cover a different subset. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
[PyKDE] QT/Mac to be licensed under GPL
Hi all, I just saw this press release on Trolltech's site: http://www.trolltech.com/newsroom/announcements/0129.html Trolltech today announced that Qt/Mac will be released under the GPL (GNU General Public License) at Apple's World Wide Developer Conference (WWDC) 2003 in San Francisco on June 23rd. Phil, would you consider porting sip/PyQt to Qt/Mac in light of this? Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] newbie question about dealing with Images in pyQt
Adam Shimali wrote: I assume I need to create a QImage object from each image file name. Can I then place each image in a QGridLayout or do I need to put the image on a panel and then stick each panel into the grid? A QGridLayout is a layout manager. It has to be used in combination with a container widget to do actually anything. So you would use a panel (e.g. QFrame or QWidget) which uses a QGridLayout for it's layout manager and then you would add QImages to the panel with the appropriate layout constraints that would place them in the correct grid location. Also would it make sense to place the grid directly into a QFrame? If this grid of images is a logical self-contained component, then it might be better to use a QWidget which can then be embedded in some other container widget like QFrame or QDialog depending on where you need to use it. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde
Re: [PyKDE] Segmentation fault with latest snapshot of sip PyQt
On June 1, 2003 04:35 pm, Phil Thompson wrote: It works fine for me. What version did it last work for you? A gdb backtrace would be useful. I was previously using sip 3.6 and PyQt 3.6. Here's the gdb backtrace for examples3/addressbook.py: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 16384 (LWP 5568)] 0x400f9a93 in __dynamic_cast () from /usr/lib/libstdc++.so.5 (gdb) bt #0 0x400f9a93 in __dynamic_cast () from /usr/lib/libstdc++.so.5 #1 0x414b561f in HighColorStyle::eventFilter () from /usr/lib/kde3/plugins/styles/highcolor.so #2 0x4048cb10 in QObject::activate_filters () from /usr/lib/libqt-mt.so.3 #3 0x4048c9f1 in QObject::event () from /usr/lib/libqt-mt.so.3 #4 0x404b9375 in QWidget::event () from /usr/lib/libqt-mt.so.3 #5 0x411b3341 in sipQPushButton::event (this=0x82c8a90, a0=0x82c9758) at sipqtQRadioButton.cpp:3382 #6 0x4043c4da in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #7 0x4043c2e4 in QApplication::notify () from /usr/lib/libqt-mt.so.3 #8 0x413fabb4 in sipQApplication::notify (this=0x824a5f8, a0=0x82c8a90, a1=0x82c9758) at sipqtQApplication.cpp:221 #9 0x4043d1bd in QApplication::sendPostedEvents () from /usr/lib/libqt-mt.so.3 #10 0x404b8e1f in QWidget::polish () from /usr/lib/libqt-mt.so.3 #11 0x411b46ee in sipQPushButton::polish (this=0x82c8a90) at sipqtQRadioButton.cpp:3709 #12 0x4055b52b in QPushButton::sizeHint () from /usr/lib/libqt-mt.so.3 #13 0x411b9f7e in sipDo_QPushButton_sizeHint (sipThisObj=0x82cfbb0, sipArgs=0x810c0cc) at sipqtQPushButton.cpp:2818 #14 0x080d465a in PyCFunction_Call () #15 0x080761be in Py_MakePendingCalls () #16 0x08076ba7 in PyEval_EvalCodeEx () #17 0x080779eb in PyEval_CallObjectWithKeywords () #18 0x08076119 in Py_MakePendingCalls () #19 0x08076ba7 in PyEval_EvalCodeEx () #20 0x080c8829 in PyStaticMethod_New () #21 0x080b664c in PyObject_Call () #22 0x080bd2c0 in PyMethod_Fini () #23 0x080b664c in PyObject_Call () #24 0x08077813 in PyEval_CallObjectWithKeywords () #25 0x080b808a in PyInstance_New () #26 0x080b664c in PyObject_Call () #27 0x08077a87 in PyEval_CallObjectWithKeywords () #28 0x080760a0 in Py_MakePendingCalls () #29 0x08076ba7 in PyEval_EvalCodeEx () #30 0x080779eb in PyEval_CallObjectWithKeywords () #31 0x08076119 in Py_MakePendingCalls () #32 0x08076ba7 in PyEval_EvalCodeEx () #33 0x080c8829 in PyStaticMethod_New () #34 0x080b664c in PyObject_Call () #35 0x080bd2c0 in PyMethod_Fini () #36 0x080b664c in PyObject_Call () #37 0x08077813 in PyEval_CallObjectWithKeywords () #38 0x080b808a in PyInstance_New () #39 0x080b664c in PyObject_Call () #40 0x08077a87 in PyEval_CallObjectWithKeywords () #41 0x080760a0 in Py_MakePendingCalls () #42 0x08076ba7 in PyEval_EvalCodeEx () #43 0x08078e06 in PyEval_EvalCode () #44 0x0809c0ad in PyRun_FileExFlags () #45 0x0809b993 in PyRun_SimpleFileExFlags () #46 0x080532be in Py_Main () #47 0x08052e7f in main () #48 0x4015ea51 in __libc_start_main () from /lib/libc.so.6 Seeing as how the KDE HighColor style plugin was the last library involved, I just tried changing the Qt style from HighColor to Windows using qtconfig and now addressbook.py runs without crashing. Keramik also works, but B3 and Default don't, probably because they're based on the HighColor plugin and Keramik is not. Ciao, Gordon ___ PyKDE mailing list[EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde