GTK: autoload cheats from default path and filename, e.g. /home/user/.pcsxr/cheats/SLUS_90064-SLUS90064.cht. Also if entered cheat code is incorrect don't close input dialog.

git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@86327 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
SND\ckain_cp 2013-07-31 15:17:44 +00:00
parent bd17a3b753
commit 7419d226fe
8 changed files with 148 additions and 98 deletions

View File

@ -135,7 +135,7 @@ static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) {
gtk_widget_show_all(dlg);
if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) {
while (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_ACCEPT) {
GtkTextBuffer *b = gtk_text_view_get_buffer(GTK_TEXT_VIEW(code_edit));
GtkTextIter s, e;
char *codetext;
@ -145,11 +145,12 @@ static void OnCheatListDlg_AddClicked(GtkWidget *widget, gpointer user_data) {
if (AddCheat(gtk_entry_get_text(GTK_ENTRY(descr_edit)), codetext) != 0) {
SysErrorMessage(_("Error"), _("Invalid cheat code!"));
continue;
}
LoadCheatListItems(NumCheats - 1);
free(codetext);
break;
}
gtk_widget_destroy(dlg);
@ -302,7 +303,6 @@ static void OnCheatListDlg_EnableToggled(GtkCellRendererToggle *cell, gchar *pat
static gchar *lastfilename = NULL;
const gchar* file_filter_all = NULL;
const gchar* extension_cht="*.cht";
static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) {
GtkWidget *chooser;
@ -320,7 +320,7 @@ static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) {
g_free(filename);
filter = gtk_file_filter_new ();
gtk_file_filter_add_pattern (filter, extension_cht);
gtk_file_filter_add_pattern (filter, all_extension_cht);
gtk_file_filter_set_name (filter, _("PCSXR Cheat Code Files (*.cht)"));
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (chooser), filter);
@ -360,12 +360,17 @@ static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) {
filename = g_build_filename(getenv("HOME"), CHEATS_DIR, NULL);
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), filename);
/*if (lastfilename)*/gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), lastfilename);
// Use game code as default filename, otherwise remember what user selected
if (!lastfilename) {
lastfilename = get_cdrom_label_id(dot_extension_cht);
}
gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), lastfilename);
g_free(filename);
filter = gtk_file_filter_new();
gtk_file_filter_add_pattern(filter, extension_cht);
gtk_file_filter_add_pattern(filter, all_extension_cht);
gtk_file_filter_set_name(filter, _("PCSXR Cheat Code Files (*.cht)"));
gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(chooser), filter);
@ -376,10 +381,10 @@ static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) {
if (gtk_dialog_run(GTK_DIALOG(chooser)) == GTK_RESPONSE_OK) {
filename = filename2 = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
if (!g_str_has_suffix(filename, extension_cht+1) // add extension if cht filter chosen and filename doesn't end with .cht
if (!g_str_has_suffix(filename, dot_extension_cht) // add extension if cht filter chosen and filename doesn't end with .cht
&& strcmp(file_filter_all, gtk_file_filter_get_name(
gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(chooser)))) != 0) {
filename = g_strdup_printf ("%s%s", filename2, extension_cht+1);
filename = g_strdup_printf ("%s%s", filename2, dot_extension_cht);
} else {
filename2 = NULL;
}

View File

@ -129,11 +129,11 @@ void ConfigurePlugins() {
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_ConfGpu"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_configure_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_configure_plugin), GINT_TO_POINTER(PSE_LT_GPU), NULL, G_CONNECT_AFTER);
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_ConfSpu"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_configure_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_configure_plugin), GINT_TO_POINTER(PSE_LT_SPU), NULL, G_CONNECT_AFTER);
/* ADB TODO Does pad 1 and 2 need to be different? */
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_ConfPad1"));
@ -146,7 +146,7 @@ void ConfigurePlugins() {
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_ConfCdr"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_configure_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_configure_plugin), GINT_TO_POINTER(PSE_LT_CDR), NULL, G_CONNECT_AFTER);
#ifdef ENABLE_SIO1API
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_ConfSio1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
@ -163,11 +163,11 @@ void ConfigurePlugins() {
#endif
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_AboutGpu"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_about_plugin), (gpointer) PSE_LT_GPU, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_about_plugin), GINT_TO_POINTER(PSE_LT_GPU), NULL, G_CONNECT_AFTER);
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_AboutSpu"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_about_plugin), (gpointer) PSE_LT_SPU, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_about_plugin), GINT_TO_POINTER(PSE_LT_SPU), NULL, G_CONNECT_AFTER);
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_AboutPad1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
@ -179,7 +179,7 @@ void ConfigurePlugins() {
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_AboutCdr"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(on_about_plugin), (gpointer) PSE_LT_CDR, NULL, G_CONNECT_AFTER);
G_CALLBACK(on_about_plugin), GINT_TO_POINTER(PSE_LT_CDR), NULL, G_CONNECT_AFTER);
#ifdef ENABLE_SIO1API
widget = GTK_WIDGET(gtk_builder_get_object(builder, "btn_AboutSio1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
@ -361,13 +361,13 @@ static int all_config_set() {
int retval;
if ((strlen(Config.Gpu) != 0) &&
(strlen(Config.Spu) != 0) &&
(strlen(Config.Cdr) != 0) &&
(strlen(Config.Spu) != 0) &&
(strlen(Config.Cdr) != 0) &&
#ifdef ENABLE_SIO1API
(strlen(Config.Sio1) != 0) &&
(strlen(Config.Sio1) != 0) &&
#endif
(strlen(Config.Pad1) != 0) &&
(strlen(Config.Pad2) != 0))
(strlen(Config.Pad1) != 0) &&
(strlen(Config.Pad2) != 0))
retval = TRUE;
else
retval = FALSE;
@ -385,7 +385,7 @@ static int all_config_set() {
gchar *filename; \
\
GetComboText(confs.Combo, confs.plist, plugin); \
if (strlen(plugin) > 0) { \
if (strlen(plugin) > 0) { \
filename = g_build_filename (getenv("HOME"), PLUGINS_DIR, plugin, NULL); \
/*printf("Configuring plugin %s\n", filename);*/ \
drv = SysLoadLibrary(filename); \
@ -399,11 +399,11 @@ static int all_config_set() {
SysInfoMessage (_("No configuration required"), _("This plugin doesn't need to be configured.")); \
SysCloseLibrary(drv); \
g_free (filename); \
} else SysInfoMessage (name, _("Please select a plugin.")); \
} else SysInfoMessage (name, _("Please select a plugin.")); \
}
static void on_configure_plugin(GtkWidget *widget, gpointer user_data) {
gint plugin_type = (int) user_data;
gint plugin_type = GPOINTER_TO_INT(user_data);
while (gtk_events_pending())
gtk_main_iteration();
@ -427,7 +427,7 @@ static void on_configure_plugin(GtkWidget *widget, gpointer user_data) {
}
static void on_about_plugin(GtkWidget *widget, gpointer user_data) {
gint plugin_type = (int) user_data;
gint plugin_type = GPOINTER_TO_INT(user_data);
while (gtk_events_pending())
gtk_main_iteration();

View File

@ -209,23 +209,47 @@ int match(const char *string, char *pattern) {
}
gchar* get_state_filename(int i) {
gchar *state_filename;
gchar *state_filename, *trimlabel;
char SStateFile[64];
int j;
trimlabel = get_cdrom_label_trim();
sprintf(SStateFile, "%.32s-%.9s.%3.3d", trimlabel, CdromId, i);
state_filename = g_build_filename (getenv("HOME"), STATES_DIR, SStateFile, NULL);
g_free(trimlabel);
return state_filename;
}
gchar* get_cdrom_label_trim() {
char trimlabel[33];
int j;
strncpy(trimlabel, CdromLabel, 32);
trimlabel[32] = 0;
for (j = 31; j >= 0; j--)
for (j = 31; j >= 0; j--) {
if (trimlabel[j] == ' ')
trimlabel[j] = 0;
else
continue;
}
sprintf(SStateFile, "%.32s-%.9s.%3.3d", trimlabel, CdromId, i);
state_filename = g_build_filename (getenv("HOME"), STATES_DIR, SStateFile, NULL);
return g_strdup(trimlabel);
}
return state_filename;
gchar* get_cdrom_label_id(const gchar* suffix) {
const u8 lblmax = sizeof(CdromId) + sizeof(CdromLabel) + 20u;
printf("MAx %u\n", lblmax);
char buf[lblmax];
gchar *trimlabel = get_cdrom_label_trim();
snprintf(buf, lblmax, "%.32s-%.9s%s", trimlabel, CdromId, suffix);
g_free(trimlabel);
return g_strdup(buf);
}
void UpdateMenuSlots() {
@ -239,6 +263,14 @@ void UpdateMenuSlots() {
}
}
void autoloadCheats() {
gchar *chtfile = get_cdrom_label_id(dot_extension_cht);
gchar *defaultChtFilePath = g_build_filename (getenv("HOME"), CHEATS_DIR, chtfile, NULL);
LoadCheats(defaultChtFilePath); // file existence/access check in LoadCheats()
g_free(defaultChtFilePath);
g_free(chtfile);
}
void StartGui() {
GtkWidget *widget;
@ -588,6 +620,7 @@ void OnFile_RunCd() {
SysRunGui();
}
autoloadCheats();
psxCpu->Execute();
}
@ -760,6 +793,7 @@ void OnFile_RunImage() {
SysRunGui();
}
autoloadCheats();
psxCpu->Execute();
}

View File

@ -47,11 +47,15 @@ void SaveConfig();
void StartGui();
void autoloadCheats(); // try load cheat file from default path and filename
void PADhandleKey(int key);
void UpdateMenuSlots();
gchar* get_state_filename(int i);
gchar* get_cdrom_label_id(const gchar* suffix); // get cdrom label and id and append suffix to string
gchar* get_cdrom_label_trim(); // trim cdrom label out of whitespaces
void state_save(gchar *state_filename);
void state_load(gchar *state_filename);

View File

@ -455,6 +455,7 @@ int main(int argc, char *argv[]) {
g_free(state_filename);
}
autoloadCheats();
psxCpu->Execute();
}

View File

@ -36,12 +36,12 @@ static unsigned int currentIcon;
McdBlock Blocks[2][MAX_MEMCARD_BLOCKS]; // Assuming 2 cards, 15 blocks?
int IconC[2][MAX_MEMCARD_BLOCKS];
enum {
CL_ICON,
CL_TITLE,
CL_STAT,
CL_ID,
CL_NAME,
NUM_CL
CL_ICON,
CL_TITLE,
CL_STAT,
CL_ID,
CL_NAME,
NUM_CL
};
static GtkBuilder *builder;
@ -142,10 +142,10 @@ static void LoadListItems(int mcd, GtkWidget *widget) {
store = gtk_list_store_new(NUM_CL, GDK_TYPE_PIXBUF, G_TYPE_STRING,
G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING);
dialog = gtk_builder_get_object(builder, "McdsDlg");
dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
if (mcd == 1) List = gtk_builder_get_object(builder, "GtkCList_McdList1");
else List = gtk_builder_get_object(builder, "GtkCList_McdList2");
if (mcd == 1) List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
else List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
for (i = 0; i < MAX_MEMCARD_BLOCKS; i++) {
McdBlock *Info;
@ -187,14 +187,14 @@ static void UpdateFilenameButtons(GtkWidget *widget) {
const char *filename;
gchar *p;
dialog = gtk_builder_get_object(builder, "McdsDlg");
dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
for (i = 0; i < 2; i++) {
if (i == 0) {
widget = gtk_builder_get_object(builder, "Mcd1Label");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd1Label"));
filename = Config.Mcd1;
} else {
widget = gtk_builder_get_object(builder, "Mcd2Label");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd2Label"));
filename = Config.Mcd2;
}
@ -230,10 +230,10 @@ static void UpdateListItems(int mcd, GtkWidget *widget) {
int i;
gchar *title;
dialog = gtk_builder_get_object(builder, "McdsDlg");
dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
if (mcd == 1) List = gtk_builder_get_object(builder, "GtkCList_McdList1");
else List = gtk_builder_get_object(builder, "GtkCList_McdList2");
if (mcd == 1) List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
else List = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(List)));
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(store), &iter);
@ -273,7 +273,7 @@ static void UpdateListItems(int mcd, GtkWidget *widget) {
gtk_widget_show(List);
OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), (gpointer)mcd);
OnTreeSelectionChanged(gtk_tree_view_get_selection(GTK_TREE_VIEW(List)), GINT_TO_POINTER(mcd));
}
static void UpdateMcdDlg(GtkWidget *widget) {
@ -297,16 +297,16 @@ static void OnMcd_Close(GtkDialog *dialog, gint arg1, gpointer user_data) {
}
static void OnMcd_FileChange(GtkWidget *widget, gpointer user_data) {
gint memcard = (int)user_data;
gint memcard = GPOINTER_TO_INT(user_data);
gchar *filename;
GtkWidget *chooser;
// 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);
NULL, GTK_FILE_CHOOSER_ACTION_OPEN,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_OPEN, GTK_RESPONSE_OK,
NULL);
if (memcard == 1)
gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(chooser), Config.Mcd1);
@ -338,7 +338,7 @@ static void OnMcd_Format(GtkWidget *widget, gpointer user_data) {
gint result;
char *str;
gint memcard = (int)user_data;
gint memcard = GPOINTER_TO_INT(user_data);
message_dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
@ -370,10 +370,10 @@ static void OnMcd_New(GtkWidget *widget, gpointer user_data) {
// Ask for name of new memory card
chooser = gtk_file_chooser_dialog_new(_("Create a new Memory Card"),
NULL, GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
NULL);
NULL, GTK_FILE_CHOOSER_ACTION_SAVE,
GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
GTK_STOCK_SAVE, GTK_RESPONSE_OK,
NULL);
// Card should be put into $HOME/.pcsxr/memcards
path = g_build_filename(g_get_home_dir(), ".pcsxr", "memcards", NULL);
@ -389,10 +389,11 @@ static void OnMcd_New(GtkWidget *widget, gpointer user_data) {
CreateMcd(name);
if ((int)user_data == 1) strncpy(Config.Mcd1, name, MAXPATHLEN);
gint mcd = GPOINTER_TO_INT(user_data);
if (mcd == 1) strncpy(Config.Mcd1, name, MAXPATHLEN);
else strncpy(Config.Mcd2, name, MAXPATHLEN);
LoadMcd((int)user_data, name);
LoadMcd(mcd, name);
LoadMcdDlg(widget);
g_free(name);
@ -473,7 +474,7 @@ gint GetMcdBlockCount(gint mcd, gint startblock) {
}
static void OnMcd_CopyTo(GtkWidget *widget, gpointer user_data) {
gint dstmcd = (gint)user_data;
gint dstmcd = GPOINTER_TO_INT(user_data);
gint srcmcd;
GtkTreeIter iter;
@ -543,16 +544,16 @@ static void OnMemcardDelete(GtkWidget *widget, gpointer user_data) {
GtkWidget *tree;
GtkTreeSelection *sel;
gint memcard = (int)user_data;
gint memcard = GPOINTER_TO_INT(user_data);
if (memcard == 1) {
tree = gtk_builder_get_object(builder, "GtkCList_McdList1");
tree = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected (sel, &model, &iter);
data = Mcd1Data;
filename = Config.Mcd1;
} else {
tree = gtk_builder_get_object(builder, "GtkCList_McdList2");
tree = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW (tree));
selected = gtk_tree_selection_get_selected(sel, &model, &iter);
data = Mcd2Data;
@ -593,7 +594,7 @@ static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_da
int i;
McdBlock b;
gint memcard = (int)user_data;
gint memcard = GPOINTER_TO_INT(user_data);
selected = gtk_tree_selection_get_selected(selection, &model, &iter);
@ -608,38 +609,38 @@ static void OnTreeSelectionChanged(GtkTreeSelection *selection, gpointer user_da
GetMcdBlockInfo(1, i + 1, &b);
if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), TRUE);
} else {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), FALSE);
}
if ((b.Flags & 0xF3) == 0x51) {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), TRUE);
} else {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), FALSE);
}
} else {
GetMcdBlockInfo(2, i + 1, &b);
if ((b.Flags >= 0xA1 && b.Flags <= 0xA3) || ((b.Flags & 0xF0) == 0x50)) {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), TRUE);
} else {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), FALSE);
}
if ((b.Flags & 0xF3) == 0x51) {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), TRUE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), TRUE);
} else {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), FALSE);
}
}
} else {
if (memcard == 1) {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo2"), FALSE);
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete1"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2")), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1")), FALSE);
} else {
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_CopyTo1"), FALSE);
gtk_widget_set_sensitive(gtk_builder_get_object(builder, "GtkButton_Delete2"), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1")), FALSE);
gtk_widget_set_sensitive(GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2")), FALSE);
}
}
}
@ -666,7 +667,7 @@ void OnConf_Mcds() {
return;
}
dialog = gtk_builder_get_object(builder, "McdsDlg");
dialog = GTK_WIDGET(gtk_builder_get_object(builder, "McdsDlg"));
gtk_window_set_title(GTK_WINDOW(dialog), _("Memory Card Manager"));
gtk_widget_show (dialog);
@ -684,22 +685,22 @@ void OnConf_Mcds() {
g_free(str);
}
GtkCList_McdList1 = gtk_builder_get_object(builder, "GtkCList_McdList1");
GtkCList_McdList1 = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList1"));
AddColumns(GTK_TREE_VIEW(GtkCList_McdList1));
GtkCList_McdList2 = gtk_builder_get_object(builder, "GtkCList_McdList2");
GtkCList_McdList2 = GTK_WIDGET(gtk_builder_get_object(builder, "GtkCList_McdList2"));
AddColumns(GTK_TREE_VIEW(GtkCList_McdList2));
treesel1 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList1));
gtk_tree_selection_set_mode(treesel1, GTK_SELECTION_SINGLE);
g_signal_connect_data(G_OBJECT(treesel1), "changed",
G_CALLBACK(OnTreeSelectionChanged),
(gpointer)1, NULL, G_CONNECT_AFTER);
GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
treesel2 = gtk_tree_view_get_selection(GTK_TREE_VIEW (GtkCList_McdList2));
gtk_tree_selection_set_mode(treesel2, GTK_SELECTION_SINGLE);
g_signal_connect_data(G_OBJECT(treesel2), "changed",
G_CALLBACK(OnTreeSelectionChanged),
(gpointer)2, NULL, G_CONNECT_AFTER);
GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
LoadMcdDlg(dialog);
@ -707,48 +708,48 @@ void OnConf_Mcds() {
g_signal_connect_data(G_OBJECT(dialog), "response",
G_CALLBACK(OnMcd_Close), builder, (GClosureNotify)g_object_unref, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "GtkButton_Format1");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Format1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_Format), (gpointer)1, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_Format), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "GtkButton_Format2");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Format2"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_Format), (gpointer)2, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_Format), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "Mcd1Button");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd1Button"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_FileChange), (gpointer)1, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_FileChange), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "Mcd2Button");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "Mcd2Button"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_FileChange), (gpointer)2, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_FileChange), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "GtkButton_New1");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_New1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_New), (gpointer)1, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_New), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "GtkButton_New2");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_New2"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_New), (gpointer)2, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_New), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
widget = gtk_builder_get_object(builder, "GtkButton_CopyTo1");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo1"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_CopyTo), (gpointer)1, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_CopyTo), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
widget = gtk_builder_get_object(builder, "GtkButton_CopyTo2");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_CopyTo2"));
g_signal_connect_data(G_OBJECT(widget), "clicked",
G_CALLBACK(OnMcd_CopyTo), (gpointer)2, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMcd_CopyTo), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
widget = gtk_builder_get_object(builder, "GtkButton_Delete1");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete1"));
g_signal_connect_data (G_OBJECT (widget), "clicked",
G_CALLBACK(OnMemcardDelete), (gpointer)1, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMemcardDelete), GINT_TO_POINTER(1), NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
widget = gtk_builder_get_object(builder, "GtkButton_Delete2");
widget = GTK_WIDGET(gtk_builder_get_object(builder, "GtkButton_Delete2"));
g_signal_connect_data (G_OBJECT (widget), "clicked",
G_CALLBACK(OnMemcardDelete), (gpointer)2, NULL, G_CONNECT_AFTER);
G_CALLBACK(OnMemcardDelete), GINT_TO_POINTER(2), NULL, G_CONNECT_AFTER);
gtk_widget_set_sensitive(GTK_WIDGET(widget), FALSE);
quit = FALSE;

View File

@ -69,6 +69,7 @@ void LoadCheats(const char *filename) {
fp = fopen(filename, "r");
if (fp == NULL) {
SysPrintf(_("Could not load cheats from: %s\n"), filename);
return;
}

View File

@ -23,6 +23,10 @@
extern "C" {
#endif
static const char* all_extension_cht="*.cht";
static const char* dot_extension_cht=".cht";
static const char* tla_extension_cht="cht";
typedef struct {
uint32_t Addr;
uint16_t Val;