Hi Mathias,

Alle 22:25, lunedì 20 febbraio 2006, Mathias Bauer ha scritto:
[...]
> It doesn't make any sense to record a S&R action that does not
> automatically replace all occurences or no occurence and asks the user
> for every single case.
>
> A macro that e.g. only replaces the 3rd and the 5th occurence can't be
> applied to other documents in a useful way. 

I agree, but actually the user *can* record such actions, even if it doesn't 
make sense.

IMHO this kind of problems should be intercepted "before" , e.g. disabling 
certain actions or controls during the recording process.

I'm thinking for example to the mouse selection in Writer, or in this case, 
the button "replace" in the S&R dialog, or also multiple selections in Calc, 
and so on.

Disabling certain commands during recording would make the generated code more 
consistent and perhaps would improve easeness of use.

BTW if I well remember, in an old version (perhaps 1.1.2 ?) you used this 
technique in Writer (disabling mouse for text selections), but in 
subsequential version this feature disappeared.


> So what you need is "Replace
> All" and "Start Replacing and ask me each time". AFAIK the latter is
> possible only by dispatching because it's bound to a dialog while the
> S&R API of the "core" document explicitly is designed to avoid dialog
> interruptions.

I'm not sure to understand you:
If you record a S&R (in Calc) with the macro-recorder you will see 
that each time that you will press one of the 4 buttons available on the S&R 
dialog:
        Find
        Find all
        Replace
        Replace all

a dispatch ".uno:ExecuteSearch" will be recorded.

This dispatch has an argument that contains the information of which button 
has been pressed:

SearchItem.Command : 0=findFirst, 1=findAll, 2=replaceFirst, 3=replaceAll

So, back to my scenario:

My purpose, in a few words, is to translate automatically a dispatch based 
macro into a  "regular" API based macro.
(And BTW it's great to share thoughts with the author of the OOo's Macro 
Recorder :-)

To accomplish this, my service processes recorded dispatches one by one
So my macro-recorder should do the following task during the basic code 
generation:

(in 'very-pseudo' code)
for each recorded dispatches->
Is dispatch == ".uno:ExecuteSearch" ? ->
then check the SearchItem.Command ->

if SearchItem.Command==0 then use this API translation :
"oActiveSheet.findFirst(oDescriptor)"

elif SearchItem.Command==1 then use this API translation :
"oActiveSheet.findAll(oDescriptor)"

elif SearchItem.Command==2 then use this API translation :
"*****dont know*****"

elif SearchItem.Command==3 then use this API translation :
"oActiveSheet.replaceAll(oDescriptor)"

My problem is actually only the case SearchItem.Command=2 (replace first)
because I've not a direct API "traslation" for this command.


Thank you
Paolo Mantovani

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to