Example #1
0
void UIYabause::closeEvent( QCloseEvent* e )
{
	aEmulationPause->trigger();
	LogStop();

	if (isFullScreen())
		// Need to switch out of full screen or the geometry settings get saved
		fullscreenRequested( false );
	Settings* vs = QtYabause::settings();
	vs->setValue( "General/Geometry", saveGeometry() );
	vs->sync();

	QMainWindow::closeEvent( e );
}
Example #2
0
int main (int argc, char *argv[])
{
	int i;
	
	const char *commandLine_File = NULL;
	GtkWidget *pVBox;
	GtkWidget *pMenuBar;
	GtkWidget *pMenu, *pSubMenu;
	GtkWidget *pMenuItem, *pSubMenuItem;
	GtkAccelGroup * accel_group;
       
	if(argc == 2) commandLine_File = argv[1];
	
#ifdef DEBUG
        LogStart();
#endif
	
	gtk_init(&argc, &argv);
	SDL_Init(SDL_INIT_VIDEO);
	desmume_init();
	
 	dTools_running = (BOOL*)malloc(sizeof(BOOL) * dTools_list_size);
	for(i=0; i<dTools_list_size; i++) dTools_running[i]=FALSE;
	
	CONFIG_FILE = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
	Read_ConfigFile();
	
	/* Creation de la fenetre */
	pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	gtk_window_set_title(GTK_WINDOW(pWindow), "Desmume");
	gtk_window_set_policy (GTK_WINDOW (pWindow), FALSE, FALSE, FALSE);
	gtk_window_set_icon(GTK_WINDOW (pWindow), gdk_pixbuf_new_from_xpm_data(DeSmuME_xpm));
	
	g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
	g_signal_connect(G_OBJECT(pWindow), "key_press_event", G_CALLBACK(Key_Press), NULL);
	g_signal_connect(G_OBJECT(pWindow), "key_release_event", G_CALLBACK(Key_Release), NULL);

	/* Creation de la GtkVBox */
	pVBox = gtk_vbox_new(FALSE, 0);
	gtk_container_add(GTK_CONTAINER(pWindow), pVBox);

	accel_group = gtk_accel_group_new();
	action_group = gtk_action_group_new("dui");
	gtk_action_group_add_actions(action_group, action_entries, sizeof(action_entries) / sizeof(GtkActionEntry), pWindow);
        {
                GList * list = gtk_action_group_list_actions(action_group);
                g_list_foreach(list, dui_set_accel_group, accel_group);
        }
	gtk_window_add_accel_group(GTK_WINDOW(pWindow), accel_group);
	gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "pause"), FALSE);
	gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "run"), FALSE);
	gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "reset"), FALSE);
	gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "printscreen"), FALSE);

	/**** Creation du menu ****/

	pMenuBar = gtk_menu_bar_new();
	
	/** Menu "Fichier" **/

	pMenu = gtk_menu_new();

	gtk_container_add(GTK_CONTAINER(pMenu), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "open")));
	gtk_container_add(GTK_CONTAINER(pMenu), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "printscreen")));
	gtk_container_add(GTK_CONTAINER(pMenu), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "quit")));
	
	pMenuItem = gtk_menu_item_new_with_label("File");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);

	/** Menu "Emulation" **/
	GtkWidget *mEmulation;
		GtkWidget *mFrameskip;
			GtkWidget *mFrameskip_Radio[MAX_FRAMESKIP];
		GtkWidget *mGraphics;
			GtkWidget *mSize;
				GtkWidget *mSize_Radio[MAX_SCREENCOEFF];
			GtkWidget *mLayers;
				GtkWidget *mLayers_Radio[10];
	
	
	mEmulation = gtk_menu_new();
	pMenuItem = gtk_menu_item_new_with_label("Emulation");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mEmulation);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
	
	gtk_container_add(GTK_CONTAINER(mEmulation), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "run")));
	
	gtk_container_add(GTK_CONTAINER(mEmulation), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "pause")));

	gtk_container_add(GTK_CONTAINER(mEmulation), gtk_action_create_menu_item(gtk_action_group_get_action(action_group, "reset")));
	
		mFrameskip = gtk_menu_new();
		pMenuItem = gtk_menu_item_new_with_label("Frameskip");
		gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mFrameskip);
		gtk_menu_shell_append(GTK_MENU_SHELL(mEmulation), pMenuItem);
		
		for(i = 0; i < MAX_FRAMESKIP; i++) {
			char frameskipRadio_buf[16];
			sprintf(frameskipRadio_buf, "%d", i);
			if(i>0) mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mFrameskip_Radio[i-1]), frameskipRadio_buf);
			else mFrameskip_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, frameskipRadio_buf);
			g_signal_connect(G_OBJECT(mFrameskip_Radio[i]), "activate", G_CALLBACK(Modify_Frameskip), GINT_TO_POINTER(i));
			gtk_menu_shell_append(GTK_MENU_SHELL(mFrameskip), mFrameskip_Radio[i]);
		}
		gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mFrameskip_Radio[0]), TRUE);
		
		mGraphics = gtk_menu_new();
		pMenuItem = gtk_menu_item_new_with_label("Graphics");
		gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mGraphics);
		gtk_menu_shell_append(GTK_MENU_SHELL(mEmulation), pMenuItem);
			
