}
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() )
{
m_maxNoCommands = maxCommands;
m_currentCommand = (wxNode *) NULL;
m_commandEditMenu = (wxMenu *) NULL;
+ m_undoAccelerator = wxT("\tCtrl+Z");
+ m_redoAccelerator = wxT("\tCtrl+Y");
}
wxCommandProcessor::~wxCommandProcessor()
if (commandName == wxT("")) commandName = _("Unnamed command");
bool canUndo = command->CanUndo();
if (canUndo)
- buf = wxString(_("&Undo ")) + commandName;
+ buf = wxString(_("&Undo ")) + commandName + m_undoAccelerator;
else
- buf = wxString(_("Can't &Undo ")) + commandName;
+ buf = wxString(_("Can't &Undo ")) + commandName + m_undoAccelerator;
m_commandEditMenu->SetLabel(wxID_UNDO, buf);
m_commandEditMenu->Enable(wxID_UNDO, canUndo);
wxCommand *redoCommand = (wxCommand *)m_currentCommand->Next()->Data();
wxString redoCommandName(redoCommand->GetName());
if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
- buf = wxString(_("&Redo ")) + redoCommandName;
+ buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
m_commandEditMenu->SetLabel(wxID_REDO, buf);
m_commandEditMenu->Enable(wxID_REDO, TRUE);
}
else
{
- m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo"));
+ m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo") + m_redoAccelerator);
m_commandEditMenu->Enable(wxID_REDO, FALSE);
}
}
else
{
- m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo"));
+ m_commandEditMenu->SetLabel(wxID_UNDO, _("&Undo") + m_undoAccelerator);
m_commandEditMenu->Enable(wxID_UNDO, FALSE);
if (m_commands.Number() == 0)
{
- m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo"));
+ m_commandEditMenu->SetLabel(wxID_REDO, _("&Redo") + m_redoAccelerator);
m_commandEditMenu->Enable(wxID_REDO, FALSE);
}
else
wxCommand *redoCommand = (wxCommand *)m_commands.First()->Data();
wxString redoCommandName(redoCommand->GetName());
if (redoCommandName == wxT("")) redoCommandName = _("Unnamed command");
- buf = wxString(_("&Redo ")) + redoCommandName;
+ buf = wxString(_("&Redo ")) + redoCommandName + m_redoAccelerator;
m_commandEditMenu->SetLabel(wxID_REDO, buf);
m_commandEditMenu->Enable(wxID_REDO, TRUE);
}
FILE *fd1;
int ch;
- if ((fd1 = wxFopen (filename.fn_str(), wxT("rb"))) == NULL)
+ if ((fd1 = wxFopen (filename, wxT("rb"))) == NULL)
return FALSE;
while ((ch = getc (fd1)) != EOF)
FILE *fd1;
char ch;
- if ((fd1 = wxFopen (filename.fn_str(), wxT("wb"))) == NULL)
+ if ((fd1 = wxFopen (filename, wxT("wb"))) == NULL)
{
return FALSE;
}