X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a62da4c56f4bbfcd42ba85ba2a7b0dc6c5bc2af9..91dd52fe3ba8275366cf26a729f00a6a59d34855:/contrib/utils/wxrcedit/pe_adv.cpp diff --git a/contrib/utils/wxrcedit/pe_adv.cpp b/contrib/utils/wxrcedit/pe_adv.cpp index 415ea6e5c1..9c570d096b 100644 --- a/contrib/utils/wxrcedit/pe_adv.cpp +++ b/contrib/utils/wxrcedit/pe_adv.cpp @@ -96,7 +96,11 @@ void PropEditCtrlChoice::WriteValue() void PropEditCtrlChoice::OnChoice(wxCommandEvent& event) { - if (CanSave()) WriteValue(); + if (CanSave()) + { + WriteValue(); + EditorFrame::Get()->NotifyChanged(CHANGED_PROPS); + } } @@ -193,3 +197,66 @@ void PropEditCtrlFlags::OnDetails() } + + + + + + +wxString PropEditCtrlFile::GetFileTypes() +{ + return m_PropInfo->MoreInfo; +} + + + +void PropEditCtrlFile::OnDetails() +{ + wxString txt = m_TextCtrl->GetValue(); + txt = wxPathOnly(EditorFrame::Get()->GetFileName()) + _T("/") + txt; + wxString name = wxFileSelector(_("Choose file"), + wxPathOnly(txt), + wxFileNameFromPath(txt), + _T(""), + GetFileTypes(), + wxOPEN | wxFILE_MUST_EXIST); + if (!name) return; + + // compute relative path: + wxArrayString axrc, afile; + wxStringTokenizer tkn; + tkn.SetString(name, _T("/\\")); + while (tkn.HasMoreTokens()) afile.Add(tkn.GetNextToken()); + tkn.SetString(EditorFrame::Get()->GetFileName(), _T("/\\")); + while (tkn.HasMoreTokens()) axrc.Add(tkn.GetNextToken()); + + if (afile.GetCount() == 0 || axrc.GetCount() == 0) + txt = name; + else + { + while (axrc[0] == afile[0]) + { + afile.Remove(0u); + axrc.Remove(0u); + } + size_t i; + txt.Empty(); + for (i = 0; i < axrc.GetCount()-1/*w/o filename*/; i++) txt << _T("../"); + for (i = 0; i < afile.GetCount(); i++) txt << afile[i] << _T("/"); + txt.RemoveLast(); + } + + m_TextCtrl->SetValue(txt); + WriteValue(); +} + + + +wxString PropEditCtrlImageFile::GetFileTypes() +{ + return _("GIF files (*.gif)|*.gif|" + "JPEG files (*.jpg)|*.jpg|" + "PNG files (*.png)|*.png|" + "BMP files (*.bmp)|*.bmp|" + "All files (*)|*"); +}