/* the followin  is the complete file that takes care
of the visual stuff
* i've kept the menu and menu items global, i did look
at the handlers and they 
* do return true but i cant understand that how does
exapanding and compressing
* make them visible again.
* plz do tell me of  any other bugs if you find them
and thanx again for your help :) */ 


#include "gtk/gtk.h"

int handle(GtkWidget * , GdkEvent *);

void mess( GtkWidget *, gpointer);

void initialize(GtkWidget *);

int drop(GtkWidget * , GdkEvent *);

int del_eve(GtkWidget * , gpointer);

GtkWidget * menu, *menu2;

GtkWidget * menu_item, *menu_item2;

char nodes[10][10];
char temp='o';


main(int argc, char **argv)
{
        GtkWidget * win;
        GtkWidget * button[10][10], * qbutton;
        GtkWidget * table;
        
        char label[6];
        char name[2];
        int i,j;
        win = NULL;
        
        gtk_init(&argc, &argv);
        while(1){
        initialize(win);
        win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        
        //gtk_widget_set_usize(GTK_WIDGET(win), 500, 500);
        
        //gtk_signal_connect ( GTK_OBJECT(win),
"delete_event", GTK_SIGNAL_FUNC(del_eve), NULL);
        
        table = gtk_table_new( 11 ,10 , TRUE);
        
        //labe = gtk_label_new("hello");
        
        name[1]='\0';
        
        for(i=0;i<10;i++)
                for(j=0; j <10 ; j++)
                {
                         sprintf(label,"%d_%d",i,j);
                        //text = gtk_text_new ( NULL, NULL);
                        //gtk_text_set_editable(GTK_TEXT(text), FALSE);
                        //gtk_text_insert (GTK_TEXT (text),
NULL, &color, NULL,label , -1);
                        if( nodes[i][j]=='o')
                        {
                                button[i][j] = gtk_button_new();
                                //gtk_signal_connect(GTK_OBJECT(button[i][j]),
"event", GTK_SIGNAL_FUNC(drop), NULL);
                                //gtk_signal_connect(GTK_OBJECT(button),
(GdkEventButton)"clicked", GTK_SIGNAL_FUNC(drop),
(gpointer) name);
                                
                        }
                        else
                        {
                                name[0]=nodes[i][j];
                                button[i][j] = gtk_button_new_with_label(name);
                                //gtk_signal_connect(GTK_OBJECT(button[i][j]),
"event", GTK_SIGNAL_FUNC(handle), NULL);
                                //gtk_signal_connect(GTK_OBJECT(button),
(GdkEventButton)"clicked", GTK_SIGNAL_FUNC(drop),
(gpointer) name);
                        }
                        //gtk_widget_set_usize(text, 70,20);
                        //gtk_container_add(GTK_CONTAINER(button),
text);
                       
gtk_widget_set_usize(GTK_WIDGET(button[i][j]), 20,20);
                        gtk_widget_set_name(button[i][j], label);
                        
                        gtk_table_attach_defaults(GTK_TABLE(table),
button[i][j], j,j+1,i,i+1);
                        //gtk_widget_show(text);
                        gtk_widget_show(button[i][j]);
                 }
                qbutton = gtk_button_new_with_label("Quit");
                gtk_container_add(GTK_CONTAINER(win), table);
                gtk_signal_connect(GTK_OBJECT(qbutton), "clicked",
GTK_SIGNAL_FUNC(del_eve),(GtkWidget *) win);
                
                gtk_table_attach_defaults(GTK_TABLE(table), qbutton,
0,10,10,11);
                gtk_widget_show(qbutton);
                
                
                gtk_widget_show(table);
                gtk_widget_show_all(win);
        
                for(i=0;i<10;i++)
                   for(j=0; j <10 ; j++)
                   {
                         sprintf(label,"%d_%d",i,j);
                        //text = gtk_text_new ( NULL, NULL);
                        //gtk_text_set_editable(GTK_TEXT(text), FALSE);
                        //gtk_text_insert (GTK_TEXT (text),
NULL, &color, NULL,label , -1);
                        if( nodes[i][j]=='o')
                        {
                                gtk_signal_connect(GTK_OBJECT(button[i][j]),
"event", GTK_SIGNAL_FUNC(drop), NULL);
                                //gtk_signal_connect(GTK_OBJECT(button),
(GdkEventButton)"clicked", GTK_SIGNAL_FUNC(drop),
(gpointer) name);
                                
                        }
                        else
                        {
                                gtk_signal_connect(GTK_OBJECT(button[i][j]),
"event", GTK_SIGNAL_FUNC(handle), NULL);
                                //gtk_signal_connect(GTK_OBJECT(button),
(GdkEventButton)"clicked", GTK_SIGNAL_FUNC(drop),
(gpointer) name);
                        }
                        //gtk_widget_set_usize(text, 70,20);
                        //gtk_container_add(GTK_CONTAINER(button),