// TODO: Un jour, peut être... ><
			mSize = gtk_menu_new();
			pMenuItem = gtk_menu_item_new_with_label("Size");
			gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mSize);
			gtk_menu_shell_append(GTK_MENU_SHELL(mGraphics), pMenuItem);
			
			for(i = 1; i < MAX_SCREENCOEFF; i++) {
				char sizeRadio_buf[16];
				sprintf(sizeRadio_buf, "x%d", i);
				if(i>1) mSize_Radio[i] = gtk_radio_menu_item_new_with_label_from_widget(GTK_RADIO_MENU_ITEM(mSize_Radio[i-1]), sizeRadio_buf);
				else mSize_Radio[i] = gtk_radio_menu_item_new_with_label(NULL, sizeRadio_buf);
				g_signal_connect(G_OBJECT(mSize_Radio[i]), "activate", G_CALLBACK(Modify_ScreenCoeff), GINT_TO_POINTER(i));
				gtk_menu_shell_append(GTK_MENU_SHELL(mSize), mSize_Radio[i]);
			}
			gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mFrameskip_Radio[0]), TRUE);
		
			mLayers = gtk_menu_new();
			pMenuItem = gtk_menu_item_new_with_label("Layers");
			gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mLayers);
			gtk_menu_shell_append(GTK_MENU_SHELL(mGraphics), pMenuItem);
		
			for(i = 0; i < 10; i++) {
				mLayers_Radio[i] = gtk_check_menu_item_new_with_label(Layers_Menu[i]);
				g_signal_connect(G_OBJECT(mLayers_Radio[i]), "activate", G_CALLBACK(Modify_Layer), (void*)Layers_Menu[i]);
				gtk_menu_shell_append(GTK_MENU_SHELL(mLayers), mLayers_Radio[i]);
				gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mLayers_Radio[i]), TRUE);
			}
			
	
	/** Menu "Options" **/
	GtkWidget *mConfig = gtk_menu_new();
	pMenuItem = gtk_menu_item_new_with_label("Config");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mConfig);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
	
	pMenuItem = gtk_menu_item_new_with_label("Edit controls");
	g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(Edit_Controls), (GtkWidget*) pWindow);
	gtk_menu_shell_append(GTK_MENU_SHELL(mConfig), pMenuItem);
	
#if 0
	
	GtkWidget *mFirmware;
	
	mFirmware = gtk_menu_new();
	pMenuItem = gtk_menu_item_new_with_label("Firmware");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mFirmware);
	gtk_menu_shell_append(GTK_MENU_SHELL(mConfig), pMenuItem);
	
	pMenuItem = gtk_menu_item_new_with_label("Select...");
	g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(SelectFirmwareFile), (gpointer)0);
	gtk_menu_shell_append(GTK_MENU_SHELL(mFirmware), pMenuItem);
		
	pMenuItem = gtk_menu_item_new_with_label("Config");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), mConfig);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
	
#endif
	
	/** Menu "Outils" **/
	
	pMenu = gtk_menu_new();
	
	for(i = 0; i < dTools_list_size; i++)
	{
		pMenuItem = gtk_menu_item_new_with_label(dTools_list[i]->name);
		g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(Start_dTool), GINT_TO_POINTER(i));
		gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);
	}
		
	pMenuItem = gtk_menu_item_new_with_label("Tools");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);
	
	/** Menu "?" **/

	pMenu = gtk_menu_new();

#if ((GTK_MAJOR_VERSION >= 2) && (GTK_MINOR_VERSION >= 6))
	pMenuItem = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
#else
	pMenuItem = gtk_menu_item_new_with_label("About");
