summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinWX/Src/FrameTools.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DolphinWX/Src/FrameTools.cpp')
-rw-r--r--Source/Core/DolphinWX/Src/FrameTools.cpp76
1 files changed, 65 insertions, 11 deletions
diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp
index d7cda0e5dd..da76aed608 100644
--- a/Source/Core/DolphinWX/Src/FrameTools.cpp
+++ b/Source/Core/DolphinWX/Src/FrameTools.cpp
@@ -139,11 +139,20 @@ void CFrame::CreateMenu()
emulationMenu->AppendSeparator();
wxMenu *saveMenu = new wxMenu;
wxMenu *loadMenu = new wxMenu;
- m_pSubMenuLoad = emulationMenu->AppendSubMenu(saveMenu, _T("&Load State"));
- m_pSubMenuSave = emulationMenu->AppendSubMenu(loadMenu, _T("Sa&ve State"));
+ m_pSubMenuLoad = emulationMenu->AppendSubMenu(loadMenu, _T("&Load State"));
+ m_pSubMenuSave = emulationMenu->AppendSubMenu(saveMenu, _T("Sa&ve State"));
+
+ saveMenu->Append(IDM_SAVESTATEFILE, _T("Save State..."));
+ saveMenu->AppendSeparator();
+
+ loadMenu->Append(IDM_LOADSTATEFILE, _T("Load State..."));
+ loadMenu->Append(IDM_LOADLASTSTATE, _T("Last Saved State\tF11"));
+ loadMenu->Append(IDM_UNDOSTATE, _T("Last Overwritten State\tF12"));
+ loadMenu->AppendSeparator();
+
for (int i = 1; i < 10; i++) {
- saveMenu->Append(IDM_LOADSLOT1 + i - 1, wxString::Format(_T("Slot %i\tF%i"), i, i));
- loadMenu->Append(IDM_SAVESLOT1 + i - 1, wxString::Format(_T("Slot %i\tShift+F%i"), i, i));
+ loadMenu->Append(IDM_LOADSLOT1 + i - 1, wxString::Format(_T("Slot %i\tF%i"), i, i));
+ saveMenu->Append(IDM_SAVESLOT1 + i - 1, wxString::Format(_T("Slot %i\tShift+F%i"), i, i));
}
menuBar->Append(emulationMenu, _T("&Emulation"));
@@ -717,6 +726,52 @@ void CFrame::OnToggleSkipIdle(wxCommandEvent& WXUNUSED (event))
SConfig::GetInstance().SaveSettings();
}
+void CFrame::OnLoadStateFromFile(wxCommandEvent& WXUNUSED (event))
+{
+ wxString path = wxFileSelector(
+ _T("Select the state to load"),
+ wxEmptyString, wxEmptyString, wxEmptyString,
+ wxString::Format
+ (
+ _T("All Save States (sav, s##)|*.sav;*.s??|All files (%s)|%s"),
+ wxFileSelectorDefaultWildcardStr,
+ wxFileSelectorDefaultWildcardStr
+ ),
+ wxFD_OPEN | wxFD_PREVIEW | wxFD_FILE_MUST_EXIST,
+ this);
+
+ if(path)
+ State_LoadAs(path.ToAscii());
+}
+
+void CFrame::OnSaveStateToFile(wxCommandEvent& WXUNUSED (event))
+{
+ wxString path = wxFileSelector(
+ _T("Select the state to save"),
+ wxEmptyString, wxEmptyString, wxEmptyString,
+ wxString::Format
+ (
+ _T("All Save States (sav, s##)|*.sav;*.s??|All files (%s)|%s"),
+ wxFileSelectorDefaultWildcardStr,
+ wxFileSelectorDefaultWildcardStr
+ ),
+ wxFD_SAVE,
+ this);
+
+ if(path)
+ State_SaveAs(path.ToAscii());
+}
+
+void CFrame::OnLoadLastState(wxCommandEvent& WXUNUSED (event))
+{
+ State_LoadLastSaved();
+}
+
+void CFrame::OnUndoState(wxCommandEvent& WXUNUSED (event))
+{
+ State_LoadAs(FULL_STATESAVES_DIR "lastState.sav");
+}
+
void CFrame::OnLoadState(wxCommandEvent& event)
{
int id = event.GetId();
@@ -724,13 +779,6 @@ void CFrame::OnLoadState(wxCommandEvent& event)
State_Load(slot);
}
-void CFrame::OnResize(wxSizeEvent& event)
-{
- FitInside();
- DoMoveIcons(); // In FrameWiimote.cpp
- event.Skip();
-}
-
void CFrame::OnSaveState(wxCommandEvent& event)
{
int id = event.GetId();
@@ -738,6 +786,12 @@ void CFrame::OnSaveState(wxCommandEvent& event)
State_Save(slot);
}
+void CFrame::OnResize(wxSizeEvent& event)
+{
+ FitInside();
+ DoMoveIcons(); // In FrameWiimote.cpp
+ event.Skip();
+}
// Enable and disable the toolbar
void CFrame::OnToggleToolbar(wxCommandEvent& event)