load/save from the menu
This commit is contained in:
parent
74da2a1c62
commit
ae82cf7306
@ -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;
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user