Esempio n. 1
0
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);
}
Esempio n. 2
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);
}
Esempio n. 3
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);
}
Esempio n. 4
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);
}
Esempio n. 5
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);
}
Esempio n. 6
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);
}
Esempio n. 7
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);
}
Esempio n. 8
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);
}
Esempio n. 9
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);
}
Esempio n. 10
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);
}