wie "greife" ich strings bei gtk ?

Post Reply
Message
Author
Boris

wie "greife" ich strings bei gtk ?

#1 Post by Boris »

hallo zusammen

habe an einem skript rumgebastelt:

#include <gtk/gtk.h>

/*Programmende*/
void ende_cb(GtkObject *object)
{
gtk_main_quit();
}


void on_mount_click(GtkObject *object)
{
system("linuxsms -name:boris -sms:\"test\"");
}

int main(int argc, char **argv)
{
GtkWidget *fenster;
GtkWidget *box;
GtkWidget *text;
GtkWidget *button_quit, *button_senden, *button, *button2;




/*Gtk initialisieren*/
gtk_init(&argc, &argv);
/*Ein neues Fenster erstellen*/
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/*Buttons erstellen*/

button_quit = gtk_button_new_with_label("Ende");
button_senden = gtk_button_new_with_label("Senden");


text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(GTK_TEXT(text),TRUE);

/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);


/*Signale registrieren*/
gtk_signal_connect_object(GTK_OBJECT(button_quit),
"clicked",
GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));
gtk_signal_connect(GTK_OBJECT(button_senden), "clicked",
GTK_SIGNAL_FUNC(on_mount_click), GTK_OBJECT(fenster));


gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
GTK_SIGNAL_FUNC(ende_cb), NULL);


/*Fensterposition*/
gtk_window_set_position(GTK_WINDOW(fenster),GTK_WI
N_POS_CENTER);

gtk_container_set_border_width(GTK_CONTAINER(fenst
er),15);

gtk_box_pack_start(GTK_BOX(box), text, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(box), button_quit, FALSE, FALSE, 10);
gtk_box_pack_start(GTK_BOX(box), button_senden, FALSE, FALSE, 20);

gtk_container_add(GTK_CONTAINER(fenster),box);

/*Zeigs uns.....*/
gtk_widget_show_all(fenster);

gtk_main();

return 0;
}


so, beim drücken auf senden sendet er den text "test" an den eingestellten empfänger. soweit , sogut.

jetzt kann ich ja in dem textfeld text eingeben. ich will diesen text als string "greifen", damit ich ihn als variable an das proggi linuxsms weitergeben kann. mit den "normalen" puts und gets haut das nicht hin:

Bin für jeden tip dankbar.

gruss

boris

rübezahl

Re: wie

#2 Post by rübezahl »

Ich habe drei Stunden daran gesessen, weil ich zuspäht gemerkt habe, das das kopelieren immer fehlschlägt weil die libs bei mir im Arsch sind. <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">( O.K. vom Prinzieb geht es jetzt.

#include <gtk/gtk.h>
#include <stdio.h>
GtkWidget *text;


/*Programmende*/
void ende_cb(GtkObject *object)
{
gtk_main_quit();
}


gint on_mount_click (GtkWidget *widget, GdkEvent *ereignis, gpointer datum)
{
gchar *buf;
//system("linuxsms -name:boris -sms:\"test\"");
buf = gtk_editable_get_chars (GTK_EDITABLE (text), 0, -1);

g_print("Eingabe: %s", buf );
return (0);
}

int main(int argc, char **argv)
{
GtkWidget *fenster;
GtkWidget *box;
GtkWidget *button_quit, *button_senden;


/*Gtk initialisieren*/
gtk_init(&argc, &argv);
/*Ein neues Fenster erstellen*/
fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/*Buttons erstellen*/

button_quit = gtk_button_new_with_label("Ende");
button_senden = gtk_button_new_with_label("Senden");


text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(GTK_TEXT(text),TRUE);

/*Neue Box erstellen*/
box = gtk_vbox_new(FALSE,0);


/*Signale registrieren*/
gtk_signal_connect_object(GTK_OBJECT(button_quit), "clicked",
GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));

gtk_signal_connect(GTK_OBJECT(button_senden), "clicked",
GTK_SIGNAL_FUNC(on_mount_click), NULL);


gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
GTK_SIGNAL_FUNC(ende_cb), NULL);


/*Fensterposition*/
//gtk_window_set_position(GTK_WINDOW(fenster),GTK_WIN_POS_CENTER);

//gtk_container_set_border_width(GTK_CONTAINER(fenster),15);

gtk_box_pack_start(GTK_BOX(box), text, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(box), button_quit, FALSE, FALSE, 10);
gtk_box_pack_start(GTK_BOX(box), button_senden, FALSE, FALSE, 20);

gtk_container_add(GTK_CONTAINER(fenster),box);

/*Zeigs uns.....*/
gtk_widget_show_all(fenster);

gtk_main();

return 0;
}

boris

Re: wie

#3 Post by boris »

vielen , vielen dank rübezahl !

oje, soviel stress wollte ich dir garnicht machen. vielleicht tröstet dich der gedanke das du einem noob weitergeholfen hast und ich vielleicht jetzt mal jemand anderem helfen kann.

nochmals vielen dank <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

gruss

boris

rübezahl

Re: wie

#4 Post by rübezahl »

Ich habe auch was davon gehabt: 1.) währe ein ähnliches Problem spähter sowieso auf nich zu gekommen (so habe ich dem nur vorgegriffen) und 2.) weis ich jetzt, das in den nächsten Tagen (leider) eine neuinstalation fällig ist. Dann wird meine 1 1/2 Jahre alte Debian 2.2 install durch eine Mandrake ersetzt werden. <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle">

boris

Re: wie

#5 Post by boris »

oje, das tut mir echt leid. aber irgendwie sollte man ja alles positiv sehen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">. wenn du mir nochmal helfen könntest:

ist es möglich an die von dir geschriebene zeile:

g_print("Eingabe: %s", buf );

den befehl für die RETURN-Taste anzufügen ?
folgendes prob: habe die zeile modifiziert in:

g_print("linuxsms -name:boris -sms:\"%s\"", buf );

so schreibt er sie zwar prima hin, aber die RETURN-Taste "fehlt"

wenn ich g_print durch system ersetze schickt er mir die sms mit dem text "%s" (ohne "" )

wie übergebe ich diese variable ? habe es auchmal mit folgendem probiert:

char cline[128]={'\0'};
sprintf(cline,"wget %s
",buf);
system(cline)

dann kommt undeclare.... beim compilieren ??

gruss

boris

Labba

Re: wie

#6 Post by Labba »

@rübezahl:
apt-get update
apt-get dist-upgrade

fertig is Debian3.0 (woody).

boris

Re: wie

#7 Post by boris »

ergänzung:

das Return habe ich hingebracht. ist nur nicht das was ich ereichen wollte, denn er "führt" es ja nicht als befehl aus. wäre toll wenn mir gemand mit dem zweiten teil des postings weiterhelfen könnte ( wie krieg ich die variable in den system befehl )

gruss

boris

rübezahl

Re: wie

#8 Post by rübezahl »

@Labba = Genau das habe ich getam. Das ging aber schief. Dselect brach mit einer unsinnigen Fehlermeldung ab und hinterlies ein angeschlagenes System. Das das System nicht weis, das kaputte Datein hat, kann ich nur noch neu installieren.

@boris = Also deine Zeile sieh jetzt so aus und funz nicht?
system("linuxsms -name:boris -sms:%s", buf );

boris

Re: wie

#9 Post by boris »

hallo rübezahl,

ja, so sieht sie aus. das programm startet und sendet mir dann als text nicht den eingegebenen (buf) sondern

%s

die normalen parameter für den befehl sind:

linuxsms -name:boris -sms:"text" ( mit "" )

ne idee ?

gruss

boris

boris

Re: wie

#10 Post by boris »

ergänzung:

es geht auch ohne "" bei -sms:test ( aber nur wenn man 1 wort eingibt, sonst bad options )

boris

Re: wie

#11 Post by boris »

noch ne ergänzung: habs hinbekommen <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

gruss

boris

Post Reply