Symbolleiste selbst coden

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

gschuckar
****
Beiträge: 140
Registriert: Fr, 24.02.2006 14:27

Symbolleiste selbst coden

Beitrag von gschuckar »

Hallo,
für eine ooCalc Applikation würde ich sehr gerne eine Menueleiste per Code selbst bauen. Bislang habe ich das mit Ansicht->Symbolleisten->Anpassen gemacht.
Wo kann ich etwas darüber nachlesen, mit welchen UnoServices man so etwas bauen kann? Gibt es irgendwo ein Code Beispiel?
Oder andere Frage: Wie kann man seinen mit Ansicht->Symbolleisten->Anpassen erstellten Menüpunkt Unterpunkte hinzufügen?
Google und mamma haben nicht die Informationen gebracht, die ich benötige. Auch unter api.oopenoffice.org konnte ich nicht so richtig fündig werden.
Gruß Gerd
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Gerd,

also, die einfachst Variante, die ich bisher entdeckt habe, ist die Erstellung der passsenden xml-Datei und fertig :-)

Wenn du bisher die Gui genutzt hast, so erstelle dir einfach eine Symbolleiste, schliesse OOo dann, und suche in Folgendem Pfad:
<Benutzerinstallation>\OpenOffice.org2\user\config\soffice.cfg\modules\swriter\toolbar\
oder eben für dein Modul passen ;-)
Dort ist dann deine neuen Symbolleiste zu finden - als xml_Dateii.
Achtung: Hier gab es irgendwann eine Änderung, mindestens ab Version 2.0.2 heissen alle benutzerdefinierten Symbolleisten "custom_toolbar_XX.xml", wobei "XX" für eine fortlaufende Nummer steht.
Öffne die Datei mit einem Texteditor - dann kannst du die Struktur ablesen, die Menüeinträge und die Befehle.

Und exakt so kannst du deine Symbolleiste bauen - und einfach in den Ordner kopieren. Pack dann noch die Symbole an die richtige Stelle, passe die sc_imagelist.xml an, fertig.
Beim nächsten Start von OOo ist die Sysmbolleiste da und funktioniert :-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
gschuckar
****
Beiträge: 140
Registriert: Fr, 24.02.2006 14:27

Symbolleiste selbst coden

Beitrag von gschuckar »

Moin Thomas,
danke für Deinen Tipp. Hab ich jetzt mal gemacht. Die Anwendung heist rechnung.ods. Jetzt gibt es eine Symbolleiste mit Namen Buchhaltung deren einziger Menupunkt ' Neuer Kunde' ist. Dem Punkt habe ich ein Makro und ein Symbol zugewiesen. Das Ganze funktioniert. Gespeichert ist diese Leiste in der Applikation. Dadurch ist sie nur sichtbar, wenn rechnung.ods geladen wird. Gut so.
Nun habe ich zwei Probleme: Zum einen: ich finde das xml File nicht.
Im Pfad \home\dev\OpenOffice.org2\user\config\soffice.cfg\modules\scalc\toolbar\ ist keine xml Datei abgelegt. Gar Keine. Ich hab mal unter /config/ alles abgesucht. in \home\dev\OpenOffice.org2\user\config\soffice.cfg\modules\scalc\menubar\ gibt es eine menubar.xml, deren Änderungsdatum mit meiner Änderung übereinstimmt. Nur taucht die neue Leiste dort nicht auf.
Zum Anderen:
Ich möchte diese Leiste ja gerne mit der Applikation weitergeben.
Wenn ich die Applikation weitergeben möchte, dann müsste ich, wenn vorhanden, das xml file mitgeben. Welcher User ist imstande, ohne Hilfe diese Datei zu installieren? Okay, ich könnte eine Script schreiben. Das würde ich für LINUX machen, und Windows User?
Ach ja: Ich benutze OpenOffice 2.0 auf fedora core 4.
Nun steh ich da ich armer Tor .....
Gruß Gerd
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Gerd,

hmm, merkwürdig. Habe das gerade mal nachgestellt - die Datei ist da ("custom_toolbar_1.xml" ) im Verzeichnis scalc.

OK, mein System: OOo 2.1 auf Windows XP SP2.
Sicher, dass du eine 2.x Version hast und keine "verkappte" 1.9.xx Version? Die Linux-Distributoren haben da häufig ihre eigenen Süppchen gekocht....

Der Ordner "menubar" ubrigens beinhaltet nur die Menü-Einträge, nicht aber die frei verschiebbaren Symbolleisten. Ich denke, wir reden von Symbolleisten? Erreichbar über Extras - Anpassen - Symbolleisten?

Und was die Installation betrifft: Da nimmst du ein Skript (z.B. in Basic), dort kannst du die Umgebungsvaiablen auslesen (Installationspfad), dann kopierst du per Skript die Dateine in die gewünschten Ordner- fertig. Das passt unter allen Betriebssystemen :-)

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
gschuckar
****
Beiträge: 140
Registriert: Fr, 24.02.2006 14:27

