Konsolenanwendung und Frontend

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Konsolenanwendung und Frontend

Beitrag von The Hit-Man » 29.08.2006 11:04:02

hat jemand eine Ahnung, wie man zu einem Konsolentool ein Frontend basteln kann? Jeder kennt ja bestimmt K3B und dieses setzt ja bekanntlich auf cdrecord auf ( benutzt also auch ein Konsolentool ). Jetzt meine Frage. Wie schafft man es, die Ausgaben von einem Konsolentool, in ein grafisches Fenster zu bekommen? Wenn K3B am brennen ist, zeigt es ja auch einen ProgressBar an, damit man sehen kann, wie weit der Brennvorgang ist. Wie kann K3B, denn den Status von cdrecord abfragen? Es gibt ja einige Tools, die nur ein grafisches Frontend besitzen und auf einen Konsolentool aufsetzen. Ich finde das hat einen großen Vorteil, denn es ist einfacher, und auch schneller, ein Konsolentool zu programmieren, ohne gleich, das ganze QT-Fenster mit zu kompilieren. Außerdem kann ja auch das Konsolentool in PHP, Perl oder sonstigem geschrieben sein. Hat jemand von Euch eine Ahnung, wie so etwas geht? Ich meine jetzt nicht, "wie bastel ich mir ein Fenster". Das ist ja kein großes Problem. Nur wie bekomme ich dort die Ausgaben hin?
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.08.2006 11:20:23

Naja, in Perl kannst du z.B. einen Befehl starten und dessen Ausgaben via einer Pipe einlesen. In der Doku zu Perls open sollten da paar Beispiele sein.
Oder du nutzt Konstrukte wie Backticks oder qx{}. Also mal auf Perl bezogen. Damit bekommst du dann die Infos in dein Frontend.
Sicher gibts da auch noch eine Reihe anderer Moeglichkeiten...

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 11:29:37

ja, das mit den pipes habe ich schon mal irgendwo gehört. Aber nehmen wir mal K3B als Beispiel. cdrecord ist ja nicht in einer Script-Sprache geschrieben. Ich hatte eigentlich vor gehabt, eine kleine MySql Anwendung in PHP zu schreiben ( weil die Anbindung zu MySQL mir unter PHP ganz gut gefällt ) und später mal ein Frontend dafür zu machen. Was mich an K3B also wundert , ist, das cdrecord ja das eigentliche BrennTool ist ( ich glaube sogar, das Nero-Linux darauf aufsetzt ) und K3B trotzdem einen ProgressBar anzeigen kann, während cdrecord brennt. Machen die das auch mit pipes?
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.08.2006 12:16:44

Ich vermute mal, dass die dazu den -v Schalter von cdrecord nutzen. Dabei gibt cdrecord Infos zum Fortschritt aus. Zusammen mit dem, was das Frontend bzgl. der Menge der zu schreibenden Daten weiss, laesst sich da sicher was basteln. Das heisst, das Frontend startet cdrecord mit entsprechenden Optionen und liest dessen Ausgabe und aktualisiert dann damit die Progressbar.
Aber wenns dich genau interessiert, schau doch einfach mal in den Sourcecode von K3B rein ;)

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 12:36:30

ja, genau das meine ich ja :) Wie ließt K3B die Ausgaben von cdrecord? In dem Code von K3B reinschauen? Oh man, tu mir das nicht an. Ich hatte K3B auf nen 450Mhz kompiliert, das hat eine Stunde gedauert :) Ich mag gar nicht wissen, wieviel Code dahinter hängt und es ist nur ein Frontend.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

mullers

Beitrag von mullers » 29.08.2006 12:40:56

Du könntest Dir mit

Code: Alles auswählen

ps -ef
die Optionen anzeigen lassen, mit denen cdrecord z.B. gestartet wird. Ich hab das mal mit bashburn so gemacht, weil ich eben genau die Optionen haben wollte, und hat gut funktioniert.

henry

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 12:44:04

ja, okay. nur wie kriege ich das Frontend dazu, die Daten zu lesen. Ich brauche kein Code-Beispiel, nur das Prinzip :)
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.08.2006 13:02:16

Naja, Code-Beispiel:

Code: Alles auswählen

open(INPUT, "kommando -options |") or die "Fehler: $!";
while (<INPUT>) { ... mach was ... }
close(INPUT);
Obiger Code bewirkt, dass du ein Kommando startest und dessen Ausgaben mittels einer Pipe lesen kannst. In der While-Schleife passiert dann das eigentliche Einlesen der Ausgabe und da kannst du dann auch entsprechend was anstellen.

Andere Moeglichkeiten waere z.B. auch IPC zu nutzen.

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 13:04:05

Danke, werde das gleich mal testen :)
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 13:46:29

ja, aber wie kann ich dieses Kommando unter C++ starten. ich kenne da nur die normalen Datei-Optionen, also Datei öffnen, lesen, schließen.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 29.08.2006 14:10:10

Uff, in dem Fall war es Perl-Code, wie das unter C++ geht weiss ich nicht. Aber da gibt es sicherlich auch aehnliche Moeglichkeiten.

Fuer C++ hab ich auf die Schnelle das hier gefunden: http://ubuntuforums.org/showthread.php?p=1426991

Wiko
Beiträge: 376
Registriert: 11.05.2006 23:07:35

Beitrag von Wiko » 29.08.2006 15:24:40

Da gäbs ja auch noch zenity und gmessage. Damit kannst du die Verknüpfung von GUI und Engine per Shell erledigen.

Zenity allows you to display GTK+ dialogs from shell scripts; it is a rewrite of the `gdialog' command from GNOME 1. . Zenity includes a gdialog wrapper script so that it can be used with legacy scripts.

gmessage provides an easy way to display scriptable pop-up dialogs. Based on the GIMP Toolkit, gmessage fits in well with desktops such as GNOME, XFce, and ROX.

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 29.08.2006 15:36:19

Wiko hat geschrieben:Da gäbs ja auch noch zenity und gmessage. Damit kannst du die Verknüpfung von GUI und Engine per Shell erledigen.
Das ist aber nicht was er sucht. Er will nicht einfach ein Popup öffnen, sondern eine vollständige Oberfläche bauen, die für die eigentliche Arbeit auf ein Konsolentool zurück greift.

Benutzeravatar
The Hit-Man
Beiträge: 2250
Registriert: 21.11.2004 17:01:56
Wohnort: Menden ( Sauerland )
Kontaktdaten:

Beitrag von The Hit-Man » 29.08.2006 15:59:09

@hupfdule

genau, das suche ich :) werde mir mal den Link antuen. Irgendwie muß es ja gehen.
Wer HTML postet oder gepostetes HTML quotet oder sich gepostetes oder
gequotetes HTML beschafft, um es in Verkehr zu bringen, wird geplonkt.

damals windows, früher ubuntu, danach debian, heute arch-linux ;)

Antworten