Einfügen von eigenen Grafiken in Symbolleiste

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Einfügen von eigenen Grafiken in Symbolleiste

von kappl_sim » Mo, 05.02.2007 19:06

Habe es jetzt geschafft die Grafiken mithilfe eines Makros einzufügen.
Hier der code:

Code: Alles auswählen

Sub Main
 Dim sURL$
 sURL = ConvertToURL(„C:\Dokumente und Einstellungen\a.wmf“)
 InsertGraphicObjectShape(ThisComponent, sURL) 
End Sub

Sub InsertGraphicObjectShape(oDoc, sURL$)
 Dim oSize As New com.sun.star.awt.Size
 Dim oPos As New com.sun.star.awt.Point
 Dim oGraph

 oGraph = oDoc.createInstance(“com.sun.star.drawing.GraphicObjectShape”)

Größe und Position der Grafik wird zugewiesen
 oSize.width=200
 oSize.height=300
 oGraph.setSize(oSize)

 oPos.X = 2540
 oPos.Y = 2540
 oGraph.setposition(oPos)

 oDoc.getDrawPages().getByIndex(0).add(oGraph) 

 REM Set URL to the graphic.
 oGraph.GraphicURL = sURL
End Sub 

Function ChooseAFile$(sFilters(), bOpen As Boolean, Optional sInPath$)
  Dim oDialog As Object
  Dim sPath As String
  Dim oSFA As Object
  Dim s As String
  Dim I As Integer
  
  oDialog = CreateUnoService(“com.sun.star.ui.dialogs.FilePicker”)
  oSFA = createUnoService(“com.sun.star.ucb.SimpleFileAccess”)
  If bOpen Then
    I = com.sun.star.ui.dialogs.TemplateDescription.FILEOPEN_SIMPLE
  Else
    I = com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE
  End If
  oDialog.initialize(Array(i))
  
  If IsMissing(sInPath) Then
    oDialog.setDisplayDirectory(GetWorkDir())
  ElseIf oSFA.Exists(sInPath) Then
    oDialog.setDisplayDirectory(sInPath)
  Else
    s = “Directory ‘” & sInPath & “’ Does not exist”
    If MsgBox(s, 33, “Error”) = 2 Then Exit Function
  End If

  For I = Lbound(sFilters()) To Ubound(sFilters()) Step 2
    Dim sFilterName$
    Dim sFilterValue$
    sFilterValue = sFilters(i+1)
    sFilterName = sFilterValue & “ – “ & sFilters(i)
    oDialog.appendFilter(sFilterName, sFilterValue)
  Next
  
  If oDialog.Execute() = 1 Then
    sPath = oDialog.Files(0)
    ChooseAFile() = sPath
  End If
End Function

Function GraphicFilters()
  GraphicFilters() = Array(“All Files”, “*.*”, _
    „Graphic Interchange Format“, „*.gif“, _
    „Joint Photographic Experts Group“, „*.jpg“, _
    „Tag Image File Format“, „*.tif“, _
    “Windows Bit Map”, “*.bmp”, _
    “Gimp Files”, “*.xcf”, _
    “Portable Network Graphics”, “*.png”)
End Function

Function GetWorkDir() As String
  Dim  oPathSettings
  oPathSettings = CreateUnoService(“com.sun.star.util.PathSettings”)
  GetWorkDir() = oPathSettings.Work
End Function
Das wäre nun der erste Teil meiner Aufgabe :)

Wenn mir jetzt noch jemand erklären könnte wie man bei einer Symobolleiste Drop down Menüs erstellen kann wäre ich euch sehr dankbar. Denn mithilfe dieser verliert man bei 100 Elementen nicht so schnell den Überblick. ;)

Hoffe mir kann jemand bei meinem Problem helfen.

Viele Grüße
kappl_sim

von kappl_sim » Do, 11.01.2007 19:21

Hallo nochmal,

Danke für eure Hilfe und Tipps! Ich habe das Problem (fast) mittels der Anleitung von Toxitom gelöst!
Jedoch ist nun folgendes aufgetreten:
Wenn ich mein Makro in OpenOffice Writer ausführe, wird eine Grafik in das Dokument eingefügt, jedoch bei OpenOffice Draw, wo ich die Grafiken später brauche, wird beim Ausführen des selben Makrkos der Dateiexplorer zum Auswählen der gewünschten Grafik aufgerufen, was wiederum nicht erwünscht ist.

Ich poste euch mal mein Makro, vllt könnt ihr mich ja auf meinen Fehler aufmerksam machen.

Code: Alles auswählen

 REM  *****  BASIC  *****

sub vorrichtung_10_g
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FileName"
args1(0).Value = "file:///C:/Dokumente%20und%20Einstellungen/Michael/Eigene%20Dateien/Schule/Schule/5BHD/TMS%20-%20Diplomarbeit/Symbole/100/10/Vorrichtung_11_g.wmf"
args1(1).Name = "FilterName"
args1(1).Value = "<Alle Formate>"
args1(2).Name = "AsLink"
args1(2).Value = false
args1(3).Name = "Style"
args1(3).Value = "Grafik"

dispatcher.executeDispatch(document, ".uno:InsertGraphic", "", 0, args1())

end sub
Viele Grüße
kappl_sim

von FranzX » Sa, 16.12.2006 19:46

Hallo zusammen,

ich glaube das Einfügen über eine Symbolleiste ist hier nicht der richtige Weg.
Ich würde den Weg über die Gallery gehen. Einfach ein neues Thema in der Gallery anlegen und mit den Symbolen füllen. Diese können dann ganz einfach über Drag&Drop in das Dokument eingefügt werden.