#endif
	g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(About), (GtkWidget*) pWindow);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenu), pMenuItem);

	pMenuItem = gtk_menu_item_new_with_label("?");
	gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItem), pMenu);
	gtk_menu_shell_append(GTK_MENU_SHELL(pMenuBar), pMenuItem);

	/* Ajout du menu a la fenetre */
	gtk_box_pack_start(GTK_BOX(pVBox), pMenuBar, FALSE, FALSE, 0);

	/* Création de la Toolbar */
	
	pToolbar = gtk_toolbar_new();
	gtk_box_pack_start(GTK_BOX(pVBox), pToolbar, FALSE, FALSE, 0);

	gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), GTK_TOOL_ITEM(gtk_action_create_tool_item(gtk_action_group_get_action(action_group, "open"))), -1);
	gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), GTK_TOOL_ITEM(gtk_action_create_tool_item(gtk_action_group_get_action(action_group, "run"))), -1);
	gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), GTK_TOOL_ITEM(gtk_action_create_tool_item(gtk_action_group_get_action(action_group, "pause"))), -1);
	gtk_toolbar_insert(GTK_TOOLBAR(pToolbar), GTK_TOOL_ITEM(gtk_action_create_tool_item(gtk_action_group_get_action(action_group, "quit"))), -1);

	/* Création de l'endroit pour l'affichage des écrans */
	
	pDrawingArea= gtk_drawing_area_new();
	
	gtk_drawing_area_size(GTK_DRAWING_AREA(pDrawingArea), 256, 384);
	gtk_widget_set_usize (pDrawingArea, 256, 384);
			
	gtk_widget_set_events(pDrawingArea, GDK_EXPOSURE_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK | GDK_KEY_PRESS_MASK );
	
	g_signal_connect(G_OBJECT(pDrawingArea), "button_press_event", G_CALLBACK(Stylus_Press), NULL);
	g_signal_connect(G_OBJECT(pDrawingArea), "button_release_event", G_CALLBACK(Stylus_Release), NULL);
	g_signal_connect(G_OBJECT(pDrawingArea), "motion_notify_event", G_CALLBACK(Stylus_Move), NULL);
	
	
	g_signal_connect( G_OBJECT(pDrawingArea), "realize", G_CALLBACK(Draw), NULL ) ;
	g_signal_connect( G_OBJECT(pDrawingArea), "expose_event", G_CALLBACK(gtkFloatExposeEvent), NULL ) ;
	
	gtk_box_pack_start(GTK_BOX(pVBox), pDrawingArea, FALSE, FALSE, 0);
	
	/* Création de la barre d'état */
	
	pStatusBar = gtk_statusbar_new();
	
	pStatusBar_Ctx = gtk_statusbar_get_context_id(GTK_STATUSBAR(pStatusBar), "Global");
	
	pStatusBar_Change("Desmume");

	gtk_box_pack_end(GTK_BOX(pVBox), pStatusBar, FALSE, FALSE, 0);
	
	gtk_widget_show_all(pWindow);
	
	//LoadFirmware("fw.bin");
	
	/* Vérifie la ligne de commandes */
	if(commandLine_File)
	{
		if(Open(commandLine_File) >= 0)
		{
			Launch();
		}
		else
		{
			GtkWidget *pDialog = gtk_message_dialog_new(GTK_WINDOW(pWindow),
					GTK_DIALOG_MODAL,
					GTK_MESSAGE_INFO,
					GTK_BUTTONS_OK,
					"Unable to load :\n%s", commandLine_File);
			gtk_dialog_run(GTK_DIALOG(pDialog));
			gtk_widget_destroy(pDialog);
		}
	}
	
	/* Boucle principale */
	
//	gtk_idle_add(&EmuLoop, pWindow);
//	g_idle_add(&EmuLoop, pWindow);
	
	gtk_main();
	
	desmume_free();

#ifdef DEBUG
        LogStop();
