/*
 * Bootstrap our UI, get our buffers, etc.
 */
int main( int argc, char* argv[] )
{
    extern int nes_psg_quality; /* FIXME: cheap hack, copied from nes_psg.h */
    
  translation_buffer_16 = NULL;
  vid_pre_xlat = NULL;

  timeslice = NULL;
  timeslice_data = NULL;
  nes_psg_quality = 2;

  image_1 = image_2 = NULL;
  video_buffer_1 = video_buffer_2 = NULL;

  /* Get Gtk up and running. */
  gtk_init( &argc, &argv );

  nes_gtk_window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
  gtk_window_set_title( GTK_WINDOW( nes_gtk_window ), "DarcNES" );
  gtk_widget_set_usize( nes_gtk_window, 256, 240 );
  gtk_signal_connect( GTK_OBJECT( nes_gtk_window ), "destroy",
		      GTK_SIGNAL_FUNC( destroy ), NULL );
  gtk_signal_connect( GTK_OBJECT( nes_gtk_window ), "key_press_event",
		      GTK_SIGNAL_FUNC( key_press ), NULL );
  gtk_signal_connect( GTK_OBJECT( nes_gtk_window ), "key_release_event",
		      GTK_SIGNAL_FUNC( key_release ), NULL );
  gtk_widget_set_events( nes_gtk_window, GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK );
  gtk_widget_show( nes_gtk_window );

  visual = gdk_window_get_visual( nes_gtk_window->window );
  gc = gdk_gc_new( nes_gtk_window->window );
  color_map = gdk_window_get_colormap( nes_gtk_window->window );

  if( argc > 1 )
  {
      int system_type;
      rom_file romfile;
      
      strncpy( rom_name, argv[1], 127 );
      romfile = read_romimage(rom_name);
      system_type = guess_system(romfile);
      activate_system(system_type, romfile);
  }
  else
  {
    show_open_dialog( NULL, NULL );
  }

  /* Using GTK_PRIORITY_HIGH causes Gtk events to not occur. */
  gtk_idle_add( (GtkFunction) emulate_timeslice, NULL );

  gtk_main( );

  return 0;
}
void file_selected( GtkWidget* w, GtkFileSelection* fs )
{
    rom_file romfile;
    int system_type;
    
    strncpy( rom_name, gtk_file_selection_get_filename( GTK_FILE_SELECTION( fs ) ), 127 );
    gtk_widget_destroy( GTK_WIDGET( fs ) );
    romfile = read_romimage(rom_name);
    system_type = guess_system(romfile);
    activate_system( system_type, romfile);
}
Exemple #3
0
int main(int argc, char *argv[])
{
    /* Declarations */
    int c, option_index = 0;
    struct option long_options[] =
    {
        {"old-manifest", required_argument, 0, 'o'},
        {"coordinator-profile-path", required_argument, 0, 'P'},
        {"profile", required_argument, 0, 'p'},
        {"no-upgrade", no_argument, 0, 'u'},
        {"no-rollback", no_argument, 0, 'r'},
        {"dry-run", no_argument, 0, 'd'},
        {"help", no_argument, 0, 'h'},
        {"version", no_argument, 0, 'v'},
        {0, 0, 0, 0}
    };
    char *old_manifest = NULL;
    char *profile = NULL;
    char *coordinator_profile_path = NULL;
    int no_upgrade = FALSE;
    int no_rollback = FALSE;
    int dry_run = FALSE;
    
    /* Parse command-line options */
    while((c = getopt_long(argc, argv, "o:p:hv", long_options, &option_index)) != -1)
    {
        switch(c)
        {
            case 'o':
                old_manifest = optarg;
                break;
            case 'p':
                profile = optarg;
                break;
            case 'P':
                coordinator_profile_path = optarg;
                break;
            case 'r':
                no_rollback = TRUE;
                break;
            case 'u':
                no_upgrade = TRUE;
                break;
            case 'd':
                dry_run = TRUE;
                break;
            case 'h':
            case '?':
                print_usage(argv[0]);
                return 0;
            case 'v':
                print_version(argv[0]);
                return 0;
        }
    }

    /* Validate options */
    
    profile = check_profile_option(profile);
    
    if(optind >= argc)
    {
        fprintf(stderr, "A manifest file has to be specified!\n");
        return 1;
    }
    else
        return activate_system(argv[optind], old_manifest, coordinator_profile_path, profile, no_upgrade, no_rollback, dry_run); /* Execute activation operation */
}