Date: prev next · Thread: first prev next last
2020 Archives by date, by thread · List index


On Mon, 2020-05-18 at 20:00 -0500, Jim wrote:
On 5/17/20 11:10 PM, Mauricio Baeza wrote:
On Sat, 2020-05-16 at 20:26 -0500, Jim wrote:
I started experimenting with calling a basic function from a
python
script. I was surprised that without to much trouble I got it to
work
to
a certain extent.

I am working on linux Mint.

I started with a basic Sub I found. In it's original form it had
3
rgb
values hard coded and it popped up a message box that displayed
the
color value from the rgb input. I rewrote it as a Function that
took
the
rgb values as parameters.

Here is the basic:

Function ColorExampleFunc(r as long, g as long, b as long)
Dim lVar As Long
lVar = rgb(207,231,245)
msgbox "The color " & lVar & " consists of:" & Chr(13) &_
"red= " & red(lVar) & Chr(13)&_
"green= " & green(lVar) & Chr(13)&_
"blue= " & blue(lVar) & Chr(13) , 64,"colors"

end function

Here is the python:

#test_basic.py
import os

result = os.system('soffice
"macro:///Standard.Module1.ColorExampleFunc(207,231,245)"')

This works as it will pop up the message box with the color value
displayed. What I need to do is capture that color value (which
is
usually an eight digit number) in variable in the python script.

I printed result and it was equal to 0.

It's been a long time since I did anything in basic. I imagine I
would
have to get rid of the msgbox code and set the rgb values equal
to a
variable and then return them, but I'm not sure how to do it.

Does anyone know how to get the color value in the python script?

Thanks, Jim



You need used MasterScriptProviderFactory

Change the original Basic function to:

Function ColorExampleFunc(r As Integer, g As Integer, b As Integer)
As
Long
    ColorExampleFunc = RGB(r, g, b)
end function

Then you can call, look my example:
https://gitlab.com/snippets/1977700


Best regards


Mauricio,

Thanks for sharing your script with me. I ran it but got a
Segmentation 
fault. I scattered some print()'s throughout the script and it looks 
like this is the line that may be causing the problem.

script = factory.createScriptProvider('').getScript(url) which is in
the
def _call_macro_basic(location, args) function. Execution does not 
continue past that line.

I have been working on automating some of my worksheets using
OOSheet. 
This means that I must start libreoffice calc like this:

libreoffice /home/jfb/Dev/Test_OOSheet.ods 
--
accept="socket,host=localhost,port=2002;urp;StarOffice.ServiceManager
"

Maybe this is why the script works for you and gives me the
Segmentation 
fault. I am going to keep trying get it to work for me as I think it 
offers me the best chance of doing what I want to do.

Thanks,  Jim




The script work fine, if you execute into LibreOffice. If you want
execute outside LibreOffice, you need used other technique.

But, if you tell me "exactly" your context and that you "exactly" want,
I can help you, but I don't like to guess. 




-- 
To unsubscribe e-mail to: users+unsubscribe@global.libreoffice.org
Problems? https://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: https://wiki.documentfoundation.org/Netiquette
List archive: https://listarchives.libreoffice.org/global/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.