예제 #1
0
void RtKeyButton::mousePressEvent(QMouseEvent *event)
{
    m_bIsScroll = false;
    QPushButton::mousePressEvent(event);
    m_iStartY = event->y();

    emit MousePress(event->globalY(),m_iListIndex);
}
예제 #2
0
파일: List.cpp 프로젝트: AlexDiede/spring
bool List::HandleEventSelf(const SDL_Event& ev)
{
	switch (ev.type) {
		case SDL_MOUSEBUTTONDOWN: {
			if (gui->MouseOverElement(GetRoot(), ev.motion.x, ev.motion.y))
			{
				if(!hasFocus) {
					hasFocus = true;
					MouseMove(ev.motion.x, ev.motion.y, ev.motion.xrel, ev.motion.yrel, ev.motion.state);
				}
			}
			else {
				hasFocus = false;
			}
			if(MouseOver(ev.button.x, ev.button.y)) {
				if(hasFocus) {
					MousePress(ev.button.x, ev.button.y, ev.button.button);
					return true;
				}
			}
			break;
		}
		case SDL_MOUSEBUTTONUP: {
			if (!hasFocus)
				break;
			if (MouseOver(ev.button.x, ev.button.y) || activeScrollbar)
			{
				MouseRelease(ev.button.x, ev.button.y, ev.button.button);
				return true;
			}
			break;
		}
		case SDL_MOUSEMOTION: {
			if (!hasFocus)
				break;
			if (MouseOver(ev.button.x, ev.button.y) || activeScrollbar)
			{
				MouseMove(ev.motion.x, ev.motion.y, ev.motion.xrel, ev.motion.yrel, ev.motion.state);
				return true;
			}
			break;
		}
		case SDL_KEYDOWN: {
			if (!hasFocus)
				break;
			if(ev.key.keysym.sym == SDLK_ESCAPE)
			{
				hasFocus = false;
				break;
			}
			return KeyPressed(ev.key.keysym.sym, false);
		}
	}
	return false;
}
예제 #3
0
void XSilChessWindow::HandleCallbackOrEvent(Widget widget,
                                            XmAnyCallbackStruct * cbs,
                                            XEvent * event)
{
	XGCValues gcval;
	const char * file_name;
	XmString xms;
	char tmp[512];
	int i;

	if (widget==BFileLoad) {
		XtUnmanageChild(LoadDialog);
		XmFileSelectionDoSearch(LoadDialog,NULL);
		XtManageChild(LoadDialog);
	}
	else if (widget==BFileSave) {
		XtUnmanageChild(SaveDialog);
		XmFileSelectionDoSearch(SaveDialog,NULL);
		XtManageChild(SaveDialog);
	}
	else if (widget==BFileExit) {
		exit(0);
	}
	else if (widget==BGameNew) {
		AbortSearching=true;
		HintWanted=false;
		HintValid=false;
		Machine->StartNewGame();
		RT.SetWorld(Machine);
		UpdateStatusBar();
		UpdateMovesList();
		UpdateView();
	}
	else if (widget==BGameFlip) {
		AbortSearching=true;
		HintWanted=false;
		HintValid=false;
		Machine->SetHumanWhite(!Machine->IsHumanWhite());
		RT.SetWorld(Machine);
		UpdateStatusBar();
		UpdateView();
	}
	else if (widget==BGameUndo) {
		AbortSearching=true;
		HintWanted=false;
		HintValid=false;
		Machine->UndoMove();
		if (!Machine->IsHumanOn()) Machine->UndoMove();
		RT.SetWorld(Machine);
		UpdateStatusBar();
		UpdateMovesList();
		UpdateView();
	}
	else if (widget==BGameList) {
		XtUnmanageChild(ListDialog);
		XtManageChild(ListDialog);
	}
	else if (widget==LoadDialog) {
		AbortSearching=true;
		HintWanted=false;
		HintValid=false;
		file_name=XmTextGetString(
			XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT)
		);
		if (!Machine->Load(file_name)) {
			XtUnmanageChild(ErrorBox);
			sprintf(tmp,"Failed to load '%s'",file_name);
			xms=XmStringCreateSimple(tmp);
			XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL);
			XmStringFree(xms);
			XtManageChild(ErrorBox);
		}
		RT.SetWorld(Machine);
		UpdateStatusBar();
		UpdateMovesList();
		UpdateView();
		UpdateDepthMenu();
	}
	else if (widget==SaveDialog) {
		file_name=XmTextGetString(
			XmFileSelectionBoxGetChild(widget,XmDIALOG_TEXT)
		);
		if (access(file_name,F_OK)!=-1) {
			XtUnmanageChild(OverwriteDialog);
			sprintf(tmp,"OK to overwrite '%s'?",file_name);
			xms=XmStringCreateSimple(tmp);
			XtVaSetValues(OverwriteDialog,XmNmessageString,xms,(char*)NULL);
			XmStringFree(xms);
			XtManageChild(OverwriteDialog);
			strcpy(OverwriteFile,file_name);
		}
		else if (!Machine->Save(file_name)) {
			XtUnmanageChild(ErrorBox);
			sprintf(tmp,"Failed to save '%s'",file_name);
			xms=XmStringCreateSimple(tmp);
			XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL);
			XmStringFree(xms);
			XtManageChild(ErrorBox);
		}
	}
	else if (widget==OverwriteDialog) {
		file_name=OverwriteFile;
		if (!Machine->Save(file_name)) {
			XtUnmanageChild(ErrorBox);
			sprintf(tmp,"Failed to save '%s'",file_name);
			xms=XmStringCreateSimple(tmp);
			XtVaSetValues(ErrorBox,XmNmessageString,xms,(char*)NULL);
			XmStringFree(xms);
			XtManageChild(ErrorBox);
		}
	}
	else if (widget==ViewArea) {
		if (cbs!=NULL && cbs->reason==XmCR_EXPOSE &&
		    cbs->event && cbs->event->xexpose.count==0) {
			UpdateView();
		}
		else if (cbs!=NULL && cbs->reason==XmCR_RESIZE) {
			XtVaGetValues(ViewArea,XmNwidth,&ViewWidth,(char*)NULL);
			XtVaGetValues(ViewArea,XmNheight,&ViewHeight,(char*)NULL);
			RT.SetViewSize(ViewWidth,ViewHeight);
			UpdateView();
		}
		else if (event!=NULL && event->type==ButtonPress) {
			MousePress(event->xbutton.x,event->xbutton.y);
		}
		else if (event!=NULL && event->type==MapNotify && !ViewWin) {
			ViewWin=XtWindow(ViewArea);
			ViewGC=XtGetGC(ViewArea,0,&gcval);
		}
	}
	else if (widget==BCompHint) {
		AbortSearching=true;
		HintWanted=true;
		HintValid=false;
		UpdateStatusBar();
	}
	else if (widget==BHelpAbout) {
		XtUnmanageChild(AboutDialog);
		XtManageChild(AboutDialog);
	}
	else if (widget==LDClose) {
		XtUnmanageChild(ListDialog);
	}
	else {
		for (i=0; i<=SilChessMachine::MAX_SEARCH_DEPTH; i++) {
			if (widget==BDepth[i] && cbs!=NULL) {
				if (((XmToggleButtonCallbackStruct*)cbs)->set) {
					AbortSearching=true;
					Machine->SetSearchDepth(i);
					UpdateStatusBar();
				}
			}
		}
	}
	do {
		DoPainting();
		DoSearching();
	} while(NeedPainting && !IsPainting && ViewWin);
}