1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <gtk/gtk.h>
void closeApp ( GtkWidget *window, gpointer data ) {
gtk_main_quit();
}
int main( int argc, char *argv[] ) {
GtkWidget *window, *swindow;
GtkWidget *text_view;
GtkWidget *hbox;
GtkTextBuffer *buffer;
FILE *read_fp;
char pbuffer[BUFSIZ + 1];
int chars_read;
char *command = "mencoder -ovc xvid -oac mp3lame -xvidencopts bitrate=300 -o ~/output.avi ~/input.avi";
gtk_init (&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
text_view = gtk_text_view_new();
hbox = gtk_hbox_new ( FALSE, 2 );
gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);
gtk_window_set_title(GTK_WINDOW(window), "Command Output");
g_signal_connect ( GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC ( closeApp), NULL);
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (text_view));
gtk_text_view_set_editable(GTK_TEXT_VIEW (text_view), FALSE);
memset(pbuffer, '\0', sizeof(pbuffer));
read_fp = popen(command, "r");
if (read_fp != NULL) {
chars_read = fread( pbuffer, sizeof( char ), BUFSIZ, read_fp );
while (chars_read > 0) {
pbuffer[chars_read - 1] = '\0';
// printf("Reading:-\n %s\n", pbuffer);
chars_read = fread(pbuffer, sizeof(char), BUFSIZ, read_fp);
}
gtk_text_buffer_set_text (buffer, pbuffer, -1);
}
swindow = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swindow),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
gtk_box_pack_start(GTK_BOX(hbox), swindow, TRUE, TRUE, 5);
gtk_container_add(GTK_CONTAINER(swindow), text_view);
gtk_container_add(GTK_CONTAINER(window), hbox);
gtk_widget_show_all(window);
pclose(read_fp);
gtk_main ();
return 0;
}
|