2010/11/25 PiÃeiro <apinheiro@xxxxxxxxxx>
From: Emmanuel Gontcho <gontcho@xxxxxxxxx>
As it seems that you are creating a widget for your specific project,
> Thank you all for your answer,
>
> I have never tried before to write a widget from scratch, nor now,
> cause I have no time, the software must work before 15th december. So
> quickly I made what you can see in the attachment, using one or two
> functions, GtkTable and buttons, I think it is enough for the
> begining.
I think that it is worth to comment that there are already some
projects that are creating a keyboard on-screen like Caribou [1]
or Onboard.
[1] http://live.gnome.org/Caribou
===
API (apinheiro@xxxxxxxxxx)
_______________________________________________
gtk-list mailing list
gtk-list@xxxxxxxxx
http://mail.gnome.org/mailman/listinfo/gtk-list
--
Emmanuel Mbenga Gontcho
!!!!! Gem !!!!!
gontcho.wordpress.com
N'utilisez pas Windows 7. Pour savoir pourquoi : http://windows7sins.org/
Don't use Windows 7. To know why : http://windows7sins.org/
Membre de l'April -  promouvoir et dÃfendre le logiciel libre  - http://www.april.org
Rejoignez maintenant plus de 2 500 personnes, associations, entreprises et
collectivitÃs qui soutiennent notre action
/********************************************************************** *This program is free software: you can redistribute it and/or modify * *it under the terms of the GNU General Public License as published by * *the Free Software Foundation, either version 3 of the License, or * *(at your option) any later version. * * * *This program is distributed in the hope that it will be useful, * *but WITHOUT ANY WARRANTY; without even the implied warranty of * *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * *GNU General Public License for more details. * * * *You should have received a copy of the GNU General Public License * *along with this program. If not, see <http://www.gnu.org/licenses/>.* ***********************************************************************/ #include <stdlib.h> #include <string.h> #include <gtk/gtk.h> #include "keyboard.h" void touch_clicked (GtkWidget *button, GtkWidget *label) { char *buffer = NULL; char *labeltext = NULL; char *buttontext = NULL; buttontext = (char *) gtk_button_get_label (GTK_BUTTON (button)); if (GTK_IS_LABEL (label) == TRUE) labeltext = (char *) gtk_label_get_text (GTK_LABEL (label)); if ( GTK_IS_ENTRY (label) == TRUE) labeltext = (char *) gtk_entry_get_text (GTK_ENTRY (label)); if (strcmp (buttontext, "BSP") == 0) { int size; size = sizeof (char) * strlen (labeltext); if (size < 1) return; buffer = malloc (size); strncpy (buffer, labeltext, size); strncpy (buffer + (strlen (labeltext) - 1), "\0", 1); } else if (strcmp (buttontext, "ESP") == 0) { asprintf (&buffer, "%s%s", labeltext ? labeltext : "", " "); } else if (strcmp (buttontext, "DEL") == 0) { asprintf (&buffer, "%s", ""); } else { asprintf (&buffer, "%s%s", labeltext ? labeltext : "", buttontext); } if (GTK_IS_LABEL (label) == TRUE) gtk_label_set_text (GTK_LABEL (label), buffer); if ( GTK_IS_ENTRY (label) == TRUE) gtk_entry_set_text (GTK_ENTRY (label), buffer); } GtkWidget *new_keyboard (GtkWidget *label) { GtkWidget *board; GtkWidget *touch; int i, j, k; char *lab; printf ("abount to launch building table\n"); board = gtk_table_new (3, 9, FALSE); k = 65; for (i = 0; i < 4; i++) { for (j = 0; j < 9; j++) { printf ("about to asprint %c\n", k); asprintf (&lab, "%c", k++); touch = gtk_button_new_with_label (k == 92 ? "ESP" : k == 93 ? "BSP" : k == 94 ? "DEL" : lab); gtk_widget_set_size_request (touch, 50, 50); gtk_table_attach (GTK_TABLE (board), touch, j, j+1, i, i+1, GTK_FILL, GTK_FILL, 2, 2); g_signal_connect (G_OBJECT (touch), "clicked", G_CALLBACK (touch_clicked), label); if (k == 94) break; } if (k == 94) break; } return board; }
/********************************************************************** *This program is free software: you can redistribute it and/or modify * *it under the terms of the GNU General Public License as published by * *the Free Software Foundation, either version 3 of the License, or * *(at your option) any later version. * * * *This program is distributed in the hope that it will be useful, * *but WITHOUT ANY WARRANTY; without even the implied warranty of * *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * *GNU General Public License for more details. * * * *You should have received a copy of the GNU General Public License * *along with this program. If not, see <http://www.gnu.org/licenses/>.* ***********************************************************************/ #ifndef KEYBOARD_H_INCLUDED #define KEYBOARD_H_INCLUDED #include <gtk/gtk.h> GtkWidget *new_keyboard (GtkWidget *label); #endif // KEYBOARD_H_INCLUDED
_______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list