View previous topic :: View next topic |
Author |
Message |
l3u Advocate
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Tue Jun 30, 2009 12:00 pm Post subject: QtScript testen und Hilfe bei SQLite |
|
|
Hallo :-)
Ich hab mal ein nettes kleines Script für Amarok 1.4 geschrieben, was alle gehörten Lieder in eine Datenbank packt. Dazu hab ich Python benutzt. Jetzt kann man ja in Amarok 2 Scripts nur noch in QtScript (als Java-/ECMA-Script) schreiben. So ein kleines Bißchen Ahnung hab ich davon schon, ich hab’s zumindest mal hinbekommen, daß das Script mittlerweile weiß, was und wann zu loggen wäre. Die Daten sind also schon da, aber ich hab leider keine Ahnung, wie ich sie in eine SQLite-Datenbank bekomme, weil dazu muß man ja wieder die Qt-Klassen benutzen …
Zunächst mal: gibt’s ne Möglichkeit, QtScript auf der Konsole mit einem Interpreter auszuführen, damit man einfach zum Ausprobieren irgendwas auf stdout schreiben kann? Und wo bekomm ich Dokumentation her? Da muß man doch dann irgendwie mit Importer.loadQtBinding() arbeiten, um an die Qt-Klassen ranzukommen, oder?
Also wenn sich da einer von euch auskennt, wäre mir mit einem Codeschnipsel, der eine SQLite-Datenbank aufmacht (die Datei erstellt, falls noch nicht vorhanden), was reinschreibt und was rausholt ganz extrem geholfen!
MfG |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5327
|
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Tue Jun 30, 2009 1:56 pm Post subject: |
|
|
Hab ich schon gelesen, das ist aber irgendwie nicht so recht das Gelbe vom Ei ... |
|
Back to top |
|
|
franzf Advocate
Joined: 29 Mar 2005 Posts: 4565
|
Posted: Tue Jun 30, 2009 7:44 pm Post subject: |
|
|
Schau dich mal in /usr/share/apps/amarok/scripts/ um (z.B. lyrics_lyricwiki).
Laden von SQL mit
Code: | Importer.loadQtBinding( "qt.sql" ); |
Und einige Beispiele findest du auch noch in den examples mit qtscriptgenerator.
Sollte es nicht helfen, schreib einfach konkret, welche Probleme noch bestehen. (Z.B. wie instanziier ich mein QSqlDatabase-Objekt mit QtScript)
Grüße
Franz |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Tue Jun 30, 2009 8:04 pm Post subject: |
|
|
Danke für die Hilfe! Aber leider benutzt weder eines der Scripts, die Amarok mitbringt, noch die Beispiele von qtscriptgenerator SQLite (oder überhaupt SQL) … und wie gesagt, ich hab leider bisher überhaupt keine Ahnung von Qt, da wär’s schon super, wenn ich mir ein paar Codeschnipsel aus einem Script klauen könnte, das mit SQLite kommuniziert ;-)
Daß ich die Qt-Klasse, die ich brauchen werde mit
Code: | Importer.loadQtBinding("qt.sql"); |
hole, hab ich schon rausgefunden. Aber das war’s dann auch schon … offen bleibt dann noch: wie krieg ich eine Verbindung mit einer SQLite-Datenbank und wie bekomm ich Daten da rein und raus?!
Gibt’s denn da keine Beispiele von Qt, so wie bei Python? Die ersten paar Codeschnipsel auf Qt-Script würden mir ja schon reichen! |
|
Back to top |
|
|
franzf Advocate
Joined: 29 Mar 2005 Posts: 4565
|
Posted: Wed Jul 01, 2009 7:54 am Post subject: |
|
|
Die Doku zu qtscriptgenerator ist wirklich etwas dürftig. Drum hab ich dir auch den Tip mit den examples gegeben
Und aus dem Code wie du Widgets erstellst, Labels mit Text versiehst usw. hab ich gedacht findet man auch raus wie man ne Datenbankverbindung öffnet.
Aber wurscht, es gibt in qtscriptgenerator-src/qtbindings/qs_eval ein Tool, welchem du ein Script übergeben kannst. (bauen mit qmake && make im Verzeichnis) Das wird dann ausgeführt.
So kannst du außerhalb von amarok mal mit QtScripts experimentieren.
Ich werd mir auch mal konkret anschauen, wie man mit qtscript.sql arbeitet.
Bis denne viel Erfolg
Franz
// edit:
Ok, hier ein funktionierendes Beispiel:
Code: | var dbPath = "/home/franz/src/qtscriptgenerator/qtscriptgenerator/examples/test.db";
var db = QSqlDatabase.addDatabase("QSQLITE", "");
db.setDatabaseName(dbPath);
db.open();
var query = new QSqlQuery(db);
query.exec("INSERT INTO tbl (name) VALUES ('Peter')"); |
Code: | sqlite3 test.db
sqlite> .schema
CREATE TABLE tbl (id INTEGER PRIMARY KEY, name TEXT); |
// edit2:
Wenn du in qs_eval/main.cpp in Zeile 132 diesen Abschnitt auskommentierst
Code: | if (!dir.cd("plugins")) {
fprintf(stderr, "plugins folder does not exist -- did you build the bindings?\n");
return(-1);
} |
kannst du das qs_eval-executable irgendwo in deinem PATH unterbringen, was deutlich praktischer ist.
Falls ein Fehler im Script ist, öffnet qs_eval einen QtScript Debugger Ist leider "nur" eine Qt-Klasse und kein eigenes executable :/ Aber hauptsache überhaupt! |
|
Back to top |
|
|
l3u Advocate
Joined: 26 Jan 2005 Posts: 2616 Location: Konradsreuth (Germany)
|
Posted: Wed Jul 01, 2009 7:32 pm Post subject: |
|
|
Danke, hat geholfen :-) Langsam blick ich auch durch, wie das alles so insgesamt funktioniert. Die Rohversion vom Amarok-2-Port von logger ist schonmal fertig, jetzt muß ich bloß mal noch bißchen testen! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|