From: Guillaume D. <ya...@us...> - 2006-10-14 17:08:47
|
Update of /cvsroot/desmume/desmume/src/gtk In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv8047/src/gtk Modified Files: main.c Log Message: Some more fixes to the gtk port: - now using portable types - actions can only be used when it makes sense (for instance, you have to open a rom before starting the emulation) Index: main.c =================================================================== RCS file: /cvsroot/desmume/desmume/src/gtk/main.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- main.c 14 Oct 2006 14:13:31 -0000 1.4 +++ main.c 14 Oct 2006 17:08:44 -0000 1.5 @@ -28,15 +28,19 @@ static void Pause(); static void Quit(GtkWidget* widget, gpointer data); static void Printscreen(GtkWidget* widget, gpointer data); +static void Reset(); static GtkActionEntry action_entries[] = { { "open", "gtk-open", "Open", "<Ctrl>o", NULL, G_CALLBACK(Open_Select) }, { "run", "gtk-media-play", "Run", "<Ctrl>r", NULL, G_CALLBACK(Launch) }, { "pause", "gtk-media-pause", "Pause", "<Ctrl>p", NULL, G_CALLBACK(Pause) }, { "quit", "gtk-quit", "Quit", "<Ctrl>q", NULL, G_CALLBACK(Quit) }, - { "printscreen",NULL, "Printscreen", NULL, NULL, G_CALLBACK(Printscreen) } + { "printscreen",NULL, "Printscreen", NULL, NULL, G_CALLBACK(Printscreen) }, + { "reset", "gtk-refresh", "Reset", NULL, NULL, G_CALLBACK(Reset) } }; +GtkActionGroup * action_group; + static gint Keypad_Config[DESMUME_NB_KEYS]; const char *Ini_Keypad_Values[DESMUME_NB_KEYS] = @@ -56,7 +60,7 @@ "KEY_DEBUG", }; -#define CONFIG_FILE "desmume.ini" +char * CONFIG_FILE; int Write_ConfigFile() { @@ -200,12 +204,17 @@ pStatusBar_Change("Running ..."); + gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "pause"), TRUE); + gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "run"), FALSE); } static void Pause() { desmume_pause(); pStatusBar_Change("Paused"); + + 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"), TRUE); } /* Sélectionne un fichier puis le charge */ @@ -272,6 +281,9 @@ } gtk_widget_destroy(pFileSelection); + // FIXME: should be set sensitive only if a file was really loaded + gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "run"), TRUE); + gtk_action_set_sensitive(gtk_action_group_get_action(action_group, "reset"), TRUE); } static void Close() @@ -336,7 +348,7 @@ { GdkModifierType state; gint x,y; - signed long EmuX, EmuY; + s32 EmuX, EmuY; if(click) @@ -368,7 +380,7 @@ { GdkModifierType state; gint x,y; - signed long EmuX, EmuY; + s32 EmuX, EmuY; if(desmume_running()) { @@ -397,12 +409,12 @@ return TRUE; } -static unsigned short Cur_Keypad = 0; +static u16 Cur_Keypad = 0; static gint Key_Press(GtkWidget *w, GdkEventKey *e) { int i; - unsigned short Key = 0; + u16 Key = 0; for(i = 0; i < DESMUME_NB_KEYS; i++) if(e->keyval == Keypad_Config[i]) break; @@ -420,7 +432,7 @@ static gint Key_Release(GtkWidget *w, GdkEventKey *e) { int i; - unsigned short Key = 0; + u16 Key = 0; for(i = 0; i < DESMUME_NB_KEYS; i++) if(e->keyval == Keypad_Config[i]) break; @@ -630,23 +642,23 @@ typedef struct { - unsigned long header_size; - long width; - long height; - unsigned short r1; - unsigned short depth; - unsigned long r2; - unsigned long size; - long r3,r4; - unsigned long r5,r6; + u32 header_size; + s32 width; + s32 height; + u16 r1; + u16 depth; + u32 r2; + u32 size; + s32 r3,r4; + u32 r5,r6; }BmpImageHeader; typedef struct { - unsigned short type; - unsigned long size; - unsigned short r1, r2; - unsigned long data_offset; + u16 type; + u32 size; + u16 r1, r2; + u32 data_offset; }BmpFileHeader; @@ -693,7 +705,7 @@ fwrite( &imageheader.r6, sizeof(imageheader.r6), 1, fichier); int i,j,k; for(j=0;j<192*2;j++)for(i=0;i<256;i++){ - unsigned char r,g,b; + u8 r,g,b; u16 pixel = bmp[i+(192*2-j)*256]; r = pixel>>10; pixel-=r<<10; @@ -992,7 +1004,6 @@ GtkWidget *pMenuBar; GtkWidget *pMenu, *pSubMenu; GtkWidget *pMenuItem, *pSubMenuItem; - GtkActionGroup * action_group; GtkAccelGroup * accel_group; if(argc == 2) commandLine_File = argv[1]; @@ -1008,10 +1019,9 @@ 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(); - //pthread_create(&emu_thread, NULL, &EmuThread, NULL); /* Lance le thread de l'émulateur */ - /* Creation de la fenetre */ pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "Desmume"); @@ -1034,6 +1044,10 @@ 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 ****/ @@ -1070,10 +1084,8 @@ 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"))); - - pMenuItem = gtk_menu_item_new_with_label("Reset"); - g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(Reset), (GtkWidget*) pWindow); - gtk_menu_shell_append(GTK_MENU_SHELL(mEmulation), pMenuItem); + + 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"); |