PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interoperablität



anda_skoa
05-08-2003, 22:08
Hi Leute!

Es gibt ja immer wieder diverse Trolle in allen möglichen Foren/Newsgroups/Mailinglisten, die behaupten unter X11 gäbe es kein vernünftiges Clipboard bzw. kein vernünftige Drag'n'Drop.

Also hab ich mir gedacht, testen wir das mal :D

Ich hab mal einen Test für Clipboard und Textinhalte in Qt und Java/AWT gemacht.

Leider scheint das schon mal nicht zu klappen, aber die Java/AWT Sache hängt natürlich auch von der JVM ab (hier einen Blackdown 1.3.1)
Die AWT Implementation meinr JVM scheint den Inhalt nach PRIMARY statt CLIPBOARD zu kopieren.
(siehe http://www.freedesktop.org/standards/clipboards-spec/clipboards.txt für Details bezüglich X Clipboard)

Beim Qt Programm gibts noch das Problem, dass man Copy und Paste aus dem Menü wählen muss, weil Strg+C/V direkt im QTextEdit gehandhabt wird, was zwar bezüglich des Datentransfers keine Auswirkung hat, aber den schönen Output umgeht, der anzeigt, wie die Daten verfügbar sind.

Würd mich freuen, wenn Benutzer anderer Toolkits auch sowas basteln könnten :)

Ciao,
_

Edit: Attachment aus einem späteren Posting nehmen

tuxipuxi
05-08-2003, 22:28
also das von der qt app kopierte zeugs konnte ich ueberall rein pasten,
das von dem awt auch...
super.

edit:

meine kaffee virtuell-nicht reale maschine ist
die sonne 1.4.2

gruss,

tuxipuxi.

peschmae
06-08-2003, 12:09
du solltest mit Kaffee und so vorsichtig sein - denn das ist auch ne JVM, du verwirrungsstifter (zum Glück oder eher leider noch nicht 1.4.2)

MfG Peschmä

tuxipuxi
06-08-2003, 12:35
:P,

lies nochmal.

kaffee bezog sich auf JVM und sonne 1.4.2 heisst ja wohl sun 1.4.2 ;)

bischi
06-08-2003, 13:34
Und da soll einer nachkommen? ;)

Kaffee : Eine virtuelle Maschine
Sun JVM - sonne: Eine andere virtuelle Maschine

Eine Kaffeemaschine von der Sonne?

MfG Bischi

tuxipuxi
06-08-2003, 14:26
da ihr mal wieder rumnervt :p :

ich habe anda_skoa gestern zur verarschung gefragt was "JVM" heisst,
weil ihn testen wollte ob er mir das beantwortet( ja hat er ) und hab mir einfach den spass gemacht das beschissen zu uebersetzen :p.

das kaffee auch eine JVM ist weiss ich, aber wenn ihr
Java Virtual Machine Sun 1.4.2
lest,
dann ist ja wohl klar dass:
kaffee virtuell- nicht reale maschine sonne 1.4.2

das gleiche ist und ich nicht die von kaffee meine ;).

gruss,

tuxipuxi.

p.s: anstatt euch mit nichtigkeiten aufzuhalten koenntet ihr anda_skoa's beispiel mal testen! :)

bischi
06-08-2003, 14:33
Original geschrieben von tuxipuxi

das kaffee auch eine JVM ist weiss ich, aber wenn ihr
Java Virtual Machine Sun 1.4.2
lest,
dann ist ja wohl klar dass:
kaffee virtuell- nicht reale maschine sonne 1.4.2

das gleiche ist und ich nicht die von kaffee meine ;).



Sowieso, wir wollten dich nur testen ... ;)

MfG Bischi :p :D :p

anda_skoa
06-08-2003, 16:47
Original geschrieben von tuxipuxi
p.s: anstatt euch mit nichtigkeiten aufzuhalten koenntet ihr anda_skoa's beispiel mal testen! :)

Aktueller Stand ist, das es auch mit tuxipuxi's JVM nicht geht.

Ciao,
_

Berufspenner
06-08-2003, 17:02
Hi@all

Verstehe ich den Sinn des Tools soweit, dass wenn ich etwas markiere es in dem Window abgelget werden soll, oder wie?

Cu
André

anda_skoa
06-08-2003, 17:37
Ok, vielleicht hätte ich es besser beschreiben sollen.

Ungefährer Test Ablauf.

- Testapp starten.
- Text eingeben
- Text markieren und im Menü Edit->Copy
- Output in Konsole bewundern :)
- Text entmarkieren
- In anderem Programm mit Edit->Paste einfügen.
- Dessen Output bewundern.

- Test in anderer Richtung wiederholen.

Die Ausgabe auf der Konsole sollte interessante Hinweise geben, wie dier Clipboard Inhalt anderen Applikationen angeboten wird, also mit welchen MIME Types.

Ein entsprechendes Programm in anderen Toolkits wäre fein, um verschiedene Kombinationn zu testen.
Man kann zwar zB mit einem GTK Programm testen, aber dann sieht man nicht, wie dort die MIME Types ankommen, bzw welche zu Verfügung stehen.

Ciao,
_

