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
|
#include <gtk/gtk.h>
#include <stdlib.h>
void onBtnModifier(GtkWidget* pWidget, gpointer data);
struct mainWindow
{
GtkWidget* pWindow;
GtkWidget* pLabel;
GtkWidget* pEntry;
GtkWidget* pHbox;
GtkWidget* pBtnModifier;
GtkWidget* pBtnAppliquer;
};
typedef struct mainWindow mainWindow;
int main(int argc,char **argv)
{
GtkWidget* pLabelBase;
mainWindow* pMain;
gtk_init(&argc,&argv);
pMain = (mainWindow*)g_malloc(sizeof(mainWindow));
//Creation d'un pointeur de la structure mainWindow
pMain->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
//Creation de la fenetre principale
gtk_window_set_default_size(GTK_WINDOW(pMain->pWindow),100,200);
gtk_window_set_title(GTK_WINDOW(pMain->pWindow), "Test Label To Entry");
pLabelBase = gtk_label_new("Titre : ");
pMain->pLabel = gtk_label_new("Titre de base");
pMain->pBtnModifier = gtk_button_new_with_label("Modifier");
pMain->pHbox = gtk_hbox_new(TRUE,2);
gtk_box_pack_start(GTK_BOX(pMain->pHbox),pLabelBase, TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(pMain->pHbox),pMain->pLabel, TRUE,FALSE,0);
gtk_box_pack_start(GTK_BOX(pMain->pHbox),pMain->pBtnModifier, TRUE,FALSE,0);
//Ajout des widgets dans pHbox
g_signal_connect(G_OBJECT(pMain->pWindow),"destroy",G_CALLBACK(gtk_main_quit),NULL);
g_signal_connect(G_OBJECT(pMain->pBtnModifier),"clicked",G_CALLBACK(onBtnModifier),(gpointer*) pMain);
gtk_container_add(GTK_CONTAINER(pMain->pWindow),pMain->pHbox);
//Ajout de la hbox pHbox dans la fenetre principale
gtk_widget_show_all(pMain->pWindow);
gtk_main();
return EXIT_SUCCESS;
}
void onBtnModifier(GtkWidget* pWidget, gpointer data)
{
const gchar* sText;
mainWindow *pApp;
pApp = (mainWindow*) data;
sText = gtk_label_get_text(GTK_LABEL(pApp->pLabel));
gtk_widget_destroy(pApp->pLabel);
//Suppression du widget pLabel pour le remplacer par pEntry
gtk_widget_destroy(pApp->pBtnModifier);
//Suppression du widget pBtnModifier pour le remplacer par le widget pBtnAppliquer
pApp->pEntry = gtk_entry_new();
gtk_entry_set_text(GTK_ENTRY(pApp->pEntry),sText);
pApp->pBtnAppliquer = gtk_button_new_with_label("Appliquer");
gtk_box_pack_start(GTK_BOX(pApp->pHbox),pApp->pEntry,FALSE,FALSE,0);
gtk_box_pack_start(GTK_BOX(pApp->pHbox),pApp->pBtnAppliquer,FALSE,FALSE,0);
//Insertion des nouveaux widgets dans pHbox
} |
Partager