#endif

	SDL_Quit();
	
	Write_ConfigFile();
	
	return EXIT_SUCCESS;
}
Example #3
0
TestHarness::TestHarness(QWidget *parent)
    : QWidget(parent)
{
    QGroupBox *ecu_box = new QGroupBox("Engine Control Unit");
    QGroupBox *gps_box = new QGroupBox("GPS");
    QGroupBox *imu_box = new QGroupBox("Inertial Measurement Unit");
    QGroupBox *lts_box = new QGroupBox("Lighting System");
    QGroupBox *wls_box = new QGroupBox("Wireless Radio");
    QGroupBox *tmr_box = new QGroupBox("Timer/Logger");

    QGridLayout *ecu_layout = new QGridLayout();
    QGridLayout *gps_layout = new QGridLayout();
    QGridLayout *imu_layout = new QGridLayout();
    QGridLayout *lts_layout = new QGridLayout();
    QGridLayout *wls_layout = new QGridLayout();
    QGridLayout *tmr_layout = new QGridLayout();
    QGridLayout *layout = new QGridLayout();

    // ecu box
    ecu_rpm_label = new QLabel("RPM:");
    ecu_rpm_edit = new QLineEdit("2000");
    ecu_spark_label = new QLabel("Spark Advance:");
    ecu_spark_edit = new QLineEdit("15.0");
    ecu_cranking_label = new QLabel("Cranking:");
    ecu_cranking_edit = new QCheckBox("Yes");
    ecu_map_label = new QLabel("Manifold Air Pres:");
    ecu_map_edit = new QLineEdit("1500.0");
    ecu_mat_label = new QLabel("Manifold Air Temp:");
    ecu_mat_edit = new QLineEdit("15.0");
    ecu_clt_label = new QLabel("Coolant Temp:");
    ecu_clt_edit = new QLineEdit("90.0");
    ecu_tps_label = new QLabel("Throttle Position:");
    ecu_tps_edit = new QLineEdit("50.0");
    ecu_batt_label = new QLabel("Battery:");
    ecu_batt_edit = new QLineEdit("11.9");
    ecu_maf_label = new QLabel("Mass Airflow:");
    ecu_maf_edit = new QLineEdit("900.0");
    ecu_tc_label = new QLabel("Tach Count:");
    ecu_tc_edit = new QLineEdit("100");
    ecu_update_button = new QPushButton("Update");

    ecu_layout->addWidget(ecu_rpm_label, 0, 0);
    ecu_layout->addWidget(ecu_rpm_edit, 0, 1);
    ecu_layout->addWidget(ecu_spark_label, 1, 0);
    ecu_layout->addWidget(ecu_spark_edit, 1, 1);
    ecu_layout->addWidget(ecu_cranking_label, 2, 0);
    ecu_layout->addWidget(ecu_cranking_edit, 2, 1);
    ecu_layout->addWidget(ecu_map_label, 3, 0);
    ecu_layout->addWidget(ecu_map_edit, 3, 1);
    ecu_layout->addWidget(ecu_mat_label, 4, 0);
    ecu_layout->addWidget(ecu_mat_edit, 4, 1);
    ecu_layout->addWidget(ecu_clt_label, 5, 0);
    ecu_layout->addWidget(ecu_clt_edit, 5, 1);
    ecu_layout->addWidget(ecu_tps_label, 6, 0);
    ecu_layout->addWidget(ecu_tps_edit, 6, 1);
    ecu_layout->addWidget(ecu_batt_label, 7, 0);
    ecu_layout->addWidget(ecu_batt_edit, 7, 1);
    ecu_layout->addWidget(ecu_maf_label, 8, 0);
    ecu_layout->addWidget(ecu_maf_edit, 8, 1);
    ecu_layout->addWidget(ecu_tc_label, 9, 0);
    ecu_layout->addWidget(ecu_tc_edit, 9, 1);
    ecu_layout->addWidget(ecu_update_button, 10, 0, 1, 2);
    ecu_layout->setRowStretch(11, 1);

    // gps box
    gps_time_label = new QLabel("UTC Time:");
    gps_colon1_label = new QLabel(":");
    gps_colon2_label = new QLabel(":");
    gps_hrs_edit = new QLineEdit("12");
    gps_mins_edit = new QLineEdit("01");
    gps_secs_edit = new QLineEdit("01.001");
    gps_lat_label = new QLabel("Latitude:");
    gps_deg1_label = new QLabel("deg");
    gps_min1_label = new QLabel("min");
    gps_latdeg_edit = new QLineEdit("35");
    gps_latmin_edit = new QLineEdit("15.653229");
    gps_latdir_edit = new QLineEdit("N");
    gps_long_label = new QLabel("Longitude:");
    gps_deg2_label = new QLabel("deg");
    gps_min2_label = new QLabel("min");
    gps_longdeg_edit = new QLineEdit("120");
    gps_longmin_edit = new QLineEdit("39.2362974");
    gps_longdir_edit = new QLineEdit("W");
    gps_alt_label = new QLabel("Altitude:");
    gps_alt_edit = new QLineEdit("500.0");
    gps_speed_label = new QLabel("Speed:");
    gps_speed_edit = new QLineEdit("25.0");
    gps_heading_label = new QLabel("Heading:");
    gps_heading_edit = new QLineEdit("187.5");
    gps_update_button = new QPushButton("Update");

    gps_layout->addWidget(gps_time_label, 0, 0);
    gps_layout->addWidget(gps_hrs_edit, 0, 1);
    gps_layout->addWidget(gps_colon1_label, 0, 2);
    gps_layout->addWidget(gps_mins_edit, 0, 3);
    gps_layout->addWidget(gps_colon2_label, 0, 4);
    gps_layout->addWidget(gps_secs_edit, 0, 5);
    gps_layout->addWidget(gps_lat_label, 1, 0);
    gps_layout->addWidget(gps_latdeg_edit, 1, 1);
    gps_layout->addWidget(gps_deg1_label, 1, 2);
    gps_layout->addWidget(gps_latmin_edit, 1, 3);
    gps_layout->addWidget(gps_min1_label, 1, 4);
    gps_layout->addWidget(gps_latdir_edit, 1, 5);
    gps_layout->addWidget(gps_long_label, 2, 0);
    gps_layout->addWidget(gps_longdeg_edit, 2, 1);
    gps_layout->addWidget(gps_deg2_label, 2, 2);
    gps_layout->addWidget(gps_longmin_edit, 2, 3);
    gps_layout->addWidget(gps_min2_label, 2, 4);
    gps_layout->addWidget(gps_longdir_edit, 2, 5);
    gps_layout->addWidget(gps_alt_label, 3, 0);
    gps_layout->addWidget(gps_alt_edit, 3, 1, 1, 5);
    gps_layout->addWidget(gps_speed_label, 4, 0);
    gps_layout->addWidget(gps_speed_edit, 4, 1, 1, 5);
    gps_layout->addWidget(gps_heading_label, 5, 0);
    gps_layout->addWidget(gps_heading_edit, 5, 1, 1, 5);
    gps_layout->addWidget(gps_update_button, 6, 0, 1, 6);
    gps_layout->setRowStretch(7, 1);

    // imu box
    imu_ax_label = new QLabel("Accel X:");
    imu_ax_edit = new QLineEdit("0.0");
    imu_ay_label = new QLabel("Accel Y:");
    imu_ay_edit = new QLineEdit("1.0");
    imu_az_label = new QLabel("Accel Z:");
    imu_az_edit = new QLineEdit("0.0");
    imu_gx_label = new QLabel("Gyro X:");
    imu_gx_edit = new QLineEdit("0.0");
    imu_gy_label = new QLabel("Gyro Y:");
    imu_gy_edit = new QLineEdit("0.0");
    imu_gz_label = new QLabel("Gyro Z:");
    imu_gz_edit = new QLineEdit("0.0");
    imu_update_button = new QPushButton("Update");

    imu_layout->addWidget(imu_ax_label, 0, 0);
    imu_layout->addWidget(imu_ax_edit, 0, 1);
    imu_layout->addWidget(imu_ay_label, 1, 0);
    imu_layout->addWidget(imu_ay_edit, 1, 1);
    imu_layout->addWidget(imu_az_label, 2, 0);
    imu_layout->addWidget(imu_az_edit, 2, 1);
    imu_layout->addWidget(imu_gx_label, 3, 0);
    imu_layout->addWidget(imu_gx_edit, 3, 1);
    imu_layout->addWidget(imu_gy_label, 4, 0);
    imu_layout->addWidget(imu_gy_edit, 4, 1);
    imu_layout->addWidget(imu_gz_label, 5, 0);
    imu_layout->addWidget(imu_gz_edit, 5, 1);
    imu_layout->addWidget(imu_update_button, 6, 0, 1, 2);
    imu_layout->setRowStretch(7, 1);

    // lights box
    lts_head_label = new QLabel("Headlights:");
    lts_head_edit = new QCheckBox("On");
    lts_brake_label = new QLabel("Brakelights:");
    lts_brake_edit = new QCheckBox("On");
    lts_left_label = new QLabel("Left Turn Signal:");
    lts_left_edit = new QCheckBox("On");
    lts_right_label = new QLabel("Right Turn Signal:");
    lts_right_edit = new QCheckBox("On");
    lts_hazards_label = new QLabel("Hazards:");
    lts_hazards_edit = new QCheckBox("On");
    lts_update_button = new QPushButton("Update");

    lts_layout->addWidget(lts_head_label, 0, 0);
    lts_layout->addWidget(lts_head_edit, 0, 1);
    lts_layout->addWidget(lts_brake_label, 1, 0);
    lts_layout->addWidget(lts_brake_edit, 1, 1);
    lts_layout->addWidget(lts_left_label, 2, 0);
    lts_layout->addWidget(lts_left_edit, 2, 1);
    lts_layout->addWidget(lts_right_label, 3, 0);
    lts_layout->addWidget(lts_right_edit, 3, 1);
    lts_layout->addWidget(lts_hazards_label, 4, 0);
    lts_layout->addWidget(lts_hazards_edit, 4, 1);
    lts_layout->addWidget(lts_update_button, 5, 0, 1, 2);
    lts_layout->setRowStretch(6, 1);

    // wireless box
    wls_rx_label = new QLabel("Received from the radio:");
    wls_rx_edit = new QTextEdit();
    wls_tx_label = new QLabel("Transmit to the radio:");
    wls_tx_edit = new QTextEdit();
    wls_update_button = new QPushButton("Update");

    wls_layout->addWidget(wls_rx_label, 0, 0);
    wls_layout->addWidget(wls_rx_edit, 1, 0);
    wls_layout->addWidget(wls_tx_label, 2, 0);
    wls_layout->addWidget(wls_tx_edit, 3, 0);
    wls_layout->addWidget(wls_update_button, 4, 0);
    wls_layout->setRowStretch(5, 1);

    // timer box
    tmr_time_display = new QLCDNumber(8);
    tmr_time_display->setSegmentStyle(QLCDNumber::Flat);
    tmr_start_button = new QPushButton("Start Timer");
    tmr_stop_button = new QPushButton("Stop Timer");
    log_start_button = new QPushButton("Start Data Logger");
    log_stop_button = new QPushButton("Stop Data Logger");

    tmr_layout->addWidget(tmr_time_display, 0, 0);
    tmr_layout->addWidget(tmr_start_button, 1, 0);
    tmr_layout->addWidget(tmr_stop_button, 2, 0);
    tmr_layout->addWidget(log_start_button, 3, 0);
    tmr_layout->addWidget(log_stop_button, 4, 0);
    tmr_layout->setRowStretch(5, 1);

    // master layout
    ecu_box->setLayout(ecu_layout);
    gps_box->setLayout(gps_layout);
    imu_box->setLayout(imu_layout);
    lts_box->setLayout(lts_layout);
    wls_box->setLayout(wls_layout);
    tmr_box->setLayout(tmr_layout);
    layout->addWidget(ecu_box, 0, 0);
    layout->addWidget(gps_box, 0, 1);
    layout->addWidget(imu_box, 0, 2);
    layout->addWidget(lts_box, 1, 0);
    layout->addWidget(wls_box, 1, 1);
    layout->addWidget(tmr_box, 1, 2);

    setLayout(layout);
    setWindowTitle("Hardware Interface Test Harness");

    // connect up the ui to internal slots
    connect(tmr_start_button, SIGNAL(clicked()), this, SLOT(TmrStart()));
    connect(tmr_stop_button, SIGNAL(clicked()), this, SLOT(TmrStop()));
    connect(this, SIGNAL(TmrTick(int)), tmr_time_display, SLOT(display(int)));
    connect(ecu_update_button, SIGNAL(clicked()), this, SLOT(UpdateEcu()));
    connect(gps_update_button, SIGNAL(clicked()), this, SLOT(UpdateGps()));
    connect(imu_update_button, SIGNAL(clicked()), this, SLOT(UpdateImu()));
    connect(lts_update_button, SIGNAL(clicked()), this, SLOT(UpdateLts()));
    connect(wls_update_button, SIGNAL(clicked()), this, SLOT(UpdateWls()));

    // done initializing ui, set up some internal stuff
    timer_running = false;
    time = new QTime();
    timer = new QTimer(this);
    connect(timer, SIGNAL(timeout()), this, SLOT(TimerTick()));

    // debug
    logger = new DataLogger();
    dashboard = new Dashboard();
    dashboard->show();

    // connect up the test harness to the data logger
    connect(log_start_button, SIGNAL(clicked()), logger, SLOT(LogStart()));
    connect(log_stop_button, SIGNAL(clicked()), logger, SLOT(LogStop()));
    connect(this, SIGNAL(EcuStateChanged(ecustate_t)), logger, SLOT(EcuUpdate(ecustate_t)));
    connect(this, SIGNAL(GpsStateChanged(gpsstate_t)), logger, SLOT(GpsUpdate(gpsstate_t)));
    connect(this, SIGNAL(ImuStateChanged(imustate_t)), logger, SLOT(ImuUpdate(imustate_t)));
    connect(this, SIGNAL(LtsStateChanged(ltsstate_t)), logger, SLOT(LtsUpdate(ltsstate_t)));
    connect(this, SIGNAL(TmrTick(int)), logger, SLOT(TmrUpdate(int)));

    // connect up the test harness to the dashboard
    connect(this, SIGNAL(TmrTick(int)), dashboard, SLOT(TmrUpdate(int)));
    connect(this, SIGNAL(EcuStateChanged(ecustate_t)), dashboard, SLOT(EcuUpdate(ecustate_t)));
    connect(this, SIGNAL(GpsStateChanged(gpsstate_t)), dashboard, SLOT(GpsUpdate(gpsstate_t)));
    connect(this, SIGNAL(ImuStateChanged(imustate_t)), dashboard, SLOT(ImuUpdate(imustate_t)));
    connect(this, SIGNAL(LtsStateChanged(ltsstate_t)), dashboard, SLOT(LtsUpdate(ltsstate_t)));
}
Example #4
0
int main(int argc, char ** argv) {
  static unsigned short keypad = 0;
  u32 last_cycle;

#ifdef DEBUG
  LogStart();
#endif
  NDS_Init();
  SPU_ChangeSoundCore(SNDCORE_SDL, 735 * 4);

  if (argc < 2) {
    fprintf(stderr, "usage: %s filename\n", argv[0]);
    return 1;
  }

  if (NDS_LoadROM(argv[1], MC_TYPE_AUTODETECT, 1) < 0) {
    fprintf(stderr, "error while loading %s\n", argv[1]);
    return 2;
  }

  /*      // This has to get fixed yet
          strcpy(szRomPath, dirname(argv[1]));
          cflash_close();
          cflash_init();
  */
  
  execute = TRUE;

  if(SDL_Init(SDL_INIT_VIDEO) == -1)
    {
      fprintf(stderr, "Error trying to initialize SDL: %s\n",
              SDL_GetError());
      return 1;
    }
  SDL_WM_SetCaption("Desmume SDL", NULL);

  /* Initialize joysticks */
  if(!init_joy()) return 1;
  /* Load our own keyboard configuration */
  set_kb_keys(cli_kb_cfg);

  surface = SDL_SetVideoMode(256, 384, 32, SDL_SWSURFACE);

  while(!sdl_quit) {
    /* Look for queued events and update keypad status */
    keypad = process_ctrls_events(keypad);
    /* Update mouse position and click */
    if(mouse.down) NDS_setTouchPos(mouse.x, mouse.y);
    if(mouse.click)
      { 
        NDS_releasTouch();
        mouse.click = FALSE;
      }

    update_keypad(keypad);     /* Update keypad */
    last_cycle = NDS_exec((560190 << 1) - last_cycle, FALSE);
    SPU_Emulate();
    Draw();
  }

  /* Unload joystick */
  uninit_joy();

  SDL_Quit();
  NDS_DeInit();
#ifdef DEBUG
  LogStop();
#endif

  return 0;
}
Example #5
0
static int
common_gtk_glade_main( struct configured_features *my_config) {
	SDL_TimerID limiter_timer;
        gdbstub_handle_t arm9_gdb_stub;
        gdbstub_handle_t arm7_gdb_stub;
        struct armcpu_memory_iface *arm9_memio = &arm9_base_memory_iface;
        struct armcpu_memory_iface *arm7_memio = &arm7_base_memory_iface;
        struct armcpu_ctrl_iface *arm9_ctrl_iface;
        struct armcpu_ctrl_iface *arm7_ctrl_iface;

#ifdef GTKGLEXT_AVAILABLE
// check if you have GTHREAD when running configure script
	//g_thread_init(NULL);
	register_gl_fun(my_gl_Begin,my_gl_End);
#endif

#ifdef DEBUG
        LogStart();
#endif
	init_keyvals();

        if ( my_config->arm9_gdb_port != 0) {
          arm9_gdb_stub = createStub_gdb( my_config->arm9_gdb_port,
                                          &arm9_memio,
                                          &arm9_base_memory_iface);

          if ( arm9_gdb_stub == NULL) {
            g_print( "Failed to create ARM9 gdbstub on port %d\n",
                     my_config->arm9_gdb_port);
            return -1;
          }
        }
        if ( my_config->arm7_gdb_port != 0) {
          arm7_gdb_stub = createStub_gdb( my_config->arm7_gdb_port,
                                          &arm7_memio,
                                          &arm7_base_memory_iface);

          if ( arm7_gdb_stub == NULL) {
            g_print( "Failed to create ARM7 gdbstub on port %d\n",
                     my_config->arm7_gdb_port);
            return -1;
          }
        }


	if(SDL_Init( SDL_INIT_TIMER | SDL_INIT_VIDEO) == -1)
          {
            fprintf(stderr, "Error trying to initialize SDL: %s\n",
                    SDL_GetError());
            return 1;
          }

	desmume_init( arm9_memio, &arm9_ctrl_iface,
                      arm7_memio, &arm7_ctrl_iface);

        /*
         * Activate the GDB stubs
         * This has to come after the NDS_Init (called in desmume_init)
         * where the cpus are set up.
         */
        if ( my_config->arm9_gdb_port != 0) {
          activateStub_gdb( arm9_gdb_stub, arm9_ctrl_iface);
        }
        if ( my_config->arm7_gdb_port != 0) {
          activateStub_gdb( arm7_gdb_stub, arm7_ctrl_iface);
        }

        /* Initialize joysticks */
        if(!init_joy()) return 1;

	CONFIG_FILE = g_build_filename(g_get_home_dir(), ".desmume.ini", NULL);
	Read_ConfigFile();

	/* load the interface */
	xml           = glade_xml_new(get_ui_file("DeSmuMe.glade"), NULL, NULL);
	xml_tools     = glade_xml_new(get_ui_file("DeSmuMe_Dtools.glade"), NULL, NULL);
	pWindow       = glade_xml_get_widget(xml, "wMainW");
	pDrawingArea  = glade_xml_get_widget(xml, "wDraw_Main");
	pDrawingArea2 = glade_xml_get_widget(xml, "wDraw_Sub");

	/* connect the signals in the interface */
	glade_xml_signal_autoconnect_StringObject(xml);
	glade_xml_signal_autoconnect_StringObject(xml_tools);

	init_GL_capabilities( my_config->software_colour_convert);

	/* check command line file */
	if( my_config->nds_file) {
		if(desmume_open( my_config->nds_file) >= 0)	{
			desmume_resume();
			enable_rom_features();
		} else {
			GtkWidget *pDialog = gtk_message_dialog_new(GTK_WINDOW(pWindow),
					GTK_DIALOG_MODAL,
					GTK_MESSAGE_INFO,
					GTK_BUTTONS_OK,
					"Unable to load :\n%s", my_config->nds_file);
			gtk_dialog_run(GTK_DIALOG(pDialog));
			gtk_widget_destroy(pDialog);
		}
	}

        gtk_widget_show(pDrawingArea);
        gtk_widget_show(pDrawingArea2);

        {
          int use_null_3d = my_config->disable_3d;

#ifdef GTKGLEXT_AVAILABLE
          if ( !use_null_3d) {
            /* setup the gdk 3D emulation */
            if ( init_opengl_gdk_3Demu()) {
              NDS_3D_SetDriver(1);

              if (!gpu3D->NDS_3D_Init()) {
                fprintf( stderr, "Failed to initialise openGL 3D emulation; "
                         "removing 3D support\n");
                use_null_3d = 1;
              }
            }
            else {
              fprintf( stderr, "Failed to setup openGL 3D emulation; "
                       "removing 3D support\n");
              use_null_3d = 1;
            }
          }
#endif
          if ( use_null_3d) {
            NDS_3D_SetDriver ( 0);
            gpu3D->NDS_3D_Init();
          }
        }

//	on_menu_tileview_activate(NULL,NULL);

        /* setup the frame limiter and indicate if it is disabled */
        glade_fps_limiter_disabled = my_config->disable_limiter;

        if ( !glade_fps_limiter_disabled) {
          /* create the semaphore used for fps limiting */
          glade_fps_limiter_semaphore = SDL_CreateSemaphore( 1);

          /* start a SDL timer for every FPS_LIMITER_FRAME_PERIOD
           * frames to keep us at 60 fps */
          limiter_timer = SDL_AddTimer( 16 * FPS_LIMITER_FRAME_PERIOD,
                                        glade_fps_limiter_fn,
                                        glade_fps_limiter_semaphore);
          if ( limiter_timer == NULL) {
            fprintf( stderr, "Error trying to start FPS limiter timer: %s\n",
                     SDL_GetError());
            SDL_DestroySemaphore( glade_fps_limiter_semaphore);
            glade_fps_limiter_disabled = 1;
          }
        }

	/* start event loop */
	gtk_main();
	desmume_free();

        if ( !glade_fps_limiter_disabled) {
          /* tidy up the FPS limiter timer and semaphore */
          SDL_RemoveTimer( limiter_timer);
          SDL_DestroySemaphore( glade_fps_limiter_semaphore);
        }

#ifdef DEBUG
        LogStop();
#endif
        /* Unload joystick */
        uninit_joy();

	SDL_Quit();
	Write_ConfigFile();
	return EXIT_SUCCESS;
}