// Called upon all successful opens and saves void add_to_recent_files (GtkWidget *menu, char *pszFName, GtkSignalFunc pfn, gpointer data) { int Nix ; char *pszFound = NULL ; for (Nix = 0 ; Nix < icRecentFiles ; Nix++) if (!strcmp (pszFName, ppszRecentFiles[Nix])) break ; if (MAX_RECENT_FILES == Nix) { ScrollRecentFiles (ppszRecentFiles, 0, Nix - 2) ; ppszRecentFiles[0] = g_strdup (pszFName) ; } else if (icRecentFiles == Nix) { ppszRecentFiles = realloc (ppszRecentFiles, ++icRecentFiles * sizeof (char *)) ; ScrollRecentFiles (ppszRecentFiles, 0, icRecentFiles - 2) ; ppszRecentFiles[0] = g_strdup (pszFName) ; } else { pszFound = ppszRecentFiles[Nix] ; ScrollRecentFiles (ppszRecentFiles, 0, Nix - 1) ; ppszRecentFiles[0] = pszFound ; } BuildRecentFilesMenu (menu, pfn, data) ; SaveRecentFiles (ppszRecentFiles, icRecentFiles) ; }
// Remove a recent file from the array static void RemoveRecentFile (char *pszFName) { int Nix ; for (Nix = 0 ; Nix < icRecentFiles ; Nix++) if (!strcmp (ppszRecentFiles[Nix], pszFName)) break ; if (icRecentFiles == Nix) return ; g_free (ppszRecentFiles[Nix]) ; for (; Nix < icRecentFiles - 1 ; Nix++) ppszRecentFiles[Nix] = ppszRecentFiles[Nix + 1] ; ppszRecentFiles = realloc (ppszRecentFiles, --icRecentFiles * sizeof (char *)) ; SaveRecentFiles (ppszRecentFiles, icRecentFiles) ; }
MainWindow::~MainWindow() { delete _ui; SaveRecentFiles(); }