[prev in list] [next in list] [prev in thread] [next in thread] 

List:       koffice-devel
Subject:    Re: Kword tables and DCOP scripting
From:       David Faure <dfaure () klaralvdalens-datakonsult ! se>
Date:       2003-05-22 9:35:53
[Download RAW message or body]

On Thursday 22 May 2003 11:04, Carl G Lewis wrote:
> Hi,
> 
> My removal of m_cells from KWTableFrameSet is going well, in fact I have a 
> patch that allows kword  to be compiled without it, but not all the 
> functionality has been converted.  The row operations work but have not been 
> tested much, and I have still to do column ops, split/join etc, but this is 
> not a lot of work.
> 
> My problem is that I need to write some testing scripts that will carry out 
> predefined sequences of table operations, there is just too much 
> functionality to get right to be able to do testing by hand.
> 
> I have been playing around with the DCOP python bindings and have written a 
> few scripts. I even found a (minor) bug and notified the maintainer (Julian 
> Rockey). But I'm not sure if the functionality exported via DCOP by kword is 
> adequate for my purposes. 
> 
> In a python script I can get all the actions via the view, but most of the 
> table-related actions pop up a dialog box, rather than actually completing 
> the operation directly, eg insert_table, delete row/col, split, etc. This is 
> alright as far as it goes, but not enough for automated testing.
> 
> I have played around with the dcop program as well, and can report that 
> executing a command similar to:
> 
> dcop kword-14036 "qt/kword-mainwindow#1/funky-splitter/unnamed1(KWView, 
> 0x8258508)/Insert Column Dialog/unnamed1(QWidget, 
> 0x818c720)/unnamed1(KDialogBaseButton, 0x83e55b0)" animateClick()
> 
> will activate the ok button on the dialog popped up when Table->InsertColumn
> is selected, thus inserting the column. 
> 
> This is unwieldy, but I suppose it would work for automated testing. The nice 
> thing is that the test is pretty much what the user does. I still don't know 
> how to select the table cells automatically though - I suppose the select* 
> functions should be added to  KWTableFrameSetIface ???

Feel free to do that.

> It would be nicer if you could get a DCOP reference to the currently opened 
> dialog from the kwview object ... ?
> 
> If traversing the qt object tree like this is an ok way to do testing, would 
> patches to koffice and/or kdelibs be accepted to add more names for the 
> objects?

Yes.

> (E.g. the fact that the dialog is called "Insert Column Dialog"  
> above is because I changed this in KWView::tableInsertCol(), normally it's 
> just unamed like the others.) Having the addresses printed out is a bit 
> annoying for scripting.
> 
> I have not been able to work out if it's possible to access the qt object tree 
> through python, but the perl dcop bindings can, or at least that is what the 
> manpage says. I haven't tried them so I don't know if the syntax is any 
> better than the cmd line client.
> 
> I thought about adding the table structure manipulation functions to 
> KWTableFrameSetIface as well, but its hard to see how this would fit in with 
> undo /redo, which is v. important to test.

Right, better have more high-level methods, like you suggest below.

> Another possibility is to add more functions to the KWordViewIface, or change 
> the signatures of the ones that are there - in addition to insertTable() 
> there would be insertTable(rows, cols, tabletemplate, height, width, inline) 
> which would insert a table at the current   cursor position without opening 
> the dialog. (and not waiting for a mouse click!)

Yes, this sounds good.
You don't only want to "test exactly what the user would do". You also
want a version of the functionality that doesn't involve popping up a dialog
at all, so that people can write scripts to automate operations in KWord,
without being bothered by a dialog.

> Or is there some other example in the code in which there is this kind of 
> automated functionality via DCOP, which is the "approved" solution? I read 
> the automation writeup and some of the DCOP chapter in the KDE programming 
> book, but they don't go into quite enough detail :-(
Hmm, I don't see what more there is to say. Add the missing methods to
the DCOP interfaces, and that's it, no?

-- 
David Faure -- faure@kde.org, dfaure@klaralvdalens-datakonsult.se
Qt/KDE/KOffice developer
Klarälvdalens Datakonsult AB, Platform-independent software solutions
_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic