summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-28 15:41:04 +0000
committerSND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2009-11-28 15:41:04 +0000
commit676eb630fbb2ac830a0befdd30a3a16705af7e86 (patch)
treef2586fbf4d2ad8f293397faf9034ccdb7a5bdef6
parent99bc6308ba92d0bf8bf158f032b21b7aa17a3bf2 (diff)
downloadpcsxr-676eb630fbb2ac830a0befdd30a3a16705af7e86.tar.gz
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38411 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rw-r--r--ChangeLog15
-rw-r--r--data/pcsx.glade2283
-rw-r--r--gui/ConfDlg.c896
-rw-r--r--gui/ConfDlg.h50
-rw-r--r--gui/Gtk2Gui.c1086
-rw-r--r--gui/Linux.h17
-rw-r--r--gui/LnxMain.c8
-rw-r--r--gui/Makefile.am1
-rw-r--r--gui/Makefile.in5
-rw-r--r--gui/MemcardDlg.c142
-rw-r--r--libpcsxcore/psxcommon.h19
-rw-r--r--po/pcsx.pot294
-rw-r--r--po/pt_BR.po611
-rw-r--r--po/update-pot.sh3
-rw-r--r--po/zh_CN.po334
-rw-r--r--po/zh_TW.po334
16 files changed, 2385 insertions, 1713 deletions
diff --git a/ChangeLog b/ChangeLog
index 75bd640c..d4967fc9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+November 29, 2009 Wei Mingzhi <weimingzhi@gmail.com>
+
+ * data/pcsx.glade2: Got rid of GtkFileChooserButton, which is buggy. Added
+ a Toolbar which contains several most-used functions.
+ * gui/MemcardDlg.c: Got rid of GtkFileChooserButton.
+ * gui/Gtk2Gui.c: Moved configuration-related stuff into ConfDlg.c. Added
+ Toolbar support.
+ * gui/ConfDlg.c: Added.
+ * gui/ConfDlg.h: Added.
+ * gui/Linux.h: Removed unnecessary prototypes. Moved some stuff into
+ ConfDlg.h.
+ * libpcsxcore/psxcommon.h: Use MAXPATHLEN for string lengths.
+ * po/pt_BR.po, po/zh_CN.po, po/zh_TW.po, po/pcsx.pot: Updated.
+ * po/update-pot.sh: Also run msgmerge automatically.
+
November 28, 2009 Wei Mingzhi <weimingzhi@gmail.com>
* data/pcsx.glade2: Adjusted Memcard dialog.
diff --git a/data/pcsx.glade2 b/data/pcsx.glade2
index a528bf61..7576f0bd 100644
--- a/data/pcsx.glade2
+++ b/data/pcsx.glade2
@@ -3,8 +3,6 @@
<!-- interface-requires gtk+ 2.12 -->
<!-- interface-naming-policy project-wide -->
<widget class="GtkWindow" id="MainWindow">
- <property name="width_request">350</property>
- <property name="height_request">195</property>
<property name="visible">True</property>
<property name="title" translatable="yes">PCSX</property>
<property name="resizable">False</property>
@@ -589,12 +587,158 @@
</packing>
</child>
<child>
+ <widget class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="toolbar_style">icons</property>
+ <property name="icon_size_set">True</property>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_runcd">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Run CD</property>
+ <property name="label" translatable="yes">Run CD</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-cdrom</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_runimage">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Run ISO Image</property>
+ <property name="label" translatable="yes">Run ISO...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-open</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSeparatorToolItem" id="toolbutton3">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_switchimage">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Switch ISO Image</property>
+ <property name="label" translatable="yes">Switch ISO...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-undo</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkSeparatorToolItem" id="toolbutton4">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_memcards">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Configure Memory Cards</property>
+ <property name="label" translatable="yes">Memcards...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-floppy</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_graphics">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Configure Graphics</property>
+ <property name="label" translatable="yes">Graphics...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-select-color</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_sound">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Configure Sound</property>
+ <property name="label" translatable="yes">Sound...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-convert</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_cdrom">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Configure CD-ROM</property>
+ <property name="label" translatable="yes">CD-ROM...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-cdrom</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkToolButton" id="toolbutton_controllers">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Configure Controllers</property>
+ <property name="label" translatable="yes">Controllers...</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-execute</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkImage" id="image160">
+ <property name="width_request">354</property>
+ <property name="height_request">174</property>
<property name="visible">True</property>
<property name="pixbuf">pcsx.jpg</property>
</widget>
<packing>
- <property name="position">1</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkStatusbar" id="statusbar">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <property name="has_resize_grip">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">3</property>
</packing>
</child>
</widget>
@@ -1897,12 +2041,61 @@ PAL</property>
</packing>
</child>
<child>
- <widget class="GtkFileChooserButton" id="GtkMcd1FSButton">
+ <widget class="GtkButton" id="Mcd1Button">
<property name="visible">True</property>
- <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <widget class="GtkImage" id="image30">
+ <property name="visible">True</property>
+ <property name="stock">gtk-floppy</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="Mcd1Label">
+ <property name="visible">True</property>
+ <property name="label">Loading...</property>
+ <property name="ellipsize">middle</property>
+ <property name="single_line_mode">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVSeparator" id="vseparator1">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkImage" id="image31">
+ <property name="visible">True</property>
+ <property name="stock">gtk-open</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
@@ -1938,7 +2131,7 @@ PAL</property>
<widget class="GtkAlignment" id="alignment51">
<property name="visible">True</property>
<property name="top_padding">27</property>
- <property name="bottom_padding">102</property>
+ <property name="bottom_padding">132</property>
<child>
<widget class="GtkVButtonBox" id="vbuttonbox2">
<property name="visible">True</property>
@@ -2246,12 +2439,61 @@ PAL</property>
</packing>
</child>
<child>
- <widget class="GtkFileChooserButton" id="GtkMcd2FSButton">
+ <widget class="GtkButton" id="Mcd2Button">
<property name="visible">True</property>
- <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox3">
+ <property name="visible">True</property>
+ <property name="spacing">3</property>
+ <child>
+ <widget class="GtkImage" id="image32">
+ <property name="visible">True</property>
+ <property name="stock">gtk-floppy</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="Mcd2Label">
+ <property name="visible">True</property>
+ <property name="label">Loading...</property>
+ <property name="ellipsize">middle</property>
+ <property name="single_line_mode">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVSeparator" id="vseparator2">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkImage" id="image33">
+ <property name="visible">True</property>
+ <property name="stock">gtk-open</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="expand">False</property>
<property name="position">2</property>
</packing>
</child>
@@ -2293,23 +2535,8 @@ PAL</property>
<property name="visible">True</property>
<property name="layout_style">end</property>
<child>
- <widget class="GtkButton" id="cancelbutton3">
- <property name="label">gtk-cancel</property>
- <property name="response_id">-6</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <property name="use_stock">True</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <widget class="GtkButton" id="okbutton3">
- <property name="label">gtk-ok</property>
+ <widget class="GtkButton" id="McdClose">
+ <property name="label">gtk-close</property>
<property name="response_id">-5</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -2320,7 +2547,7 @@ PAL</property>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
</widget>
diff --git a/gui/ConfDlg.c b/gui/ConfDlg.c
new file mode 100644
index 00000000..5320629b
--- /dev/null
+++ b/gui/ConfDlg.c
@@ -0,0 +1,896 @@
+/* Pcsx - Pc Psx Emulator
+ * Copyright (C) 1999-2002 Pcsx Team
+ *
+ * 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 Steet, Fifth Floor, Boston, MA 02111-1307 USA
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <dirent.h>
+#include <dlfcn.h>
+#include <sys/stat.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <glade/glade.h>
+#include <signal.h>
+#include <sys/time.h>
+#include <regex.h>
+#include "Linux.h"
+#include "ConfDlg.h"
+
+#include "../libpcsxcore/plugins.h"
+
+static void OnBiosPath_Changed(GtkWidget *wdg, gpointer data);
+static void OnConf_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data);
+static void OnPluginPath_Changed(GtkWidget *wdg, gpointer data);
+static void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data);
+static void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data);
+static void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data);
+static void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data);
+static void OnNet_Conf(GtkWidget *widget, gpointer user_data);
+static void OnNet_About(GtkWidget *widget, gpointer user_data);
+static void on_configure_plugin(GtkWidget *widget, gpointer user_data);
+static void on_about_plugin(GtkWidget *widget, gpointer user_data);
+static void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml);
+static void FindNetPlugin(GladeXML *xml);
+
+PSEgetLibType PSE_getLibType = NULL;
+PSEgetLibVersion PSE_getLibVersion = NULL;
+PSEgetLibName PSE_getLibName = NULL;
+
+GtkWidget *ConfDlg = NULL;
+GtkWidget *NetDlg = NULL;
+GtkWidget *controlwidget = NULL;
+
+PluginConf GpuConfS;
+PluginConf SpuConfS;
+PluginConf CdrConfS;
+PluginConf Pad1ConfS;
+PluginConf Pad2ConfS;
+PluginConf NetConfS;
+PluginConf BiosConfS;
+
+#define FindComboText(combo, list, conf) \
+ if (strlen(conf) > 0) { \
+ int i; \
+ for (i = 2; i < 255; i += 2) { \
+ if (!strcmp(conf, list[i - 2])) { \
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo), i / 2 - 1); \
+ break; \
+ } \
+ } \
+ }
+
+#define GetComboText(combo, list, conf) \
+ { \
+ int row; \
+ row = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); \
+ strcpy(conf, (char *)list[row * 2]); \
+ }
+
+void ConfigurePlugins() {
+ if (!UseGui) {
+ /* How do we get here if we're not running the GUI? */
+ /* Ryan: we're going to imagine that someday, there will be a way
+ * to configure plugins from the commandline */
+ printf("ERROR: Plugins cannot be configured without the GUI.");
+ return;
+ }
+
+ GladeXML *xml;
+ GtkWidget *widget;
+
+ gchar *path;
+
+ UpdatePluginsBIOS();
+
+ xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "ConfDlg", NULL);
+
+ if (!xml) {
+ g_warning(_("Error: Glade interface could not be loaded!"));
+ return;
+ }
+
+ UpdatePluginsBIOS_UpdateGUI(xml);
+
+ ConfDlg = glade_xml_get_widget(xml, "ConfDlg");
+
+ gtk_window_set_title(GTK_WINDOW(ConfDlg), _("Configure PCSX"));
+
+ /* Set the paths in the file choosers to be based on the saved configurations */
+ widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios");
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget), Config.BiosDir);
+
+ widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin");
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget), Config.PluginsDir);
+
+ if (strlen(Config.PluginsDir) == 0) {
+ if((path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget))) != NULL) {
+ strcpy(Config.PluginsDir, path);
+ g_free(path);
+ }
+ }
+
+ widget = glade_xml_get_widget(xml, "btn_ConfGpu");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_ConfSpu");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
+
+ /* ADB TODO Does pad 1 and 2 need to be different? */
+ widget = glade_xml_get_widget(xml, "btn_ConfPad1");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnConfConf_Pad1Conf), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_ConfPad2");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnConfConf_Pad2Conf), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_ConfCdr");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutGpu");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutSpu");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutPad1");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnConfConf_Pad1About), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutPad2");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnConfConf_Pad2About), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutCdr");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios");
+ g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed",
+ GTK_SIGNAL_FUNC(OnBiosPath_Changed), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin");
+ g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed",
+ GTK_SIGNAL_FUNC(OnPluginPath_Changed), xml, NULL, G_CONNECT_AFTER);
+
+ g_signal_connect_data(GTK_OBJECT(ConfDlg), "response",
+ GTK_SIGNAL_FUNC(OnConf_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
+}
+
+void OnNet_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
+ if (arg1 == GTK_RESPONSE_OK) {
+ GetComboText(NetConfS.Combo, NetConfS.plist, Config.Net);
+ SaveConfig();
+ }
+
+ gtk_widget_destroy(GTK_WIDGET (dialog));
+ NetDlg = NULL;
+}
+
+void OnConf_Net() {
+ GladeXML *xml;
+ GtkWidget *widget;
+
+ if (NetDlg != NULL) {
+ gtk_window_present (GTK_WINDOW (NetDlg));
+ return;
+ }
+
+ xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "NetDlg", NULL);
+
+ if (!xml) {
+ g_warning(_("Error: Glade interface could not be loaded!"));
+ return;
+ }
+
+ NetDlg = glade_xml_get_widget(xml, "NetDlg");
+
+ FindNetPlugin(xml);
+
+ /* Setup a handler for when Close or Cancel is clicked */
+ g_signal_connect_data(GTK_OBJECT(NetDlg), "response",
+ GTK_SIGNAL_FUNC(OnNet_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_ConfNet");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnNet_Conf), xml, NULL, G_CONNECT_AFTER);
+
+ widget = glade_xml_get_widget(xml, "btn_AboutNet");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnNet_About), xml, NULL, G_CONNECT_AFTER);
+}
+
+void OnConf_Graphics() {
+ void *drv;
+ GPUconfigure conf;
+ char Plugin[MAXPATHLEN];
+
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Gpu);
+ drv = SysLoadLibrary(Plugin);
+ if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
+
+ while (gtk_events_pending()) gtk_main_iteration();
+
+ conf = (GPUconfigure)SysLoadSym(drv, "GPUconfigure");
+ if (conf != NULL) {
+ conf();
+ }
+ else
+ SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
+
+ SysCloseLibrary(drv);
+}
+
+void OnConf_Sound() {
+ void *drv;
+ SPUconfigure conf;
+ char Plugin[MAXPATHLEN];
+
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Spu);
+ drv = SysLoadLibrary(Plugin);
+ if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
+
+ while (gtk_events_pending()) gtk_main_iteration();
+
+ conf = (GPUconfigure)SysLoadSym(drv, "SPUconfigure");
+ if (conf != NULL) {
+ conf();
+ }
+ else
+ SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
+
+ SysCloseLibrary(drv);
+}
+
+void OnConf_CdRom() {
+ void *drv;
+ CDRconfigure conf;
+ char Plugin[MAXPATHLEN];
+
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr);
+ drv = SysLoadLibrary(Plugin);
+ if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
+
+ while (gtk_events_pending()) gtk_main_iteration();
+
+ conf = (GPUconfigure)SysLoadSym(drv, "CDRconfigure");
+ if (conf != NULL) {
+ conf();
+ }
+ else
+ SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
+
+ SysCloseLibrary(drv);
+}
+
+void OnConf_Pad() {
+ void *drv;
+ PADconfigure conf;
+ char Plugin[MAXPATHLEN];
+
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad1);
+ drv = SysLoadLibrary(Plugin);
+ if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
+
+ while (gtk_events_pending()) gtk_main_iteration();
+
+ conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure");
+ if (conf != NULL) {
+ conf();
+ }
+ else
+ SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
+
+ SysCloseLibrary(drv);
+
+ if (strcmp(Config.Pad1, Config.Pad2) != 0) {
+ sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad2);
+ drv = SysLoadLibrary(Plugin);
+ if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
+
+ while (gtk_events_pending()) gtk_main_iteration();
+
+ conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure");
+ if (conf != NULL) {
+ conf();
+ }
+
+ SysCloseLibrary(drv);
+ }
+}
+
+static int all_config_set() {
+ int retval;
+
+ if ((strlen(Config.Gpu) != 0) &&
+ (strlen(Config.Spu) != 0) &&
+ (strlen(Config.Cdr) != 0) &&
+ (strlen(Config.Pad1) != 0) &&
+ (strlen(Config.Pad2) != 0))
+ retval = TRUE;
+ else
+ retval = FALSE;
+
+ return retval;
+}
+
+/* TODO Check whether configuration is required when we choose the plugin, and set the state of the
+ button appropriately. New gtk tooltip API should allow us to put a tooltip explanation for
+ disabled widgets */
+/* TODO If combo screen hasn't been opened and the user chooses the menu config option, confs.Combo will be null and cause a segfault */
+#define ConfPlugin(src, confs, plugin, name, parent) { \
+ void *drv; \
+ src conf; \
+ gchar *filename; \
+ \
+ GetComboText(confs.Combo, confs.plist, plugin); \
+ filename = g_build_filename (getenv("HOME"), PLUGINS_DIR, plugin, NULL); \
+ /*printf("Configuring plugin %s\n", filename);*/ \
+ drv = SysLoadLibrary(filename); \
+ if (drv == NULL) {printf("Error with file %s\n", filename);return; } \
+\
+ while (gtk_events_pending()) gtk_main_iteration(); \
+ conf = (src) SysLoadSym(drv, name); \
+ if (conf) { \
+ conf(); \
+ } else \
+ SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); \
+ SysCloseLibrary(drv); \
+ g_free (filename); \
+}
+
+static void on_configure_plugin(GtkWidget *widget, gpointer user_data) {
+ gint plugin_type = (int) user_data;
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ if (all_config_set() == TRUE) {
+ switch (plugin_type) {
+ case PSE_LT_GPU:
+ ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUconfigure", ConfDlg);
+ break;
+ case PSE_LT_SPU:
+ ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUconfigure", ConfDlg);
+ break;
+ case PSE_LT_CDR:
+ ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRconfigure", ConfDlg);
+ break;
+ }
+ } else
+ ConfigurePlugins();
+}
+
+static void on_about_plugin(GtkWidget *widget, gpointer user_data) {
+ gint plugin_type = (int) user_data;
+
+ while (gtk_events_pending())
+ gtk_main_iteration();
+ if (all_config_set() == TRUE) {
+ switch (plugin_type) {
+ case PSE_LT_GPU:
+ ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUabout", ConfDlg);
+ break;
+ case PSE_LT_SPU:
+ ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUabout", ConfDlg);
+ break;
+ case PSE_LT_CDR:
+ ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRabout", ConfDlg);
+ break;
+ }
+ } else
+ ConfigurePlugins();
+}
+
+static void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADabout", ConfDlg);
+}
+
+static void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADabout", ConfDlg);
+}
+
+static void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADconfigure", ConfDlg);
+}
+
+static void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADconfigure", ConfDlg);
+}
+
+static void OnNet_Conf(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(NETconfigure, NetConfS, Config.Net, "NETconfigure", NetDlg);
+}
+
+static void OnNet_About(GtkWidget *widget, gpointer user_data) {
+ ConfPlugin(NETabout, NetConfS, Config.Net, "NETabout", NetDlg);
+}
+
+static void OnPluginPath_Changed(GtkWidget *wdg, gpointer data) {
+ gchar *path;
+
+ path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg));
+ strcpy(Config.PluginsDir, path);
+ UpdatePluginsBIOS();
+ UpdatePluginsBIOS_UpdateGUI(data);
+
+ g_free(path);
+}
+
+static void OnBiosPath_Changed(GtkWidget *wdg, gpointer data) {
+ gchar *foldername;
+
+ foldername = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg));
+ strcpy(Config.BiosDir, foldername);
+
+ UpdatePluginsBIOS();
+ UpdatePluginsBIOS_UpdateGUI(data);
+
+ g_free(foldername);
+}
+
+void OnConf_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
+ if (arg1 == GTK_RESPONSE_OK) {
+ GetComboText(GpuConfS.Combo, GpuConfS.plist, Config.Gpu);
+ GetComboText(SpuConfS.Combo, SpuConfS.plist, Config.Spu);
+ GetComboText(CdrConfS.Combo, CdrConfS.plist, Config.Cdr);
+ GetComboText(Pad1ConfS.Combo, Pad1ConfS.plist, Config.Pad1);
+ GetComboText(Pad2ConfS.Combo, Pad2ConfS.plist, Config.Pad2);
+ GetComboText(BiosConfS.Combo, BiosConfS.plist, Config.Bios);
+
+ SaveConfig();
+ }
+
+ gtk_widget_destroy(ConfDlg);
+ ConfDlg = NULL;
+}
+
+#define ComboAddPlugin(type) { \
+ type##ConfS.plugins += 2; \
+ strcpy(type##ConfS.plist[type##ConfS.plugins - 1], name); \
+ strcpy(type##ConfS.plist[type##ConfS.plugins - 2], ent->d_name); \
+ type##ConfS.glist = g_list_append(type##ConfS.glist, type##ConfS.plist[type##ConfS.plugins-1]); \
+}
+
+void populate_combo_box(GtkWidget *widget, GList *list) {
+ GtkListStore *store;
+ GtkCellRenderer *renderer;
+ store = gtk_list_store_new(1, G_TYPE_STRING);
+
+ // Clear existing data from combo box
+ gtk_cell_layout_clear(GTK_CELL_LAYOUT(widget));
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, FALSE);
+ gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(widget), renderer, "text", 0);
+
+ while (list != NULL) {
+ GtkTreeIter iter;
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter, 0, (char *)list->data, -1);
+ list = list->next;
+ }
+
+ gtk_combo_box_set_model(GTK_COMBO_BOX(widget), GTK_TREE_MODEL(store));
+}
+
+#define ConfCreatePConf(name, type) \
+ /* Populate the relevant combo widget with the list of plugins. \
+ If no plugins available, disable the combo and its controls. \
+ Note that the Bios plugin has no About/Conf control. */ \
+ type##ConfS.Combo = glade_xml_get_widget(xml, "GtkCombo_" name); \
+ if (type##ConfS.glist != NULL) { \
+ populate_combo_box (type##ConfS.Combo, type##ConfS.glist); \
+ FindComboText(type##ConfS.Combo, type##ConfS.plist, Config.type); \
+ gtk_widget_set_sensitive (type##ConfS.Combo, TRUE); \
+ if (g_ascii_strcasecmp (name, "Bios") != 0) { \
+ controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \
+ gtk_widget_set_sensitive (controlwidget, TRUE); \
+ controlwidget = glade_xml_get_widget(xml, "btn_About" name); \
+ gtk_widget_set_sensitive (controlwidget, TRUE); \
+ } \
+ } else { \
+ if (g_ascii_strcasecmp (name, "Bios") != 0) { \
+ gtk_cell_layout_clear (GTK_CELL_LAYOUT (type##ConfS.Combo)); \
+ gtk_widget_set_sensitive (type##ConfS.Combo, FALSE); \
+ controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \
+ gtk_widget_set_sensitive (controlwidget, FALSE); \
+ controlwidget = glade_xml_get_widget(xml, "btn_About" name); \
+ gtk_widget_set_sensitive (controlwidget, FALSE); \
+ } \
+ }
+
+int plugin_is_available(gchar *plugin) {
+ int retval;
+ gchar *pluginfile;
+ struct stat stbuf;
+
+ pluginfile = g_strconcat(getenv("HOME"), PLUGINS_DIR, plugin, NULL);
+
+ if (stat(pluginfile, &stbuf) == -1)
+ retval = FALSE;
+ else
+ retval = TRUE;
+
+ g_free(pluginfile);
+
+ return retval;
+}
+
+int plugins_configured() {
+ // make sure there are choices for all of the plugins!!
+ if (all_config_set() == FALSE)
+ return FALSE;
+
+ // and make sure they can all be accessed
+ // if they can't be, wipe the variable and return FALSE
+ if (plugin_is_available (Config.Gpu) == FALSE) { Config.Gpu[0] = '\0'; return FALSE; }
+ if (plugin_is_available (Config.Spu) == FALSE) { Config.Spu[0] = '\0'; return FALSE; }
+ if (plugin_is_available (Config.Cdr) == FALSE) { Config.Cdr[0] = '\0'; return FALSE; }
+ if (plugin_is_available (Config.Pad1) == FALSE) { Config.Pad1[0] = '\0'; return FALSE; }
+ if (plugin_is_available (Config.Pad2) == FALSE) { Config.Pad2[0] = '\0'; return FALSE; }
+
+ // if everything is happy, return TRUE
+ return TRUE;
+}
+
+int is_valid_bios_file(gchar *filename) {
+ int valid;
+ struct stat buf;
+
+ if ((stat(filename, &buf) == -1) || (buf.st_size != (1024*512)))
+ valid = FALSE;
+ else {
+ valid = TRUE;
+ }
+
+ return valid;
+}
+
+// Add the name of the BIOS file to the drop-down list. This will
+// be the filename, not the full path to the file
+void add_bios_to_list(gchar *bios_name, gchar *internal_name) {
+ BiosConfS.plugins += 2;
+ strcpy(BiosConfS.plist[BiosConfS.plugins - 1], bios_name);
+ strcpy(BiosConfS.plist[BiosConfS.plugins - 2], internal_name);
+ BiosConfS.glist = g_list_append(BiosConfS.glist, BiosConfS.plist[BiosConfS.plugins - 1]);
+}
+
+void scan_bios_dir(gchar *dirname) {
+ DIR *dir;
+ struct dirent *ent;
+ gchar *filename;
+
+ dir = opendir(dirname);
+ if (dir == NULL) {
+ SysMessage(_("Could not open BIOS directory: '%s'\n"), dirname);
+ return;
+ }
+
+ while ((ent = readdir(dir)) != NULL) {
+ filename = g_build_filename(dirname, ent->d_name, NULL);
+ if (is_valid_bios_file(filename))
+ add_bios_to_list(g_path_get_basename(filename), g_path_get_basename (filename));
+ g_free(filename);
+ }
+ closedir(dir);
+}
+
+void UpdatePluginsBIOS() {
+ DIR *dir;
+ struct dirent *ent;
+ void *Handle;
+ char name[256];
+ gchar *linkname;
+
+ GpuConfS.plugins = 0; SpuConfS.plugins = 0; CdrConfS.plugins = 0;
+ Pad1ConfS.plugins = 0; Pad2ConfS.plugins = 0; BiosConfS.plugins = 0;
+ GpuConfS.glist = NULL; SpuConfS.glist = NULL; CdrConfS.glist = NULL;
+ Pad1ConfS.glist = NULL; Pad2ConfS.glist = NULL; BiosConfS.glist = NULL;
+ GpuConfS.plist[0][0] = '\0'; SpuConfS.plist[0][0] = '\0'; CdrConfS.plist[0][0] = '\0';
+ Pad1ConfS.plist[0][0] = '\0'; Pad2ConfS.plist[0][0] = '\0'; BiosConfS.plist[0][0] = '\0';
+
+ // Load and get plugin info
+ dir = opendir(Config.PluginsDir);
+ if (dir == NULL) {
+ printf(_("Could not open directory: '%s'\n"), Config.PluginsDir);
+ return;
+ }
+ while ((ent = readdir(dir)) != NULL) {
+ long type, v;
+ linkname = g_build_filename(Config.PluginsDir, ent->d_name, NULL);
+
+ // only libraries past this point, not config tools
+ if (strstr(linkname, ".so") == NULL && strstr(linkname, ".dylib") == NULL)
+ continue;
+
+ Handle = dlopen(linkname, RTLD_NOW);
+ if (Handle == NULL) {
+ printf("%s\n", dlerror());
+ g_free(linkname);
+ continue;
+ }
+
+ PSE_getLibType = (PSEgetLibType)dlsym(Handle, "PSEgetLibType");
+ if (dlerror() != NULL) {
+ if (strstr(linkname, "gpu") != NULL) type = PSE_LT_GPU;
+ else if (strstr(linkname, "cdr") != NULL) type = PSE_LT_CDR;
+ else if (strstr(linkname, "spu") != NULL) type = PSE_LT_SPU;
+ else if (strstr(linkname, "pad") != NULL) type = PSE_LT_PAD;
+ else { g_free(linkname); continue; }
+ }
+ else type = PSE_getLibType();
+
+ PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
+ if (dlerror() == NULL) {
+ sprintf(name, "%s", PSE_getLibName());
+ PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion");
+ if (dlerror() == NULL) {
+ char ver[32];
+
+ v = PSE_getLibVersion();
+ sprintf(ver, " %ld.%ld.%ld", v >> 16, (v >> 8) & 0xff, v & 0xff);
+ strcat(name, ver);
+ }
+ }
+ else strcpy(name, ent->d_name);
+
+ if (type & PSE_LT_CDR)
+ ComboAddPlugin(Cdr);
+ if (type & PSE_LT_GPU)
+ ComboAddPlugin(Gpu);
+ if (type & PSE_LT_SPU)
+ ComboAddPlugin(Spu);
+ if (type & PSE_LT_PAD) {
+ PADquery query = (PADquery)dlsym(Handle, "PADquery");
+ if (query() & 0x1) {
+ ComboAddPlugin(Pad1);
+ }
+ if (query() & 0x2) {
+ ComboAddPlugin(Pad2);
+ }
+ }
+ g_free(linkname);
+ }
+ closedir(dir);
+
+ scan_bios_dir(Config.BiosDir);
+
+ // The BIOS list always contains the PCSX internal BIOS
+ add_bios_to_list(_("Internal HLE Bios"), "HLE");
+}
+
+static void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml) {
+ // Populate the plugin combo boxes
+ ConfCreatePConf("Gpu", Gpu);
+ ConfCreatePConf("Spu", Spu);
+ ConfCreatePConf("Pad1", Pad1);
+ ConfCreatePConf("Pad2", Pad2);
+ ConfCreatePConf("Cdr", Cdr);
+ ConfCreatePConf("Bios", Bios);
+}
+
+static void FindNetPlugin(GladeXML *xml) {
+ DIR *dir;
+ struct dirent *ent;
+ void *Handle;
+ char plugin[MAXPATHLEN],name[MAXPATHLEN];
+
+ NetConfS.plugins = 0;
+ NetConfS.glist = NULL;
+
+ NetConfS.plugins += 2;
+ strcpy(NetConfS.plist[NetConfS.plugins - 1], "Disabled");
+ strcpy(NetConfS.plist[NetConfS.plugins - 2], "Disabled");
+ NetConfS.glist = g_list_append(NetConfS.glist, NetConfS.plist[NetConfS.plugins - 1]);
+
+ dir = opendir(Config.PluginsDir);
+ if (dir == NULL)
+ SysMessage(_("Could not open directory: '%s'\n"), Config.PluginsDir);
+ else {
+ /* ADB TODO Replace the following with a function */
+ while ((ent = readdir(dir)) != NULL) {
+ long type, v;
+
+ sprintf(plugin, "%s/%s", Config.PluginsDir, ent->d_name);
+
+ if (strstr(plugin, ".so") == NULL && strstr(plugin, ".dylib") == NULL)
+ continue;
+ Handle = dlopen(plugin, RTLD_NOW);
+ if (Handle == NULL) continue;
+
+ PSE_getLibType = (PSEgetLibType) dlsym(Handle, "PSEgetLibType");
+ if (dlerror() != NULL) {
+ if (strstr(plugin, "net") != NULL) type = PSE_LT_NET;
+ else continue;
+ }
+ else type = PSE_getLibType();
+
+ PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
+ if (dlerror() == NULL) {
+ sprintf(name, "%s", PSE_getLibName());
+ PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion");
+ if (dlerror() == NULL) {
+ char ver[32];
+
+ v = PSE_getLibVersion();
+ sprintf(ver, " %ld.%ld.%ld",v>>16,(v>>8)&0xff,v&0xff);
+ strcat(name, ver);
+ }
+ }
+ else strcpy(name, ent->d_name);
+
+ if (type & PSE_LT_NET) {
+ ComboAddPlugin(Net);
+ }
+ }
+ closedir(dir);
+
+ ConfCreatePConf("Net", Net);
+ }
+}
+
+GtkWidget *CpuDlg;
+GtkWidget *PsxCombo;
+GList *psxglist;
+char *psxtypes[] = {
+ "NTSC",
+ "PAL"
+};
+
+// When the auto-detect CPU type is selected, disable the NTSC/PAL selection
+static void OnCpu_PsxAutoClicked (GtkWidget *widget, gpointer user_data) {
+ GtkWidget *combo;
+ GladeXML *xml = user_data;
+ combo = glade_xml_get_widget(xml, "GtkCombo_PsxType");
+
+ gtk_widget_set_sensitive (combo,
+ !(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))));
+}
+
+// When the interpreter core is deselected, disable the debugger checkbox
+static void OnCpu_CpuClicked(GtkWidget *widget, gpointer user_data) {
+ GtkWidget *check;
+ GladeXML *xml = user_data;
+ check = glade_xml_get_widget(xml, "GtkCheckButton_Dbg");
+
+ // Debugger is only working with interpreter not recompiler, so let's set it
+ if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), FALSE);
+
+ gtk_widget_set_sensitive (check,
+ gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
+}
+
+void OnCpu_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
+ if (arg1 == GTK_RESPONSE_OK) {
+ GtkWidget *widget;
+ GladeXML *xml = user_data;
+ int tmp;
+ long t;
+
+ widget = glade_xml_get_widget(xml, "GtkCombo_PsxType");
+
+ // If nothing chosen, default to NTSC
+ tmp = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
+ if (tmp == -1)
+ tmp = PSX_TYPE_NTSC;
+
+ if (!strcmp("NTSC", psxtypes[tmp]))
+ Config.PsxType = PSX_TYPE_NTSC;
+ else
+ Config.PsxType = PSX_TYPE_PAL;
+
+ Config.Xa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Xa")));
+ Config.Sio = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Sio")));
+ Config.Mdec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Mdec")));
+ Config.Cdda = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_CDDA")));
+ Config.PsxAuto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")));
+
+ t = Config.Debug;
+ Config.Debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Dbg")));
+ if (t != Config.Debug) {
+ if (Config.Debug) StartDebugger();
+ else StopDebugger();
+ }
+
+ t = Config.Cpu;
+ Config.Cpu = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Cpu")));
+ if (t != Config.Cpu) {
+ psxCpu->Shutdown();
+#ifdef PSXREC
+ if (Config.Cpu) {
+ psxCpu = &psxInt;
+ }
+ else psxCpu = &psxRec;
+#else
+ psxCpu = &psxInt;
+#endif
+ if (psxCpu->Init() == -1) {
+ SysClose();
+ exit(1);
+ }
+ psxCpu->Reset();
+ }
+
+ Config.PsxOut = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxOut")));
+ Config.SpuIrq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq")));
+ Config.RCntFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_RCntFix")));
+ Config.VSyncWA = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA")));
+
+ SaveConfig();
+ }
+
+ gtk_widget_destroy(CpuDlg);
+ CpuDlg = NULL;
+}
+
+void OnConf_Cpu() {
+ GladeXML *xml;
+
+ xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "CpuDlg", NULL);
+
+ if (!xml) {
+ g_warning("We could not load the interface!");
+ return;
+ }
+
+ CpuDlg = glade_xml_get_widget(xml, "CpuDlg");
+
+ PsxCombo = glade_xml_get_widget(xml, "GtkCombo_PsxType");
+ gtk_combo_box_set_active(GTK_COMBO_BOX (PsxCombo), Config.PsxType);
+ gtk_widget_set_sensitive(GTK_WIDGET (PsxCombo), !Config.PsxAuto);
+
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Xa")), Config.Xa);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Sio")), Config.Sio);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Mdec")), Config.Mdec);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_CDDA")), Config.Cdda);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), Config.PsxAuto);
+
+ g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), "toggled",
+ GTK_SIGNAL_FUNC(OnCpu_PsxAutoClicked), xml, NULL, G_CONNECT_AFTER);
+
+#ifdef PSXREC
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), Config.Cpu);
+
+ g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), "toggled",
+ GTK_SIGNAL_FUNC(OnCpu_CpuClicked), xml, NULL, G_CONNECT_AFTER);
+#else
+ Config.Cpu = 1;
+
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), TRUE);
+ gtk_widget_set_sensitive(GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), FALSE);
+#endif
+
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu && Config.Debug);
+ gtk_widget_set_sensitive(GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu);
+
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxOut")), Config.PsxOut);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq")), Config.SpuIrq);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_RCntFix")), Config.RCntFix);
+ gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA")), Config.VSyncWA);
+
+ // Setup a handler for when Close or Cancel is clicked
+ g_signal_connect_data(GTK_OBJECT(CpuDlg), "response",
+ GTK_SIGNAL_FUNC(OnCpu_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
+}
diff --git a/gui/ConfDlg.h b/gui/ConfDlg.h
new file mode 100644
index 00000000..00e10c10
--- /dev/null
+++ b/gui/ConfDlg.h
@@ -0,0 +1,50 @@
+/* Pcsx - Pc Psx Emulator
+ * Copyright (C) 1999-2002 Pcsx Team
+ *
+ * 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 Steet, Fifth Floor, Boston, MA 02111-1307 USA
+ */
+
+#ifndef CONFDLG_H
+#define CONFDLG_H
+
+// Helper Functions
+void UpdatePluginsBIOS();
+
+// Functions Callbacks
+void OnConf_Graphics();
+void OnConf_Sound();
+void OnConf_CdRom();
+void OnConf_Pad();
+void OnConf_Cpu();
+void OnConf_Net();
+
+void ConfigurePlugins();
+
+typedef struct {
+ GtkWidget *Combo;
+ GList *glist;
+ char plist[255][255]; /* TODO Comment this out */
+ int plugins; /* TODO Comment this out and replace with glist count */
+} PluginConf;
+
+extern PluginConf GpuConfS;
+extern PluginConf SpuConfS;
+extern PluginConf CdrConfS;
+extern PluginConf Pad1ConfS;
+extern PluginConf Pad2ConfS;
+extern PluginConf NetConfS;
+extern PluginConf BiosConfS;
+
+#endif
diff --git a/gui/Gtk2Gui.c b/gui/Gtk2Gui.c
index dbccbf35..0bc5bf24 100644
--- a/gui/Gtk2Gui.c
+++ b/gui/Gtk2Gui.c
@@ -33,22 +33,10 @@
#include "Linux.h"
#include "../libpcsxcore/plugins.h"
-#include "../libpcsxcore/sio.h"
#include "../libpcsxcore/cheat.h"
#include "MemcardDlg.h"
-
-PSEgetLibType PSE_getLibType = NULL;
-PSEgetLibVersion PSE_getLibVersion = NULL;
-PSEgetLibName PSE_getLibName = NULL;
-
-// Helper Functions
-void UpdatePluginsBIOS();
-void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml);
-void FindNetPlugin(GladeXML *xml);
-
-void OnNet_Conf(GtkWidget *widget, gpointer user_data);
-void OnNet_About(GtkWidget *widget, gpointer user_data);
+#include "ConfDlg.h"
// Functions Callbacks
void OnFile_RunCd();
@@ -58,62 +46,22 @@ void OnFile_RunImage();
void OnEmu_Run();
void OnEmu_Reset();
void OnEmu_SwitchImage();
-void OnConf_Graphics();
-void OnConf_Sound();
-void OnConf_CdRom();
-void OnConf_Pad();
-void OnConf_Cpu();
-void OnConf_Net();
void OnHelp_Help();
void OnHelp_About();
void OnDestroy();
void OnFile_Exit();
-void OnBiosPath_Changed(GtkWidget *wdg, gpointer data);
-void OnConf_Clicked (GtkDialog *dialog, gint arg1, gpointer user_data);
-void OnPluginPath_Changed(GtkWidget *wdg, gpointer data);
-void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data);
-void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data);
-void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data);
-void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data);
-
void on_states_load(GtkWidget *widget, gpointer user_data);
void on_states_load_other();
void on_states_save(GtkWidget *widget, gpointer user_data);
void on_states_save_other();
-void on_configure_plugin(GtkWidget *widget, gpointer user_data);
-void on_about_plugin(GtkWidget *widget, gpointer user_data);
-
GtkWidget *Window = NULL;
-GtkWidget *ConfDlg = NULL;
-
-//GtkAccelGroup *AccelGroup;
-
-GtkWidget *controlwidget;
int destroy = 0;
#define MAX_SLOTS 5
-#define FindComboText(combo, list, conf) \
- if (strlen(conf) > 0) { \
- int i; \
- for (i = 2; i < 255; i += 2) { \
- if (!strcmp(conf, list[i - 2])) { \
- gtk_combo_box_set_active (GTK_COMBO_BOX (combo), i / 2 - 1); \
- break; \
- } \
- } \
- }
-
-#define GetComboText(combo, list, conf) \
- { \
- int row; \
- row = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); \
- strcpy(conf, (char *)list[row * 2]); \
- }
-
/* TODO - If MAX_SLOTS changes, need to find a way to automatically set all positions */
int Slots[MAX_SLOTS] = { -1, -1, -1, -1, -1 };
@@ -123,7 +71,7 @@ void ResetMenuSlots(GladeXML *xml) {
int i;
if (CdromId[0] == '\0') {
- /* disable state saving/loading if no CD is loaded */
+ // disable state saving/loading if no CD is loaded
for (i = 0; i < MAX_SLOTS; i++) {
str = g_strdup_printf("GtkMenuItem_SaveSlot%d", i+1);
widget = glade_xml_get_widget(xml, str);
@@ -132,24 +80,26 @@ void ResetMenuSlots(GladeXML *xml) {
gtk_widget_set_sensitive(widget, FALSE);
str = g_strdup_printf("GtkMenuItem_LoadSlot%d", i+1);
- widget = glade_xml_get_widget (xml, str);
- g_free (str);
+ widget = glade_xml_get_widget(xml, str);
+ g_free(str);
gtk_widget_set_sensitive(widget, FALSE);
}
- /* also disable certain menu items */
- widget = glade_xml_get_widget (xml, "other1");
+ // also disable certain menu/toolbar items
+ widget = glade_xml_get_widget(xml, "other1");
+ gtk_widget_set_sensitive(widget, FALSE);
+ widget = glade_xml_get_widget(xml, "other2");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "other2");
+ widget = glade_xml_get_widget(xml, "run1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "run1");
+ widget = glade_xml_get_widget(xml, "reset1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "reset1");
+ widget = glade_xml_get_widget(xml, "search1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "search1");
+ widget = glade_xml_get_widget(xml, "SwitchImage");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "SwitchImage");
+ widget = glade_xml_get_widget(xml, "toolbutton_switchimage");
gtk_widget_set_sensitive(widget, FALSE);
}
else {
@@ -164,20 +114,30 @@ void ResetMenuSlots(GladeXML *xml) {
gtk_widget_set_sensitive(widget, TRUE);
}
- widget = glade_xml_get_widget (xml, "plugins_bios");
+ widget = glade_xml_get_widget(xml, "plugins_bios");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "graphics1");
+ widget = glade_xml_get_widget(xml, "graphics1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "sound1");
+ widget = glade_xml_get_widget(xml, "sound1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "cdrom1");
+ widget = glade_xml_get_widget(xml, "cdrom1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "pad1");
+ widget = glade_xml_get_widget(xml, "pad1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "net1");
+ widget = glade_xml_get_widget(xml, "net1");
gtk_widget_set_sensitive(widget, FALSE);
- widget = glade_xml_get_widget (xml, "SwitchImage");
+ widget = glade_xml_get_widget(xml, "SwitchImage");
gtk_widget_set_sensitive(widget, cdrfilename[0]);
+ widget = glade_xml_get_widget(xml, "toolbutton_switchimage");
+ gtk_widget_set_sensitive(widget, cdrfilename[0]);
+ widget = glade_xml_get_widget(xml, "toolbutton_graphics");
+ gtk_widget_set_sensitive(widget, FALSE);
+ widget = glade_xml_get_widget(xml, "toolbutton_sound");
+ gtk_widget_set_sensitive(widget, FALSE);
+ widget = glade_xml_get_widget(xml, "toolbutton_cdrom");
+ gtk_widget_set_sensitive(widget, FALSE);
+ widget = glade_xml_get_widget(xml, "toolbutton_controllers");
+ gtk_widget_set_sensitive(widget, FALSE);
}
}
@@ -185,7 +145,7 @@ int match(const char *string, char *pattern) {
int status;
regex_t re;
- if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB) != 0) {
+ if (regcomp(&re, pattern, REG_EXTENDED | REG_NOSUB) != 0) {
return 0;
}
status = regexec(&re, string, (size_t) 0, NULL, 0);
@@ -197,7 +157,7 @@ int match(const char *string, char *pattern) {
return 1;
}
-gchar* get_state_filename (int i) {
+gchar* get_state_filename(int i) {
gchar *state_filename;
char SStateFile[64];
char trimlabel[33];
@@ -252,11 +212,11 @@ void StartGui() {
gtk_window_set_default_icon_from_file(PIXMAPDIR "pcsx-icon.png", NULL);
ResetMenuSlots(xml);
- /* Set up callbacks */
+ // Set up callbacks
g_signal_connect_data(GTK_OBJECT(Window), "delete-event",
GTK_SIGNAL_FUNC(OnDestroy), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
- /* File menu */
+ // File menu
widget = glade_xml_get_widget(xml, "RunCd");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnFile_RunCd), NULL, NULL, G_CONNECT_AFTER);
@@ -273,15 +233,11 @@ void StartGui() {
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnFile_RunImage), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "SwitchImage");
- g_signal_connect_data(GTK_OBJECT(widget), "activate",
- GTK_SIGNAL_FUNC(OnEmu_SwitchImage), NULL, NULL, G_CONNECT_AFTER);
-
widget = glade_xml_get_widget(xml, "exit2");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnFile_Exit), NULL, NULL, G_CONNECT_AFTER);
- /* States */
+ // States
widget = glade_xml_get_widget(xml, "GtkMenuItem_LoadSlot1");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(on_states_load), (gpointer) 0, NULL, G_CONNECT_AFTER);
@@ -320,15 +276,18 @@ void StartGui() {
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(on_states_save_other), NULL, NULL, G_CONNECT_AFTER);
- /* Emulation menu */
+ // Emulation menu
widget = glade_xml_get_widget(xml, "run1");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnEmu_Run), NULL, NULL, G_CONNECT_AFTER);
widget = glade_xml_get_widget(xml, "reset1");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnEmu_Reset), NULL, NULL, G_CONNECT_AFTER);
+ widget = glade_xml_get_widget(xml, "SwitchImage");
+ g_signal_connect_data(GTK_OBJECT(widget), "activate",
+ GTK_SIGNAL_FUNC(OnEmu_SwitchImage), NULL, NULL, G_CONNECT_AFTER);
- /* Configuration menu */
+ // Configuration menu
widget = glade_xml_get_widget(xml, "plugins_bios");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(ConfigurePlugins), NULL, NULL, G_CONNECT_AFTER);
@@ -354,7 +313,7 @@ void StartGui() {
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnConf_Net), NULL, NULL, G_CONNECT_AFTER);
- /* Cheat menu */
+ // Cheat menu
widget = glade_xml_get_widget(xml, "browse1");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(RunCheatListDialog), NULL, NULL, G_CONNECT_AFTER);
@@ -362,114 +321,49 @@ void StartGui() {
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(RunCheatSearchDialog), NULL, NULL, G_CONNECT_AFTER);
- /* Help menu */
+ // Help menu
widget = glade_xml_get_widget(xml, "about_pcsx1");
g_signal_connect_data(GTK_OBJECT(widget), "activate",
GTK_SIGNAL_FUNC(OnHelp_About), NULL, NULL, G_CONNECT_AFTER);
- gtk_main();
-}
-
-void OnDestroy() {
- if (!destroy) OnFile_Exit();
-}
-
-void ConfigurePlugins() {
- if (!UseGui) {
- /* How do we get here if we're not running the GUI? */
- /* Ryan: we're going to imagine that someday, there will be a way
- * to configure plugins from the commandline */
- printf("ERROR: Plugins cannot be configured without the GUI.");
- return;
- }
-
- GladeXML *xml;
- GtkWidget *widget;
-
- gchar *path;
-
- UpdatePluginsBIOS();
-
- xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "ConfDlg", NULL);
-
- if (!xml) {
- g_warning(_("Error: Glade interface could not be loaded!"));
- return;
- }
-
- UpdatePluginsBIOS_UpdateGUI(xml);
-
- ConfDlg = glade_xml_get_widget(xml, "ConfDlg");
-
- gtk_window_set_title(GTK_WINDOW(ConfDlg), _("Configure PCSX"));
-
- /* Set the paths in the file choosers to be based on the saved configurations */
- widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios");
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget),
- Config.BiosDir);
-
- widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin");
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (widget),
- Config.PluginsDir);
-
- if (strlen(Config.PluginsDir) == 0) {
- if((path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget))) != NULL) {
- strcpy(Config.PluginsDir, path);
- g_free(path);
- }
- }
-
- widget = glade_xml_get_widget(xml, "btn_ConfGpu");
- g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
-
- widget = glade_xml_get_widget(xml, "btn_ConfSpu");
- g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
-
- /* ADB TODO Does pad 1 and 2 need to be different? */
- widget = glade_xml_get_widget(xml, "btn_ConfPad1");
+ // Toolbar
+ widget = glade_xml_get_widget(xml, "toolbutton_runcd");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnConfConf_Pad1Conf), xml, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnFile_RunCd), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_ConfPad2");
+ widget = glade_xml_get_widget(xml, "toolbutton_runimage");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnConfConf_Pad2Conf), xml, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnFile_RunImage), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_ConfCdr");
+ widget = glade_xml_get_widget(xml, "toolbutton_switchimage");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_configure_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnEmu_SwitchImage), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_AboutGpu");
+ widget = glade_xml_get_widget(xml, "toolbutton_memcards");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnConf_Mcds), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_AboutSpu");
+ widget = glade_xml_get_widget(xml, "toolbutton_graphics");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnConf_Graphics), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_AboutPad1");
+ widget = glade_xml_get_widget(xml, "toolbutton_sound");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnConfConf_Pad1About), xml, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnConf_Sound), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_AboutPad2");
+ widget = glade_xml_get_widget(xml, "toolbutton_cdrom");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnConfConf_Pad2About), xml, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnConf_CdRom), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "btn_AboutCdr");
+ widget = glade_xml_get_widget(xml, "toolbutton_controllers");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(on_about_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
-
- widget = glade_xml_get_widget(xml, "GtkFileChooser_Bios");
- g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed",
- GTK_SIGNAL_FUNC(OnBiosPath_Changed), xml, NULL, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnConf_Pad), NULL, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "GtkFileChooser_Plugin");
- g_signal_connect_data(GTK_OBJECT(widget), "current_folder_changed",
- GTK_SIGNAL_FUNC(OnPluginPath_Changed), xml, NULL, G_CONNECT_AFTER);
+ gtk_main();
+}
- g_signal_connect_data(GTK_OBJECT(ConfDlg), "response",
- GTK_SIGNAL_FUNC(OnConf_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
+void OnDestroy() {
+ if (!destroy) OnFile_Exit();
}
void destroy_main_window () {
@@ -493,7 +387,7 @@ void OnFile_RunExe() {
GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
NULL);
- /* Add file filter */
+ // Add file filters
GtkFileFilter *exefilter = gtk_file_filter_new ();
gtk_file_filter_add_pattern (exefilter, "*.exe");
gtk_file_filter_add_pattern (exefilter, "*.psx");
@@ -508,8 +402,8 @@ void OnFile_RunExe() {
gtk_file_filter_set_name (allfilter, _("All Files"));
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), allfilter);
- /* Set this to the config object and retain it - maybe LastUsedDir */
- gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER (file_chooser), getenv("HOME"));
+ // Set this to the config object and retain it - maybe LastUsedDir
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser), getenv("HOME"));
if (gtk_dialog_run(GTK_DIALOG(file_chooser)) == GTK_RESPONSE_ACCEPT) {
gchar *file;
@@ -573,10 +467,10 @@ void OnFile_RunCd() {
return;
}
- /* Read main executable directly from CDRom and start it */
+ // Read main executable directly from CDRom and start it
if (LoadCdrom() == -1) {
ClosePlugins();
- SysErrorMessage(_("Could not load CD-ROM!"), _("The CD ROM could not be loaded"));
+ SysErrorMessage(_("Could not load CD-ROM!"), _("The CD-ROM could not be loaded"));
SysRunGui();
}
@@ -691,17 +585,17 @@ void OnFile_RunImage() {
SysReset();
if (CheckCdrom() == -1) {
- /* Only check the CD if we are starting the console with a CD */
+ // Only check the CD if we are starting the console with a CD
ClosePlugins();
SysErrorMessage (_("CD ROM failed"), _("The CD does not appear to be a valid Playstation CD"));
SysRunGui();
return;
}
- /* Read main executable directly from CDRom and start it */
+ // Read main executable directly from CDRom and start it
if (LoadCdrom() == -1) {
ClosePlugins();
- SysErrorMessage(_("Could not load CD-ROM!"), "The CD ROM could not be loaded");
+ SysErrorMessage(_("Could not load CD-ROM!"), _("The CD-ROM could not be loaded"));
SysRunGui();
}
@@ -814,27 +708,26 @@ void OnFile_Exit() {
exit(0);
}
-void state_load (gchar *state_filename) {
+void state_load(gchar *state_filename) {
int ret;
- char Text[MAXPATHLEN+20];
+ char Text[MAXPATHLEN + 20];
FILE *fp;
- /* check if the state file actually exists */
+ // check if the state file actually exists
fp = fopen(state_filename, "rb");
if (fp == NULL) {
- /* file does not exist */
+ // file does not exist
return;
}
fclose(fp);
- /* If the window exists, then we are loading the state from within
- within the PCSX GUI. We need to initialise the plugins first */
+ // If the window exists, then we are loading the state from within
+ // within the PCSX GUI. We need to initialise the plugins first
if (Window) {
destroy_main_window();
if (OpenPlugins() == -1) {
- /* TODO Error message */
SysRunGui();
return;
}
@@ -844,35 +737,13 @@ void state_load (gchar *state_filename) {
ret = LoadState(state_filename);
if (ret == 0) {
- /* Check the CD ROM is valid */
+ // Check the CD-ROM is valid
if (CheckCdrom() == -1) {
- /* TODO Error message */
- ClosePlugins ();
+ ClosePlugins();
SysRunGui();
return;
}
-#if 0 /* Whistler: this will cause crash when using the "Load Other" option */
- /* Check that the currently loaded CD ROM ID matches that of the CD
- used when saving the state file. The latter is stored in the filename */
- gchar *cmp = g_strrstr (g_path_get_basename (state_filename), "-");
- cmp++;
- if (g_ascii_strncasecmp (cmp, CdromId, 9) != 0) {
- ClosePlugins ();
- gchar *error_desc, *label;
- gint pos;
- label = g_strdup_printf("%.9s", state_filename);
- error_desc = g_strdup_printf ("The Playstation CD that is currently in use is %s. It is not the same CD as that used when saving the state file. The state file is looking for %s.",
- label,
- CdromLabel);
- SysErrorMessage ("The CD does not match the state file",
- error_desc);
- g_free (error_desc);
- g_free (label);
- SysRunGui();
- return;
- }
-#endif
sprintf(Text, _("Loaded state %s."), state_filename);
GPU_displayText(Text);
psxCpu->Execute();
@@ -882,7 +753,7 @@ void state_load (gchar *state_filename) {
}
}
-void state_save (gchar *state_filename) {
+void state_save(gchar *state_filename) {
char Text[MAXPATHLEN + 20];
GPU_updateLace();
@@ -897,27 +768,26 @@ void state_save (gchar *state_filename) {
void on_states_load (GtkWidget *widget, gpointer user_data) {
gchar *state_filename;
- gint state = (int) user_data;
+ gint state = (int)user_data;
- state_filename = get_state_filename (state);
+ state_filename = get_state_filename(state);
- state_load (state_filename);
+ state_load(state_filename);
- g_free (state_filename);
+ g_free(state_filename);
}
void on_states_save (GtkWidget *widget, gpointer user_data) {
gchar *state_filename;
- gint state = (int) user_data;
+ gint state = (int)user_data;
- state_filename = get_state_filename (state);
+ state_filename = get_state_filename(state);
- state_save (state_filename);
+ state_save(state_filename);
- g_free (state_filename);
+ g_free(state_filename);
}
-
void on_states_load_other() {
GtkWidget *file_chooser;
gchar *SStateFile;
@@ -956,477 +826,28 @@ void on_states_save_other() {
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
NULL);
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser), SStateFile);
+ gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(file_chooser), SStateFile);
- if (gtk_dialog_run (GTK_DIALOG (file_chooser)) == GTK_RESPONSE_OK) {
+ if (gtk_dialog_run (GTK_DIALOG(file_chooser)) == GTK_RESPONSE_OK) {
gchar *filename;
- filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser));
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (file_chooser));
gtk_widget_destroy(file_chooser);
- state_save (filename);
+ state_save(filename);
- g_free (filename);
+ g_free(filename);
}
else
- gtk_widget_destroy (file_chooser);
+ gtk_widget_destroy(file_chooser);
- g_free (SStateFile);
+ g_free(SStateFile);
}
-int all_config_set () {
- int retval;
-
- if ((strlen(Config.Gpu) != 0) &&
- (strlen(Config.Spu) != 0) &&
- (strlen(Config.Cdr) != 0) &&
- (strlen(Config.Pad1) != 0) &&
- (strlen(Config.Pad2) != 0))
- retval = TRUE;
- else
- retval = FALSE;
-
- return retval;
-}
-
-GtkWidget *NetDlg;
-
-void OnNet_Clicked (GtkDialog *dialog, gint arg1, gpointer user_data) {
- if (arg1 == GTK_RESPONSE_OK) {
- GetComboText(NetConfS.Combo, NetConfS.plist, Config.Net);
- SaveConfig();
- }
-
- gtk_widget_destroy(GTK_WIDGET (dialog));
- NetDlg = NULL;
-}
-
-void OnConf_Net() {
- GladeXML *xml;
- GtkWidget *widget;
-
- if (NetDlg != NULL) {
- gtk_window_present (GTK_WINDOW (NetDlg));
- return;
- }
-
- xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "NetDlg", NULL);
-
- if (!xml) {
- g_warning(_("Error: Glade interface could not be loaded!"));
- return;
- }
-
- NetDlg = glade_xml_get_widget(xml, "NetDlg");
-
- FindNetPlugin(xml);
-
- /* Setup a handler for when Close or Cancel is clicked */
- g_signal_connect_data(GTK_OBJECT(NetDlg), "response",
- GTK_SIGNAL_FUNC(OnNet_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
-
- widget = glade_xml_get_widget(xml, "btn_ConfNet");
- g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnNet_Conf), xml, NULL, G_CONNECT_AFTER);
-
- widget = glade_xml_get_widget(xml, "btn_AboutNet");
- g_signal_connect_data(GTK_OBJECT(widget), "clicked",
- GTK_SIGNAL_FUNC(OnNet_About), xml, NULL, G_CONNECT_AFTER);
-}
-
-void OnConf_Graphics() {
- void *drv;
- GPUconfigure conf;
- char Plugin[MAXPATHLEN];
-
- sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Gpu);
- drv = SysLoadLibrary(Plugin);
- if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
-
- while (gtk_events_pending()) gtk_main_iteration();
-
- conf = (GPUconfigure)SysLoadSym(drv, "GPUconfigure");
- if (conf != NULL) {
- conf();
- }
- else
- SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
-
- SysCloseLibrary(drv);
-}
-
-void OnConf_Sound() {
- void *drv;
- SPUconfigure conf;
- char Plugin[MAXPATHLEN];
-
- sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Spu);
- drv = SysLoadLibrary(Plugin);
- if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
-
- while (gtk_events_pending()) gtk_main_iteration();
-
- conf = (GPUconfigure)SysLoadSym(drv, "SPUconfigure");
- if (conf != NULL) {
- conf();
- }
- else
- SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
-
- SysCloseLibrary(drv);
-}
-
-void OnConf_CdRom() {
- void *drv;
- CDRconfigure conf;
- char Plugin[MAXPATHLEN];
-
- sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Cdr);
- drv = SysLoadLibrary(Plugin);
- if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
-
- while (gtk_events_pending()) gtk_main_iteration();
-
- conf = (GPUconfigure)SysLoadSym(drv, "CDRconfigure");
- if (conf != NULL) {
- conf();
- }
- else
- SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
-
- SysCloseLibrary(drv);
-}
-
-void OnConf_Pad() {
- void *drv;
- PADconfigure conf;
- char Plugin[MAXPATHLEN];
-
- sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad1);
- drv = SysLoadLibrary(Plugin);
- if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
-
- while (gtk_events_pending()) gtk_main_iteration();
-
- conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure");
- if (conf != NULL) {
- conf();
- }
- else
- SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured."));
-
- SysCloseLibrary(drv);
-
- if (strcmp(Config.Pad1, Config.Pad2) != 0) {
- sprintf(Plugin, "%s/%s", Config.PluginsDir, Config.Pad2);
- drv = SysLoadLibrary(Plugin);
- if (drv == NULL) { printf("Error with file %s\n", Plugin); return; }
-
- while (gtk_events_pending()) gtk_main_iteration();
-
- conf = (GPUconfigure)SysLoadSym(drv, "PADconfigure");
- if (conf != NULL) {
- conf();
- }
-
- SysCloseLibrary(drv);
- }
-}
-
-GtkWidget *CpuDlg;
-GtkWidget *PsxCombo;
-GList *psxglist;
-char *psxtypes[] = {
- "NTSC",
- "PAL"
-};
-
-/* When the auto-detect CPU type is selected, disable the NTSC/PAL selection */
-static void OnCpu_PsxAutoClicked (GtkWidget *widget, gpointer user_data) {
- GtkWidget *combo;
- GladeXML *xml = user_data;
- combo = glade_xml_get_widget(xml, "GtkCombo_PsxType");
-
- gtk_widget_set_sensitive (combo,
- !(gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))));
-}
-
-/* When the interpreter core is deselected, disable the debugger checkbox */
-static void OnCpu_CpuClicked (GtkWidget *widget, gpointer user_data) {
- GtkWidget *check;
- GladeXML *xml = user_data;
- check = glade_xml_get_widget(xml, "GtkCheckButton_Dbg");
-
- // Debugger is only working with interpreter not recompiler, so let's set it
- if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)))
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), FALSE);
-
- gtk_widget_set_sensitive (check,
- gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget)));
-}
-
-void OnCpu_Clicked (GtkDialog *dialog, gint arg1, gpointer user_data) {
- if (arg1 == GTK_RESPONSE_OK) {
- GtkWidget *widget;
- GladeXML *xml = user_data;
- int tmp;
- long t;
-
- widget = glade_xml_get_widget(xml, "GtkCombo_PsxType");
-
- /* If nothing chosen, default to NTSC */
- tmp = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
- if (tmp == -1)
- tmp = PSX_TYPE_NTSC;
-
- if (!strcmp("NTSC",psxtypes[tmp]))
- Config.PsxType = PSX_TYPE_NTSC;
- else
- Config.PsxType = PSX_TYPE_PAL;
-
- Config.Xa = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Xa")));
-
- Config.Sio = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Sio")));
-
- Config.Mdec = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Mdec")));
-
- Config.Cdda = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_CDDA")));
-
- Config.PsxAuto = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")));
-
- t = Config.Debug;
- Config.Debug = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Dbg")));
- if (t != Config.Debug) {
- if (Config.Debug) StartDebugger();
- else StopDebugger();
- }
-
- t = Config.Cpu;
- Config.Cpu = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_Cpu")));
- if (t != Config.Cpu) {
- psxCpu->Shutdown();
-#ifdef PSXREC
- if (Config.Cpu) {
- psxCpu = &psxInt;
- }
- else psxCpu = &psxRec;
-#else
- psxCpu = &psxInt;
-#endif
- if (psxCpu->Init() == -1) {
- SysClose();
- exit(1);
- }
- psxCpu->Reset();
- }
-
- Config.PsxOut = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_PsxOut")));
-
- Config.SpuIrq = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq")));
-
- Config.RCntFix = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_RCntFix")));
-
- Config.VSyncWA = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA")));
-
- SaveConfig();
- }
-
- gtk_widget_destroy(CpuDlg);
- CpuDlg = NULL;
-}
-
-void OnConf_Cpu() {
- GladeXML *xml;
-
- xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "CpuDlg", NULL);
-
- if (!xml) {
- g_warning("We could not load the interface!");
- return;
- }
-
- CpuDlg = glade_xml_get_widget(xml, "CpuDlg");
-
- PsxCombo = glade_xml_get_widget(xml, "GtkCombo_PsxType");
- gtk_combo_box_set_active (GTK_COMBO_BOX (PsxCombo), Config.PsxType);
- gtk_widget_set_sensitive (GTK_WIDGET (PsxCombo), !Config.PsxAuto);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Xa")), Config.Xa);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Sio")), Config.Sio);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Mdec")), Config.Mdec);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_CDDA")), Config.Cdda);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), Config.PsxAuto);
-
- g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_PsxAuto")), "toggled",
- GTK_SIGNAL_FUNC(OnCpu_PsxAutoClicked), xml, NULL, G_CONNECT_AFTER);
-
-#ifdef PSXREC
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), Config.Cpu);
-
- g_signal_connect_data(GTK_OBJECT(glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), "toggled",
- GTK_SIGNAL_FUNC(OnCpu_CpuClicked), xml, NULL, G_CONNECT_AFTER);
-#else
- Config.Cpu = 1;
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), TRUE);
- gtk_widget_set_sensitive (GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Cpu")), FALSE);
-#endif
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu && Config.Debug);
- gtk_widget_set_sensitive (GTK_WIDGET (glade_xml_get_widget(xml, "GtkCheckButton_Dbg")), Config.Cpu);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_PsxOut")), Config.PsxOut);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_SpuIrq")), Config.SpuIrq);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_RCntFix")), Config.RCntFix);
-
- gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (glade_xml_get_widget(xml, "GtkCheckButton_VSyncWA")), Config.VSyncWA);
-
- /* Setup a handler for when Close or Cancel is clicked */
- g_signal_connect_data(GTK_OBJECT(CpuDlg), "response",
- GTK_SIGNAL_FUNC(OnCpu_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
-}
-
-/* TODO Check whether configuration is required when we choose the plugin, and set the state of the
- button appropriately. New gtk tooltip API should allow us to put a tooltip explanation for
- disabled widgets */
-/* TODO If combo screen hasn't been opened and the user chooses the menu config option, confs.Combo will be null and cause a segfault */
-#define ConfPlugin(src, confs, plugin, name, parent) { \
- void *drv; \
- src conf; \
- gchar *filename; \
- \
- GetComboText(confs.Combo, confs.plist, plugin); \
- filename = g_build_filename (getenv("HOME"), PLUGINS_DIR, plugin, NULL); \
- /*printf("Configuring plugin %s\n", filename);*/ \
- drv = SysLoadLibrary(filename); \
- if (drv == NULL) {printf("Error with file %s\n", filename);return; } \
-\
- while (gtk_events_pending()) gtk_main_iteration(); \
- conf = (src) SysLoadSym(drv, name); \
- if (conf) { \
- conf(); \
- } else \
- SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); \
- SysCloseLibrary(drv); \
- g_free (filename); \
-}
-
-void on_configure_plugin (GtkWidget *widget, gpointer user_data) {
- gint plugin_type = (int) user_data;
-
- while (gtk_events_pending())
- gtk_main_iteration();
- if (all_config_set() == TRUE) {
- switch (plugin_type) {
- case PSE_LT_GPU:
- ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUconfigure", ConfDlg);
- break;
- case PSE_LT_SPU:
- ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUconfigure", ConfDlg);
- break;
- case PSE_LT_CDR:
- ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRconfigure", ConfDlg);
- break;
- }
- } else
- ConfigurePlugins();
-}
-
-void on_about_plugin (GtkWidget *widget, gpointer user_data) {
- gint plugin_type = (int) user_data;
-
- while (gtk_events_pending())
- gtk_main_iteration();
- if (all_config_set() == TRUE) {
- switch (plugin_type) {
- case PSE_LT_GPU:
- ConfPlugin(GPUconfigure, GpuConfS, Config.Gpu, "GPUabout", ConfDlg);
- break;
- case PSE_LT_SPU:
- ConfPlugin(SPUconfigure, SpuConfS, Config.Spu, "SPUabout", ConfDlg);
- break;
- case PSE_LT_CDR:
- ConfPlugin(CDRconfigure, CdrConfS, Config.Cdr, "CDRabout", ConfDlg);
- break;
- }
- } else
- ConfigurePlugins();
-}
-
-void OnConfConf_Pad1About(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADabout", ConfDlg);
-}
-
-void OnConfConf_Pad2About(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADabout", ConfDlg);
-}
-
-void OnConfConf_Pad1Conf(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(PADabout, Pad1ConfS, Config.Pad1, "PADconfigure", ConfDlg);
-}
-
-void OnConfConf_Pad2Conf(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(PADabout, Pad2ConfS, Config.Pad2, "PADconfigure", ConfDlg);
-}
-
-void OnNet_Conf(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(NETconfigure, NetConfS, Config.Net, "NETconfigure", NetDlg);
-}
-
-void OnNet_About(GtkWidget *widget, gpointer user_data) {
- ConfPlugin(NETabout, NetConfS, Config.Net, "NETabout", NetDlg);
-}
-
-void OnPluginPath_Changed(GtkWidget *wdg, gpointer data) {
- gchar *path;
-
- path = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg));
- strcpy(Config.PluginsDir, path);
- UpdatePluginsBIOS();
- UpdatePluginsBIOS_UpdateGUI(data);
-
- g_free (path);
-}
-
-void OnBiosPath_Changed(GtkWidget *wdg, gpointer data) {
- gchar *foldername;
-
- foldername = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (wdg));
- strcpy(Config.BiosDir, foldername);
-
- UpdatePluginsBIOS();
- UpdatePluginsBIOS_UpdateGUI(data);
-
- g_free (foldername);
-}
-
-void OnConf_Clicked (GtkDialog *dialog, gint arg1, gpointer user_data) {
- if (arg1 == GTK_RESPONSE_OK) {
- GetComboText(GpuConfS.Combo, GpuConfS.plist, Config.Gpu);
- GetComboText(SpuConfS.Combo, SpuConfS.plist, Config.Spu);
- GetComboText(CdrConfS.Combo, CdrConfS.plist, Config.Cdr);
- GetComboText(Pad1ConfS.Combo, Pad1ConfS.plist, Config.Pad1);
- GetComboText(Pad2ConfS.Combo, Pad2ConfS.plist, Config.Pad2);
- GetComboText(BiosConfS.Combo, BiosConfS.plist, Config.Bios);
- /* TODO Validation */
-
- SaveConfig();
- }
-
- gtk_widget_destroy (ConfDlg);
- ConfDlg = NULL;
-}
-
void OnHelp_About(GtkWidget *widget, gpointer user_data) {
GladeXML *xml;
GtkWidget *about_dialog;
-
+
xml = glade_xml_new(PACKAGE_DATA_DIR "pcsx.glade2", "AboutDlg", NULL);
if (!xml) {
@@ -1435,302 +856,9 @@ void OnHelp_About(GtkWidget *widget, gpointer user_data) {
}
about_dialog = glade_xml_get_widget(xml, "AboutDlg");
-
- gtk_dialog_run (GTK_DIALOG (about_dialog));
- gtk_widget_destroy (about_dialog);
-}
-
-#define ComboAddPlugin(type) { \
- type##ConfS.plugins += 2; \
- strcpy(type##ConfS.plist[type##ConfS.plugins - 1], name); \
- strcpy(type##ConfS.plist[type##ConfS.plugins - 2], ent->d_name); \
- type##ConfS.glist = g_list_append(type##ConfS.glist, type##ConfS.plist[type##ConfS.plugins-1]); \
-}
-
-void populate_combo_box (GtkWidget *widget, GList *list) {
- GtkListStore *store;
- GtkCellRenderer *renderer;
- store = gtk_list_store_new (1, G_TYPE_STRING);
- /* Clear existing data from combo box */
- gtk_cell_layout_clear (GTK_CELL_LAYOUT (widget));
-
- renderer = gtk_cell_renderer_text_new();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (widget), renderer, FALSE);
- gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (widget), renderer, "text", 0);
-
- while (list != NULL) {
- GtkTreeIter iter;
- gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter, 0, (char *)list->data, -1);
- list = list->next;
- }
-
- gtk_combo_box_set_model (GTK_COMBO_BOX (widget), GTK_TREE_MODEL (store));
-}
-
-#define ConfCreatePConf(name, type) \
- /* Populate the relevant combo widget with the list of plugins. \
- If no plugins available, disable the combo and its controls. \
- Note that the Bios plugin has no About/Conf control. */ \
- type##ConfS.Combo = glade_xml_get_widget(xml, "GtkCombo_" name); \
- if (type##ConfS.glist != NULL) { \
- populate_combo_box (type##ConfS.Combo, type##ConfS.glist); \
- FindComboText(type##ConfS.Combo, type##ConfS.plist, Config.type); \
- gtk_widget_set_sensitive (type##ConfS.Combo, TRUE); \
- if (g_ascii_strcasecmp (name, "Bios") != 0) { \
- controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \
- gtk_widget_set_sensitive (controlwidget, TRUE); \
- controlwidget = glade_xml_get_widget(xml, "btn_About" name); \
- gtk_widget_set_sensitive (controlwidget, TRUE); \
- } \
- } else { \
- if (g_ascii_strcasecmp (name, "Bios") != 0) { \
- gtk_cell_layout_clear (GTK_CELL_LAYOUT (type##ConfS.Combo)); \
- gtk_widget_set_sensitive (type##ConfS.Combo, FALSE); \
- controlwidget = glade_xml_get_widget(xml, "btn_Conf" name); \
- gtk_widget_set_sensitive (controlwidget, FALSE); \
- controlwidget = glade_xml_get_widget(xml, "btn_About" name); \
- gtk_widget_set_sensitive (controlwidget, FALSE); \
- } \
- }
-
-int plugin_is_available (gchar *plugin) {
- int retval;
- gchar *pluginfile;
- struct stat stbuf;
-
-// printf("Checking plugin_is_available - %s\n", plugin);
- pluginfile = g_strconcat (getenv("HOME"), PLUGINS_DIR, plugin, NULL);
-
- if (stat(pluginfile, &stbuf) == -1)
- retval = FALSE;
- else
- retval = TRUE;
-
- g_free (pluginfile);
-
- return retval;
-}
-
-/* TODO Combine this with all_config_set() */
-int plugins_configured() {
- // make sure there are choices for all of the plugins!!
-// if ((strlen(Config.Gpu) == 0) || (strlen(Config.Spu) == 0) || (strlen(Config.Cdr) == 0) || (strlen(Config.Pad1) == 0) || (strlen(Config.Pad2) == 0)) {
- if (all_config_set() == FALSE)
- return FALSE;
-// }
- // and make sure they can all be accessed
- // if they can't be, wipe the variable and return FALSE
- if (plugin_is_available (Config.Gpu) == FALSE) { Config.Gpu[0] = '\0'; return FALSE; }
- if (plugin_is_available (Config.Spu) == FALSE) { Config.Spu[0] = '\0'; return FALSE; }
- if (plugin_is_available (Config.Cdr) == FALSE) { Config.Cdr[0] = '\0'; return FALSE; }
- if (plugin_is_available (Config.Pad1) == FALSE) { Config.Pad1[0] = '\0'; return FALSE; }
- if (plugin_is_available (Config.Pad2) == FALSE) { Config.Pad2[0] = '\0'; return FALSE; }
-
- // if everything is happy, return TRUE
- return TRUE;
-}
-
-int is_valid_bios_file (gchar *filename) {
- int valid;
- struct stat buf;
-
-// printf(" Checking is_valid_bios_file - %s\n", filename);
- if ((stat(filename, &buf) == -1) || (buf.st_size != (1024*512)))
- valid = FALSE;
- else {
- valid = TRUE;
-// printf(" %s is a valid BIOS file\n", filename);
- }
-
- return valid;
-}
-
-/* Add the name of the BIOS file to the drop-down list. This will
- be the filename, not the full path to the file */
-void add_bios_to_list (gchar *bios_name, gchar *internal_name) {
- BiosConfS.plugins+=2;
- strcpy(BiosConfS.plist[BiosConfS.plugins-1], bios_name);
- strcpy(BiosConfS.plist[BiosConfS.plugins-2], internal_name);
- /* Error handling - BIOS
- strcpy(BiosConfS.plist[BiosConfS.plugins-1], internal_name);
- strcpy(BiosConfS.plist[BiosConfS.plugins-2], bios_name);*/
- BiosConfS.glist = g_list_append(BiosConfS.glist, BiosConfS.plist[BiosConfS.plugins-1]);
-}
-
-void scan_bios_dir (gchar *dirname) {
- DIR *dir;
- struct dirent *ent;
- gchar *filename;
-
- dir = opendir(dirname);
- if (dir == NULL) {
- SysMessage(_("Could not open BIOS directory: '%s'\n"), dirname);
- return;
- }
-
- while ((ent = readdir(dir)) != NULL) {
- filename = g_build_filename(dirname, ent->d_name, NULL);
- if (is_valid_bios_file(filename))
- add_bios_to_list(g_path_get_basename(filename), g_path_get_basename (filename));
- g_free(filename);
- }
- closedir(dir);
-}
-
-void UpdatePluginsBIOS() {
- DIR *dir;
- struct dirent *ent;
- void *Handle;
- char name[256];
- gchar *linkname;
-
- GpuConfS.plugins = 0; SpuConfS.plugins = 0; CdrConfS.plugins = 0;
- Pad1ConfS.plugins = 0; Pad2ConfS.plugins = 0; BiosConfS.plugins = 0;
- GpuConfS.glist = NULL; SpuConfS.glist = NULL; CdrConfS.glist = NULL;
- Pad1ConfS.glist = NULL; Pad2ConfS.glist = NULL; BiosConfS.glist = NULL;
- GpuConfS.plist[0][0] = '\0'; SpuConfS.plist[0][0] = '\0'; CdrConfS.plist[0][0] = '\0';
- Pad1ConfS.plist[0][0] = '\0'; Pad2ConfS.plist[0][0] = '\0'; BiosConfS.plist[0][0] = '\0';
-
- /* Load and get plugin info */
- dir = opendir(Config.PluginsDir);
- if (dir == NULL) {
- printf(_("Could not open directory: '%s'\n"), Config.PluginsDir);
- return;
- }
- while ((ent = readdir(dir)) != NULL) {
- long type, v;
- linkname = g_build_filename(Config.PluginsDir, ent->d_name, NULL);
-
- // only libraries past this point, not config tools
- if (strstr(linkname, ".so") == NULL && strstr(linkname, ".dylib") == NULL)
- continue;
-
- Handle = dlopen(linkname, RTLD_NOW);
- if (Handle == NULL) {
- printf("%s\n", dlerror());
- g_free(linkname);
- continue;
- }
-
- PSE_getLibType = (PSEgetLibType)dlsym(Handle, "PSEgetLibType");
- if (dlerror() != NULL) {
- if (strstr(linkname, "gpu") != NULL) type = PSE_LT_GPU;
- else if (strstr(linkname, "cdr") != NULL) type = PSE_LT_CDR;
- else if (strstr(linkname, "spu") != NULL) type = PSE_LT_SPU;
- else if (strstr(linkname, "pad") != NULL) type = PSE_LT_PAD;
- else { g_free(linkname); continue; }
- }
- else type = PSE_getLibType();
-
- PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
- if (dlerror() == NULL) {
- sprintf(name, "%s", PSE_getLibName());
- PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion");
- if (dlerror() == NULL) {
- char ver[32];
-
- v = PSE_getLibVersion();
- sprintf(ver, " %ld.%ld.%ld", v >> 16, (v >> 8) & 0xff, v & 0xff);
- strcat(name, ver);
- }
- }
- else strcpy(name, ent->d_name);
-
- if (type & PSE_LT_CDR)
- ComboAddPlugin(Cdr);
- if (type & PSE_LT_GPU)
- ComboAddPlugin(Gpu);
- if (type & PSE_LT_SPU)
- ComboAddPlugin(Spu);
- if (type & PSE_LT_PAD) {
- PADquery query = (PADquery)dlsym(Handle, "PADquery");
- if (query() & 0x1) {
- ComboAddPlugin(Pad1);
- }
- if (query() & 0x2) {
- ComboAddPlugin(Pad2);
- }
- }
- g_free(linkname);
- }
- closedir(dir);
-
- scan_bios_dir(Config.BiosDir);
-
- /* The BIOS list always contains the PCSX internal BIOS */
- add_bios_to_list(_("Internal HLE Bios"), "HLE");
-}
-
-void UpdatePluginsBIOS_UpdateGUI(GladeXML *xml) {
- /* Populate the plugin combo boxes */
- ConfCreatePConf("Gpu", Gpu);
- ConfCreatePConf("Spu", Spu);
- ConfCreatePConf("Pad1", Pad1);
- ConfCreatePConf("Pad2", Pad2);
- ConfCreatePConf("Cdr", Cdr);
- ConfCreatePConf("Bios", Bios);
-}
-
-void FindNetPlugin(GladeXML *xml) {
- DIR *dir;
- struct dirent *ent;
- void *Handle;
- char plugin[MAXPATHLEN],name[MAXPATHLEN];
-
- NetConfS.plugins = 0;
- NetConfS.glist = NULL;
-
- NetConfS.plugins += 2;
- strcpy(NetConfS.plist[NetConfS.plugins - 1], "Disabled");
- strcpy(NetConfS.plist[NetConfS.plugins - 2], "Disabled");
- NetConfS.glist = g_list_append(NetConfS.glist, NetConfS.plist[NetConfS.plugins - 1]);
-
- dir = opendir(Config.PluginsDir);
- if (dir == NULL)
- SysMessage(_("Could not open directory: '%s'\n"), Config.PluginsDir);
- else {
- /* ADB TODO Replace the following with a function */
- while ((ent = readdir(dir)) != NULL) {
- long type, v;
-
- sprintf(plugin, "%s/%s", Config.PluginsDir, ent->d_name);
-
- if (strstr(plugin, ".so") == NULL && strstr(plugin, ".dylib") == NULL)
- continue;
- Handle = dlopen(plugin, RTLD_NOW);
- if (Handle == NULL) continue;
-
- PSE_getLibType = (PSEgetLibType) dlsym(Handle, "PSEgetLibType");
- if (dlerror() != NULL) {
- if (strstr(plugin, "net") != NULL) type = PSE_LT_NET;
- else continue;
- }
- else type = PSE_getLibType();
-
- PSE_getLibName = (PSEgetLibName) dlsym(Handle, "PSEgetLibName");
- if (dlerror() == NULL) {
- sprintf(name, "%s", PSE_getLibName());
- PSE_getLibVersion = (PSEgetLibVersion) dlsym(Handle, "PSEgetLibVersion");
- if (dlerror() == NULL) {
- char ver[32];
-
- v = PSE_getLibVersion();
- sprintf(ver, " %ld.%ld.%ld",v>>16,(v>>8)&0xff,v&0xff);
- strcat(name, ver);
- }
- }
- else strcpy(name, ent->d_name);
-
- if (type & PSE_LT_NET) {
- ComboAddPlugin(Net);
- }
- }
- closedir(dir);
-
- ConfCreatePConf("Net", Net);
- }
+ gtk_dialog_run(GTK_DIALOG (about_dialog));
+ gtk_widget_destroy(about_dialog);
}
void SysMessage(char *fmt, ...) {
@@ -1750,7 +878,7 @@ void SysMessage(char *fmt, ...) {
return;
}
- MsgDlg = gtk_dialog_new_with_buttons (_("Notice"), NULL,
+ MsgDlg = gtk_dialog_new_with_buttons(_("Notice"), NULL,
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_NONE, NULL);
gtk_window_set_position (GTK_WINDOW(MsgDlg), GTK_WIN_POS_CENTER);
@@ -1770,17 +898,17 @@ void SysErrorMessage(gchar *primary, gchar *secondary) {
if (!UseGui)
printf ("%s - %s\n", primary, secondary);
else {
- message_dialog = gtk_message_dialog_new (NULL,
+ message_dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
primary,
NULL);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (message_dialog),
+ gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(message_dialog),
secondary);
- gtk_dialog_run (GTK_DIALOG (message_dialog));
- gtk_widget_destroy (message_dialog);
+ gtk_dialog_run(GTK_DIALOG(message_dialog));
+ gtk_widget_destroy(message_dialog);
}
}
@@ -1789,16 +917,16 @@ void SysInfoMessage(gchar *primary, gchar *secondary) {
if (!UseGui)
printf ("%s - %s\n", primary, secondary);
else {
- message_dialog = gtk_message_dialog_new (NULL,
+ message_dialog = gtk_message_dialog_new(NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_INFO,
GTK_BUTTONS_CLOSE,
primary,
NULL);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (message_dialog),
+ gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(message_dialog),
secondary);
- gtk_dialog_run (GTK_DIALOG (message_dialog));
- gtk_widget_destroy (message_dialog);
+ gtk_dialog_run(GTK_DIALOG(message_dialog));
+ gtk_widget_destroy(message_dialog);
}
}
diff --git a/gui/Linux.h b/gui/Linux.h
index 5048f7f1..a592bc19 100644
--- a/gui/Linux.h
+++ b/gui/Linux.h
@@ -45,8 +45,6 @@ void SaveConfig();
void StartGui();
-void ConfigurePlugins();
-
void PADhandleKey(int key);
void UpdateMenuSlots();
@@ -64,19 +62,4 @@ void UpdatePluginsBIOS();
void SysErrorMessage(gchar *primary, gchar *secondary);
void SysInfoMessage(gchar *primary, gchar *secondary);
-typedef struct {
- GtkWidget *Combo;
- GList *glist;
- char plist[255][255]; /* TODO Comment this out */
- int plugins; /* TODO Comment this out and replace with glist count */
-} PluginConf;
-
-PluginConf GpuConfS;
-PluginConf SpuConfS;
-PluginConf CdrConfS;
-PluginConf Pad1ConfS;
-PluginConf Pad2ConfS;
-PluginConf NetConfS;
-PluginConf BiosConfS;
-
#endif /* __LINUX_H__ */
diff --git a/gui/LnxMain.c b/gui/LnxMain.c
index f3561472..26497cc1 100644
--- a/gui/LnxMain.c
+++ b/gui/LnxMain.c
@@ -16,6 +16,8 @@
* Foundation, Inc., 51 Franklin Steet, Fifth Floor, Boston, MA 02111-1307 USA
*/
+#include "config.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -29,12 +31,10 @@
#include <pthread.h>
#include <dirent.h>
#include <sys/stat.h>
-
-#include "Linux.h"
-
#include "../libpcsxcore/sio.h"
-#include "config.h"
+#include "Linux.h"
+#include "ConfDlg.h"
#ifdef ENABLE_NLS
#include <locale.h>
diff --git a/gui/Makefile.am b/gui/Makefile.am
index c649e4f2..eacfd672 100644
--- a/gui/Makefile.am
+++ b/gui/Makefile.am
@@ -14,6 +14,7 @@ pcsx_SOURCES = \
Config.c \
Gtk2Gui.c \
MemcardDlg.c \
+ ConfDlg.c \
Cheat.c
pcsx_LDADD = \
diff --git a/gui/Makefile.in b/gui/Makefile.in
index db624692..6d0254bd 100644
--- a/gui/Makefile.in
+++ b/gui/Makefile.in
@@ -47,7 +47,8 @@ am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_pcsx_OBJECTS = LnxMain.$(OBJEXT) Plugin.$(OBJEXT) Config.$(OBJEXT) \
- Gtk2Gui.$(OBJEXT) MemcardDlg.$(OBJEXT) Cheat.$(OBJEXT)
+ Gtk2Gui.$(OBJEXT) MemcardDlg.$(OBJEXT) ConfDlg.$(OBJEXT) \
+ Cheat.$(OBJEXT)
pcsx_OBJECTS = $(am_pcsx_OBJECTS)
am__DEPENDENCIES_1 =
pcsx_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -232,6 +233,7 @@ pcsx_SOURCES = \
Config.c \
Gtk2Gui.c \
MemcardDlg.c \
+ ConfDlg.c \
Cheat.c
pcsx_LDADD = \
@@ -310,6 +312,7 @@ distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Cheat.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConfDlg.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Config.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Gtk2Gui.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LnxMain.Po@am__quote@
diff --git a/gui/MemcardDlg.c b/gui/MemcardDlg.c
index bdefbe64..d6a42bd3 100644
--- a/gui/MemcardDlg.c
+++ b/gui/MemcardDlg.c
@@ -172,6 +172,31 @@ static void LoadListItems(int mcd, GtkWidget *widget) {
gtk_widget_show(List);
}
+static void UpdateFilenameButtons(GtkWidget *widget) {
+ int i;
+ GladeXML *xml;
+ GtkWidget *dialog;
+ const char *filename;
+ gchar *p;
+
+ xml = glade_get_widget_tree(widget);
+ dialog = glade_xml_get_widget(xml, "McdsDlg");
+
+ for (i = 0; i < 2; i++) {
+ if (i == 0) {
+ widget = glade_xml_get_widget(xml, "Mcd1Label");
+ filename = Config.Mcd1;
+ } else {
+ widget = glade_xml_get_widget(xml, "Mcd2Label");
+ filename = Config.Mcd2;
+ }
+
+ p = g_path_get_basename(filename);
+ gtk_label_set_text(GTK_LABEL(widget), p);
+ g_free(p);
+ }
+}
+
static void LoadMcdDlg(GtkWidget *widget) {
int i;
@@ -182,6 +207,8 @@ static void LoadMcdDlg(GtkWidget *widget) {
LoadListItems(1, widget);
LoadListItems(2, widget);
+
+ UpdateFilenameButtons(widget);
}
static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_data);
@@ -252,54 +279,57 @@ static void UpdateMcdDlg(GtkWidget *widget) {
UpdateListItems(1, widget);
UpdateListItems(2, widget);
+
+ UpdateFilenameButtons(widget);
}
-static void OnMcd_Clicked(GtkDialog *dialog, gint arg1, gpointer user_data) {
- GladeXML *xml = user_data;
+static void OnMcd_Close(GtkDialog *dialog, gint arg1, gpointer user_data) {
+ SaveConfig();
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
- if (arg1 == GTK_RESPONSE_OK) {
- gchar *tmp;
- GtkWidget *widget;
+static void OnMcd_FileChange(GtkWidget *widget, gpointer user_data) {
+ gint memcard = (int)user_data;
+ gchar *filename;
+ GtkWidget *chooser;
- widget = glade_xml_get_widget(xml, "GtkMcd1FSButton");
- if ((tmp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(widget))) != NULL) {
- strcpy(Config.Mcd1, tmp);
- g_free(tmp);
- }
+ // 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,
+ NULL);
- widget = glade_xml_get_widget(xml, "GtkMcd2FSButton");
- if ((tmp = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (widget))) != NULL) {
- strcpy(Config.Mcd2, tmp);
- g_free(tmp);
- }
+ if (memcard == 1)
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), Config.Mcd1);
+ else
+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), Config.Mcd2);
- SaveConfig();
- LoadMcds(Config.Mcd1, Config.Mcd2);
- }
+ if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) {
+ gtk_widget_hide(chooser);
- gtk_widget_destroy(GTK_WIDGET(dialog));
-}
+ filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
-static void OnMemcardFileChanged(GtkWidget *widget, gpointer user_data) {
- gint memcard = (int) user_data;
- gchar *filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (widget));
+ if (filename != NULL) {
+ if (memcard == 1) strncpy(Config.Mcd1, filename, MAXPATHLEN);
+ else strncpy(Config.Mcd2, filename, MAXPATHLEN);
- if (filename != NULL) {
- LoadMcd(memcard, filename);
- UpdateMcdDlg(widget);
- gtk_widget_set_sensitive(widget, TRUE);
+ LoadMcd(memcard, filename);
+ UpdateMcdDlg(widget);
+
+ g_free(filename);
+ }
}
- g_free(filename);
+ gtk_widget_destroy(chooser);
}
// create a new, formatted memory card
static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
GladeXML *xml;
- GtkWidget *memcard_fs;
GtkWidget *message_dialog;
gint result;
- gchar *str;
+ char *str;
gint memcard = (int)user_data;
@@ -308,7 +338,7 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
_("Format this Memory Card?"));
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_dialog_add_buttons(GTK_DIALOG(message_dialog),
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
_("Format card"), GTK_RESPONSE_YES, NULL);
@@ -317,17 +347,14 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
if (result == GTK_RESPONSE_YES) {
xml = glade_get_widget_tree(widget);
- if (memcard == 1)
- memcard_fs = glade_xml_get_widget(xml, "GtkMcd1FSButton");
- else
- memcard_fs = glade_xml_get_widget(xml, "GtkMcd2FSButton");
- str = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(memcard_fs));
+ if (memcard == 1) str = Config.Mcd1;
+ else str = Config.Mcd2;
CreateMcd(str);
LoadMcd(memcard, str);
+
UpdateMcdDlg(widget);
- g_free(str);
}
}
@@ -350,26 +377,19 @@ static void OnMcd_New(GtkWidget *widget, gpointer user_data) {
if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) {
gchar *name;
- gchar *widget_name;
- GladeXML *xml;
gtk_widget_hide(chooser);
-
name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(chooser));
CreateMcd(name);
- // Set the name on the FileChooserButton - this will trigger the
- // callback to load the card and update the dialog
- widget_name = g_strdup_printf("GtkMcd%dFSButton", (int)user_data);
- xml = glade_get_widget_tree(widget);
+ if ((int)user_data == 1) strncpy(Config.Mcd1, name, MAXPATHLEN);
+ else strncpy(Config.Mcd2, name, MAXPATHLEN);
- gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(xml, widget_name)), name);
+ LoadMcd((int)user_data, name);
+ UpdateMcdDlg(widget);
- g_free(widget_name);
g_free(name);
-
- UpdateMcdDlg(widget);
}
gtk_widget_destroy(chooser);
@@ -383,7 +403,7 @@ static int GetFreeMemcardSlot(int target_card) {
gboolean found = FALSE;
int i = 0;
- while (i < 15 && found == FALSE) {
+ while (i < 15 && found == FALSE) {
Info = &Blocks[target_card][i];
if (g_ascii_strcasecmp(Info->Title, "") == 0) {
found = TRUE;
@@ -461,11 +481,11 @@ static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) {
xml = glade_get_widget_tree(GtkCList_McdList1);
if (mcd == 1) {
- str = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(xml, "GtkMcd1FSButton")));
+ str = Config.Mcd1;
source = Mcd2Data;
destination = Mcd1Data;
} else {
- str = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(xml, "GtkMcd2FSButton")));
+ str = Config.Mcd2;
source = Mcd1Data;
destination = Mcd2Data;
}
@@ -496,13 +516,13 @@ static void OnMemcardDelete(GtkWidget *widget, gpointer user_data) {
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected (sel, &model, &iter);
data = Mcd1Data;
- filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(xml, "GtkMcd1FSButton")));
+ filename = Config.Mcd1;
} else {
tree = glade_xml_get_widget(xml, "GtkCList_McdList2");
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected(sel, &model, &iter);
data = Mcd2Data;
- filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(glade_xml_get_widget(xml, "GtkMcd2FSButton")));
+ filename = Config.Mcd2;
}
if (selected) {
@@ -644,7 +664,7 @@ void OnConf_Mcds() {
// Setup a handler for when Close or Cancel is clicked
g_signal_connect_data(GTK_OBJECT(dialog), "response",
- GTK_SIGNAL_FUNC(OnMcd_Clicked), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
+ GTK_SIGNAL_FUNC(OnMcd_Close), xml, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
widget = glade_xml_get_widget(xml, "GtkButton_Format1");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
@@ -654,15 +674,13 @@ void OnConf_Mcds() {
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
GTK_SIGNAL_FUNC(OnMcd_Format), (gpointer)2, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "GtkMcd1FSButton");
- g_signal_connect_data(GTK_OBJECT(widget), "selection-changed",
- GTK_SIGNAL_FUNC(OnMemcardFileChanged), (gpointer)1, NULL, G_CONNECT_AFTER);
- gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(widget), Config.Mcd1);
+ widget = glade_xml_get_widget(xml, "Mcd1Button");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnMcd_FileChange), (gpointer)1, NULL, G_CONNECT_AFTER);
- widget = glade_xml_get_widget(xml, "GtkMcd2FSButton");
- g_signal_connect_data(GTK_OBJECT(widget), "selection-changed",
- GTK_SIGNAL_FUNC(OnMemcardFileChanged), (gpointer) 2, NULL, G_CONNECT_AFTER);
- gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(widget), Config.Mcd2);
+ widget = glade_xml_get_widget(xml, "Mcd2Button");
+ g_signal_connect_data(GTK_OBJECT(widget), "clicked",
+ GTK_SIGNAL_FUNC(OnMcd_FileChange), (gpointer)2, NULL, G_CONNECT_AFTER);
widget = glade_xml_get_widget(xml, "GtkButton_New1");
g_signal_connect_data(GTK_OBJECT(widget), "clicked",
diff --git a/libpcsxcore/psxcommon.h b/libpcsxcore/psxcommon.h
index 1ccf73fc..4dc3bfa1 100644
--- a/libpcsxcore/psxcommon.h
+++ b/libpcsxcore/psxcommon.h
@@ -58,7 +58,6 @@ typedef uintptr_t uptr;
#include "system.h"
#include "debug.h"
-/* Ryan TODO WTF is this? */
#if defined (__LINUX__) || defined (__MACOSX__)
#define strnicmp strncasecmp
#endif
@@ -88,15 +87,15 @@ extern int Log;
void __Log(char *fmt, ...);
typedef struct {
- char Gpu[256];
- char Spu[256];
- char Cdr[256];
- char Pad1[256];
- char Pad2[256];
- char Net[256];
- char Mcd1[256];
- char Mcd2[256];
- char Bios[256];
+ char Gpu[MAXPATHLEN];
+ char Spu[MAXPATHLEN];
+ char Cdr[MAXPATHLEN];
+ char Pad1[MAXPATHLEN];
+ char Pad2[MAXPATHLEN];
+ char Net[MAXPATHLEN];
+ char Mcd1[MAXPATHLEN];
+ char Mcd2[MAXPATHLEN];
+ char Bios[MAXPATHLEN];
char BiosDir[MAXPATHLEN];
char PluginsDir[MAXPATHLEN];
long Xa;
diff --git a/po/pcsx.pot b/po/pcsx.pot
index 9d1540ed..544126aa 100644
--- a/po/pcsx.pot
+++ b/po/pcsx.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-28 19:26+0800\n"
+"POT-Creation-Date: 2009-11-28 23:14+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -95,7 +95,7 @@ msgstr ""
msgid "Add New Cheat"
msgstr ""
-#: ../win32/gui/CheatDlg.c:167 ../data/pcsx.glade2:2402
+#: ../win32/gui/CheatDlg.c:167 ../data/pcsx.glade2:2629
msgid "Edit Cheat Codes"
msgstr ""
@@ -207,7 +207,7 @@ msgstr ""
msgid "Founded Addresses: %d"
msgstr ""
-#: ../win32/gui/CheatDlg.c:505 ../data/pcsx.glade2:2801
+#: ../win32/gui/CheatDlg.c:505 ../data/pcsx.glade2:3028
msgid "Freeze"
msgstr ""
@@ -216,7 +216,7 @@ msgid "Address:"
msgstr ""
#: ../win32/gui/CheatDlg.c:507 ../win32/gui/CheatDlg.c:598
-#: ../win32/gui/CheatDlg.c:683 ../gui/Cheat.c:648 ../data/pcsx.glade2:2645
+#: ../win32/gui/CheatDlg.c:683 ../gui/Cheat.c:648 ../data/pcsx.glade2:2872
msgid "Value:"
msgstr ""
@@ -225,27 +225,27 @@ msgstr ""
msgid "Freeze %.8X"
msgstr ""
-#: ../win32/gui/CheatDlg.c:596 ../data/pcsx.glade2:2837
+#: ../win32/gui/CheatDlg.c:596 ../data/pcsx.glade2:3064
msgid "Modify"
msgstr ""
-#: ../win32/gui/CheatDlg.c:679 ../gui/Cheat.c:1130 ../data/pcsx.glade2:2573
+#: ../win32/gui/CheatDlg.c:679 ../gui/Cheat.c:1130 ../data/pcsx.glade2:2800
msgid "Cheat Search"
msgstr ""
-#: ../win32/gui/CheatDlg.c:681 ../data/pcsx.glade2:2623
+#: ../win32/gui/CheatDlg.c:681 ../data/pcsx.glade2:2850
msgid "Search For:"
msgstr ""
-#: ../win32/gui/CheatDlg.c:682 ../data/pcsx.glade2:2633
+#: ../win32/gui/CheatDlg.c:682 ../data/pcsx.glade2:2860
msgid "Data Type:"
msgstr ""
-#: ../win32/gui/CheatDlg.c:684 ../data/pcsx.glade2:2657
+#: ../win32/gui/CheatDlg.c:684 ../data/pcsx.glade2:2884
msgid "Data Base:"
msgstr ""
-#: ../win32/gui/CheatDlg.c:685 ../data/pcsx.glade2:2717
+#: ../win32/gui/CheatDlg.c:685 ../data/pcsx.glade2:2944
msgid "To:"
msgstr ""
@@ -293,7 +293,7 @@ msgstr ""
msgid "Hexadecimal"
msgstr ""
-#: ../win32/gui/ConfigurePlugins.c:206 ../gui/Gtk2Gui.c:1663
+#: ../win32/gui/ConfigurePlugins.c:206 ../gui/ConfDlg.c:680
msgid "Internal HLE Bios"
msgstr ""
@@ -615,13 +615,13 @@ msgstr ""
msgid "*PCSX*: Error Saving State %s"
msgstr ""
-#: ../win32/gui/WndMain.c:426 ../win32/gui/WndMain.c:475 ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../win32/gui/WndMain.c:426 ../win32/gui/WndMain.c:475 ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "The CD does not appear to be a valid Playstation CD"
msgstr ""
-#: ../win32/gui/WndMain.c:432 ../win32/gui/WndMain.c:481 ../gui/Gtk2Gui.c:579
-#: ../gui/Gtk2Gui.c:704
+#: ../win32/gui/WndMain.c:432 ../win32/gui/WndMain.c:481 ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
msgid "Could not load CD-ROM!"
msgstr ""
@@ -653,17 +653,17 @@ msgstr ""
msgid "terminiting link block"
msgstr ""
-#: ../win32/gui/WndMain.c:864 ../gui/MemcardDlg.c:147 ../gui/MemcardDlg.c:217
+#: ../win32/gui/WndMain.c:864 ../gui/MemcardDlg.c:147 ../gui/MemcardDlg.c:244
msgid "Deleted"
msgstr ""
#: ../win32/gui/WndMain.c:865 ../win32/gui/WndMain.c:868
-#: ../gui/MemcardDlg.c:149 ../gui/MemcardDlg.c:153 ../gui/MemcardDlg.c:219
-#: ../gui/MemcardDlg.c:223
+#: ../gui/MemcardDlg.c:149 ../gui/MemcardDlg.c:153 ../gui/MemcardDlg.c:246
+#: ../gui/MemcardDlg.c:250
msgid "Free"
msgstr ""
-#: ../win32/gui/WndMain.c:867 ../gui/MemcardDlg.c:151 ../gui/MemcardDlg.c:221
+#: ../win32/gui/WndMain.c:867 ../gui/MemcardDlg.c:151 ../gui/MemcardDlg.c:248
msgid "Used"
msgstr ""
@@ -744,7 +744,7 @@ msgstr ""
msgid "Disable Cd audio"
msgstr ""
-#: ../win32/gui/WndMain.c:1206 ../data/pcsx.glade2:1444
+#: ../win32/gui/WndMain.c:1206 ../data/pcsx.glade2:1588
msgid "Autodetect"
msgstr ""
@@ -752,11 +752,11 @@ msgstr ""
msgid "Enable Interpreter Cpu"
msgstr ""
-#: ../win32/gui/WndMain.c:1208 ../data/pcsx.glade2:1300
+#: ../win32/gui/WndMain.c:1208 ../data/pcsx.glade2:1444
msgid "Enable Console Output"
msgstr ""
-#: ../win32/gui/WndMain.c:1209 ../data/pcsx.glade2:1250
+#: ../win32/gui/WndMain.c:1209 ../data/pcsx.glade2:1394
msgid "Enable Debugger"
msgstr ""
@@ -764,11 +764,11 @@ msgstr ""
msgid "Spu Irq Always Enabled"
msgstr ""
-#: ../win32/gui/WndMain.c:1211 ../data/pcsx.glade2:1387
+#: ../win32/gui/WndMain.c:1211 ../data/pcsx.glade2:1531
msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix"
msgstr ""
-#: ../win32/gui/WndMain.c:1212 ../data/pcsx.glade2:1402
+#: ../win32/gui/WndMain.c:1212 ../data/pcsx.glade2:1546
msgid "InuYasha Sengoku Battle Fix"
msgstr ""
@@ -807,7 +807,7 @@ msgid "DataDeck Memory Card (*.ddf)"
msgstr ""
#: ../win32/gui/WndMain.c:1350 ../win32/gui/WndMain.c:1431 ../gui/Cheat.c:322
-#: ../gui/Gtk2Gui.c:508 ../gui/Gtk2Gui.c:647
+#: ../gui/Gtk2Gui.c:402 ../gui/Gtk2Gui.c:541
msgid "All Files"
msgstr ""
@@ -979,8 +979,8 @@ msgstr ""
msgid "All Files (*.*)"
msgstr ""
-#: ../gui/Cheat.c:395 ../gui/Cheat.c:1125 ../gui/Gtk2Gui.c:396
-#: ../gui/Gtk2Gui.c:1016
+#: ../gui/Cheat.c:395 ../gui/Cheat.c:1125 ../gui/ConfDlg.c:104
+#: ../gui/ConfDlg.c:203
msgid "Error: Glade interface could not be loaded!"
msgstr ""
@@ -1008,95 +1008,95 @@ msgstr ""
msgid "Search Results"
msgstr ""
-#: ../gui/Gtk2Gui.c:404 ../data/pcsx.glade2:605
+#: ../gui/ConfDlg.c:112 ../data/pcsx.glade2:749
msgid "Configure PCSX"
msgstr ""
-#: ../gui/Gtk2Gui.c:490
+#: ../gui/ConfDlg.c:240 ../gui/ConfDlg.c:261 ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303 ../gui/ConfDlg.c:358
+msgid "No configuration required"
+msgstr ""
+
+#: ../gui/ConfDlg.c:240 ../gui/ConfDlg.c:261 ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303 ../gui/ConfDlg.c:358
+msgid "This plugin doesn't need to be configured."
+msgstr ""
+
+#: ../gui/ConfDlg.c:586
+#, c-format
+msgid "Could not open BIOS directory: '%s'\n"
+msgstr ""
+
+#: ../gui/ConfDlg.c:616 ../gui/ConfDlg.c:709 ../gui/LnxMain.c:167
+#, c-format
+msgid "Could not open directory: '%s'\n"
+msgstr ""
+
+#: ../gui/Gtk2Gui.c:384
msgid "Select PSX EXE File"
msgstr ""
-#: ../gui/Gtk2Gui.c:504
+#: ../gui/Gtk2Gui.c:398
msgid "PlayStation Executable Files"
msgstr ""
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "Not a valid PSX file"
msgstr ""
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "The file does not appear to be a valid Playstation executable"
msgstr ""
-#: ../gui/Gtk2Gui.c:571 ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465 ../gui/Gtk2Gui.c:590
msgid "CD ROM failed"
msgstr ""
-#: ../gui/Gtk2Gui.c:579
-msgid "The CD ROM could not be loaded"
+#: ../gui/Gtk2Gui.c:473 ../gui/Gtk2Gui.c:598
+msgid "The CD-ROM could not be loaded"
msgstr ""
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Could not run BIOS"
msgstr ""
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Running BIOS is not supported with Internal HLE BIOS."
msgstr ""
-#: ../gui/Gtk2Gui.c:622
+#: ../gui/Gtk2Gui.c:516
msgid "Open PSX Disc Image File"
msgstr ""
-#: ../gui/Gtk2Gui.c:642
+#: ../gui/Gtk2Gui.c:536
msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)"
msgstr ""
-#: ../gui/Gtk2Gui.c:876
+#: ../gui/Gtk2Gui.c:747
#, c-format
msgid "Loaded state %s."
msgstr ""
-#: ../gui/Gtk2Gui.c:880
+#: ../gui/Gtk2Gui.c:751
#, c-format
msgid "Error loading state %s!"
msgstr ""
-#: ../gui/Gtk2Gui.c:891
+#: ../gui/Gtk2Gui.c:762
#, c-format
msgid "Saved state %s."
msgstr ""
-#: ../gui/Gtk2Gui.c:893
+#: ../gui/Gtk2Gui.c:764
#, c-format
msgid "Error saving state %s!"
msgstr ""
-#: ../gui/Gtk2Gui.c:927 ../gui/Gtk2Gui.c:954
+#: ../gui/Gtk2Gui.c:797 ../gui/Gtk2Gui.c:824
msgid "Select State File"
msgstr ""
-#: ../gui/Gtk2Gui.c:1053 ../gui/Gtk2Gui.c:1074 ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116 ../gui/Gtk2Gui.c:1315
-msgid "No configuration required"
-msgstr ""
-
-#: ../gui/Gtk2Gui.c:1053 ../gui/Gtk2Gui.c:1074 ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116 ../gui/Gtk2Gui.c:1315
-msgid "This plugin doesn't need to be configured."
-msgstr ""
-
-#: ../gui/Gtk2Gui.c:1569
-#, c-format
-msgid "Could not open BIOS directory: '%s'\n"
-msgstr ""
-
-#: ../gui/Gtk2Gui.c:1599 ../gui/Gtk2Gui.c:1692 ../gui/LnxMain.c:167
-#, c-format
-msgid "Could not open directory: '%s'\n"
-msgstr ""
-
-#: ../gui/Gtk2Gui.c:1753
+#: ../gui/Gtk2Gui.c:881
msgid "Notice"
msgstr ""
@@ -1152,43 +1152,47 @@ msgstr ""
msgid "Name"
msgstr ""
-#: ../gui/MemcardDlg.c:308
+#: ../gui/MemcardDlg.c:297
+msgid "Select A File"
+msgstr ""
+
+#: ../gui/MemcardDlg.c:338
msgid "Format this Memory Card?"
msgstr ""
-#: ../gui/MemcardDlg.c:310
+#: ../gui/MemcardDlg.c:340
msgid ""
"If you format the memory card, the card will be empty, and any existing data "
"overwritten."
msgstr ""
-#: ../gui/MemcardDlg.c:313
+#: ../gui/MemcardDlg.c:343
msgid "Format card"
msgstr ""
-#: ../gui/MemcardDlg.c:339
+#: ../gui/MemcardDlg.c:366
msgid "Create a new Memory Card"
msgstr ""
-#: ../gui/MemcardDlg.c:348
+#: ../gui/MemcardDlg.c:375
msgid "New Memory Card.mcd"
msgstr ""
-#: ../gui/MemcardDlg.c:456
+#: ../gui/MemcardDlg.c:476
msgid "No free space on memory card"
msgstr ""
-#: ../gui/MemcardDlg.c:457
+#: ../gui/MemcardDlg.c:477
msgid ""
"There are no free slots available on the target memory card. Please delete a "
"slot first."
msgstr ""
-#: ../gui/MemcardDlg.c:611
+#: ../gui/MemcardDlg.c:631
msgid "Memory Card Manager"
msgstr ""
-#: ../gui/Plugin.c:204 ../data/pcsx.glade2:1336
+#: ../gui/Plugin.c:204 ../data/pcsx.glade2:1480
#, c-format
msgid "SIO IRQ Always Enabled"
msgstr ""
@@ -1764,117 +1768,173 @@ msgstr ""
msgid "_About PCSX..."
msgstr ""
+#: ../data/pcsx.glade2:599 ../data/pcsx.glade2:600
+msgid "Run CD"
+msgstr ""
+
+#: ../data/pcsx.glade2:612
+msgid "Run ISO Image"
+msgstr ""
+
+#: ../data/pcsx.glade2:613
+msgid "Run ISO..."
+msgstr ""
+
+#: ../data/pcsx.glade2:634
+msgid "Switch ISO Image"
+msgstr ""
+
+#: ../data/pcsx.glade2:635
+msgid "Switch ISO..."
+msgstr ""
+
+#: ../data/pcsx.glade2:656 ../data/pcsx.glade2:1838
+msgid "Configure Memory Cards"
+msgstr ""
+
+#: ../data/pcsx.glade2:657
+msgid "Memcards..."
+msgstr ""
+
+#: ../data/pcsx.glade2:669
+msgid "Configure Graphics"
+msgstr ""
+
+#: ../data/pcsx.glade2:670
+msgid "Graphics..."
+msgstr ""
+
+#: ../data/pcsx.glade2:682 ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
+msgid "Configure Sound"
+msgstr ""
+
+#: ../data/pcsx.glade2:683
+msgid "Sound..."
+msgstr ""
+
+#: ../data/pcsx.glade2:695
+msgid "Configure CD-ROM"
+msgstr ""
+
+#: ../data/pcsx.glade2:696
+msgid "CD-ROM..."
+msgstr ""
+
#: ../data/pcsx.glade2:708
+msgid "Configure Controllers"
+msgstr ""
+
+#: ../data/pcsx.glade2:709
+msgid "Controllers..."
+msgstr ""
+
+#: ../data/pcsx.glade2:852
msgid "Select Folder to Search"
msgstr ""
-#: ../data/pcsx.glade2:724
+#: ../data/pcsx.glade2:868
msgid "Search in:"
msgstr ""
-#: ../data/pcsx.glade2:997
+#: ../data/pcsx.glade2:1141
msgid "Graphics:"
msgstr ""
-#: ../data/pcsx.glade2:1010
+#: ../data/pcsx.glade2:1154
msgid "Sound:"
msgstr ""
-#: ../data/pcsx.glade2:1025
+#: ../data/pcsx.glade2:1169
msgid "Controller 1: "
msgstr ""
-#: ../data/pcsx.glade2:1040
+#: ../data/pcsx.glade2:1184
msgid "Controller 2:"
msgstr ""
-#: ../data/pcsx.glade2:1055
+#: ../data/pcsx.glade2:1199
msgid "CD-ROM:"
msgstr ""
-#: ../data/pcsx.glade2:1093
+#: ../data/pcsx.glade2:1237
msgid "<b>Plugins</b>"
msgstr ""
-#: ../data/pcsx.glade2:1154
+#: ../data/pcsx.glade2:1298
msgid "<b>BIOS</b>"
msgstr ""
-#: ../data/pcsx.glade2:1221
+#: ../data/pcsx.glade2:1365
msgid "Configure CPU"
msgstr ""
-#: ../data/pcsx.glade2:1268
+#: ../data/pcsx.glade2:1412
msgid "SPU IRQ Always Enabled"
msgstr ""
-#: ../data/pcsx.glade2:1284
+#: ../data/pcsx.glade2:1428
msgid "Black & White Movies"
msgstr ""
-#: ../data/pcsx.glade2:1318
+#: ../data/pcsx.glade2:1462
msgid "Enable Interpreter CPU"
msgstr ""
-#: ../data/pcsx.glade2:1352
+#: ../data/pcsx.glade2:1496
msgid "Disable CD Audio"
msgstr ""
-#: ../data/pcsx.glade2:1368
+#: ../data/pcsx.glade2:1512
msgid "Disable XA Decoding"
msgstr ""
-#: ../data/pcsx.glade2:1420
+#: ../data/pcsx.glade2:1564
msgid "<b>Options</b>"
msgstr ""
-#: ../data/pcsx.glade2:1461
+#: ../data/pcsx.glade2:1605
msgid ""
"NTSC\n"
"PAL"
msgstr ""
-#: ../data/pcsx.glade2:1475
+#: ../data/pcsx.glade2:1619
msgid "<b>System Type</b>"
msgstr ""
-#: ../data/pcsx.glade2:1539
+#: ../data/pcsx.glade2:1683
msgid "Configure NetPlay"
msgstr ""
-#: ../data/pcsx.glade2:1627
+#: ../data/pcsx.glade2:1771
msgid "<b>NetPlay</b>"
msgstr ""
-#: ../data/pcsx.glade2:1694
-msgid "Configure Memory Cards"
-msgstr ""
-
-#: ../data/pcsx.glade2:1773 ../data/pcsx.glade2:2122
+#: ../data/pcsx.glade2:1917 ../data/pcsx.glade2:2315
msgid "New"
msgstr ""
-#: ../data/pcsx.glade2:1823 ../data/pcsx.glade2:2172
+#: ../data/pcsx.glade2:1967 ../data/pcsx.glade2:2365
msgid "Format"
msgstr ""
-#: ../data/pcsx.glade2:1873 ../data/pcsx.glade2:2222
+#: ../data/pcsx.glade2:2017 ../data/pcsx.glade2:2415
msgid "Un/Delete"
msgstr ""
-#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2110
msgid "<b>Memory Card 1</b>"
msgstr ""
-#: ../data/pcsx.glade2:1978 ../data/pcsx.glade2:2028 ../data/pcsx.glade2:2873
+#: ../data/pcsx.glade2:2171 ../data/pcsx.glade2:2221 ../data/pcsx.glade2:3100
msgid "Copy"
msgstr ""
-#: ../data/pcsx.glade2:2266
+#: ../data/pcsx.glade2:2508
msgid "<b>Memory Card 2</b>"
msgstr ""
-#: ../data/pcsx.glade2:2344
+#: ../data/pcsx.glade2:2571
msgid ""
"(C) 1999-2003 PCSX Team\n"
"(C) 2005-2006 Ryan Schultz\n"
@@ -1882,11 +1942,11 @@ msgid ""
"(C) 2008-2009 Wei Mingzhi"
msgstr ""
-#: ../data/pcsx.glade2:2348
+#: ../data/pcsx.glade2:2575
msgid "A PlayStation emulator."
msgstr ""
-#: ../data/pcsx.glade2:2351
+#: ../data/pcsx.glade2:2578
msgid ""
"This program is free software; you can redistribute it\n"
"and/or modify it under the terms of the GNU General\n"
@@ -1905,22 +1965,22 @@ msgid ""
"the Free Software Foundation, Inc."
msgstr ""
-#: ../data/pcsx.glade2:2380
+#: ../data/pcsx.glade2:2607
msgid "translator-credits"
msgstr ""
-#: ../data/pcsx.glade2:2442
+#: ../data/pcsx.glade2:2669
msgid "<b>Cheat Codes</b>"
msgstr ""
-#: ../data/pcsx.glade2:2608
+#: ../data/pcsx.glade2:2835
msgid ""
"8-bit\n"
"16-bit\n"
"32-bit"
msgstr ""
-#: ../data/pcsx.glade2:2671
+#: ../data/pcsx.glade2:2898
msgid ""
"Equal Value\n"
"Not Equal Value\n"
@@ -1933,25 +1993,25 @@ msgid ""
"No Change"
msgstr ""
-#: ../data/pcsx.glade2:2703
+#: ../data/pcsx.glade2:2930
msgid ""
"Decimal\n"
"Hexadecimal"
msgstr ""
-#: ../data/pcsx.glade2:2906
+#: ../data/pcsx.glade2:3133
msgid "label_resultsfound"
msgstr ""
-#: ../data/pcsx.glade2:2941
+#: ../data/pcsx.glade2:3168
msgid "Search"
msgstr ""
-#: ../data/pcsx.glade2:2977
+#: ../data/pcsx.glade2:3204
msgid "Restart"
msgstr ""
-#: ../data/pcsx.glade2:3006
+#: ../data/pcsx.glade2:3233
msgid "<b>Cheat Search</b>"
msgstr ""
@@ -1977,10 +2037,6 @@ msgid ""
"Coded by Pete Bernert and the P.E.Op.S. team\n"
msgstr ""
-#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
-msgid "Configure Sound"
-msgstr ""
-
#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:42
msgid "Volume:"
msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index fc9fe3b2..6b517c5e 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -5,8 +5,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsx-df\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-28 19:26+0800\n"
-"PO-Revision-Date: 2009-11-28 19:07+0700\n"
+"POT-Creation-Date: 2009-11-28 23:14+0800\n"
+"PO-Revision-Date: 2009-11-28 23:17+0700\n"
"Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n"
"Language-Team: PoBRE <romhackers@gmail.com>\n"
"MIME-Version: 1.0\n"
@@ -52,14 +52,19 @@ msgstr ""
"\n"
"http://www.codeplex.com/pcsxr"
-#: ../win32/gui/AboutDlg.c:46 ../plugins/peopsxgl/gpucfg/interface.c:831
+#: ../win32/gui/AboutDlg.c:46
+#: ../plugins/peopsxgl/gpucfg/interface.c:831
msgid "About"
msgstr "Sobre"
-#: ../win32/gui/AboutDlg.c:48 ../win32/gui/AboutDlg.c:52
-#: ../win32/gui/CheatDlg.c:70 ../win32/gui/CheatDlg.c:120
-#: ../win32/gui/ConfigurePlugins.c:470 ../win32/gui/ConfigurePlugins.c:601
-#: ../win32/gui/WndMain.c:963 ../win32/gui/WndMain.c:1199
+#: ../win32/gui/AboutDlg.c:48
+#: ../win32/gui/AboutDlg.c:52
+#: ../win32/gui/CheatDlg.c:70
+#: ../win32/gui/CheatDlg.c:120
+#: ../win32/gui/ConfigurePlugins.c:470
+#: ../win32/gui/ConfigurePlugins.c:601
+#: ../win32/gui/WndMain.c:963
+#: ../win32/gui/WndMain.c:1199
#: ../plugins/peopsxgl/gpucfg/interface.c:130
#: ../plugins/peopsxgl/gpucfg/interface.c:843
msgid "OK"
@@ -69,46 +74,60 @@ msgstr "OK"
msgid "PCSX EMU\n"
msgstr "EMULADOR PCSX\n"
-#: ../win32/gui/CheatDlg.c:52 ../win32/gui/CheatDlg.c:224
+#: ../win32/gui/CheatDlg.c:52
+#: ../win32/gui/CheatDlg.c:224
#: ../win32/gui/CheatDlg.c:271
msgid "Yes"
msgstr "Sim"
-#: ../win32/gui/CheatDlg.c:52 ../win32/gui/CheatDlg.c:224
+#: ../win32/gui/CheatDlg.c:52
+#: ../win32/gui/CheatDlg.c:224
#: ../win32/gui/CheatDlg.c:271
msgid "No"
msgstr "Não"
-#: ../win32/gui/CheatDlg.c:67 ../gui/Cheat.c:195
+#: ../win32/gui/CheatDlg.c:67
+#: ../gui/Cheat.c:195
msgid "Edit Cheat"
msgstr "Editar Trapaça"
-#: ../win32/gui/CheatDlg.c:68 ../win32/gui/CheatDlg.c:118 ../gui/Cheat.c:637
+#: ../win32/gui/CheatDlg.c:68
+#: ../win32/gui/CheatDlg.c:118
+#: ../gui/Cheat.c:637
msgid "Description:"
msgstr "Descrição:"
-#: ../win32/gui/CheatDlg.c:69 ../win32/gui/CheatDlg.c:119 ../gui/Cheat.c:126
+#: ../win32/gui/CheatDlg.c:69
+#: ../win32/gui/CheatDlg.c:119
+#: ../gui/Cheat.c:126
#: ../gui/Cheat.c:212
msgid "Cheat Code:"
msgstr "Código de Trapaça:"
-#: ../win32/gui/CheatDlg.c:71 ../win32/gui/CheatDlg.c:121
-#: ../win32/gui/ConfigurePlugins.c:471 ../win32/gui/ConfigurePlugins.c:602
-#: ../win32/gui/WndMain.c:964 ../win32/gui/WndMain.c:1200
+#: ../win32/gui/CheatDlg.c:71
+#: ../win32/gui/CheatDlg.c:121
+#: ../win32/gui/ConfigurePlugins.c:471
+#: ../win32/gui/ConfigurePlugins.c:602
+#: ../win32/gui/WndMain.c:964
+#: ../win32/gui/WndMain.c:1200
#: ../plugins/peopsxgl/gpucfg/interface.c:338
msgid "Cancel"
msgstr "Cancelar"
-#: ../win32/gui/CheatDlg.c:92 ../win32/gui/CheatDlg.c:133 ../gui/Cheat.c:156
+#: ../win32/gui/CheatDlg.c:92
+#: ../win32/gui/CheatDlg.c:133
+#: ../gui/Cheat.c:156
#: ../gui/Cheat.c:252
msgid "Invalid cheat code!"
msgstr "Código de trapaça inválido!"
-#: ../win32/gui/CheatDlg.c:117 ../gui/Cheat.c:110
+#: ../win32/gui/CheatDlg.c:117
+#: ../gui/Cheat.c:110
msgid "Add New Cheat"
msgstr "Adicionar nova Trapaça"
-#: ../win32/gui/CheatDlg.c:167 ../data/pcsx.glade2:2402
+#: ../win32/gui/CheatDlg.c:167
+#: ../data/pcsx.glade2:2629
msgid "Edit Cheat Codes"
msgstr "Editar Códigos de Trapaça"
@@ -140,7 +159,8 @@ msgstr "&Salvar como..."
msgid "&Close"
msgstr "&Fechar"
-#: ../win32/gui/CheatDlg.c:186 ../gui/Cheat.c:414
+#: ../win32/gui/CheatDlg.c:186
+#: ../gui/Cheat.c:414
msgid "Description"
msgstr "Descrição"
@@ -148,7 +168,8 @@ msgstr "Descrição"
msgid "Enabled"
msgstr "Ligado"
-#: ../win32/gui/CheatDlg.c:283 ../win32/gui/CheatDlg.c:312
+#: ../win32/gui/CheatDlg.c:283
+#: ../win32/gui/CheatDlg.c:312
msgid "PCSX Cheat Code Files"
msgstr "Arquivos de trapaça do PCSX"
@@ -188,7 +209,8 @@ msgstr "Diferentes"
msgid "No Change"
msgstr "Sem mudanças"
-#: ../win32/gui/CheatDlg.c:449 ../gui/Cheat.c:586
+#: ../win32/gui/CheatDlg.c:449
+#: ../gui/Cheat.c:586
msgid "Enter the values and start your search."
msgstr "Digite algum número para começar a pesquisa."
@@ -196,40 +218,50 @@ msgstr "Digite algum número para começar a pesquisa."
msgid "No addresses found."
msgstr "Nenhum endereço encontrado com esse número."
-#: ../win32/gui/CheatDlg.c:458 ../gui/Cheat.c:544
+#: ../win32/gui/CheatDlg.c:458
+#: ../gui/Cheat.c:544
msgid "Too many addresses found."
msgstr "Muitos endereços encontrados com esse número, refine a pesquisa."
-#: ../win32/gui/CheatDlg.c:467 ../gui/Cheat.c:553
+#: ../win32/gui/CheatDlg.c:467
+#: ../gui/Cheat.c:553
#, c-format
msgid "%.8X Current: %u (%.2X), Previous: %u (%.2X)"
msgstr "%.8X Atual: %u (%.2X), Anterior: %u (%.2X)"
-#: ../win32/gui/CheatDlg.c:472 ../gui/Cheat.c:558
+#: ../win32/gui/CheatDlg.c:472
+#: ../gui/Cheat.c:558
#, c-format
msgid "%.8X Current: %u (%.4X), Previous: %u (%.4X)"
msgstr "%.8X Atual: %u (%.4X), Anterior: %u (%.4X)"
-#: ../win32/gui/CheatDlg.c:477 ../gui/Cheat.c:563
+#: ../win32/gui/CheatDlg.c:477
+#: ../gui/Cheat.c:563
#, c-format
msgid "%.8X Current: %u (%.8X), Previous: %u (%.8X)"
msgstr "%.8X Atual: %u (%.8X), Anterior: %u (%.8X)"
-#: ../win32/gui/CheatDlg.c:493 ../gui/Cheat.c:578
+#: ../win32/gui/CheatDlg.c:493
+#: ../gui/Cheat.c:578
#, c-format
msgid "Founded Addresses: %d"
msgstr "Endereços com o número: %d"
-#: ../win32/gui/CheatDlg.c:505 ../data/pcsx.glade2:2801
+#: ../win32/gui/CheatDlg.c:505
+#: ../data/pcsx.glade2:3028
msgid "Freeze"
msgstr "Parar"
-#: ../win32/gui/CheatDlg.c:506 ../win32/gui/CheatDlg.c:597
+#: ../win32/gui/CheatDlg.c:506
+#: ../win32/gui/CheatDlg.c:597
msgid "Address:"
msgstr "Endereço:"
-#: ../win32/gui/CheatDlg.c:507 ../win32/gui/CheatDlg.c:598
-#: ../win32/gui/CheatDlg.c:683 ../gui/Cheat.c:648 ../data/pcsx.glade2:2645
+#: ../win32/gui/CheatDlg.c:507
+#: ../win32/gui/CheatDlg.c:598
+#: ../win32/gui/CheatDlg.c:683
+#: ../gui/Cheat.c:648
+#: ../data/pcsx.glade2:2872
msgid "Value:"
msgstr "Valor:"
@@ -238,27 +270,34 @@ msgstr "Valor:"
msgid "Freeze %.8X"
msgstr "Parar %.8X"
-#: ../win32/gui/CheatDlg.c:596 ../data/pcsx.glade2:2837
+#: ../win32/gui/CheatDlg.c:596
+#: ../data/pcsx.glade2:3064
msgid "Modify"
msgstr "Modificar"
-#: ../win32/gui/CheatDlg.c:679 ../gui/Cheat.c:1130 ../data/pcsx.glade2:2573
+#: ../win32/gui/CheatDlg.c:679
+#: ../gui/Cheat.c:1130
+#: ../data/pcsx.glade2:2800
msgid "Cheat Search"
msgstr "Procurar por trapaça"
-#: ../win32/gui/CheatDlg.c:681 ../data/pcsx.glade2:2623
+#: ../win32/gui/CheatDlg.c:681
+#: ../data/pcsx.glade2:2850
msgid "Search For:"
msgstr "Buscar por:"
-#: ../win32/gui/CheatDlg.c:682 ../data/pcsx.glade2:2633
+#: ../win32/gui/CheatDlg.c:682
+#: ../data/pcsx.glade2:2860
msgid "Data Type:"
msgstr "Tipo de dados:"
-#: ../win32/gui/CheatDlg.c:684 ../data/pcsx.glade2:2657
+#: ../win32/gui/CheatDlg.c:684
+#: ../data/pcsx.glade2:2884
msgid "Data Base:"
msgstr "Banco de dados:"
-#: ../win32/gui/CheatDlg.c:685 ../data/pcsx.glade2:2717
+#: ../win32/gui/CheatDlg.c:685
+#: ../data/pcsx.glade2:2944
msgid "To:"
msgstr "Para:"
@@ -306,7 +345,8 @@ msgstr "Decimal"
msgid "Hexadecimal"
msgstr "Hexadecimal"
-#: ../win32/gui/ConfigurePlugins.c:206 ../gui/Gtk2Gui.c:1663
+#: ../win32/gui/ConfigurePlugins.c:206
+#: ../gui/ConfDlg.c:680
msgid "Internal HLE Bios"
msgstr "BIOS HLE interna"
@@ -314,7 +354,9 @@ msgstr "BIOS HLE interna"
msgid "Configuration not OK!"
msgstr "Não configurou corretamente!"
-#: ../win32/gui/ConfigurePlugins.c:292 ../gui/Cheat.c:156 ../gui/Cheat.c:252
+#: ../win32/gui/ConfigurePlugins.c:292
+#: ../gui/Cheat.c:156
+#: ../gui/Cheat.c:252
#: ../gui/LnxMain.c:409
msgid "Error"
msgstr "Erro"
@@ -371,21 +413,30 @@ msgstr "Escolher o diretório da BIOS"
msgid "Set Plugins Directory"
msgstr "Escolher o diretório das extensões"
-#: ../win32/gui/ConfigurePlugins.c:480 ../win32/gui/ConfigurePlugins.c:483
-#: ../win32/gui/ConfigurePlugins.c:486 ../win32/gui/ConfigurePlugins.c:489
-#: ../win32/gui/ConfigurePlugins.c:492 ../win32/gui/ConfigurePlugins.c:604
+#: ../win32/gui/ConfigurePlugins.c:480
+#: ../win32/gui/ConfigurePlugins.c:483
+#: ../win32/gui/ConfigurePlugins.c:486
+#: ../win32/gui/ConfigurePlugins.c:489
+#: ../win32/gui/ConfigurePlugins.c:492
+#: ../win32/gui/ConfigurePlugins.c:604
msgid "Configure..."
msgstr "Configurar..."
-#: ../win32/gui/ConfigurePlugins.c:481 ../win32/gui/ConfigurePlugins.c:484
-#: ../win32/gui/ConfigurePlugins.c:487 ../win32/gui/ConfigurePlugins.c:490
-#: ../win32/gui/ConfigurePlugins.c:493 ../win32/gui/ConfigurePlugins.c:605
+#: ../win32/gui/ConfigurePlugins.c:481
+#: ../win32/gui/ConfigurePlugins.c:484
+#: ../win32/gui/ConfigurePlugins.c:487
+#: ../win32/gui/ConfigurePlugins.c:490
+#: ../win32/gui/ConfigurePlugins.c:493
+#: ../win32/gui/ConfigurePlugins.c:605
msgid "Test..."
msgstr "Testar..."
-#: ../win32/gui/ConfigurePlugins.c:482 ../win32/gui/ConfigurePlugins.c:485
-#: ../win32/gui/ConfigurePlugins.c:488 ../win32/gui/ConfigurePlugins.c:491
-#: ../win32/gui/ConfigurePlugins.c:494 ../win32/gui/ConfigurePlugins.c:606
+#: ../win32/gui/ConfigurePlugins.c:482
+#: ../win32/gui/ConfigurePlugins.c:485
+#: ../win32/gui/ConfigurePlugins.c:488
+#: ../win32/gui/ConfigurePlugins.c:491
+#: ../win32/gui/ConfigurePlugins.c:494
+#: ../win32/gui/ConfigurePlugins.c:606
msgid "About..."
msgstr "Sobre..."
@@ -398,28 +449,29 @@ msgid "NetPlay"
msgstr "Jogo em rede"
#: ../win32/gui/ConfigurePlugins.c:607
-msgid ""
-"Note: The NetPlay Plugin Directory should be the same as the other Plugins."
-msgstr ""
-"Observação: o diretório da extensão de jogo em rede deve ser o mesmo que "
-"odas outras extensões."
+msgid "Note: The NetPlay Plugin Directory should be the same as the other Plugins."
+msgstr "Observação: o diretório da extensão de jogo em rede deve ser o mesmo que odas outras extensões."
-#: ../win32/gui/plugin.c:90 ../win32/gui/WndMain.c:278
+#: ../win32/gui/plugin.c:90
+#: ../win32/gui/WndMain.c:278
#, c-format
msgid "*PCSX*: Saved State %d"
msgstr "PCSX: Estado \"%d\" salvo."
-#: ../win32/gui/plugin.c:91 ../win32/gui/WndMain.c:279
+#: ../win32/gui/plugin.c:91
+#: ../win32/gui/WndMain.c:279
#, c-format
msgid "*PCSX*: Error Saving State %d"
msgstr "PCSX: Erro ao salvar o estado \"%d\"!"
-#: ../win32/gui/plugin.c:107 ../win32/gui/WndMain.c:256
+#: ../win32/gui/plugin.c:107
+#: ../win32/gui/WndMain.c:256
#, c-format
msgid "*PCSX*: Loaded State %d"
msgstr "PCSX: Estado \"%d\" carregado."
-#: ../win32/gui/plugin.c:108 ../win32/gui/WndMain.c:257
+#: ../win32/gui/plugin.c:108
+#: ../win32/gui/WndMain.c:257
#, c-format
msgid "*PCSX*: Error Loading State %d"
msgstr "PCSX: Erro ao carregar o estado \"%d\"!"
@@ -466,7 +518,8 @@ msgstr "PCSX: Bandeja do CDROM fechada."
msgid "Connecting..."
msgstr "Conectando..."
-#: ../win32/gui/plugin.c:179 ../win32/gui/plugin.c:186
+#: ../win32/gui/plugin.c:179
+#: ../win32/gui/plugin.c:186
#, c-format
msgid "Please wait while connecting... %c\n"
msgstr "Por favor, espere enquanto o emulador se conecta... %c\n"
@@ -561,7 +614,8 @@ msgstr "Alemão"
msgid "Greek"
msgstr "Grego"
-#: ../win32/gui/WndMain.c:80 ../win32/gui/WndMain.c:1556
+#: ../win32/gui/WndMain.c:80
+#: ../win32/gui/WndMain.c:1556
#: ../win32/gui/WndMain.c:1558
msgid "English"
msgstr "Inglês"
@@ -606,7 +660,8 @@ msgstr "Japonês"
msgid "Korean"
msgstr "Coreano"
-#: ../win32/gui/WndMain.c:297 ../win32/gui/WndMain.c:349
+#: ../win32/gui/WndMain.c:297
+#: ../win32/gui/WndMain.c:349
msgid "PCSX State Format"
msgstr "Formato dos estados salvos do PCSX"
@@ -630,13 +685,17 @@ msgstr "PCSX: Arquivo de estado \"%s\" salvo."
msgid "*PCSX*: Error Saving State %s"
msgstr "PCSX: Erro ao salvar o arquivo de estado \"%s\"!"
-#: ../win32/gui/WndMain.c:426 ../win32/gui/WndMain.c:475 ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../win32/gui/WndMain.c:426
+#: ../win32/gui/WndMain.c:475
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "The CD does not appear to be a valid Playstation CD"
msgstr "Esse CD não parece ser um CD de PlayStation!"
-#: ../win32/gui/WndMain.c:432 ../win32/gui/WndMain.c:481 ../gui/Gtk2Gui.c:579
-#: ../gui/Gtk2Gui.c:704
+#: ../win32/gui/WndMain.c:432
+#: ../win32/gui/WndMain.c:481
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
msgid "Could not load CD-ROM!"
msgstr "Não pôde carregar o CDROM!"
@@ -644,11 +703,13 @@ msgstr "Não pôde carregar o CDROM!"
msgid "Running BIOS is not supported with Internal HLE Bios."
msgstr "Iniciar pela BIOS não é suportado com a BIOS HLE interna."
-#: ../win32/gui/WndMain.c:661 ../gui/MemcardDlg.c:59
+#: ../win32/gui/WndMain.c:661
+#: ../gui/MemcardDlg.c:59
msgid "Title"
msgstr "Título"
-#: ../win32/gui/WndMain.c:667 ../gui/MemcardDlg.c:65
+#: ../win32/gui/WndMain.c:667
+#: ../gui/MemcardDlg.c:65
msgid "Status"
msgstr "Estado"
@@ -668,17 +729,24 @@ msgstr "bloco de ligação intermediário"
msgid "terminiting link block"
msgstr "bloco final da ligação"
-#: ../win32/gui/WndMain.c:864 ../gui/MemcardDlg.c:147 ../gui/MemcardDlg.c:217
+#: ../win32/gui/WndMain.c:864
+#: ../gui/MemcardDlg.c:147
+#: ../gui/MemcardDlg.c:244
msgid "Deleted"
msgstr "Apagado"
-#: ../win32/gui/WndMain.c:865 ../win32/gui/WndMain.c:868
-#: ../gui/MemcardDlg.c:149 ../gui/MemcardDlg.c:153 ../gui/MemcardDlg.c:219
-#: ../gui/MemcardDlg.c:223
+#: ../win32/gui/WndMain.c:865
+#: ../win32/gui/WndMain.c:868
+#: ../gui/MemcardDlg.c:149
+#: ../gui/MemcardDlg.c:153
+#: ../gui/MemcardDlg.c:246
+#: ../gui/MemcardDlg.c:250
msgid "Free"
msgstr "Liberado"
-#: ../win32/gui/WndMain.c:867 ../gui/MemcardDlg.c:151 ../gui/MemcardDlg.c:221
+#: ../win32/gui/WndMain.c:867
+#: ../gui/MemcardDlg.c:151
+#: ../gui/MemcardDlg.c:248
msgid "Used"
msgstr "Usado"
@@ -686,15 +754,18 @@ msgstr "Usado"
msgid "Memcard Manager"
msgstr "Gerenciador de cartões de memória"
-#: ../win32/gui/WndMain.c:965 ../win32/gui/WndMain.c:968
+#: ../win32/gui/WndMain.c:965
+#: ../win32/gui/WndMain.c:968
msgid "Select Mcd"
msgstr "Selecionar cartão"
-#: ../win32/gui/WndMain.c:966 ../win32/gui/WndMain.c:969
+#: ../win32/gui/WndMain.c:966
+#: ../win32/gui/WndMain.c:969
msgid "Format Mcd"
msgstr "Formatar cartão"
-#: ../win32/gui/WndMain.c:967 ../win32/gui/WndMain.c:970
+#: ../win32/gui/WndMain.c:967
+#: ../win32/gui/WndMain.c:970
msgid "Reload Mcd"
msgstr "Reiniciar cartão"
@@ -730,12 +801,14 @@ msgstr "Cartão de memória 2"
msgid "Are you sure you want to paste this selection?"
msgstr "Você tem certeza que quer colar o selecionado?"
-#: ../win32/gui/WndMain.c:1033 ../win32/gui/WndMain.c:1144
+#: ../win32/gui/WndMain.c:1033
+#: ../win32/gui/WndMain.c:1144
#: ../win32/gui/WndMain.c:1151
msgid "Confirmation"
msgstr "Confirmação"
-#: ../win32/gui/WndMain.c:1144 ../win32/gui/WndMain.c:1151
+#: ../win32/gui/WndMain.c:1144
+#: ../win32/gui/WndMain.c:1151
msgid "Are you sure you want to format this Memory Card?"
msgstr "Você tem certeza que quer formatar esse Cartão de Memória?"
@@ -759,7 +832,8 @@ msgstr "Filmes em preto e branco"
msgid "Disable Cd audio"
msgstr "Desativar áudio de CD"
-#: ../win32/gui/WndMain.c:1206 ../data/pcsx.glade2:1444
+#: ../win32/gui/WndMain.c:1206
+#: ../data/pcsx.glade2:1588
msgid "Autodetect"
msgstr "Detectar Automaticamente"
@@ -767,11 +841,13 @@ msgstr "Detectar Automaticamente"
msgid "Enable Interpreter Cpu"
msgstr "Ativar interpretador da CPU"
-#: ../win32/gui/WndMain.c:1208 ../data/pcsx.glade2:1300
+#: ../win32/gui/WndMain.c:1208
+#: ../data/pcsx.glade2:1444
msgid "Enable Console Output"
msgstr "Ativar saída no terminal"
-#: ../win32/gui/WndMain.c:1209 ../data/pcsx.glade2:1250
+#: ../win32/gui/WndMain.c:1209
+#: ../data/pcsx.glade2:1394
msgid "Enable Debugger"
msgstr "Ligar debugger"
@@ -779,11 +855,13 @@ msgstr "Ligar debugger"
msgid "Spu Irq Always Enabled"
msgstr "IRQ da SPU sempre ligada"
-#: ../win32/gui/WndMain.c:1211 ../data/pcsx.glade2:1387
+#: ../win32/gui/WndMain.c:1211
+#: ../data/pcsx.glade2:1531
msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix"
msgstr "Correção para Parasite Eve 2, Vandal Hearts..."
-#: ../win32/gui/WndMain.c:1212 ../data/pcsx.glade2:1402
+#: ../win32/gui/WndMain.c:1212
+#: ../data/pcsx.glade2:1546
msgid "InuYasha Sengoku Battle Fix"
msgstr "Correção para InuYasha, Sengoku Battle..."
@@ -821,8 +899,11 @@ msgstr "Cartão de memória do DexDrive (*.gme)"
msgid "DataDeck Memory Card (*.ddf)"
msgstr "Cartão de memória do DataDeck (*.ddf)"
-#: ../win32/gui/WndMain.c:1350 ../win32/gui/WndMain.c:1431 ../gui/Cheat.c:322
-#: ../gui/Gtk2Gui.c:508 ../gui/Gtk2Gui.c:647
+#: ../win32/gui/WndMain.c:1350
+#: ../win32/gui/WndMain.c:1431
+#: ../gui/Cheat.c:322
+#: ../gui/Gtk2Gui.c:402
+#: ../gui/Gtk2Gui.c:541
msgid "All Files"
msgstr "Todos os arquivos"
@@ -886,27 +967,33 @@ msgstr "&Salvar"
msgid "&Load"
msgstr "&Carregar"
-#: ../win32/gui/WndMain.c:1519 ../win32/gui/WndMain.c:1525
+#: ../win32/gui/WndMain.c:1519
+#: ../win32/gui/WndMain.c:1525
msgid "&Other..."
msgstr "&Outros..."
-#: ../win32/gui/WndMain.c:1520 ../win32/gui/WndMain.c:1526
+#: ../win32/gui/WndMain.c:1520
+#: ../win32/gui/WndMain.c:1526
msgid "Slot &5"
msgstr "Unidade &5"
-#: ../win32/gui/WndMain.c:1521 ../win32/gui/WndMain.c:1527
+#: ../win32/gui/WndMain.c:1521
+#: ../win32/gui/WndMain.c:1527
msgid "Slot &4"
msgstr "Unidade &4"
-#: ../win32/gui/WndMain.c:1522 ../win32/gui/WndMain.c:1528
+#: ../win32/gui/WndMain.c:1522
+#: ../win32/gui/WndMain.c:1528
msgid "Slot &3"
msgstr "Unidade &3"
-#: ../win32/gui/WndMain.c:1523 ../win32/gui/WndMain.c:1529
+#: ../win32/gui/WndMain.c:1523
+#: ../win32/gui/WndMain.c:1529
msgid "Slot &2"
msgstr "Unidade &2"
-#: ../win32/gui/WndMain.c:1524 ../win32/gui/WndMain.c:1530
+#: ../win32/gui/WndMain.c:1524
+#: ../win32/gui/WndMain.c:1530
msgid "Slot &1"
msgstr "Unidade &1"
@@ -974,7 +1061,8 @@ msgstr "Mensagens do PCSX"
msgid "Error Loading Symbol"
msgstr "Erro ao carregar símbolo"
-#: ../gui/Cheat.c:118 ../gui/Cheat.c:203
+#: ../gui/Cheat.c:118
+#: ../gui/Cheat.c:203
msgid "Cheat Description:"
msgstr "Descrição da trapaça:"
@@ -982,7 +1070,8 @@ msgstr "Descrição da trapaça:"
msgid "Open Cheat File"
msgstr "Abrir arquivo de trapaça"
-#: ../gui/Cheat.c:317 ../gui/Cheat.c:357
+#: ../gui/Cheat.c:317
+#: ../gui/Cheat.c:357
msgid "PCSX Cheat Code Files (*.cht)"
msgstr "Arquivos de trapaça do PCSX (*.cht)"
@@ -994,8 +1083,10 @@ msgstr "Salvar um arquivo de trapaça"
msgid "All Files (*.*)"
msgstr "Todos os arquivos (*.*)"
-#: ../gui/Cheat.c:395 ../gui/Cheat.c:1125 ../gui/Gtk2Gui.c:396
-#: ../gui/Gtk2Gui.c:1016
+#: ../gui/Cheat.c:395
+#: ../gui/Cheat.c:1125
+#: ../gui/ConfDlg.c:104
+#: ../gui/ConfDlg.c:203
msgid "Error: Glade interface could not be loaded!"
msgstr "Erro: o ambiente Glade não pôde ser carregado!"
@@ -1023,95 +1114,107 @@ msgstr "Novo valor:"
msgid "Search Results"
msgstr "Resultados da busca"
-#: ../gui/Gtk2Gui.c:404 ../data/pcsx.glade2:605
+#: ../gui/ConfDlg.c:112
+#: ../data/pcsx.glade2:749
msgid "Configure PCSX"
msgstr "Configurar PCSX"
-#: ../gui/Gtk2Gui.c:490
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "No configuration required"
+msgstr "Não necessita de configuração"
+
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "This plugin doesn't need to be configured."
+msgstr "Esta extensão não pode ser configurada."
+
+#: ../gui/ConfDlg.c:586
+#, c-format
+msgid "Could not open BIOS directory: '%s'\n"
+msgstr "Não conseguiu abrir o diretório \"%s\", da BIOS!\n"
+
+#: ../gui/ConfDlg.c:616
+#: ../gui/ConfDlg.c:709
+#: ../gui/LnxMain.c:167
+#, c-format
+msgid "Could not open directory: '%s'\n"
+msgstr "Não conseguiu abrir o diretório \"%s\"!\n"
+
+#: ../gui/Gtk2Gui.c:384
msgid "Select PSX EXE File"
msgstr "Selecione o arquivo executável de PSX"
-#: ../gui/Gtk2Gui.c:504
+#: ../gui/Gtk2Gui.c:398
msgid "PlayStation Executable Files"
msgstr "Arquivos executáveis do PlayStation"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "Not a valid PSX file"
msgstr "Não é um arquivo válido de PSX"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "The file does not appear to be a valid Playstation executable"
msgstr "Esse arquivo não parece ser um executável válido de PlayStation!"
-#: ../gui/Gtk2Gui.c:571 ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "CD ROM failed"
msgstr "CDROM falhou"
-#: ../gui/Gtk2Gui.c:579
-msgid "The CD ROM could not be loaded"
-msgstr "O CDROM não pôde ser carregado!"
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
+msgid "The CD-ROM could not be loaded"
+msgstr ""
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Could not run BIOS"
msgstr "Não conseguiu iniciar a BIOS"
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Running BIOS is not supported with Internal HLE BIOS."
msgstr "Iniciar pela BIOS não é suportado com a BIOS HLE interno."
-#: ../gui/Gtk2Gui.c:622
+#: ../gui/Gtk2Gui.c:516
msgid "Open PSX Disc Image File"
msgstr "Abrir arquivo de imagem de CD de PSX"
-#: ../gui/Gtk2Gui.c:642
+#: ../gui/Gtk2Gui.c:536
msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)"
msgstr "Arquivo de imagens de CD de PSX (*.bin, *.img, *.mdf, *.iso)"
-#: ../gui/Gtk2Gui.c:876
+#: ../gui/Gtk2Gui.c:747
#, c-format
msgid "Loaded state %s."
msgstr "Arquivo de estado \"%s\" carregado."
-#: ../gui/Gtk2Gui.c:880
+#: ../gui/Gtk2Gui.c:751
#, c-format
msgid "Error loading state %s!"
msgstr "Erro ao carregar o arquivo de estado \"%s\"!"
-#: ../gui/Gtk2Gui.c:891
+#: ../gui/Gtk2Gui.c:762
#, c-format
msgid "Saved state %s."
msgstr "Arquivo de estado \"%s\" salvo."
-#: ../gui/Gtk2Gui.c:893
+#: ../gui/Gtk2Gui.c:764
#, c-format
msgid "Error saving state %s!"
msgstr "Erro ao salvar o arquivo de estado \"%s\"!"
-#: ../gui/Gtk2Gui.c:927 ../gui/Gtk2Gui.c:954
+#: ../gui/Gtk2Gui.c:797
+#: ../gui/Gtk2Gui.c:824
msgid "Select State File"
msgstr "Selecione o arquivo de estado"
-#: ../gui/Gtk2Gui.c:1053 ../gui/Gtk2Gui.c:1074 ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116 ../gui/Gtk2Gui.c:1315
-msgid "No configuration required"
-msgstr "Não necessita de configuração"
-
-#: ../gui/Gtk2Gui.c:1053 ../gui/Gtk2Gui.c:1074 ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116 ../gui/Gtk2Gui.c:1315
-msgid "This plugin doesn't need to be configured."
-msgstr "Esta extensão não pode ser configurada."
-
-#: ../gui/Gtk2Gui.c:1569
-#, c-format
-msgid "Could not open BIOS directory: '%s'\n"
-msgstr "Não conseguiu abrir o diretório \"%s\", da BIOS!\n"
-
-#: ../gui/Gtk2Gui.c:1599 ../gui/Gtk2Gui.c:1692 ../gui/LnxMain.c:167
-#, c-format
-msgid "Could not open directory: '%s'\n"
-msgstr "Não conseguiu abrir o diretório \"%s\"!\n"
-
-#: ../gui/Gtk2Gui.c:1753
+#: ../gui/Gtk2Gui.c:881
msgid "Notice"
msgstr "Aviso"
@@ -1138,8 +1241,7 @@ msgstr ""
"\t-runcd\t\tExecuta direto pelo CD-ROM\n"
"\t-cdfile ARQUIVO\tRoda um arquivo de imagem de CD\n"
"\t-nogui\t\tNão abre o GUI da GTK\n"
-"\t-cfg ARQUIVO\tCarrega uma configuração alternativa (padrão: ~/.pcsx/pcsx."
-"cfg)\n"
+"\t-cfg ARQUIVO\tCarrega uma configuração alternativa (padrão: ~/.pcsx/pcsx.cfg)\n"
"\t-psxout\t\tAtiva a saída do PSX no console\n"
"\t-load NÚMERO_ESTADO\tCarrega um estado entre 1-5\n"
"\t-h -help\tMostra essa mensagem\n"
@@ -1147,11 +1249,8 @@ msgstr ""
#: ../gui/LnxMain.c:357
#, c-format
-msgid ""
-"PCSX cannot be configured without using the GUI -- you should restart "
-"without -nogui.\n"
-msgstr ""
-"PCSX não pode ser configurado sem o GUI -- reinicie sem a opção -nogui.\n"
+msgid "PCSX cannot be configured without using the GUI -- you should restart without -nogui.\n"
+msgstr "PCSX não pode ser configurado sem o GUI -- reinicie sem a opção -nogui.\n"
#: ../gui/LnxMain.c:409
msgid "Failed loading plugins!"
@@ -1179,44 +1278,44 @@ msgstr "ID"
msgid "Name"
msgstr "Nome"
-#: ../gui/MemcardDlg.c:308
+#: ../gui/MemcardDlg.c:297
+msgid "Select A File"
+msgstr ""
+
+#: ../gui/MemcardDlg.c:338
msgid "Format this Memory Card?"
msgstr "Formatar esse cartão de memória?"
-#: ../gui/MemcardDlg.c:310
-msgid ""
-"If you format the memory card, the card will be empty, and any existing data "
-"overwritten."
+#: ../gui/MemcardDlg.c:340
+msgid "If you format the memory card, the card will be empty, and any existing data overwritten."
msgstr "Ao formatar o cartão de memória, todo o conteúdo será zerado."
-#: ../gui/MemcardDlg.c:313
+#: ../gui/MemcardDlg.c:343
msgid "Format card"
msgstr "Formatar cartão"
-#: ../gui/MemcardDlg.c:339
+#: ../gui/MemcardDlg.c:366
msgid "Create a new Memory Card"
msgstr ""
-#: ../gui/MemcardDlg.c:348
-#, fuzzy
+#: ../gui/MemcardDlg.c:375
msgid "New Memory Card.mcd"
-msgstr "Cartão de memória do Bleem (*.mcd)"
+msgstr ""
-#: ../gui/MemcardDlg.c:456
+#: ../gui/MemcardDlg.c:476
msgid "No free space on memory card"
msgstr ""
-#: ../gui/MemcardDlg.c:457
-msgid ""
-"There are no free slots available on the target memory card. Please delete a "
-"slot first."
+#: ../gui/MemcardDlg.c:477
+msgid "There are no free slots available on the target memory card. Please delete a slot first."
msgstr ""
-#: ../gui/MemcardDlg.c:611
+#: ../gui/MemcardDlg.c:631
msgid "Memory Card Manager"
msgstr "Gerenciador de cartões de memória"
-#: ../gui/Plugin.c:204 ../data/pcsx.glade2:1336
+#: ../gui/Plugin.c:204
+#: ../data/pcsx.glade2:1480
#, c-format
msgid "SIO IRQ Always Enabled"
msgstr "IRQ SIO sempre ativada"
@@ -1301,7 +1400,8 @@ msgstr "Trapaças de \"%s\" carregadas.\n"
msgid "Cheats saved to: %s\n"
msgstr "Trapaças salvas para \"%s\".\n"
-#: ../libpcsxcore/cheat.c:323 ../libpcsxcore/cheat.c:444
+#: ../libpcsxcore/cheat.c:323
+#: ../libpcsxcore/cheat.c:444
msgid "(Untitled)"
msgstr "(Sem título)"
@@ -1728,27 +1828,33 @@ msgstr "_Trocar de imagem de CD..."
msgid "_Save State"
msgstr "_Salvar estado"
-#: ../data/pcsx.glade2:200 ../data/pcsx.glade2:281
+#: ../data/pcsx.glade2:200
+#: ../data/pcsx.glade2:281
msgid "Slot _1"
msgstr "Unidade _1"
-#: ../data/pcsx.glade2:209 ../data/pcsx.glade2:290
+#: ../data/pcsx.glade2:209
+#: ../data/pcsx.glade2:290
msgid "Slot _2"
msgstr "Unidade _2"
-#: ../data/pcsx.glade2:218 ../data/pcsx.glade2:299
+#: ../data/pcsx.glade2:218
+#: ../data/pcsx.glade2:299
msgid "Slot _3"
msgstr "Unidade _3"
-#: ../data/pcsx.glade2:227 ../data/pcsx.glade2:308
+#: ../data/pcsx.glade2:227
+#: ../data/pcsx.glade2:308
msgid "Slot _4"
msgstr "Unidade _4"
-#: ../data/pcsx.glade2:236 ../data/pcsx.glade2:317
+#: ../data/pcsx.glade2:236
+#: ../data/pcsx.glade2:317
msgid "Slot _5"
msgstr "Unidade _5"
-#: ../data/pcsx.glade2:244 ../data/pcsx.glade2:325
+#: ../data/pcsx.glade2:244
+#: ../data/pcsx.glade2:325
msgid "_Other..."
msgstr "_Outros..."
@@ -1812,71 +1918,134 @@ msgstr "_Ajuda"
msgid "_About PCSX..."
msgstr "_Sobre o PCSX..."
+#: ../data/pcsx.glade2:599
+#: ../data/pcsx.glade2:600
+msgid "Run CD"
+msgstr ""
+
+#: ../data/pcsx.glade2:612
+msgid "Run ISO Image"
+msgstr ""
+
+#: ../data/pcsx.glade2:613
+msgid "Run ISO..."
+msgstr ""
+
+#: ../data/pcsx.glade2:634
+msgid "Switch ISO Image"
+msgstr ""
+
+#: ../data/pcsx.glade2:635
+msgid "Switch ISO..."
+msgstr ""
+
+#: ../data/pcsx.glade2:656
+#: ../data/pcsx.glade2:1838
+msgid "Configure Memory Cards"
+msgstr "Configurar cartões de memória"
+
+#: ../data/pcsx.glade2:657
+msgid "Memcards..."
+msgstr "Cartões de memória..."
+
+#: ../data/pcsx.glade2:669
+msgid "Configure Graphics"
+msgstr ""
+
+#: ../data/pcsx.glade2:670
+msgid "Graphics..."
+msgstr "Gráficos..."
+
+#: ../data/pcsx.glade2:682
+#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
+msgid "Configure Sound"
+msgstr "Configurar áudio"
+
+#: ../data/pcsx.glade2:683
+msgid "Sound..."
+msgstr "Áudio..."
+
+#: ../data/pcsx.glade2:695
+msgid "Configure CD-ROM"
+msgstr "Configurar CD-ROM"
+
+#: ../data/pcsx.glade2:696
+msgid "CD-ROM..."
+msgstr "CD-ROM..."
+
#: ../data/pcsx.glade2:708
+msgid "Configure Controllers"
+msgstr ""
+
+#: ../data/pcsx.glade2:709
+msgid "Controllers..."
+msgstr "Controles..."
+
+#: ../data/pcsx.glade2:852
msgid "Select Folder to Search"
msgstr "Selecione o diretório para a busca"
-#: ../data/pcsx.glade2:724
+#: ../data/pcsx.glade2:868
msgid "Search in:"
msgstr "Buscar em:"
-#: ../data/pcsx.glade2:997
+#: ../data/pcsx.glade2:1141
msgid "Graphics:"
msgstr "Gráficos:"
-#: ../data/pcsx.glade2:1010
+#: ../data/pcsx.glade2:1154
msgid "Sound:"
msgstr "Áudio:"
-#: ../data/pcsx.glade2:1025
+#: ../data/pcsx.glade2:1169
msgid "Controller 1: "
msgstr "Controle 1:"
-#: ../data/pcsx.glade2:1040
+#: ../data/pcsx.glade2:1184
msgid "Controller 2:"
msgstr "Controle 2:"
-#: ../data/pcsx.glade2:1055
+#: ../data/pcsx.glade2:1199
msgid "CD-ROM:"
msgstr "CD-ROM:"
-#: ../data/pcsx.glade2:1093
+#: ../data/pcsx.glade2:1237
msgid "<b>Plugins</b>"
msgstr "<b>Extensões</b>"
-#: ../data/pcsx.glade2:1154
+#: ../data/pcsx.glade2:1298
msgid "<b>BIOS</b>"
msgstr "<b>BIOS</b>"
-#: ../data/pcsx.glade2:1221
+#: ../data/pcsx.glade2:1365
msgid "Configure CPU"
msgstr "Configurar CPU"
-#: ../data/pcsx.glade2:1268
+#: ../data/pcsx.glade2:1412
msgid "SPU IRQ Always Enabled"
msgstr "IRQ da SPU sempre ativada"
-#: ../data/pcsx.glade2:1284
+#: ../data/pcsx.glade2:1428
msgid "Black & White Movies"
msgstr "Filmes em preto e branco"
-#: ../data/pcsx.glade2:1318
+#: ../data/pcsx.glade2:1462
msgid "Enable Interpreter CPU"
msgstr "Ativar interpretador da CPU"
-#: ../data/pcsx.glade2:1352
+#: ../data/pcsx.glade2:1496
msgid "Disable CD Audio"
msgstr "Desativar áudio de CD"
-#: ../data/pcsx.glade2:1368
+#: ../data/pcsx.glade2:1512
msgid "Disable XA Decoding"
msgstr "Desativar decodificação de XA"
-#: ../data/pcsx.glade2:1420
+#: ../data/pcsx.glade2:1564
msgid "<b>Options</b>"
msgstr "<b>Opções</b>"
-#: ../data/pcsx.glade2:1461
+#: ../data/pcsx.glade2:1605
msgid ""
"NTSC\n"
"PAL"
@@ -1884,47 +2053,48 @@ msgstr ""
"NTSC\n"
"PAL"
-#: ../data/pcsx.glade2:1475
+#: ../data/pcsx.glade2:1619
msgid "<b>System Type</b>"
msgstr "<b>Tipo do sistema</b>"
-#: ../data/pcsx.glade2:1539
+#: ../data/pcsx.glade2:1683
msgid "Configure NetPlay"
msgstr "Configurar jogo em rede"
-#: ../data/pcsx.glade2:1627
+#: ../data/pcsx.glade2:1771
msgid "<b>NetPlay</b>"
msgstr "<b>Jogo em rede</b>"
-#: ../data/pcsx.glade2:1694
-msgid "Configure Memory Cards"
-msgstr "Configurar cartões de memória"
-
-#: ../data/pcsx.glade2:1773 ../data/pcsx.glade2:2122
+#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2315
msgid "New"
msgstr ""
-#: ../data/pcsx.glade2:1823 ../data/pcsx.glade2:2172
+#: ../data/pcsx.glade2:1967
+#: ../data/pcsx.glade2:2365
msgid "Format"
msgstr "Formatar"
-#: ../data/pcsx.glade2:1873 ../data/pcsx.glade2:2222
+#: ../data/pcsx.glade2:2017
+#: ../data/pcsx.glade2:2415
msgid "Un/Delete"
msgstr "Apagar/Desfazer"
-#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2110
msgid "<b>Memory Card 1</b>"
msgstr "<b>Cartão de memória 1</b>"
-#: ../data/pcsx.glade2:1978 ../data/pcsx.glade2:2028 ../data/pcsx.glade2:2873
+#: ../data/pcsx.glade2:2171
+#: ../data/pcsx.glade2:2221
+#: ../data/pcsx.glade2:3100
msgid "Copy"
msgstr "Copiar"
-#: ../data/pcsx.glade2:2266
+#: ../data/pcsx.glade2:2508
msgid "<b>Memory Card 2</b>"
msgstr "<b>Cartão de memória 2</b>"
-#: ../data/pcsx.glade2:2344
+#: ../data/pcsx.glade2:2571
msgid ""
"(C) 1999-2003 PCSX Team\n"
"(C) 2005-2006 Ryan Schultz\n"
@@ -1936,11 +2106,11 @@ msgstr ""
"(C) 2005-2006 Andrew Burton\n"
"(C) 2008-2009 Wei Mingzhi"
-#: ../data/pcsx.glade2:2348
+#: ../data/pcsx.glade2:2575
msgid "A PlayStation emulator."
msgstr "Um emulador de PlayStation."
-#: ../data/pcsx.glade2:2351
+#: ../data/pcsx.glade2:2578
msgid ""
"This program is free software; you can redistribute it\n"
"and/or modify it under the terms of the GNU General\n"
@@ -1974,16 +2144,15 @@ msgstr ""
"Public License along with this program; if not, write to\n"
"the Free Software Foundation, Inc."
-#: ../data/pcsx.glade2:2380
+#: ../data/pcsx.glade2:2607
msgid "translator-credits"
-msgstr ""
-"Tradução para português brasileiro por Tibério Vítor (tvtoon@gmail.com)"
+msgstr "Tradução para português brasileiro por Tibério Vítor (tvtoon@gmail.com)"
-#: ../data/pcsx.glade2:2442
+#: ../data/pcsx.glade2:2669
msgid "<b>Cheat Codes</b>"
msgstr "<b>Códigos de trapaça</b>"
-#: ../data/pcsx.glade2:2608
+#: ../data/pcsx.glade2:2835
msgid ""
"8-bit\n"
"16-bit\n"
@@ -1993,7 +2162,7 @@ msgstr ""
"16-bit\n"
"32-bit"
-#: ../data/pcsx.glade2:2671
+#: ../data/pcsx.glade2:2898
msgid ""
"Equal Value\n"
"Not Equal Value\n"
@@ -2015,7 +2184,7 @@ msgstr ""
"Diferente\n"
"Sem mudanças"
-#: ../data/pcsx.glade2:2703
+#: ../data/pcsx.glade2:2930
msgid ""
"Decimal\n"
"Hexadecimal"
@@ -2023,19 +2192,19 @@ msgstr ""
"Decimal\n"
"Hexadecimal"
-#: ../data/pcsx.glade2:2906
+#: ../data/pcsx.glade2:3133
msgid "label_resultsfound"
msgstr "Resultados encontrados:"
-#: ../data/pcsx.glade2:2941
+#: ../data/pcsx.glade2:3168
msgid "Search"
msgstr "Buscar"
-#: ../data/pcsx.glade2:2977
+#: ../data/pcsx.glade2:3204
msgid "Restart"
msgstr "Reiniciar"
-#: ../data/pcsx.glade2:3006
+#: ../data/pcsx.glade2:3233
msgid "<b>Cheat Search</b>"
msgstr "<b>Busca de trapaças</b>"
@@ -2063,10 +2232,6 @@ msgstr ""
"Extensão OSS P.E.Op.S. V1.7\n"
"Programada por Pete Bernert e a equipe do P.E.Op.S.\n"
-#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
-msgid "Configure Sound"
-msgstr "Configurar áudio"
-
#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:42
msgid "Volume:"
msgstr "Volume:"
@@ -2168,8 +2333,7 @@ msgstr "Configuração do CDROM"
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2:33
msgid "Choose your CD-ROM device or type its path if it's not listed"
-msgstr ""
-"Escolha sua unidade de CDROM ou digite o dispositivo caso não esteja listado."
+msgstr "Escolha sua unidade de CDROM ou digite o dispositivo caso não esteja listado."
#: ../plugins/dfcdrom/cdrcfg-0.1df/dfcdrom.glade2:44
msgid "Select CD-ROM device"
@@ -2718,7 +2882,8 @@ msgstr ""
msgid "Keyboard:"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:133 ../plugins/dfinput/cfg-gtk2.c:141
+#: ../plugins/dfinput/cfg-gtk2.c:133
+#: ../plugins/dfinput/cfg-gtk2.c:141
#, c-format
msgid "(Not Set)"
msgstr ""
@@ -2756,11 +2921,13 @@ msgstr ""
msgid "Gamepad/Keyboard Input Configuration"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:532 ../plugins/dfinput/cfg-gtk2.c:552
+#: ../plugins/dfinput/cfg-gtk2.c:532
+#: ../plugins/dfinput/cfg-gtk2.c:552
msgid "Key"
msgstr ""
-#: ../plugins/dfinput/cfg-gtk2.c:538 ../plugins/dfinput/cfg-gtk2.c:558
+#: ../plugins/dfinput/cfg-gtk2.c:538
+#: ../plugins/dfinput/cfg-gtk2.c:558
msgid "Button"
msgstr ""
@@ -2772,25 +2939,30 @@ msgstr ""
msgid "Gamepad/Keyboard Input"
msgstr "Entrada do gamepad ou teclado"
-#: ../plugins/dfinput/dfinput.glade2:35 ../plugins/dfinput/dfinput.glade2:232
+#: ../plugins/dfinput/dfinput.glade2:35
+#: ../plugins/dfinput/dfinput.glade2:232
msgid "Device:"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2:66 ../plugins/dfinput/dfinput.glade2:263
+#: ../plugins/dfinput/dfinput.glade2:66
+#: ../plugins/dfinput/dfinput.glade2:263
msgid "Type:"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2:78 ../plugins/dfinput/dfinput.glade2:275
+#: ../plugins/dfinput/dfinput.glade2:78
+#: ../plugins/dfinput/dfinput.glade2:275
msgid ""
"Digital Pad\n"
"Analog Pad"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2:149 ../plugins/dfinput/dfinput.glade2:346
+#: ../plugins/dfinput/dfinput.glade2:149
+#: ../plugins/dfinput/dfinput.glade2:346
msgid "Change"
msgstr ""
-#: ../plugins/dfinput/dfinput.glade2:185 ../plugins/dfinput/dfinput.glade2:382
+#: ../plugins/dfinput/dfinput.glade2:185
+#: ../plugins/dfinput/dfinput.glade2:382
msgid "Reset"
msgstr ""
@@ -2805,3 +2977,4 @@ msgstr "Controle 2"
#: ../plugins/dfinput/dfinput.glade2:427
msgid "Multi-Threaded (Recommended)"
msgstr ""
+
diff --git a/po/update-pot.sh b/po/update-pot.sh
index 696020de..89881840 100644
--- a/po/update-pot.sh
+++ b/po/update-pot.sh
@@ -1,2 +1,5 @@
#!/bin/sh
xgettext --keyword=_ --keyword=N_ ../win32/gui/*.c ../gui/*.c ../gui/*.h ../libpcsxcore/*.c ../plugins/dfxvideo/*.c ../plugins/dfxvideo/gpucfg-0.1df/*.glade2 ../data/*.glade2 ../plugins/dfsound/*.c ../plugins/dfsound/spucfg-0.1df/*.glade2 ../plugins/dfcdrom/*.c ../plugins/dfcdrom/cdrcfg-0.1df/*.c ../plugins/dfcdrom/cdrcfg-0.1df/*.glade2 ../plugins/peopsxgl/*.c ../plugins/peopsxgl/gpucfg/*.c ../plugins/dfinput/*.c ../plugins/dfinput/*.glade2 --output=pcsx.pot
+msgmerge -U --backup=none pt_BR.po pcsx.pot
+msgmerge -U --backup=none zh_CN.po pcsx.pot
+msgmerge -U --backup=none zh_TW.po pcsx.pot
diff --git a/po/zh_CN.po b/po/zh_CN.po
index b58d5069..edb54cb6 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-28 19:26+0800\n"
-"PO-Revision-Date: 2009-11-28 19:27+0700\n"
+"POT-Creation-Date: 2009-11-28 23:14+0800\n"
+"PO-Revision-Date: 2009-11-28 23:15+0700\n"
"Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n"
"Language-Team: Simplified Chinese <whistler@openoffice.org>\n"
"MIME-Version: 1.0\n"
@@ -128,7 +128,7 @@ msgid "Add New Cheat"
msgstr "添加新作弊码"
#: ../win32/gui/CheatDlg.c:167
-#: ../data/pcsx.glade2:2402
+#: ../data/pcsx.glade2:2629
msgid "Edit Cheat Codes"
msgstr "编辑作弊码"
@@ -249,7 +249,7 @@ msgid "Founded Addresses: %d"
msgstr "找到地址个数: %d"
#: ../win32/gui/CheatDlg.c:505
-#: ../data/pcsx.glade2:2801
+#: ../data/pcsx.glade2:3028
msgid "Freeze"
msgstr "固定"
@@ -262,7 +262,7 @@ msgstr "地址:"
#: ../win32/gui/CheatDlg.c:598
#: ../win32/gui/CheatDlg.c:683
#: ../gui/Cheat.c:648
-#: ../data/pcsx.glade2:2645
+#: ../data/pcsx.glade2:2872
msgid "Value:"
msgstr "值:"
@@ -272,33 +272,33 @@ msgid "Freeze %.8X"
msgstr "固定 %.8X"
#: ../win32/gui/CheatDlg.c:596
-#: ../data/pcsx.glade2:2837
+#: ../data/pcsx.glade2:3064
msgid "Modify"
msgstr "修改"
#: ../win32/gui/CheatDlg.c:679
#: ../gui/Cheat.c:1130
-#: ../data/pcsx.glade2:2573
+#: ../data/pcsx.glade2:2800
msgid "Cheat Search"
msgstr "查找作弊码"
#: ../win32/gui/CheatDlg.c:681
-#: ../data/pcsx.glade2:2623
+#: ../data/pcsx.glade2:2850
msgid "Search For:"
msgstr "查找:"
#: ../win32/gui/CheatDlg.c:682
-#: ../data/pcsx.glade2:2633
+#: ../data/pcsx.glade2:2860
msgid "Data Type:"
msgstr "数据类型:"
#: ../win32/gui/CheatDlg.c:684
-#: ../data/pcsx.glade2:2657
+#: ../data/pcsx.glade2:2884
msgid "Data Base:"
msgstr "数据基:"
#: ../win32/gui/CheatDlg.c:685
-#: ../data/pcsx.glade2:2717
+#: ../data/pcsx.glade2:2944
msgid "To:"
msgstr "到:"
@@ -347,7 +347,7 @@ msgid "Hexadecimal"
msgstr "十六进制"
#: ../win32/gui/ConfigurePlugins.c:206
-#: ../gui/Gtk2Gui.c:1663
+#: ../gui/ConfDlg.c:680
msgid "Internal HLE Bios"
msgstr "内部 HLE-Bios"
@@ -688,15 +688,15 @@ msgstr "*PCSX*: Error Saving State %s"
#: ../win32/gui/WndMain.c:426
#: ../win32/gui/WndMain.c:475
-#: ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "The CD does not appear to be a valid Playstation CD"
msgstr "此光盘不是一张合法的 PlayStation 光盘。"
#: ../win32/gui/WndMain.c:432
#: ../win32/gui/WndMain.c:481
-#: ../gui/Gtk2Gui.c:579
-#: ../gui/Gtk2Gui.c:704
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
msgid "Could not load CD-ROM!"
msgstr "无法加载光盘!"
@@ -732,7 +732,7 @@ msgstr "terminiting link block"
#: ../win32/gui/WndMain.c:864
#: ../gui/MemcardDlg.c:147
-#: ../gui/MemcardDlg.c:217
+#: ../gui/MemcardDlg.c:244
msgid "Deleted"
msgstr "已删除"
@@ -740,14 +740,14 @@ msgstr "已删除"
#: ../win32/gui/WndMain.c:868
#: ../gui/MemcardDlg.c:149
#: ../gui/MemcardDlg.c:153
-#: ../gui/MemcardDlg.c:219
-#: ../gui/MemcardDlg.c:223
+#: ../gui/MemcardDlg.c:246
+#: ../gui/MemcardDlg.c:250
msgid "Free"
msgstr "空闲"
#: ../win32/gui/WndMain.c:867
#: ../gui/MemcardDlg.c:151
-#: ../gui/MemcardDlg.c:221
+#: ../gui/MemcardDlg.c:248
msgid "Used"
msgstr "已使用"
@@ -834,7 +834,7 @@ msgid "Disable Cd audio"
msgstr "禁用 CD 音频"
#: ../win32/gui/WndMain.c:1206
-#: ../data/pcsx.glade2:1444
+#: ../data/pcsx.glade2:1588
msgid "Autodetect"
msgstr "自动检测"
@@ -843,12 +843,12 @@ msgid "Enable Interpreter Cpu"
msgstr "启用解释执行 CPU"
#: ../win32/gui/WndMain.c:1208
-#: ../data/pcsx.glade2:1300
+#: ../data/pcsx.glade2:1444
msgid "Enable Console Output"
msgstr "启用控制台输出"
#: ../win32/gui/WndMain.c:1209
-#: ../data/pcsx.glade2:1250
+#: ../data/pcsx.glade2:1394
msgid "Enable Debugger"
msgstr "启用调试器"
@@ -857,12 +857,12 @@ msgid "Spu Irq Always Enabled"
msgstr "SPU IRQ 总是启用"
#: ../win32/gui/WndMain.c:1211
-#: ../data/pcsx.glade2:1387
+#: ../data/pcsx.glade2:1531
msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix"
msgstr "Parasite Eve 2, Vandal Hearts 1/2 修正"
#: ../win32/gui/WndMain.c:1212
-#: ../data/pcsx.glade2:1402
+#: ../data/pcsx.glade2:1546
msgid "InuYasha Sengoku Battle Fix"
msgstr "InuYasha Sengoku 战斗修正"
@@ -903,8 +903,8 @@ msgstr "DataDeck 记忆卡 (*.ddl)"
#: ../win32/gui/WndMain.c:1350
#: ../win32/gui/WndMain.c:1431
#: ../gui/Cheat.c:322
-#: ../gui/Gtk2Gui.c:508
-#: ../gui/Gtk2Gui.c:647
+#: ../gui/Gtk2Gui.c:402
+#: ../gui/Gtk2Gui.c:541
msgid "All Files"
msgstr "所有文件"
@@ -1086,8 +1086,8 @@ msgstr "所有文件 (*.*)"
#: ../gui/Cheat.c:395
#: ../gui/Cheat.c:1125
-#: ../gui/Gtk2Gui.c:396
-#: ../gui/Gtk2Gui.c:1016
+#: ../gui/ConfDlg.c:104
+#: ../gui/ConfDlg.c:203
msgid "Error: Glade interface could not be loaded!"
msgstr "错误:无法加载 Glade 界面!"
@@ -1115,106 +1115,107 @@ msgstr "新值:"
msgid "Search Results"
msgstr "查找结果"
-#: ../gui/Gtk2Gui.c:404
-#: ../data/pcsx.glade2:605
+#: ../gui/ConfDlg.c:112
+#: ../data/pcsx.glade2:749
msgid "Configure PCSX"
msgstr "配置 PCSX"
-#: ../gui/Gtk2Gui.c:490
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "No configuration required"
+msgstr "不需要配置"
+
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "This plugin doesn't need to be configured."
+msgstr "此插件需要被配置。"
+
+#: ../gui/ConfDlg.c:586
+#, c-format
+msgid "Could not open BIOS directory: '%s'\n"
+msgstr "无法打开 BIOS 目录: \"%s\"\n"
+
+#: ../gui/ConfDlg.c:616
+#: ../gui/ConfDlg.c:709
+#: ../gui/LnxMain.c:167
+#, c-format
+msgid "Could not open directory: '%s'\n"
+msgstr "无法打开目录: \"%s\"\n"
+
+#: ../gui/Gtk2Gui.c:384
msgid "Select PSX EXE File"
msgstr "选择 PSX EXE 文件"
-#: ../gui/Gtk2Gui.c:504
+#: ../gui/Gtk2Gui.c:398
msgid "PlayStation Executable Files"
msgstr "PlayStation 可执行文件"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "Not a valid PSX file"
msgstr "不是一个合法的 PSX 文件"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "The file does not appear to be a valid Playstation executable"
msgstr "此文件不是一个合法的 PlayStation 可执行文件"
-#: ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "CD ROM failed"
msgstr "CD-ROM 失败"
-#: ../gui/Gtk2Gui.c:579
-msgid "The CD ROM could not be loaded"
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
+msgid "The CD-ROM could not be loaded"
msgstr "无法加载 CD-ROM"
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Could not run BIOS"
msgstr "无法运行 BIOS"
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Running BIOS is not supported with Internal HLE BIOS."
msgstr "内部 HLE BIOS 不支持直接运行。"
-#: ../gui/Gtk2Gui.c:622
+#: ../gui/Gtk2Gui.c:516
msgid "Open PSX Disc Image File"
msgstr "打开 PSX 光盘镜像文件"
-#: ../gui/Gtk2Gui.c:642
+#: ../gui/Gtk2Gui.c:536
msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)"
msgstr "PS 镜像文件 (*.bin, *.img, *.mdf, *.iso)"
-#: ../gui/Gtk2Gui.c:876
+#: ../gui/Gtk2Gui.c:747
#, c-format
msgid "Loaded state %s."
msgstr "已读取存档 %s。"
-#: ../gui/Gtk2Gui.c:880
+#: ../gui/Gtk2Gui.c:751
#, c-format
msgid "Error loading state %s!"
msgstr "读取存档 %s 时出错。"
-#: ../gui/Gtk2Gui.c:891
+#: ../gui/Gtk2Gui.c:762
#, c-format
msgid "Saved state %s."
msgstr "已保存存档 %s"
-#: ../gui/Gtk2Gui.c:893
+#: ../gui/Gtk2Gui.c:764
#, c-format
msgid "Error saving state %s!"
msgstr "保存存档 %s 时出错。"
-#: ../gui/Gtk2Gui.c:927
-#: ../gui/Gtk2Gui.c:954
+#: ../gui/Gtk2Gui.c:797
+#: ../gui/Gtk2Gui.c:824
msgid "Select State File"
msgstr "选择存档文件"
-#: ../gui/Gtk2Gui.c:1053
-#: ../gui/Gtk2Gui.c:1074
-#: ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116
-#: ../gui/Gtk2Gui.c:1315
-msgid "No configuration required"
-msgstr "不需要配置"
-
-#: ../gui/Gtk2Gui.c:1053
-#: ../gui/Gtk2Gui.c:1074
-#: ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116
-#: ../gui/Gtk2Gui.c:1315
-msgid "This plugin doesn't need to be configured."
-msgstr "此插件需要被配置。"
-
-#: ../gui/Gtk2Gui.c:1569
-#, c-format
-msgid "Could not open BIOS directory: '%s'\n"
-msgstr "无法打开 BIOS 目录: \"%s\"\n"
-
-#: ../gui/Gtk2Gui.c:1599
-#: ../gui/Gtk2Gui.c:1692
-#: ../gui/LnxMain.c:167
-#, c-format
-msgid "Could not open directory: '%s'\n"
-msgstr "无法打开目录: \"%s\"\n"
-
-#: ../gui/Gtk2Gui.c:1753
+#: ../gui/Gtk2Gui.c:881
msgid "Notice"
msgstr "警告"
@@ -1278,40 +1279,44 @@ msgstr "ID"
msgid "Name"
msgstr "名称"
-#: ../gui/MemcardDlg.c:308
+#: ../gui/MemcardDlg.c:297
+msgid "Select A File"
+msgstr "选择一个文件"
+
+#: ../gui/MemcardDlg.c:338
msgid "Format this Memory Card?"
msgstr "格式化此记忆卡?"
-#: ../gui/MemcardDlg.c:310
+#: ../gui/MemcardDlg.c:340
msgid "If you format the memory card, the card will be empty, and any existing data overwritten."
msgstr "如果您选择格式化记忆卡,记忆卡将被清空,并且任何现有数据都将被覆盖。"
-#: ../gui/MemcardDlg.c:313
+#: ../gui/MemcardDlg.c:343
msgid "Format card"
msgstr "格式化记忆卡"
-#: ../gui/MemcardDlg.c:339
+#: ../gui/MemcardDlg.c:366
msgid "Create a new Memory Card"
msgstr "新建记忆卡"
-#: ../gui/MemcardDlg.c:348
+#: ../gui/MemcardDlg.c:375
msgid "New Memory Card.mcd"
msgstr "新记忆卡.mcd"
-#: ../gui/MemcardDlg.c:456
+#: ../gui/MemcardDlg.c:476
msgid "No free space on memory card"
msgstr "记忆卡无空余位置"
-#: ../gui/MemcardDlg.c:457
+#: ../gui/MemcardDlg.c:477
msgid "There are no free slots available on the target memory card. Please delete a slot first."
msgstr "目标记忆卡上无空余位置。请先删除一个存档。"
-#: ../gui/MemcardDlg.c:611
+#: ../gui/MemcardDlg.c:631
msgid "Memory Card Manager"
msgstr "记忆卡管理器"
#: ../gui/Plugin.c:204
-#: ../data/pcsx.glade2:1336
+#: ../data/pcsx.glade2:1480
#, c-format
msgid "SIO IRQ Always Enabled"
msgstr "SIO IRQ 总是启用"
@@ -1916,71 +1921,134 @@ msgstr "帮助(_H)"
msgid "_About PCSX..."
msgstr "关于 PCSX(_A)..."
+#: ../data/pcsx.glade2:599
+#: ../data/pcsx.glade2:600
+msgid "Run CD"
+msgstr "运行光碟"
+
+#: ../data/pcsx.glade2:612
+msgid "Run ISO Image"
+msgstr "运行 ISO 光盘镜像"
+
+#: ../data/pcsx.glade2:613
+msgid "Run ISO..."
+msgstr "运行 ISO..."
+
+#: ../data/pcsx.glade2:634
+msgid "Switch ISO Image"
+msgstr "更换 ISO 光盘镜像"
+
+#: ../data/pcsx.glade2:635
+msgid "Switch ISO..."
+msgstr "更换 ISO..."
+
+#: ../data/pcsx.glade2:656
+#: ../data/pcsx.glade2:1838
+msgid "Configure Memory Cards"
+msgstr "配置记忆卡"
+
+#: ../data/pcsx.glade2:657
+msgid "Memcards..."
+msgstr "记忆卡..."
+
+#: ../data/pcsx.glade2:669
+msgid "Configure Graphics"
+msgstr "配置图像"
+
+#: ../data/pcsx.glade2:670
+msgid "Graphics..."
+msgstr "图像..."
+
+#: ../data/pcsx.glade2:682
+#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
+msgid "Configure Sound"
+msgstr "配置音频"
+
+#: ../data/pcsx.glade2:683
+msgid "Sound..."
+msgstr "声音..."
+
+#: ../data/pcsx.glade2:695
+msgid "Configure CD-ROM"
+msgstr "配置 CD-ROM"
+
+#: ../data/pcsx.glade2:696
+msgid "CD-ROM..."
+msgstr "CD-ROM..."
+
#: ../data/pcsx.glade2:708
+msgid "Configure Controllers"
+msgstr "配置控制器"
+
+#: ../data/pcsx.glade2:709
+msgid "Controllers..."
+msgstr "控制器..."
+
+#: ../data/pcsx.glade2:852
msgid "Select Folder to Search"
msgstr "选择要查找的文件夹"
-#: ../data/pcsx.glade2:724
+#: ../data/pcsx.glade2:868
msgid "Search in:"
msgstr "在此处查找插件:"
-#: ../data/pcsx.glade2:997
+#: ../data/pcsx.glade2:1141
msgid "Graphics:"
msgstr "图像:"
-#: ../data/pcsx.glade2:1010
+#: ../data/pcsx.glade2:1154
msgid "Sound:"
msgstr "声音:"
-#: ../data/pcsx.glade2:1025
+#: ../data/pcsx.glade2:1169
msgid "Controller 1: "
msgstr "控制器 1:"
-#: ../data/pcsx.glade2:1040
+#: ../data/pcsx.glade2:1184
msgid "Controller 2:"
msgstr "控制器 2:"
-#: ../data/pcsx.glade2:1055
+#: ../data/pcsx.glade2:1199
msgid "CD-ROM:"
msgstr "CD-ROM:"
-#: ../data/pcsx.glade2:1093
+#: ../data/pcsx.glade2:1237
msgid "<b>Plugins</b>"
msgstr "<b>插件</b>"
-#: ../data/pcsx.glade2:1154
+#: ../data/pcsx.glade2:1298
msgid "<b>BIOS</b>"
msgstr "<b>BIOS</b>"
-#: ../data/pcsx.glade2:1221
+#: ../data/pcsx.glade2:1365
msgid "Configure CPU"
msgstr "配置 CPU"
-#: ../data/pcsx.glade2:1268
+#: ../data/pcsx.glade2:1412
msgid "SPU IRQ Always Enabled"
msgstr "SPU IRQ 总是启用"
-#: ../data/pcsx.glade2:1284
+#: ../data/pcsx.glade2:1428
msgid "Black & White Movies"
msgstr "黑白电影"
-#: ../data/pcsx.glade2:1318
+#: ../data/pcsx.glade2:1462
msgid "Enable Interpreter CPU"
msgstr "启用解释执行 CPU"
-#: ../data/pcsx.glade2:1352
+#: ../data/pcsx.glade2:1496
msgid "Disable CD Audio"
msgstr "禁用 CD 音频"
-#: ../data/pcsx.glade2:1368
+#: ../data/pcsx.glade2:1512
msgid "Disable XA Decoding"
msgstr "禁用 XA 解码"
-#: ../data/pcsx.glade2:1420
+#: ../data/pcsx.glade2:1564
msgid "<b>Options</b>"
msgstr "<b>选项</b>"
-#: ../data/pcsx.glade2:1461
+#: ../data/pcsx.glade2:1605
msgid ""
"NTSC\n"
"PAL"
@@ -1988,52 +2056,48 @@ msgstr ""
"NTSC\n"
"PAL"
-#: ../data/pcsx.glade2:1475
+#: ../data/pcsx.glade2:1619
msgid "<b>System Type</b>"
msgstr "<b>系统类型</b>"
-#: ../data/pcsx.glade2:1539
+#: ../data/pcsx.glade2:1683
msgid "Configure NetPlay"
msgstr "配置联网游戏"
-#: ../data/pcsx.glade2:1627
+#: ../data/pcsx.glade2:1771
msgid "<b>NetPlay</b>"
msgstr "<b>联网游戏</b>"
-#: ../data/pcsx.glade2:1694
-msgid "Configure Memory Cards"
-msgstr "配置记忆卡"
-
-#: ../data/pcsx.glade2:1773
-#: ../data/pcsx.glade2:2122
+#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2315
msgid "New"
msgstr "新建"
-#: ../data/pcsx.glade2:1823
-#: ../data/pcsx.glade2:2172
+#: ../data/pcsx.glade2:1967
+#: ../data/pcsx.glade2:2365
msgid "Format"
msgstr "格式化"
-#: ../data/pcsx.glade2:1873
-#: ../data/pcsx.glade2:2222
+#: ../data/pcsx.glade2:2017
+#: ../data/pcsx.glade2:2415
msgid "Un/Delete"
msgstr "删除/恢复"
-#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2110
msgid "<b>Memory Card 1</b>"
msgstr "<b>记忆卡 1</b>"
-#: ../data/pcsx.glade2:1978
-#: ../data/pcsx.glade2:2028
-#: ../data/pcsx.glade2:2873
+#: ../data/pcsx.glade2:2171
+#: ../data/pcsx.glade2:2221
+#: ../data/pcsx.glade2:3100
msgid "Copy"
msgstr "复制"
-#: ../data/pcsx.glade2:2266
+#: ../data/pcsx.glade2:2508
msgid "<b>Memory Card 2</b>"
msgstr "<b>记忆卡 2</b>"
-#: ../data/pcsx.glade2:2344
+#: ../data/pcsx.glade2:2571
msgid ""
"(C) 1999-2003 PCSX Team\n"
"(C) 2005-2006 Ryan Schultz\n"
@@ -2045,11 +2109,11 @@ msgstr ""
"(C) 2005-2006 Andrew Burton\n"
"(C) 2008-2009 Wei Mingzhi"
-#: ../data/pcsx.glade2:2348
+#: ../data/pcsx.glade2:2575
msgid "A PlayStation emulator."
msgstr "一个 PlayStation 模拟器。"
-#: ../data/pcsx.glade2:2351
+#: ../data/pcsx.glade2:2578
msgid ""
"This program is free software; you can redistribute it\n"
"and/or modify it under the terms of the GNU General\n"
@@ -2083,15 +2147,15 @@ msgstr ""
"Public License along with this program; if not, write to\n"
"the Free Software Foundation, Inc."
-#: ../data/pcsx.glade2:2380
+#: ../data/pcsx.glade2:2607
msgid "translator-credits"
msgstr "Wei Mingzhi <whistler@openoffice.org>"
-#: ../data/pcsx.glade2:2442
+#: ../data/pcsx.glade2:2669
msgid "<b>Cheat Codes</b>"
msgstr "<b>作弊码</b>"
-#: ../data/pcsx.glade2:2608
+#: ../data/pcsx.glade2:2835
msgid ""
"8-bit\n"
"16-bit\n"
@@ -2101,7 +2165,7 @@ msgstr ""
"16 位\n"
"32 位"
-#: ../data/pcsx.glade2:2671
+#: ../data/pcsx.glade2:2898
msgid ""
"Equal Value\n"
"Not Equal Value\n"
@@ -2123,7 +2187,7 @@ msgstr ""
"改变\n"
"无改变"
-#: ../data/pcsx.glade2:2703
+#: ../data/pcsx.glade2:2930
msgid ""
"Decimal\n"
"Hexadecimal"
@@ -2131,19 +2195,19 @@ msgstr ""
"十进制\n"
"十六进制"
-#: ../data/pcsx.glade2:2906
+#: ../data/pcsx.glade2:3133
msgid "label_resultsfound"
msgstr "label_resultsfound"
-#: ../data/pcsx.glade2:2941
+#: ../data/pcsx.glade2:3168
msgid "Search"
msgstr "查找"
-#: ../data/pcsx.glade2:2977
+#: ../data/pcsx.glade2:3204
msgid "Restart"
msgstr "复位"
-#: ../data/pcsx.glade2:3006
+#: ../data/pcsx.glade2:3233
msgid "<b>Cheat Search</b>"
msgstr "<b>作弊码查找</b>"
@@ -2171,10 +2235,6 @@ msgstr ""
"P.E.Op.S OSS 驱动程序 V1.7\n"
"编写: Pete Bernert 以及 P.E.Op.S. 开发组\n"
-#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
-msgid "Configure Sound"
-msgstr "配置音频"
-
#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:42
msgid "Volume:"
msgstr "音量:"
diff --git a/po/zh_TW.po b/po/zh_TW.po
index 0e627634..f6223a3f 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: pcsxr 1.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-11-28 19:26+0800\n"
-"PO-Revision-Date: 2009-11-28 19:27+0700\n"
+"POT-Creation-Date: 2009-11-28 23:14+0800\n"
+"PO-Revision-Date: 2009-11-28 23:17+0700\n"
"Last-Translator: Wei Mingzhi <whistler@openoffice.org>\n"
"Language-Team: Traditional Chinese <whistler@openoffice.org>\n"
"MIME-Version: 1.0\n"
@@ -128,7 +128,7 @@ msgid "Add New Cheat"
msgstr "添加新金手指"
#: ../win32/gui/CheatDlg.c:167
-#: ../data/pcsx.glade2:2402
+#: ../data/pcsx.glade2:2629
msgid "Edit Cheat Codes"
msgstr "編輯金手指"
@@ -249,7 +249,7 @@ msgid "Founded Addresses: %d"
msgstr "找到位址: %d"
#: ../win32/gui/CheatDlg.c:505
-#: ../data/pcsx.glade2:2801
+#: ../data/pcsx.glade2:3028
msgid "Freeze"
msgstr "固定"
@@ -262,7 +262,7 @@ msgstr "位址:"
#: ../win32/gui/CheatDlg.c:598
#: ../win32/gui/CheatDlg.c:683
#: ../gui/Cheat.c:648
-#: ../data/pcsx.glade2:2645
+#: ../data/pcsx.glade2:2872
msgid "Value:"
msgstr "值:"
@@ -272,33 +272,33 @@ msgid "Freeze %.8X"
msgstr "固定 %.8X"
#: ../win32/gui/CheatDlg.c:596
-#: ../data/pcsx.glade2:2837
+#: ../data/pcsx.glade2:3064
msgid "Modify"
msgstr "更改"
#: ../win32/gui/CheatDlg.c:679
#: ../gui/Cheat.c:1130
-#: ../data/pcsx.glade2:2573
+#: ../data/pcsx.glade2:2800
msgid "Cheat Search"
msgstr "搜尋金手指碼"
#: ../win32/gui/CheatDlg.c:681
-#: ../data/pcsx.glade2:2623
+#: ../data/pcsx.glade2:2850
msgid "Search For:"
msgstr "搜尋:"
#: ../win32/gui/CheatDlg.c:682
-#: ../data/pcsx.glade2:2633
+#: ../data/pcsx.glade2:2860
msgid "Data Type:"
msgstr "數值類型:"
#: ../win32/gui/CheatDlg.c:684
-#: ../data/pcsx.glade2:2657
+#: ../data/pcsx.glade2:2884
msgid "Data Base:"
msgstr "數值基:"
#: ../win32/gui/CheatDlg.c:685
-#: ../data/pcsx.glade2:2717
+#: ../data/pcsx.glade2:2944
msgid "To:"
msgstr "至:"
@@ -347,7 +347,7 @@ msgid "Hexadecimal"
msgstr "十六進制"
#: ../win32/gui/ConfigurePlugins.c:206
-#: ../gui/Gtk2Gui.c:1663
+#: ../gui/ConfDlg.c:680
msgid "Internal HLE Bios"
msgstr "內部 HLE-Bios"
@@ -688,15 +688,15 @@ msgstr "*PCSX*: Error Saving State %s"
#: ../win32/gui/WndMain.c:426
#: ../win32/gui/WndMain.c:475
-#: ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "The CD does not appear to be a valid Playstation CD"
msgstr "此光碟不是一張合法的 PlayStation 光碟。"
#: ../win32/gui/WndMain.c:432
#: ../win32/gui/WndMain.c:481
-#: ../gui/Gtk2Gui.c:579
-#: ../gui/Gtk2Gui.c:704
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
msgid "Could not load CD-ROM!"
msgstr "無法加載光碟!"
@@ -732,7 +732,7 @@ msgstr "terminiting link block"
#: ../win32/gui/WndMain.c:864
#: ../gui/MemcardDlg.c:147
-#: ../gui/MemcardDlg.c:217
+#: ../gui/MemcardDlg.c:244
msgid "Deleted"
msgstr "已刪除"
@@ -740,14 +740,14 @@ msgstr "已刪除"
#: ../win32/gui/WndMain.c:868
#: ../gui/MemcardDlg.c:149
#: ../gui/MemcardDlg.c:153
-#: ../gui/MemcardDlg.c:219
-#: ../gui/MemcardDlg.c:223
+#: ../gui/MemcardDlg.c:246
+#: ../gui/MemcardDlg.c:250
msgid "Free"
msgstr "空閑"
#: ../win32/gui/WndMain.c:867
#: ../gui/MemcardDlg.c:151
-#: ../gui/MemcardDlg.c:221
+#: ../gui/MemcardDlg.c:248
msgid "Used"
msgstr "已使用"
@@ -834,7 +834,7 @@ msgid "Disable Cd audio"
msgstr "禁用 CD 音頻"
#: ../win32/gui/WndMain.c:1206
-#: ../data/pcsx.glade2:1444
+#: ../data/pcsx.glade2:1588
msgid "Autodetect"
msgstr "自動檢測"
@@ -843,12 +843,12 @@ msgid "Enable Interpreter Cpu"
msgstr "開啟解釋執行 CPU"
#: ../win32/gui/WndMain.c:1208
-#: ../data/pcsx.glade2:1300
+#: ../data/pcsx.glade2:1444
msgid "Enable Console Output"
msgstr "開啟控制台輸出"
#: ../win32/gui/WndMain.c:1209
-#: ../data/pcsx.glade2:1250
+#: ../data/pcsx.glade2:1394
msgid "Enable Debugger"
msgstr "開啟調試器"
@@ -857,12 +857,12 @@ msgid "Spu Irq Always Enabled"
msgstr "SPU IRQ 總是開啟"
#: ../win32/gui/WndMain.c:1211
-#: ../data/pcsx.glade2:1387
+#: ../data/pcsx.glade2:1531
msgid "Parasite Eve 2, Vandal Hearts 1/2 Fix"
msgstr "Parasite Eve 2, Vandal Hearts 1/2 修正"
#: ../win32/gui/WndMain.c:1212
-#: ../data/pcsx.glade2:1402
+#: ../data/pcsx.glade2:1546
msgid "InuYasha Sengoku Battle Fix"
msgstr "InuYasha Sengoku 戰斗修正"
@@ -903,8 +903,8 @@ msgstr "DataDeck 記憶卡 (*.ddl)"
#: ../win32/gui/WndMain.c:1350
#: ../win32/gui/WndMain.c:1431
#: ../gui/Cheat.c:322
-#: ../gui/Gtk2Gui.c:508
-#: ../gui/Gtk2Gui.c:647
+#: ../gui/Gtk2Gui.c:402
+#: ../gui/Gtk2Gui.c:541
msgid "All Files"
msgstr "所有檔案"
@@ -1086,8 +1086,8 @@ msgstr "所有檔案 (*.*)"
#: ../gui/Cheat.c:395
#: ../gui/Cheat.c:1125
-#: ../gui/Gtk2Gui.c:396
-#: ../gui/Gtk2Gui.c:1016
+#: ../gui/ConfDlg.c:104
+#: ../gui/ConfDlg.c:203
msgid "Error: Glade interface could not be loaded!"
msgstr "錯誤:無法加載 Glade 界面!"
@@ -1115,106 +1115,107 @@ msgstr "新值:"
msgid "Search Results"
msgstr "搜尋結果"
-#: ../gui/Gtk2Gui.c:404
-#: ../data/pcsx.glade2:605
+#: ../gui/ConfDlg.c:112
+#: ../data/pcsx.glade2:749
msgid "Configure PCSX"
msgstr "配置 PCSX"
-#: ../gui/Gtk2Gui.c:490
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "No configuration required"
+msgstr "不需要配置"
+
+#: ../gui/ConfDlg.c:240
+#: ../gui/ConfDlg.c:261
+#: ../gui/ConfDlg.c:282
+#: ../gui/ConfDlg.c:303
+#: ../gui/ConfDlg.c:358
+msgid "This plugin doesn't need to be configured."
+msgstr "此外掛不需要被配置。"
+
+#: ../gui/ConfDlg.c:586
+#, c-format
+msgid "Could not open BIOS directory: '%s'\n"
+msgstr "無法開啟 BIOS 目錄: \"%s\"\n"
+
+#: ../gui/ConfDlg.c:616
+#: ../gui/ConfDlg.c:709
+#: ../gui/LnxMain.c:167
+#, c-format
+msgid "Could not open directory: '%s'\n"
+msgstr "無法開啟目錄: \"%s\"\n"
+
+#: ../gui/Gtk2Gui.c:384
msgid "Select PSX EXE File"
msgstr "選擇 PS EXE 檔案"
-#: ../gui/Gtk2Gui.c:504
+#: ../gui/Gtk2Gui.c:398
msgid "PlayStation Executable Files"
msgstr "PlayStation 執行檔"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "Not a valid PSX file"
msgstr "不是一個合法的 PSX 檔"
-#: ../gui/Gtk2Gui.c:540
+#: ../gui/Gtk2Gui.c:434
msgid "The file does not appear to be a valid Playstation executable"
msgstr "此文件不是一個合法的 PlayStation 執行檔"
-#: ../gui/Gtk2Gui.c:571
-#: ../gui/Gtk2Gui.c:696
+#: ../gui/Gtk2Gui.c:465
+#: ../gui/Gtk2Gui.c:590
msgid "CD ROM failed"
msgstr "CD-ROM 失敗"
-#: ../gui/Gtk2Gui.c:579
-msgid "The CD ROM could not be loaded"
+#: ../gui/Gtk2Gui.c:473
+#: ../gui/Gtk2Gui.c:598
+msgid "The CD-ROM could not be loaded"
msgstr "無法加載 CD-ROM"
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Could not run BIOS"
msgstr "無法執行 BIOS"
-#: ../gui/Gtk2Gui.c:593
+#: ../gui/Gtk2Gui.c:487
msgid "Running BIOS is not supported with Internal HLE BIOS."
msgstr "內部 HLE BIOS 不支援直接執行。"
-#: ../gui/Gtk2Gui.c:622
+#: ../gui/Gtk2Gui.c:516
msgid "Open PSX Disc Image File"
msgstr "打開 PSX 光碟映像檔"
-#: ../gui/Gtk2Gui.c:642
+#: ../gui/Gtk2Gui.c:536
msgid "PSX Image Files (*.bin, *.img, *.mdf, *.iso)"
msgstr "PSX 鏡像檔 (*.bin, *.img, *.mdf, *.iso)"
-#: ../gui/Gtk2Gui.c:876
+#: ../gui/Gtk2Gui.c:747
#, c-format
msgid "Loaded state %s."
msgstr "已讀取記錄 %s。"
-#: ../gui/Gtk2Gui.c:880
+#: ../gui/Gtk2Gui.c:751
#, c-format
msgid "Error loading state %s!"
msgstr "讀取記錄 %s 時出錯。"
-#: ../gui/Gtk2Gui.c:891
+#: ../gui/Gtk2Gui.c:762
#, c-format
msgid "Saved state %s."
msgstr "已存儲記錄 %s"
-#: ../gui/Gtk2Gui.c:893
+#: ../gui/Gtk2Gui.c:764
#, c-format
msgid "Error saving state %s!"
msgstr "存儲記錄 %s 時出錯。"
-#: ../gui/Gtk2Gui.c:927
-#: ../gui/Gtk2Gui.c:954
+#: ../gui/Gtk2Gui.c:797
+#: ../gui/Gtk2Gui.c:824
msgid "Select State File"
msgstr "選擇記錄檔案"
-#: ../gui/Gtk2Gui.c:1053
-#: ../gui/Gtk2Gui.c:1074
-#: ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116
-#: ../gui/Gtk2Gui.c:1315
-msgid "No configuration required"
-msgstr "不需要配置"
-
-#: ../gui/Gtk2Gui.c:1053
-#: ../gui/Gtk2Gui.c:1074
-#: ../gui/Gtk2Gui.c:1095
-#: ../gui/Gtk2Gui.c:1116
-#: ../gui/Gtk2Gui.c:1315
-msgid "This plugin doesn't need to be configured."
-msgstr "此外掛不需要被配置。"
-
-#: ../gui/Gtk2Gui.c:1569
-#, c-format
-msgid "Could not open BIOS directory: '%s'\n"
-msgstr "無法開啟 BIOS 目錄: \"%s\"\n"
-
-#: ../gui/Gtk2Gui.c:1599
-#: ../gui/Gtk2Gui.c:1692
-#: ../gui/LnxMain.c:167
-#, c-format
-msgid "Could not open directory: '%s'\n"
-msgstr "無法開啟目錄: \"%s\"\n"
-
-#: ../gui/Gtk2Gui.c:1753
+#: ../gui/Gtk2Gui.c:881
msgid "Notice"
msgstr "警告"
@@ -1278,40 +1279,44 @@ msgstr "ID"
msgid "Name"
msgstr "名稱"
-#: ../gui/MemcardDlg.c:308
+#: ../gui/MemcardDlg.c:297
+msgid "Select A File"
+msgstr "選擇檔案"
+
+#: ../gui/MemcardDlg.c:338
msgid "Format this Memory Card?"
msgstr "格式化此記憶卡?"
-#: ../gui/MemcardDlg.c:310
+#: ../gui/MemcardDlg.c:340
msgid "If you format the memory card, the card will be empty, and any existing data overwritten."
msgstr "如果您選擇格式化記憶卡,記憶卡將被清空,並且任何現有資料都將被覆蓋。"
-#: ../gui/MemcardDlg.c:313
+#: ../gui/MemcardDlg.c:343
msgid "Format card"
msgstr "格式化記憶卡"
-#: ../gui/MemcardDlg.c:339
+#: ../gui/MemcardDlg.c:366
msgid "Create a new Memory Card"
msgstr "新增記憶卡"
-#: ../gui/MemcardDlg.c:348
+#: ../gui/MemcardDlg.c:375
msgid "New Memory Card.mcd"
msgstr "新記憶卡檔.mcd"
-#: ../gui/MemcardDlg.c:456
+#: ../gui/MemcardDlg.c:476
msgid "No free space on memory card"
msgstr "記憶卡無空餘位置"
-#: ../gui/MemcardDlg.c:457
+#: ../gui/MemcardDlg.c:477
msgid "There are no free slots available on the target memory card. Please delete a slot first."
msgstr "目的記憶卡無空餘位置。請先刪除一個檔案。"
-#: ../gui/MemcardDlg.c:611
+#: ../gui/MemcardDlg.c:631
msgid "Memory Card Manager"
msgstr "記憶卡管理器"
#: ../gui/Plugin.c:204
-#: ../data/pcsx.glade2:1336
+#: ../data/pcsx.glade2:1480
#, c-format
msgid "SIO IRQ Always Enabled"
msgstr "SIO IRQ 總是開啟"
@@ -1916,71 +1921,134 @@ msgstr "說明(_H)"
msgid "_About PCSX..."
msgstr "關於 PCSX(_A)..."
+#: ../data/pcsx.glade2:599
+#: ../data/pcsx.glade2:600
+msgid "Run CD"
+msgstr "執行光碟"
+
+#: ../data/pcsx.glade2:612
+msgid "Run ISO Image"
+msgstr "執行 ISO 光碟映像"
+
+#: ../data/pcsx.glade2:613
+msgid "Run ISO..."
+msgstr "執行 ISO..."
+
+#: ../data/pcsx.glade2:634
+msgid "Switch ISO Image"
+msgstr "更換 ISO 光碟映像"
+
+#: ../data/pcsx.glade2:635
+msgid "Switch ISO..."
+msgstr "更換 ISO..."
+
+#: ../data/pcsx.glade2:656
+#: ../data/pcsx.glade2:1838
+msgid "Configure Memory Cards"
+msgstr "配置記憶卡"
+
+#: ../data/pcsx.glade2:657
+msgid "Memcards..."
+msgstr "記憶卡..."
+
+#: ../data/pcsx.glade2:669
+msgid "Configure Graphics"
+msgstr "配置圖像"
+
+#: ../data/pcsx.glade2:670
+msgid "Graphics..."
+msgstr "圖像..."
+
+#: ../data/pcsx.glade2:682
+#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
+msgid "Configure Sound"
+msgstr "設定聲音"
+
+#: ../data/pcsx.glade2:683
+msgid "Sound..."
+msgstr "聲音..."
+
+#: ../data/pcsx.glade2:695
+msgid "Configure CD-ROM"
+msgstr "配置 CD-ROM"
+
+#: ../data/pcsx.glade2:696
+msgid "CD-ROM..."
+msgstr "CD-ROM..."
+
#: ../data/pcsx.glade2:708
+msgid "Configure Controllers"
+msgstr "配置控制器"
+
+#: ../data/pcsx.glade2:709
+msgid "Controllers..."
+msgstr "控制器..."
+
+#: ../data/pcsx.glade2:852
msgid "Select Folder to Search"
msgstr "選擇要查找的資料夾"
-#: ../data/pcsx.glade2:724
+#: ../data/pcsx.glade2:868
msgid "Search in:"
msgstr "在此處查找外掛:"
-#: ../data/pcsx.glade2:997
+#: ../data/pcsx.glade2:1141
msgid "Graphics:"
msgstr "圖像:"
-#: ../data/pcsx.glade2:1010
+#: ../data/pcsx.glade2:1154
msgid "Sound:"
msgstr "聲音:"
-#: ../data/pcsx.glade2:1025
+#: ../data/pcsx.glade2:1169
msgid "Controller 1: "
msgstr "控制器 1:"
-#: ../data/pcsx.glade2:1040
+#: ../data/pcsx.glade2:1184
msgid "Controller 2:"
msgstr "控制器 2:"
-#: ../data/pcsx.glade2:1055
+#: ../data/pcsx.glade2:1199
msgid "CD-ROM:"
msgstr "CD-ROM:"
-#: ../data/pcsx.glade2:1093
+#: ../data/pcsx.glade2:1237
msgid "<b>Plugins</b>"
msgstr "<b>外掛</b>"
-#: ../data/pcsx.glade2:1154
+#: ../data/pcsx.glade2:1298
msgid "<b>BIOS</b>"
msgstr "<b>BIOS</b>"
-#: ../data/pcsx.glade2:1221
+#: ../data/pcsx.glade2:1365
msgid "Configure CPU"
msgstr "配置 CPU"
-#: ../data/pcsx.glade2:1268
+#: ../data/pcsx.glade2:1412
msgid "SPU IRQ Always Enabled"
msgstr "SPU IRQ 總是開啟"
-#: ../data/pcsx.glade2:1284
+#: ../data/pcsx.glade2:1428
msgid "Black & White Movies"
msgstr "黑白電影"
-#: ../data/pcsx.glade2:1318
+#: ../data/pcsx.glade2:1462
msgid "Enable Interpreter CPU"
msgstr "開啟解釋執行 CPU"
-#: ../data/pcsx.glade2:1352
+#: ../data/pcsx.glade2:1496
msgid "Disable CD Audio"
msgstr "禁用 CD 音頻"
-#: ../data/pcsx.glade2:1368
+#: ../data/pcsx.glade2:1512
msgid "Disable XA Decoding"
msgstr "禁用 XA 解碼"
-#: ../data/pcsx.glade2:1420
+#: ../data/pcsx.glade2:1564
msgid "<b>Options</b>"
msgstr "<b>選項</b>"
-#: ../data/pcsx.glade2:1461
+#: ../data/pcsx.glade2:1605
msgid ""
"NTSC\n"
"PAL"
@@ -1988,52 +2056,48 @@ msgstr ""
"NTSC\n"
"PAL"
-#: ../data/pcsx.glade2:1475
+#: ../data/pcsx.glade2:1619
msgid "<b>System Type</b>"
msgstr "<b>系統類型</b>"
-#: ../data/pcsx.glade2:1539
+#: ../data/pcsx.glade2:1683
msgid "Configure NetPlay"
msgstr "配置聯網遊戲"
-#: ../data/pcsx.glade2:1627
+#: ../data/pcsx.glade2:1771
msgid "<b>NetPlay</b>"
msgstr "<b>聯網遊戲</b>"
-#: ../data/pcsx.glade2:1694
-msgid "Configure Memory Cards"
-msgstr "配置記憶卡"
-
-#: ../data/pcsx.glade2:1773
-#: ../data/pcsx.glade2:2122
+#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2315
msgid "New"
msgstr "新增"
-#: ../data/pcsx.glade2:1823
-#: ../data/pcsx.glade2:2172
+#: ../data/pcsx.glade2:1967
+#: ../data/pcsx.glade2:2365
msgid "Format"
msgstr "格式化"
-#: ../data/pcsx.glade2:1873
-#: ../data/pcsx.glade2:2222
+#: ../data/pcsx.glade2:2017
+#: ../data/pcsx.glade2:2415
msgid "Un/Delete"
msgstr "刪除/恢複"
-#: ../data/pcsx.glade2:1917
+#: ../data/pcsx.glade2:2110
msgid "<b>Memory Card 1</b>"
msgstr "<b>記憶卡 1</b>"
-#: ../data/pcsx.glade2:1978
-#: ../data/pcsx.glade2:2028
-#: ../data/pcsx.glade2:2873
+#: ../data/pcsx.glade2:2171
+#: ../data/pcsx.glade2:2221
+#: ../data/pcsx.glade2:3100
msgid "Copy"
msgstr "複制"
-#: ../data/pcsx.glade2:2266
+#: ../data/pcsx.glade2:2508
msgid "<b>Memory Card 2</b>"
msgstr "<b>記憶卡 2</b>"
-#: ../data/pcsx.glade2:2344
+#: ../data/pcsx.glade2:2571
msgid ""
"(C) 1999-2003 PCSX Team\n"
"(C) 2005-2006 Ryan Schultz\n"
@@ -2045,11 +2109,11 @@ msgstr ""
"(C) 2005-2006 Andrew Burton\n"
"(C) 2008-2009 Wei Mingzhi"
-#: ../data/pcsx.glade2:2348
+#: ../data/pcsx.glade2:2575
msgid "A PlayStation emulator."
msgstr "一個 PlayStation 模擬器。"
-#: ../data/pcsx.glade2:2351
+#: ../data/pcsx.glade2:2578
msgid ""
"This program is free software; you can redistribute it\n"
"and/or modify it under the terms of the GNU General\n"
@@ -2083,15 +2147,15 @@ msgstr ""
"Public License along with this program; if not, write to\n"
"the Free Software Foundation, Inc."
-#: ../data/pcsx.glade2:2380
+#: ../data/pcsx.glade2:2607
msgid "translator-credits"
msgstr "Wei Mingzhi <whistler@openoffice.org>"
-#: ../data/pcsx.glade2:2442
+#: ../data/pcsx.glade2:2669
msgid "<b>Cheat Codes</b>"
msgstr "<b>金手指碼</b>"
-#: ../data/pcsx.glade2:2608
+#: ../data/pcsx.glade2:2835
msgid ""
"8-bit\n"
"16-bit\n"
@@ -2101,7 +2165,7 @@ msgstr ""
"16 位元\n"
"32 位元"
-#: ../data/pcsx.glade2:2671
+#: ../data/pcsx.glade2:2898
msgid ""
"Equal Value\n"
"Not Equal Value\n"
@@ -2123,7 +2187,7 @@ msgstr ""
"不同\n"
"無變動"
-#: ../data/pcsx.glade2:2703
+#: ../data/pcsx.glade2:2930
msgid ""
"Decimal\n"
"Hexadecimal"
@@ -2131,19 +2195,19 @@ msgstr ""
"十進制\n"
"十六進制"
-#: ../data/pcsx.glade2:2906
+#: ../data/pcsx.glade2:3133
msgid "label_resultsfound"
msgstr "label_resultsfound"
-#: ../data/pcsx.glade2:2941
+#: ../data/pcsx.glade2:3168
msgid "Search"
msgstr "搜尋"
-#: ../data/pcsx.glade2:2977
+#: ../data/pcsx.glade2:3204
msgid "Restart"
msgstr "重新開始"
-#: ../data/pcsx.glade2:3006
+#: ../data/pcsx.glade2:3233
msgid "<b>Cheat Search</b>"
msgstr "<b>金手指碼搜尋</b>"
@@ -2171,10 +2235,6 @@ msgstr ""
"P.E.Op.S. OSS 驅動程式 V1.7\n"
"由 Pete Bernert 及 P.E.Op.S. 開發組編寫\n"
-#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:8
-msgid "Configure Sound"
-msgstr "設定聲音"
-
#: ../plugins/dfsound/spucfg-0.1df/dfsound.glade2:42
msgid "Volume:"
msgstr "音量:"