gtkmm уменьшение кода
Пиши программку на подобие калькулятора на С++. Но код получается большим в отличие от gtk+ на C. Вот привожу свой код (только 3 кнопки из 10) на Gtkmm:
void Widgets::on_numBut1_clicked()
{
std::string s1 = textbox->get_text();
std::string s2 = s1 + "1";
textbox->set_text(s2.c_str());
}
void Widgets::on_numBut2_clicked()
{
std::string s1 = textbox->get_text();
std::string s2 = s1 + "2";
textbox->set_text(s2.c_str());
}
void Widgets::on_numBut3_clicked()
{
std::string s1 = textbox->get_text();
std::string s2 = s1 + "3";
textbox->set_text(s2.c_str());
}
А вот аналогичный код на C (копипаст с symmetrica.net):
static signed long int fgvalue= 0, bgvalue = 0;
static char screen[32];
static int mode = 2;
void on_numBut_clicked(gpointer user_data, GtkButton *button)
{
int i = atoi(gtk_button_get_label(button));
if (mode == 2) {
bgvalue = fgvalue;
fgvalue = 0;
mode = 1;
}
fgvalue = fgvalue*10 + i;
sprintf(screen, "%li\0", fgvalue);
gtk_entry_set_text(GTK_ENTRY(user_data), screen);
}
В своём коде я сделала каждой кнопке по сигналу. А в примере на C все кнопки имеют один сигнал и в gtk_entry вставляется метка кнопки. Собственно прошу помощи на gtkmm реализовать похожий код. В основном не понятно как через один сигнал понять какая кнопка нажата.