예제 #1
0
static void DoNewCamera( idCameraPosition::positionType type ){
	CCamera *cam = AllocCam();

	if ( cam ) {
		char buf[128];
		sprintf( buf, "camera%i", cam->GetCamNum() );

		cam->GetCam()->startNewCamera( type );
		cam->GetCam()->setName( buf );
		cam->GetCam()->buildCamera();

		sprintf( buf, "Unsaved Camera %i", cam->GetCamNum() );
		cam->SetFileName( buf, false );

		SetCurrentCam( cam );
		RefreshCamListCombo();

		// Go to editmode Add
		gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( g_pEditModeAddRadioButton ), TRUE );

		// Show the camera inspector
		DoCameraInspector();

		// Start edit mode (if not initiated by DoCameraInspector)
		if ( !g_bEditOn ) {
			DoStartEdit( GetCurrentCam() );
		}
	}
	else {
		g_FuncTable.m_pfnMessageBox( (GtkWidget *)g_pRadiantWnd, "No free cameras available.", "Create Camera Error", MB_OK, NULL );
	}
}
예제 #2
0
static gint ci_pathlist_changed( GtkWidget *widget, gpointer data )
{
  const char *str = gtk_entry_get_text( GTK_ENTRY(widget) );

  if( !str || !GetCurrentCam() )
    return TRUE;

	int i;
  for( i = 0; i < GetCurrentCam()->GetCam()->numTargets(); i++ ) {
    if( !strcmp( str, GetCurrentCam()->GetCam()->getActiveTarget( i )->getName() ) )
      break;
  }

  if( i >= 0 && i < GetCurrentCam()->GetCam()->numTargets() ) {
    GetCurrentCam()->GetCam()->setActiveTarget( i );

    g_iActiveTarget = i;
		if( g_pPathType )
			gtk_label_set_text( g_pPathType, GetCurrentCam()->GetCam()->getActiveTarget(g_iActiveTarget)->typeStr() );
  } else {
    g_iActiveTarget = -1;
		if( g_pPathType )
			gtk_label_set_text( g_pPathType, GetCurrentCam()->GetCam()->getPositionObj()->typeStr() );
  }

  // start edit mode
  if( g_pCameraInspectorWnd && GTK_WIDGET_VISIBLE( g_pCameraInspectorWnd ) )
    DoStartEdit( GetCurrentCam() );

  return TRUE;
}
예제 #3
0
static gint ci_expose( GtkWidget *widget, gpointer data )
{
  // start edit mode
  DoStartEdit( GetCurrentCam() );

  return FALSE;
}
예제 #4
0
static gint ci_camlist_changed( GtkWidget *widget, gpointer data )
{
  const char *str = gtk_entry_get_text( GTK_ENTRY(widget) );

  CCamera *combo_cam = firstCam;
  while( str && combo_cam ) {
    //if( !strcmp( str, combo_cam->GetCam()->getName() ) )
		//if( combo_cam->HasBeenSaved() ) {
			if( !strcmp( str, combo_cam->GetFileName() ) )
				break;
		/*} else {
			char buf[128];
			sprintf( buf, "Unsaved Camera %i", combo_cam->GetCamNum() );
			if( !strcmp( str, buf ) )
			//if( !strcmp( str, combo_cam->GetCam()->getName() ) )
				break;
		}*/

    combo_cam = combo_cam->GetNext();
  }

  SetCurrentCam( combo_cam );

	if( g_pCamType ) {
		if( GetCurrentCam() ) {
			// Fill in our widgets fields for this camera
			char buf[128];

			// Set Name
			gtk_entry_set_text( GTK_ENTRY(g_pCamName), GetCurrentCam()->GetCam()->getName() );

			// Set type
			gtk_label_set_text( g_pCamType, GetCurrentCam()->GetCam()->getPositionObj()->typeStr() );

			// Set duration
			sprintf( buf, "%.2f", GetCurrentCam()->GetCam()->getBaseTime() );
			gtk_entry_set_text( GTK_ENTRY(g_pSecondsEntry), buf );

			sprintf( buf, "%.2f", GetCurrentCam()->GetCam()->getTotalTime() );
			gtk_label_set_text( g_pCurrentTime, "0.00" );
			gtk_label_set_text( g_pTotalTime, buf );

			gtk_adjustment_set_value( g_pTimeLine, 0.f );
			g_pTimeLine->upper = GetCurrentCam()->GetCam()->getTotalTime() * 1000;
		} else {
			// Set Name
			gtk_entry_set_text( GTK_ENTRY(g_pCamName), "" );

			// Set type
			gtk_label_set_text( g_pCamType, "" );

			// Set duration
			gtk_entry_set_text( GTK_ENTRY(g_pSecondsEntry), "30.00" );

			gtk_label_set_text( g_pCurrentTime, "0.00" );
			gtk_label_set_text( g_pTotalTime, "30.00" );

			gtk_adjustment_set_value( g_pTimeLine, 0.f );
			g_pTimeLine->upper = 30000;
		}

		// Refresh event list
		RefreshEventList();
	}

  RefreshPathListCombo();

  // start edit mode
  g_iActiveTarget = -1;
  if( g_pCameraInspectorWnd && GTK_WIDGET_VISIBLE( g_pCameraInspectorWnd ) )
    DoStartEdit( GetCurrentCam() );

  return TRUE;
}