[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: Kword tables and DCOP scripting
From: Carl G Lewis <carll () optushome ! com ! au>
Date: 2003-05-22 9:04:28
[Download RAW message or body]
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 ???
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? (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.
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!)
So there are a few possibilities. I am hoping that someone with more DCOP /
kword knowledge can advise where I should add DCOP methods and
what their signatures might be, or how I can go about this automated testing
generally.
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 :-(
thanks,
Carl.
_______________________________________________
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