Viele Grüße
FranzX
-----------------------------------------------------------------
TIPP: Writer-Tuning; 194 clevere Tips und Tricks für OpenOffice.org 2 und StarOffice 8.

von Toxitom » Mo, 11.12.2006 09:57

Hey Kappl_sim,

ich kann dir zumindest ein paar Ratschläge geben:

eine eigene Sysmbolleiste greift auf die Grafiken zurück, die in folgenden Pfaden liegen:
<Benutzerinstallation>\Anwendungsdaten\OpenOffice.org\user\config\soffice.cfg\modules
Dort wählst du dann die Pfadkomponente deines Moduls, bei dir also wohl sdraw (Draw). Dort findest du jetzt die entsprechenden Unterordner:
\images -> dort git es die Datei sc_imagelist.xml, welche die Zuordnung zu den benutzerdefinierten Grafiken beinhaltet (Hast du allerdings noch keine, so muss die Datei neu erstellt werden!)
\images\Bitmaps\ -> dort hinein kommen dann deine Grafiken (Icons) in png Format - 16*16 Pixel. Auf diese Dateien referiert die sc_imagelist.xml
\toolbar\ -> dort kommt die eigene Sysmbolleite rein, ebenfalls eine xml-Datei.

Am einfachste erstellst du die Symboleiste zunächst über das Userinterface (Extras - Anpassen - Symbolleisten) und schaust dir dann die entstandenen xml-Dateien an. die kannst du ja beliebig editieren und anpassen.
Die Funktionalitäöt des "Drag&Drop" musst du allerdings per Makro programmieren und das Makro dann mit der Symbolleite verknüpfen - und hier dürfte die Hauptproblematik liegen :-)

Viele Grüße
Thomas

von kappl_sim » Sa, 09.12.2006 22:40

Ok, schade kann man aber nicht ändern.
Aufjedenfall danke für deine Hilfe werde mich dort dann gleich anmelden.

mfg kappl_sim

von Stephan » Sa, 09.12.2006 22:07

Hoffe du verstehst jetzt mein Anliegen
ja, Du meinst solch ähnliche Dinge wie jetzt bereits in der Zeichen-Symbolleiste vorhanden sind.
Dazu kann ich nichts sagen, mein Rat wäre höchstens beim Grafik-Projekt anzufragen, im Prinzip auf deren dev-mailingliste:
http://graphics.openoffice.org/servlets ... ngListList



Gruß
Stephan

von kappl_sim » Sa, 09.12.2006 21:25

Stephan hat geschrieben:
Es ist meine Aufgabe für eine Projekarbeit eine Erweiterung für OpenOffice draw zu erstellen, bei der ich eigene Grafiken in Syombolleisten einfügen muss und diese mittels Drag & Drop in das Document einzufügen.
Verstehe ich ehrlich gesagt das Anliegen garnicht. In den Symbolleisten haben die Schaltflächen 'Bilder' im Sinne 16x16 Pixel großer Grafiken, diese sind natürlich nicht ins Dokument einzufügen sondern nur für die Schaltflächen gedacht.
Und hierbei stellt sich mir die Frage wie ich diese implementieren kann.
Keine Ahnung, nur die Symbolleisten sind dafür garnicht gemacht.



Gruß
Stephan
Erstmal danke für deine Antwort, denke aber hab mich etwas umständlich ausgedrückt. :)
Also es wird eine zusätzliche Symbolleiste benötigt inklusive neuer Elemente (also anstatt dreiecken, rechteck, usw.) in meinem Fall wären das z.B. Roboter oder eine Spannvorrichtung (die Grafiken haben wir bereits).
Momentan werden diese Grafiken von einer Vorlagendatei mit Kopieren und Einfügen in das gerade zu bearbeitende Dokument eingefügt. Und meine Aufgabe besteht jetzt darin diese Elemente in OpenOffice Draw zu integrieren.
Hoffe du verstehst jetzt mein Anliegen, falls nicht versuche ich es gerne nochmal :)

mfg kappl_sim

von Stephan » Sa, 09.12.2006 20:12

Es ist meine Aufgabe für eine Projekarbeit eine Erweiterung für OpenOffice draw zu erstellen, bei der ich eigene Grafiken in Syombolleisten einfügen muss und diese mittels Drag & Drop in das Document einzufügen.
Verstehe ich ehrlich gesagt das Anliegen garnicht. In den Symbolleisten haben die Schaltflächen 'Bilder' im Sinne 16x16 Pixel großer Grafiken, diese sind natürlich nicht ins Dokument einzufügen sondern nur für die Schaltflächen gedacht.
Und hierbei stellt sich mir die Frage wie ich diese implementieren kann.
Keine Ahnung, nur die Symbolleisten sind dafür garnicht gemacht.



Gruß
Stephan

Einfügen von eigenen Grafiken in Symbolleiste

von kappl_sim » Sa, 09.12.2006 18:17

Hallo,

ich habe folgendes problem:
Es ist meine Aufgabe für eine Projekarbeit eine Erweiterung für OpenOffice draw zu erstellen, bei der ich eigene Grafiken in Syombolleisten einfügen muss und diese mittels Drag & Drop in das Document einzufügen.
Und hierbei stellt sich mir die Frage wie ich diese implementieren kann. Muss dazu der Sorce- Code verändert werden, oder funktioniert dies mittels eines Macros (habe in diesem Gebiet leider noch keine Erfahrung sammeln können)?
Grafiken sind wie bereits zuvor erwähnt vorhanden und sollen zu Beginn eine fixe Größe haben.

Hoffe auf Rückmeldung!

mfg kappl_sim

Nach oben