[PATCH] KProcess port of khelpcenter

Andreas Pakulat apaku at gmx.de
Sun Dec 16 21:07:20 GMT 2007


On 16.12.07 21:49:27, Ralf Habacker wrote:
> Oswald Buddenhagen schrieb:
>> On Thu, Dec 13, 2007 at 06:43:25PM +0100, Ralf Habacker wrote:
>>   
>>> appended is a patch which ports KHelpcenter to KProcess.
>>>     
> a major problem of porting K3Process to KProcess is that KProcess does not 
> provide a pointer to the K3Process in the exit signal.
>
> void TOC::meinprocExited( K3Process *meinproc )
>
> This makes it able to identify the object and destroy it in the related 
> slot.
>
> In KProcess there is no such signal available which requires to have a 
> KProcess pointer be defined in the related class and additional effort to 
> handle multiple calls. As an alternative a List of KProcess pointer could 
> be used, but how could the related KProcess object be detected in the 
> finish slots ?  (Because of this I refactored searchhandler.cpp/h to have a 
> single KProcess instance in each SearchJob)

Thats the reason why Qt has QSignalMapper.

> Another issue is the multibyte handling described in 
> http://techbase.kde.org/Development/Tutorials/Common_Programming_Mistakes#Reading_QString_from_a_KProcess.
>
> Wouldn't it be better to implement specific signals in KProcess or a 
> subclass to avoid that this has to be fixed on every place where KProcess 
> is needed ?

Well, its not exactly easy to make this work properly. Check 

trunk/kdevplatform/util/processlinemaker.*

and if the user of KProcess simply reads the output _after_ the exit of
the process all that extra stuff is not needed at all. Yeap, we could
create a convenience class in kdelibs for 4.1, if we find at least 3
users outside of it. 

Andreas

-- 
A vivid and creative mind characterizes you.




More information about the kde-core-devel mailing list