Multiple Machine selection support

This commit is contained in:
Mark Watkins 2011-05-28 23:02:39 +10:00
parent d90f2f03cb
commit 3bcb6ec453
8 changed files with 650 additions and 67 deletions

View File

@ -61,6 +61,9 @@ GUIFrame::GUIFrame( wxWindow* parent, wxWindowID id, const wxString& title, cons
menubar->Append( ViewMenu, _("&View") );
MachineMenu = new wxMenu();
menubar->Append( MachineMenu, _("&Machine") );
ToolsMenu = new wxMenu();
wxMenuItem* ToolsMenuScreenshot;
ToolsMenuScreenshot = new wxMenuItem( ToolsMenu, wxID_ANY, wxString( _("Screenshot") ) + wxT('\t') + wxT("Shift+F12"), wxEmptyString, wxITEM_NORMAL );
@ -159,7 +162,7 @@ SummaryPanel::SummaryPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos,
m_mgr.SetManagedWindow(this);
HTMLInfo = new wxHtmlWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO );
m_mgr.AddPane( HTMLInfo, wxAuiPaneInfo() .Right() .Caption( wxT("Information") ).CloseButton( false ).MaximizeButton( false ).MinimizeButton( false ).PinButton( true ).Dock().Resizable().FloatingSize( wxDefaultSize ).DockFixed( false ).MinSize( wxSize( 200,400 ) ) );
m_mgr.AddPane( HTMLInfo, wxAuiPaneInfo() .Right() .Caption( wxT("Information") ).CloseButton( false ).MaximizeButton( false ).MinimizeButton( false ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( 208,424 ) ).DockFixed( false ).Row( 0 ).Position( 2 ).MinSize( wxSize( 200,400 ) ) );
ScrolledWindow = new wxScrolledWindow( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL|wxVSCROLL );
ScrolledWindow->SetScrollRate( 5, 5 );
@ -172,12 +175,44 @@ SummaryPanel::SummaryPanel( wxWindow* parent, wxWindowID id, const wxPoint& pos,
ScrolledWindow->SetSizer( fgSizer );
ScrolledWindow->Layout();
fgSizer->Fit( ScrolledWindow );
m_panel1 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
m_panel1->SetMaxSize( wxSize( -1,40 ) );
m_mgr.AddPane( m_panel1, wxAuiPaneInfo() .Bottom() .Caption( wxT("Date Range") ).CloseButton( false ).MaximizeButton( false ).MinimizeButton( false ).PinButton( true ).Dock().Resizable().FloatingSize( wxSize( -1,-1 ) ).DockFixed( false ).Row( 0 ).Position( 1 ).BestSize( wxSize( 300,40 ) ).MinSize( wxSize( 300,40 ) ).MaxSize( wxSize( 300,40 ) ) );
wxBoxSizer* bSizer1;
bSizer1 = new wxBoxSizer( wxHORIZONTAL );
m_staticText1 = new wxStaticText( m_panel1, wxID_ANY, _("Start"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText1->Wrap( -1 );
bSizer1->Add( m_staticText1, 0, wxALIGN_TOP|wxLEFT|wxTOP, 12 );
StartDatePicker = new wxDatePickerCtrl( m_panel1, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT );
bSizer1->Add( StartDatePicker, 0, wxALL, 5 );
m_staticText2 = new wxStaticText( m_panel1, wxID_ANY, _("End"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText2->Wrap( -1 );
bSizer1->Add( m_staticText2, 0, wxALIGN_TOP|wxLEFT|wxTOP, 12 );
EndDatePicker = new wxDatePickerCtrl( m_panel1, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DEFAULT );
bSizer1->Add( EndDatePicker, 0, wxALL, 5 );
m_panel1->SetSizer( bSizer1 );
m_panel1->Layout();
bSizer1->Fit( m_panel1 );
m_mgr.Update();
// Connect Events
StartDatePicker->Connect( wxEVT_DATE_CHANGED, wxDateEventHandler( SummaryPanel::OnStartDateChanged ), NULL, this );
EndDatePicker->Connect( wxEVT_DATE_CHANGED, wxDateEventHandler( SummaryPanel::OnEndDateChanged ), NULL, this );
}
SummaryPanel::~SummaryPanel()
{
// Disconnect Events
StartDatePicker->Disconnect( wxEVT_DATE_CHANGED, wxDateEventHandler( SummaryPanel::OnStartDateChanged ), NULL, this );
EndDatePicker->Disconnect( wxEVT_DATE_CHANGED, wxDateEventHandler( SummaryPanel::OnEndDateChanged ), NULL, this );
m_mgr.UnInit();
}

View File

@ -28,6 +28,9 @@
#include <wx/scrolwin.h>
#include <wx/calctrl.h>
#include <wx/panel.h>
#include <wx/stattext.h>
#include <wx/datectrl.h>
#include <wx/dateevt.h>
///////////////////////////////////////////////////////////////////////////
@ -44,6 +47,7 @@ class GUIFrame : public wxFrame
wxMenuBar* menubar;
wxMenu* FileMenu;
wxMenu* ViewMenu;
wxMenu* MachineMenu;
wxMenu* ToolsMenu;
wxMenu* HelpMenu;
wxStatusBar* statusBar;
@ -107,10 +111,20 @@ class SummaryPanel : public wxPanel
wxHtmlWindow* HTMLInfo;
wxScrolledWindow* ScrolledWindow;
wxFlexGridSizer* fgSizer;
wxPanel* m_panel1;
wxStaticText* m_staticText1;
wxDatePickerCtrl* StartDatePicker;
wxStaticText* m_staticText2;
wxDatePickerCtrl* EndDatePicker;
// Virtual event handlers, overide them in your derived class
virtual void OnStartDateChanged( wxDateEvent& event ) { event.Skip(); }
virtual void OnEndDateChanged( wxDateEvent& event ) { event.Skip(); }
public:
SummaryPanel( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 712,445 ), long style = wxTAB_TRAVERSAL ); wxAuiManager m_mgr;
SummaryPanel( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 775,447 ), long style = wxTAB_TRAVERSAL ); wxAuiManager m_mgr;
~SummaryPanel();

View File

@ -7785,12 +7785,12 @@
"wx/progdlg.h"
"wx/dialog.h"
1306556741 source:/home/mark/projects/git/sleepyhead/GUIFrame.cpp
1306577554 source:/home/mark/projects/git/sleepyhead/GUIFrame.cpp
"wx/wxprec.h"
<wx/wx.h>
"GUIFrame.h"
1306556260 /home/mark/projects/git/sleepyhead/GUIFrame.h
1306577554 /home/mark/projects/git/sleepyhead/GUIFrame.h
<wx/intl.h>
<wx/string.h>
<wx/bitmap.h>
@ -7810,6 +7810,9 @@
<wx/scrolwin.h>
<wx/calctrl.h>
<wx/panel.h>
<wx/stattext.h>
<wx/datectrl.h>
<wx/dateevt.h>
1306414983 source:/home/mark/projects/git/sleepyhead/SleepyHeadApp.cpp
"wx_pch.h"
@ -7826,7 +7829,7 @@
1305881106 /home/mark/projects/git/sleepyhead/SleepyHeadApp.h
<wx/app.h>
1306557150 /home/mark/projects/git/sleepyhead/SleepyHeadMain.h
1306584929 /home/mark/projects/git/sleepyhead/SleepyHeadMain.h
"SleepyHeadApp.h"
"GUIFrame.h"
"sleeplib/machine.h"
@ -7870,7 +7873,7 @@
<sleeplib/machine.h>
<list>
1306575341 /home/mark/projects/git/sleepyhead/version.h
1306587675 /home/mark/projects/git/sleepyhead/version.h
1306549105 /home/mark/projects/git/sleepyhead/libs/sleeplib/prs1_loader.h
"machine.h"
@ -7887,7 +7890,7 @@
"preferences.h"
"tinyxml/tinyxml.h"
1306575003 source:/home/mark/projects/git/sleepyhead/SleepyHeadMain.cpp
1306587675 source:/home/mark/projects/git/sleepyhead/SleepyHeadMain.cpp
"wx_pch.h"
"version.h"
<wx/app.h>
@ -7902,7 +7905,7 @@
"SleepyHeadMain.h"
"sleeplib/profiles.h"
1306574943 source:/home/mark/projects/git/sleepyhead/graphs/graph.cpp
1306587051 source:/home/mark/projects/git/sleepyhead/graphs/graph.cpp
<wx/settings.h>
<wx/dcbuffer.h>
<wx/log.h>
@ -7978,3 +7981,13 @@
"tinyxml.h"
<windows.h>
1302101441 /usr/include/wx-2.8/wx/datectrl.h
"wx/defs.h"
"wx/control.h"
"wx/datetime.h"
"wx/palmos/datectrl.h"
"wx/msw/datectrl.h"
"wx/generic/datectrl.h"
1302101441 /usr/include/wx-2.8/wx/generic/datectrl.h

View File

@ -93,8 +93,6 @@ void SleepyHeadFrame::DoScreenshot( wxCommandEvent &event )
wxDateTime d=wxDateTime::Now();
// wxDirDialog sfs(this,_("Choose a Directory")); //,wxT(""),wxT(""),style=wxFD_OPEN);
wxString filename=wxSaveFileSelector(_("Please give a filename for the screenshot"),wxT("png"),wxT("Sleepyhead-")+d.Format(wxT("%Y%m%d-%H%M%S")),this);
if (!filename.IsEmpty()) {
@ -104,7 +102,8 @@ void SleepyHeadFrame::DoScreenshot( wxCommandEvent &event )
wxLogError(wxT("Couldn't save screenshot ")+filename);
}
}
}
}
SleepyHeadFrame::SleepyHeadFrame(wxFrame *frame)
: GUIFrame(frame)
@ -114,13 +113,43 @@ SleepyHeadFrame::SleepyHeadFrame(wxFrame *frame)
loader_progress->Hide();
wxString title=wxTheApp->GetAppName()+wxT(" v")+wxString(AutoVersion::FULLVERSION_STRING,wxConvUTF8);
SetTitle(title);
profile=Profiles::Get();
if (!profile) {
wxLogError(wxT("Couldn't get active profile"));
abort();
}
UpdateMachineMenu();
//wxDisableAsserts();
// Create AUINotebook Tabs
wxCommandEvent dummy;
OnViewMenuDaily(dummy); // Daily Page
OnViewMenuSummary(dummy); // Summary Page
int id=0;
if (pref.Exists("DefaultMachine")) {
id=pref[wxT("DefaultMachine")].GetInteger();
}
Machine *m=cpap_machines[id];
int idx=main_auinotebook->GetPageIndex(daily);
if (idx!=wxNOT_FOUND) {
daily->RefreshData(m);
}
idx=main_auinotebook->GetPageIndex(summary);
if (idx!=wxNOT_FOUND) {
summary->RefreshData(m);
}
summary->Refresh();
daily->Refresh();
Refresh();
this->Connect(wxID_ANY, wxEVT_DO_SCREENSHOT, wxCommandEventHandler(SleepyHeadFrame::DoScreenshot));
//this->Connect(wxID_ANY, wxEVT_MACHINE_SELECTED, wxCommandEventHandler(SleepyHeadFrame::OnMachineSelected));
//this->Connect(wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(SleepyHeadFrame::DoScreenshot));
#if wxUSE_STATUSBAR
@ -137,6 +166,35 @@ SleepyHeadFrame::~SleepyHeadFrame()
delete loader_progress;
}
}
void SleepyHeadFrame::UpdateMachineMenu()
{
cpap_machines=profile->GetMachines(MT_CPAP);
wxMenuItemList &z=MachineMenu->GetMenuItems();
//wxMenuItemList::iterator q;
int i=MachineMenuID;
for (auto q=z.begin();q!=z.end();q++) {
this->Disconnect(i,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(SleepyHeadFrame::OnMachineSelected));
MachineMenu->Remove(*q);
i++;
}
i=MachineMenuID;
for (auto m=cpap_machines.begin();m!=cpap_machines.end();m++) {
wxMenuItem *item=MachineMenu->AppendRadioItem(i,(*m)->properties[wxT("Serial")],wxEmptyString);
this->Connect(i,wxEVT_COMMAND_MENU_SELECTED,wxCommandEventHandler(SleepyHeadFrame::OnMachineSelected));
i++;
}
long l=pref[wxT("DefaultMachine")];
MachineMenu->Check(l+MachineMenuID,true);
/*if (vm.size()>=1) {
machine=vm[0];
} else machine=NULL; */
}
void SleepyHeadFrame::OnClose(wxCloseEvent &event)
{
@ -155,6 +213,28 @@ void SleepyHeadFrame::OnFullscreen(wxCommandEvent& event)
ShowFullScreen(false);
}
}
void SleepyHeadFrame::OnMachineSelected(wxCommandEvent& event)
{
int id=event.GetId()-MachineMenuID;
wxLogMessage(wxT("Machine Selected:")+wxString::Format(wxT("%i"),id));
event.Skip();
Machine *m=cpap_machines[id];
if (m) {
pref[wxT("DefaultMachine")]=(long)id;
}
int idx=main_auinotebook->GetPageIndex(daily);
if (idx!=wxNOT_FOUND) {
daily->RefreshData(m);
}
idx=main_auinotebook->GetPageIndex(summary);
if (idx!=wxNOT_FOUND) {
summary->RefreshData(m);
}
summary->Refresh();
daily->Refresh();
Refresh();
}
void SleepyHeadFrame::OnScreenshot(wxCommandEvent& event)
{
ToolsMenu->UpdateUI();
@ -177,27 +257,37 @@ void SleepyHeadFrame::OnAbout(wxCommandEvent &event)
void SleepyHeadFrame::OnImportSD(wxCommandEvent &event)
{
wxDirDialog dd(this,_("Choose a Directory")); //,wxT(""),wxT(""),style=wxFD_OPEN);
if (dd.ShowModal()==wxID_OK) {
wxString path=dd.GetPath();
if (dd.ShowModal()!=wxID_OK) return;
Profile *p=Profiles::Get();
wxString path=dd.GetPath();
loader_progress->Update(0);
loader_progress->Show();
if (p) p->Import(path);
loader_progress->Show(false);
loader_progress->Update(0);
loader_progress->Show();
profile->Import(path);
loader_progress->Update(100);
loader_progress->Show(false);
UpdateMachineMenu(); // Also updates cpap_machines list.
auto q=MachineMenu->GetMenuItems().rbegin();
int i=0;
if (q!=MachineMenu->GetMenuItems().rend()) {
(*q)->Check(true);
i=(*q)->GetId()-MachineMenuID;
}
Machine *m=cpap_machines[i];
int idx=main_auinotebook->GetPageIndex(daily);
if (idx!=wxNOT_FOUND) {
daily->RefreshData();
daily->RefreshData(m);
}
idx=main_auinotebook->GetPageIndex(summary);
if (idx!=wxNOT_FOUND) {
summary->RefreshData();
summary->RefreshData(m);
}
summary->Refresh();
daily->Refresh();
Refresh();
}
void SleepyHeadFrame::OnViewMenuDaily( wxCommandEvent& event )
{
@ -223,9 +313,10 @@ void SleepyHeadFrame::OnViewMenuSummary( wxCommandEvent& event )
Summary::Summary(wxWindow *win)
:SummaryPanel(win)
{
const int days_shown=60;
machine=NULL;
const int days_shown=60;
AddData(ahidata=new HistoryData(machine,days_shown));
AddData(pressure=new HistoryCodeData(machine,CPAP_PressureAverage,days_shown));
AddData(leak=new HistoryCodeData(machine,CPAP_LeakAverage,days_shown));
@ -252,33 +343,27 @@ Summary::Summary(wxWindow *win)
fgSizer->Add(LEAK,1,wxEXPAND);
USAGE=new gGraphWindow(ScrolledWindow,-1,wxT("Usage"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
USAGE=new gGraphWindow(ScrolledWindow,-1,wxT("Usage (Hours)"),wxPoint(0,0), wxSize(400,200), wxNO_BORDER);
USAGE->SetMargins(10,15,60,80);
USAGE->AddLayer(new gBarChart(usage,wxGREEN));
//USAGE->AddLayer(new gLineChart(usage,wxGREEN));
fgSizer->Add(USAGE,1,wxEXPAND);
RefreshData();
// RefreshData();
}
Summary::~Summary()
{
}
void Summary::RefreshData()
void Summary::RefreshData(Machine *m)
{
if (!machine) {
Profile *p=Profiles::Get();
vector<Machine *>vm=p->GetMachines(MT_CPAP);
if (vm.size()>=1) {
machine=vm[0];
} else machine=NULL;
for (auto h=Data.begin();h!=Data.end();h++) {
(*h)->SetMachine(machine);
}
}
if (!m) return;
machine=m;
for (auto h=Data.begin();h!=Data.end();h++) {
(*h)->SetMachine(m);
(*h)->Update();
}
@ -320,12 +405,7 @@ void Summary::RefreshData()
Daily::Daily(wxWindow *win)
:DailyPanel(win)
{
Profile *p=Profiles::Get();
vector<Machine *>vm=p->GetMachines(MT_CPAP);
wxString s;
if (vm.size()>=1) {
machine=vm[0];
} else machine=NULL;
machine=NULL;
TAP=new gGraphWindow(ScrolledWindow,-1,wxT("Time@Pressure"),wxPoint(0,0), wxSize(600,50), wxNO_BORDER);
TAP->SetMargins(20,15,5,50);
@ -417,25 +497,21 @@ Daily::Daily(wxWindow *win)
fgSizer->Add(TAP,1,wxEXPAND);
foobar_datehack=false; // this exists due to a wxGTK bug.
RefreshData();
// RefreshData();
}
Daily::~Daily()
{
}
void Daily::RefreshData()
void Daily::RefreshData(Machine *m)
{
if (!machine) {
Profile *p=Profiles::Get();
vector<Machine *>vm=p->GetMachines(MT_CPAP);
wxString s;
if (vm.size()>=1) {
machine=vm[0];
} else machine=NULL;
}
if (!m) return;
machine=m;
wxDateTime day=Calendar->GetDate();
wxDateTime day=m->LastDay()+wxTimeSpan::Days(1);
Calendar->SetDate(day);
day.ResetTime();
day.SetHour(0);
//et-=wxTimeSpan::Days(1);

View File

@ -26,12 +26,12 @@ class Summary:public SummaryPanel
public:
Summary(wxWindow *win);
virtual ~Summary();
Machine *machine;
HistoryData *ahidata,*pressure,*leak,*usage,*bedtime,*waketime;
gGraphWindow *AHI,*PRESSURE,*LEAK,*USAGE;
void RefreshData();
void RefreshData(Machine *m);
void AddData(HistoryData *d) { Data.push_back(d); };
protected:
Machine *machine;
list<HistoryData *> Data;
};
@ -41,9 +41,8 @@ class Daily:public DailyPanel
public:
Daily(wxWindow *win);
virtual ~Daily();
void RefreshData();
void RefreshData(Machine *m);
Machine *machine;
protected:
virtual void OnCalendarDay( wxCalendarEvent& event );
virtual void OnCalendarMonth( wxCalendarEvent& event );
@ -56,10 +55,14 @@ protected:
gGraphWindow *PRD,*FRW,*G_AHI,*TAP,*LEAK,*SF;
Machine *machine;
list<gPointData *> Data;
};
const wxEventType wxEVT_DO_SCREENSHOT = wxNewEventType();
const wxEventType wxEVT_MACHINE_SELECTED = wxNewEventType();
const int MachineMenuID=wxID_HIGHEST;
class SleepyHeadFrame: public GUIFrame
{
@ -76,11 +79,17 @@ class SleepyHeadFrame: public GUIFrame
virtual void OnImportSD(wxCommandEvent& event);
virtual void OnViewMenuDaily(wxCommandEvent& event);
virtual void OnViewMenuSummary(wxCommandEvent& event);
virtual void OnMachineSelected(wxCommandEvent& event);
virtual void UpdateMachineMenu();
Summary *summary;
Daily *daily;
Machine *machine;
Profile *profile;
vector<Machine *>cpap_machines;
int current_machine;
};

View File

@ -305,6 +305,11 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="wxMenu" expanded="1">
<property name="label">&amp;Machine</property>
<property name="name">MachineMenu</property>
<property name="permission">protected</property>
</object>
<object class="wxMenu" expanded="1">
<property name="label">Tools</property>
<property name="name">ToolsMenu</property>
@ -913,7 +918,7 @@
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="show">1</property>
<property name="size">712,445</property>
<property name="size">775,447</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
@ -989,14 +994,14 @@
<property name="moveable">1</property>
<property name="name">HTMLInfo</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="pane_position">888,232</property>
<property name="pane_size">208,424</property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="position">2</property>
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="row">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxHW_SCROLLBAR_AUTO</property>
@ -1131,6 +1136,437 @@
<property name="vgap">0</property>
</object>
</object>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_name"></property>
<property name="best_size">300,40</property>
<property name="bg"></property>
<property name="caption">Date Range</property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">0</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Bottom</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="layer"></property>
<property name="max_size">300,40</property>
<property name="maximize_button">0</property>
<property name="maximum_size">-1,40</property>
<property name="min_size">300,40</property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_panel1</property>
<property name="pane_border">1</property>
<property name="pane_position">924,236</property>
<property name="pane_size">-1,-1</property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position">1</property>
<property name="resize">Resizable</property>
<property name="row">0</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer1</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">12</property>
<property name="flag">wxALIGN_TOP|wxLEFT|wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_name"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Start</property>
<property name="layer"></property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText1</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxDatePickerCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_name"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="layer"></property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">StartDatePicker</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxDP_DEFAULT</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnDateChanged">OnStartDateChanged</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">12</property>
<property name="flag">wxALIGN_TOP|wxLEFT|wxTOP</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_name"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">End</property>
<property name="layer"></property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText2</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxDatePickerCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_name"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="layer"></property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">EndDatePicker</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="position"></property>
<property name="resize">Resizable</property>
<property name="row"></property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxDP_DEFAULT</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnDateChanged">OnEndDateChanged</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View File

@ -1329,7 +1329,7 @@ void gLineChart::Plot(wxDC & dc, gGraphWindow & w)
if (done) break;
}
dc.SetClippingRegion(start_px+1,start_py+1,width,height);
dc.SetClippingRegion(start_px+1,start_py-1,width,height+1);
if (accel) {
// dc.DrawLine(1, 1, 1, height);
dp=0;

View File

@ -16,14 +16,14 @@ namespace AutoVersion{
//Standard Version Type
static const long MAJOR = 0;
static const long MINOR = 7;
static const long BUILD = 1537;
static const long REVISION = 2908;
static const long BUILD = 1639;
static const long REVISION = 3455;
//Miscellaneous Version Types
static const long BUILDS_COUNT = 5486;
#define RC_FILEVERSION 0,7,1537,2908
#define RC_FILEVERSION_STRING "0, 7, 1537, 2908\0"
static const char FULLVERSION_STRING[] = "0.7.1537.2908";
static const long BUILDS_COUNT = 5668;
#define RC_FILEVERSION 0,7,1639,3455
#define RC_FILEVERSION_STRING "0, 7, 1639, 3455\0"
static const char FULLVERSION_STRING[] = "0.7.1639.3455";
//These values are to keep track of your versioning state, don't modify them.
static const long BUILD_HISTORY = 62;