void on_button_clicked_phase2(GtkWidget *button, gpointer data) { int i, j; i = GPOINTER_TO_INT(g_object_get_data (G_OBJECT (button), "button_i")); j = GPOINTER_TO_INT(g_object_get_data (G_OBJECT (button), "button_j")); hide_label("hint"); if (selected_i == -1) { //select phase if (board_owner[i][j] == 3) { show_hint("You cannot move red pieces!"); } else if (board_owner[i][j] != turn) { show_hint("You can only move your own pieces!"); } else { show_count_label_markup(i, j, board[i][j], "<span foreground=\"yellow\"><b>\%i</b></span>"); selected_i = i; selected_j = j; } } else { //move phase if (board_owner[i][j] == -1) {
static void HandleClient(t_x11 *x11,t_manager *man,long data[]) { int ID,button,x,y; bool bPos; real fac; ID=data[0]; button=data[1]; x=data[2]; y=data[3]; bPos=(button==Button1); switch (ID) { case IDROTX: case IDROTY: case IDROTZ: rotate_3d(man->view,ID-IDROTX,bPos); draw_mol(x11,man); break; case IDZOOM: if (bPos) fac=0.8; /* Reduce distance between eye and origin */ else fac=1.25; /* zoom changed to scale by Berk Hess 3-7-96 if (zoom_3d(man->view,fac)) draw_mol(x11,man); */ man->view->sc_x/=fac; man->view->sc_y/=fac; draw_mol(x11,man); break; case IDTRANSX: case IDTRANSY: case IDTRANSZ: translate_view(man->view,ID-IDTRANSX,bPos); draw_mol(x11,man); break; case IDREWIND: if (man->status != -1) { rewind_trj(man->status); read_next_x(man->status,&(man->time),man->natom,man->x,man->box); man->bEof=FALSE; draw_mol(x11,man); } break; case IDSTEP: { int nat; nat=0; if (!step_man(man,&nat)) { man->bEof=TRUE; man->bStop=TRUE; } else { if (nat > 0) { draw_mol(x11,man); usleep(man->nWait*1000); } } break; } case IDFF: man->bStop=FALSE; break; case IDSTOP_ANI: man->bStop=TRUE; break; case IDDRAWMOL: draw_mol(x11,man); break; case IDLABEL: switch (button) { case Button1: case Button2: show_label(x11,man,x,y); break; case Button3: hide_label(x11,man,x,y); break; } break; default: break; } if (man->bAnimate && !man->bEof && !man->bStop) step_message(x11,man); }