apso alternative script organizer for python APSO - Alternative Script Organizer for Python

Rating: ★ ★ ☆ ☆ ☆

Based on an original script from Hanya, APSO will install a macro organizer dedicated to python scripts.

apso alternative script organizer for python 0390dd6b 2e57 42e8 9f90 261b6c670c91

Description

APSO is compatible with OpenOffice

Based on an original script from Hanya, APSO is an extension that will install a macro organizer dedicated to python scripts.

Features

  • localisation (by now EN, DE, FR, IT, HU thanks to Tibor Kovács, NL thanks to Dick Groskamp, ES thanks to Francisco Gracia and JA thanks to Nogajun)
  • embedding scripts in or extracting them from documents
  • binding the extension with one's favorite code editor (thanks to another script from Hanya, see Options below)
  • quick edition of embedded scripts (but only in the context of the APSO extension*)
  • integrated gui debugger
  • interactive python interpreter
  • automatic update once installed

(* Changes will only be kept if APSO is either opened or closed after last save.)

How it works

APSO adds a new element Organize python scripts under menu Tools/Macros with default shortcut Alt+Shift+F11:

 

This new item or shortcut opens a dialog box that lists all python scripts and provides various actions:

 

The Execute  button launches the selected macro. Actions available under Menu button change according to the selection:

  • create module or library if selection is a container (My Macros, Office Macros or document)
  • Edit, rename, delete a module or library
  • Embed module from application (My Macros or Office Macros) into current document
  • Substitute an embedded module with an external file
  • Export an embedded module

Helpers

APSO comes with a small library apso_utils that contains some helpers for debugging purpose during macro writing. These helpers are four functions named msgbox, xray, mri and console and can be imported by a classic import statement like from apso_utils import msgbox

function description
msgbox

Like the oobasic build-in function msgbox, but simplified as only intended for quick debugging.

Signature: msgbox(message, title='Message', boxtype='message', buttons=1, win=None)

xray

Launches the introspection tool Xray by Bernard Marcelly (must be installed first)

Signature: xray(obj)

mri

Launches the introspection tool MRI by Hanya (must be installed first)

Signature: mri(target)

console

Emulates, as close as possible, the python interactive shell. What one can do with such a tool:
- interact directly with a document and test "live" the methods of the uno api (maybe also useful for other languages, such basic);
- quickly verify python expressions in the context of the embedded interpreter;
- display the output of a script running in parallel or started from the shell (all modules visible from the office program can be imported);
- debug a script using pdb's runcall function (will not work with scripts embedded in documents);
- get quick info on any function using the builtin help() command;
- explore living uno objects with introspection tools such as MRI or Xray (if installed);
- ...

Signature: console(**kwargs), where optional kwargs are intended to overwrite default gui values (BACKGROUND, FOREGROUND...) or to pass caller's locales and/or globals to the console context.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Example

from apso_utils import console, msgbox, mri, xray
def testhelpers():
    # console()
    # console(BACKGROUND=0x0, FOREGROUND=0xFFFFFF)
    loc = locals()
    loc.update(globals())
    console(loc=loc)

    doc = XSCRIPTCONTEXT.getDocument()
    # xray(doc)
    msgbox(doc.Title)
    mri(doc)

apso_console

 

 

 

 

 

 

 

 

 

 

Only the console macro is accessible outside an APSO instance. If someone wants to import the module apso_utils independently of APSO, he has to force that instanciation:
def entryfunc(event=None):
    ctx = XSCRIPTCONTEXT.getComponentContext()
    ctx.ServiceManager.createInstance("apso.python.script.organizer.impl")
    # now we can import apso_utils library
    from apso_utils import console
    console()

Integreted debugger

The debugger can be launched from the Apso "Menu" button when a function is selected in the main window.

Once the debugger opened, one can execute the code step by step, enter any called function, return to the caller, etc.

Break points are not supported, but you can jump ahead by double clicking any line below the current one within the same function.

You can check any caller state and scope by double clicking it in the "Stack" window (bottom left). If you have MRI or Xray installed, you can inspect any UNO variables by double clicking it in the "Scope" window (bottom right).

When you open a console window from the tool bar, the global and local scope will be automatically loaded.

If you edit the script while the debugger is running, changes will be taken in account after clicking "Restart".

The debugger uses the font name and height defined for the Basic IDE.

The debugger is still not fully localised

Apso debugger screenshot

APSO Options

The extension option page is available under Tools -> Extension Manager -> APSO -> Options.
By default, APSO uses the system defined editor. To edit scripts with a specific editor, provide the executable full path in the "Editor" field.
To allow the opening at a given line and column offset when relevant, enter in the "Options" field the command line syntax corresponding to the choosen editor, using the placeholders {FILENAME}, {ROW} and {COL} (they will be replaced in due time).
Example for Emacs: +{ROW}:{COL} {FILENAME}.
Example for Sublime Text: {FILENAME}:{ROW}:{COL}.

Homepage: https://gitlab.com/jmzambon/apso

