}
return newDoc;
}
- else
- return (wxDocument *) NULL;
+
+ return (wxDocument *) NULL;
}
wxView *wxDocManager::CreateView(wxDocument *doc, long flags)
wxString descrBuf = wxT("*.*");
#endif
- int FilterIndex = 0;
+ int FilterIndex = -1;
wxWindow* parent = wxFindSuitableParent();
0,
parent);
+ wxDocTemplate *theTemplate = (wxDocTemplate *)NULL;
if (!pathTmp.IsEmpty())
{
if (!wxFileExists(pathTmp))
path = pathTmp;
- // This is dodgy in that we're selecting the template on the
- // basis of the file extension, which may not be a standard
- // one. We really want to know exactly which template was
- // chosen by using a more advanced file selector.
- wxDocTemplate *theTemplate = FindTemplateForPath(path);
- if ( !theTemplate )
+ // first choose the template using the extension, if this fails (i.e.
+ // wxFileSelectorEx() didn't fill it), then use the path
+ if ( FilterIndex != -1 )
theTemplate = templates[FilterIndex];
-
- return theTemplate;
+ if ( !theTemplate )
+ theTemplate = FindTemplateForPath(path);
}
else
{
path = wxT("");
- return (wxDocTemplate *) NULL;
}
+
+ return theTemplate;
+
#if 0
// In all other windowing systems, until we have more advanced
// file selectors, we must select the document type (template) first, and
wxDocTemplate *wxDocManager::SelectDocumentType(wxDocTemplate **templates,
int noTemplates)
{
- wxChar **strings = new wxChar *[noTemplates];
- wxChar **data = new wxChar *[noTemplates];
+ wxArrayString strings;
+ wxDocTemplate **data = new wxDocTemplate *[noTemplates];
int i;
int n = 0;
for (i = 0; i < noTemplates; i++)
{
if (templates[i]->IsVisible())
{
- strings[n] = (wxChar *)templates[i]->m_description.c_str();
- data[n] = (wxChar *)templates[i];
+ strings.Add(templates[i]->m_description);
+ data[n] = templates[i];
n ++;
}
}
- if (n == 0)
- {
- delete[] strings;
- delete[] data;
- return (wxDocTemplate *) NULL;
- }
- else if (n == 1)
+
+ wxDocTemplate *theTemplate;
+
+ switch ( n )
{
- wxDocTemplate *temp = (wxDocTemplate *)data[0];
- delete[] strings;
- delete[] data;
- return temp;
- }
+ case 0:
+ // no visible templates, hence nothing to choose from
+ theTemplate = NULL;
+ break;
- wxWindow* parent = wxFindSuitableParent();
+ case 1:
+ // don't propose the user to choose if he heas no choice
+ theTemplate = data[0];
+ break;
+
+ default:
+ // propose the user to choose one of several
+ theTemplate = (wxDocTemplate *)wxGetSingleChoiceData
+ (
+ _("Select a document template"),
+ _("Templates"),
+ strings,
+ (void **)data,
+ wxFindSuitableParent()
+ );
+ }
- wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document template"), _("Templates"), n,
- strings, (void **)data, parent);
- delete[] strings;
delete[] data;
+
return theTemplate;
}
wxDocTemplate *wxDocManager::SelectViewType(wxDocTemplate **templates,
- int noTemplates)
+ int noTemplates)
{
- wxChar **strings = new wxChar *[noTemplates];
- wxChar **data = new wxChar *[noTemplates];
+ wxArrayString strings;
+ wxDocTemplate **data = new wxDocTemplate *[noTemplates];
int i;
int n = 0;
for (i = 0; i < noTemplates; i++)
{
- if (templates[i]->IsVisible() && (templates[i]->GetViewName() != wxT("")))
+ wxDocTemplate *templ = templates[i];
+ if ( templ->IsVisible() && !templ->GetViewName().empty() )
{
- strings[n] = (wxChar *)templates[i]->m_viewTypeName.c_str();
- data[n] = (wxChar *)templates[i];
+ strings.Add(templ->m_viewTypeName);
+ data[n] = templ;
n ++;
}
}
- wxWindow* parent = wxFindSuitableParent();
- wxDocTemplate *theTemplate = (wxDocTemplate *)wxGetSingleChoiceData(_("Select a document view"), _("Views"), n,
- strings, (void **)data, parent);
- delete[] strings;
+ wxDocTemplate *theTemplate;
+
+ // the same logic as above
+ switch ( n )
+ {
+ case 0:
+ theTemplate = (wxDocTemplate *)NULL;
+ break;
+
+ case 1:
+ theTemplate = data[0];
+ break;
+
+ default:
+ theTemplate = (wxDocTemplate *)wxGetSingleChoiceData
+ (
+ _("Select a document view"),
+ _("Views"),
+ strings,
+ (void **)data,
+ wxFindSuitableParent()
+ );
+
+ }
+
delete[] data;
return theTemplate;
}
void wxDocParentFrame::OnMRUFile(wxCommandEvent& event)
{
- int n = event.GetSelection() - wxID_FILE1; // the index in MRU list
+ int n = event.GetId() - wxID_FILE1; // the index in MRU list
wxString filename(m_docManager->GetHistoryFile(n));
if ( !filename.IsEmpty() )
{