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);
}