diff options
| author | iCatButler <i.am.catbutler@gmail.com> | 2018-03-13 17:25:13 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-13 17:25:13 +0000 |
| commit | 768332417644451d38ce1a737465656c7cc75de3 (patch) | |
| tree | e6ca381effb72ccc4161d40f224b817a6631bc03 | |
| parent | 15fe3782c1375634b7a9bd9bbbadfd75e7b06fed (diff) | |
| parent | 2d0b10f982e0b835f4b27be26b138703907a4219 (diff) | |
Merge pull request #6 from loathingKernel/fix-linux-build
Fix compilation on Linux and add the new setting to the UI
102 files changed, 3160 insertions, 2087 deletions
@@ -6,5 +6,8 @@ macosx/build xcuserdata macosx/Info.plistvers.plist +*.kdev4 +linux_build.sh project.xcworkspace .DS_Store +build/ @@ -26,6 +26,7 @@ PCSX-Reloaded Authors/Contributors: avlex (Help on xcode project) edgbla (Root counters, SIO1, various core/plugin fixes) Firnis (GTE code from PCSX-Revolution Project) Hopkat (Sound plugin improvements, core fixes) + iSage (compressed CD-DA, migration to CMake) Gabriele Gorla (MDEC decoder) MaddTheSane (Various bugfixes) maggix (Snow Leopard compile fix) diff --git a/Makefile.am b/Makefile.am index 1873a6bc..82dc5c19 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,14 +1,17 @@ -SUBDIRS = data +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = gui/data SUBDIRS += doc -SUBDIRS += pixmaps +SUBDIRS += gui/data/pixmaps SUBDIRS += po SUBDIRS += libpcsxcore SUBDIRS += gui SUBDIRS += plugins/dfinput SUBDIRS += plugins/dfsound -SUBDIRS += plugins/dfxvideo +SUBDIRS += plugins/dfxvideo SUBDIRS += plugins/dfcdrom SUBDIRS += plugins/dfnet +SUBDIRS += plugins/nullsio1 SUBDIRS += $(BLADESIO1) SUBDIRS += $(PEOPSXGL) @@ -3,13 +3,13 @@ # Additional options go to configure. echo "Rebuilding ./configure with autoreconf..." -if [ ! -d "include" ]; then - mkdir "include" -fi -autoreconf -f -i +for dir in include m4; do + if [ ! -d "$dir" ]; then + mkdir "$dir" + fi +done +autoreconf -f -i . if [ $? -ne 0 ]; then echo "autoreconf failed" exit $? fi - -./configure --enable-maintainer-mode "$@" diff --git a/configure.ac b/configure.ac index 13087c1c..eaa49ba4 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,9 @@ AC_INIT([pcsxr], [1.9.95]) +AC_CONFIG_MACRO_DIRS([m4]) AC_CANONICAL_HOST AC_CANONICAL_BUILD -AM_INIT_AUTOMAKE(foreign) +AM_INIT_AUTOMAKE(foreign subdir-objects) AM_MAINTAINER_MODE AC_CONFIG_HEADERS([include/config.h:include/config.h.in]) @@ -16,6 +17,13 @@ AM_PROG_AS LT_PREREQ([2.2.6]) LT_INIT([disable-static]) +AX_APPEND_LINK_FLAGS([-fno-pie]) +AX_COMPILER_VENDOR +if test "$ax_cv_c_compiler_vendor" = "gnu"; then + AX_CHECK_LINK_FLAG([-no-pie],[AX_APPEND_LINK_FLAGS([-no-pie])],) + AX_CHECK_LINK_FLAG([-nopie],[AX_APPEND_LINK_FLAGS([-nopie])],) +fi + AM_GLIB_GNU_GETTEXT IT_PROG_INTLTOOL([0.35.0]) @@ -33,13 +41,16 @@ PKG_CHECK_MODULES([SDL2], [sdl2 >= 2.0.0], ], AC_MSG_ERROR([*** SDL >= 1.2.12 not found!])) ]) +AC_PATH_PROG(GLIB_COMPILE_RESOURCES, glib-compile-resources) +AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) + AC_SUBST(GLIB2_CFLAGS) AC_SUBST(GLIB2_LIBS) AC_SUBST(GTK3_CFLAGS) AC_SUBST(GTK3_LIBS) AC_CONFIG_FILES([Makefile -data/Makefile +gui/data/Makefile doc/Makefile libpcsxcore/Makefile gui/Makefile @@ -49,8 +60,9 @@ plugins/dfsound/Makefile plugins/dfxvideo/Makefile plugins/dfcdrom/Makefile plugins/dfnet/Makefile +plugins/nullsio1/Makefile plugins/peopsxgl/Makefile -pixmaps/Makefile +gui/data/pixmaps/Makefile po/Makefile.in]) AC_CHECK_LIB(dl, dlsym, [LIBS="$LIBS -ldl"], []) @@ -176,6 +188,7 @@ if test "$BUILD_CCDDA" = "yes"; then AC_CHECK_LIB([avcodec], [main], [LIBS="$LIBS -lavcodec"], AC_MSG_ERROR("No avcodec library")) AC_CHECK_LIB([avutil], [main], [LIBS="$LIBS -lavutil"], AC_MSG_ERROR("No avutil library")) AC_CHECK_LIB([avformat], [main], [LIBS="$LIBS -lavformat"], AC_MSG_ERROR("No avformat library")) + AC_CHECK_LIB([swresample], [main], [LIBS="$LIBS -lswresample"], AC_MSG_ERROR("No swresample library")) #AC_CHECK_LIB(avcodec ,[main],AC_DEFINE([HAVE_LIBAVCODEC], [1], [ ]),AC_MSG_ERROR([$errormsgl])) #AC_CHECK_LIB(swscale ,[main],AC_DEFINE([HAVE_LIBSWSCALE], [1], [ ]),AC_MSG_ERROR([$errormsgl]), [-lavutil]) #AC_CHECK_LIB(avdevice ,[main],AC_DEFINE([HAVE_LIBAVDEVICE], [1], [ ]),AC_MSG_ERROR([$errormsgl]), [-lavcodec -lavutil -lavformat]) diff --git a/data/Makefile.am b/data/Makefile.am deleted file mode 100644 index 8f1ce6a2..00000000 --- a/data/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -glade_DATA = pcsxr.ui -gladedir = $(datadir)/pcsxr - -desktopdir = $(datadir)/applications -desktop_DATA = pcsxr.desktop - -EXTRA_DIST = $(glade_DATA) pcsxr.desktop diff --git a/gui/AboutDlg.c b/gui/AboutDlg.c index f701c1c9..4f5d02ae 100755 --- a/gui/AboutDlg.c +++ b/gui/AboutDlg.c @@ -19,11 +19,12 @@ #include "Linux.h" #include <gtk/gtk.h> -#define ABOUT_VERSION "svn" +#define ABOUT_VERSION "git" void RunAboutDialog(void) { GtkBuilder *builder; GtkWidget *AboutDlg; + GdkPixbuf *logo; const gchar *authors[] = { "PCSX-Reloaded Team:", @@ -87,9 +88,11 @@ void RunAboutDialog(void) { "You should have received a copy of the GNU General Public License " "along with this program. If not, see <http://www.gnu.org/licenses/>."); + logo = gdk_pixbuf_new_from_resource("/org/pcsxr/gui/pixmaps/pcsxr-icon.png", NULL); + builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -109,6 +112,9 @@ void RunAboutDialog(void) { gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG (AboutDlg), _("A PlayStation emulator.")); gtk_about_dialog_set_license(GTK_ABOUT_DIALOG(AboutDlg), _(license)); gtk_about_dialog_set_wrap_license(GTK_ABOUT_DIALOG(AboutDlg), TRUE); + gtk_about_dialog_set_logo(GTK_ABOUT_DIALOG(AboutDlg), logo); + + g_object_unref(G_OBJECT(logo)); gtk_dialog_run(GTK_DIALOG(AboutDlg)); gtk_widget_destroy(AboutDlg); diff --git a/gui/Cheat.c b/gui/Cheat.c index 497970ae..3ecb6468 100755 --- a/gui/Cheat.c +++ b/gui/Cheat.c @@ -49,7 +49,6 @@ static void LoadCheatListItems(int index) { gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); gtk_tree_view_set_search_column(GTK_TREE_VIEW(widget), 1); gtk_widget_show(widget); @@ -99,8 +98,8 @@ static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) { GtkWidget *box, *scroll, *label, *descr_edit, *code_edit; dlg = gtk_dialog_new_with_buttons(_("Add New Cheat"), GTK_WINDOW(CheatListDlg), - GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + GTK_DIALOG_MODAL, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_default_size(GTK_WINDOW(dlg), 350, 350); @@ -125,7 +124,7 @@ static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) { gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), code_edit); + gtk_container_add(GTK_CONTAINER(scroll), code_edit); gtk_widget_show(code_edit); gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 5); @@ -183,8 +182,8 @@ static void OnCheatListDlg_EditClicked(GtkWidget *widget, gpointer user_data) { gtk_tree_path_free(path); dlg = gtk_dialog_new_with_buttons(_("Edit Cheat"), GTK_WINDOW(CheatListDlg), - GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + GTK_DIALOG_MODAL, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_ACCEPT, NULL); gtk_window_set_default_size(GTK_WINDOW(dlg), 350, 350); @@ -220,7 +219,7 @@ static void OnCheatListDlg_EditClicked(GtkWidget *widget, gpointer user_data) { gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll), code_edit); + gtk_container_add(GTK_CONTAINER(scroll), code_edit); gtk_widget_show(code_edit); gtk_box_pack_start(GTK_BOX(box), scroll, TRUE, TRUE, 5); @@ -311,8 +310,8 @@ static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) { GtkFileFilter *filter; chooser = gtk_file_chooser_dialog_new (_("Open Cheat File"), - NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + NULL, GTK_FILE_CHOOSER_ACTION_OPEN, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_OK, NULL); filename = g_build_filename(getenv("HOME"), CHEATS_DIR, NULL); gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser), filename); @@ -355,8 +354,8 @@ static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) { GtkFileFilter *filter; chooser = gtk_file_chooser_dialog_new(_("Save Cheat File"), - NULL, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + NULL, GTK_FILE_CHOOSER_ACTION_SAVE, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_OK, NULL); filename = g_build_filename(getenv("HOME"), CHEATS_DIR, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), filename); @@ -424,7 +423,7 @@ void RunCheatListDialog() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -621,7 +620,6 @@ static void UpdateCheatSearchDialog() { gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); gtk_widget_show(widget); } @@ -659,8 +657,8 @@ static void OnCheatSearchDlg_FreezeClicked(GtkWidget *widget, gpointer user_data addr = SearchResults[GetSelectedResultIndex()]; dlg = gtk_dialog_new_with_buttons(_("Freeze value"), GTK_WINDOW(CheatListDlg), - GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); + GTK_DIALOG_MODAL, "_OK", GTK_RESPONSE_ACCEPT, + "_Cancel", GTK_RESPONSE_CANCEL, NULL); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); @@ -672,7 +670,7 @@ static void OnCheatSearchDlg_FreezeClicked(GtkWidget *widget, gpointer user_data gtk_box_pack_start(GTK_BOX(box), descr_edit, FALSE, FALSE, 10); gtk_widget_show(descr_edit); - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 15); label = gtk_label_new(_("Value:")); @@ -758,11 +756,11 @@ static void OnCheatSearchDlg_ModifyClicked(GtkWidget *widget, gpointer user_data addr = SearchResults[GetSelectedResultIndex()]; dlg = gtk_dialog_new_with_buttons(_("Modify value"), GTK_WINDOW(CheatListDlg), - GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); + GTK_DIALOG_MODAL, "_OK", GTK_RESPONSE_ACCEPT, + "_Cancel", GTK_RESPONSE_CANCEL, NULL); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); - hbox = gtk_hbox_new(FALSE, 0); + hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0); gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); label = gtk_label_new(_("New value:")); @@ -1136,7 +1134,7 @@ void RunCheatSearchDialog() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c index d71326c7..d55234f8 100755 --- a/gui/ConfDlg.c +++ b/gui/ConfDlg.c @@ -101,7 +101,7 @@ void ConfigurePlugins() { UpdatePluginsBIOS(); builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -213,7 +213,7 @@ void OnConf_Net() { } builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -845,6 +845,7 @@ static void FindNetPlugin() { } GtkWidget *CpuDlg; +GtkWidget *PgxpDlg; GList *psxglist; char *psxtypes[] = { "NTSC", @@ -876,6 +877,14 @@ static void OnCpu_CpuClicked(GtkWidget *widget, gpointer user_data) { gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))); } +// When overclock checkbutton is changed, enable/disable the selection spinbutton +static void OnCpu_OverClockClicked(GtkWidget *widget, gpointer user_data){ + GtkWidget *spin; + + spin = GTK_WIDGET(gtk_builder_get_object(builder, "GtkSpinButton_PsxClock")); + gtk_widget_set_sensitive(spin, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))); +} + void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { GtkWidget *widget; long unsigned int tmp; @@ -935,6 +944,7 @@ void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { SysClose(); exit(1); } + psxCpu->SetPGXPMode(Config.PGXP_Mode); psxCpu->Reset(); } @@ -946,7 +956,14 @@ void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { Config.Widescreen = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Widescreen"))); Config.HackFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_HackFix"))); - SaveConfig(); + Config.OverClock = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_OverClock"))); + Config.PsxClock = gtk_spin_button_get_value( + GTK_SPIN_BUTTON(gtk_builder_get_object(builder, "GtkSpinButton_PsxClock"))); + Config.MemHack = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_MemHack"))); + + SaveConfig(); gtk_widget_destroy(CpuDlg); CpuDlg = NULL; @@ -958,7 +975,7 @@ void OnConf_Cpu() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -1028,7 +1045,103 @@ void OnConf_Cpu() { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_Widescreen")), Config.Widescreen); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_HackFix")), Config.HackFix); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "GtkCheckButton_OverClock")), Config.OverClock); + gtk_spin_button_set_value(GTK_SPIN_BUTTON( + gtk_builder_get_object(builder, "GtkSpinButton_PsxClock")), Config.PsxClock); + OnCpu_OverClockClicked(GTK_WIDGET( + gtk_builder_get_object(builder, "GtkCheckButton_OverClock")), NULL); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "GtkCheckButton_MemHack")), Config.MemHack); + + g_signal_connect_data(G_OBJECT(gtk_builder_get_object(builder, "GtkCheckButton_OverClock")), "toggled", + G_CALLBACK(OnCpu_OverClockClicked), builder, NULL, G_CONNECT_AFTER); + // Setup a handler for when Close or Cancel is clicked g_signal_connect_data(G_OBJECT(CpuDlg), "response", - G_CALLBACK(OnCpu_Clicked), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); + G_CALLBACK(OnCpu_Clicked), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); +} + +//When a different PGXP mode is selected, display some informational text +static void OnPgxp_ModeChanged(GtkWidget *widget, gpointer user_data) { + uint8_t mode; + + mode = gtk_combo_box_get_active(GTK_COMBO_BOX( + gtk_builder_get_object(builder, "PGXP_Mode"))); + + switch (mode) { + case 0: + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")), + _("Disabled")); + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")), + _("PGXP is not mirroring any functions currently.")); + break; + case 1: + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")), + _("Memory operations only")); + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")), + _("PGXP is mirroring load, store and processor transfer operations of the CPU and GTE.")); + break; + case 2: + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")), + _("Memory and CPU arithmetic operations")); + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")), + _("PGXP is mirroring load, store and transfer operations of the CPU and GTE and arithmetic/logic functions of the PSX CPU.\n(WARNING: This mode is currently unfinished and may cause incorrect behaviour in some games).")); + break; + default: + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_title")), + _("Error")); + gtk_label_set_text(GTK_LABEL(gtk_builder_get_object(builder, "PGXP_Mode_description")), + _("Unknown mode.")); + } +} + +static void OnPgxp_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) { + + Config.PGXP_GTE = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_GTE"))); + Config.PGXP_Cache = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_Cache"))); + Config.PGXP_Texture = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_Texture"))); + + Config.PGXP_Mode = gtk_combo_box_get_active(GTK_COMBO_BOX( + gtk_builder_get_object(builder, "PGXP_Mode"))); + + EmuSetPGXPMode(Config.PGXP_Mode); + SaveConfig(); + + gtk_widget_destroy(PgxpDlg); + PgxpDlg = NULL; +} + +void OnConf_Pgxp() { + GtkWidget *widget; + char buf[25]; + + builder = gtk_builder_new(); + + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { + g_warning("Error: interface could not be loaded!"); + return; + } + + PgxpDlg = GTK_WIDGET(gtk_builder_get_object(builder, "PgxpDlg")); + gtk_widget_show (PgxpDlg); + + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_GTE")), Config.PGXP_GTE); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_Cache")), Config.PGXP_Cache); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "PGXP_Texture")), Config.PGXP_Texture); + + gtk_combo_box_set_active(GTK_COMBO_BOX( + gtk_builder_get_object(builder, "PGXP_Mode")), Config.PGXP_Mode); + OnPgxp_ModeChanged(NULL, NULL); + + g_signal_connect_data(G_OBJECT(gtk_builder_get_object(builder, "PGXP_Mode")), "changed", + G_CALLBACK(OnPgxp_ModeChanged), builder, NULL, G_CONNECT_AFTER); + g_signal_connect_data(G_OBJECT(PgxpDlg), "response", + G_CALLBACK(OnPgxp_Clicked), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER); } diff --git a/gui/ConfDlg.h b/gui/ConfDlg.h index ef1c0203..b8b9d4e6 100755 --- a/gui/ConfDlg.h +++ b/gui/ConfDlg.h @@ -28,6 +28,7 @@ void OnConf_Sound(); void OnConf_CdRom(); void OnConf_Pad(); void OnConf_Cpu(); +void OnConf_Pgxp(); void OnConf_Net(); void OnConf_Sio1(); diff --git a/gui/Config.c b/gui/Config.c index 25e2e54b..16c29c9a 100755..100644 --- a/gui/Config.c +++ b/gui/Config.c @@ -62,6 +62,16 @@ static boolean GetValueb(char *src, char *name) { return FALSE; } +static long GetValuef(char *src, char *name) { + char *tmp = strstr(src, name); + if (tmp != NULL) { + tmp += strlen(name); + while ((*tmp == ' ') || (*tmp == '=')) tmp++; + if (*tmp != '\n') return atof(tmp); + } + return 0.0f; +} + #define SetValue(name, var) \ fprintf(f, "%s = %s\n", name, var); @@ -71,6 +81,9 @@ static boolean GetValueb(char *src, char *name) { #define SetValueb(name, var) \ fprintf(f, "%s = %d\n", name, (var) ? 1 : 0); +#define SetValuef(name, var) \ + fprintf(f, "%s = %f\n", name, var); + int LoadConfig(PcsxConfig *Conf) { struct stat buf; FILE *f; @@ -142,10 +155,20 @@ int LoadConfig(PcsxConfig *Conf) { Config.VSyncWA = GetValueb(data, "VSyncWA"); Config.NoMemcard = GetValueb(data, "NoMemcard"); Config.Widescreen = GetValueb(data, "Widescreen"); + Config.PerGameMcd = GetValueb(data, "PerGameMcd"); + Config.MemHack = GetValuel(data, "MemHack"); + Config.OverClock = GetValueb(data, "OverClock"); Config.Cpu = GetValuel(data, "Cpu"); Config.PsxType = GetValuel(data, "PsxType"); - Config.RewindCount = GetValuel(data, "RewindCount"); + Config.PsxClock = GetValuef(data, "PsxClock"); + + Config.PGXP_GTE = GetValueb(data, "PGXP_GTE"); + Config.PGXP_Cache = GetValueb(data, "PGXP_Cache"); + Config.PGXP_Texture = GetValueb(data, "PGXP_Texture"); + Config.PGXP_Mode = GetValuel(data, "PGXP_Mode"); + + Config.RewindCount = GetValuel(data, "RewindCount"); Config.RewindInterval = GetValuel(data, "RewindInterval"); Config.AltSpeed1 = GetValuel(data, "AltSpeed1"); @@ -191,7 +214,7 @@ void SaveConfig() { SetValueb("SioIrq", Config.SioIrq); SetValueb("Mdec", Config.Mdec); SetValueb("PsxAuto", Config.PsxAuto); - SetValuel("Cdda", Config.Cdda); + SetValuel("Cdda", (long)Config.Cdda); SetValueb("SlowBoot",Config.SlowBoot); SetValueb("Dbg", Config.Debug); SetValueb("PsxOut", Config.PsxOut); @@ -200,16 +223,26 @@ void SaveConfig() { SetValueb("VSyncWA", Config.VSyncWA); SetValueb("NoMemcard", Config.NoMemcard); SetValueb("Widescreen", Config.Widescreen); + SetValueb("PerGameMcd", Config.PerGameMcd); + SetValuel("MemHack", (long)Config.MemHack); + SetValueb("OverClock", Config.OverClock); + + SetValuel("Cpu", (long)Config.Cpu); + SetValuel("PsxType", (long)Config.PsxType); + SetValuef("PsxClock", Config.PsxClock); + + SetValueb("PGXP_GTE", Config.PGXP_GTE); + SetValueb("PGXP_Cache", Config.PGXP_Cache); + SetValueb("PGXP_Texture", Config.PGXP_Texture); + SetValuel("PGXP_Mode", (long)Config.PGXP_Mode); - SetValuel("Cpu", Config.Cpu); - SetValuel("PsxType", Config.PsxType); - SetValuel("RewindCount", Config.RewindCount); - SetValuel("RewindInterval", Config.RewindInterval); + SetValuel("RewindCount", (long)Config.RewindCount); + SetValuel("RewindInterval", (long)Config.RewindInterval); - SetValuel("AltSpeed1", Config.AltSpeed1); - SetValuel("AltSpeed2", Config.AltSpeed2); + SetValuel("AltSpeed1", (long)Config.AltSpeed1); + SetValuel("AltSpeed2", (long)Config.AltSpeed2); - SetValuel("HackFix", Config.HackFix); + SetValuel("HackFix", (long)Config.HackFix); fclose(f); } diff --git a/gui/DebugMemory.c b/gui/DebugMemory.c index 3c7939ab..096b6c5c 100755 --- a/gui/DebugMemory.c +++ b/gui/DebugMemory.c @@ -86,7 +86,6 @@ static void UpdateMemViewDlg() { gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); gtk_widget_show(widget); } @@ -150,30 +149,32 @@ static void MemView_Dump() { char buf[10]; dlg = gtk_dialog_new_with_buttons(_("Memory Dump"), GTK_WINDOW(MemViewDlg), - GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + GTK_DIALOG_MODAL, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_ACCEPT, NULL); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); - table = gtk_table_new(2, 2, FALSE); + table = gtk_grid_new(); + gtk_grid_set_row_spacing(GTK_GRID(table), 5); + gtk_grid_set_column_spacing(GTK_GRID(table), 5); label = gtk_label_new(_("Start Address (Hexadecimal):")); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); gtk_widget_show(label); start_edit = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(start_edit), 8); sprintf(buf, "%.8X", MemViewAddress | 0x80000000); gtk_entry_set_text(GTK_ENTRY(start_edit), buf); - gtk_table_attach(GTK_TABLE(table), start_edit, 1, 2, 0, 1, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), start_edit, 1, 0, 1, 1); gtk_widget_show(start_edit); label = gtk_label_new(_("Length (Decimal):")); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); gtk_widget_show(label); length_edit = gtk_entry_new(); - gtk_table_attach(GTK_TABLE(table), length_edit, 1, 2, 1, 2, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), length_edit, 1, 1, 1, 1); gtk_widget_show(length_edit); gtk_box_pack_start(GTK_BOX(box), table, FALSE, FALSE, 5); @@ -196,8 +197,8 @@ static void MemView_Dump() { if (length > 0) { GtkWidget *file_chooser = gtk_file_chooser_dialog_new(_("Dump to File"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); + "_Cancel", GTK_RESPONSE_CANCEL, + "_Save", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser), getenv("HOME")); @@ -228,32 +229,34 @@ static void MemView_Patch() { char buf[12]; dlg = gtk_dialog_new_with_buttons(_("Memory Patch"), GTK_WINDOW(MemViewDlg), - GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); + GTK_DIALOG_MODAL, "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_ACCEPT, NULL); box = GTK_WIDGET(gtk_dialog_get_content_area(GTK_DIALOG(dlg))); - table = gtk_table_new(2, 2, FALSE); + table = gtk_grid_new(); + gtk_grid_set_row_spacing(GTK_GRID(table), 5); + gtk_grid_set_column_spacing(GTK_GRID(table), 5); label = gtk_label_new(_("Address (Hexadecimal):")); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), label, 0, 0, 1, 1); gtk_widget_show(label); addr_edit = gtk_entry_new(); gtk_entry_set_max_length(GTK_ENTRY(addr_edit), 8); sprintf(buf, "%.8X", MemViewAddress | 0x80000000); gtk_entry_set_text(GTK_ENTRY(addr_edit), buf); - gtk_table_attach(GTK_TABLE(table), addr_edit, 1, 2, 0, 1, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), addr_edit, 1, 0, 1, 1); gtk_widget_show(addr_edit); label = gtk_label_new(_("Value (Hexa string):")); - gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), label, 0, 1, 1, 1); gtk_widget_show(label); val_edit = gtk_entry_new(); sprintf(buf, "%.2X", MemViewValue); gtk_entry_set_text(GTK_ENTRY(val_edit), buf); - gtk_table_attach(GTK_TABLE(table), val_edit, 1, 2, 1, 2, 0, 0, 5, 5); + gtk_grid_attach(GTK_GRID(table), val_edit, 1, 1, 1, 1); gtk_widget_show(val_edit); gtk_box_pack_start(GTK_BOX(box), table, FALSE, FALSE, 5); @@ -303,12 +306,11 @@ void RunDebugMemoryDialog() { GtkWidget *widget; GtkCellRenderer *renderer; GtkTreeViewColumn *column; - PangoFontDescription *pfd; int i; builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -343,12 +345,6 @@ void RunDebugMemoryDialog() { renderer, "text", 17, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(widget), column); - pfd = pango_font_description_from_string("Bitstream Vera Sans Mono, " - "DejaVu Sans Mono, Liberation Mono, FreeMono, Sans Mono 9"); - - gtk_widget_override_font(widget, pfd); - - pango_font_description_free(pfd); UpdateMemViewDlg(); diff --git a/gui/GtkGui.c b/gui/GtkGui.c index 3185e51a..0fd6b65d 100755 --- a/gui/GtkGui.c +++ b/gui/GtkGui.c @@ -28,11 +28,13 @@ #include <signal.h> #include <sys/time.h> #include <regex.h> +#include <libintl.h> #include "Linux.h" #include "../libpcsxcore/plugins.h" #include "../libpcsxcore/cheat.h" +#include "../libpcsxcore/cdrom.h" #include "MemcardDlg.h" #include "ConfDlg.h" @@ -320,9 +322,13 @@ void StartGui() { gtk_window_present (GTK_WINDOW (Window)); return; }*/ + GtkIconTheme *itheme = gtk_icon_theme_get_default(); + gtk_icon_theme_add_resource_path(itheme,"/org/pcsxr/gui"); + gtk_icon_theme_add_resource_path(itheme,"/org/pcsxr/gui/pixmaps/"); + builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -331,8 +337,8 @@ void StartGui() { gtk_widget_show(GTK_WIDGET(Window)); gtk_window_set_title(GTK_WINDOW(Window), "PCSXR"); - gtk_window_set_icon_from_file(GTK_WINDOW(Window), PIXMAPDIR "pcsxr-icon.png", NULL); - gtk_window_set_default_icon_from_file(PIXMAPDIR "pcsxr-icon.png", NULL); + gtk_window_set_icon(GTK_WINDOW(Window), gdk_pixbuf_new_from_resource("/org/pcsxr/gui/pixmaps/pcsxr-icon.png", NULL)); + gtk_window_set_default_icon(gdk_pixbuf_new_from_resource("/org/pcsxr/gui/pixmaps/pcsxr-icon.png", NULL)); ResetMenuSlots(); // Set up callbacks @@ -463,7 +469,10 @@ void StartGui() { #endif widget = GTK_WIDGET(gtk_builder_get_object(builder, "cpu1")); g_signal_connect_data(G_OBJECT(widget), "activate", - G_CALLBACK(OnConf_Cpu), NULL, NULL, G_CONNECT_AFTER); + G_CALLBACK(OnConf_Cpu), NULL, NULL, G_CONNECT_AFTER); + widget = GTK_WIDGET(gtk_builder_get_object(builder, "pgxp1")); + g_signal_connect_data(G_OBJECT(widget), "activate", + G_CALLBACK(OnConf_Pgxp), NULL, NULL, G_CONNECT_AFTER); widget = GTK_WIDGET(gtk_builder_get_object(builder, "memory_cards1")); g_signal_connect_data(G_OBJECT(widget), "activate", G_CALLBACK(OnConf_Mcds), NULL, NULL, G_CONNECT_AFTER); @@ -571,8 +580,8 @@ void OnFile_RunExe() { } else { file_chooser = gtk_file_chooser_dialog_new(_("Select PSX EXE File"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + "_Cancel", GTK_RESPONSE_CANCEL, + "_Open", GTK_RESPONSE_ACCEPT, NULL); // Add file filters GtkFileFilter *exefilter = gtk_file_filter_new (); @@ -708,8 +717,8 @@ static gchar *Open_Iso_Proc() { static char current_folder[MAXPATHLEN] = ""; chooser = gtk_file_chooser_dialog_new (_("Open PSX Disc Image File"), - NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_OK, + NULL, GTK_FILE_CHOOSER_ACTION_OPEN, "_Cancel", GTK_RESPONSE_CANCEL, + "_Open", GTK_RESPONSE_ACCEPT, NULL); if (stat(Config.IsoImgDir, &sb) == 0 && S_ISDIR(sb.st_mode)) { @@ -746,7 +755,7 @@ static gchar *Open_Iso_Proc() { gtk_file_filter_set_name(allfilter, _("All Files")); gtk_file_chooser_add_filter(GTK_FILE_CHOOSER (chooser), allfilter); - if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) { + if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_ACCEPT) { gchar *path = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(chooser)); /* Workaround: @@ -767,11 +776,9 @@ static gchar *Open_Iso_Proc() { strncpy(current_folder, filename, strrchr(filename, '/') - filename); } - /* If ISO path is NULL save current path. */ - if (!S_ISDIR(sb.st_mode)) { + /* Save current path. */ strcpy(Config.IsoImgDir, current_folder); SaveConfig(); - } /* free useless data */ GSList * ll = l; @@ -1083,8 +1090,8 @@ void on_states_load_other() { SStateFile = g_strconcat(getenv("HOME"), STATES_DIR, NULL); file_chooser = gtk_file_chooser_dialog_new(_("Select State File"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Open", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (file_chooser), SStateFile); g_free(SStateFile); @@ -1112,8 +1119,8 @@ void on_states_save_other() { file_chooser = gtk_file_chooser_dialog_new(_("Select State File"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_OK, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Save", GTK_RESPONSE_OK, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser), SStateFile); g_free(SStateFile); @@ -1154,7 +1161,7 @@ void SysMessage(const char *fmt, ...) { } MsgDlg = gtk_dialog_new_with_buttons(_("Notice"), NULL, - GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_NONE, NULL); + GTK_DIALOG_DESTROY_WITH_PARENT, "_OK", GTK_RESPONSE_NONE, NULL); gtk_window_set_position (GTK_WINDOW(MsgDlg), GTK_WIN_POS_CENTER); diff --git a/gui/LnxMain.c b/gui/LnxMain.c index 716a3964..a7f934ae 100755 --- a/gui/LnxMain.c +++ b/gui/LnxMain.c @@ -232,9 +232,7 @@ static void ScanAllPlugins (void) { ScanBios("/usr/local/share/psemu/bios"); ScanBios("/usr/local/share/pcsxr"); ScanBios("/usr/local/share/pcsxr/bios"); - ScanBios(PACKAGE_DATA_DIR); ScanBios(PSEMU_DATA_DIR); - ScanBios(PACKAGE_DATA_DIR "/bios"); ScanBios(PSEMU_DATA_DIR "/bios"); currentdir = g_strconcat(getenv("HOME"), "/.psemu-plugins/", NULL); diff --git a/gui/Makefile.am b/gui/Makefile.am index 5feb39ea..7db62f01 100644 --- a/gui/Makefile.am +++ b/gui/Makefile.am @@ -24,8 +24,58 @@ pcsxr_SOURCES = \ DebugMemory.c \ DebugMemory.h \ AboutDlg.c \ - AboutDlg.h + AboutDlg.h \ + GtkResources.c \ + GtkResources.h + +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/gui"> + <file>pcsxr.ui</file> + <file>pixmaps/pcsxr-about.png</file> + <file>pixmaps/pcsxr-cd-open.png</file> + <file>pixmaps/pcsxr-cheats-browse.png</file> + <file>pixmaps/pcsxr-cheats-search.png</file> + <file>pixmaps/pcsxr-cheats.png</file> + <file>pixmaps/pcsxr-cpu.png</file> + <file>pixmaps/pcsxr-exit.png</file> + <file>pixmaps/pcsxr-icon.png</file> + <file>pixmaps/pcsxr-iso-open.png</file> + <file>pixmaps/pcsxr-iso-reopen.png</file> + <file>pixmaps/pcsxr-load-state.png</file> + <file>pixmaps/pcsxr-memcard.png</file> + <file>pixmaps/pcsxr-memory-dump.png</file> + <file>pixmaps/pcsxr-play.png</file> + <file>pixmaps/pcsxr-plugin-cdr.png</file> + <file>pixmaps/pcsxr-plugin-gpu.png</file> + <file>pixmaps/pcsxr-plugin-netplay.png</file> + <file>pixmaps/pcsxr-plugin-pad.png</file> + <file>pixmaps/pcsxr-plugin-sio1.png</file> + <file>pixmaps/pcsxr-plugin-spu.png</file> + <file>pixmaps/pcsxr-reset.png</file> + <file>pixmaps/pcsxr-run-bios.png</file> + <file>pixmaps/pcsxr-run-exe.png</file> + <file>pixmaps/pcsxr-save-state.png</file> + <file>pixmaps/pcsxr-settings.png</file> + <file>pixmaps/pcsxr-shutdown.png</file> + <file>pixmaps/pcsxr.png</file> + </gresource> +</gresources> +endef + +pcsxr.gresource.xml: + $(file >$@,$(gresource_xml)) +pcsxr_gresource: pcsxr.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/data --generate-dependencies $(srcdir)/$<) +GtkResources.c: pcsxr.gresource.xml $(pcsxr_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/data --generate-source --c-name pcsxr $< +GtkResources.h: pcsxr.gresource.xml $(pcsxr_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/data --generate-header --c-name pcsxr $< pcsxr_LDADD = \ ../libpcsxcore/libpcsxcore.a \ $(GTK3_LIBS) -lpthread -lz -lm -lXext -lXtst + +CLEANFILES = pcsxr.gresource.xml GtkResources.c GtkResources.h diff --git a/gui/MemcardDlg.c b/gui/MemcardDlg.c index b777126e..d3949565 100755 --- a/gui/MemcardDlg.c +++ b/gui/MemcardDlg.c @@ -236,7 +236,6 @@ static void LoadListItems(int mcd, boolean newstore) { if (newstore) { gtk_tree_view_set_model(GTK_TREE_VIEW(List), GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(List), TRUE); } else { OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), GINT_TO_POINTER(mcd)); } @@ -295,6 +294,9 @@ static void UpdateMcdDlg(GtkWidget *widget) { } static void OnMcd_Close(GtkDialog *dialog, gint arg1, gpointer user_data) { + + Config.PerGameMcd = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder, "GtkCheckButton_PerGameMcd"))); quit = TRUE; SaveConfig(); gtk_widget_destroy(GTK_WIDGET(dialog)); @@ -308,8 +310,8 @@ static void OnMcd_FileChange(GtkWidget *widget, gpointer user_data) { // Ask for name of memory card chooser = gtk_file_chooser_dialog_new(_("Select A File"), NULL, GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, GTK_RESPONSE_OK, + "_Cancel", GTK_RESPONSE_CANCEL, + "_OK", GTK_RESPONSE_OK, NULL); if (memcard == 1) @@ -350,7 +352,7 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) { gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(message_dialog), _("If you format the memory card, the card will be empty, and any existing data overwritten.")); gtk_dialog_add_buttons(GTK_DIALOG(message_dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, + "_Cancel", GTK_RESPONSE_CANCEL, _("Format card"), GTK_RESPONSE_YES, NULL); result = gtk_dialog_run(GTK_DIALOG(message_dialog)); @@ -375,8 +377,8 @@ static void OnMcd_New(GtkWidget *widget, gpointer user_data) { // Ask for name of new memory card chooser = gtk_file_chooser_dialog_new(_("Create a new Memory Card"), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_SAVE, GTK_RESPONSE_OK, + "_Cancel", GTK_RESPONSE_CANCEL, + "_Save", GTK_RESPONSE_OK, NULL); // Card should be put into $HOME/.pcsxr/memcards @@ -441,7 +443,7 @@ static int GetFreeMemcardSlot(gint target_card, gint count, u8* blocks) { return -1; } -void CopyMemcardData(char *from, char *to, gint srci, gint dsti, +void CopyMemcardData(gint dstmcd, char *from, char *to, gint srci, gint dsti, gchar *str, const u16 linkindex) { u16* linkptr; u8* checksumptr; @@ -463,11 +465,11 @@ void CopyMemcardData(char *from, char *to, gint srci, gint dsti, //printf("link = %i %i\n", dsti, linkindex); } - SaveMcd((char *)str, to, dsti * 128, 128); + SaveMcd(dstmcd, (char *)str, to, dsti * 128, 128); // data memcpy(to + dsti * 1024 * 8, from + srci * 1024 * 8, 1024 * 8); - SaveMcd((char *)str, to, dsti * 1024 * 8, 1024 * 8); + SaveMcd(dstmcd, (char *)str, to, dsti * 1024 * 8, 1024 * 8); //printf("data = %s\n", from + (srci+1) * 128); } @@ -548,7 +550,7 @@ static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) { for (j=0; srctbl[j] > 0; j++) { // last parameter specifies link index (next block) - CopyMemcardData(source, destination, + CopyMemcardData(dstmcd, source, destination, srctbl[j], dsttbl[j], str, dsttbl[j+1]-1); //printf("count = %i, indices=(%x,%x) jindex=%i\n", count, srctbl[j], dsttbl[j], j); } @@ -620,7 +622,7 @@ static void OnMemcardDelete(GtkWidget *widget, gpointer user_data) { } *ptr = xorsum; - SaveMcd((char *)filename, data, i * 128, 128); + SaveMcd(memcard, (char *)filename, data, i * 128, 128); // Check links i = GETLINKFORBLOCK(data, i); //0...15 index when ++i at top of loop @@ -709,7 +711,7 @@ void OnConf_Mcds() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, PACKAGE_DATA_DIR "pcsxr.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/gui/pcsxr.ui", NULL)) { g_warning("Error: interface could not be loaded!"); return; } @@ -749,6 +751,12 @@ void OnConf_Mcds() { G_CALLBACK(OnTreeSelectionChanged), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON( + gtk_builder_get_object(builder, "GtkCheckButton_PerGameMcd")), Config.PerGameMcd); + // Disable it because it is not working yet + gtk_widget_set_sensitive(GTK_WIDGET( + gtk_builder_get_object(builder, "GtkCheckButton_PerGameMcd")), FALSE); + LoadMcdDlg(dialog); // Setup a handler for when Close or Cancel is clicked diff --git a/gui/Plugin.c b/gui/Plugin.c index 0adf3b5e..55068c31 100755 --- a/gui/Plugin.c +++ b/gui/Plugin.c @@ -30,6 +30,7 @@ #include "../libpcsxcore/plugins.h" #include "../libpcsxcore/spu.h" #include "../libpcsxcore/cdriso.h" +#include "../libpcsxcore/pgxp_mem.h" #include "nopic.h" @@ -241,6 +242,9 @@ void PADhandleKey(int key) { LidInterrupt(); break; + case XK_F11: + GPU_toggleDebug(); + break; case XK_F12: psxReset(); break; @@ -329,6 +333,7 @@ int _OpenPlugins() { SPU_registerCallback(SPUirq); ret = GPU_open(&gpuDisp, "PCSXR", NULL); if (ret < 0) { SysMessage(_("Error opening GPU plugin!")); return -1; } + GPU_pgxpMemory(0, PGXP_GetMem()); ret = PAD1_open(&gpuDisp); ret |= PAD1_init(1); // Allow setting to change during run if (ret < 0) { SysMessage(_("Error opening Controller 1 plugin!")); return -1; } diff --git a/gui/data/Makefile.am b/gui/data/Makefile.am new file mode 100644 index 00000000..07966973 --- /dev/null +++ b/gui/data/Makefile.am @@ -0,0 +1,7 @@ +#glade_DATA = pcsxr.ui +#gladedir = $(datadir)/pcsxr + +desktopdir = $(datadir)/applications +desktop_DATA = pcsxr.desktop + +EXTRA_DIST = $(glade_DATA) $(desktop_DATA) diff --git a/data/pcsxr.desktop b/gui/data/pcsxr.desktop index c284f003..c284f003 100644 --- a/data/pcsxr.desktop +++ b/gui/data/pcsxr.desktop diff --git a/data/pcsxr.ui b/gui/data/pcsxr.ui index 23b7d449..6f6a9b12 100644 --- a/data/pcsxr.ui +++ b/gui/data/pcsxr.ui @@ -1,21 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.18.3 --> +<!-- Generated with glade 3.20.0 --> <interface> - <requires lib="gtk+" version="3.0"/> - <object class="GtkIconFactory" id="iconfactory1"> - <sources> - <source stock-id="generated-icon-iso-open-png" filename="iso-open.png"/> - <source stock-id="generated-icon-pad-png" filename="pad.png"/> - <source stock-id="generated-icon-cdr-png" filename="cdr.png"/> - <source stock-id="generated-icon-gpu-png" filename="gpu.png"/> - <source stock-id="generated-icon-sio1-png" filename="sio1.png"/> - <source stock-id="generated-icon-memcard-png" filename="memcard.png"/> - <source stock-id="generated-icon-iso-reopen-png" filename="iso-reopen.png"/> - <source stock-id="generated-icon-spu-png" filename="spu.png"/> - <source stock-id="generated-icon-play-png" filename="play.png"/> - <source stock-id="generated-icon-cd-png" filename="cd.png"/> - </sources> - </object> + <requires lib="gtk+" version="3.14"/> <object class="GtkAboutDialog" id="AboutDlg"> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -46,6 +32,9 @@ </child> </object> </child> + <child> + <placeholder/> + </child> </object> <object class="GtkDialog" id="CheatListDlg"> <property name="can_focus">False</property> @@ -87,7 +76,7 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">15</property> @@ -131,9 +120,10 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkButton" id="savebutton1"> @@ -227,6 +217,9 @@ <action-widgets> <action-widget response="0">closbutton1</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkDialog" id="ConfDlg"> <property name="can_focus">False</property> @@ -268,10 +261,11 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox28"> + <object class="GtkBox" id="vbox28"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">3</property> <child> <object class="GtkFrame" id="frame17"> @@ -284,74 +278,64 @@ <property name="can_focus">False</property> <property name="border_width">5</property> <child> - <object class="GtkTable" id="table4"> + <object class="GtkGrid" id="table4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">7</property> - <property name="n_columns">5</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> <child> <object class="GtkImage" id="image337"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-gpu-png</property> + <property name="icon_name">pcsxr-plugin-gpu</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkImage" id="image341"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-cdr-png</property> + <property name="icon_name">pcsxr-plugin-cdr</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> <object class="GtkImage" id="image340"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-pad-png</property> + <property name="icon_name">pcsxr-plugin-pad</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> <object class="GtkImage" id="image339"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-pad-png</property> + <property name="icon_name">pcsxr-plugin-pad</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> <object class="GtkImage" id="image338"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-spu-png</property> + <property name="icon_name">pcsxr-plugin-spu</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -370,9 +354,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="top_attach">0</property> </packing> </child> <child> @@ -382,10 +364,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -395,10 +374,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -412,10 +388,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -425,10 +398,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -438,8 +408,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> - <property name="y_options">GTK_FILL</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -458,11 +427,7 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -481,11 +446,7 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -504,11 +465,7 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -527,11 +484,7 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -550,11 +503,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -573,11 +522,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -596,11 +541,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -619,89 +560,62 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> <object class="GtkLabel" id="label95"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Graphics:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkLabel" id="label96"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Sound:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> <object class="GtkLabel" id="label85"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Controller 1:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> <object class="GtkLabel" id="label87"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Controller 2:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> <object class="GtkLabel" id="label91"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">CD-ROM:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -720,9 +634,7 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> - <property name="x_options"/> - <property name="y_options"/> + <property name="top_attach">0</property> </packing> </child> <child> @@ -732,26 +644,19 @@ <property name="icon_name">gtk-find</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> <object class="GtkLabel" id="label89"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Search in:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -776,38 +681,29 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">5</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> </packing> </child> <child> <object class="GtkImage" id="image39"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">generated-icon-sio1-png</property> + <property name="icon_name">pcsxr-plugin-sio1</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> <object class="GtkLabel" id="label18"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Link cable:</property> </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -817,10 +713,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -839,11 +732,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> <child> @@ -862,13 +751,15 @@ </object> <packing> <property name="left_attach">4</property> - <property name="right_attach">5</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options"/> - <property name="y_options"/> </packing> </child> + <child> + <placeholder/> + </child> + <child> + <placeholder/> + </child> </object> </child> </object> @@ -920,7 +811,6 @@ <object class="GtkLabel" id="label17"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">BIOS:</property> </object> <packing> @@ -943,7 +833,6 @@ <object class="GtkLabel" id="label16"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Search in:</property> </object> <packing> @@ -1027,6 +916,9 @@ <action-widgets> <action-widget response="-6">btn_ConfClose</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkDialog" id="McdsDlg"> <property name="can_focus">False</property> @@ -1040,6 +932,7 @@ <object class="GtkBox" id="dialog-vbox3"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child internal-child="action_area"> <object class="GtkButtonBox" id="dialog-action_area3"> <property name="visible">True</property> @@ -1069,354 +962,240 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox54"> + <object class="GtkBox"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> - <object class="GtkFrame" id="frame1"> + <object class="GtkBox" id="hbox54"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">5</property> - <property name="label_xalign">0</property> <child> - <object class="GtkVBox" id="vbox31"> + <object class="GtkFrame" id="frame1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">6</property> - <property name="spacing">6</property> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="shadow_type">in</property> - <child> - <object class="GtkTreeView" id="GtkCList_McdList1"> - <property name="width_request">265</property> - <property name="height_request">400</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <child internal-child="selection"> - <object class="GtkTreeSelection" id="treeview-selection3"/> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> + <property name="border_width">5</property> + <property name="label_xalign">0</property> <child> - <object class="GtkHButtonBox" id="hbuttonbox19"> + <object class="GtkBox" id="vbox31"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">5</property> - <property name="spacing">5</property> + <property name="border_width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> <child> - <object class="GtkButton" id="GtkButton_New1"> + <object class="GtkScrolledWindow" id="scrolledwindow3"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_Reload1" swapped="no"/> + <property name="shadow_type">in</property> <child> - <object class="GtkAlignment" id="alignment1"> + <object class="GtkTreeView" id="GtkCList_McdList1"> + <property name="width_request">265</property> + <property name="height_request">400</property> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <child> - <object class="GtkHBox" id="hbox57"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">2</property> - <child> - <object class="GtkImage" id="image324"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-new</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">New</property> - <property name="use_underline">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> + <property name="can_focus">True</property> + <child internal-child="selection"> + <object class="GtkTreeSelection"/> </child> </object> </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> <property name="position">0</property> </packing> </child> <child> - <object class="GtkButton" id="GtkButton_Format1"> + <object class="GtkButtonBox" id="hbuttonbox19"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_Format" object="1" swapped="yes"/> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="spacing">5</property> <child> - <object class="GtkAlignment" id="alignment50"> + <object class="GtkButton" id="GtkButton_New1"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <signal name="clicked" handler="OnMcd_Reload1" swapped="no"/> <child> - <object class="GtkHBox" id="hbox70"> + <object class="GtkAlignment" id="alignment1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="spacing">2</property> - <child> - <object class="GtkImage" id="image346"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-clear</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> + <property name="xscale">0</property> + <property name="yscale">0</property> <child> - <object class="GtkLabel" id="label111"> + <object class="GtkBox" id="hbox57"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Format</property> - <property name="use_underline">True</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image324"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-new</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label1"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">New</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> </child> </object> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="GtkButton_Delete1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">True</property> - <signal name="clicked" handler="OnMcd_Delete1" swapped="no"/> <child> - <object class="GtkAlignment" id="alignment45"> + <object class="GtkButton" id="GtkButton_Format1"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <signal name="clicked" handler="OnMcd_Format" object="1" swapped="yes"/> <child> - <object class="GtkHBox" id="hbox63"> + <object class="GtkAlignment" id="alignment50"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="spacing">2</property> - <child> - <object class="GtkImage" id="image330"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-delete</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> + <property name="xscale">0</property> + <property name="yscale">0</property> <child> - <object class="GtkLabel" id="label105"> + <object class="GtkBox" id="hbox70"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Un/Delete</property> - <property name="use_underline">True</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image346"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-clear</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label111"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Format</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> </child> </object> </child> </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="Mcd1Button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <child> - <object class="GtkHBox" id="hbox2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">3</property> - <child> - <object class="GtkImage" id="image30"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-floppy</property> - </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="Mcd1Label"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label">Loading...</property> - <property name="ellipsize">middle</property> - <property name="single_line_mode">True</property> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> <property name="position">1</property> </packing> </child> <child> - <object class="GtkVSeparator" id="vseparator1"> - <property name="visible">True</property> - <property name="can_focus">False</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkImage" id="image31"> + <object class="GtkButton" id="GtkButton_Delete1"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-open</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="OnMcd_Delete1" swapped="no"/> + <child> + <object class="GtkAlignment" id="alignment45"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <object class="GtkBox" id="hbox63"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image330"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-delete</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label105"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Un/Delete</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">3</property> + <property name="position">2</property> </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> - </child> - </object> - </child> - <child type="label"> - <object class="GtkHBox" id="hbox58"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkLabel" id="label100"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label" translatable="yes"><b>Memory Card 1</b></property> - <property name="use_markup">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">4</property> - <property name="position">0</property> - </packing> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkAlignment" id="alignment51"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="top_padding">27</property> - <property name="bottom_padding">132</property> - <child> - <object class="GtkVButtonBox" id="vbuttonbox2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">6</property> - <property name="layout_style">spread</property> - <child> - <object class="GtkButton" id="GtkButton_CopyTo2"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_CopyTo2" swapped="no"/> <child> - <object class="GtkAlignment" id="alignment41"> + <object class="GtkButton" id="Mcd1Button"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox59"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="spacing">2</property> + <property name="spacing">3</property> <child> - <object class="GtkImage" id="image326"> + <object class="GtkImage" id="image30"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-go-forward</property> + <property name="stock">gtk-floppy</property> </object> <packing> <property name="expand">False</property> @@ -1425,158 +1204,116 @@ </packing> </child> <child> - <object class="GtkLabel" id="label101"> + <object class="GtkLabel" id="Mcd1Label"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Copy</property> - <property name="use_underline">True</property> + <property name="label">Loading...</property> + <property name="ellipsize">middle</property> + <property name="single_line_mode">True</property> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> + <property name="expand">True</property> + <property name="fill">True</property> <property name="position">1</property> </packing> </child> - </object> - </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkButton" id="GtkButton_CopyTo1"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_CopyTo1" swapped="no"/> - <child> - <object class="GtkAlignment" id="alignment42"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <child> - <object class="GtkHBox" id="hbox60"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">2</property> <child> - <object class="GtkImage" id="image327"> + <object class="GtkSeparator" id="vseparator1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-go-back</property> </object> <packing> <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> + <property name="fill">True</property> + <property name="position">2</property> </packing> </child> <child> - <object class="GtkLabel" id="label102"> + <object class="GtkImage" id="image31"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Copy</property> - <property name="use_underline">True</property> + <property name="stock">gtk-open</property> </object> <packing> <property name="expand">False</property> <property name="fill">False</property> - <property name="position">1</property> + <property name="position">3</property> </packing> </child> </object> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> </child> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkFrame" id="frame2"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="border_width">5</property> - <property name="label_xalign">0</property> - <child> - <object class="GtkVBox" id="vbox32"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="border_width">6</property> - <property name="spacing">6</property> - <child> - <object class="GtkScrolledWindow" id="scrolledwindow4"> - <property name="width_request">265</property> - <property name="height_request">400</property> + <child type="label"> + <object class="GtkBox" id="hbox58"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="shadow_type">in</property> <child> - <object class="GtkTreeView" id="GtkCList_McdList2"> + <object class="GtkLabel" id="label100"> <property name="visible">True</property> - <property name="can_focus">True</property> - <child internal-child="selection"> - <object class="GtkTreeSelection" id="treeview-selection4"/> - </child> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><b>Memory Card 1</b></property> + <property name="use_markup">True</property> </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">4</property> + <property name="position">0</property> + </packing> </child> </object> - <packing> - <property name="expand">True</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkAlignment" id="alignment51"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="top_padding">27</property> + <property name="bottom_padding">132</property> <child> - <object class="GtkHButtonBox" id="hbuttonbox20"> + <object class="GtkButtonBox" id="vbuttonbox2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">5</property> - <property name="spacing">5</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <property name="layout_style">center</property> <child> - <object class="GtkButton" id="GtkButton_New2"> + <object class="GtkButton" id="GtkButton_CopyTo2"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_Reload2" swapped="no"/> + <signal name="clicked" handler="OnMcd_CopyTo2" swapped="no"/> <child> - <object class="GtkAlignment" id="alignment48"> + <object class="GtkAlignment" id="alignment41"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <object class="GtkHBox" id="hbox66"> + <object class="GtkBox" id="hbox59"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">2</property> <child> - <object class="GtkImage" id="image333"> + <object class="GtkImage" id="image326"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-new</property> + <property name="stock">gtk-go-forward</property> </object> <packing> <property name="expand">False</property> @@ -1585,11 +1322,10 @@ </packing> </child> <child> - <object class="GtkLabel" id="label108"> + <object class="GtkLabel" id="label101"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">New</property> + <property name="label" translatable="yes">Copy</property> <property name="use_underline">True</property> </object> <packing> @@ -1610,28 +1346,28 @@ </packing> </child> <child> - <object class="GtkButton" id="GtkButton_Format2"> + <object class="GtkButton" id="GtkButton_CopyTo1"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="can_default">True</property> <property name="receives_default">False</property> - <signal name="clicked" handler="OnMcd_Format" object="2" swapped="yes"/> + <signal name="clicked" handler="OnMcd_CopyTo1" swapped="no"/> <child> - <object class="GtkAlignment" id="alignment49"> + <object class="GtkAlignment" id="alignment42"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="xscale">0</property> <property name="yscale">0</property> <child> - <object class="GtkHBox" id="hbox69"> + <object class="GtkBox" id="hbox60"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">2</property> <child> - <object class="GtkImage" id="image345"> + <object class="GtkImage" id="image327"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-clear</property> + <property name="stock">gtk-go-back</property> </object> <packing> <property name="expand">False</property> @@ -1640,11 +1376,10 @@ </packing> </child> <child> - <object class="GtkLabel" id="label110"> + <object class="GtkLabel" id="label102"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Format</property> + <property name="label" translatable="yes">Copy</property> <property name="use_underline">True</property> </object> <packing> @@ -1664,83 +1399,104 @@ <property name="position">1</property> </packing> </child> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="frame2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="label_xalign">0</property> + <child> + <object class="GtkBox" id="vbox32"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">6</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> <child> - <object class="GtkButton" id="GtkButton_Delete2"> + <object class="GtkScrolledWindow" id="scrolledwindow4"> + <property name="width_request">265</property> + <property name="height_request">400</property> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="receives_default">True</property> - <signal name="clicked" handler="OnMcd_Delete2" swapped="no"/> + <property name="shadow_type">in</property> <child> - <object class="GtkAlignment" id="alignment44"> + <object class="GtkTreeView" id="GtkCList_McdList2"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xscale">0</property> - <property name="yscale">0</property> - <child> - <object class="GtkHBox" id="hbox62"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="spacing">2</property> - <child> - <object class="GtkImage" id="image329"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-delete</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="label104"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="label" translatable="yes">Un/Delete</property> - <property name="use_underline">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - </packing> - </child> - </object> + <property name="can_focus">True</property> + <child internal-child="selection"> + <object class="GtkTreeSelection"/> </child> </object> </child> </object> <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> </packing> </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - <child> - <object class="GtkButton" id="Mcd2Button"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkButtonBox" id="hbuttonbox20"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="spacing">3</property> + <property name="border_width">5</property> + <property name="spacing">5</property> <child> - <object class="GtkImage" id="image32"> + <object class="GtkButton" id="GtkButton_New2"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="stock">gtk-floppy</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <signal name="clicked" handler="OnMcd_Reload2" swapped="no"/> + <child> + <object class="GtkAlignment" id="alignment48"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <object class="GtkBox" id="hbox66"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image333"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-new</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label108"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">New</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> </object> <packing> <property name="expand">False</property> @@ -1749,85 +1505,244 @@ </packing> </child> <child> - <object class="GtkLabel" id="Mcd2Label"> + <object class="GtkButton" id="GtkButton_Format2"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="label">Loading...</property> - <property name="ellipsize">middle</property> - <property name="single_line_mode">True</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">False</property> + <signal name="clicked" handler="OnMcd_Format" object="2" swapped="yes"/> + <child> + <object class="GtkAlignment" id="alignment49"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <object class="GtkBox" id="hbox69"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image345"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-clear</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label110"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Format</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> </object> <packing> - <property name="expand">True</property> - <property name="fill">True</property> + <property name="expand">False</property> + <property name="fill">False</property> <property name="position">1</property> </packing> </child> <child> - <object class="GtkVSeparator" id="vseparator2"> + <object class="GtkButton" id="GtkButton_Delete2"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can_focus">True</property> + <property name="can_default">True</property> + <property name="receives_default">True</property> + <signal name="clicked" handler="OnMcd_Delete2" swapped="no"/> + <child> + <object class="GtkAlignment" id="alignment44"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="xscale">0</property> + <property name="yscale">0</property> + <child> + <object class="GtkBox" id="hbox62"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">2</property> + <child> + <object class="GtkImage" id="image329"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-delete</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="label104"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Un/Delete</property> + <property name="use_underline">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> </object> <packing> <property name="expand">False</property> - <property name="fill">True</property> + <property name="fill">False</property> <property name="position">2</property> </packing> </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkButton" id="Mcd2Button"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> <child> - <object class="GtkImage" id="image33"> + <object class="GtkBox" id="hbox3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-open</property> + <property name="spacing">3</property> + <child> + <object class="GtkImage" id="image32"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-floppy</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="Mcd2Label"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label">Loading...</property> + <property name="ellipsize">middle</property> + <property name="single_line_mode">True</property> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkSeparator" id="vseparator2"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkImage" id="image33"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="stock">gtk-open</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> </child> </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">2</property> - </packing> </child> - </object> - </child> - <child type="label"> - <object class="GtkHBox" id="hbox67"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkLabel" id="label109"> + <child type="label"> + <object class="GtkBox" id="hbox67"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="yes"><b>Memory Card 2</b></property> - <property name="use_markup">True</property> + <child> + <object class="GtkLabel" id="label109"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><b>Memory Card 2</b></property> + <property name="use_markup">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="padding">4</property> + <property name="position">0</property> + </packing> + </child> </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="padding">4</property> - <property name="position">0</property> - </packing> </child> </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> </object> <packing> <property name="expand">True</property> <property name="fill">True</property> - <property name="position">2</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="GtkCheckButton_PerGameMcd"> + <property name="label" translatable="yes">Enable per game memory cards</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="border_width">2</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> </packing> </child> </object> <packing> - <property name="expand">True</property> + <property name="expand">False</property> <property name="fill">True</property> - <property name="position">2</property> + <property name="position">1</property> </packing> </child> </object> @@ -1835,6 +1750,9 @@ <action-widgets> <action-widget response="-5">McdClose</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkDialog" id="MemViewDlg"> <property name="can_focus">False</property> @@ -1878,12 +1796,12 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox10"> + <object class="GtkBox" id="hbox10"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">13</property> <child> - <object class="GtkHBox" id="hbox11"> + <object class="GtkBox" id="hbox11"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">10</property> @@ -1891,7 +1809,6 @@ <object class="GtkLabel" id="label2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Address (Hexadecimal):</property> </object> <packing> @@ -1923,7 +1840,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox111"> + <object class="GtkBox" id="hbox111"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">10</property> @@ -2001,6 +1918,9 @@ <child internal-child="selection"> <object class="GtkTreeSelection" id="treeview-selection5"/> </child> + <style> + <class name="monospace"/> + </style> </object> </child> </object> @@ -2011,7 +1931,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox2"> + <object class="GtkButtonBox" id="hbuttonbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">20</property> @@ -2022,7 +1942,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox12"> + <object class="GtkBox" id="hbox12"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -2041,7 +1961,6 @@ <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Raw Dump...</property> </object> <packing> @@ -2065,7 +1984,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox13"> + <object class="GtkBox" id="hbox13"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -2084,7 +2003,6 @@ <object class="GtkLabel" id="label10"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Patch Memory...</property> </object> <packing> @@ -2114,6 +2032,9 @@ <action-widgets> <action-widget response="0">memview_close</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkDialog" id="NetDlg"> <property name="can_focus">False</property> @@ -2156,9 +2077,10 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox27"> + <object class="GtkBox" id="vbox27"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> <object class="GtkFrame" id="frame19"> <property name="visible">True</property> @@ -2171,7 +2093,7 @@ <property name="can_focus">False</property> <property name="border_width">5</property> <child> - <object class="GtkHBox" id="hbox68"> + <object class="GtkBox" id="hbox68"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">5</property> @@ -2269,180 +2191,458 @@ <action-widgets> <action-widget response="-6">closebutton2</action-widget> </action-widgets> + <child> + <placeholder/> + </child> + </object> + <object class="GtkListStore" id="PGXP_Mode_list"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Disabled</col> + </row> + <row> + <col id="0" translatable="yes">Memory only</col> + </row> + <row> + <col id="0" translatable="yes">Memory + Cpu logic</col> + </row> + </data> + </object> + <object class="GtkDialog" id="PgxpDlg"> + <property name="can_focus">False</property> + <property name="title" translatable="yes">Configure PGXP</property> + <property name="resizable">False</property> + <property name="modal">True</property> + <property name="window_position">center-on-parent</property> + <property name="type_hint">dialog</property> + <child internal-child="vbox"> + <object class="GtkBox"> + <property name="can_focus">False</property> + <property name="orientation">vertical</property> + <child internal-child="action_area"> + <object class="GtkButtonBox"> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="PgxpDlg_close"> + <property name="label">gtk-close</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="spacing">5</property> + <child> + <object class="GtkFrame" id="PgxpDlg_Options"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <child> + <object class="GtkAlignment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkCheckButton" id="PGXP_GTE"> + <property name="label" translatable="yes">Enable PGXP GTE vertex creation</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="PGXP_Cache"> + <property name="label" translatable="yes">Enable vertex caching.</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="PGXP_Texture"> + <property name="label" translatable="yes">Enable perspective correct texturing.</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Options</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkFrame" id="PgxpDlg_Mode"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <child> + <object class="GtkAlignment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <property name="baseline_position">top</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">10</property> + <property name="homogeneous">True</property> + <child> + <placeholder/> + </child> + <child> + <object class="GtkComboBox" id="PGXP_Mode"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="model">PGXP_Mode_list</property> + <child> + <object class="GtkCellRendererText" id="cellrenderertext6"/> + <attributes> + <attribute name="text">0</attribute> + </attributes> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="PGXP_Mode_title"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="halign">start</property> + <property name="margin_top">4</property> + <property name="margin_bottom">4</property> + <property name="label" translatable="yes">Mode</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <object class="GtkLabel" id="PGXP_Mode_description"> + <property name="height_request">100</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="margin_right">10</property> + <property name="label" translatable="yes">Description</property> + <property name="wrap">True</property> + <property name="width_chars">40</property> + <property name="max_width_chars">0</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes">Select PGXP Mode</property> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> + </object> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">True</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + </object> + </child> + <action-widgets> + <action-widget response="0">PgxpDlg_close</action-widget> + </action-widgets> + <child> + <placeholder/> + </child> + </object> + <object class="GtkAdjustment" id="adjustment_PsxClock"> + <property name="lower">0.5</property> + <property name="upper">5</property> + <property name="step_increment">0.25</property> + <property name="page_increment">10</property> </object> <object class="GtkImage" id="image1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-open</property> + <property name="icon_name">pcsxr-load-state</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image10"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-revert-to-saved</property> + <property name="icon_name">pcsxr-load-state</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image11"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-preferences</property> + <property name="icon_name">pcsxr-settings</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image12"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-properties</property> + <property name="icon_name">pcsxr-cpu</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image13"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-floppy</property> + <property name="icon_name">pcsxr-memcard</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image14"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-properties</property> + <property name="icon_name">pcsxr-plugin-netplay</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image15"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-indent</property> + <property name="icon_name">pcsxr-cheats</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image16"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-index</property> + <property name="icon_name">pcsxr-cheats-browse</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image17"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-find</property> + <property name="icon_name">pcsxr-cheats-search</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image18"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-about</property> + <property name="icon_name">pcsxr-about</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image19"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-save-as</property> + <property name="icon_name">pcsxr-save-state</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0.49000000953674316</property> - <property name="stock">gtk-cdrom</property> + <property name="icon_name">pcsxr-cd-open</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image20"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-stop</property> + <property name="icon_name">pcsxr-shutdown</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image21"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-select-color</property> + <property name="icon_name">pcsxr-plugin-gpu</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image22"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-convert</property> + <property name="icon_name">pcsxr-plugin-spu</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image23"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-cdrom</property> + <property name="icon_name">pcsxr-plugin-cdr</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image24"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-execute</property> + <property name="icon_name">pcsxr-plugin-pad</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image25"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-quit</property> + <property name="icon_name">pcsxr-exit</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-open</property> + <property name="icon_name">pcsxr-iso-open</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image34"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-revert-to-saved</property> + <property name="icon_name">pcsxr-memory-dump</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-convert</property> + <property name="icon_name">pcsxr-run-bios</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image42"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-execute</property> + <property name="icon_name">pcsxr-plugin-sio1</property> + <property name="icon_size">1</property> + </object> + <object class="GtkImage" id="image43"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="icon_name">pcsxr-pgxp</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-execute</property> + <property name="icon_name">pcsxr-run-exe</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image6"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-go-forward</property> + <property name="icon_name">pcsxr-play</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-refresh</property> + <property name="icon_name">pcsxr-reset</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-open</property> + <property name="icon_name">pcsxr-iso-reopen</property> <property name="icon_size">1</property> </object> <object class="GtkImage" id="image9"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="stock">gtk-save-as</property> + <property name="icon_name">pcsxr-save-state</property> <property name="icon_size">1</property> </object> - <object class="GtkWindow" id="MainWindow"> + <object class="GtkApplicationWindow" id="MainWindow"> <property name="can_focus">False</property> <property name="title" translatable="yes">PCSXR</property> <property name="resizable">False</property> <property name="icon_name">pcsxr-icon.png</property> <signal name="destroy" handler="OnDestroy" swapped="no"/> <child> - <object class="GtkVBox" id="vbox18"> + <object class="GtkBox" id="vbox18"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> <object class="GtkMenuBar" id="menubar1"> <property name="visible">True</property> @@ -2935,6 +3135,23 @@ </object> </child> <child> + <object class="GtkImageMenuItem" id="pgxp1"> + <property name="label" translatable="yes">_PGXP...</property> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="use_underline">True</property> + <property name="image">image43</property> + <property name="use_stock">False</property> + <signal name="activate" handler="OnConf_Pgxp" swapped="no"/> + </object> + </child> + <child> + <object class="GtkSeparatorMenuItem" id="separator10"> + <property name="visible">True</property> + <property name="can_focus">False</property> + </object> + </child> + <child> <object class="GtkImageMenuItem" id="cpu1"> <property name="label" translatable="yes">_CPU...</property> <property name="visible">True</property> @@ -3045,11 +3262,9 @@ </packing> </child> <child> - <object class="GtkTable" id="tableToolbox"> + <object class="GtkToolbar" id="tableToolbox"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="border_width">5</property> - <property name="n_columns">11</property> <child> <object class="GtkToolButton" id="toolbutton_runcd"> <property name="visible">True</property> @@ -3057,8 +3272,12 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Run CD</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-cd-png</property> + <property name="icon_name">pcsxr-cd-open</property> </object> + <packing> + <property name="expand">False</property> + <property name="homogeneous">True</property> + </packing> </child> <child> <object class="GtkToolButton" id="toolbutton_runimage"> @@ -3067,11 +3286,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Run ISO Image</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-iso-open-png</property> + <property name="icon_name">pcsxr-iso-open</property> </object> <packing> - <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3080,8 +3299,8 @@ <property name="can_focus">False</property> </object> <packing> - <property name="left_attach">2</property> - <property name="right_attach">3</property> + <property name="expand">False</property> + <property name="homogeneous">False</property> </packing> </child> <child> @@ -3091,11 +3310,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Continue Emulation</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-play-png</property> + <property name="icon_name">pcsxr-play</property> </object> <packing> - <property name="left_attach">3</property> - <property name="right_attach">4</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3105,11 +3324,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Switch ISO Image</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-iso-reopen-png</property> + <property name="icon_name">pcsxr-iso-reopen</property> </object> <packing> - <property name="left_attach">4</property> - <property name="right_attach">5</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3118,8 +3337,8 @@ <property name="can_focus">False</property> </object> <packing> - <property name="left_attach">5</property> - <property name="right_attach">6</property> + <property name="expand">False</property> + <property name="homogeneous">False</property> </packing> </child> <child> @@ -3129,11 +3348,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Configure Memory Cards</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-memcard-png</property> + <property name="icon_name">pcsxr-memcard</property> </object> <packing> - <property name="left_attach">6</property> - <property name="right_attach">7</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3143,11 +3362,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Configure Graphics</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-gpu-png</property> + <property name="icon_name">pcsxr-plugin-gpu</property> </object> <packing> - <property name="left_attach">7</property> - <property name="right_attach">8</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3157,11 +3376,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Configure Sound</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-spu-png</property> + <property name="icon_name">pcsxr-plugin-spu</property> </object> <packing> - <property name="left_attach">8</property> - <property name="right_attach">9</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3171,11 +3390,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Configure CD-ROM</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-cdr-png</property> + <property name="icon_name">pcsxr-plugin-cdr</property> </object> <packing> - <property name="left_attach">9</property> - <property name="right_attach">10</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> <child> @@ -3185,11 +3404,11 @@ <property name="has_tooltip">True</property> <property name="tooltip_text" translatable="yes">Configure Controllers</property> <property name="use_underline">True</property> - <property name="stock_id">generated-icon-pad-png</property> + <property name="icon_name">pcsxr-plugin-pad</property> </object> <packing> - <property name="left_attach">10</property> - <property name="right_attach">11</property> + <property name="expand">False</property> + <property name="homogeneous">True</property> </packing> </child> </object> @@ -3203,7 +3422,7 @@ <object class="GtkImage" id="image160"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="pixbuf">pcsxr.png</property> + <property name="pixbuf">pixmaps/pcsxr.png</property> </object> <packing> <property name="expand">True</property> @@ -3225,6 +3444,9 @@ </child> </object> </child> + <child type="titlebar"> + <placeholder/> + </child> </object> <object class="GtkListStore" id="liststore1"> <columns> @@ -3360,18 +3582,17 @@ <property name="left_padding">5</property> <property name="right_padding">5</property> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkBox" id="vbox2"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> - <object class="GtkTable" id="table1"> + <object class="GtkGrid" id="table1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">3</property> - <property name="n_columns">4</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> <child> <object class="GtkComboBox" id="combo_datatype"> <property name="visible">True</property> @@ -3386,42 +3607,40 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"/> </packing> </child> <child> <object class="GtkLabel" id="label6"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Search For:</property> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> <child> <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Data Type:</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Value:</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> @@ -3432,9 +3651,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> @@ -3451,8 +3668,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"/> + <property name="top_attach">0</property> </packing> </child> <child> @@ -3464,10 +3680,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"/> </packing> </child> <child> @@ -3484,10 +3697,7 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"/> </packing> </child> <child> @@ -3498,15 +3708,10 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> - <placeholder/> - </child> - <child> <object class="GtkEntry" id="entry_valueto"> <property name="visible">True</property> <property name="can_focus">True</property> @@ -3515,14 +3720,15 @@ </object> <packing> <property name="left_attach">3</property> - <property name="right_attach">4</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> <placeholder/> </child> + <child> + <placeholder/> + </child> </object> <packing> <property name="expand">False</property> @@ -3531,7 +3737,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkBox" id="hbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3562,9 +3768,10 @@ </packing> </child> <child> - <object class="GtkVButtonBox" id="vbuttonbox1"> + <object class="GtkButtonBox" id="vbuttonbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">10</property> <property name="layout_style">start</property> <child> @@ -3573,7 +3780,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox7"> + <object class="GtkBox" id="hbox7"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3593,7 +3800,6 @@ <object class="GtkLabel" id="label13"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Freeze</property> </object> <packing> @@ -3617,7 +3823,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox8"> + <object class="GtkBox" id="hbox8"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3637,7 +3843,6 @@ <object class="GtkLabel" id="label14"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Modify</property> </object> <packing> @@ -3661,7 +3866,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox9"> + <object class="GtkBox" id="hbox9"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3681,7 +3886,6 @@ <object class="GtkLabel" id="label15"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Copy</property> </object> <packing> @@ -3718,8 +3922,7 @@ <object class="GtkLabel" id="label_resultsfound"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> - <property name="yalign">0</property> + <property name="halign">start</property> <property name="label" translatable="yes">label_resultsfound</property> <property name="single_line_mode">True</property> </object> @@ -3730,7 +3933,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox1"> + <object class="GtkButtonBox" id="hbuttonbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">20</property> @@ -3741,7 +3944,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox5"> + <object class="GtkBox" id="hbox5"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3761,7 +3964,6 @@ <object class="GtkLabel" id="label11"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Search</property> </object> <packing> @@ -3785,7 +3987,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox6"> + <object class="GtkBox" id="hbox6"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -3805,7 +4007,6 @@ <object class="GtkLabel" id="label12"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Restart</property> </object> <packing> @@ -3854,6 +4055,9 @@ <action-widgets> <action-widget response="0">closebutton</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> <object class="GtkListStore" id="liststore5"> <columns> @@ -3912,10 +4116,11 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox25"> + <object class="GtkBox" id="vbox25"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkFrame" id="frame15"> @@ -3923,14 +4128,11 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkTable" id="table3"> + <object class="GtkGrid" id="table3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> - <property name="n_rows">12</property> - <child> - <placeholder/> - </child> + <property name="orientation">vertical</property> <child> <object class="GtkCheckButton" id="GtkCheckButton_SpuIrq"> <property name="label" translatable="yes">SPU IRQ Always Enabled</property> @@ -3938,14 +4140,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -3955,14 +4154,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -3972,14 +4168,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -3989,12 +4182,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -4004,14 +4196,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4021,14 +4210,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4038,14 +4224,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4055,14 +4238,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4072,14 +4252,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">9</property> - <property name="bottom_attach">10</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4089,14 +4266,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">10</property> - <property name="bottom_attach">11</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4106,14 +4280,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">11</property> - <property name="bottom_attach">12</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4123,14 +4294,11 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">12</property> - <property name="bottom_attach">13</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> <child> @@ -4140,16 +4308,16 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">13</property> - <property name="bottom_attach">14</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"/> </packing> </child> + <child> + <placeholder/> + </child> </object> </child> <child type="label"> @@ -4173,7 +4341,7 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkHBox" id="hbox51"> + <object class="GtkBox" id="hbox51"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -4224,7 +4392,7 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkHBox" id="hbox50"> + <object class="GtkBox" id="hbox50"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -4344,7 +4512,7 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkHBox" id="hbox14"> + <object class="GtkBox" id="hbox14"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -4481,7 +4649,7 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkHBox" id="hbox49"> + <object class="GtkBox" id="hbox49"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -4493,7 +4661,6 @@ <property name="can_focus">True</property> <property name="receives_default">False</property> <property name="use_underline">True</property> - <property name="xalign">0.5</property> <property name="draw_indicator">True</property> </object> <packing> @@ -4537,6 +4704,100 @@ <property name="position">4</property> </packing> </child> + <child> + <object class="GtkFrame" id="frame_oc"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label_xalign">0</property> + <child> + <object class="GtkAlignment"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="border_width">5</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="spacing">5</property> + <child> + <object class="GtkCheckButton" id="GtkCheckButton_OverClock"> + <property name="label" translatable="yes">Overclock</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkSpinButton" id="GtkSpinButton_PsxClock"> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="max_width_chars">6</property> + <property name="adjustment">adjustment_PsxClock</property> + <property name="digits">2</property> + <property name="numeric">True</property> + <property name="update_policy">if-valid</property> + <property name="value">1</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + <child> + <placeholder/> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="GtkCheckButton_MemHack"> + <property name="label" translatable="yes">WipeOut MemHack</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + </child> + </object> + </child> + <child type="label"> + <object class="GtkLabel"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="label" translatable="yes"><b>CPU Overclocking</b></property> + <property name="use_markup">True</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">5</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> @@ -4549,5 +4810,8 @@ <action-widgets> <action-widget response="-6">closebutton1</action-widget> </action-widgets> + <child> + <placeholder/> + </child> </object> </interface> diff --git a/gui/data/pixmaps/Makefile.am b/gui/data/pixmaps/Makefile.am new file mode 100644 index 00000000..f5be2e62 --- /dev/null +++ b/gui/data/pixmaps/Makefile.am @@ -0,0 +1,18 @@ +#pixmapdir = "$(datadir)/pcsxr" +#pixmap_DATA = \ + pcsxr-cd-open.png \ + pcsxr-iso-open.png \ + pcsxr-iso-reopen.png \ + pcsxr-memcard.png \ + pcsxr-play.png \ + pcsxr-plugin-cdr.png \ + pcsxr-plugin-gpu.png \ + pcsxr-plugin-pad.png \ + pcsxr-plugin-sio1.png \ + pcsxr-plugin-spu.png \ + pcsxr.png + +icondir = "$(datadir)/pixmaps" +icon_DATA = pcsxr-icon.png + +EXTRA_DIST = $(pixmap_DATA) $(icon_DATA) diff --git a/gui/data/pixmaps/pcsxr-about.png b/gui/data/pixmaps/pcsxr-about.png Binary files differnew file mode 100644 index 00000000..1afd9229 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-about.png diff --git a/gui/data/pixmaps/pcsxr-cd-open.png b/gui/data/pixmaps/pcsxr-cd-open.png Binary files differnew file mode 100644 index 00000000..f72f29a5 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-cd-open.png diff --git a/gui/data/pixmaps/pcsxr-cheats-browse.png b/gui/data/pixmaps/pcsxr-cheats-browse.png Binary files differnew file mode 100644 index 00000000..311fe66a --- /dev/null +++ b/gui/data/pixmaps/pcsxr-cheats-browse.png diff --git a/gui/data/pixmaps/pcsxr-cheats-search.png b/gui/data/pixmaps/pcsxr-cheats-search.png Binary files differnew file mode 100644 index 00000000..21337b72 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-cheats-search.png diff --git a/gui/data/pixmaps/pcsxr-cheats.png b/gui/data/pixmaps/pcsxr-cheats.png Binary files differnew file mode 100644 index 00000000..d8cfdb03 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-cheats.png diff --git a/gui/data/pixmaps/pcsxr-cpu.png b/gui/data/pixmaps/pcsxr-cpu.png Binary files differnew file mode 100644 index 00000000..aa2e34ba --- /dev/null +++ b/gui/data/pixmaps/pcsxr-cpu.png diff --git a/gui/data/pixmaps/pcsxr-exit.png b/gui/data/pixmaps/pcsxr-exit.png Binary files differnew file mode 100644 index 00000000..c0fe484b --- /dev/null +++ b/gui/data/pixmaps/pcsxr-exit.png diff --git a/gui/data/pixmaps/pcsxr-icon.png b/gui/data/pixmaps/pcsxr-icon.png Binary files differnew file mode 100644 index 00000000..736bdec3 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-icon.png diff --git a/gui/data/pixmaps/pcsxr-iso-open.png b/gui/data/pixmaps/pcsxr-iso-open.png Binary files differnew file mode 100644 index 00000000..4f421296 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-iso-open.png diff --git a/gui/data/pixmaps/pcsxr-iso-reopen.png b/gui/data/pixmaps/pcsxr-iso-reopen.png Binary files differnew file mode 100644 index 00000000..68ea5387 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-iso-reopen.png diff --git a/gui/data/pixmaps/pcsxr-load-state.png b/gui/data/pixmaps/pcsxr-load-state.png Binary files differnew file mode 100644 index 00000000..a381e548 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-load-state.png diff --git a/pixmaps/memcard.png b/gui/data/pixmaps/pcsxr-memcard.png Binary files differindex 2b061b6d..2b061b6d 100755..100644 --- a/pixmaps/memcard.png +++ b/gui/data/pixmaps/pcsxr-memcard.png diff --git a/gui/data/pixmaps/pcsxr-memory-dump.png b/gui/data/pixmaps/pcsxr-memory-dump.png Binary files differnew file mode 100644 index 00000000..5c62af70 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-memory-dump.png diff --git a/pixmaps/play.png b/gui/data/pixmaps/pcsxr-play.png Binary files differindex ce003e4d..ce003e4d 100755..100644 --- a/pixmaps/play.png +++ b/gui/data/pixmaps/pcsxr-play.png diff --git a/pixmaps/cdr.png b/gui/data/pixmaps/pcsxr-plugin-cdr.png Binary files differindex 72737547..72737547 100755..100644 --- a/pixmaps/cdr.png +++ b/gui/data/pixmaps/pcsxr-plugin-cdr.png diff --git a/gui/data/pixmaps/pcsxr-plugin-gpu.png b/gui/data/pixmaps/pcsxr-plugin-gpu.png Binary files differnew file mode 100644 index 00000000..e024618c --- /dev/null +++ b/gui/data/pixmaps/pcsxr-plugin-gpu.png diff --git a/gui/data/pixmaps/pcsxr-plugin-netplay.png b/gui/data/pixmaps/pcsxr-plugin-netplay.png Binary files differnew file mode 100644 index 00000000..1e5ff2f5 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-plugin-netplay.png diff --git a/gui/data/pixmaps/pcsxr-plugin-pad.png b/gui/data/pixmaps/pcsxr-plugin-pad.png Binary files differnew file mode 100644 index 00000000..dd7656b2 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-plugin-pad.png diff --git a/gui/data/pixmaps/pcsxr-plugin-sio1.png b/gui/data/pixmaps/pcsxr-plugin-sio1.png Binary files differnew file mode 100644 index 00000000..89d3eeba --- /dev/null +++ b/gui/data/pixmaps/pcsxr-plugin-sio1.png diff --git a/gui/data/pixmaps/pcsxr-plugin-spu.png b/gui/data/pixmaps/pcsxr-plugin-spu.png Binary files differnew file mode 100644 index 00000000..5d206afb --- /dev/null +++ b/gui/data/pixmaps/pcsxr-plugin-spu.png diff --git a/gui/data/pixmaps/pcsxr-reset.png b/gui/data/pixmaps/pcsxr-reset.png Binary files differnew file mode 100644 index 00000000..74de098d --- /dev/null +++ b/gui/data/pixmaps/pcsxr-reset.png diff --git a/gui/data/pixmaps/pcsxr-run-bios.png b/gui/data/pixmaps/pcsxr-run-bios.png Binary files differnew file mode 100644 index 00000000..aa2e34ba --- /dev/null +++ b/gui/data/pixmaps/pcsxr-run-bios.png diff --git a/gui/data/pixmaps/pcsxr-run-exe.png b/gui/data/pixmaps/pcsxr-run-exe.png Binary files differnew file mode 100644 index 00000000..3ff9e91c --- /dev/null +++ b/gui/data/pixmaps/pcsxr-run-exe.png diff --git a/gui/data/pixmaps/pcsxr-save-state.png b/gui/data/pixmaps/pcsxr-save-state.png Binary files differnew file mode 100644 index 00000000..872109e4 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-save-state.png diff --git a/gui/data/pixmaps/pcsxr-settings.png b/gui/data/pixmaps/pcsxr-settings.png Binary files differnew file mode 100644 index 00000000..d423e32e --- /dev/null +++ b/gui/data/pixmaps/pcsxr-settings.png diff --git a/gui/data/pixmaps/pcsxr-shutdown.png b/gui/data/pixmaps/pcsxr-shutdown.png Binary files differnew file mode 100644 index 00000000..2ab2b165 --- /dev/null +++ b/gui/data/pixmaps/pcsxr-shutdown.png diff --git a/gui/data/pixmaps/pcsxr.png b/gui/data/pixmaps/pcsxr.png Binary files differnew file mode 100644 index 00000000..4e747a80 --- /dev/null +++ b/gui/data/pixmaps/pcsxr.png diff --git a/libpcsxcore/Makefile.am b/libpcsxcore/Makefile.am index b67700e4..ee585ab7 100644 --- a/libpcsxcore/Makefile.am +++ b/libpcsxcore/Makefile.am @@ -4,25 +4,25 @@ AM_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ noinst_LIBRARIES = libpcsxcore.a libpcsxcore_a_SOURCES = \ - psxbios.c \ - cdrom.c \ - psxcounters.c \ - psxdma.c \ - disr3000a.c \ - gpu.c \ - gpu.h \ - spu.c \ - sio.c \ - psxhw.c \ - mdec.c \ - psxmem.c \ - misc.c \ - plugins.c \ - decode_xa.c \ - r3000a.c \ - psxinterpreter.c \ - gte.c \ - psxhle.c \ + psxbios.c \ + cdrom.c \ + psxcounters.c \ + psxdma.c \ + disr3000a.c \ + gpu.c \ + gpu.h \ + spu.c \ + sio.c \ + psxhw.c \ + mdec.c \ + psxmem.c \ + misc.c \ + plugins.c \ + decode_xa.c \ + r3000a.c \ + psxinterpreter.c \ + gte.c \ + psxhle.c \ cdrom.h \ coff.h \ debug.c \ @@ -54,37 +54,49 @@ libpcsxcore_a_SOURCES = \ socket.c \ socket.h \ ppf.c \ - ppf.h + ppf.h \ + pgxp_cpu.c \ + pgxp_cpu.h \ + pgxp_debug.c \ + pgxp_debug.h \ + pgxp_gte.c \ + pgxp_gte.h \ + pgxp_mem.c \ + pgxp_mem.h \ + pgxp_value.c \ + pgxp_value.h if ARCH_X86_64 libpcsxcore_a_SOURCES += \ - ix86_64/iGte.h \ - ix86_64/iR3000A-64.c \ - ix86_64/ix86-64.c \ - ix86_64/ix86-64.h \ - ix86_64/ix86_cpudetect.c \ - ix86_64/ix86_fpu.c \ - ix86_64/ix86_3dnow.c \ - ix86_64/ix86_mmx.c \ - ix86_64/ix86_sse.c -else + ix86_64/iGte.h \ + ix86_64/iR3000A-64.c \ + ix86_64/ix86-64.c \ + ix86_64/ix86-64.h \ + ix86_64/ix86_cpudetect.c \ + ix86_64/ix86_fpu.c \ + ix86_64/ix86_3dnow.c \ + ix86_64/ix86_mmx.c \ + ix86_64/ix86_sse.c \ + ix86_64/iPGXP.h +else if ARCH_X86 libpcsxcore_a_SOURCES += \ - ix86/iGte.h \ - ix86/iR3000A.c \ - ix86/ix86.c \ - ix86/ix86.h + ix86/iGte.h \ + ix86/iR3000A.c \ + ix86/ix86.c \ + ix86/ix86.h \ + ix86/iPGXP.h endif endif if ARCH_PPC libpcsxcore_a_SOURCES += \ - ppc/pGte.h \ - ppc/pR3000A.c \ - ppc/ppc.c \ - ppc/ppc.h \ - ppc/ppc_mnemonics.h \ - ppc/reguse.c \ + ppc/pGte.h \ + ppc/pR3000A.c \ + ppc/ppc.c \ + ppc/ppc.h \ + ppc/ppc_mnemonics.h \ + ppc/reguse.c \ ppc/reguse.h libpcsxcore_a_CCASFLAGS = -x assembler-with-cpp -mregnames -D__POWERPC__ endif diff --git a/libpcsxcore/cdriso.c b/libpcsxcore/cdriso.c index af4205cf..4d6c3370 100755 --- a/libpcsxcore/cdriso.c +++ b/libpcsxcore/cdriso.c @@ -40,14 +40,11 @@ #ifdef ENABLE_CCDDA #include "libavcodec/avcodec.h" #include "libavutil/mathematics.h" +#include <libavutil/opt.h> +#include <libavutil/timestamp.h> #include "libavformat/avformat.h" +#include <libswresample/swresample.h> -#define INBUF_SIZE 4096 -#define AUDIO_INBUF_SIZE INBUF_SIZE*4 -#define AUDIO_REFILL_THRESH 4096 -/*#ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE - #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000 -#endif*/ #endif unsigned int cdrIsoMultidiskCount; @@ -104,9 +101,6 @@ struct trackinfo { u8 length[3]; // MSF-format FILE *handle; // for multi-track images CDDA enum {NONE=0, BIN=1, CCDDA=2 -#ifdef ENABLE_CCDDA1 - ,MP3=AV_CODEC_ID_MP3, APE=AV_CODEC_ID_APE, FLAC=AV_CODEC_ID_FLAC -#endif } cddatype; // BIN, WAV, MP3, APE void* decoded_buffer; u32 len_decoded_buffer; @@ -167,17 +161,6 @@ static int get_cdda_type(const char *str) if (strncmp((str+lenstr-3), "bin", 3) == 0) { return BIN; } -#ifdef ENABLE_CCDDA1 - else if (strncmp((str+lenstr-3), "mp3", 3) == 0) { - return MP3; - } - else if (strncmp((str+lenstr-3), "ape", 3) == 0) { - return APE; - } - else if (strncmp((str+lenstr-4), "flac", 4) == 0) { - return FLAC; - } -#endif #ifdef ENABLE_CCDDA else { return CCDDA; @@ -194,16 +177,17 @@ static int get_cdda_type(const char *str) return BIN; // no valid extension or no support; assume bin } -static int get_compressed_cdda_track_length(const char* filepath) { +int get_compressed_cdda_track_length(const char* filepath) { int seconds = -1; #ifdef ENABLE_CCDDA + av_log_set_level(AV_LOG_QUIET); av_register_all(); AVFormatContext * inAudioFormat = NULL; inAudioFormat = avformat_alloc_context(); int errorCode = avformat_open_input(&inAudioFormat, filepath, NULL, NULL); avformat_find_stream_info(inAudioFormat, NULL); - seconds = (int)(inAudioFormat->duration/AV_TIME_BASE); + seconds = (int)ceil((double)inAudioFormat->duration/(double)AV_TIME_BASE); avformat_close_input(&inAudioFormat); #endif return seconds; @@ -211,132 +195,208 @@ static int get_compressed_cdda_track_length(const char* filepath) { #ifdef ENABLE_CCDDA -static int decode_compressed_cdda_track(FILE* outfile, const char* infilepath, s32 id) { - AVCodec *codec; - AVCodecContext *c=NULL; - AVFormatContext *inAudioFormat = NULL; - s32 len; - AVPacket avpkt; - AVFrame *decoded_frame = NULL; - s32 got_frame = 0, moreFrames = 1; - s32 audio_stream_index; - s32 ret; - - //av_init_packet(&avpkt); - - avcodec_register_all(); - - inAudioFormat = avformat_alloc_context(); - int errorCode = avformat_open_input(&inAudioFormat, infilepath, NULL, NULL); - if (errorCode) { - SysMessage(_("Audio file opening failed!\n")); - return errorCode; + +int decode_packet(int *got_frame, AVPacket pkt, int audio_stream_idx, AVFrame* frame, AVCodecContext* audio_dec_ctx, void* buf, int* size, SwrContext* swr) { + int ret = 0; + int decoded = pkt.size; + *got_frame = 0; + + if (pkt.stream_index == audio_stream_idx) { + ret = avcodec_decode_audio4(audio_dec_ctx, frame, got_frame, &pkt); + if (ret < 0) { + SysPrintf(_("Error decoding audio frame\n")); + return ret; + } + + /* Some audio decoders decode only part of the packet, and have to be + * called again with the remainder of the packet data. + * Sample: fate-suite/lossless-audio/luckynight-partial.shn + * Also, some decoders might over-read the packet. */ + + decoded = FFMIN(ret, pkt.size); + + if (*got_frame) { + size_t unpadded_linesize = frame->nb_samples * av_get_bytes_per_sample(frame->format); + swr_convert(swr, (uint8_t**)&buf, frame->nb_samples, (const uint8_t **)frame->data, frame->nb_samples); + (*size)+=(unpadded_linesize*2); + } } - avformat_find_stream_info(inAudioFormat, NULL); + return decoded; +} + +int open_codec_context(int *stream_idx, AVFormatContext *fmt_ctx, enum AVMediaType type) { + int ret, stream_index; + AVStream *st; + AVCodecContext *dec_ctx = NULL; + AVCodec *dec = NULL; + AVDictionary *opts = NULL; + + ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0); - /* select the audio stream */ - ret = av_find_best_stream(inAudioFormat, AVMEDIA_TYPE_AUDIO, -1, -1, &codec, 0); if (ret < 0) { - avformat_close_input(&inAudioFormat); - SysMessage(_("Couldn't find any audio stream in file\n")); + SysPrintf(_("Could not find %s stream in input file\n"), + av_get_media_type_string(type)); return ret; + } else { + stream_index = ret; + st = fmt_ctx->streams[stream_index]; + + dec_ctx = st->codec; + dec = avcodec_find_decoder(dec_ctx->codec_id); + if (!dec) { + SysPrintf(_("Failed to find %s codec\n"), + av_get_media_type_string(type)); + return AVERROR(EINVAL); + } + /* Init the decoders, with or without reference counting */ + if ((ret = avcodec_open2(dec_ctx, dec, NULL)) < 0) { + SysPrintf(_("Failed to open %s codec\n"), + av_get_media_type_string(type)); + return ret; + } + *stream_idx = stream_index; } - audio_stream_index = ret; - c = inAudioFormat->streams[audio_stream_index]->codec; - av_opt_set_int(c, "refcounted_frames", 1, 0); + return 0; +} - c->sample_fmt = AV_SAMPLE_FMT_S16; - c->channels = 2; - c->sample_rate = 44100; +int decode_compressed_cdda_track(char* buf, char* src_filename, int* size) { + AVFormatContext *fmt_ctx = NULL; + AVCodecContext *audio_dec_ctx; + AVStream *audio_stream = NULL; + int audio_stream_idx = -1; + AVFrame *frame = NULL; + AVPacket pkt; + SwrContext *resample_context; + int ret = 0, got_frame; - /* open it */ - if (avcodec_open2(c, codec, NULL) < 0) { - SysMessage(_("Audio decoder opening failed. Compressed audio support not available.\n")); - avformat_close_input(&inAudioFormat); - return 3; // codec open failed + av_register_all(); + + if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) { + SysPrintf(_("Could not open source file %s\n"), src_filename); + return -1; } - //http://ffmpeg.org/doxygen/trunk/doc_2examples_2filtering_audio_8c-example.html#a80 - //http://blog.tomaka17.com/2012/03/libavcodeclibavformat-tutorial/ - do { - if ((moreFrames=av_read_frame(inAudioFormat, &avpkt)) < 0) {// returns non-zero on error - break; - } - if (avpkt.stream_index != audio_stream_index) { - continue; - } + if (avformat_find_stream_info(fmt_ctx, NULL) < 0) { + SysPrintf(_("Could not find stream information\n")); + ret = -1; + goto end; + } - if (!decoded_frame) { - if (!(decoded_frame = avcodec_alloc_frame())) { - SysMessage(_(" -> Error allocating audio frame buffer. This track will not be available.")); - avformat_close_input(&inAudioFormat); - av_free(&decoded_frame); - return 1; // error decoding frame - } - } else { - avcodec_get_frame_defaults(decoded_frame); - } - len = avcodec_decode_audio4(c, decoded_frame, &got_frame, &avpkt); - if (len > 0 && got_frame) { - /* if a frame has been decoded, output it */ - int data_size = av_samples_get_buffer_size(NULL, c->channels, - decoded_frame->nb_samples, - c->sample_fmt, 1); - //printf ("Channels %i/%i: %i -> %i/%i\n", len, data_size, decoded_frame->sample_rate, c->channels, c->sample_rate); - fwrite(decoded_frame->data[0], 1, data_size, outfile); - } - av_free_packet(&avpkt); - //avcodec_free_frame(&decoded_frame); - } while (moreFrames >= 0); // TODO: check for possible leaks + if (open_codec_context(&audio_stream_idx, fmt_ctx, AVMEDIA_TYPE_AUDIO) >= 0) { + audio_stream = fmt_ctx->streams[audio_stream_idx]; + audio_dec_ctx = audio_stream->codec; + } - // file will be closed later on, now just flush it - fflush(outfile); + if (!audio_stream) { + SysPrintf(_("Could not find audio stream in the input, aborting\n")); + ret = -1; + goto end; + } - avformat_close_input(&inAudioFormat); + // init and configure resampler + resample_context = swr_alloc(); + if (!resample_context) + { + SysPrintf(_("Could not allocate resample context")); + ret = -1; + goto end; + } + av_opt_set_int(resample_context, "in_channel_layout", audio_dec_ctx->channel_layout, 0); + av_opt_set_int(resample_context, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); + av_opt_set_int(resample_context, "in_sample_rate", audio_dec_ctx->sample_rate, 0); + av_opt_set_int(resample_context, "out_sample_rate", 44100, 0); + av_opt_set_sample_fmt(resample_context, "in_sample_fmt", audio_dec_ctx->sample_fmt, 0); + av_opt_set_sample_fmt(resample_context, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); + if (swr_init(resample_context) < 0) + { + SysPrintf(_("Could not open resample context")); + ret = -1; + goto end; + } - // TODO not sure if all resources are freed... - //avcodec_close(c); - //av_free(c); - //av_free(&decoded_frame); - return 0; + + frame = av_frame_alloc(); + if (!frame) { + SysPrintf(_("Could not allocate frame\n")); + ret = AVERROR(ENOMEM); + goto end; + } + + /* initialize packet, set data to NULL, let the demuxer fill it */ + av_init_packet(&pkt); + pkt.data = NULL; + pkt.size = 0; + + /* read frames from the file */ + while (av_read_frame(fmt_ctx, &pkt) >= 0) { + AVPacket orig_pkt = pkt; + do { + ret = decode_packet(&got_frame, pkt, audio_stream_idx, frame, audio_dec_ctx, buf+(*size), size, resample_context); + if (ret < 0) + break; + pkt.data += ret; + pkt.size -= ret; + } while (pkt.size > 0); + av_packet_unref(&orig_pkt); + } + + /* flush cached frames */ + pkt.data = NULL; + pkt.size = 0; + do { + decode_packet(&got_frame, pkt, audio_stream_idx, frame, audio_dec_ctx, buf+(*size), size, resample_context); + } while (got_frame); + +end: + swr_free(&resample_context); + avcodec_close(audio_dec_ctx); + avformat_close_input(&fmt_ctx); + av_frame_free(&frame); + return ret < 0; } #endif -static int do_decode_cdda(struct trackinfo* tri, u32 tracknumber) { +int do_decode_cdda(struct trackinfo* tri, u32 tracknumber) { #ifndef ENABLE_CCDDA - return 4; // support is not compiled in + return 0; // support is not compiled in #else tri->decoded_buffer = malloc(tri->len_decoded_buffer); - FILE* decoded_cdda = fmemopen(tri->decoded_buffer, tri->len_decoded_buffer, "wb"); + memset(tri->decoded_buffer,0,tri->len_decoded_buffer-1); - if (decoded_cdda == NULL || tri->decoded_buffer == NULL) { + if (tri->decoded_buffer == NULL) { SysMessage(_("Could not allocate memory to decode CDDA TRACK: %s\n"), tri->filepath); + fclose(tri->handle); // encoded file handle not needed anymore + tri->handle = fmemopen(NULL, 1, "rb"); // change handle to decoded one + tri->cddatype = BIN; + return 0; } fclose(tri->handle); // encoded file handle not needed anymore int ret; SysPrintf(_("Decoding audio tr#%u (%s)..."), tracknumber, tri->filepath); - // decode 2nd input param to 1st output param - if ((ret=decode_compressed_cdda_track(decoded_cdda, tri->filepath /*tri->handle*/, tri->cddatype)) == 0) { - int len1 = ftell(decoded_cdda); - if (len1 > tri->len_decoded_buffer) { + + int len=0; + + if ((ret=decode_compressed_cdda_track(tri->decoded_buffer, tri->filepath, &len)) == 0) { + if (len > tri->len_decoded_buffer) { SysPrintf(_("Buffer overflow...")); + SysPrintf(_("Actual %i vs. %i estimated\n"), len, tri->len_decoded_buffer); + len = tri->len_decoded_buffer; // we probably segfaulted already, oh well... } - //printf("actual %i vs. %i estimated", len1, tri->len_decoded_buffer); - fclose(decoded_cdda); // close wb file now and will be opened as rb - tri->handle = fmemopen(tri->decoded_buffer, len1, "rb"); // change handle to decoded one + + tri->handle = fmemopen(tri->decoded_buffer, len, "rb"); // change handle to decoded one SysPrintf(_("OK\n"), tri->filepath); } tri->cddatype = BIN; - return ret; + return len; #endif } // this function tries to get the .toc file of the given .bin // the necessary data is put into the ti (trackinformation)-array static int parsetoc(const char *isofile) { - char tocname[MAXPATHLEN]; + char tocname[MAXPATHLEN], filename[MAXPATHLEN], *ptr; FILE *fi; char linebuf[256], tmp[256], name[256]; char *token; @@ -375,6 +435,14 @@ static int parsetoc(const char *isofile) { } } + strcpy(filename, tocname); + if ((ptr = strrchr(filename, '/')) == NULL) + ptr = strrchr(filename, '\\'); + if (ptr == NULL) + *ptr = 0; + else + *(ptr + 1) = 0; + memset(&ti, 0, sizeof(ti)); cddaBigEndian = TRUE; // cdrdao uses big-endian for CD Audio @@ -425,6 +493,8 @@ static int parsetoc(const char *isofile) { else { sscanf(linebuf, "DATAFILE \"%[^\"]\" %8s", name, time); tok2msf((char *)&time, (char *)&ti[numtracks].length); + strcat(filename, name); + ti[numtracks].handle = fopen(filename, "rb"); } } else if (!strcmp(token, "FILE")) { @@ -464,6 +534,8 @@ static int parsetoc(const char *isofile) { } } } + if (numtracks > 0) + cdHandle = fopen(filename, "rb"); fclose(fi); @@ -471,160 +543,7 @@ static int parsetoc(const char *isofile) { } -int(*cdimg_read_func_archive)(FILE *f, unsigned int base, void *dest, int sector) = NULL; -#ifdef HAVE_LIBARCHIVE -#include <archive.h> -#include <archive_entry.h> - -struct archive *a = NULL; -u32 len_uncompressed_buffer = 0; -void *cdimage_buffer_mem = NULL; -FILE* cdimage_buffer = NULL; //cdHandle to store file - -int aropen(FILE* fparchive, const char* _fn) { - s32 r; - u64 length = 0, length_peek; - boolean use_temp_file = FALSE; // TODO make a config param - static struct archive_entry *ae = NULL; - struct archive_entry *ae_peek; - - if (a == NULL && cdimage_buffer == NULL) { - // We open file twice. First to peek sizes. This nastyness due used interface. - a = archive_read_new(); - r = archive_read_support_compression_all(a); - r = archive_read_support_format_all(a); - //r = archive_read_support_filter_all(a); - //r = archive_read_support_format_raw(a); - //r = archive_read_open_FILE(a, archive); - archive_read_open_filename(a, _fn, 75 * CD_FRAMESIZE_RAW); - if (r != ARCHIVE_OK) { - SysPrintf("Archive open failed (%i).\n", r); - archive_read_free(a); - a = NULL; - return -1; - } - // Get the biggest file in archive - while ((r = archive_read_next_header(a, &ae_peek)) == ARCHIVE_OK) { - length_peek = archive_entry_size(ae_peek); - //printf("Entry canditate %s %i\n", archive_entry_pathname(ae_peek), length_peek); - length = MAX(length_peek, length); - ae = (ae == NULL ? ae_peek : ae); - } - archive_read_free(a); - if (ae == NULL) { - SysPrintf("Archive entry read failed (%i).\n", r); - a = NULL; - return -1; - } - //Now really open the file - a = archive_read_new(); - r = archive_read_support_compression_all(a); - r = archive_read_support_format_all(a); - archive_read_open_filename(a, _fn, 75 * CD_FRAMESIZE_RAW); - while ((r = archive_read_next_header(a, &ae)) == ARCHIVE_OK) { - length_peek = archive_entry_size(ae); - if (length_peek == length) { - //ae = ae_peek; - SysPrintf(" -- Selected entry %s %i", archive_entry_pathname(ae), length); - break; - } - } - - len_uncompressed_buffer = length ? length : 700 * 1024 * 1024; - } - - if (use_temp_file && (cdimage_buffer == NULL || cdHandle != cdimage_buffer)) { - cdimage_buffer = fopen("/tmp/pcsxr.tmp.bin", "w+b"); - } - else if (!use_temp_file && (cdimage_buffer == NULL || cdHandle != cdimage_buffer)) { - if (cdimage_buffer_mem == NULL && ((cdimage_buffer_mem = malloc(len_uncompressed_buffer)) == NULL)) { - SysMessage("Could not reserve enough memory for full image buffer.\n"); - exit(3); - } - //printf("Memory ok2 %u %p\n", len_uncompressed_buffer, cdimage_buffer_mem); - cdimage_buffer = fmemopen(cdimage_buffer_mem, len_uncompressed_buffer, "w+b"); - } - else { - - } - - if (cdHandle != cdimage_buffer) { - fclose(cdHandle); // opened thru archive so this not needed anymore - cdHandle = cdimage_buffer; - } - - return 0; -} - -static int cdread_archive(FILE *f, unsigned int base, void *dest, int sector) -{ - s32 r; - size_t size; - size_t readsize; - static off_t offset = 0; // w/o read always or static/ftell - const void *buff; - - // If not pointing to archive file but CDDA file or some other track - if (f != cdHandle) { - return cdimg_read_func_archive(f, base, dest, sector); - } - - // Jump if already completely read - if (a != NULL /*&& (ecm_file_detected || sector*CD_FRAMESIZE_RAW <= len_uncompressed_buffer)*/) { - readsize = (sector + 1) * CD_FRAMESIZE_RAW; - for (fseek(cdimage_buffer, offset, SEEK_SET); offset < readsize;) { - r = archive_read_data_block(a, &buff, &size, &offset); - offset += size; - SysPrintf("ReadArchive seek:%u(%u) cur:%u(%u)\r", sector, readsize / 1024, offset / CD_FRAMESIZE_RAW, offset / 1024); - fwrite(buff, size, 1, cdimage_buffer); - if (r != ARCHIVE_OK) { - //SysPrintf("End of archive.\n"); - archive_read_free(a); - a = NULL; - readsize = offset; - fflush(cdimage_buffer); - fseek(cdimage_buffer, 0, SEEK_SET); - } - } - } - else { - //SysPrintf("ReadSectorArchSector: %u(%u)\n", sector, sector*CD_FRAMESIZE_RAW); - } - - // TODO what causes req sector to be greater than CD size? - r = cdimg_read_func_archive(cdimage_buffer, base, dest, sector); - return r; -} -int handlearchive(const char *isoname, s32* accurate_length) { - u32 read_size = accurate_length ? MSF2SECT(70, 70, 16) : MSF2SECT(0, 0, 16); - int ret = -1; - if ((ret = aropen(cdHandle, isoname)) == 0) { - cdimg_read_func = cdread_archive; - SysPrintf("[+archive]"); - if (!ecm_file_detected) { -#ifndef ENABLE_ECM_FULL - //Detect ECM inside archive - cdimg_read_func_archive = cdread_normal; - cdread_archive(cdHandle, 0, cdbuffer, read_size); - if (handleecm("test.ecm", cdimage_buffer, accurate_length) != -1) { - cdimg_read_func_archive = cdread_ecm_decode; - cdimg_read_func = cdread_archive; - SysPrintf("[+ecm]"); - } -#endif - } - else { - SysPrintf("[+ecm]"); - } - } - return ret; -} -#else -int aropen(FILE* fparchive, const char* _fn) { return -1; } -static int cdread_archive(FILE *f, unsigned int base, void *dest, int sector) { return -1; } -int handlearchive(const char *isoname, s32* accurate_length) { return -1; } -#endif - +int handlearchive(const char *isoname, s32* accurate_length); // this function tries to get the .cue file of the given .bin // the necessary data is put into the ti (trackinformation)-array static int parsecue(const char *isofile) { @@ -715,9 +634,8 @@ static int parsecue(const char *isofile) { // Send to decoder if not lazy decoding if (!lazy_decode) { - do_decode_cdda(&(ti[numtracks]), numtracks); - fseek(ti[numtracks].handle, 0, SEEK_END); - file_len = ftell(ti[numtracks].handle) / CD_FRAMESIZE_RAW; // accurate length + SysPrintf("\n"); + file_len = do_decode_cdda(&(ti[numtracks]), numtracks) / CD_FRAMESIZE_RAW; } } } @@ -1301,7 +1219,7 @@ static int cdread_sub_mixed(FILE *f, unsigned int base, void *dest, int sector) return ret; } -static int uncompress2(void *out, unsigned long *out_size, void *in, unsigned long in_size) +static int uncompress2_internal(void *out, unsigned long *out_size, void *in, unsigned long in_size) { static z_stream z; int ret = 0; @@ -1380,7 +1298,7 @@ static int cdread_compressed(FILE *f, unsigned int base, void *dest, int sector) if (is_compressed) { cdbuffer_size_expect = sizeof(compr_img->buff_raw[0]) << compr_img->block_shift; cdbuffer_size = cdbuffer_size_expect; - ret = uncompress2(compr_img->buff_raw[0], &cdbuffer_size, compr_img->buff_compressed, size); + ret = uncompress2_internal(compr_img->buff_raw[0], &cdbuffer_size, compr_img->buff_compressed, size); if (ret != 0) { SysPrintf("uncompress failed with %d for block %d, sector %d\n", ret, block, sector); @@ -1644,6 +1562,157 @@ int handleecm(const char *isoname, FILE* cdh, s32* accurate_length) { return -1; } +int (*cdimg_read_func_archive)(FILE *f, unsigned int base, void *dest, int sector) = NULL; +#ifdef HAVE_LIBARCHIVE +#include <archive.h> +#include <archive_entry.h> + +struct archive *a = NULL; +u32 len_uncompressed_buffer = 0; +void *cdimage_buffer_mem = NULL; +FILE* cdimage_buffer = NULL; //cdHandle to store file + +int aropen(FILE* fparchive, const char* _fn) { + s32 r; + u64 length = 0, length_peek; + boolean use_temp_file = FALSE; // TODO make a config param + static struct archive_entry *ae=NULL; + struct archive_entry *ae_peek; + + if (a == NULL && cdimage_buffer == NULL) { + // We open file twice. First to peek sizes. This nastyness due used interface. + a = archive_read_new(); +// r = archive_read_support_filter_all(a); + r = archive_read_support_format_all(a); + //r = archive_read_support_filter_all(a); + //r = archive_read_support_format_raw(a); + //r = archive_read_open_FILE(a, archive); + archive_read_open_filename(a, _fn, 75*CD_FRAMESIZE_RAW); + if (r != ARCHIVE_OK) { + SysPrintf("Archive open failed (%i).\n", r); + archive_read_free(a); + a = NULL; + return -1; + } + // Get the biggest file in archive + while ((r=archive_read_next_header(a, &ae_peek)) == ARCHIVE_OK) { + length_peek = archive_entry_size(ae_peek); + //printf("Entry canditate %s %i\n", archive_entry_pathname(ae_peek), length_peek); + length = MAX(length_peek, length); + ae = (ae == NULL ? ae_peek : ae); + } + archive_read_free(a); + if (ae == NULL) { + SysPrintf("Archive entry read failed (%i).\n", r); + a = NULL; + return -1; + } + //Now really open the file + a = archive_read_new(); +// r = archive_read_support_compression_all(a); + r = archive_read_support_format_all(a); + archive_read_open_filename(a, _fn, 75*CD_FRAMESIZE_RAW); + while ((r=archive_read_next_header(a, &ae)) == ARCHIVE_OK) { + length_peek = archive_entry_size(ae); + if (length_peek == length) { + //ae = ae_peek; + SysPrintf(" -- Selected entry %s %i", archive_entry_pathname(ae), length); + break; + } + } + + len_uncompressed_buffer = length?length:700*1024*1024; + } + + if (use_temp_file && (cdimage_buffer == NULL || cdHandle != cdimage_buffer)) { + cdimage_buffer = fopen("/tmp/pcsxr.tmp.bin", "w+b"); + } + else if (!use_temp_file && (cdimage_buffer == NULL || cdHandle != cdimage_buffer)) { + if (cdimage_buffer_mem == NULL && ((cdimage_buffer_mem = malloc(len_uncompressed_buffer)) == NULL)) { + SysMessage("Could not reserve enough memory for full image buffer.\n"); + exit(3); + } + //printf("Memory ok2 %u %p\n", len_uncompressed_buffer, cdimage_buffer_mem); + cdimage_buffer = fmemopen(cdimage_buffer_mem, len_uncompressed_buffer, "w+b"); + } else { + + } + + if (cdHandle != cdimage_buffer) { + fclose(cdHandle); // opened thru archive so this not needed anymore + cdHandle = cdimage_buffer; + } + + return 0; +} + +static int cdread_archive(FILE *f, unsigned int base, void *dest, int sector) +{ + s32 r; + size_t size; + size_t readsize; + static off_t offset = 0; // w/o read always or static/ftell + const void *buff; + + // If not pointing to archive file but CDDA file or some other track + if(f != cdHandle) { + return cdimg_read_func_archive(f, base, dest, sector); + } + + // Jump if already completely read + if (a != NULL /*&& (ecm_file_detected || sector*CD_FRAMESIZE_RAW <= len_uncompressed_buffer)*/) { + readsize = (sector+1) * CD_FRAMESIZE_RAW; + for (fseek(cdimage_buffer, offset, SEEK_SET); offset < readsize;) { + r = archive_read_data_block(a, &buff, &size, &offset); + offset += size; + SysPrintf("ReadArchive seek:%u(%u) cur:%u(%u)\r", sector, readsize/1024, offset/CD_FRAMESIZE_RAW, offset/1024); + fwrite(buff, size, 1, cdimage_buffer); + if (r != ARCHIVE_OK) { + //SysPrintf("End of archive.\n"); + archive_read_free(a); + a = NULL; + readsize = offset; + fflush(cdimage_buffer); + fseek(cdimage_buffer, 0, SEEK_SET); + } + } + } else { + //SysPrintf("ReadSectorArchSector: %u(%u)\n", sector, sector*CD_FRAMESIZE_RAW); + } + + // TODO what causes req sector to be greater than CD size? + r = cdimg_read_func_archive(cdimage_buffer, base, dest, sector); + return r; +} +int handlearchive(const char *isoname, s32* accurate_length) { + u32 read_size = accurate_length?MSF2SECT(70,70,16) : MSF2SECT(0,0,16); + int ret = -1; + if ((ret=aropen(cdHandle, isoname)) == 0) { + cdimg_read_func = cdread_archive; + SysPrintf("[+archive]"); + if (!ecm_file_detected) { +#ifndef ENABLE_ECM_FULL + //Detect ECM inside archive + cdimg_read_func_archive = cdread_normal; + cdread_archive(cdHandle, 0, cdbuffer, read_size); + if (handleecm("test.ecm", cdimage_buffer, accurate_length) != -1) { + cdimg_read_func_archive = cdread_ecm_decode; + cdimg_read_func = cdread_archive; + SysPrintf("[+ecm]"); + } +#endif + } else { + SysPrintf("[+ecm]"); + } + } + return ret; +} +#else +int aropen(FILE* fparchive, const char* _fn) {return -1;} +static int cdread_archive(FILE *f, unsigned int base, void *dest, int sector) {return -1;} +int handlearchive(const char *isoname, s32* accurate_length) {return -1;} +#endif + static unsigned char * CALLBACK ISOgetBuffer_compr(void) { return compr_img->buff_raw[compr_img->sector_in_blk] + 12; } diff --git a/pixmaps/Makefile.am b/pixmaps/Makefile.am deleted file mode 100644 index e77fda4e..00000000 --- a/pixmaps/Makefile.am +++ /dev/null @@ -1,7 +0,0 @@ -pixmapdir = "$(datadir)/pcsxr" -pixmap_DATA = pcsxr.png iso-open.png iso-reopen.png cd.png cdr.png gpu.png memcard.png pad.png play.png sio1.png spu.png - -icondir = "$(datadir)/pixmaps" -icon_DATA = pcsxr-icon.png - -EXTRA_DIST = pcsxr.png iso-open.png iso-reopen.png cd.png cdr.png gpu.png memcard.png pad.png play.png sio1.png spu.png pcsxr-icon.png diff --git a/pixmaps/cd.png b/pixmaps/cd.png Binary files differdeleted file mode 100755 index 1f07c0e7..00000000 --- a/pixmaps/cd.png +++ /dev/null diff --git a/pixmaps/gpu.png b/pixmaps/gpu.png Binary files differdeleted file mode 100755 index e49595f3..00000000 --- a/pixmaps/gpu.png +++ /dev/null diff --git a/pixmaps/iso-open.png b/pixmaps/iso-open.png Binary files differdeleted file mode 100755 index 3daaea2a..00000000 --- a/pixmaps/iso-open.png +++ /dev/null diff --git a/pixmaps/iso-reopen.png b/pixmaps/iso-reopen.png Binary files differdeleted file mode 100755 index 3294074a..00000000 --- a/pixmaps/iso-reopen.png +++ /dev/null diff --git a/pixmaps/pad.png b/pixmaps/pad.png Binary files differdeleted file mode 100755 index 186e7be8..00000000 --- a/pixmaps/pad.png +++ /dev/null diff --git a/pixmaps/pcsxr-icon.png b/pixmaps/pcsxr-icon.png Binary files differdeleted file mode 100755 index 2cc9839f..00000000 --- a/pixmaps/pcsxr-icon.png +++ /dev/null diff --git a/pixmaps/pcsxr.png b/pixmaps/pcsxr.png Binary files differdeleted file mode 100755 index 8dc59052..00000000 --- a/pixmaps/pcsxr.png +++ /dev/null diff --git a/pixmaps/sio1.png b/pixmaps/sio1.png Binary files differdeleted file mode 100644 index e9340ade..00000000 --- a/pixmaps/sio1.png +++ /dev/null diff --git a/pixmaps/spu.png b/pixmaps/spu.png Binary files differdeleted file mode 100755 index 53c9ac51..00000000 --- a/pixmaps/spu.png +++ /dev/null diff --git a/plugins/bladesio1/Makefile.am b/plugins/bladesio1/Makefile.am index 9e0b6ab5..badd57e5 100644 --- a/plugins/bladesio1/Makefile.am +++ b/plugins/bladesio1/Makefile.am @@ -12,9 +12,32 @@ AM_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ -I$(top_srcdir)/libpcsxcore -I../../include bin_PROGRAMS = cfgBladeSio1 -cfgBladeSio1_SOURCES = gui.c sio1.h +cfgBladeSio1_SOURCES = gui.c sio1.h GtkResources.c GtkResources.h cfgBladeSio1_LDADD = $(GTK3_LIBS) -glade_DATA = sio1.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/bladesio1"> + <file>sio1.ui</file> + </gresource> +</gresources> +endef + +bladesio1.gresource.xml: + $(file >$@,$(gresource_xml)) +bladesio1_gresource: bladesio1.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/$<) +GtkResources.c: bladesio1.gresource.xml $(bladesio1_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name bladesio1 $< +GtkResources.h: bladesio1.gresource.xml $(bladesio1_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-header --c-name bladesio1 $< + + +#glade_DATA = sio1.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = bladesio1.gresource.xml GtkResources.c GtkResources.h + diff --git a/plugins/bladesio1/gui.c b/plugins/bladesio1/gui.c index 99979f15..37ffb83f 100644 --- a/plugins/bladesio1/gui.c +++ b/plugins/bladesio1/gui.c @@ -103,7 +103,7 @@ void configure() { builder = gtk_builder_new(); - if(!gtk_builder_add_from_file(builder, DATADIR "sio1.ui", NULL)) + if(!gtk_builder_add_from_resource(builder, "/org/pcsxr/bladesio1/sio1.ui", NULL)) g_warning("We could not load the interface!"); settingsRead(); @@ -166,6 +166,7 @@ void about() { GtkWidget *widget; widget = gtk_about_dialog_new(); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(widget), "Link Cable"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.0"); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); diff --git a/plugins/dfcdrom/Makefile.am b/plugins/dfcdrom/Makefile.am index 6bc42c35..1f87998b 100644 --- a/plugins/dfcdrom/Makefile.am +++ b/plugins/dfcdrom/Makefile.am @@ -27,9 +27,32 @@ AM_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ -I$(top_srcdir)/libpcsxcore -I../../include bin_PROGRAMS = cfgDFCdrom -cfgDFCdrom_SOURCES = cdrcfg-0.1df/main.c +cfgDFCdrom_SOURCES = cdrcfg-0.1df/main.c GtkResources.c GtkResources.h cfgDFCdrom_LDADD = $(GTK3_LIBS) -glade_DATA = cdrcfg-0.1df/dfcdrom.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/dfcdrom"> + <file>dfcdrom.ui</file> + </gresource> +</gresources> +endef + +dfcdrom.gresource.xml: + $(file >$@,$(gresource_xml)) +dfcdrom_gresource: dfcdrom.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/cdrcfg-0.1df --generate-dependencies $(srcdir)/$<) +GtkResources.c: dfcdrom.gresource.xml $(dfcdrom_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/cdrcfg-0.1df --generate-source --c-name dfcdrom $< +GtkResources.h: dfcdrom.gresource.xml $(dfcdrom_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/cdrcfg-0.1df --generate-header --c-name dfcdrom $< + + +#glade_DATA = cdrcfg-0.1df/dfcdrom.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = dfcdrom.gresource.xml GtkResources.c GtkResources.h + diff --git a/plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.ui b/plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.ui index c282b2a1..988dee16 100644 --- a/plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.ui +++ b/plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.ui @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> <object class="GtkAdjustment" id="adjustmentCacheSize"> <property name="lower">32</property> <property name="upper">2048</property> @@ -13,6 +14,76 @@ <property name="step_increment">1</property> <property name="page_increment">4</property> </object> + <object class="GtkListStore" id="liststoreReadMode"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Normal (No Cache)</col> + </row> + <row> + <col id="0" translatable="yes">Threaded - Faster (With Cache)</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststoreSpindownTime"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Default</col> + </row> + <row> + <col id="0" translatable="yes">125ms</col> + </row> + <row> + <col id="0" translatable="yes">250ms</col> + </row> + <row> + <col id="0" translatable="yes">500ms</col> + </row> + <row> + <col id="0" translatable="yes">1s</col> + </row> + <row> + <col id="0" translatable="yes">2s</col> + </row> + <row> + <col id="0" translatable="yes">4s</col> + </row> + <row> + <col id="0" translatable="yes">8s</col> + </row> + <row> + <col id="0" translatable="yes">16s</col> + </row> + <row> + <col id="0" translatable="yes">32s</col> + </row> + <row> + <col id="0" translatable="yes">1min</col> + </row> + <row> + <col id="0" translatable="yes">2min</col> + </row> + <row> + <col id="0" translatable="yes">4min</col> + </row> + <row> + <col id="0" translatable="yes">8min</col> + </row> + <row> + <col id="0" translatable="yes">16min</col> + </row> + <row> + <col id="0" translatable="yes">32min</col> + </row> + </data> + </object> <object class="GtkDialog" id="CfgWnd"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -58,16 +129,17 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> <object class="GtkFrame" id="frame1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkHBox" id="hbox5"> + <object class="GtkBox" id="hbox5"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -104,11 +176,12 @@ <property name="can_focus">False</property> <property name="label_xalign">0</property> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkBox" id="vbox2"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -117,8 +190,8 @@ <object class="GtkLabel" id="readmode_label"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Select read mode:</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -152,7 +225,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox2"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -161,8 +234,8 @@ <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Cache Size (Def. 64):</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -195,7 +268,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkBox" id="hbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -204,8 +277,8 @@ <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Spindown Time:</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -240,7 +313,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkBox" id="hbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -249,8 +322,8 @@ <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Cdrom Speed (Def. 0 = MAX):</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -321,74 +394,4 @@ <action-widget response="-6">cfg_closebutton</action-widget> </action-widgets> </object> - <object class="GtkListStore" id="liststoreReadMode"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Normal (No Cache)</col> - </row> - <row> - <col id="0" translatable="yes">Threaded - Faster (With Cache)</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststoreSpindownTime"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Default</col> - </row> - <row> - <col id="0" translatable="yes">125ms</col> - </row> - <row> - <col id="0" translatable="yes">250ms</col> - </row> - <row> - <col id="0" translatable="yes">500ms</col> - </row> - <row> - <col id="0" translatable="yes">1s</col> - </row> - <row> - <col id="0" translatable="yes">2s</col> - </row> - <row> - <col id="0" translatable="yes">4s</col> - </row> - <row> - <col id="0" translatable="yes">8s</col> - </row> - <row> - <col id="0" translatable="yes">16s</col> - </row> - <row> - <col id="0" translatable="yes">32s</col> - </row> - <row> - <col id="0" translatable="yes">1min</col> - </row> - <row> - <col id="0" translatable="yes">2min</col> - </row> - <row> - <col id="0" translatable="yes">4min</col> - </row> - <row> - <col id="0" translatable="yes">8min</col> - </row> - <row> - <col id="0" translatable="yes">16min</col> - </row> - <row> - <col id="0" translatable="yes">32min</col> - </row> - </data> - </object> </interface> diff --git a/plugins/dfcdrom/cdrcfg-0.1df/main.c b/plugins/dfcdrom/cdrcfg-0.1df/main.c index cc55aa36..a8aa4b67 100755 --- a/plugins/dfcdrom/cdrcfg-0.1df/main.c +++ b/plugins/dfcdrom/cdrcfg-0.1df/main.c @@ -208,7 +208,7 @@ long CDRconfigure() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, DATADIR "dfcdrom.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/dfcdrom/dfcdrom.ui", NULL)) { g_warning("We could not load the interface!"); return 0; } @@ -256,6 +256,7 @@ void CDRabout() { "Wei Mingzhi <whistler_wmz@users.sf.net>", NULL}; widget = gtk_about_dialog_new(); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(widget), "CD-ROM Device Reader"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.0"); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); @@ -276,13 +277,13 @@ int main(int argc, char *argv[]) { gtk_init(&argc, &argv); if (argc < 2) { - printf ("Usage: cfgBladeSio1 {about | configure}\n"); + printf ("Usage: cfgDFCdrom {about | configure}\n"); return 0; } if (strcmp(argv[1], "configure") != 0 && strcmp(argv[1], "about") != 0) { - printf ("Usage: cfgBladeSio1 {about | configure}\n"); + printf ("Usage: cfgDFCdrom {about | configure}\n"); return 0; } diff --git a/plugins/dfinput/Makefile.am b/plugins/dfinput/Makefile.am index 70f86fd1..458259c5 100644 --- a/plugins/dfinput/Makefile.am +++ b/plugins/dfinput/Makefile.am @@ -13,9 +13,31 @@ AM_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ -I../../include -I$(top_srcdir)/libpcsxcore $(SDL2_CFLAGS) $(SDL_CFLAGS) bin_PROGRAMS = cfgDFInput -cfgDFInput_SOURCES = cfg-gtk.c pad.h +cfgDFInput_SOURCES = cfg-gtk.c pad.h GtkResources.c GtkResources.h cfgDFInput_LDADD = $(GTK3_LIBS) $(SDL2_LIBS) $(SDL_LIBS) -lX11 -glade_DATA = dfinput.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/dfinput"> + <file>dfinput.ui</file> + </gresource> +</gresources> +endef + +dfinput.gresource.xml: + $(file >$@,$(gresource_xml)) +dfinput_gresource: dfinput.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/$<) +GtkResources.c: dfinput.gresource.xml $(dfinput_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name dfinput $< +GtkResources.h: dfinput.gresource.xml $(dfinput_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-header --c-name dfinput $< + + +#glade_DATA = dfinput.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = dfinput.gresource.xml GtkResources.c GtkResources.h diff --git a/plugins/dfinput/cfg-gtk.c b/plugins/dfinput/cfg-gtk.c index 5f26040f..bcc733d1 100755 --- a/plugins/dfinput/cfg-gtk.c +++ b/plugins/dfinput/cfg-gtk.c @@ -246,7 +246,6 @@ static void UpdateKeyList() { gtk_tree_view_set_model(GTK_TREE_VIEW(widget), GTK_TREE_MODEL(store)); g_object_unref(G_OBJECT(store)); - gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(widget), TRUE); gtk_widget_show(widget); } } @@ -327,6 +326,7 @@ static void OnDeviceChanged(GtkWidget *widget, gpointer user_data) { static void OnTypeChanged(GtkWidget *widget, gpointer user_data) { uint n = GPOINTER_TO_UINT(user_data), current = gtk_combo_box_get_active(GTK_COMBO_BOX(widget)); + char checkbtn[9]; int padTypeList[] = { PSE_PAD_TYPE_STANDARD, @@ -336,6 +336,10 @@ static void OnTypeChanged(GtkWidget *widget, gpointer user_data) { g.cfg.PadDef[n].Type = padTypeList[current]; + snprintf(checkbtn, sizeof(checkbtn), "checkpv%d", n+1); + gtk_widget_set_sensitive(GTK_WIDGET( + gtk_builder_get_object(xml, checkbtn)), (g.cfg.PadDef[n].Type == PSE_PAD_TYPE_ANALOGPAD)); + UpdateKeyList(); } @@ -351,6 +355,14 @@ static void OnVisualVibration2Toggled(GtkWidget *widget, gpointer user_data) { g.cfg.PadDef[1].VisualVibration = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); } +static void OnPhysicalVibration1Toggled(GtkWidget *widget, gpointer user_data) { + g.cfg.PadDef[0].PhysicalVibration = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); +} + +static void OnPhysicalVibration2Toggled(GtkWidget *widget, gpointer user_data) { + g.cfg.PadDef[1].PhysicalVibration = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); +} + static void OnHideCursorToggled(GtkWidget *widget, gpointer user_data) { (void)user_data; // unused g.cfg.HideCursor = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)); @@ -612,9 +624,9 @@ static void PopulateDevList() { for (j = 0; j < n; j++) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Joystick *joystick = SDL_JoystickOpen(j); - sprintf(buf, "%d: %s", j + 1, SDL_JoystickName(joystick)); + snprintf(buf, sizeof(buf), "%d: %s", j + 1, SDL_JoystickName(joystick)); #else - sprintf(buf, "%d: %s", j + 1, SDL_JoystickName(j)); + snprintf(buf, sizeof(buf), "%d: %s", j + 1, SDL_JoystickName(j)); #endif gtk_list_store_append(store, &iter); gtk_list_store_set(store, &iter, 0, buf, -1); @@ -655,7 +667,7 @@ long PADconfigure() { xml = gtk_builder_new(); - if (!gtk_builder_add_from_file(xml, DATADIR "dfinput.ui", NULL)) { + if (!gtk_builder_add_from_resource(xml, "/org/pcsxr/dfinput/dfinput.ui", NULL)) { g_warning("We could not load the interface!"); return -1; } @@ -748,12 +760,14 @@ long PADconfigure() { widget = GTK_WIDGET(gtk_builder_get_object(xml, "combotype1")); gtk_combo_box_set_active(GTK_COMBO_BOX(widget), padTypeList[g.cfg.PadDef[0].Type]); + OnTypeChanged(widget, GUINT_TO_POINTER(0u)); g_signal_connect_data(G_OBJECT(widget), "changed", G_CALLBACK(OnTypeChanged), GUINT_TO_POINTER(0u), NULL, G_CONNECT_AFTER); widget = GTK_WIDGET(gtk_builder_get_object(xml, "combotype2")); gtk_combo_box_set_active(GTK_COMBO_BOX(widget), padTypeList[g.cfg.PadDef[1].Type]); + OnTypeChanged(widget, GUINT_TO_POINTER(1u)); g_signal_connect_data(G_OBJECT(widget), "changed", G_CALLBACK(OnTypeChanged), GUINT_TO_POINTER(1u), NULL, G_CONNECT_AFTER); @@ -767,6 +781,16 @@ long PADconfigure() { g_signal_connect_data(G_OBJECT(widget), "toggled", G_CALLBACK(OnVisualVibration2Toggled), NULL, NULL, G_CONNECT_AFTER); + widget = GTK_WIDGET(gtk_builder_get_object(xml, "checkpv1")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), g.cfg.PadDef[0].PhysicalVibration); + g_signal_connect_data(G_OBJECT(widget), "toggled", + G_CALLBACK(OnPhysicalVibration1Toggled), NULL, NULL, G_CONNECT_AFTER); + + widget = GTK_WIDGET(gtk_builder_get_object(xml, "checkpv2")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), g.cfg.PadDef[1].PhysicalVibration); + g_signal_connect_data(G_OBJECT(widget), "toggled", + G_CALLBACK(OnPhysicalVibration2Toggled), NULL, NULL, G_CONNECT_AFTER); + widget = GTK_WIDGET(gtk_builder_get_object(xml, widgetname_change[1])); gtk_widget_set_sensitive(widget, FALSE); g_signal_connect_data(G_OBJECT(widget), "clicked", @@ -837,6 +861,7 @@ void PADabout() { GtkWidget *widget; widget = gtk_about_dialog_new(); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(widget), "Gamepad/Keyboard Input"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.2"); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); diff --git a/plugins/dfinput/cfg.c b/plugins/dfinput/cfg.c index f1d16673..622c3c34 100755 --- a/plugins/dfinput/cfg.c +++ b/plugins/dfinput/cfg.c @@ -37,6 +37,8 @@ static void SetDefaultConfig() { g.cfg.PadDef[0].VisualVibration = 0; g.cfg.PadDef[1].VisualVibration = 0; + g.cfg.PadDef[0].PhysicalVibration = 1; + g.cfg.PadDef[1].PhysicalVibration = 1; // Pad1 keyboard g.cfg.PadDef[0].KeyDef[DKEY_SELECT].Key = XK_c; @@ -164,6 +166,8 @@ void LoadPADConfig() { g.cfg.PadDef[current].Type = atoi(&buf[5]); } else if (strncmp(buf, "VisualVibration=", 16) == 0) { g.cfg.PadDef[current].VisualVibration = atoi(&buf[16]); + } else if (strncmp(buf, "PhysicalVibration=", 18) == 0) { + g.cfg.PadDef[current].PhysicalVibration = atoi(&buf[18]); } else if (strncmp(buf, "EmuDev=", 7) == 0) { g.cfg.E.DevNum = atoi(&buf[5]); } else if (strncmp(buf, "EMU_FASTFORWARDS=", 17) == 0) { @@ -362,6 +366,7 @@ void SavePADConfig() { fprintf(fp, "DevNum=%d\n", g.cfg.PadDef[i].DevNum); fprintf(fp, "Type=%d\n", g.cfg.PadDef[i].Type); fprintf(fp, "VisualVibration=%d\n", g.cfg.PadDef[i].VisualVibration); + fprintf(fp, "PhysicalVibration=%d\n", g.cfg.PadDef[i].PhysicalVibration); fprintf(fp, "Select=%d,%d,%d\n", g.cfg.PadDef[i].KeyDef[DKEY_SELECT].Key, g.cfg.PadDef[i].KeyDef[DKEY_SELECT].JoyEvType, g.cfg.PadDef[i].KeyDef[DKEY_SELECT].J.d); diff --git a/plugins/dfinput/dfinput.ui b/plugins/dfinput/dfinput.ui index 17dfbdb9..2d291e22 100644 --- a/plugins/dfinput/dfinput.ui +++ b/plugins/dfinput/dfinput.ui @@ -1,23 +1,58 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.20.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.14"/> + <object class="GtkListStore" id="liststore1"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Digital Pad</col> + </row> + <row> + <col id="0" translatable="yes">Analog Pad</col> + </row> + <row> + <col id="0" translatable="yes">Mouse</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore2"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Digital Pad</col> + </row> + <row> + <col id="0" translatable="yes">Analog Pad</col> + </row> + <row> + <col id="0" translatable="yes">Mouse</col> + </row> + </data> + </object> <object class="GtkWindow" id="CfgWnd"> <property name="can_focus">False</property> <child> - <object class="GtkTable" id="table1"> + <object class="GtkGrid" id="table1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> - <property name="n_rows">2</property> <child> <object class="GtkNotebook" id="notebook1"> <property name="visible">True</property> <property name="can_focus">True</property> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">2</property> <child> <object class="GtkGrid" id="grid1"> @@ -29,14 +64,11 @@ <object class="GtkLabel" id="label10"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Device:</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -47,22 +79,17 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Type:</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -80,8 +107,6 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> @@ -92,13 +117,37 @@ </packing> </child> <child> - <object class="GtkCheckButton" id="checkvv1"> - <property name="label" translatable="yes">Visual vibration</property> + <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="xalign">0</property> - <property name="draw_indicator">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkCheckButton" id="checkvv1"> + <property name="label" translatable="yes">Visual vibration</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkpv1"> + <property name="label" translatable="yes">Physical vibration</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> @@ -113,7 +162,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="border_width">5</property> - <property name="window_placement_set">True</property> <property name="shadow_type">etched-in</property> <child> <object class="GtkTreeView" id="treeview1"> @@ -132,7 +180,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox2"> + <object class="GtkButtonBox" id="hbuttonbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">20</property> @@ -143,7 +191,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -151,7 +199,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-edit</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -186,7 +234,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox2"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -194,7 +242,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-undo</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -243,10 +291,11 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkBox" id="vbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">2</property> <child> <object class="GtkGrid" id="grid2"> @@ -258,14 +307,11 @@ <object class="GtkLabel" id="label11"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Device:</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -276,22 +322,17 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Type:</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -309,8 +350,6 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">1</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> @@ -321,13 +360,37 @@ </packing> </child> <child> - <object class="GtkCheckButton" id="checkvv2"> - <property name="label" translatable="yes">Visual vibration</property> + <object class="GtkBox"> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">False</property> - <property name="xalign">0</property> - <property name="draw_indicator">True</property> + <property name="can_focus">False</property> + <child> + <object class="GtkCheckButton" id="checkvv2"> + <property name="label" translatable="yes">Visual vibration</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkCheckButton" id="checkpv2"> + <property name="label" translatable="yes">Physical vibration</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="draw_indicator">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> </object> <packing> <property name="expand">False</property> @@ -342,7 +405,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="border_width">5</property> - <property name="window_placement_set">True</property> <property name="shadow_type">etched-in</property> <child> <object class="GtkTreeView" id="treeview2"> @@ -361,7 +423,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox3"> + <object class="GtkButtonBox" id="hbuttonbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">20</property> @@ -372,7 +434,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkBox" id="hbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -380,7 +442,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-edit</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -415,7 +477,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkBox" id="hbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -423,7 +485,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-undo</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -471,14 +533,16 @@ <property name="label" translatable="yes">Controller 2</property> </object> <packing> + <property name="position">1</property> <property name="tab_fill">False</property> </packing> </child> <child> - <object class="GtkVBox" id="vbox_e"> + <object class="GtkBox" id="vbox_e"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">2</property> <child> <object class="GtkGrid" id="grid_e"> @@ -490,14 +554,11 @@ <object class="GtkLabel" id="label_e2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Device:</property> </object> <packing> <property name="left_attach">0</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> <child> @@ -508,8 +569,6 @@ <packing> <property name="left_attach">1</property> <property name="top_attach">0</property> - <property name="width">1</property> - <property name="height">1</property> </packing> </child> </object> @@ -526,7 +585,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="border_width">5</property> - <property name="window_placement_set">True</property> <property name="shadow_type">etched-in</property> <child> <object class="GtkTreeView" id="treeview_e"> @@ -545,7 +603,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox_e"> + <object class="GtkButtonBox" id="hbuttonbox_e"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">20</property> @@ -556,7 +614,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox_e1"> + <object class="GtkBox" id="hbox_e1"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -564,7 +622,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-edit</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -599,7 +657,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox_e2"> + <object class="GtkBox" id="hbox_e2"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -607,7 +665,7 @@ <property name="visible">True</property> <property name="can_focus">False</property> <property name="stock">gtk-undo</property> - <property name="icon-size">1</property> + <property name="icon_size">1</property> </object> <packing> <property name="expand">True</property> @@ -655,14 +713,16 @@ <property name="label" translatable="yes">Emulator keys</property> </object> <packing> + <property name="position">2</property> <property name="tab_fill">False</property> </packing> </child> <child> - <object class="GtkVBox" id="vbox3"> + <object class="GtkBox" id="vbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">5</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkCheckButton" id="checkmt"> @@ -670,7 +730,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> @@ -685,7 +744,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> @@ -700,7 +758,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">False</property> - <property name="xalign">0</property> <property name="draw_indicator">True</property> </object> <packing> @@ -726,9 +783,13 @@ </packing> </child> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> <child> - <object class="GtkHButtonBox" id="dialog-action_area1"> + <object class="GtkButtonBox" id="dialog-action_area1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="layout_style">end</property> @@ -748,46 +809,14 @@ </child> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options">GTK_FILL</property> </packing> </child> </object> </child> - </object> - <object class="GtkListStore" id="liststore1"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Digital Pad</col> - </row> - <row> - <col id="0" translatable="yes">Analog Pad</col> - </row> - <row> - <col id="0" translatable="yes">Mouse</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore2"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Digital Pad</col> - </row> - <row> - <col id="0" translatable="yes">Analog Pad</col> - </row> - <row> - <col id="0" translatable="yes">Mouse</col> - </row> - </data> + <child type="titlebar"> + <placeholder/> + </child> </object> </interface> diff --git a/plugins/dfinput/pad.c b/plugins/dfinput/pad.c index bd3aef73..f413d0a4 100755 --- a/plugins/dfinput/pad.c +++ b/plugins/dfinput/pad.c @@ -17,11 +17,15 @@ */ #include "pad.h" -#if !SDL_VERSION_ATLEAST(2,0,0) && defined(__linux__) +#if defined(__linux__) +#include <sys/types.h> +#include <sys/wait.h> +#if !SDL_VERSION_ATLEAST(2,0,0) #include <linux/input.h> #include <sys/file.h> #include <time.h> #endif +#endif #if SDL_VERSION_ATLEAST(2,0,0) int has_haptic; @@ -122,10 +126,10 @@ long PADopen(unsigned long *Disp) { #if SDL_VERSION_ATLEAST(2,0,0) SDL_InitSubSystem(SDL_INIT_GAMECONTROLLER); - - has_haptic = 0; - if (SDL_InitSubSystem(SDL_INIT_HAPTIC) == 0) - has_haptic = 1; + + has_haptic = 0; + if (SDL_InitSubSystem(SDL_INIT_HAPTIC) == 0) + has_haptic = 1; #endif InitSDLJoy(); @@ -491,7 +495,7 @@ unsigned char PADpoll(unsigned char value) { if (buf == NULL) { return 0; } - + switch (CurCmd) { case CMD_READ_DATA_AND_VIBRATE: if (g.cfg.PadDef[CurPad].Type == PSE_PAD_TYPE_ANALOGPAD) { @@ -510,7 +514,7 @@ unsigned char PADpoll(unsigned char value) { if (!JoyHapticRumble(CurPad, g.PadState[CurPad].VibF[0], g.PadState[CurPad].VibF[1])) { //gpuVisualVibration(g.PadState[CurPad].VibF[0], g.PadState[CurPad].VibF[1]); } - + if(gpuVisualVibration != NULL && g.cfg.PadDef[CurPad].VisualVibration) { gpuVisualVibration(g.PadState[CurPad].VibF[0], g.PadState[CurPad].VibF[1]); diff --git a/plugins/dfinput/pad.h b/plugins/dfinput/pad.h index 7cd8eefe..3051e6ad 100755 --- a/plugins/dfinput/pad.h +++ b/plugins/dfinput/pad.h @@ -158,6 +158,7 @@ typedef struct tagPadDef { int8_t DevNum; uint16_t Type; uint8_t VisualVibration; + uint8_t PhysicalVibration; KEYDEF KeyDef[DKEY_TOTAL]; KEYDEF AnalogDef[ANALOG_TOTAL][4]; #if SDL_VERSION_ATLEAST(2,0,0) diff --git a/plugins/dfinput/sdljoy.c b/plugins/dfinput/sdljoy.c index ee139517..3e8cc993 100755 --- a/plugins/dfinput/sdljoy.c +++ b/plugins/dfinput/sdljoy.c @@ -64,7 +64,7 @@ int JoyHapticRumble(int pad, uint32_t low, uint32_t high) #if SDL_VERSION_ATLEAST(2,0,0) float mag; - if (g.PadState[pad].haptic) { + if (g.PadState[pad].haptic && g.cfg.PadDef[pad].PhysicalVibration) { /* Stop the effect if it was playing. */ SDL_HapticRumbleStop(g.PadState[pad].haptic); @@ -74,7 +74,7 @@ int JoyHapticRumble(int pad, uint32_t low, uint32_t high) if(SDL_HapticRumblePlay(g.PadState[pad].haptic, mag, 500) != 0) { - printf("\nFailed to play rumble: %s\n", SDL_GetError()); + printf("\nFailed to play rumble on pad %d with error: %s\n", pad, SDL_GetError()); return 1; } } diff --git a/plugins/dfinput/xkb.c b/plugins/dfinput/xkb.c index 53fb90d4..47eac669 100755 --- a/plugins/dfinput/xkb.c +++ b/plugins/dfinput/xkb.c @@ -46,7 +46,7 @@ void InitKeyboard() { resumeScrSaver = 0; if (g.cfg.PreventScrSaver) { char buf[64]; - snprintf(buf, 64, "xdg-screensaver suspend 0x%x > /dev/null 2>&1", window); + snprintf(buf, sizeof(buf), "xdg-screensaver suspend 0x%x > /dev/null 2>&1", window); if (pclose(popen(buf, "r")) == 0) { resumeScrSaver = 1; printf("Suspending Window ID 0x%x of activating screensaver.\n", window); @@ -79,7 +79,7 @@ void DestroyKeyboard() { if (resumeScrSaver) { char buf[64]; printf("Resuming Window ID 0x%x to activate screensaver.\n", window); - snprintf(buf, 64, "xdg-screensaver resume 0x%x", window); + snprintf(buf, sizeof(buf), "xdg-screensaver resume 0x%x", window); FILE *phandle = popen(buf, "r"); pclose(phandle); } diff --git a/plugins/dfnet/Makefile.am b/plugins/dfnet/Makefile.am index d639c652..f0a53ea0 100755 --- a/plugins/dfnet/Makefile.am +++ b/plugins/dfnet/Makefile.am @@ -12,9 +12,31 @@ AM_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ -I$(top_srcdir)/libpcsxcore -I../../include bin_PROGRAMS = cfgDFNet -cfgDFNet_SOURCES = gui.c +cfgDFNet_SOURCES = gui.c GtkResources.c GtkResources.h cfgDFNet_LDADD = $(GTK3_LIBS) -glade_DATA = dfnet.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/dfnet"> + <file>dfnet.ui</file> + </gresource> +</gresources> +endef + +dfnet.gresource.xml: + $(file >$@,$(gresource_xml)) +dfnet_gresource: dfnet.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --generate-dependencies $(srcdir)/$<) +GtkResources.c: dfnet.gresource.xml $(dfnet_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-source --c-name dfnet $< +GtkResources.h: dfnet.gresource.xml $(dfnet_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --generate-header --c-name dfnet $< + + +#glade_DATA = dfnet.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = dfnet.gresource.xml GtkResources.c GtkResources.h diff --git a/plugins/dfnet/dfnet.ui b/plugins/dfnet/dfnet.ui index bdad3a1d..7ab884c2 100755..100644 --- a/plugins/dfnet/dfnet.ui +++ b/plugins/dfnet/dfnet.ui @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> <object class="GtkDialog" id="dlgStart"> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -25,7 +26,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkBox" id="hbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -44,8 +45,8 @@ <object class="GtkLabel" id="label5"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Start Game</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">True</property> @@ -68,7 +69,7 @@ <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkBox" id="hbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -87,8 +88,8 @@ <object class="GtkLabel" id="label6"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Play Offline</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">True</property> @@ -114,9 +115,10 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">12</property> <child> <object class="GtkLabel" id="label1"> @@ -136,20 +138,18 @@ If you selected Client please enter the IP address the Server gave to you in the </packing> </child> <child> - <object class="GtkTable" id="table1"> + <object class="GtkGrid" id="table1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> - <property name="column_spacing">8</property> <property name="row_spacing">12</property> + <property name="column_spacing">8</property> <child> <object class="GtkButton" id="btnCopyIP"> <property name="visible">True</property> <property name="can_focus">True</property> <property name="receives_default">True</property> <child> - <object class="GtkHBox" id="hbox2"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -168,8 +168,8 @@ If you selected Client please enter the IP address the Server gave to you in the <object class="GtkLabel" id="label4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Copy PC IP to Clipboard</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">True</property> @@ -182,7 +182,7 @@ If you selected Client please enter the IP address the Server gave to you in the </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -195,9 +195,7 @@ If you selected Client please enter the IP address the Server gave to you in the </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> @@ -210,6 +208,10 @@ If you selected Client please enter the IP address the Server gave to you in the <property name="active">True</property> <property name="draw_indicator">True</property> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> <child> <object class="GtkRadioButton" id="rbClient"> @@ -223,8 +225,8 @@ If you selected Client please enter the IP address the Server gave to you in the <property name="group">rbServer</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> </object> @@ -236,9 +238,10 @@ If you selected Client please enter the IP address the Server gave to you in the </packing> </child> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkBox" id="vbox2"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkLabel" id="label2"> @@ -254,15 +257,15 @@ If you selected Client please enter the IP address the Server gave to you in the </packing> </child> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <child> <object class="GtkLabel" id="label3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Port Number</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">True</property> diff --git a/plugins/dfnet/gui.c b/plugins/dfnet/gui.c index 06c4b888..85d0871f 100755 --- a/plugins/dfnet/gui.c +++ b/plugins/dfnet/gui.c @@ -103,7 +103,7 @@ long CFGopen() { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, DATADIR "dfnet.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/dfnet/dfnet.ui", NULL)) { g_warning("We could not load the interface!"); return 0; } @@ -182,6 +182,7 @@ void CFGabout() { GtkWidget *widget; widget = gtk_about_dialog_new(); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(widget), "Socket NetPlay Driver"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "0.21"); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); diff --git a/plugins/dfsound/Makefile.am b/plugins/dfsound/Makefile.am index 53255556..9f8130a1 100755 --- a/plugins/dfsound/Makefile.am +++ b/plugins/dfsound/Makefile.am @@ -49,9 +49,31 @@ bin_PROGRAMS = cfgDFSound cfgDFSound_CPPFLAGS = -DLOCALE_DIR=\"${datadir}/locale/\" \ -DDATADIR=\"${datadir}/psemu/\" \ $(GTK3_CFLAGS) $(AM_CPPFLAGS) -cfgDFSound_SOURCES = spucfg-0.1df/main.c +cfgDFSound_SOURCES = spucfg-0.1df/main.c GtkResources.c GtkResources.h cfgDFSound_LDADD = $(GTK3_LIBS) -glade_DATA = spucfg-0.1df/dfsound.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/dfsound"> + <file>dfsound.ui</file> + </gresource> +</gresources> +endef + +dfsound.gresource.xml: + $(file >$@,$(gresource_xml)) +dfsound_gresource: dfsound.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/spucfg-0.1df --generate-dependencies $(srcdir)/$<) +GtkResources.c: dfsound.gresource.xml $(dfsound_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/spucfg-0.1df --generate-source --c-name dfsound $< +GtkResources.h: dfsound.gresource.xml $(dfsound_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/spucfg-0.1df --generate-header --c-name dfsound $< + +#glade_DATA = spucfg-0.1df/dfsound.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = dfsound.gresource.xml GtkResources.c GtkResources.h + diff --git a/plugins/dfsound/spucfg-0.1df/dfsound.ui b/plugins/dfsound/spucfg-0.1df/dfsound.ui index 1c816a1d..9d897204 100755..100644 --- a/plugins/dfsound/spucfg-0.1df/dfsound.ui +++ b/plugins/dfsound/spucfg-0.1df/dfsound.ui @@ -1,6 +1,67 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> + <object class="GtkListStore" id="liststoreInterpolation"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None</col> + </row> + <row> + <col id="0" translatable="yes">Simple</col> + </row> + <row> + <col id="0" translatable="yes">Gaussian</col> + </row> + <row> + <col id="0" translatable="yes">Cubic</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststoreReverb"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Off</col> + </row> + <row> + <col id="0" translatable="yes">Simple</col> + </row> + <row> + <col id="0" translatable="yes">Playstation</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststoreVolume"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None</col> + </row> + <row> + <col id="0" translatable="yes">Low</col> + </row> + <row> + <col id="0" translatable="yes">Medium</col> + </row> + <row> + <col id="0" translatable="yes">Loud</col> + </row> + <row> + <col id="0" translatable="yes">Loudest</col> + </row> + </data> + </object> <object class="GtkDialog" id="CfgWnd"> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -42,9 +103,10 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkFrame" id="frame1"> @@ -57,54 +119,49 @@ <property name="can_focus">False</property> <property name="border_width">5</property> <child> - <object class="GtkTable" id="table1"> + <object class="GtkGrid" id="table1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> + <property name="column_homogeneous">True</property> <child> <object class="GtkLabel" id="label1v"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Volume:</property> <property name="justify">right</property> + <property name="xalign">0</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkLabel" id="label9"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Interpolation:</property> <property name="justify">right</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Reverb:</property> <property name="justify">right</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -121,8 +178,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options">GTK_FILL</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -139,11 +195,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -160,11 +212,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> </object> @@ -189,9 +237,10 @@ <property name="can_focus">False</property> <property name="border_width">5</property> <child> - <object class="GtkVBox" id="vbox3"> + <object class="GtkBox" id="vbox3"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkCheckButton" id="chkXASpeed"> @@ -234,9 +283,10 @@ <property name="can_focus">False</property> <property name="border_width">5</property> <child> - <object class="GtkVBox" id="vbox4"> + <object class="GtkBox" id="vbox4"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkCheckButton" id="chkHiCompat"> @@ -334,64 +384,4 @@ <action-widget response="0">btn_close</action-widget> </action-widgets> </object> - <object class="GtkListStore" id="liststoreInterpolation"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None</col> - </row> - <row> - <col id="0" translatable="yes">Simple</col> - </row> - <row> - <col id="0" translatable="yes">Gaussian</col> - </row> - <row> - <col id="0" translatable="yes">Cubic</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststoreReverb"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Off</col> - </row> - <row> - <col id="0" translatable="yes">Simple</col> - </row> - <row> - <col id="0" translatable="yes">Playstation</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststoreVolume"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None</col> - </row> - <row> - <col id="0" translatable="yes">Low</col> - </row> - <row> - <col id="0" translatable="yes">Medium</col> - </row> - <row> - <col id="0" translatable="yes">Loud</col> - </row> - <row> - <col id="0" translatable="yes">Loudest</col> - </row> - </data> - </object> </interface> diff --git a/plugins/dfsound/spucfg-0.1df/main.c b/plugins/dfsound/spucfg-0.1df/main.c index 2a57a67f..2fe837b7 100755 --- a/plugins/dfsound/spucfg-0.1df/main.c +++ b/plugins/dfsound/spucfg-0.1df/main.c @@ -82,6 +82,7 @@ int main(int argc, char *argv[]) if (strcmp(argv[1], "about") == 0) { const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL}; widget = gtk_about_dialog_new (); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (widget), "dfsound PCSXR Sound Plugin"); gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (widget), "1.6"); gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors); @@ -98,7 +99,7 @@ int main(int argc, char *argv[]) else if (strcmp(argv[1], "configure") == 0) { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, DATADIR "dfsound.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/dfsound/dfsound.ui", NULL)) { g_warning("We could not load the interface!"); return 0; } diff --git a/plugins/dfxvideo/Makefile.am b/plugins/dfxvideo/Makefile.am index 3036da5f..520749b2 100755 --- a/plugins/dfxvideo/Makefile.am +++ b/plugins/dfxvideo/Makefile.am @@ -26,9 +26,32 @@ libDFXVideo_la_LDFLAGS = -module -avoid-version libDFXVideo_la_LIBADD = -lX11 -lXv -lXext -lm bin_PROGRAMS = cfgDFXVideo -cfgDFXVideo_SOURCES = gpucfg-0.1df/main.c +cfgDFXVideo_SOURCES = gpucfg-0.1df/main.c GtkResources.c GtkResources.h cfgDFXVideo_LDADD = $(GTK3_LIBS) -lXext -glade_DATA = gpucfg-0.1df/dfxvideo.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/dfxvideo"> + <file>dfxvideo.ui</file> + </gresource> +</gresources> +endef + +dfxvideo.gresource.xml: + $(file >$@,$(gresource_xml)) +dfxvideo_gresource: dfxvideo.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/gpucfg-0.1df --generate-dependencies $(srcdir)/$<) +GtkResources.c: dfxvideo.gresource.xml $(dfxvideo_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/gpucfg-0.1df --generate-source --c-name dfxvideo $< +GtkResources.h: dfxvideo.gresource.xml $(dfxvideo_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/gpucfg-0.1df --generate-header --c-name dfxvideo $< + + +#glade_DATA = gpucfg-0.1df/dfxvideo.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = dfxvideo.gresource.xml GtkResources.c GtkResources.h + diff --git a/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.ui b/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.ui index 6acee0d6..54633d89 100755..100644 --- a/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.ui +++ b/plugins/dfxvideo/gpucfg-0.1df/dfxvideo.ui @@ -1,6 +1,85 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> + <object class="GtkListStore" id="liststoreDither"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">0: Off (fastest)</col> + </row> + <row> + <col id="0" translatable="yes">1: Game dependant</col> + </row> + <row> + <col id="0" translatable="yes">2: Always</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststoreRes"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">320x240</col> + </row> + <row> + <col id="0" translatable="yes">640x480</col> + </row> + <row> + <col id="0" translatable="yes">800x600</col> + </row> + <row> + <col id="0" translatable="yes">1024x768</col> + </row> + <row> + <col id="0" translatable="yes">1152x864</col> + </row> + <row> + <col id="0" translatable="yes">1280x1024</col> + </row> + <row> + <col id="0" translatable="yes">1600x1200</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststoreStretching"> + <columns> + <!-- column-name Item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">0: None</col> + </row> + <row> + <col id="0" translatable="yes">1: 2xSai</col> + </row> + <row> + <col id="0" translatable="yes">2: 2xSuperSai</col> + </row> + <row> + <col id="0" translatable="yes">3: SuperEagle</col> + </row> + <row> + <col id="0" translatable="yes">4: Scale2x</col> + </row> + <row> + <col id="0" translatable="yes">5: Scale3x</col> + </row> + <row> + <col id="0" translatable="yes">6: HQ2X</col> + </row> + <row> + <col id="0" translatable="yes">7: HQ3X</col> + </row> + </data> + </object> <object class="GtkWindow" id="CfgWnd"> <property name="visible">True</property> <property name="can_focus">False</property> @@ -12,9 +91,10 @@ <property name="type_hint">dialog</property> <signal name="destroy" handler="on_CfgWnd_destroy" swapped="no"/> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">6</property> <child> <object class="GtkFrame" id="frame1"> @@ -30,55 +110,50 @@ <property name="left_padding">5</property> <property name="right_padding">5</property> <child> - <object class="GtkVBox" id="vbox7"> + <object class="GtkBox" id="vbox7"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> - <object class="GtkTable" id="table1"> + <object class="GtkGrid" id="table1"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> - <property name="column_spacing">30</property> <property name="row_spacing">6</property> + <property name="column_homogeneous">True</property> <child> <object class="GtkLabel" id="label14"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Initial Window Size:</property> + <property name="xalign">0</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkLabel" id="label15"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Stretching:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> <object class="GtkLabel" id="label16"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Dithering:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -96,11 +171,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> @@ -118,15 +189,11 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options">GTK_FILL</property> </packing> </child> <child> - <object class="GtkHBox" id="hbox2"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">10</property> @@ -170,7 +237,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">0</property> </packing> </child> </object> @@ -181,7 +248,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox1"> + <object class="GtkBox" id="hbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <child> @@ -232,9 +299,10 @@ <property name="left_padding">5</property> <property name="right_padding">5</property> <child> - <object class="GtkVBox" id="vbox3"> + <object class="GtkBox" id="vbox3"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> <object class="GtkCheckButton" id="checkShowFPS"> <property name="label" translatable="yes">Show FPS</property> @@ -270,10 +338,9 @@ </packing> </child> <child> - <object class="GtkTable" id="table2"> + <object class="GtkGrid" id="table2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_columns">3</property> <property name="column_spacing">12</property> <child> <object class="GtkCheckButton" id="checkSetFPS"> @@ -287,8 +354,8 @@ <property name="draw_indicator">True</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -300,9 +367,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -319,7 +384,7 @@ </object> <packing> <property name="left_attach">2</property> - <property name="right_attach">3</property> + <property name="top_attach">0</property> </packing> </child> </object> @@ -354,9 +419,10 @@ <property name="left_padding">5</property> <property name="right_padding">5</property> <child> - <object class="GtkVBox" id="vbox4"> + <object class="GtkBox" id="vbox4"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <child> <object class="GtkCheckButton" id="checkUseFixes"> <property name="label" translatable="yes">Use game fixes</property> @@ -379,15 +445,11 @@ <property name="can_focus">False</property> <property name="left_padding">19</property> <child> - <object class="GtkTable" id="table_fixes"> + <object class="GtkGrid" id="table_fixes"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">6</property> - <property name="n_columns">2</property> <property name="column_spacing">16</property> - <child> - <placeholder/> - </child> + <property name="column_homogeneous">True</property> <child> <object class="GtkCheckButton" id="checkFix5"> <property name="label" translatable="yes">Disable CPU Saving</property> @@ -400,10 +462,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -418,8 +478,8 @@ <property name="draw_indicator">True</property> </object> <packing> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -434,10 +494,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -452,10 +510,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -470,10 +526,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -488,10 +542,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -508,9 +560,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -527,11 +577,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -548,11 +594,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -569,11 +611,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -590,11 +628,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> <child> @@ -611,11 +645,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="x_options">GTK_FILL</property> - <property name="y_options"></property> </packing> </child> </object> @@ -639,7 +669,7 @@ </packing> </child> <child> - <object class="GtkHButtonBox" id="hbuttonbox1"> + <object class="GtkButtonBox" id="hbuttonbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">12</property> @@ -669,82 +699,4 @@ </object> </child> </object> - <object class="GtkListStore" id="liststoreDither"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: Off (fastest)</col> - </row> - <row> - <col id="0" translatable="yes">1: Game dependant</col> - </row> - <row> - <col id="0" translatable="yes">2: Always</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststoreRes"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">320x240</col> - </row> - <row> - <col id="0" translatable="yes">640x480</col> - </row> - <row> - <col id="0" translatable="yes">800x600</col> - </row> - <row> - <col id="0" translatable="yes">1024x768</col> - </row> - <row> - <col id="0" translatable="yes">1152x864</col> - </row> - <row> - <col id="0" translatable="yes">1280x1024</col> - </row> - <row> - <col id="0" translatable="yes">1600x1200</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststoreStretching"> - <columns> - <!-- column-name Item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">0: None</col> - </row> - <row> - <col id="0" translatable="yes">1: 2xSai</col> - </row> - <row> - <col id="0" translatable="yes">2: 2xSuperSai</col> - </row> - <row> - <col id="0" translatable="yes">3: SuperEagle</col> - </row> - <row> - <col id="0" translatable="yes">4: Scale2x</col> - </row> - <row> - <col id="0" translatable="yes">5: Scale3x</col> - </row> - <row> - <col id="0" translatable="yes">6: HQ2X</col> - </row> - <row> - <col id="0" translatable="yes">7: HQ3X</col> - </row> - </data> - </object> </interface> diff --git a/plugins/dfxvideo/gpucfg-0.1df/main.c b/plugins/dfxvideo/gpucfg-0.1df/main.c index 805495e6..ef44ed1c 100755 --- a/plugins/dfxvideo/gpucfg-0.1df/main.c +++ b/plugins/dfxvideo/gpucfg-0.1df/main.c @@ -135,6 +135,7 @@ main (int argc, char *argv[]) if (strcmp(argv[1], "about") == 0) { const char *authors[]= {"Pete Bernert and the P.E.Op.S. team", "Ryan Schultz", "Andrew Burton", NULL}; widget = gtk_about_dialog_new (); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name (GTK_ABOUT_DIALOG (widget), "P.E.Op.S PCSXR Video Plugin"); gtk_about_dialog_set_version (GTK_ABOUT_DIALOG (widget), "1.17"); gtk_about_dialog_set_authors (GTK_ABOUT_DIALOG (widget), authors); @@ -151,7 +152,7 @@ main (int argc, char *argv[]) else { builder = gtk_builder_new(); - if (!gtk_builder_add_from_file(builder, DATADIR "dfxvideo.ui", NULL)) { + if (!gtk_builder_add_from_resource(builder, "/org/pcsxr/dfxvideo/dfxvideo.ui", NULL)) { g_warning("We could not load the interface!"); return -1; } diff --git a/plugins/nullsio1/Makefile.am b/plugins/nullsio1/Makefile.am new file mode 100644 index 00000000..9d78b632 --- /dev/null +++ b/plugins/nullsio1/Makefile.am @@ -0,0 +1,10 @@ +bindir = @libdir@/games/psemu/ +libdir = @libdir@/games/psemu/ + +lib_LTLIBRARIES = libNullSio1.la + +libNullSio1_la_SOURCES = sio1.c typedefs.h +libNullSio1_la_LDFLAGS = -module -avoid-version + +AM_CPPFLAGS = -DDATADIR=\"${datadir}/psemu/\" \ + -I$(top_srcdir)/libpcsxcore -I../../include diff --git a/plugins/nullsio1/sio1.c b/plugins/nullsio1/sio1.c new file mode 100644 index 00000000..44311f4b --- /dev/null +++ b/plugins/nullsio1/sio1.c @@ -0,0 +1,289 @@ +/*************************************************************************** + * Copyright (C) 2013 by Blade_Arma <edgbla@yandex.ru> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + ***************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <stdint.h> + +#include "typedefs.h" +#include "psemu_plugin_defs.h" + +#ifndef CALLBACK +#define CALLBACK +#endif + +/***************************************************************************/ + +static char *pluginName = "sio1Null"; + +static const unsigned char version = 1; +static const unsigned char revision = 1; +static const unsigned char build = 1; + +static void (CALLBACK *irqCallback)() = 0; + +/* sio status flags. + */ +enum { + SR_TXRDY = 0x0001, + SR_RXRDY = 0x0002, + SR_TXU = 0x0004, + SR_PERROR = 0x0008, + SR_OE = 0x0010, + SR_FE = 0x0020, + SR_0040 = 0x0040, // ? + SR_DSR = 0x0080, + SR_CTS = 0x0100, + SR_IRQ = 0x0200 +}; + +/* sio mode flags. + */ +enum { + MR_BR_1 = 0x0001, + MR_BR_16 = 0x0002, + MR_BR_64 = 0x0003, + MR_CHLEN_5 = 0x0000, + MR_CHLEN_6 = 0x0004, + MR_CHLEN_7 = 0x0008, + MR_CHLEN_8 = 0x000C, + MR_PEN = 0x0010, + MR_P_EVEN = 0x0020, + MR_SB_00 = 0x0000, + MR_SB_01 = 0x0040, + MR_SB_10 = 0x0080, + MR_SB_11 = 0x00C0 +}; + +/* sio control flags. + */ +enum { + CR_TXEN = 0x0001, + CR_DTR = 0x0002, + CR_RXEN = 0x0004, + CR_0008 = 0x0008, // ? + CR_ERRRST = 0x0010, + CR_RTS = 0x0020, + CR_RST = 0x0040, + CR_0080 = 0x0080, // HM? + CR_BUFSZ_1 = 0x0000, + CR_BUFSZ_2 = 0x0100, + CR_BUFSZ_4 = 0x0200, + CR_BUFSZ_8 = 0x0300, + CR_TXIEN = 0x0400, + CR_RXIEN = 0x0800, + CR_DSRIEN = 0x1000, + CR_2000 = 0x2000 // CTSIEN? +}; + +static u16 statReg; // 0x1f801054: 0x185 SR_TXRDY | SR_TXU | SR_DSR | SR_CTS +static u16 modeReg; // 0x1f801058: 0x0 +static u16 ctrlReg; // 0x1f80105A: 0x0 +static u16 baudReg; // 0x1f80105E: 0x0 + +/***************************************************************************/ + +long CALLBACK SIO1init() { + return 0; +} + +long CALLBACK SIO1shutdown() { + return 0; +} + +/***************************************************************************/ + +long CALLBACK SIO1open(unsigned long *gpuDisp) { + statReg = SR_TXRDY | SR_TXU | SR_DSR | SR_CTS; + modeReg = 0x0000; + ctrlReg = 0x0000; + baudReg = 0x0000; + return 0; +} + +long CALLBACK SIO1close() { + return 0; +} + +/***************************************************************************/ + +void CALLBACK SIO1pause() { +} + +void CALLBACK SIO1resume() { +} + +/***************************************************************************/ + +long CALLBACK SIO1keypressed(int key) { + return 0; +} + +/***************************************************************************/ + +/* Write. + */ + +void CALLBACK SIO1writeData8(u8 data) { +} + +void CALLBACK SIO1writeData16(u16 data) { +} + +void CALLBACK SIO1writeData32(u32 data) { +} + +void CALLBACK SIO1writeStat16(u16 stat) { +} + +void CALLBACK SIO1writeStat32(u32 stat) { + SIO1writeStat16(stat); +} + +void CALLBACK SIO1writeMode16(u16 mode) { + modeReg = mode; +} + +void CALLBACK SIO1writeMode32(u32 mode) { + SIO1writeMode16(mode); +} + +void CALLBACK SIO1writeCtrl16(u16 ctrl) { + u16 ctrlSaved = ctrlReg; + + ctrlReg = ctrl; + + if(ctrlReg & CR_ERRRST) { + ctrlReg &= ~CR_ERRRST; + statReg &= ~(SR_PERROR | SR_OE | SR_FE | SR_IRQ); + } + + if(ctrlReg & CR_RST) { + statReg &= ~SR_IRQ; + statReg |= SR_TXRDY | SR_TXU; + modeReg = 0; + ctrlReg = 0; + baudReg = 0; + } + + if(ctrlReg & CR_TXIEN) { + if(!(statReg & SR_IRQ)) { + irqCallback(); + statReg |= SR_IRQ; + } + } +} + +void CALLBACK SIO1writeCtrl32(u32 ctrl) { + SIO1writeCtrl16(ctrl); +} + +void CALLBACK SIO1writeBaud16(u16 baud) { + baudReg = baud; +} + +void CALLBACK SIO1writeBaud32(u32 baud) { + SIO1writeBaud16(baud); +} + +/* Read. + */ + +u8 CALLBACK SIO1readData8() { + u8 data[1] = {0}; + return *(u8*)data; +} + +u16 CALLBACK SIO1readData16() { + u8 data[2] = {0, 0}; + return *(u16*)data; +} + +u32 CALLBACK SIO1readData32() { + u8 data[4] = {0, 0, 0, 0}; + return *(u32*)data; +} + +u16 CALLBACK SIO1readStat16() { + return statReg; +} + +u32 CALLBACK SIO1readStat32() { + return statReg; +} + +u16 CALLBACK SIO1readMode16() { + return modeReg; +} + +u32 CALLBACK SIO1readMode32() { + return modeReg; +} + +u16 CALLBACK SIO1readCtrl16() { + return ctrlReg; +} + +u32 CALLBACK SIO1readCtrl32() { + return ctrlReg; +} + +u16 CALLBACK SIO1readBaud16() { + return baudReg; +} + +u32 CALLBACK SIO1readBaud32() { + return baudReg; +} + +/***************************************************************************/ + +void CALLBACK SIO1update(uint32_t t) { +} + +void CALLBACK SIO1registerCallback(void (CALLBACK *callback)()) { + irqCallback = callback; +} + +/***************************************************************************/ + +unsigned long CALLBACK PSEgetLibType() { + return PSE_LT_SIO1; +} + +char* CALLBACK PSEgetLibName() { + return pluginName; +} + +unsigned long CALLBACK PSEgetLibVersion() { + return version << 16 | revision << 8 | build; +} + +long CALLBACK SIO1test() { + return 0; +} + +void CALLBACK SIO1about() { +} + +void CALLBACK SIO1configure() { +} + +/***************************************************************************/ diff --git a/plugins/nullsio1/typedefs.h b/plugins/nullsio1/typedefs.h new file mode 100644 index 00000000..452d2b3a --- /dev/null +++ b/plugins/nullsio1/typedefs.h @@ -0,0 +1,35 @@ +/*************************************************************************** + * Copyright (C) 2013 by Blade_Arma <edgbla@yandex.ru> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * + ***************************************************************************/ + +#ifndef _TYPEDEFS_H_ +#define _TYPEDEFS_H_ + +typedef int8_t s8; +typedef int16_t s16; +typedef int32_t s32; +typedef int64_t s64; +typedef intptr_t sptr; + +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +typedef uint64_t u64; +typedef uintptr_t uptr; + +#endif // _TYPEDEFS_H_ diff --git a/plugins/peopsxgl/Makefile.am b/plugins/peopsxgl/Makefile.am index 3c8f7250..576e140d 100755 --- a/plugins/peopsxgl/Makefile.am +++ b/plugins/peopsxgl/Makefile.am @@ -9,16 +9,49 @@ libdir = @libdir@/games/psemu/ lib_LTLIBRARIES = libpeopsxgl.la -libpeopsxgl_la_SOURCES = cfg.c cfg.h draw.c draw.h fps.c fps.h gl_ext.h \ - gpu.c gpu.h key.c key.h menu.c menu.h prim.c prim.h soft.c soft.h \ - texture.c texture.h gte_accuracy.c gte_accuracy.h +libpeopsxgl_la_SOURCES = \ + cfg.c cfg.h \ + draw.c draw.h \ + fps.c fps.h \ + gl_ext.h \ + gpu.c gpu.h \ + key.c key.h \ + menu.c menu.h \ + prim.c prim.h \ + soft.c soft.h \ + texture.c texture.h \ + gte_accuracy.c gte_accuracy.h \ + pgxp_gpu.c pgxp_gpu.h libpeopsxgl_la_LDFLAGS = -module -avoid-version libpeopsxgl_la_LIBADD = -lX11 -lXxf86vm -lGL -lm bin_PROGRAMS = cfgpeopsxgl -cfgpeopsxgl_SOURCES = gpucfg/main.c +cfgpeopsxgl_SOURCES = gpucfg/main.c GtkResources.c GtkResources.h cfgpeopsxgl_LDADD = $(GTK3_LIBS) -glade_DATA = gpucfg/peopsxgl.ui -gladedir = $(datadir)/psemu/ +# gresource.xml is dynamically generated in CMake. Mirror that here in a static way. +define gresource_xml = +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/org/pcsxr/peopsxgl"> + <file>peopsxgl.ui</file> + </gresource> +</gresources> +endef + +peopsxgl.gresource.xml: + $(file >$@,$(gresource_xml)) +peopsxgl_gresource: peopsxgl.gresource.xml + $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/gpucfg --generate-dependencies $(srcdir)/$<) +GtkResources.c: peopsxgl.gresource.xml $(peopsxgl_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/gpucfg --generate-source --c-name peopsxgl $< +GtkResources.h: peopsxgl.gresource.xml $(peopsxgl_gresource) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/gpucfg --generate-header --c-name peopsxgl $< + + +#glade_DATA = gpucfg/peopsxgl.ui +#gladedir = $(datadir)/psemu/ EXTRA_DIST = $(glade_DATA) + +CLEANFILES = peopsxgl.gresource.xml GtkResources.c GtkResources.h + diff --git a/plugins/peopsxgl/gpu.c b/plugins/peopsxgl/gpu.c index 99ef36ba..c19dd2b6 100755 --- a/plugins/peopsxgl/gpu.c +++ b/plugins/peopsxgl/gpu.c @@ -48,7 +48,7 @@ static int iOldMode=0; #include "fps.h" #include "key.h" #include "gte_accuracy.h" -#include "PGXP_gpu.h" +#include "pgxp_gpu.h" #ifdef _WINDOWS #include "resource.h" #include "ssave.h" diff --git a/plugins/peopsxgl/gpucfg/main.c b/plugins/peopsxgl/gpucfg/main.c index 812ec5f9..b29c85fb 100755 --- a/plugins/peopsxgl/gpucfg/main.c +++ b/plugins/peopsxgl/gpucfg/main.c @@ -257,7 +257,7 @@ int main( int argc, char **argv ) { builder = gtk_builder_new(); // Load the glade file - if ( !gtk_builder_add_from_file( builder, DATADIR "peopsxgl.ui", &error ) ) { + if ( !gtk_builder_add_from_resource( builder, "/org/pcsxr/peopsxgl/peopsxgl.ui", &error ) ) { g_warning( "%s", error->message ); g_free( error ); return( 1 ); @@ -269,6 +269,7 @@ int main( int argc, char **argv ) { const char *authors[]= {"Adapted from P.E.Op.S OpenGL GPU by Pete Bernert", NULL}; widget = gtk_about_dialog_new(); + gtk_about_dialog_set_logo_icon_name (GTK_ABOUT_DIALOG(widget), "help-about"); gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(widget), "OpenGL GPU Driver"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(widget), "1.18"); gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(widget), authors); diff --git a/plugins/peopsxgl/gpucfg/peopsxgl.ui b/plugins/peopsxgl/gpucfg/peopsxgl.ui index 895c8d45..c53a9852 100755..100644 --- a/plugins/peopsxgl/gpucfg/peopsxgl.ui +++ b/plugins/peopsxgl/gpucfg/peopsxgl.ui @@ -1,6 +1,170 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.19.0 --> <interface> - <!-- interface-requires gtk+ 3.0 --> + <requires lib="gtk+" version="3.0"/> + <object class="GtkAdjustment" id="f"> + <property name="lower">20</property> + <property name="upper">200</property> + <property name="value">60</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkListStore" id="liststore1"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Emulated VRam - Ok most times</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer reads</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer moves</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer reads and moves</col> + </row> + <row> + <col id="0" translatable="yes">Full Software (FVP)</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore2"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Emulated VRam - Needs FVP</col> + </row> + <row> + <col id="0" translatable="yes">Black - Fast, no effects</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card buffer - Can be slow</col> + </row> + <row> + <col id="0" translatable="yes">Gfx card and soft - Slow</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore3"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None - Fastest, most glitches</col> + </row> + <row> + <col id="0" translatable="yes">Minimum - Missing screens</col> + </row> + <row> + <col id="0" translatable="yes">Standard - OK for most games</col> + </row> + <row> + <col id="0" translatable="yes">Enhanced - Shows more stuff</col> + </row> + <row> + <col id="0" translatable="yes">Extended - Causing garbage</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore4"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None (Standard)</col> + </row> + <row> + <col id="0" translatable="yes">2xSaI (Much vram needed)</col> + </row> + <row> + <col id="0" translatable="yes">Scaled (Needs tex filtering)</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore5"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">None</col> + </row> + <row> + <col id="0" translatable="yes">Standard - Glitches will happen</col> + </row> + <row> + <col id="0" translatable="yes">Extended - No black borders</col> + </row> + <row> + <col id="0" translatable="yes">Standard without sprites - Unfiltered 2D</col> + </row> + <row> + <col id="0" translatable="yes">Extended without sprites - Unfiltered 2D</col> + </row> + <row> + <col id="0" translatable="yes">Standard + smoothed sprites</col> + </row> + <row> + <col id="0" translatable="yes">Extended + smoothed sprites</col> + </row> + </data> + </object> + <object class="GtkListStore" id="liststore6"> + <columns> + <!-- column-name item --> + <column type="gchararray"/> + </columns> + <data> + <row> + <col id="0" translatable="yes">Don't care - Use driver's default textures</col> + </row> + <row> + <col id="0" translatable="yes">4444 - Fast, but less colorful</col> + </row> + <row> + <col id="0" translatable="yes">5551 - Nice colors, bad transparency</col> + </row> + <row> + <col id="0" translatable="yes">8888 - Best colors, more ram needed</col> + </row> + <row> + <col id="0" translatable="yes">BGR8888 - Faster on some cards</col> + </row> + </data> + </object> + <object class="GtkAdjustment" id="s"> + <property name="lower">-1</property> + <property name="upper">255</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="v"> + <property name="upper">1024</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="x"> + <property name="upper">9999</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> + <object class="GtkAdjustment" id="y"> + <property name="upper">9999</property> + <property name="step_increment">1</property> + <property name="page_increment">10</property> + </object> <object class="GtkDialog" id="MainDialog"> <property name="can_focus">False</property> <property name="border_width">5</property> @@ -14,24 +178,94 @@ <property name="can_focus">False</property> <property name="orientation">vertical</property> <property name="spacing">2</property> + <child internal-child="action_area"> + <object class="GtkButtonBox" id="dialog-action_area3"> + <property name="visible">True</property> + <property name="can_focus">False</property> + <property name="layout_style">end</property> + <child> + <object class="GtkButton" id="btnFast"> + <property name="label" translatable="yes">Fast</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Autoconfigure for fast display</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">0</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnBeautiful"> + <property name="label" translatable="yes">Beautiful</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="tooltip_text" translatable="yes">Auto configure for beautiful display</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">1</property> + <property name="secondary">True</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnSave"> + <property name="label">gtk-ok</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">2</property> + </packing> + </child> + <child> + <object class="GtkButton" id="btnCancel"> + <property name="label">gtk-cancel</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">True</property> + <property name="use_stock">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">False</property> + <property name="position">3</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack_type">end</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkNotebook" id="notebook1"> <property name="visible">True</property> <property name="can_focus">True</property> <child> - <object class="GtkVBox" id="vbox2"> + <object class="GtkBox" id="vbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> - <object class="GtkTable" id="table2"> + <object class="GtkGrid" id="table2"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">2</property> - <property name="n_columns">2</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> <child> <object class="GtkSpinButton" id="spinXSize"> <property name="visible">True</property> @@ -42,9 +276,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -57,37 +289,31 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> </packing> </child> <child> <object class="GtkLabel" id="label7"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Width:</property> + <property name="xalign">0</property> </object> <packing> - <property name="x_options"></property> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> <object class="GtkLabel" id="label8"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Height:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="x_options"></property> - <property name="y_options"></property> </packing> </child> </object> @@ -170,49 +396,53 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox6"> + <object class="GtkBox" id="vbox6"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> - <object class="GtkTable" id="table3"> + <object class="GtkGrid" id="table3"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> + <property name="column_homogeneous">True</property> <child> <object class="GtkLabel" id="label9"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Quality:</property> + <property name="xalign">0</property> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> <child> <object class="GtkLabel" id="label10"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Filtering:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> <object class="GtkLabel" id="label11"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">HiRes Tex:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> @@ -229,7 +459,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -246,9 +476,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> @@ -265,9 +493,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> </object> @@ -278,7 +504,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox4"> + <object class="GtkBox" id="hbox4"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">5</property> @@ -286,8 +512,8 @@ <object class="GtkLabel" id="label12"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">VRam size in MBytes (0..1024, 0=auto):</property> + <property name="xalign">0</property> </object> <packing> <property name="expand">False</property> @@ -333,10 +559,11 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox3"> + <object class="GtkBox" id="vbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkCheckButton" id="chkShowFPS"> @@ -374,9 +601,10 @@ <property name="can_focus">False</property> <property name="left_padding">20</property> <child> - <object class="GtkVBox" id="vboxFPSLimit"> + <object class="GtkBox" id="vboxFPSLimit"> <property name="visible">True</property> <property name="can_focus">False</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkRadioButton" id="radFPSLimitAuto"> @@ -396,7 +624,7 @@ </packing> </child> <child> - <object class="GtkHBox" id="hbox2"> + <object class="GtkBox" id="hbox2"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">5</property> @@ -490,49 +718,53 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox8"> + <object class="GtkBox" id="vbox8"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> - <object class="GtkTable" id="table4"> + <object class="GtkGrid" id="table4"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">3</property> - <property name="n_columns">2</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> + <property name="column_homogeneous">True</property> <child> <object class="GtkLabel" id="label14"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Offscreen drawing:</property> + <property name="xalign">0</property> </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">0</property> + </packing> </child> <child> <object class="GtkLabel" id="label15"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Framebuffer textures:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> <object class="GtkLabel" id="label16"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="xalign">0</property> <property name="label" translatable="yes">Framebuffer access:</property> + <property name="xalign">0</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> <child> @@ -549,7 +781,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -566,9 +798,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> </packing> </child> <child> @@ -585,9 +815,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> </packing> </child> </object> @@ -659,13 +887,14 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox5"> + <object class="GtkBox" id="vbox5"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> - <object class="GtkHBox" id="hbox3"> + <object class="GtkBox" id="hbox3"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="spacing">5</property> @@ -826,10 +1055,11 @@ </packing> </child> <child> - <object class="GtkVBox" id="vbox1"> + <object class="GtkBox" id="vbox1"> <property name="visible">True</property> <property name="can_focus">False</property> <property name="border_width">10</property> + <property name="orientation">vertical</property> <property name="spacing">5</property> <child> <object class="GtkCheckButton" id="chkUseGameFixes"> @@ -852,13 +1082,12 @@ <property name="can_focus">False</property> <property name="left_padding">20</property> <child> - <object class="GtkTable" id="tblGameFixes"> + <object class="GtkGrid" id="tblGameFixes"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="n_rows">9</property> - <property name="n_columns">2</property> - <property name="column_spacing">5</property> <property name="row_spacing">5</property> + <property name="column_spacing">5</property> + <property name="column_homogeneous">True</property> <child> <object class="GtkCheckButton" id="chkCfgFix1"> <property name="label" translatable="yes">Battle cursor (FF7)</property> @@ -869,7 +1098,8 @@ <property name="draw_indicator">True</property> </object> <packing> - <property name="y_options"></property> + <property name="left_attach">0</property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -883,8 +1113,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="y_options"></property> + <property name="top_attach">0</property> </packing> </child> <child> @@ -897,9 +1126,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> </packing> </child> <child> @@ -912,9 +1140,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> </packing> </child> <child> @@ -927,9 +1154,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="y_options"></property> </packing> </child> <child> @@ -942,9 +1168,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options"></property> </packing> </child> <child> @@ -957,9 +1182,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="y_options"></property> </packing> </child> <child> @@ -972,9 +1196,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="y_options"></property> </packing> </child> <child> @@ -987,9 +1210,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1002,9 +1224,8 @@ <property name="draw_indicator">True</property> </object> <packing> + <property name="left_attach">0</property> <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1018,10 +1239,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">1</property> - <property name="bottom_attach">2</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1035,10 +1253,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">2</property> - <property name="bottom_attach">3</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1052,10 +1267,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">3</property> - <property name="bottom_attach">4</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1069,10 +1281,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">4</property> - <property name="bottom_attach">5</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1086,10 +1295,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">5</property> - <property name="bottom_attach">6</property> - <property name="y_options"></property> </packing> </child> <child> @@ -1103,16 +1309,12 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> <property name="top_attach">6</property> - <property name="bottom_attach">7</property> - <property name="y_options"></property> </packing> </child> <child> <object class="GtkCheckButton" id="chkCfgFix65536"> <property name="label" translatable="yes">Unused</property> - <property name="visible">True</property> <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="receives_default">False</property> @@ -1121,10 +1323,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">7</property> - <property name="bottom_attach">8</property> - <property name="y_options"></property> + <property name="top_attach">8</property> </packing> </child> <child> @@ -1138,10 +1337,7 @@ </object> <packing> <property name="left_attach">1</property> - <property name="right_attach">2</property> - <property name="top_attach">8</property> - <property name="bottom_attach">9</property> - <property name="y_options"></property> + <property name="top_attach">7</property> </packing> </child> </object> @@ -1176,77 +1372,6 @@ <property name="position">0</property> </packing> </child> - <child internal-child="action_area"> - <object class="GtkButtonBox" id="dialog-action_area3"> - <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="layout_style">end</property> - <child> - <object class="GtkButton" id="btnFast"> - <property name="label" translatable="yes">Fast</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="tooltip_text" translatable="yes">Autoconfigure for fast display</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">0</property> - <property name="secondary">True</property> - </packing> - </child> - <child> - <object class="GtkButton" id="btnBeautiful"> - <property name="label" translatable="yes">Beautiful</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="tooltip_text" translatable="yes">Auto configure for beautiful display</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">1</property> - <property name="secondary">True</property> - </packing> - </child> - <child> - <object class="GtkButton" id="btnSave"> - <property name="label">gtk-ok</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">2</property> - </packing> - </child> - <child> - <object class="GtkButton" id="btnCancel"> - <property name="label">gtk-cancel</property> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_stock">True</property> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">False</property> - <property name="position">3</property> - </packing> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="pack_type">end</property> - <property name="position">0</property> - </packing> - </child> </object> </child> <action-widgets> @@ -1256,167 +1381,4 @@ <action-widget response="0">btnCancel</action-widget> </action-widgets> </object> - <object class="GtkAdjustment" id="f"> - <property name="lower">20</property> - <property name="upper">200</property> - <property name="value">60</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - </object> - <object class="GtkListStore" id="liststore1"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Emulated VRam - Ok most times</col> - </row> - <row> - <col id="0" translatable="yes">Gfx card buffer reads</col> - </row> - <row> - <col id="0" translatable="yes">Gfx card buffer moves</col> - </row> - <row> - <col id="0" translatable="yes">Gfx card buffer reads and moves</col> - </row> - <row> - <col id="0" translatable="yes">Full Software (FVP)</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore2"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Emulated VRam - Needs FVP</col> - </row> - <row> - <col id="0" translatable="yes">Black - Fast, no effects</col> - </row> - <row> - <col id="0" translatable="yes">Gfx card buffer - Can be slow</col> - </row> - <row> - <col id="0" translatable="yes">Gfx card and soft - Slow</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore3"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None - Fastest, most glitches</col> - </row> - <row> - <col id="0" translatable="yes">Minimum - Missing screens</col> - </row> - <row> - <col id="0" translatable="yes">Standard - OK for most games</col> - </row> - <row> - <col id="0" translatable="yes">Enhanced - Shows more stuff</col> - </row> - <row> - <col id="0" translatable="yes">Extended - Causing garbage</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore4"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None (Standard)</col> - </row> - <row> - <col id="0" translatable="yes">2xSaI (Much vram needed)</col> - </row> - <row> - <col id="0" translatable="yes">Scaled (Needs tex filtering)</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore5"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">None</col> - </row> - <row> - <col id="0" translatable="yes">Standard - Glitches will happen</col> - </row> - <row> - <col id="0" translatable="yes">Extended - No black borders</col> - </row> - <row> - <col id="0" translatable="yes">Standard without sprites - Unfiltered 2D</col> - </row> - <row> - <col id="0" translatable="yes">Extended without sprites - Unfiltered 2D</col> - </row> - <row> - <col id="0" translatable="yes">Standard + smoothed sprites</col> - </row> - <row> - <col id="0" translatable="yes">Extended + smoothed sprites</col> - </row> - </data> - </object> - <object class="GtkListStore" id="liststore6"> - <columns> - <!-- column-name item --> - <column type="gchararray"/> - </columns> - <data> - <row> - <col id="0" translatable="yes">Don't care - Use driver's default textures</col> - </row> - <row> - <col id="0" translatable="yes">4444 - Fast, but less colorful</col> - </row> - <row> - <col id="0" translatable="yes">5551 - Nice colors, bad transparency</col> - </row> - <row> - <col id="0" translatable="yes">8888 - Best colors, more ram needed</col> - </row> - <row> - <col id="0" translatable="yes">BGR8888 - Faster on some cards</col> - </row> - </data> - </object> - <object class="GtkAdjustment" id="s"> - <property name="lower">-1</property> - <property name="upper">255</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - </object> - <object class="GtkAdjustment" id="v"> - <property name="upper">1024</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - </object> - <object class="GtkAdjustment" id="x"> - <property name="upper">9999</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - </object> - <object class="GtkAdjustment" id="y"> - <property name="upper">9999</property> - <property name="step_increment">1</property> - <property name="page_increment">10</property> - </object> </interface> diff --git a/plugins/peopsxgl/prim.c b/plugins/peopsxgl/prim.c index b2aad92b..1af588f0 100755 --- a/plugins/peopsxgl/prim.c +++ b/plugins/peopsxgl/prim.c @@ -25,7 +25,7 @@ #include "draw.h" #include "soft.h" #include "texture.h" -#include "PGXP_gpu.h" +#include "pgxp_gpu.h" //////////////////////////////////////////////////////////////////////// // defines diff --git a/po/LINGUAS b/po/LINGUAS index f9b86bf6..0f5e43ec 100755..100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1,9 +1,9 @@ zh_CN zh_TW pt_BR -ru_RU +ru it -fr_FR -hu_HU +fr +hu ko_KR es diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 3d02752c..3d02752c 100755..100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in diff --git a/po/Makevars b/po/Makevars index 7d3f81b4..7d3f81b4 100755..100644 --- a/po/Makevars +++ b/po/Makevars diff --git a/po/POTFILES.in b/po/POTFILES.in index 953ed3b5..953ed3b5 100755..100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in diff --git a/po/fr_FR.po b/po/fr.po index 50025af0..50025af0 100755..100644 --- a/po/fr_FR.po +++ b/po/fr.po diff --git a/po/hu_HU.po b/po/hu.po index 3f9f8832..3f9f8832 100755..100644 --- a/po/hu_HU.po +++ b/po/hu.po diff --git a/po/pcsxr.pot b/po/pcsxr.pot index 9c31b34b..9c31b34b 100755..100644 --- a/po/pcsxr.pot +++ b/po/pcsxr.pot diff --git a/po/pt_BR.po b/po/pt_BR.po index 2a12c5b7..2a12c5b7 100755..100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po diff --git a/po/ru_RU.po b/po/ru.po index 5120c6f6..5120c6f6 100755..100644 --- a/po/ru_RU.po +++ b/po/ru.po diff --git a/po/zh_CN.po b/po/zh_CN.po index 8835751a..8835751a 100755..100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po diff --git a/po/zh_TW.po b/po/zh_TW.po index 1380fd88..1380fd88 100755..100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po |
