nul
26-08-2003, 18:51
Hab ein kleines GtkEntry geschrieben:
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <string.h>
void enter_callback( GtkWidget *widget,
GtkWidget *entry );
int main( int argc,
char *argv[] )
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *entry;
gint tmp_pos;
gtk_init (&argc, &argv);
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (GTK_WIDGET (window), 200, 30);
gtk_window_set_title (GTK_WINDOW (window), "GTK Entry");
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);
entry = gtk_entry_new ();
gtk_entry_set_max_length (GTK_ENTRY (entry), 100);
g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (enter_callback),
(gpointer) entry);
gtk_entry_set_text (GTK_ENTRY (entry), "Programm");
tmp_pos = GTK_ENTRY (entry)->text_length;
gtk_editable_insert_text (GTK_EDITABLE (entry), " eingeben", -1, &tmp_pos);
gtk_editable_select_region (GTK_EDITABLE (entry),
0, GTK_ENTRY (entry)->text_length);
gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
gtk_widget_show (entry);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_show (window);
gtk_main();
return 0;
}
void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{
char text_system[100];
const gchar *entry_text;
int laenge;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
laenge = strlen(entry_text);
if (entry_text[laenge-1] == '&')
{
system(entry_text);
}
else
{
strcpy(text_system, entry_text);
strcat(text_system,"&");
system(text_system);
}
exit(-1);
}
Nun hab ich länger und auch vergebens versucht dem beizubringen, dass wenn ich mc oder mc& eingebe, er mir folgendes ausführt: x-terminal-emulator -T mc -e mc
Ich habs aber nie geschafft!! :(
Wie würdet ihr das anstellen?
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
#include <string.h>
void enter_callback( GtkWidget *widget,
GtkWidget *entry );
int main( int argc,
char *argv[] )
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *entry;
gint tmp_pos;
gtk_init (&argc, &argv);
/* create a new window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_set_size_request (GTK_WIDGET (window), 200, 30);
gtk_window_set_title (GTK_WINDOW (window), "GTK Entry");
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show (vbox);
entry = gtk_entry_new ();
gtk_entry_set_max_length (GTK_ENTRY (entry), 100);
g_signal_connect (G_OBJECT (entry), "activate",
G_CALLBACK (enter_callback),
(gpointer) entry);
gtk_entry_set_text (GTK_ENTRY (entry), "Programm");
tmp_pos = GTK_ENTRY (entry)->text_length;
gtk_editable_insert_text (GTK_EDITABLE (entry), " eingeben", -1, &tmp_pos);
gtk_editable_select_region (GTK_EDITABLE (entry),
0, GTK_ENTRY (entry)->text_length);
gtk_box_pack_start (GTK_BOX (vbox), entry, TRUE, TRUE, 0);
gtk_widget_show (entry);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_widget_show (window);
gtk_main();
return 0;
}
void enter_callback( GtkWidget *widget,
GtkWidget *entry )
{
char text_system[100];
const gchar *entry_text;
int laenge;
entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
laenge = strlen(entry_text);
if (entry_text[laenge-1] == '&')
{
system(entry_text);
}
else
{
strcpy(text_system, entry_text);
strcat(text_system,"&");
system(text_system);
}
exit(-1);
}
Nun hab ich länger und auch vergebens versucht dem beizubringen, dass wenn ich mc oder mc& eingebe, er mir folgendes ausführt: x-terminal-emulator -T mc -e mc
Ich habs aber nie geschafft!! :(
Wie würdet ihr das anstellen?