diff --git a/pcsx2/Linux/LnxMain.cpp b/pcsx2/Linux/LnxMain.cpp index 251d9f13d1..847110a13c 100644 --- a/pcsx2/Linux/LnxMain.cpp +++ b/pcsx2/Linux/LnxMain.cpp @@ -17,6 +17,7 @@ */ #include "LnxMain.h" +#include "CDVD/CDVDisoReader.h" using namespace R5900; @@ -334,10 +335,53 @@ void OnLanguage(GtkMenuItem *menuitem, gpointer user_data) void OnFile_RunCD(GtkMenuItem *menuitem, gpointer user_data) { + loadFromISO = false; SysReset(); SysPrepareExecution(NULL); } +void OnRunIso_Ok(GtkButton* button, gpointer user_data) +{ + gchar *File; + loadFromISO = true; + + File = (gchar*)gtk_file_selection_get_filename(GTK_FILE_SELECTION(FileSel)); + strcpy(isoFileName, File); + gtk_widget_destroy(FileSel); + + SysReset(); + SysPrepareExecution( NULL ); +} + +void OnRunIso_Cancel(GtkButton* button, gpointer user_data) +{ + gtk_widget_destroy(FileSel); +} + +void OnFile_RunIso(GtkMenuItem *menuitem, gpointer user_data) +{ + GtkWidget *Ok, *Cancel; + + FileSel = gtk_file_selection_new("Select Iso File"); + + Ok = GTK_FILE_SELECTION(FileSel)->ok_button; + gtk_signal_connect(GTK_OBJECT(Ok), "clicked", GTK_SIGNAL_FUNC(OnRunIso_Ok), NULL); + gtk_widget_show(Ok); + + Cancel = GTK_FILE_SELECTION(FileSel)->cancel_button; + gtk_signal_connect(GTK_OBJECT(Cancel), "clicked", GTK_SIGNAL_FUNC(OnRunIso_Cancel), NULL); + gtk_widget_show(Cancel); + + gtk_widget_show(FileSel); + gdk_window_raise(FileSel->window); +} + +void OnFile_BlockDump(GtkMenuItem *menuitem, gpointer user_data) +{ + Config.Blockdump = (int)gtk_check_menu_item_get_active((GtkCheckMenuItem*)menuitem); + SaveConfig(); +} + void OnRunElf_Ok(GtkButton* button, gpointer user_data) { gchar *File; diff --git a/pcsx2/Linux/callbacks.h b/pcsx2/Linux/callbacks.h index 5b02c1aa37..f908837917 100644 --- a/pcsx2/Linux/callbacks.h +++ b/pcsx2/Linux/callbacks.h @@ -265,3 +265,11 @@ OnLogging_Ok (GtkButton *button, void OnMemcards_Ok (GtkButton *button, gpointer user_data); + +void +OnFile_RunIso (GtkMenuItem *menuitem, + gpointer user_data); + +void +OnFile_BlockDump (GtkMenuItem *menuitem, + gpointer user_data); diff --git a/pcsx2/Linux/interface.c b/pcsx2/Linux/interface.c index 2f00a89ecc..0d1673cb0b 100644 --- a/pcsx2/Linux/interface.c +++ b/pcsx2/Linux/interface.c @@ -2769,7 +2769,9 @@ create_MainWindow (void) GtkWidget *GtkMenuItem_File; GtkWidget *GtkMenuItem_File_menu; GtkWidget *run_cd1; + GtkWidget *run_iso1; GtkWidget *GtkMenuItem_LoadElf; + GtkWidget *enable_blockdump1; GtkWidget *separator2; GtkWidget *states1; GtkWidget *states1_menu; @@ -2861,11 +2863,21 @@ create_MainWindow (void) gtk_widget_show (run_cd1); gtk_container_add (GTK_CONTAINER (GtkMenuItem_File_menu), run_cd1); - GtkMenuItem_LoadElf = gtk_menu_item_new_with_mnemonic (_("_Load Elf")); + run_iso1 = gtk_menu_item_new_with_mnemonic (_("_Run Iso...")); + gtk_widget_set_name (run_iso1, "run_iso1"); + gtk_widget_show (run_iso1); + gtk_container_add (GTK_CONTAINER (GtkMenuItem_File_menu), run_iso1); + + GtkMenuItem_LoadElf = gtk_menu_item_new_with_mnemonic (_("_Load Elf...")); gtk_widget_set_name (GtkMenuItem_LoadElf, "GtkMenuItem_LoadElf"); gtk_widget_show (GtkMenuItem_LoadElf); gtk_container_add (GTK_CONTAINER (GtkMenuItem_File_menu), GtkMenuItem_LoadElf); + enable_blockdump1 = gtk_check_menu_item_new_with_mnemonic (_("_Enable Blockdump")); + gtk_widget_set_name (enable_blockdump1, "enable_blockdump1"); + gtk_widget_show (enable_blockdump1); + gtk_container_add (GTK_CONTAINER (GtkMenuItem_File_menu), enable_blockdump1); + separator2 = gtk_separator_menu_item_new (); gtk_widget_set_name (separator2, "separator2"); gtk_widget_show (separator2); @@ -3177,9 +3189,15 @@ create_MainWindow (void) g_signal_connect ((gpointer) run_cd1, "activate", G_CALLBACK (OnFile_RunCD), NULL); + g_signal_connect ((gpointer) run_iso1, "activate", + G_CALLBACK (OnFile_RunIso), + NULL); g_signal_connect ((gpointer) GtkMenuItem_LoadElf, "activate", G_CALLBACK (OnFile_LoadElf), NULL); + g_signal_connect ((gpointer) enable_blockdump1, "activate", + G_CALLBACK (OnFile_BlockDump), + NULL); g_signal_connect ((gpointer) load_slot_0, "activate", G_CALLBACK (OnStates_Load), NULL); @@ -3299,7 +3317,9 @@ create_MainWindow (void) GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_File, "GtkMenuItem_File"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_File_menu, "GtkMenuItem_File_menu"); GLADE_HOOKUP_OBJECT (MainWindow, run_cd1, "run_cd1"); + GLADE_HOOKUP_OBJECT (MainWindow, run_iso1, "run_iso1"); GLADE_HOOKUP_OBJECT (MainWindow, GtkMenuItem_LoadElf, "GtkMenuItem_LoadElf"); + GLADE_HOOKUP_OBJECT (MainWindow, enable_blockdump1, "enable_blockdump1"); GLADE_HOOKUP_OBJECT (MainWindow, separator2, "separator2"); GLADE_HOOKUP_OBJECT (MainWindow, states1, "states1"); GLADE_HOOKUP_OBJECT (MainWindow, states1_menu, "states1_menu"); diff --git a/pcsx2/Linux/pcsx2.glade b/pcsx2/Linux/pcsx2.glade index 0bff4658cb..c001fd1f48 100644 --- a/pcsx2/Linux/pcsx2.glade +++ b/pcsx2/Linux/pcsx2.glade @@ -4889,15 +4889,34 @@ Version x.x + + + True + _Run Iso... + True + + + + True - _Load Elf + _Load Elf... True + + + True + _Enable Blockdump + True + False + + + + True