diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-28 15:41:04 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2009-11-28 15:41:04 +0000 |
| commit | 676eb630fbb2ac830a0befdd30a3a16705af7e86 (patch) | |
| tree | f2586fbf4d2ad8f293397faf9034ccdb7a5bdef6 | |
| parent | 99bc6308ba92d0bf8bf158f032b21b7aa17a3bf2 (diff) | |
| download | pcsxr-676eb630fbb2ac830a0befdd30a3a16705af7e86.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@38411 e17a0e51-4ae3-4d35-97c3-1a29b211df97
| -rw-r--r-- | ChangeLog | 15 | ||||
| -rw-r--r-- | data/pcsx.glade2 | 283 | ||||
| -rw-r--r-- | gui/ConfDlg.c | 896 | ||||
| -rw-r--r-- | gui/ConfDlg.h | 50 | ||||
| -rw-r--r-- | gui/Gtk2Gui.c | 1086 | ||||
| -rw-r--r-- | gui/Linux.h | 17 | ||||
| -rw-r--r-- | gui/LnxMain.c | 8 | ||||
| -rw-r--r-- | gui/Makefile.am | 1 | ||||
| -rw-r--r-- | gui/Makefile.in | 5 | ||||
| -rw-r--r-- | gui/MemcardDlg.c | 142 | ||||
| -rw-r--r-- | libpcsxcore/psxcommon.h | 19 | ||||
| -rw-r--r-- | po/pcsx.pot | 294 | ||||
| -rw-r--r-- | po/pt_BR.po | 611 | ||||
| -rw-r--r-- | po/update-pot.sh | 3 | ||||
| -rw-r--r-- | po/zh_CN.po | 334 | ||||
| -rw-r--r-- | po/zh_TW.po | 334 |
16 files changed, 2385 insertions, 1713 deletions
@@ -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 "音量:" |
