// 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) ;
  }
Exemple #3
0
MainWindow::~MainWindow()
{
    delete _ui;
    SaveRecentFiles();
}