summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-28 16:05:45 +0000
committerSND\ckain_cp <SND\ckain_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97>2013-11-28 16:05:45 +0000
commit5ffd1f6301f77a5b8dbfcc76f1d55693911c9fd1 (patch)
tree99462bfec79d04fe39c19a9c540f92358152b140
parentab3d13f1e74f78404f9c723b58728bcd4a5cd53c (diff)
downloadpcsxr-5ffd1f6301f77a5b8dbfcc76f1d55693911c9fd1.tar.gz
GTK: improved cheat file automatic loading / name generation.
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@88007 e17a0e51-4ae3-4d35-97c3-1a29b211df97
-rwxr-xr-xgui/Cheat.c16
-rwxr-xr-xgui/Cheat.h3
-rwxr-xr-xgui/GtkGui.c25
3 files changed, 27 insertions, 17 deletions
diff --git a/gui/Cheat.c b/gui/Cheat.c
index 10d6077d..497970ae 100755
--- a/gui/Cheat.c
+++ b/gui/Cheat.c
@@ -300,7 +300,7 @@ static void OnCheatListDlg_EnableToggled(GtkCellRendererToggle *cell, gchar *pat
}
// last chosen filename is kept in here
-static gchar *lastfilename = NULL;
+gchar *cheat_last_filename = NULL;
const gchar* file_filter_all = NULL;
@@ -341,8 +341,8 @@ static void OnCheatListDlg_OpenClicked(GtkWidget *widget, gpointer user_data) {
LoadCheats(filename);
- g_free(lastfilename);
- lastfilename = g_path_get_basename(filename);
+ g_free(cheat_last_filename);
+ cheat_last_filename = g_path_get_basename(filename);
g_free(filename);
@@ -362,10 +362,10 @@ static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) {
gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), filename);
// Use game code as default filename, otherwise remember what user selected
- if (!lastfilename) {
- lastfilename = get_cdrom_label_id(dot_extension_cht);
+ if (!cheat_last_filename) {
+ cheat_last_filename = get_cdrom_label_id(dot_extension_cht);
}
- gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), lastfilename);
+ gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), cheat_last_filename);
g_free(filename);
@@ -399,8 +399,8 @@ static void OnCheatListDlg_SaveClicked(GtkWidget *widget, gpointer user_data) {
SaveCheats(filename);
- g_free(lastfilename);
- lastfilename = g_path_get_basename(filename);
+ g_free(cheat_last_filename);
+ cheat_last_filename = g_path_get_basename(filename);
g_free(filename);
g_free(filename2);
diff --git a/gui/Cheat.h b/gui/Cheat.h
index c3f9b996..a79876dc 100755
--- a/gui/Cheat.h
+++ b/gui/Cheat.h
@@ -22,4 +22,7 @@
void RunCheatListDialog();
void RunCheatSearchDialog();
+// last chosen cheat filename is kept in here
+extern gchar *cheat_last_filename;
+
#endif
diff --git a/gui/GtkGui.c b/gui/GtkGui.c
index f9f1f183..946a34a9 100755
--- a/gui/GtkGui.c
+++ b/gui/GtkGui.c
@@ -195,6 +195,14 @@ void ResetMenuSlots() {
}
}
+static void clear_change_image() {
+ g_free(reset_load_info);
+ reset_load_info = NULL;
+ autoloadCheats();
+ g_free(cheat_last_filename);
+ cheat_last_filename = NULL;
+}
+
int match(const char *string, char *pattern) {
int status;
regex_t re;
@@ -252,7 +260,10 @@ gchar* get_cdrom_label_id(const gchar* suffix) {
g_free(trimlabel);
- return g_strdup(buf);
+ if (strlen(buf) <= (2+strlen(dot_extension_cht)))
+ return g_strconcat("psx-default", dot_extension_cht, NULL);
+ else
+ return g_strdup(buf);
}
void UpdateMenuSlots() {
@@ -267,6 +278,7 @@ void UpdateMenuSlots() {
}
void autoloadCheats() {
+ ClearAllCheats();
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()
@@ -624,9 +636,7 @@ void OnFile_RunCd() {
SysRunGui();
}
- g_free(reset_load_info);
- reset_load_info = NULL;
- autoloadCheats();
+ clear_change_image();
psxCpu->Execute();
}
@@ -657,8 +667,7 @@ void OnFile_RunBios() {
CdromId[0] = '\0';
CdromLabel[0] = '\0';
- g_free(reset_load_info);
- reset_load_info = NULL;
+ clear_change_image();
psxCpu->Execute();
}
@@ -802,9 +811,7 @@ void OnFile_RunImage() {
SysRunGui();
}
- g_free(reset_load_info);
- reset_load_info = NULL;
- autoloadCheats();
+ clear_change_image();
psxCpu->Execute();
}