load/save from the menu

This commit is contained in:
Erik Faye-Lund 2008-02-19 02:13:41 +00:00
parent 74da2a1c62
commit ae82cf7306
3 changed files with 84 additions and 26 deletions

View File

@ -265,7 +265,6 @@ public:
bool load(const std::string &fileName); bool load(const std::string &fileName);
bool save(const std::string &fileName); bool save(const std::string &fileName);
SOCKET clientSocket; SOCKET clientSocket;
std::map<size_t, size_t> clientRemap; std::map<size_t, size_t> clientRemap;
bool clientPaused; bool clientPaused;

View File

@ -9,6 +9,7 @@
#include <windows.h> #include <windows.h>
#include <commctrl.h> #include <commctrl.h>
#include <objbase.h> #include <objbase.h>
#include <commdlg.h>
#include "trackview.h" #include "trackview.h"
#include <vector> #include <vector>
@ -17,6 +18,7 @@ const TCHAR *mainWindowClassName = _T("MainWindow");
TrackView *trackView; TrackView *trackView;
HWND trackViewWin; HWND trackViewWin;
HWND statusBarWin; HWND statusBarWin;
SyncDocument document;
#define WM_SETROWS (WM_USER+1) #define WM_SETROWS (WM_USER+1)
#define WM_BIASSELECTION (WM_USER+2) #define WM_BIASSELECTION (WM_USER+2)
@ -119,6 +121,67 @@ static LRESULT CALLBACK biasSelectionDialogProc(HWND hDlg, UINT message, WPARAM
return FALSE; return FALSE;
} }
char fileName[_MAX_FNAME + 1];
bool fileNameValid = false;
void fileNew()
{
// fileNameValid = false;
}
void fileOpen()
{
fileName[0] = '\0';
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = fileName;
ofn.nMaxFile = _MAX_FNAME;
ofn.lpstrDefExt = "rocket";
ofn.lpstrFilter = "ROCKET File (*.rocket)\0*.rocket\0All Files (*.*)\0*.*\0\0";
ofn.Flags = OFN_SHOWHELP;
if (GetOpenFileName(&ofn))
{
if (document.load(fileName))
{
fileNameValid = true;
InvalidateRect(trackViewWin, NULL, FALSE);
}
else MessageBox(trackViewWin, _T("failed to open file"), NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
}
}
void fileSaveAs()
{
fileName[0] = '\0';
OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFile = fileName;
ofn.nMaxFile = _MAX_FNAME;
ofn.lpstrDefExt = "rocket";
ofn.lpstrFilter = "ROCKET File (*.rocket)\0*.rocket\0All Files (*.*)\0*.*\0\0";
ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT;
if (GetSaveFileName(&ofn))
{
if (document.save(fileName)) fileNameValid = true;
else MessageBox(trackViewWin, _T("Failed to save file"), NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
}
}
void fileSave()
{
if (!fileNameValid) fileSaveAs();
else if (document.save(fileName))
{
MessageBox(trackViewWin, _T("Failed to save file"), NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
}
}
static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{ {
switch(msg) switch(msg)
@ -176,10 +239,16 @@ static LRESULT CALLBACK mainWindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
case WM_COMMAND: case WM_COMMAND:
switch (LOWORD(wParam)) switch (LOWORD(wParam))
{ {
case ID_FILE_SAVE:
case ID_FILE_SAVE_AS:
case ID_FILE_OPEN: case ID_FILE_OPEN:
MessageBox(trackViewWin, _T("Not implemented"), NULL, MB_OK | MB_ICONERROR | MB_SETFOREGROUND); fileOpen();
break;
case ID_FILE_SAVE_AS:
fileSaveAs();
break;
case ID_FILE_SAVE:
fileSave();
break; break;
case ID_FILE_EXIT: PostQuitMessage(0); break; case ID_FILE_EXIT: PostQuitMessage(0); break;
@ -283,8 +352,7 @@ int _tmain(int argc, _TCHAR* argv[])
} */ } */
#endif #endif
SyncDocument syncData; document.clientSocket = INVALID_SOCKET;
syncData.clientSocket = INVALID_SOCKET;
ATOM mainClass = registerMainWindowClass(hInstance); ATOM mainClass = registerMainWindowClass(hInstance);
ATOM trackViewClass = registerTrackViewWindowClass(hInstance); ATOM trackViewClass = registerTrackViewWindowClass(hInstance);
@ -295,7 +363,7 @@ int _tmain(int argc, _TCHAR* argv[])
} }
trackView = new TrackView(); trackView = new TrackView();
trackView->setDocument(&syncData); trackView->setDocument(&document);
HWND hwnd = CreateWindowEx( HWND hwnd = CreateWindowEx(
0, 0,
@ -342,10 +410,10 @@ int _tmain(int argc, _TCHAR* argv[])
if (INVALID_SOCKET != clientSocket) if (INVALID_SOCKET != clientSocket)
{ {
puts("connected."); puts("connected.");
syncData.clientSocket = clientSocket; document.clientSocket = clientSocket;
syncData.clientRemap.clear(); document.clientRemap.clear();
syncData.sendPauseCommand(true); document.sendPauseCommand(true);
syncData.sendSetRowCommand(trackView->getEditRow()); document.sendSetRowCommand(trackView->getEditRow());
} }
} }
} }
@ -361,8 +429,8 @@ int _tmain(int argc, _TCHAR* argv[])
{ {
closesocket(clientSocket); closesocket(clientSocket);
clientSocket = INVALID_SOCKET; clientSocket = INVALID_SOCKET;
syncData.clientSocket = INVALID_SOCKET; document.clientSocket = INVALID_SOCKET;
syncData.clientRemap.clear(); document.clientRemap.clear();
InvalidateRect(trackViewWin, NULL, FALSE); InvalidateRect(trackViewWin, NULL, FALSE);
break; break;
} }
@ -388,19 +456,19 @@ int _tmain(int argc, _TCHAR* argv[])
recv(clientSocket, &trackName[0], str_len, 0); recv(clientSocket, &trackName[0], str_len, 0);
// find track // find track
size_t serverIndex = syncData.getTrackIndex(trackName.c_str()); size_t serverIndex = document.getTrackIndex(trackName.c_str());
// setup remap // setup remap
syncData.clientRemap[serverIndex] = clientIndex; document.clientRemap[serverIndex] = clientIndex;
const sync::Track &track = *syncData.actualTracks[serverIndex]; const sync::Track &track = *document.actualTracks[serverIndex];
sync::Track::KeyFrameContainer::const_iterator it; sync::Track::KeyFrameContainer::const_iterator it;
for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it) for (it = track.keyFrames.begin(); it != track.keyFrames.end(); ++it)
{ {
int row = int(it->first); int row = int(it->first);
const sync::Track::KeyFrame &key = it->second; const sync::Track::KeyFrame &key = it->second;
syncData.sendSetKeyCommand(int(serverIndex), row, key); document.sendSetKeyCommand(int(serverIndex), row, key);
} }
InvalidateRect(trackViewWin, NULL, FALSE); InvalidateRect(trackViewWin, NULL, FALSE);

View File

@ -949,15 +949,6 @@ LRESULT TrackView::onChar(UINT keyCode, UINT flags)
case 'i': case 'i':
editToggleInterpolationType(); editToggleInterpolationType();
break; break;
case 's':
document->save("test.rocket");
document->sendSaveCommand();
break;
case 'l':
document->load("test.rocket");
break;
} }
return FALSE; return FALSE;
} }