On Tue, 2020-05-19 at 11:37 -0500, Jim wrote:
> On 5/18/20 8:20 PM, Mauricio Baeza wrote:
> > 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.ServiceMan
> > > ager
> > > "
> > >
> > > 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.
> >
>
> I am enhancing a python script that changes background colors based
> on
> hard coded color values. I would like to be able to enter the color
> I
> want to use as rgb and receive the color value back to be used in
> the
> color changing part of the script.
>
> I was googling for ways to use rgb values to get back a color value
> when
> I came across the libreoffice basic function that did what I wanted.
> That is the only reason I was looking at calling a basic function
> and
> getting a return value. I would much prefer a python solution but
> could
> not find one.
>
> Thanks, Jim
>
>
>
color = (r << 16) + (g << 8) + b
--
To unsubscribe e-mail to: [email protected]
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