#include <gtk/gtk.h>
enum {
COMBOBOX1,
COMBOBOX2,
COMBOBOX3,
COMBOBOX4,
COMBOBOX5,
COMBOBOX6,
ILOSC_COMOBOX
};
void combo_selected( GtkWidget * widget, gpointer etykieta );
int main( int argc, char * argv[] )
{
GtkWidget * okno;
GtkWidget * vbox;
GtkWidget * tabela;
GtkWidget * combobox1, * combobox2, * combobox3, * combobox4, * combobox5, * combobox6, * combobox7;
GtkWidget * etykieta, * etykieta2;
gtk_init( & argc, & argv );
okno = gtk_window_new( GTK_WINDOW_TOPLEVEL );
gtk_window_set_title( GTK_WINDOW( okno ), "Combo" );
g_signal_connect( G_OBJECT( okno ), "destroy", G_CALLBACK( gtk_main_quit ), NULL );
vbox = gtk_vbox_new( TRUE, 5 );
gtk_container_add( GTK_CONTAINER( okno ), vbox );
tabela = gtk_table_new( 4, 6, FALSE );
etykieta = gtk_label_new( "Wybierz producenta :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 0, 1, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox1 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox1 ), "Na A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox1 ), "Na B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox1 ), "Na C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox1 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox1, 1, 2, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Typ socketu :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 0, 1, 1, 2,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox2 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox2 ), "Typ Socket A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox2 ), "Typ Socket B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox2 ), "Typ Socket C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox2 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox2, 1, 2, 1, 2,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Socket :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 0, 1, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox3 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox3 ), "Socket A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox3 ), "Socket B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox3 ), "Socket C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox3 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox3, 1, 2, 2, 3,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Chipset :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 0, 1, 3, 4,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox4 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox4 ), "Chipset A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox4 ), "Chipset B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox4 ), "Chipset C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox4 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox4, 1, 2, 3, 4,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Płyty głowne :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 0, 1, 4, 5,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox5 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox5 ), "Płyta A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox5 ), "Płyta B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox5 ), "Płyta C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox5 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox5, 1, 2, 4, 5,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Nazwa płyty głowne :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 2, 3, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox6 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "Płyta A" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "Płyta B" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "Płyta C" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox6 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox6, 3, 4, 0, 1,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
etykieta = gtk_label_new( "Ilość złączy sata :" );
gtk_table_attach( GTK_TABLE( tabela ), etykieta, 2, 3, 1, 2,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
combobox6 = gtk_combo_box_new_text();
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "1" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "2" );
gtk_combo_box_append_text( GTK_COMBO_BOX( combobox6 ), "3" );
gtk_combo_box_set_active( GTK_COMBO_BOX( combobox6 ), 0 );
gtk_table_attach( GTK_TABLE( tabela ), combobox6, 3, 4, 1, 2,
GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0 );
gtk_box_pack_start( GTK_BOX( vbox ), tabela, FALSE, FALSE, 0 );
etykieta2 = gtk_label_new( "" );
gtk_container_add( GTK_CONTAINER( vbox ), etykieta2 );
g_signal_connect( G_OBJECT( combobox1 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX1 ) );
g_signal_connect( G_OBJECT( combobox2 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX2 ) );
g_signal_connect( G_OBJECT( combobox3 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX3 ) );
g_signal_connect( G_OBJECT( combobox4 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX4 ) );
g_signal_connect( G_OBJECT( combobox5 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX5 ) );
g_signal_connect( G_OBJECT( combobox6 ), "changed", G_CALLBACK( combo_selected ), GINT_TO_POINTER( COMBOBOX6 ) );
gtk_widget_show_all( okno );
gtk_main();
return 0;
}
void combo_selected( GtkWidget * widget, gpointer dane_uzytkownika )
{
guint ktory_combo;
ktory_combo = GPOINTER_TO_INT( dane_uzytkownika );
g_print( "Wybrano %d\n", ktory_combo );
}