CDialogPromptNewerFile::CDialogPromptNewerFile(
  wxWindow *parent, const SET_FILE_NAMES &setFileNames, const wxString &sNewest) :
    wxDialog(
      parent,wxID_ANY,"Newer file available",
      wxDefaultPosition, wxDefaultSize,
      mainApp::DIALOG_STYLE)
{
  wxFileName fnNew(sNewest);
  wxString sPrompt;
  sPrompt.Alloc(1024);
  const wxChar *ButtonText[4] = 
  {
    wxS("Open the newer file, also"),
    wxS("Open the selected files"),
    wxS("Do not open any of the above files"),
    wxS("View folder before deciding")
  };
  SetupURL(fnNew);

  sPrompt = "The folder containing the selected files:\n";
  for(SET_FILE_NAMES::const_iterator itr = setFileNames.begin(); itr != setFileNames.end(); ++itr)
  {
    wxFileName fn(*itr);
    sPrompt.Append("  ");
    sPrompt.Append(fn.GetFullName());
    sPrompt.Append("\n");
  }
  AFTER_FILE_NAMES(sPrompt,fnNew.GetFullName());
  Setup(sPrompt,ButtonText);
}
Beispiel #2
0
bool PHPFolder::RenameFile(const wxString& old_filename, const wxString& new_filename)
{
    wxFileName fnOld(old_filename);
    wxFileName fnNew(new_filename);
    fnNew.SetPath(fnOld.GetPath());

    int where = m_files.Index(fnOld.GetFullName());
    if(where == wxNOT_FOUND) {
        return false;
    }

    // a file with this name already exists
    if(fnNew.Exists()) {
        return false;
    }

    m_files.RemoveAt(where);
    m_files.Add(fnNew.GetFullName());
    m_files.Sort();

    // Step: 2
    // Notify the plugins, maybe they want to override the
    // default behavior (e.g. Subversion plugin)
    wxArrayString f;
    f.Add(fnOld.GetFullPath());
    f.Add(fnNew.GetFullPath());

    if(!::SendCmdEvent(wxEVT_FILE_RENAMED, (void*)&f)) {
        // rename the file on filesystem
        wxRenameFile(fnOld.GetFullPath(), fnNew.GetFullPath());
    }

    PHPEvent eventFileRenamed(wxEVT_PHP_FILE_RENAMED);
    eventFileRenamed.SetOldFilename(fnOld.GetFullPath());
    eventFileRenamed.SetFileName(fnNew.GetFullPath());
    EventNotifier::Get()->AddPendingEvent(eventFileRenamed);
    return true;
}