+void
+wxGenericFileButton::DoSetInitialDirectory(wxFileDialog* dialog,
+ const wxString& dir)
+{
+ if ( m_path.find_first_of(wxFileName::GetPathSeparators()) ==
+ wxString::npos )
+ {
+ dialog->SetDirectory(dir);
+ }
+}
+
+wxDialog *wxGenericFileButton::CreateDialog()
+{
+ wxFileDialog* const dialog = new wxFileDialog
+ (
+ GetDialogParent(),
+ m_message,
+ wxEmptyString,
+ wxEmptyString,
+ m_wildcard,
+ GetDialogStyle()
+ );
+
+ // If there is no default file or if it doesn't have any path, use the
+ // explicitly set initial directory.
+ //
+ // Notice that it is important to call this before SetPath() below as if we
+ // do have m_initialDir and no directory in m_path, we need to interpret
+ // the path as being relative with respect to m_initialDir.
+ if ( !m_initialDir.empty() )
+ DoSetInitialDirectory(dialog, m_initialDir);
+
+ // This sets both the default file name and the default directory of the
+ // dialog if m_path contains directory part.
+ dialog->SetPath(m_path);
+
+ return dialog;
+}
+
+// ----------------------------------------------------------------------------
+// wxGenericDirButton
+// ----------------------------------------------------------------------------
+
+wxDialog *wxGenericDirButton::CreateDialog()
+{
+ wxDirDialog* const dialog = new wxDirDialog
+ (
+ GetDialogParent(),
+ m_message,
+ m_path.empty() ? m_initialDir : m_path,
+ GetDialogStyle()
+ );
+ return dialog;