mirror of
https://gitlab.com/pholy/OSCAR-code.git
synced 2025-04-05 02:30:44 +00:00
MachineLoader Data Version PURGE Dialogs. Warning: This added file deletion code. Needs Reviewing.
This commit is contained in:
parent
c416f07771
commit
22f1d127e4
@ -8210,12 +8210,12 @@
|
||||
"wx/treebase.h"
|
||||
"wx/hashmap.h"
|
||||
|
||||
1307521170 source:/home/mark/projects/git/sleepyhead/src/GUIFrame.cpp
|
||||
1307618682 source:/home/mark/projects/git/sleepyhead/src/GUIFrame.cpp
|
||||
"wx/wxprec.h"
|
||||
<wx/wx.h>
|
||||
"GUIFrame.h"
|
||||
|
||||
1307470075 /home/mark/projects/git/sleepyhead/src/GUIFrame.h
|
||||
1307618682 /home/mark/projects/git/sleepyhead/src/GUIFrame.h
|
||||
<wx/intl.h>
|
||||
<wx/string.h>
|
||||
<wx/bitmap.h>
|
||||
@ -8258,7 +8258,7 @@
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/SleepyHeadApp.h
|
||||
<wx/app.h>
|
||||
|
||||
1307477974 /home/mark/projects/git/sleepyhead/src/SleepyHeadMain.h
|
||||
1307618623 /home/mark/projects/git/sleepyhead/src/SleepyHeadMain.h
|
||||
<wx/listbox.h>
|
||||
<wx/treectrl.h>
|
||||
"SleepyHeadApp.h"
|
||||
@ -8266,7 +8266,7 @@
|
||||
"sleeplib/machine.h"
|
||||
"graphs/graph.h"
|
||||
|
||||
1307479645 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine.h
|
||||
1307624470 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine.h
|
||||
<wx/string.h>
|
||||
<wx/variant.h>
|
||||
<wx/dir.h>
|
||||
@ -8304,24 +8304,25 @@
|
||||
<sleeplib/machine.h>
|
||||
<list>
|
||||
|
||||
1307616952 /home/mark/projects/git/sleepyhead/src/version.h
|
||||
1307627183 /home/mark/projects/git/sleepyhead/src/version.h
|
||||
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/prs1_loader.h
|
||||
1307623481 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/prs1_loader.h
|
||||
"machine.h"
|
||||
"machine_loader.h"
|
||||
"profiles.h"
|
||||
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine_loader.h
|
||||
1307620763 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine_loader.h
|
||||
"profiles.h"
|
||||
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/profiles.h
|
||||
1307620828 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/profiles.h
|
||||
<wx/string.h>
|
||||
<map>
|
||||
"machine.h"
|
||||
"machine_loader.h"
|
||||
"preferences.h"
|
||||
"tinyxml/tinyxml.h"
|
||||
|
||||
1307615758 source:/home/mark/projects/git/sleepyhead/src/SleepyHeadMain.cpp
|
||||
1307627009 source:/home/mark/projects/git/sleepyhead/src/SleepyHeadMain.cpp
|
||||
"wx_pch.h"
|
||||
"version.h"
|
||||
<wx/app.h>
|
||||
@ -8341,14 +8342,14 @@
|
||||
"sleeplib/profiles.h"
|
||||
"sleeplib/machine_loader.h"
|
||||
|
||||
1307615111 source:/home/mark/projects/git/sleepyhead/src/graphs/graph.cpp
|
||||
1307618429 source:/home/mark/projects/git/sleepyhead/src/graphs/graph.cpp
|
||||
<wx/settings.h>
|
||||
<wx/dcbuffer.h>
|
||||
<wx/log.h>
|
||||
"graph.h"
|
||||
"sleeplib/profiles.h"
|
||||
|
||||
1307418393 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/binary_file.cpp
|
||||
1307623396 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/binary_file.cpp
|
||||
<wx/filename.h>
|
||||
"binary_file.h"
|
||||
|
||||
@ -8356,11 +8357,12 @@
|
||||
<wx/ffile.h>
|
||||
<wx/utils.h>
|
||||
|
||||
1307529366 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine.cpp
|
||||
1307626196 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/machine.cpp
|
||||
<tr1/random>
|
||||
<wx/colour.h>
|
||||
<wx/log.h>
|
||||
<wx/progdlg.h>
|
||||
<wx/msgdlg.h>
|
||||
"binary_file.h"
|
||||
"machine.h"
|
||||
"profiles.h"
|
||||
@ -8377,19 +8379,20 @@
|
||||
<wx/stdpaths.h>
|
||||
"preferences.h"
|
||||
|
||||
1307527050 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/profiles.cpp
|
||||
1307626707 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/profiles.cpp
|
||||
<wx/filefn.h>
|
||||
<wx/filename.h>
|
||||
<wx/utils.h>
|
||||
<wx/dir.h>
|
||||
<wx/log.h>
|
||||
<wx/msgdlg.h>
|
||||
"preferences.h"
|
||||
"profiles.h"
|
||||
"machine.h"
|
||||
"machine_loader.h"
|
||||
"tinyxml/tinyxml.h"
|
||||
|
||||
1307585840 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/prs1_loader.cpp
|
||||
1307622945 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/prs1_loader.cpp
|
||||
<wx/dir.h>
|
||||
<wx/filename.h>
|
||||
<wx/ffile.h>
|
||||
@ -8419,19 +8422,19 @@
|
||||
"tinyxml.h"
|
||||
<windows.h>
|
||||
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/cms50_loader.h
|
||||
1307620082 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/cms50_loader.h
|
||||
"sleeplib/machine_loader.h"
|
||||
|
||||
1307529283 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/cms50_loader.cpp
|
||||
1307620453 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/cms50_loader.cpp
|
||||
<wx/log.h>
|
||||
<wx/progdlg.h>
|
||||
"cms50_loader.h"
|
||||
"sleeplib/machine.h"
|
||||
|
||||
1307418393 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/zeo_loader.h
|
||||
1307620144 /home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/zeo_loader.h
|
||||
"sleeplib/machine_loader.h"
|
||||
|
||||
1307418393 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/zeo_loader.cpp
|
||||
1307620439 source:/home/mark/projects/git/sleepyhead/src/libs/sleeplib/loader_plugins/zeo_loader.cpp
|
||||
<wx/log.h>
|
||||
"zeo_loader.h"
|
||||
"sleeplib/machine.h"
|
||||
|
@ -58,6 +58,9 @@ GUIFrame::GUIFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
|
||||
ViewMenuSerial = new wxMenuItem( ViewMenu, wxID_ANY, wxString( _("Show Serial Numbers") ) , wxEmptyString, wxITEM_CHECK );
|
||||
ViewMenu->Append( ViewMenuSerial );
|
||||
|
||||
ViewMenuLinkGraph = new wxMenuItem( ViewMenu, wxID_ANY, wxString( _("Link Graph Movement") ) , wxEmptyString, wxITEM_CHECK );
|
||||
ViewMenu->Append( ViewMenuLinkGraph );
|
||||
|
||||
ViewMenuFruitsalad = new wxMenuItem( ViewMenu, wxID_ANY, wxString( _("Fruit Salad") ) , wxEmptyString, wxITEM_CHECK );
|
||||
ViewMenu->Append( ViewMenuFruitsalad );
|
||||
|
||||
@ -105,6 +108,7 @@ GUIFrame::GUIFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
|
||||
this->Connect( ViewMenuSummary->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnViewMenuSummary ) );
|
||||
this->Connect( ViewMenuDaily->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnViewMenuDaily ) );
|
||||
this->Connect( ViewMenuSerial->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnShowSerial ) );
|
||||
this->Connect( ViewMenuLinkGraph->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnLinkGraphs ) );
|
||||
this->Connect( ViewMenuFruitsalad->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnFruitsalad ) );
|
||||
this->Connect( ViewMenuFullscreen->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnFullscreen ) );
|
||||
this->Connect( ToolsMenuScreenshot->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnScreenshot ) );
|
||||
@ -121,6 +125,7 @@ GUIFrame::~GUIFrame()
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnViewMenuSummary ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnViewMenuDaily ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnShowSerial ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnLinkGraphs ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnFruitsalad ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnFullscreen ) );
|
||||
this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( GUIFrame::OnScreenshot ) );
|
||||
|
@ -48,6 +48,7 @@ class GUIFrame : public wxFrame
|
||||
wxMenu* FileMenu;
|
||||
wxMenu* ViewMenu;
|
||||
wxMenuItem* ViewMenuSerial;
|
||||
wxMenuItem* ViewMenuLinkGraph;
|
||||
wxMenuItem* ViewMenuFruitsalad;
|
||||
wxMenu* ProfileMenu;
|
||||
wxMenu* ToolsMenu;
|
||||
@ -62,6 +63,7 @@ class GUIFrame : public wxFrame
|
||||
virtual void OnViewMenuSummary( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnViewMenuDaily( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnShowSerial( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnLinkGraphs( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnFruitsalad( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnFullscreen( wxCommandEvent& event ) { event.Skip(); }
|
||||
virtual void OnScreenshot( wxCommandEvent& event ) { event.Skip(); }
|
||||
|
@ -66,6 +66,7 @@ wxString wxbuildinfo(wxbuildinfoformat format)
|
||||
return wxbuild;
|
||||
}
|
||||
|
||||
const long profile_version=0;
|
||||
|
||||
SleepyHeadFrame::SleepyHeadFrame(wxFrame *frame)
|
||||
: GUIFrame(frame)
|
||||
@ -83,10 +84,22 @@ SleepyHeadFrame::SleepyHeadFrame(wxFrame *frame)
|
||||
|
||||
if (!pref.Exists("ShowSerialNumbers")) pref["ShowSerialNumbers"]=false;
|
||||
if (!pref.Exists("fruitsalad")) pref["fruitsalad"]=true;
|
||||
if (!pref.Exists("LinkGraphMovement")) pref["LinkGraphMovement"]=true;
|
||||
if (!pref.Exists("ProfileVersion")) pref["ProfileVersion"]=(long)0;
|
||||
|
||||
if (pref["ProfileVersion"].GetInteger()<profile_version) {
|
||||
if (wxMessageBox(title+wxT("\n\nChanges have been made that require the profiles database to be recreated\n\nWould you like to do this right now?"),wxT("Profile Database Changes"),wxYES_NO,this)==wxYES) {
|
||||
// Delete all machines from memory.
|
||||
pref["ProfileVersion"]=profile_version;
|
||||
|
||||
|
||||
// assert(1==0);
|
||||
}
|
||||
}
|
||||
|
||||
ViewMenuSerial->Check(pref["ShowSerialNumbers"]);
|
||||
ViewMenuFruitsalad->Check(pref["fruitsalad"]);
|
||||
|
||||
ViewMenuLinkGraph->Check(pref["LinkGraphMovement"]);
|
||||
|
||||
// wxDisableAsserts();
|
||||
|
||||
@ -244,6 +257,10 @@ void SleepyHeadFrame::DoScreenshot( wxCommandEvent &event )
|
||||
}
|
||||
#endif
|
||||
}
|
||||
void SleepyHeadFrame::OnLinkGraphs( wxCommandEvent& event )
|
||||
{
|
||||
pref["LinkGraphMovement"]=event.IsChecked();
|
||||
}
|
||||
void SleepyHeadFrame::OnShowSerial(wxCommandEvent& event)
|
||||
{
|
||||
pref["ShowSerialNumbers"]=event.IsChecked();
|
||||
@ -647,7 +664,7 @@ Daily::Daily(wxWindow *win,Profile *p)
|
||||
LEAK->AddLayer(new gXAxis(wxBLACK));
|
||||
LEAK->AddLayer(new gYAxis(wxBLACK));
|
||||
LEAK->AddLayer(new gFooBar());
|
||||
LEAK->AddLayer(new gLineChart(leakdata,wxPURPLE,4096,false,false,false));
|
||||
LEAK->AddLayer(new gLineChart(leakdata,wxPURPLE,4096,false,false,true));
|
||||
|
||||
AddCPAPData(pressure_iap=new EventData(CPAP_IAP));
|
||||
AddCPAPData(pressure_eap=new EventData(CPAP_EAP));
|
||||
@ -695,16 +712,29 @@ Daily::Daily(wxWindow *win,Profile *p)
|
||||
SF=new gGraphWindow(ScrolledWindow,-1,wxT("Event Flags"),wxPoint(0,0), wxSize(600,180), wxNO_BORDER);
|
||||
// SF->SetMargins(10,15,20,80);
|
||||
|
||||
SF->LinkZoom(FRW);
|
||||
// #if defined(__UNIX__)
|
||||
FRW->LinkZoom(SF);
|
||||
#if defined(__UNIX__)
|
||||
FRW->LinkZoom(PRD);
|
||||
FRW->LinkZoom(LEAK);
|
||||
FRW->LinkZoom(SNORE);
|
||||
SF->LinkZoom(FRW);
|
||||
SF->LinkZoom(PRD); // Uncomment to link in more graphs.. Too slow on windows.
|
||||
SF->LinkZoom(LEAK);
|
||||
SF->LinkZoom(SNORE);
|
||||
#endif
|
||||
PRD->LinkZoom(SF);
|
||||
PRD->LinkZoom(FRW);
|
||||
PRD->LinkZoom(LEAK);
|
||||
PRD->LinkZoom(SNORE);
|
||||
LEAK->LinkZoom(SF);
|
||||
LEAK->LinkZoom(FRW);
|
||||
LEAK->LinkZoom(PRD);
|
||||
LEAK->LinkZoom(SNORE);
|
||||
SNORE->LinkZoom(SF);
|
||||
SNORE->LinkZoom(FRW);
|
||||
SNORE->LinkZoom(PRD);
|
||||
SNORE->LinkZoom(LEAK);
|
||||
|
||||
// #endif
|
||||
|
||||
const int sfc=9;
|
||||
|
||||
|
@ -110,6 +110,7 @@ class SleepyHeadFrame: public GUIFrame
|
||||
virtual void OnShowSerial(wxCommandEvent& event);
|
||||
virtual void OnProfileSelected(wxCommandEvent& event);
|
||||
virtual void OnFruitsalad(wxCommandEvent& event);
|
||||
virtual void OnLinkGraphs( wxCommandEvent& event );
|
||||
|
||||
|
||||
virtual void UpdateProfiles();
|
||||
|
@ -305,6 +305,21 @@
|
||||
<event name="OnMenuSelection">OnShowSerial</event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="help"></property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="kind">wxITEM_CHECK</property>
|
||||
<property name="label">Link Graph Movement</property>
|
||||
<property name="name">ViewMenuLinkGraph</property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="shortcut"></property>
|
||||
<property name="unchecked_bitmap"></property>
|
||||
<event name="OnMenuSelection">OnLinkGraphs</event>
|
||||
<event name="OnUpdateUI"></event>
|
||||
</object>
|
||||
<object class="wxMenuItem" expanded="1">
|
||||
<property name="bitmap"></property>
|
||||
<property name="checked">0</property>
|
||||
|
@ -380,11 +380,22 @@ void gGraphWindow::OnMouseMove(wxMouseEvent &event)
|
||||
}
|
||||
m_foobar_moved+=fabs((qx-minx))+fabs((m_mouseLClick.x-x))+fabs((m_mouseLClick.y-y));
|
||||
SetXBounds(qx,ex);
|
||||
|
||||
if (pref["LinkGraphMovement"]) {
|
||||
for (list<gGraphWindow *>::iterator g=link_zoom.begin();g!=link_zoom.end();g++) {
|
||||
(*g)->SetXBounds(qx,ex);
|
||||
}
|
||||
}
|
||||
} else
|
||||
if (event.m_rightDown) {
|
||||
MoveX(event.GetX() - m_mouseRClick.x);
|
||||
m_mouseRClick.x=event.GetX();
|
||||
double min=MinX();
|
||||
double max=MaxX();
|
||||
if (pref["LinkGraphMovement"]) {
|
||||
for (list<gGraphWindow *>::iterator g=link_zoom.begin();g!=link_zoom.end();g++) {
|
||||
(*g)->SetXBounds(min,max);
|
||||
}
|
||||
}
|
||||
} else
|
||||
if (event.m_leftDown) {
|
||||
|
||||
@ -530,24 +541,20 @@ void gGraphWindow::OnMouseLeftRelease(wxMouseEvent &event)
|
||||
}
|
||||
}
|
||||
|
||||
if (!did_draw && !zoom_in && m_mouseLDown) { // && !m_drag_foobar) {
|
||||
if (!did_draw && !zoom_in && m_mouseLDown) {
|
||||
wxPoint release(event.GetX(), m_scrY-m_marginBottom);
|
||||
wxPoint press(m_mouseLClick.x, m_marginTop);
|
||||
int x1=m_mouseRBrect.x;
|
||||
int x2=x1+m_mouseRBrect.width;
|
||||
int t1=MIN(x1,x2);
|
||||
int t2=MAX(x1,x2);
|
||||
|
||||
//if (m_mouseLDown && !m_drag_foobar) { //hot1.Contains(x,y) &&
|
||||
int t1=MIN(x1,x2);
|
||||
int t2=MAX(x1,x2);
|
||||
if ((t2-t1)>4) {
|
||||
// Range Selected
|
||||
ZoomXPixels(t1,t2);
|
||||
did_draw=true;
|
||||
}
|
||||
|
||||
if ((t2-t1)>4) {
|
||||
// Range Selected
|
||||
ZoomXPixels(t1,t2);
|
||||
did_draw=true;
|
||||
}
|
||||
|
||||
//}
|
||||
//goto end;
|
||||
}
|
||||
|
||||
|
||||
@ -563,7 +570,6 @@ void gGraphWindow::OnMouseLeftRelease(wxMouseEvent &event)
|
||||
ZoomX(zoom_fact,xp); //event.GetX()); // adds origin to zoom in.. Doesn't look that cool.
|
||||
}
|
||||
did_draw=true;
|
||||
//goto end;
|
||||
}
|
||||
|
||||
m_drag_foobar=false;
|
||||
@ -574,7 +580,14 @@ void gGraphWindow::OnMouseLeftRelease(wxMouseEvent &event)
|
||||
if (!did_draw) { // Should never happen.
|
||||
if (r!=m_mouseRBrect)
|
||||
Refresh();
|
||||
//} else { // Update any linked graphs..
|
||||
}
|
||||
double min=MinX();
|
||||
double max=MaxX();
|
||||
for (list<gGraphWindow *>::iterator g=link_zoom.begin();g!=link_zoom.end();g++) {
|
||||
(*g)->SetXBounds(min,max);
|
||||
}
|
||||
//}
|
||||
LastGraphLDown=NULL;
|
||||
event.Skip();
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ bool BinaryFile::Open(wxString filename,BFOpenMode mode)
|
||||
if (wxFileExists(filename)) {
|
||||
if (mode==BF_WRITE) {
|
||||
// hmm.. file exists. unsure of best course of action here..
|
||||
return false;
|
||||
// return false;
|
||||
}
|
||||
size=wxFileName::GetSize(filename).GetLo();
|
||||
}
|
||||
|
@ -5,6 +5,13 @@ Author: Mark Watkins <jedimark64@users.sourceforge.net>
|
||||
License: GPL
|
||||
*/
|
||||
|
||||
//********************************************************************************************
|
||||
/// IMPORTANT!!!
|
||||
//********************************************************************************************
|
||||
// Please INCREMENT the cms50_data_version in cms50_loader.h when making changes to this loader
|
||||
// that change loader behaviour or modify channels.
|
||||
//********************************************************************************************
|
||||
|
||||
#include <wx/log.h>
|
||||
#include <wx/progdlg.h>
|
||||
#include "cms50_loader.h"
|
||||
@ -249,7 +256,7 @@ Machine *CMS50Loader::CreateMachine(Profile *profile)
|
||||
vector<Machine *> ml=profile->GetMachines(MT_OXIMETER);
|
||||
|
||||
for (vector<Machine *>::iterator i=ml.begin(); i!=ml.end(); i++) {
|
||||
if ((*i)->GetClass()==wxT("CMS50")) {
|
||||
if ((*i)->GetClass()==cms50_class_name) {
|
||||
return (*i);
|
||||
break;
|
||||
}
|
||||
@ -258,10 +265,10 @@ Machine *CMS50Loader::CreateMachine(Profile *profile)
|
||||
wxLogDebug(wxT("Create CMS50 Machine Record"));
|
||||
|
||||
Machine *m=new Oximeter(profile,0);
|
||||
m->SetClass(wxT("CMS50"));
|
||||
m->SetClass(cms50_class_name);
|
||||
m->properties[wxT("Brand")]=wxT("Contec");
|
||||
m->properties[wxT("Model")]=wxT("CMS50X");
|
||||
|
||||
m->properties[wxT("DataVersion")]=wxString::Format("%li",cms50_data_version);
|
||||
profile->AddMachine(m);
|
||||
|
||||
return m;
|
||||
|
@ -10,17 +10,25 @@ License: GPL
|
||||
|
||||
#include "sleeplib/machine_loader.h"
|
||||
|
||||
const wxString cms50_class_name=wxT("CMS50");
|
||||
const int cms50_data_version=1;
|
||||
|
||||
class CMS50Loader : public MachineLoader
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
CMS50Loader();
|
||||
virtual ~CMS50Loader();
|
||||
virtual bool Open(wxString & path,Profile *profile);
|
||||
static void Register();
|
||||
|
||||
virtual int Version() { return cms50_data_version; };
|
||||
virtual const wxString & ClassName() { return cms50_class_name; };
|
||||
|
||||
Machine *CreateMachine(Profile *profile);
|
||||
|
||||
|
||||
protected:
|
||||
bool OpenCMS50(wxString & path, Profile *profile);
|
||||
bool OpenSPORFile(wxString path, Machine * machine,Profile *profile);
|
||||
|
@ -5,6 +5,14 @@ Author: Mark Watkins <jedimark64@users.sourceforge.net>
|
||||
License: GPL
|
||||
*/
|
||||
|
||||
//********************************************************************************************
|
||||
/// IMPORTANT!!!
|
||||
//********************************************************************************************
|
||||
// Please INCREMENT the zeo_data_version in zel_loader.h when making changes to this loader
|
||||
// that change loader behaviour or modify channels.
|
||||
//********************************************************************************************
|
||||
|
||||
|
||||
#include <wx/log.h>
|
||||
#include "zeo_loader.h"
|
||||
#include "sleeplib/machine.h"
|
||||
@ -37,7 +45,7 @@ Machine *ZEOLoader::CreateMachine(Profile *profile)
|
||||
vector<Machine *> ml=profile->GetMachines(MT_SLEEPSTAGE);
|
||||
|
||||
for (vector<Machine *>::iterator i=ml.begin(); i!=ml.end(); i++) {
|
||||
if ((*i)->GetClass()==wxT("ZEO")) {
|
||||
if ((*i)->GetClass()==zeo_class_name) {
|
||||
return (*i);
|
||||
break;
|
||||
}
|
||||
@ -46,9 +54,10 @@ Machine *ZEOLoader::CreateMachine(Profile *profile)
|
||||
wxLogDebug(wxT("Create ZEO Machine Record"));
|
||||
|
||||
Machine *m=new SleepStage(profile,0);
|
||||
m->SetClass(wxT("ZEO"));
|
||||
m->SetClass(zeo_class_name);
|
||||
m->properties[wxT("Brand")]=wxT("ZEO");
|
||||
m->properties[wxT("Model")]=wxT("Personal Sleep Coach");
|
||||
m->properties[wxT("DataVersion")]=wxString::Format("%li",zeo_data_version);
|
||||
|
||||
profile->AddMachine(m);
|
||||
|
||||
|
@ -10,6 +10,9 @@ License: GPL
|
||||
|
||||
#include "sleeplib/machine_loader.h"
|
||||
|
||||
const wxString zeo_class_name=wxT("CMS50");
|
||||
const int zeo_data_version=1;
|
||||
|
||||
|
||||
class ZEOLoader : public MachineLoader
|
||||
{
|
||||
@ -19,6 +22,10 @@ class ZEOLoader : public MachineLoader
|
||||
virtual bool Open(wxString & path,Profile *profile);
|
||||
static void Register();
|
||||
|
||||
virtual int Version() { return zeo_data_version; };
|
||||
virtual const wxString & ClassName() { return zeo_class_name; };
|
||||
|
||||
|
||||
Machine *CreateMachine(Profile *profile);
|
||||
|
||||
protected:
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include <wx/colour.h>
|
||||
#include <wx/log.h>
|
||||
#include <wx/progdlg.h>
|
||||
#include <wx/msgdlg.h>
|
||||
#include "binary_file.h"
|
||||
#include "machine.h"
|
||||
#include "profiles.h"
|
||||
@ -273,6 +274,45 @@ Day *Machine::AddSession(Session *s,Profile *p)
|
||||
return day[date];
|
||||
}
|
||||
|
||||
// This functions purpose is murder and mayhem... It deletes all of a machines data.
|
||||
// Therefore this is the most dangerous function in this software..
|
||||
bool Machine::Purge(int secret)
|
||||
{
|
||||
// Boring api key to stop this function getting called by accident :)
|
||||
if (secret!=3478216) return false;
|
||||
|
||||
|
||||
// It would be joyous if this function screwed up..
|
||||
wxString path=profile->Get("DataFolder")+wxFileName::GetPathSeparator()+hexid();
|
||||
|
||||
wxDir dir;
|
||||
wxLogDebug(wxT("Purging ")+path);
|
||||
dir.Open(path);
|
||||
if (!dir.IsOpened()) return false;
|
||||
|
||||
wxString filename;
|
||||
bool cont=dir.GetFirst(&filename);
|
||||
|
||||
int could_not_kill=0;
|
||||
while (cont) {
|
||||
// KILL KILL KILL..
|
||||
wxString fullpath=path+wxFileName::GetPathSeparator()+filename;
|
||||
wxString ext_s=filename.AfterLast(wxChar('.'));
|
||||
long ext;
|
||||
// But only files with numerical extensions.
|
||||
if (ext_s.ToLong(&ext)) {
|
||||
if (!wxRemoveFile(fullpath)) could_not_kill++;
|
||||
}
|
||||
|
||||
cont=dir.GetNext(&filename);
|
||||
}
|
||||
if (could_not_kill>0) {
|
||||
wxMessageBox(wxT("Could not purge path\n")+path+wxT("\n\n")+wxString::Format(wxT("%i"),could_not_kill)+wxT(" file(s) remain.. Suggest manually deleting this path"),wxT("Purge Error"),wxOK,NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
bool Machine::Load()
|
||||
{
|
||||
wxString path=profile->Get("DataFolder")+wxFileName::GetPathSeparator()+hexid();
|
||||
|
@ -162,6 +162,7 @@ public:
|
||||
|
||||
bool Load();
|
||||
bool Save();
|
||||
bool Purge(int secret);
|
||||
|
||||
map<wxDateTime,Day *> day;
|
||||
map<SessionID,Session *> sessionlist;
|
||||
|
@ -16,7 +16,10 @@ class MachineLoader
|
||||
public:
|
||||
MachineLoader();
|
||||
virtual ~MachineLoader();
|
||||
virtual bool Open(wxString &,Profile *profile)=0;
|
||||
virtual bool Open(wxString &,Profile *profile){};
|
||||
virtual int Version(){};
|
||||
virtual const wxString & ClassName(){};
|
||||
|
||||
};
|
||||
|
||||
void RegisterLoader(MachineLoader *loader);
|
||||
|
@ -11,6 +11,7 @@ License: GPL
|
||||
#include <wx/utils.h>
|
||||
#include <wx/dir.h>
|
||||
#include <wx/log.h>
|
||||
#include <wx/msgdlg.h>
|
||||
|
||||
#include "preferences.h"
|
||||
#include "profiles.h"
|
||||
@ -53,7 +54,30 @@ Profile::~Profile()
|
||||
void Profile::LoadMachineData()
|
||||
{
|
||||
for (map<MachineID,Machine *>::iterator i=machlist.begin(); i!=machlist.end(); i++) {
|
||||
i->second->Load();
|
||||
Machine *m=i->second;
|
||||
|
||||
MachineLoader *loader=GetLoader(m->GetClass());
|
||||
if (loader) {
|
||||
long v=loader->Version();
|
||||
long cv=0;
|
||||
if (m->properties.find(wxT("DataVersion"))==m->properties.end())
|
||||
m->properties[wxT("DataVersion")]=wxString::Format("%i",0);
|
||||
m->properties["DataVersion"].ToLong(&cv);
|
||||
if (cv<v) {
|
||||
wxString msg=wxT("Software changes have been made that require the reimporting of the following machines data:\n\n");
|
||||
msg=msg+m->properties[wxT("Brand")]+wxT(" ")+m->properties[wxT("Model")]+wxT(" ")+m->properties[wxT("Serial")];
|
||||
msg=msg+wxT("\n\nNo attempt will be made to load previous data.\n\n");
|
||||
msg=msg+wxT("Importing ALL of your data for this machine again will rectify this problem.\n\n");
|
||||
msg=msg+wxT("However, if you have more than one seperate datacard/stash for this machine, it would be best if the machine data was purged first.\n\nWould you like me to do this for you?");
|
||||
|
||||
if (wxMessageBox(msg,wxT("Machine Database Changes"),wxYES_NO,NULL)==wxYES) {
|
||||
|
||||
if (m->Purge(3478216)) { // Do not copy this line without thinking.. You will be eaten by a Grue if you do
|
||||
m->properties["DataVersion"]=wxString::Format("%li",v); // Dont need to nag again if they are too lazy.
|
||||
}
|
||||
}
|
||||
} else m->Load();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,6 +199,19 @@ void Profile::Import(wxString path)
|
||||
}
|
||||
}
|
||||
|
||||
MachineLoader * GetLoader(wxString name)
|
||||
{
|
||||
MachineLoader *l=NULL;
|
||||
list<MachineLoader *>loaders=GetLoaders();
|
||||
for (list<MachineLoader *>::iterator i=loaders.begin(); i!=loaders.end(); i++) {
|
||||
if ((*i)->ClassName()==name) {
|
||||
l=*i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
|
||||
vector<Machine *> Profile::GetMachines(MachineType t)
|
||||
// Returns a vector containing all machine objects regisered of type t
|
||||
@ -240,12 +277,12 @@ Profile *Get()
|
||||
{
|
||||
return profile;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief Scan Profile directory loading user profiles
|
||||
*/
|
||||
|
||||
|
||||
|
||||
void Scan()
|
||||
{
|
||||
InitMapsWithoutAwesomeInitializerLists();
|
||||
|
@ -13,6 +13,7 @@ License: GPL
|
||||
#include <wx/string.h>
|
||||
#include <map>
|
||||
#include "machine.h"
|
||||
#include "machine_loader.h"
|
||||
#include "preferences.h"
|
||||
#include "tinyxml/tinyxml.h"
|
||||
|
||||
@ -55,6 +56,9 @@ protected:
|
||||
|
||||
};
|
||||
|
||||
class MachineLoader;
|
||||
extern MachineLoader * GetLoader(wxString name);
|
||||
|
||||
extern Preferences *p_pref;
|
||||
extern Preferences *p_layout;
|
||||
#define pref (*p_pref)
|
||||
|
@ -18,6 +18,13 @@ License: GPL
|
||||
|
||||
#include "prs1_loader.h"
|
||||
|
||||
//********************************************************************************************
|
||||
/// IMPORTANT!!!
|
||||
//********************************************************************************************
|
||||
// Please INCREMENT the prs1_data_version in prs1_loader.h when making changes to this loader
|
||||
// that change loader behaviour or modify channels.
|
||||
//********************************************************************************************
|
||||
|
||||
|
||||
extern wxProgressDialog *loader_progress;
|
||||
|
||||
@ -26,7 +33,7 @@ map<int,wxString> ModelMap;
|
||||
// This class technically isn't needed now.. as long as m_class, Brand & Model is set, things should be fine.
|
||||
PRS1::PRS1(Profile *p,MachineID id):CPAP(p,id)
|
||||
{
|
||||
m_class=wxT("PRS1");
|
||||
m_class=prs1_class_name;
|
||||
properties[wxT("Brand")]=wxT("Philips Respironics");
|
||||
properties[wxT("Model")]=wxT("System One");
|
||||
|
||||
@ -353,6 +360,7 @@ int PRS1Loader::OpenMachine(Machine *m,wxString path,Profile *profile)
|
||||
//wxPrintf(sess->start().Format()+wxT(" avgsummary=%.3f avgmine=%.3f\n"),sess->summary[CPAP_PressureAverage].GetDouble(),sess->weighted_avg_event_field(CPAP_Pressure,0));
|
||||
sess->SetChanged(true);
|
||||
}
|
||||
m->properties["DataVersion"]=wxString::Format("%i",prs1_data_version);
|
||||
m->Save(); // Save any new sessions to disk in our format
|
||||
if (loader_progress) loader_progress->Update(100);
|
||||
return true;
|
||||
|
@ -22,15 +22,21 @@ public:
|
||||
virtual ~PRS1();
|
||||
};
|
||||
|
||||
|
||||
const int max_load_buffer_size=384*1024;
|
||||
|
||||
const int prs1_data_version=1;
|
||||
|
||||
const wxString prs1_class_name=wxT("PRS1");
|
||||
|
||||
class PRS1Loader : public MachineLoader
|
||||
{
|
||||
public:
|
||||
PRS1Loader();
|
||||
virtual ~PRS1Loader();
|
||||
virtual bool Open(wxString & path,Profile *profile);
|
||||
|
||||
virtual int Version() { return prs1_data_version; };
|
||||
virtual const wxString & ClassName() { return prs1_class_name; };
|
||||
Machine *CreateMachine(wxString serial,Profile *profile);
|
||||
|
||||
static void Register();
|
||||
|
@ -16,14 +16,14 @@ namespace AutoVersion{
|
||||
//Standard Version Type
|
||||
static const long MAJOR = 0;
|
||||
static const long MINOR = 7;
|
||||
static const long BUILD = 4132;
|
||||
static const long REVISION = 5787;
|
||||
static const long BUILD = 4224;
|
||||
static const long REVISION = 6281;
|
||||
|
||||
//Miscellaneous Version Types
|
||||
static const long BUILDS_COUNT = 2515;
|
||||
#define RC_FILEVERSION 0,7,4132,5787
|
||||
#define RC_FILEVERSION_STRING "0, 7, 4132, 5787\0"
|
||||
static const char FULLVERSION_STRING[] = "0.7.4132.5787";
|
||||
static const long BUILDS_COUNT = 2704;
|
||||
#define RC_FILEVERSION 0,7,4224,6281
|
||||
#define RC_FILEVERSION_STRING "0, 7, 4224, 6281\0"
|
||||
static const char FULLVERSION_STRING[] = "0.7.4224.6281";
|
||||
|
||||
//These values are to keep track of your versioning state, don't modify them.
|
||||
static const long BUILD_HISTORY = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user