text);
                   }
        
              gtk_main();
        }
        
}

int handle ( GtkWidget * widg, GdkEvent * event)
{
        //GtkWidget * menu;
        //GtkWidget * menu_item;
        GdkEventButton * bevent = (GdkEventButton *) event;
        
        if (event->type == GDK_BUTTON_PRESS)
        {
                g_print("\n the button was pressed");
                gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
NULL, NULL, bevent->button, bevent->time);
        }
        
        return TRUE;
        
}

int drop ( GtkWidget * widg, GdkEvent * event)
{
        //GtkWidget * menu;
        //GtkWidget * menu_item;
        GdkEventButton * bevent = (GdkEventButton *) event;
        
        if (event->type == GDK_BUTTON_PRESS)
        {
                g_print("\n the button was pressed");
                gtk_menu_popup (GTK_MENU (menu), NULL, NULL,
NULL, NULL, bevent->button, bevent->time);
        }
        
        return TRUE;
        
}


void mess ( GtkWidget * widg, gpointer data)
{
        
        g_print("\n %s", (char*)data);
        
}

void initialize(GtkWidget * win)
{
        /* settig all entries to o;*/
        int i;
        int j;
        for(i=0; i<10 ; i++)
                for(j=0; j<10; j++)
                        nodes[i][j]='o';
                        
        /* putting values in locations*/
        
        if(win!=NULL)
                gtk_widget_destroy(win);
                
        nodes[1][2]='A';
        nodes[2][4]='B';
        nodes[1][5]='C';
        nodes[3][5]='D';
        nodes[2][7]='E';
        
        menu = gtk_menu_new();
        
        menu_item = gtk_menu_item_new_with_label( " option
1");
        
        gtk_signal_connect(GTK_OBJECT(menu_item), "activate",
GTK_SIGNAL_FUNC(mess), (gpointer ) "option 1");
        
        gtk_menu_append(GTK_MENU(menu), menu_item);
        
        gtk_widget_show(menu_item);
        
        gtk_widget_show(menu);
        
        menu2 = gtk_menu_new();
        
        menu_item = gtk_menu_item_new_with_label( " option 2
");
        
        gtk_signal_connect(GTK_OBJECT(menu_item), "activate",
GTK_SIGNAL_FUNC(mess), (gpointer) "option 2");
        
        gtk_menu_append(GTK_MENU(menu2), menu_item);
        
        gtk_widget_show(menu_item);
        
        gtk_widget_show(menu2);
        
        
}

int del_eve( GtkWidget * widg, gpointer data)
{
        gtk_main_quit();
        return (FALSE);
}

__________________________________________________
Do You Yahoo!?
Sign up for SBC Yahoo! Dial - First Month Free
http://sbc.yahoo.com
_______________________________________________
gtk-list mailing list
[EMAIL PROTECTED]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to