int rom_info_event(rom_info_t *m,int event,int data) { int i; if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; case E_REFRESH: for(i=0; i<20; i++) strcpy(m->labels[i].text,""); if((pce == 0) || (pce->rom == 0)) { strcpy(m->labels[0].text,"No ROM loaded."); return(0); } /* //the rom is in our database if(pce->rom->indatabase == 1) { strcpy(m->labels[0].text,"File:"); strcpy(m->labels[1].text,"Name:"); strcpy(m->labels[2].text,"PRG Size:"); strcpy(m->labels[3].text,"CHR Size:"); strcpy(m->labels[4].text,"Board:"); strcpy(m->labels[5].text,"Mirroring:"); strncpy(m->labels[10].text,nes->rom->filename,30); strncpy(m->labels[11].text,nes->rom->name,30); sprintf(m->labels[12].text,"%d kb",nes->rom->prgsize / 1024); sprintf(m->labels[13].text,"%d kb",nes->rom->chrsize / 1024); sprintf(m->labels[14].text,"%s",nes->rom->board); switch(nes->rom->mirroring) { case 0:sprintf(m->labels[15].text,"Horizontal");break; case 1:sprintf(m->labels[15].text,"Vertical");break; default:sprintf(m->labels[15].text,"Four Screen");break; } } //regular ines rom image else */ { strcpy(m->labels[0].text,"File:"); strcpy(m->labels[1].text,"Name:"); strcpy(m->labels[2].text,"Size:"); strncpy(m->labels[10].text,pce->rom->filename,30); sprintf(m->labels[11].text,"<not in database>"); sprintf(m->labels[12].text,"%d kb",pce->rom->size / 1024); } break; } return(0); }
int sound_event(sound_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: break; case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); checkbox_event(&m->enabled,event,data); checkbox_event(&m->sq1,event,data); checkbox_event(&m->sq2,event,data); checkbox_event(&m->tri,event,data); checkbox_event(&m->noise,event,data); checkbox_event(&m->dmc,event,data); checkbox_event(&m->ext,event,data); text_event(&m->tc,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) m->isshowing = 0; break; } return(0); }
int mappers_event(mappers_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_REFRESH: break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } if(nes->rom) { switch(nes->rom->boardid) { //nes-event case B_EVENT: mapper105_event(m,event,data); break; } } return(0); }
int load_event(load_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: case E_MOUSEDOWN2: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->closebtn,event,data); button_event(&m->loadbtn,event,data); if(list_event(&m->romlist,event,data) > 0) return(1); if(list_event(&m->dirlist,event,data) > 0) return(1); edit_event(&m->edit,event,data); break; case E_MOUSEUP: if(button_event(&m->closebtn,event,data) > 0) m->isshowing = 0; button_event(&m->loadbtn,event,data); if(list_event(&m->romlist,event,data) > 0) return(1); if(list_event(&m->dirlist,event,data) > 0) return(1); edit_event(&m->edit,event,data); break; } return(0); }
int list_event(list_t *m,int event,int data) { char *str; int y; mousemove_u mm; if(scrollbar_event(&m->scrollbar,event,data) > 0) return(1); switch(event) { //key pressed // case E_KEYDOWN: // return(1); case E_MOUSEDOWN2: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); mm.data = data; y = mm.info.y - 1 - m->info.y; m->selected = y / 6 + m->viewstart; if(m->selected >= m->numitems) m->selected = m->numitems - 1; if(event == E_MOUSEDOWN) { if(m->click) m->click(m->user,m->items[m->selected]); } else { if(m->click2) m->click2(m->user,m->items[m->selected]); } return(1); case E_REFRESH: if(m->refresh(m,1) == 0) { //start refresh, dont continue if error if(m->click) m->click(m->user,0); m->numitems = 0; m->viewstart = 0; m->scrollbar.max = 0; //if we need the .. if(data) strcpy(m->items[m->numitems++],".."); //copy all items to list for(m->selected=-1;(str=m->refresh(m,0)) != 0;) strcpy(m->items[m->numitems++],str); m->scrollbar.max = m->numitems; } if(m->refresh(m,1+2) == 0) { //start refresh, dont continue if error //copy all items to list for(m->selected=-1;(str=m->refresh(m,0+2)) != 0;) sprintf(m->items[m->numitems++],"[%s]",str); m->scrollbar.max = m->numitems; } return(1); } return(0); }
int about_event(about_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) m->isshowing = 0; break; } return(0); }
int video_event(video_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); radiogroup_event(&m->filter,event,data); radiogroup_event(&m->videomode,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } return(0); }
int options_event(options_t *m,int event,int data) { if(m->isshowing == 0) return(0); switch(event) { case E_MOUSEMOVE: case E_MOUSEDOWN: if(mouseinrange(&m->info,data) == 0) return(0); button_event(&m->donebtn,event,data); radiogroup_event(&m->fdsbios,event,data); checkbox_event(&m->showinfo,event,data); break; case E_MOUSEUP: if(button_event(&m->donebtn,event,data) > 0) { m->isshowing = 0; config_save(); } break; } return(0); }
int scrollbar_event(scrollbar_t *m,int event,int data) { mousebutton_u mb; mousemove_u mm; gui2_obj_t *obj; int mx,my,p; gui2_obj_t tmp1,tmp2; switch(event) { //mouse scrollbar pressed case E_MOUSEDOWN: case E_MOUSEDOWN2: mb.data = data; //wheel up if(mb.info.btn == 3) { if(m->click) m->position = m->click(m->user,0,3); return(1); } //wheel down if(mb.info.btn == 4) { if(m->click) m->position = m->click(m->user,1,3); if(m->position < 0) m->position = 0; return(1); } mm.data = data; mx = mm.info.x; my = mm.info.y; obj = &m->info; //up button if(mx >= obj->x && mx < (obj->x + obj->w)) { if(my >= obj->y && my < (obj->y + 8)) { if(m->click) m->position = m->click(m->user,0,1); return(1); } } //down button if(mx >= obj->x && mx < (obj->x + obj->w)) { if(my >= (obj->y + obj->h - 8) && my < (obj->y + obj->h)) { if(m->click) m->position = m->click(m->user,1,1); if(m->position < 0) m->position = 0; return(1); } } p = (u32)((double)((double)m->position / (double)m->max) * (double)(m->size - 20)); tmp1.x = tmp2.x = m->info.x; tmp1.y = tmp2.y = m->info.y; tmp1.w = tmp2.w = m->info.w; tmp1.h = tmp2.h = m->info.h; tmp1.h = p + 8; tmp2.y = p + 16 + 8; //page up if(mouseinrange(&tmp1,data) > 0) { if(m->click) m->position = m->click(m->user,0,20); return(1); } //page down if(mouseinrange(&tmp2,data) > 0) { if(m->click) m->position = m->click(m->user,1,20); if(m->position < 0) m->position = 0; return(1); } if(mouseinrange(&m->info,data) > 0) return(1); break; case E_MOUSEUP: break; } return(0); }
int menubar_event(menubar_t *m,int event,int data) { int i,processed; #ifndef PS2 static int msx,msy; #endif load_event(&m->load,event,data); video_event(&m->video,event,data); input_event(&m->input,event,data); sound_event(&m->sound,event,data); gui_input_event(&m->guiinput,event,data); options_event(&m->options,event,data); paths_event(&m->paths,event,data); rom_info_event(&m->rom_info,event,data); tracer_event(&m->tracer,event,data); memory_viewer_event(&m->memory_viewer,event,data); about_event(&m->about,event,data); switch(event) { //mouse button pressed case E_MOUSEDOWN: case E_MOUSEDOWN2: if(mouseinrange(&m->info,data) == 0) return(0); //see if the click was on a menu for(processed=0,i=0;i<MAX_MENUS && m->menus[i].info.w;i++) { //send event to the menu and see if it processes it if(menu_event(&m->menus[i],event,data) > 0) processed = 1; } for(i=0;i<3;i++) { if(button_event(&m->buttons[i],event,data) > 0) processed = 1; } //if event was not processed by a menu or button, then move the window if(processed == 0) { m->ismoving = 1; #ifndef PS2 video_getwindowpos(&msx,&msy); #endif } break; case E_MOUSEUP: m->ismoving = 0; posx = newposx; posy = newposy; //send event off to children for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++) menu_event(&m->menus[i],event,data); #ifndef PS2 for(i=0;i<3;i++) button_event(&m->buttons[i],event,data); #endif break; case E_MOUSEMOVE: #ifndef PS2 if(m->ismoving && config.windowed) { int x,y; mousemove_u mm; mm.data = data; video_getwindowpos(&x,&y); // break; log_message("window moving: ms x = %d, y = %d\n",msx,msy); log_message("window moving: window x = %d, y = %d\n",x,y); log_message("window moving: mouse x = %d, y = %d\n",mm.info.x,mm.info.y); log_message("window moving: mouse xrel = %d, yrel = %d\n",mm.info.xrel,mm.info.yrel); x += mm.info.xrel; y += mm.info.yrel; // SDL_GetRelativeMouseState(&newposx,&newposy); // newposx += posx; // newposy += posy; // newposx = mm.info.x * 3; // newposy = mm.info.y * 3; // if(newposx == posx || newposy == posy) // break; if(x == msx && y == msy) video_setwindowpos(x,y); break; } #endif //send event off to children for(i=0;i<MAX_MENUS && m->menus[i].info.w;i++) menu_event(&m->menus[i],event,data); break; } return(0); }