Elementare Frage zu Python in OO
Moderator: Moderatoren
Elementare Frage zu Python in OO
Hallo,
ist es tatsächlich nicht möglich über den Dialog Extras-Makros-Makros verwalten-Python... die entsprechenden, selbst erstellen, Python Scripts zu Bearbeiten, Umzubenennen, zu Erstellen, zu Löschen? (so beobachtet in OOo 3.3.0 und AOO 4.0.1)
Mir ist schon klar das die Bearbeitungsfunktion/Editorfenster, wenn es sie gibt, rudimentär ist, nur es nervt ständig im Python-Verzeichnis von OO 'rumstochern' zu müssen nur weil ich mich schnell vom Inhalt eines Scripts informieren will.
Gruß
Stephan
ist es tatsächlich nicht möglich über den Dialog Extras-Makros-Makros verwalten-Python... die entsprechenden, selbst erstellen, Python Scripts zu Bearbeiten, Umzubenennen, zu Erstellen, zu Löschen? (so beobachtet in OOo 3.3.0 und AOO 4.0.1)
Mir ist schon klar das die Bearbeitungsfunktion/Editorfenster, wenn es sie gibt, rudimentär ist, nur es nervt ständig im Python-Verzeichnis von OO 'rumstochern' zu müssen nur weil ich mich schnell vom Inhalt eines Scripts informieren will.
Gruß
Stephan
Re: Elementare Frage zu Python in OO
Hallo Stephan
Über den "eingebauten" Extras-Makros-Makros verwalten-Python nicht wirklich, lediglich '→Bearbeiten lässt sich aktivieren indem du in der Datei pythonscript.py im Progrmmordner Zeile ~52 editierst
Damit ist →bearbeiten zwar aktiv aber ein Editor öffnet sich damit trotzdem nicht .
Wesentlich weiter kommst du mit hanya's Dialog
Hanya lässt dort aber auch die zuständige Funktion exec_edit() (~ Zeile 615 ) leer, und überlässt dir die individuelle Implementierung.
Ich hatte den Teil mal so gelöst:
call ist die gleichnamige Funktion importiert aus subprocess
path -dito- importiert aus os
hinter pycharm steckt der Pfad zur IDE
Letzlich ist es eigentlich bequemer stets eine IDE-sitzung parallel zu AO|Lo offen zu haben und die Scripte von da aus zu bearbeiten.
Karolus
Über den "eingebauten" Extras-Makros-Makros verwalten-Python nicht wirklich, lediglich '→Bearbeiten lässt sich aktivieren indem du in der Datei pythonscript.py im Progrmmordner Zeile ~52 editierst
Code: Alles auswählen
-ENABLE_EDIT_DIALOG=False
+ENABLE_EDIT_DIALOG=True
Wesentlich weiter kommst du mit hanya's Dialog
Hanya lässt dort aber auch die zuständige Funktion exec_edit() (~ Zeile 615 ) leer, und überlässt dir die individuelle Implementierung.
Ich hatte den Teil mal so gelöst:
Code: Alles auswählen
...
def exec_edit(self, tree_node, node):
"""
edit selected node :
if Script is embedded into Document do first
copy to project-path and edit there.
the Routine for copy back should called after edit
from your Python-IDE
"""
if (isinstance(node, pythonscript.ScriptBrowseNode ) or
isinstance(node, pythonscript.FileBrowseNode ) ):
uri = node.uri
if node.uri.startswith(self.DOC_PROTOCOL) :
sfa = node.provCtx.sfa
tail, fname = path.split(uri.split(':/',1)[1])
projectfolder = path.join(projectpath, tail)
projecturl = path.join(projectfolder, fname)
if not path.exists(projectfolder):
makedirs( projectfolder)
sfa.copy(uri, projecturl )
call([pycharm, projecturl])
return
call([pycharm, uno.fileUrlToSystemPath(uri)])
...
path -dito- importiert aus os
hinter pycharm steckt der Pfad zur IDE
Letzlich ist es eigentlich bequemer stets eine IDE-sitzung parallel zu AO|Lo offen zu haben und die Scripte von da aus zu bearbeiten.
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Elementare Frage zu Python in OO
Hallo Karolus,
vielen Dank für die sehr ausführliche Antwort. Den Code bzw. Skriptverwaltungsdialog muss ich mir erst noch genauer anschauen.
Ich bin bei Python praktisch völliger Anfänger und habe mich zwar schon in der Vergangenheit damit beschäftigt einzelne fertige Skripte anzupassen habe jetzt aber begonnen das von Anfang an zu lernen und bin völlig am Anfang, so bei print 3+4.
Hier gleich die Frage was schlägst Du mir denn vor?
Ich hatte mich kurz informiert, aber als ich dann was von Eclipse (PyDev) las, habe ich das erstmals gelassen (naja, ich kenne Eclipse von anderen Sachen ein wenig und finde das ziemlich komplex) und beschlossen das mir für die nächste Zeit Notepad++ reicht, denn ich habe momentan nur stundenweise Zeit und werde wohl die nächsten Wochen brauchen um mich durch die Grundlagen zu arbeiten und einigermaßen Routine zu entwickeln.
Gruß
Stephan
vielen Dank für die sehr ausführliche Antwort. Den Code bzw. Skriptverwaltungsdialog muss ich mir erst noch genauer anschauen.
Ich bin bei Python praktisch völliger Anfänger und habe mich zwar schon in der Vergangenheit damit beschäftigt einzelne fertige Skripte anzupassen habe jetzt aber begonnen das von Anfang an zu lernen und bin völlig am Anfang, so bei print 3+4.
Ja klar.Letzlich ist es eigentlich bequemer stets eine IDE-sitzung parallel zu AO|Lo offen zu haben und die Scripte von da aus zu bearbeiten.
Hier gleich die Frage was schlägst Du mir denn vor?
Ich hatte mich kurz informiert, aber als ich dann was von Eclipse (PyDev) las, habe ich das erstmals gelassen (naja, ich kenne Eclipse von anderen Sachen ein wenig und finde das ziemlich komplex) und beschlossen das mir für die nächste Zeit Notepad++ reicht, denn ich habe momentan nur stundenweise Zeit und werde wohl die nächsten Wochen brauchen um mich durch die Grundlagen zu arbeiten und einigermaßen Routine zu entwickeln.
Gruß
Stephan
Re: Elementare Frage zu Python in OO
ich habe das so übernommen und nur die 2 Zeilen:Hanya lässt dort aber auch die zuständige Funktion exec_edit() (~ Zeile 615 ) leer, und überlässt dir die individuelle Implementierung.
Ich hatte den Teil mal so gelöst:
Code: Alles auswählen
call([pycharm, projecturl])
call([pycharm, uno.fileUrlToSystemPath(uri)])
Code: Alles auswählen
call([uno.fileUrlToSystemPath("C:\Program Files\Notepad++\notepad++.exe"), projecturl])
call([uno.fileUrlToSystemPath("C:\Program Files\Notepad++\notepad++.exe"), uno.fileUrlToSystemPath(uri)])
Code: Alles auswählen
call(["C:\Program Files\Notepad++\notepad++.exe", projecturl])
call(["C:\Program Files\Notepad++\notepad++.exe", uno.fileUrlToSystemPath(uri)])
Falls das Ganze leicht zum Laufen zu bewegen wäre sag mir bitte wie, falls es mehr Arbeit machen sollte, lass es sein, es ist im Moment nicht sooo wesentlich, auch weil ich für mich selbst vom Kurs abweiche Python richtig lernen zu wollen und hier bereits wieder in einem Code herumexperimentiere den ich eigentlich nicht verstehe.
Gruß
Stephan
Re: Elementare Frage zu Python in OO
Hallo
Sorry ich hatte noch ein paar Details vergessen:
Im Kopf des Moduls musst du noch die Importe ergänzen:
Danach vmtl. noch die Definition von projectpath
und der Pfad zur Notepad++.exe :
Anmerkung: python versteht auch unter Windows Dateipfade mit /Slashes richtig,
verwende "C:/...." oder r"C:\...."
ohne r'-prefix' musst du sämtliche \backslashes verdoppeln damit nicht zB. '\t' im Pfad als Tabulatorzeichen oder '\n' als Zeilenumbruch interpretiert wird.
unten in der Funktion tuts dann:
erfolgreich getestet auf einer VM mit WindowsXP und frisch installiertem Notepad++
Du kannst durchaus starten mit Notepad.
Empfehlen für den Anfang kann ich noch http://www.geany.org/Download/Releases
Ich selbst arbeite inzwischen viel mit der Community-version von pycharm das ist eine IDE ähnlich Eclipse(PyDev) nur ..mh.. besser/leichter zu bedienen oder zu konfigurieren.
Seit kurzem beschäftige ich mich auch mit http://ipython.org/ ursprünglich war das eigentlich nur eine aufgebohrte Python-shell aber inzwischen ist die notebook-variante u.a.*** auch als IDE nutzbar.
***ansonsten noch als interactive Shell, zum Schreiben von Programmdokumentation, WySiwyg-html-Editor.
Karolus
Sorry ich hatte noch ein paar Details vergessen:
Im Kopf des Moduls musst du noch die Importe ergänzen:
Code: Alles auswählen
from os import path, makedirs
from subprocess import call
Code: Alles auswählen
projectpath = 'C:/Dokumente und Einstellungen/ ... /user/Scripts/python/'
# der pfad zu deinem OO-benutzer-verzeichnis
Code: Alles auswählen
notepad = "C:/Program Files/Notepad++/notepad++.exe"
verwende "C:/...." oder r"C:\...."
ohne r'-prefix' musst du sämtliche \backslashes verdoppeln damit nicht zB. '\t' im Pfad als Tabulatorzeichen oder '\n' als Zeilenumbruch interpretiert wird.
unten in der Funktion tuts dann:
Code: Alles auswählen
call([ notepad, projecturl])
call([ notepad, uno.fileUrlToSystemPath(uri)])
Die Frage nach der|dem "richtigen" IDE|Editor ist schwierig, fragst du drei Leute bekommst du fünf verschiedene Antworten.Hier gleich die Frage was schlägst Du mir denn vor?
Ich hatte mich kurz informiert, aber als ich dann was von Eclipse (PyDev) las, habe ich das erstmals gelassen (naja, ich kenne Eclipse von anderen Sachen ein wenig und finde das ziemlich komplex) und beschlossen das mir für die nächste Zeit Notepad++ reicht, ...
Du kannst durchaus starten mit Notepad.
Empfehlen für den Anfang kann ich noch http://www.geany.org/Download/Releases
Ich selbst arbeite inzwischen viel mit der Community-version von pycharm das ist eine IDE ähnlich Eclipse(PyDev) nur ..mh.. besser/leichter zu bedienen oder zu konfigurieren.
Seit kurzem beschäftige ich mich auch mit http://ipython.org/ ursprünglich war das eigentlich nur eine aufgebohrte Python-shell aber inzwischen ist die notebook-variante u.a.*** auch als IDE nutzbar.
***ansonsten noch als interactive Shell, zum Schreiben von Programmdokumentation, WySiwyg-html-Editor.
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Elementare Frage zu Python in OO
Hallo Karolus,
das Genannte bringt mich nicht wirklich weiter.
Ich hatte gehofft das mögliche Änderungen des Skripts auch bewirken das ich überhaupt im Dialog eine Schaltfläche/Kontextmenü finde womit ich das Editieren starten kann, nur gibt es das weiterhin nicht.
Der Dialog sieht so aus:
Wobei die Schaltflächen "Execute" und "Close" immer gleich, und wie erwartet, funktionieren, bei der Schaltfläche "Menu" jedoch das erscheinende Menü sich nach der vorherigen Markierung (was ich also markiere bevor ich auf "Menu" klicke) richtet:
markiere ich die Wurzel "user" finde ich im Menü "Create File" und Create Directory", markiere ich einen der Ordner finde ich im Menü "Rename" und "Delete" und markiere ich ein Skript so finde ich im Menü "Delete" - nur nie finde ich etwas worauf ich klicken kann um das Editieren eines Skriptes auszulösen.
Aber wie schon angedeutet, es ist natürlich ziemlich schlecht wenn ich hier versuche ein Skript zum Funktionieren zu bewegen das ich selbst kaum verstehe.
Gruß
Stephan
das Genannte bringt mich nicht wirklich weiter.
Ich hatte gehofft das mögliche Änderungen des Skripts auch bewirken das ich überhaupt im Dialog eine Schaltfläche/Kontextmenü finde womit ich das Editieren starten kann, nur gibt es das weiterhin nicht.
Der Dialog sieht so aus:
Wobei die Schaltflächen "Execute" und "Close" immer gleich, und wie erwartet, funktionieren, bei der Schaltfläche "Menu" jedoch das erscheinende Menü sich nach der vorherigen Markierung (was ich also markiere bevor ich auf "Menu" klicke) richtet:
markiere ich die Wurzel "user" finde ich im Menü "Create File" und Create Directory", markiere ich einen der Ordner finde ich im Menü "Rename" und "Delete" und markiere ich ein Skript so finde ich im Menü "Delete" - nur nie finde ich etwas worauf ich klicken kann um das Editieren eines Skriptes auszulösen.
Aber wie schon angedeutet, es ist natürlich ziemlich schlecht wenn ich hier versuche ein Skript zum Funktionieren zu bewegen das ich selbst kaum verstehe.
Gruß
Stephan
Re: Elementare Frage zu Python in OO
Hallo
Oh - tut mir leid - ich hab mir das Ding schon vor einiger Zeit eingerichtet und inzwischen vergessen was ich alles geändert habe - ändere ca.Zeile 385 zu:
Wie ich gerade sehe habe ich auch ein paar Menüeinträge eingedeutscht:
Karolus
Oh - tut mir leid - ich hab mir das Ding schon vor einiger Zeit eingerichtet und inzwischen vergessen was ich alles geändert habe - ändere ca.Zeile 385 zu:
Code: Alles auswählen
ENABLE_EDIT = True
ENABLE_DEBUG = True
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Elementare Frage zu Python in OO
Danke, funktioniert.
Gruß
Stephan
Gruß
Stephan
Re: Elementare Frage zu Python in OO
Hallo Stephan,
du hast ja schon ein Lösung. Ich habe anfangs auch nur einen einfachen Editor benutzt, aber der Umstieg auf Eclipse war eine Erleuchtung. Für mich ist das Wichtigste daran die Möglichkeit, nicht nur Variablen und Methoden sehen zu können (was man ja mit mri auch kann - wobei ich selten mal den Fall hatte, dass mri Methoden angezeigt hat, die es anscheinend nicht gab. In Eclipse tauchten die nicht auf), sondern frei durch die Verhältnisse browsen zu können. Mir hat das beim Verständnis von OO/LO sehr geholfen und ohne könnte ich gar nicht mehr.
Die Verbindung von OO/LO mit Eclipse und PyDev ist auch nicht wirklich schwer, daher poste ich hier noch ein Beispiel. (Ich finde leider grad die Quelle nicht, wo ich den Code herhabe.)
PyDev muss in Eclipse installiert sein.
Dann folgendes Script (in Win7) unter "C:\Program Files (x86)\OpenOffice 4\share\Scripts\python" ablegen. Z.B. als "Verbindung.py".
In OO unter Extras>Anpassen>Symbolleisten>Hinzufügen Im Bereich OpenOffice Makros>OpenOffice Makros>Verbindungen den Befehl "helfer" auswählen und hinzufügen.
Im Script muss noch der Pfad zu der PyDev Installation (zu pysrc) angepasst werden.
Eclipse zuerst starten, in die Debug Ansicht wechseln und PyDev Debug starten (Symbol: P mit grünem Käfer). Dann OO starten.
Ein Klick auf "helfer" stellt die Verbindung in der Codezeile pydevBrk() her. Das kann man auch mehrfach nutzen.
Grüße,
Xaver
du hast ja schon ein Lösung. Ich habe anfangs auch nur einen einfachen Editor benutzt, aber der Umstieg auf Eclipse war eine Erleuchtung. Für mich ist das Wichtigste daran die Möglichkeit, nicht nur Variablen und Methoden sehen zu können (was man ja mit mri auch kann - wobei ich selten mal den Fall hatte, dass mri Methoden angezeigt hat, die es anscheinend nicht gab. In Eclipse tauchten die nicht auf), sondern frei durch die Verhältnisse browsen zu können. Mir hat das beim Verständnis von OO/LO sehr geholfen und ohne könnte ich gar nicht mehr.
Die Verbindung von OO/LO mit Eclipse und PyDev ist auch nicht wirklich schwer, daher poste ich hier noch ein Beispiel. (Ich finde leider grad die Quelle nicht, wo ich den Code herhabe.)
PyDev muss in Eclipse installiert sein.
Dann folgendes Script (in Win7) unter "C:\Program Files (x86)\OpenOffice 4\share\Scripts\python" ablegen. Z.B. als "Verbindung.py".
In OO unter Extras>Anpassen>Symbolleisten>Hinzufügen Im Bereich OpenOffice Makros>OpenOffice Makros>Verbindungen den Befehl "helfer" auswählen und hinzufügen.
Im Script muss noch der Pfad zu der PyDev Installation (zu pysrc) angepasst werden.
Eclipse zuerst starten, in die Debug Ansicht wechseln und PyDev Debug starten (Symbol: P mit grünem Käfer). Dann OO starten.
Ein Klick auf "helfer" stellt die Verbindung in der Codezeile pydevBrk() her. Das kann man auch mehrfach nutzen.
Code: Alles auswählen
import traceback
import uno
import unohelper
import sys
def pydevBrk():
# adjust your path
sys.path.append(r'C:\Users\Homer\Desktop\Programme\eclipse\plugins\org.python.pydev_3.1.0.201312121632\pysrc')
from pydevd import settrace
settrace('localhost', port=5678, stdoutToServer=True, stderrToServer=True)
def helfer(*args):
ctx = XSCRIPTCONTEXT.ctx
smgr = ctx.ServiceManager
desktop = XSCRIPTCONTEXT.getDesktop()
current_component = desktop.getCurrentComponent()
# Fehler in der Konsole ausgeben
try:
ert
except:
traceback.print_exc()
pydevBrk()
Grüße,
Xaver
- Dateianhänge
-
- eclipse.JPG (100.67 KiB) 4111 mal betrachtet
Re: Elementare Frage zu Python in OO
Hallo Xaver,
danke, ich schaue es mir an, nur ich kenne mich mit der API auch so aus und benutze überwiegend auch bei der StarBasic-Programmierung kein XRAY o.ä. mehr.
Nicht das ich alles wüßte, aber was ich brauche ist eigentlich immer Dasselbe und so kenne ich das und muß nur in Ausnahmefällen etwas nachschlagen.
Gruß
Stephan
danke, ich schaue es mir an, nur ich kenne mich mit der API auch so aus und benutze überwiegend auch bei der StarBasic-Programmierung kein XRAY o.ä. mehr.
Nicht das ich alles wüßte, aber was ich brauche ist eigentlich immer Dasselbe und so kenne ich das und muß nur in Ausnahmefällen etwas nachschlagen.
Gruß
Stephan