Berufspenner
06-08-2003, 17:45
Hi@all

Achso. Gut, bei mir scheint das alles zu funktionieren und folgendes wird ausgegeben
-- copy --
Transferable has 2 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=unicode
-- copy finished --
-- paste --
Transferable has 2 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=unicode
-- paste finished --
-- copy --
Transferable has 2 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=unicode
-- copy finished -- Cu
André

anda_skoa
06-08-2003, 18:56
Original geschrieben von Berufspenner
Hi@all

Achso. Gut, bei mir scheint das alles zu funktionieren und folgendes wird ausgegeben


Das ist Java intern, copy und paste sprechen von Transferable, diesen Output hab ich nur im Java Programm.
Das Qt Programm sagt MimeSource.

Innerhalb des selben Toolkits muss es ja fast gehen, problematisch ist ja meistens der Fall zwischen zwei verschiedenen Toolkits.
Bei Java hängt es halt davon ab, welches Toolkit die AWT Implementierung stellt.

Ciao,
_

peschmae
07-08-2003, 08:18
schau mal Zeile 34 des java-progs:


m_clipboard = new Clipboard(" alsdf");


wenn du das System-Clipboard willst musst du da schreiben:


m_clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClip board();


dann gehts

MfG Peschmä

anda_skoa
07-08-2003, 12:30
Original geschrieben von peschmae
wenn du das System-Clipboard willst musst du da schreiben:


m_clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClip board();


dann gehts


Ah, vielen Dank. Klappt wunderbar. :)

Ciao,
_

anda_skoa
07-08-2003, 20:06
Im Großen und Ganzen klappts jetzt in allen Kombinationen.
Ich hab noch ein Problem von AWT->Qt, wenn von AWT nur eine Zeile oder weniger kopiert wurde.
Dann kommt in Qt der kopierte Text und zustätzlicher Datenmüll an.

Liegt vielleicht an meinem AWT Code.

Qt->Qt
Quelle


-- copy --
detecting change of clipboard data
MimeSource 0 has 5 formats:
Format 0: text/plain;charset=UTF-8
Format 1: text/plain;charset=ISO-10646-UCS-2
Format 2: text/plain
Format 3: text/plain;charset=iso8859-15
Format 4: application/x-qrichtext
-- copy finished --

Ziel


-- paste --
MimeSource 0 has 9 formats:
Format 0: text/plain;charset=UTF-8
Format 1: text/plain
Format 2: text/plain
Format 3: text/plain;charset=ISO-8859-1
Format 4: text/plain;charset=UTF-8
Format 5: text/plain;charset=ISO-10646-UCS-2
Format 6: text/plain
Format 7: text/plain;charset=iso8859-15
Format 8: application/x-qrichtext
-- paste finished--


Qt->AWT
Quelle


-- copy --
detecting change of clipboard data
MimeSource 0 has 5 formats:
Format 0: text/plain;charset=UTF-8
Format 1: text/plain;charset=ISO-10646-UCS-2
Format 2: text/plain
Format 3: text/plain;charset=iso8859-15
Format 4: application/x-qrichtext
-- copy finished --

Ziel


-- paste --
Transferable has 5 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=iso8859-1
Format 2: text/plain; class=java.io.InputStream
Format 3: text/plain; class=java.io.InputStream; charset=unicode
Format 4: text/plain; class=java.io.InputStream; charset=X11-COMPOUND_TEXT
-- paste finished --


AWT->Qt
Quelle


-- copy --
Transferable has 2 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=unicode
-- copy finished --

Ziel


-- paste --
MimeSource 1 has 4 formats:
Format 0: text/plain
Format 1: text/plain;charset=ISO-8859-1
Format 2: JAVA_DATAFLAVOR:application/x-java-serialized-object; class=java.lang.String
Format 3: JAVA_DATAFLAVOR:text/plain; class=java.io.InputStream; charset=unicode
-- paste finished--


AWT->AWT
Quelle


-- copy --
Transferable has 2 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=unicode
-- copy finished --

Ziel


-- paste --
Transferable has 4 formats
Format 0: application/x-java-serialized-object; class=java.lang.String
Format 1: text/plain; class=java.io.InputStream; charset=iso8859-1
Format 2: text/plain; class=java.io.InputStream
Format 3: text/plain; class=java.io.InputStream; charset=unicode
-- paste finished --


Interessant ist, dass irgendwie Datentypen hinzukommen, wenn in eine andere Applikation gepastet wird, zb


Format 3: text/plain;charset=ISO-8859-1

beim Qt->Qt Test.

Ich hoffen dass einer unserer GTK Coder Zeit hat, auch ein entsprechendes Programm zu machen, dann könnte wir auch damit Kombinationen testen.
Selbiger Aufruf an Entwickler mit entsprechende Know-How in anderen Toolkits :)

Interessant sind dann noch anderen Datenarten, Images zum Beispiel.
Mal sehen, ob ich das nächste Woche für Qt und AWT bewerkstelligen kann (außer einer unserer Java Entwickler möchte den Java Teil übernehmen :D )

Im Attachment ist der Qt Test und der korrigierte AWT Test.

Ciao,
_