Beispiel #1
0
GLWindow::GLWindow( bool zbuffer ) {
	m_nTimer = 0;
	m_bMouseCapture = FALSE;
	m_pParent = NULL;

	m_pWidget = gtk_glwidget_new( zbuffer, g_qeglobals_gui.d_glBase );
	gtk_widget_set_can_focus( m_pWidget, TRUE );

#ifdef DBG_GLWINDOW
	Sys_Printf( "GLWindow::GLWindow m_pWidget = %p\n", m_pWidget );
#endif

	if ( g_qeglobals_gui.d_glBase == NULL ) {
		g_qeglobals_gui.d_glBase = m_pWidget;
	}

#if GTK_CHECK_VERSION( 1,3,0 )
	gtk_widget_set_events( m_pWidget, GDK_DESTROY | GDK_EXPOSURE_MASK |
						   GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK );
#else
	gtk_widget_set_events( m_pWidget, GDK_DESTROY | GDK_EXPOSURE_MASK |
						   GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK );
#endif

	// Connect signal handlers
	g_signal_connect( G_OBJECT( m_pWidget ), "realize", G_CALLBACK( realize ), this );
	g_signal_connect( G_OBJECT( m_pWidget ), "expose-event", G_CALLBACK( expose ), this );
	g_signal_connect( G_OBJECT( m_pWidget ), "motion-notify-event", G_CALLBACK( motion ), this );
	g_signal_connect( G_OBJECT( m_pWidget ), "button-press-event", G_CALLBACK( button_press ), this );
	g_signal_connect( G_OBJECT( m_pWidget ), "button-release-event",G_CALLBACK( button_release ), this );
	g_signal_connect( G_OBJECT( m_pWidget ), "size-allocate", G_CALLBACK( resize ), this );
#if GTK_CHECK_VERSION( 1,3,0 )
	g_signal_connect( G_OBJECT( m_pWidget ), "scroll-event", G_CALLBACK( scroll_event ), this );
#endif
}
GLWindow::GLWindow( bool zbuffer ) {
	m_nTimer = 0;
	m_bMouseCapture = FALSE;
	m_pParent = NULL;

	m_pWidget = gtk_glwidget_new( zbuffer, g_qeglobals_gui.d_glBase );
	GTK_WIDGET_SET_FLAGS( m_pWidget, GTK_CAN_FOCUS );

#ifdef DBG_GLWINDOW
	Sys_Printf( "GLWindow::GLWindow m_pWidget = %p\n", m_pWidget );
#endif

	if ( g_qeglobals_gui.d_glBase == NULL ) {
		g_qeglobals_gui.d_glBase = m_pWidget;
	}

#if GTK_CHECK_VERSION( 1,3,0 )
	gtk_widget_set_events( m_pWidget, GDK_DESTROY | GDK_EXPOSURE_MASK |
						   GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK );
#else
	gtk_widget_set_events( m_pWidget, GDK_DESTROY | GDK_EXPOSURE_MASK |
						   GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK );
#endif

	// Connect signal handlers
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "realize", GTK_SIGNAL_FUNC( realize ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "expose_event", GTK_SIGNAL_FUNC( expose ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "motion_notify_event", GTK_SIGNAL_FUNC( motion ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "button_press_event", GTK_SIGNAL_FUNC( button_press ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "button_release_event",GTK_SIGNAL_FUNC( button_release ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "size_allocate", GTK_SIGNAL_FUNC( resize ), this );
#if GTK_CHECK_VERSION( 1,3,0 )
	gtk_signal_connect( GTK_OBJECT( m_pWidget ), "scroll_event", GTK_SIGNAL_FUNC( scroll_event ), this );
#endif
}
Beispiel #3
0
bool CGtkWindow::Show(){
	// check we got everything and are reading to instanciate
	if ( m_nWidthParam == 0 || m_nHeightParam == 0 ) {
		Sys_FPrintf( SYS_ERR, "Height and Width params not set in CGtkWindow::Show\n" );
		return false;
	}
	if ( !m_pListen ) {
		Sys_FPrintf( SYS_ERR, "No listener set in CGtkWindow::Show\n" );
		return false;
	}

	// seems all good, here we go
	m_pWnd = gtk_window_new( GTK_WINDOW_TOPLEVEL );
	gtk_window_set_title( GTK_WINDOW( m_pWnd ), m_Name.GetBuffer() );
	gtk_window_set_default_size( GTK_WINDOW( m_pWnd ), m_nWidthParam, m_nHeightParam );
	gtk_widget_show( m_pWnd );

	// GL widget creation
	m_pGLWidget = gtk_glwidget_new( FALSE, g_qeglobals_gui.d_glBase );

	gtk_widget_set_events( m_pGLWidget, GDK_DESTROY | GDK_EXPOSURE_MASK | GDK_KEY_PRESS_MASK |
						   GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK );

	// Connect signal handlers
	gtk_signal_connect( GTK_OBJECT( m_pGLWidget ), "expose_event", GTK_SIGNAL_FUNC( expose ), this );
	gtk_signal_connect( GTK_OBJECT( m_pGLWidget ), "motion_notify_event",
						GTK_SIGNAL_FUNC( motion ), m_pListen );
	gtk_signal_connect( GTK_OBJECT( m_pGLWidget ), "button_press_event",
						GTK_SIGNAL_FUNC( button_press ), m_pListen );
	gtk_signal_connect( GTK_OBJECT( m_pGLWidget ), "button_release_event",
						GTK_SIGNAL_FUNC( button_release ), m_pListen );

	gtk_signal_connect( GTK_OBJECT( m_pWnd ), "delete_event", GTK_SIGNAL_FUNC( close_widget ), this );
	gtk_signal_connect( GTK_OBJECT( m_pWnd ), "key_press_event",
						GTK_SIGNAL_FUNC( keypress ), m_pListen );

	gtk_widget_show( m_pGLWidget );
	gtk_container_add( GTK_CONTAINER( m_pWnd ), m_pGLWidget );

	return true;
}