Hi- unless I am missing it, I don't see this option under my version.
thanks Sent with Proton Mail secure email. ------- Forwarded Message ------- From: Jim McNamara <[email protected]> Date: On Tuesday, September 23rd, 2025 at 8:30 AM Subject: Re: [libreoffice-users] search path not working user profile versus system wide lo base macros in Ubuntu To: HORVÁTH-MILITICSI Attila <[email protected]> > Hi- > > I didn't see anything under Tools and Personalize except some theme options. > I went in under base and just 'libreoffice'. > > thanks > > > > > Sent with Proton Mail secure email. > > > On Tuesday, September 23rd, 2025 at 7:50 AM, HORVÁTH-MILITICSI Attila > [email protected] wrote: > > > Dear Jim, > > > > Your problem can be solved simply - don't touch the "organize Python > > Scripts". You go into Tools and then Personnalize. Nothing else. It > > works both under win and Ubuntu. Whatever the type of the LO under win > > or Ubuntu. > > > > Pleasant day > > > > Attila, from Novi Sad > > > > On 9/23/2025 5:11 AM, Jim McNamara wrote: > > > > > Hi this is a problem i am having and a conversation with gemini the ai. > > > LO is not letting me use the script profile correctly. I run lo using apt > > > package manager through Ubuntu 22.04. > > > My code is not letting me run this location from within libreoffice. I go > > > to Tools->Organize Python Scripts-> Execute and it doesnt work with my > > > user profile. It goes to location=application and searches backward in > > > that dir first which is out of order because if I hadve a dialog in > > > system wide it searches there first and then falls back to user. Only > > > location=application is working with DIALOG_URL = > > > "vnd.sun.star.script:Standard.Dialog1?location=application" If i run it > > > in code specified like this my dialog shows -- otherwise No. I will > > > include the code i am testing a the end of this email. > > > > > > Thanks so much for considering helping me resolve this because my scripts > > > will not be portable or able to be used in a business that I am not the > > > administrator for which is unlikely. > > > > > > Have the coolest of days. > > > > > > thanks again - j. > > > > > > I am using Version: 24.2.7.2 (X86_64) / LibreOffice Community > > > Build ID: 420(Build:2) > > > CPU threads: 8; OS: Linux 6.14; UI render: default; VCL: gtk3 > > > Locale: en-US (en_US.UTF-8); UI: en-US > > > Ubuntu package version: 4:24.2.7-0ubuntu0.24.04.4 > > > Calc: threaded > > > > > > You are correct that the URL > > > DIALOG_URL = "vnd.sun.star.script:Standard.Dialog1?location=application" > > > is strange in this context. Given the file path you provided, the > > > location=application part of the URL is incorrect and will cause an error. > > > Here is an explanation of why and how to fix it: > > > The problem with location=application > > > The location=application argument in the URL tells LibreOffice to look > > > for the script or dialog in the application's shared directory, which is > > > a system-wide directory. Your files, however, are in your user profile: > > > /home/funnysys/.config/libreoffice/4/user/basic/Standard. > > > The correct URL needs to specify location=user so that LibreOffice looks > > > in the correct place, which is your user profile. > > > Correct URL for a Python script > > > To call a Basic dialog (Dialog1 from the Standard library) from a Python > > > macro, you must instantiate it from the correct location. > > > If your Python macro is calling a Basic macro > > > If your Python script is simply triggering a Basic macro that handles the > > > dialog, the URL should point to the Basic macro itself. > > > python > > > > > > # Calls a macro named 'Main' inside Module1.xba > > > DIALOG_URL = > > > "vnd.sun.star.script:Standard.Module1.Main?language=Basic&location=user" > > > > > > Use code with caution. > > > If your Python macro is opening the dialog directly > > > If your Python macro is responsible for instantiating the dialog, the > > > process is different. The Python script would get the dialog from the > > > correct library and then run it. The URL would not be used in the same > > > way. > > > Instead, a Python macro would use the UNO framework to get the dialog > > > from the Standard library in the user's profile and then execute it. The > > > code might look something like this: > > > python > > > > > > import uno > > > > > > def run_dialog(): > > > # Get the LibreOffice Basic libraries > > > basic_libraries = > > > uno.getComponentContext().getServiceManager().createInstance( > > > "com.sun.star.script.provider.MasterScriptProviderFactory" > > > ).createScriptProvider("") > > > > > > # Get the user's Standard library > > > user_script_library = basic_libraries.getLibrary("Standard", "user") > > > > > > # Load the dialog from the library > > > dialog_container = user_script_library.getDialogContainer() > > > oDialog = dialog_container.getByName("Dialog1") > > > > > > # Create the dialog model > > > dialog_model = > > > uno.getComponentContext().getServiceManager().createInstance("com.sun.star.awt.Dialog") > > > dialog_model.setModel(oDialog.createUnoModel()) > > > > > > # Execute the dialog > > > dialog_model.execute() > > > > > > Use code with caution. > > > dialog.xlc and script.xlc > > > The .xlc files are cache files that LibreOffice uses for faster access to > > > the Basic libraries. They store information about the modules > > > (script.xlc) and dialogs (dialog.xlc) in the library. You should never > > > edit these manually. They are automatically created and updated by > > > LibreOffice when you use the Macro Organizer. > > > In summary > > > The URL vnd.sun.star.script:Standard.Dialog1?location=application will > > > fail because your files are in the user profile, not the system-wide > > > application folder. The location parameter must be changed from > > > application to user for the call to work correctly from a Basic macro. > > > For a Python macro, you would use UNO to access the dialog > > > programmatically from the correct location. > > > > > > # -- coding: utf-8 -- > > > from future import unicode_literals > > > > > > import uno, unohelper > > > from com.sun.star.awt import XDialogEventHandler > > > from com.sun.star.lang import IllegalArgumentException > > > > > > _DLG_PROVIDER = "com.sun.star.awt.DialogProvider2" > > > DIALOG_URL = "vnd.sun.star.script:Standard.Dialog1?location=user" > > > > > > class Console(unohelper.Base, XDialogEventHandler): > > > """ Access2Base Console Handler """ > > > > > > def show(self, ctx, smgr): > > > """Creates and executes the dialog using the provided context.""" > > > > > > # Create dialog with handler. > > > dp = smgr.createInstanceWithContext(_DLG_PROVIDER, ctx) > > > > > > try: > > > # Note: location=user is typically for "My Macros & Dialogs" > > > dialog = dp.createDialogWithHandler(DIALOG_URL, self) > > > dialog.setTitle("Konsole") > > > > > > # Execute the dialog. > > > dialog.execute() > > > > > > except IllegalArgumentException as e: > > > # Handle error if dialog is not found. > > > self._msgbox(f"Dialog not found: {DIALOG_URL}\nError: {e.Message}", > > > "Dialog Error") > > > except uno.Exception as e: > > > self._msgbox(f"UNO Exception: {e.Message}", "UNO Error") > > > > > > # The method handles the dialog's events (not part of IDE testing) > > > # The handles method is a requirement of XDialogEventHandler > > > def handleEvent(self, event): > > > return False > > > > > > def getSupportedMethodNames(self): > > > return () # Empty tuple since no custom methods are supported in this > > > example. > > > > > > def _msgbox(self, prompt, title): > > > """Helper function for displaying message boxes.""" > > > try: > > > # Get the desktop window as a parent for the message box. > > > ctx = uno.getComponentContext() > > > toolkit = > > > ctx.getServiceManager().createInstance("com.sun.star.awt.Toolkit") > > > parent = toolkit.getDesktopWindow() > > > > > > mb = toolkit.createMessageBox(parent, "infobox", 1, title, prompt) > > > mb.execute() > > > except Exception: > > > # Fallback for IDE testing > > > print(f"[{title}] {prompt}") > > > > > > def ConsoleHandler(): > > > """Main entry point for the LibreOffice macro.""" > > > try: > > > # Get the component context provided by LibreOffice. > > > ctx = XSCRIPTCONTEXT.getComponentContext() > > > smgr = ctx.getServiceManager() > > > Console().show(ctx, smgr) > > > except NameError: > > > # This will be caught when running outside LibreOffice. > > > print("This function cannot be run outside of LibreOffice.") > > > > > > g_exportedScripts = (ConsoleHandler,) > > > > > > if name == "main": > > > # IDE runnable code: uses a mock LibreOffice environment. > > > # We explicitly avoid the graphical parts here. > > > from IDE_utils import Runner > > > with Runner(): > > > print("Simulating ConsoleHandler, but skipping GUI interactions.") > > > # We cannot create the dialog handler correctly here, so we skip it. > > > > > > Sent with Proton Mail secure email. > > > > > > Sent with Proton Mail secure email. -- 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
