Seite 1 von 1

*.cdc-datei aus QT mit Qt-Anwendung verknüpfen?

Verfasst: 21. Mai 2009 16:31
von listeman
Hallöchen,

wie gesagt erstelle ich mit einer QT-Anwendung eine Textdatei mit der Endung .cdc. Dateien mit dieser Endung würde ich (unter SuSE) gerne mit meiner Anwendung verknüpfen, so dass ein einfaches Anwählen keinen Texteditor sondern die Anwendung öffnet...

Meine Internetsuche hat mich zu keinem eindeutigen Ergebnis geführt. Manche sagen, es geht, manche sagen, es geht nicht - aber niemand sagt wie^^
Und es gibt ja Programme, die eben das machen, eine textdatei mit eigner Endung mit sich verknüpfen.

Wäre echt cool, wenn mir da jemand weiterhelfen könnte...

Grüßle Lukas

Verfasst: 21. Mai 2009 16:54
von franzf
Die einfachste Variante geht über systemsettings (kde4 sowie kde3) Einfach die Fileassociations öffnen neuen Eintrag hinzufügen, danach Pattern angeben, fertig.

Oder du machst alles per Hand. hier solltest du alles finden :)
Speziell dann "Modifying Mimetypes" und "Registering Applications for MIME Types".

Viel Erfolg
Franz

Verfasst: 21. Mai 2009 17:21
von listeman
Das manuelle verändern ist mir bekannt... was ich aber meine, ist das automatische Ändern aus einer QT-Anwendung heraus... z.B. beim ersten Ausführen verknüpft der die .cdc-Dateien mit sich selbst...

Verfasst: 21. Mai 2009 17:25
von -=Freaky=-
listeman hat geschrieben:Das manuelle verändern ist mir bekannt... was ich aber meine, ist das automatische Ändern aus einer QT-Anwendung heraus... z.B. beim ersten Ausführen verknüpft der die .cdc-Dateien mit sich selbst...
das sollte doch mit hilfe des links von franzf moeglich sein (die xml-files schreibt dein programm dann eben selbst).

mfg,
julian

Verfasst: 21. Mai 2009 18:21
von franzf
Mach doch aus deinem Programm ein rpm, dann kannst du bei der Installation schon den mimetype registrieren.
Bedenke, dass ein User ein .cdc-File bekommt, des öffnen will aber nicht kann, da er dein Programm noch nie gestartet hat. Andereseits ist das eine Verzögerung, wenn jedesmal beim Starten geprüft wird, ob DIESES Programm immer noch Standard ist. Stell dir auch vor, es kommt ein Konkurrenzprodukt auf dein Markt, welches mit deinen FIles umgehen kann. Und dein Programm immer Standard sein will. Ich HASSE sowas von Windows :P

Ich hab mir das Programm jetzt nicht angesxchaut, aber evtl. erleichtert dir xdg-mime die Sache ein wenig. xdg-mime --manual scheint recht ausführlich zu sein.

Verfasst: 21. Mai 2009 21:46
von listeman
Hm, mit rpms erstellen habe ich überhaupt keine Erfahrung und das scheint doch etwas komplizierter zu sein...

Habs mal mit xdg-mime probiert, aber ich komme da net weiter.

Code: Alles auswählen

xdg-mime install CDCmime-CDC.xml
hat diese .xml-Datei "installiert":

Code: Alles auswählen

<?xml version="1.0"?>
       <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
         <mime-type type="text/x-cdc">
           <comment>CDC-Datei</comment>
           <glob pattern="*.cdc"/>
         </mime-type>
       </mime-info>

Wenn ich jetzt in Konqueror eine *.cdc-datei anschaue, dann sagt er immerhin schon nicht mehr "Textdatei", sondern "CDC-Datei"... wenn ich die anklicke, dann frägt er mich, mit welchem Programm er diese datei öffnen soll... doch wie kann ich dem jetzt (nicht manuell) sagen, dass er automatisch das Programm CDC nehmen soll? Da weiß ich im Moment net weiter :-)

Verfasst: 21. Mai 2009 21:58
von franzf
Hilft dir das nicht weiter?
http://library.gnome.org/admin/system-a ... ng.html.en
oder evtl kbuildsycoca/kbuildsycoca4 vergessen?

Verfasst: 21. Mai 2009 22:08
von listeman
Hab nen Fehler in der CDC.desktop gehabt und kbuildsycoca vergessen... jetzt funktioniert es prima, ein Klick auf eine .cdc-datei öffnet jetzt ~/CDC/CDC :D

Vielen Dank an franzf und -=Freaky=-!

Grüßle listeman

Verfasst: 22. Mai 2009 09:18
von listeman
Hallöchen,

ich bins nochmal:
Ich habe den obigen Prozess wunderbar automatisiert bekommen, aber hänge jetzt noch an dem copy-Befehl, der die ausgeführte datei an einen festen Ort verschieben soll, damit ein Klick auf eine .cdc-Datei diese datei auch ausführt.
Kurz: Ich möchte die ausgeführte datei CDC nach ~/.CDC/CDC verschieben. Jedoch funktioniert mein Code nicht...

Code: Alles auswählen

QDir dir;
	if(dir.exists(QDir::homePath() + "/.CDC/") == false) {
		dir.mkdir(QDir::homePath() + "/.CDC/");
	}
	QFile file(QCoreApplication::applicationDirPath());
	if(file.exists(QDir::homePath() + "/.CDC/CDC")) {
		file.remove(QDir::homePath() + "/.CDC/CDC");
	}
	file.copy(QDir::homePath() + "/.CDC/CDC");
Das Verzeichnis ~/.CDC/ wird erstellt, aber die Datei nicht kopiert...

Hat jemand ne Idee, was da nicht stimmen könnte?

Verfasst: 22. Mai 2009 09:21
von franzf
?
QFile file(QCoreApplication::applicationDirPath());
? Wie soll das klappen?

Verfasst: 22. Mai 2009 10:07
von listeman
Upps, stimmt, das ist wenig sinnvoll ;)

Und ein

Code: Alles auswählen

file.setFileName(QCoreApplication::applicationDirPath());
hat ja wahrscheinlich denselben Effekt... aber wie kann ich die ausgeführte Datei dann kopieren?

Verfasst: 22. Mai 2009 10:41
von franzf
listeman hat geschrieben:Upps, stimmt, das ist wenig sinnvoll ;)

Und ein

Code: Alles auswählen

file.setFileName(QCoreApplication::applicationDirPath());
hat ja wahrscheinlich denselben Effekt... aber wie kann ich die ausgeführte Datei dann kopieren?
Warum denn unbedingt die ausgeführte Datei dahin kopieren? Seh den Sinn nicht :/ Kannst du den Sinn mal kurz erklären?
Ansonsten schau in der Doku einen Absatz tiefer. Es gibt auch ein "applicationFilePath()"...

Verfasst: 22. Mai 2009 10:48
von listeman
Hm... dachte eigentlich, dass ich die ausgeführte Datei dahin kopiere, damit ich in der CDC.desktop immer diesen Pfad angeben kann... frag mich gerade aber selber, welchen Sinn das hatte... *grübel* ist doch eigentlich egal, wo die Datei liegt^^

Glaub, das hat sich dann erübrigt :-)

Trotzdem Danke!

Verfasst: 22. Mai 2009 11:09
von franzf
Schmeiß die doch bei dir in den PATH (z.B. ~/bin). Dann kannst du dir die absolute Pfadangabe in der Desktop schenken und nur CDC reinschreiben.

Verfasst: 22. Mai 2009 12:30
von listeman
Super! Das ist ja noch viel einfacher :D

Danke!