GTK: improved cheat file automatic loading / name generation.

git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@88007 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
SND\ckain_cp 2013-11-28 16:05:45 +00:00
parent ab3d13f1e7
commit 5ffd1f6301
3 changed files with 27 additions and 17 deletions

View File

@ -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);

View File

@ -22,4 +22,7 @@
void RunCheatListDialog();
void RunCheatSearchDialog();
// last chosen cheat filename is kept in here
extern gchar *cheat_last_filename;
#endif

View File

@ -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();
}