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

Alles rund um die Programmierung mit Qt
Antworten
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

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

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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...
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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 :-)
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Hilft dir das nicht weiter?
http://library.gnome.org/admin/system-a ... ng.html.en
oder evtl kbuildsycoca/kbuildsycoca4 vergessen?
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

?
QFile file(QCoreApplication::applicationDirPath());
? Wie soll das klappen?
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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?
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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()"...
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag 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!
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
listeman
Beiträge: 74
Registriert: 19. Mai 2009 13:54
Kontaktdaten:

Beitrag von listeman »

Super! Das ist ja noch viel einfacher :D

Danke!
Antworten