Beitrag von gschuckar »

Hallo Thomas,
Sicher, dass du eine 2.x Version hast und keine "verkappte" 1.9.xx Version? Die Linux-Distributoren haben da häufig ihre eigenen Süppchen gekocht....
Wie kann ich das feststellen?
Ich denke, wir reden von Symbolleisten? Erreichbar über Extras - Anpassen - Symbolleisten?
Ja, genau..
Und was die Installation betrifft: Da nimmst du ein Skript (z.B. in Basic), dort kannst du die Umgebungsvaiablen auslesen (Installationspfad), dann kopierst du per Skript die Dateine in die gewünschten Ordner- fertig. Das passt unter allen Betriebssystemen
Das müsste dann beim ersten Start der App laufen. basic könnte ich ja nur ooBasic. Als Installations Script hätte ich sonst ein shell script gemacht. das Funktioniert aber unter Win... natürlich nicht. Mal gucken. Soweit bin ich noch nicht, auch wenn ich schon daran denke.

Gruß Gerd
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Gerd,
Als Installations Script hätte ich sonst ein shell script gemacht. das Funktioniert aber unter Win... natürlich nicht.
Aber klar. Auch Windows besitzt eine shell :-) - und da kannst du natürlich genauso "scripten". Ein solches Skript bekommt die Erweiterung *.cmd und schon läuft es durch Doppelklick....
Na ja, aber das alles sind Details.
Wie kann ich das feststellen?
Rufe den Menübefehl "Hilfe" -"Über OpenOffice.org" auf. Dort sollte die Versionsnummer stehen. Die sagt aber noch nicht allzuviel aus, die kann man setzen. Wesentlicher ist die Built-Nr. Die erhälst du in dem Fenster wie folgt:
Drücke die Tasten "S" - "D" - "T" bei gedrückter "Strg" Taste, dann beginnt das Bild zu "laufen" und gibt die Namen aller Entwickler preis. In der ersten Zeile (schnell sein...!) steht die Build-Nr der Kompilation - und aus der geht klar hervor, wann der Code aus dem Stammcode genommen und kompiliert wurde.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

für eine ooCalc Applikation würde ich sehr gerne eine Menueleiste per Code selbst bauen. Bislang habe ich das mit Ansicht->Symbolleisten->Anpassen gemacht.
und das ist für Deinen Zweck möglicherweise der einzige vernünftige Weg

"möglicherweise" deshalb weil mir nicht ganz klar ist wa du erreichen willst, mir scheint abe Deine Symbolleiste soll vorhanden sein wenn Du ein bestimmtes Dokument öffnest:
Die Anwendung heist rechnung.ods

und dann dürfte es kaum helfen das XML-File mit öffnen der Datei automatisch kopieren zu lassen, weil OOo das kopierte File erst berücksichtigen wird wenn Du ein neues Fenster öffnest.
Weiß nicht, zumindest war das bisher so und ich habe es aktuell nicht getestet.

Ich würde also wenn es um ein Dokument geh die Symbolleiste normal im Dokument speichern, das geht und ist unkompliziert.
Einen Basic-Code der die Leiste 'live' erzeugt habe ich noch nie programmiert, das ginge möglicherweise aber, nur das mit dem XML meines Erachtens nicht.
Wie kann ich das feststellen?
Rufe Hilfe-Über... auf, halte STRG gedrückt und drücke Tasten S D T, dann scrollt die genaue Version durchs Bild.
Ob das überhaupt notwendig ist bin ich nicht sicher, es könnte aber sein das ohne STRG+S D T, die 'normalanzeige' für eine 1.9.x nur 2.0 ist.



Gruß
Stephan
gschuckar
****
Beiträge: 140
Registriert: Fr, 24.02.2006 14:27

Beitrag von gschuckar »

Hallo alle,
Ich würde also wenn es um ein Dokument geh die Symbolleiste normal im Dokument speichern, das geht und ist unkompliziert.
Einen Basic-Code der die Leiste 'live' erzeugt habe ich noch nie programmiert, das ginge möglicherweise aber, nur das mit dem XML meines Erachtens nicht.
So hab ich das jetzt mal gemacht. Und es funktioniert sehr schön. Hat nur einen Fehler: Ich stelle die Leiste auf Symbole und Text. Bei jedem Neustart steht die Leiste auf Nur Symbole. Das nervt ein bischen.
Was mir dabei noch fehlt ist die Möglichkeit, ein Untermenu zu bauen. Will sagen: Es soll einen Punkt Kunden mit unterpunkten in Etwa so:Neu, suchen Liste; Menu Rechnung soll dann sowas wie Neu, suchen, buchen oder so bekommen. Das möchte ich nicht in einem Dialog oder womöglich mit ganz vielen Buttons im Sheet realisieren. Ich hab das gaaaanz früher mal mit MS Excel gemacht. Das war manuell gecodet.
Danke Gerd
Antworten