Release List

  • Release Description Compatibility Operating Systems License Release notes  
  • 1.2.6.2 Add custom content of any new module 3.4 Linux, Windows, macOS AL

    The default header lines, inserted at creation of a new module, can now be customized from the option dialog.

    This release also fixes a bug in the option dialog, where the "back" button had no effect, and translates to english remaining french argument names.

    It also fixes a bunch of non blocking errors, with the help of Mike Kaganski.

    external link
  • 1.2.5 Add Japanese language, thanks to Nogajun contribution. 3.4 Linux, Windows, macOS AL external link
  • 1.2.4 Add Spanish language 4.4 Linux, Windows, macOS AL

    Translated by Francisco Gracia.

    Thanks to him. Gracias a el.

    external link
  • 1.2.3 Clean up debugger and apso_utils code. 3.4 Linux, Windows, macOS AL
    Fix a bug under OpenOffice, where splitter windows weren't
    properly closed on debug window closing, causing program crash.
    Other code clean up.
    external link
  • 1.2.2 Minor bug fixes. 3.4 Linux, Windows, macOS AL

    Move exposed functions (by now just "console") to a dedicated folder, apart from apso_utils module (v1.2.2.0).

    Change call to Mri in debugger (v1.2.2.1).

    Fix two minor bugs:

    - XSCRIPTCONTEXT global variable is sometime inconsistent in the console (v1.2.2.0)

    - "console" function was no more available outside APSO (v1.2.2.0)

     

     

    -------------------

    external link
  • 1.2.1 New integrated debugger tool and minor bug fixes in module and library naming. 3.4 Linux, Windows, macOS AL

    The debugger can be launched from the Apso "Menu" button when a function is selected in the main window.

    Once the debuuger opened, one can execute the code step by step, enter any called function, return to the caller, etc.

    Break points are not supported, but you can jump ahead by double clicking any line below the current one within the same function.

    You can check any caller state and scope by double clicking it in the "Stack" window (bottom left). If you have MRI or Xray installed, you can inspect any UNO variables by double clicking it in the "Scope" window (bottom right).

    When you open a console window from the tool bar, the global and local scope will be automatically loaded.

    If you edit the script while the debugger is running, changes will be taken in account after clicking "Restart".

    The debugger uses the font name and height defined for the Basic IDE.

    The debugger is still not fully localised

    Apso debugger screenshot

    external link
  • 1.2.0 New integrated debugger tool and minor bug fixes in module and library naming. 3.4 Linux, Windows, macOS AL

    The debugger can be launched from the Apso "Menu" button when a function is selected in the main window.

    Once the debuuger opened, one can execute the code step by step, enter any called function, return to the caller, etc.

    Break points are not supported, but you can jump ahead by double clicking any line below the current one within the same function.

    You can check any caller state and scope by double clicking it in the "Stack" window (bottom left). If you have MRI or Xray installed, you can inspect any UNO variables by double clicking it in the "Scope" window (bottom right).

    When you open a console window from the tool bar, the global and local scope will be automatically loaded.

    If you edit the script while the debugger is running, changes will be taken in account after clicking "Restart".

    The debugger uses the font name and height defined for the Basic IDE.

    The debugger is still not fully localised

    Apso debugger screenshot

    external link
  • 1.1.4 Code fixing and cleaning 3.4 Linux, Windows, macOS AL external link
  • 1.1.2 New console tool (see Menu button).
    Code clean up.
    4.0 Linux, Windows, macOS AL external link
  • 1.0.2 Bug fixes 4.0 Linux, Windows, macOS AL

    Fix a bug where APSO was not able to launch from a database subdocument (base form, query wizard...).

    Fix some other small bugs.

    external link
  • 1.0.0 First official release 5.0 Linux, Windows, macOS AL

    See main description page for more details.

    Tested on LibreOffice 5.x and OpenOffice 4.x. But should work on previous versions.

    external link

Other Extensions

APSO - Alternative Script Organizer for Python

Based on an original script from Hanya, APSO will install a macro organizer dedicated to python scripts.

★ 1.6666666666667

11-2020

CountStyle

Two Calc functions for counting cells or cell content by cell style. Compatible with both Apache OpenOffice and LibreOffice.

★ 5

11-2020

calCalc - Pop-up calendar for Calc

Simple, self-localized, gregorian type date picker for Calc

11-2020

Feedback

★ ★ ☆ ☆ ☆

Post your review

Reviews

  • Pucha Nov 6, 2020, 12:04 PM (22 days ago)

    ☆ ☆ ☆ ☆ ☆

    Hi
    I would like to create macros with LibreOffice and Apso. Could you please allow me to download "apso" to use it.
    Thanks
    Best regards

  • Pucha Nov 6, 2020, 12:01 PM (22 days ago)

    ☆ ☆ ☆ ☆ ☆

    Hi,
    I would like to create macros with LibreOffice. Could you, please, allow me I download "apso" to use it.
    Thanks
    Best regards

  • Patrick Rippes Oct 2, 2020, 1:34 PM (57 days ago)

    ★ ★ ★ ★ ★

    comment télécharger apso

    • jmzambon Nov 1, 2020, 5:58 PM (27 days ago)

      Hi,

      Just click on the first "External link" button in the release list above.

RSS feed for reviews on this page | RSS feed for all reviews