X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FpPlotter%2FmBarRange.cxx;h=b46e49531e18946d17d68a6cd0151eb5009f8747;hb=8efe1d6e29dc7ec7436779b9290b86552df7877f;hp=6de905c825af16ac90a6a0a68ffd092ba496f320;hpb=f09e0658d1c37d9a90c27dedffad8ce24bb8fcf0;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx index 6de905c..b46e495 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/pPlotter/mBarRange.cxx @@ -31,6 +31,8 @@ BEGIN_EVENT_TABLE(mBarRange, wxScrolledWindow) EVT_LEFT_DOWN( mBarRange :: onLeftClicDown) EVT_LEFT_UP( mBarRange :: onLeftClickUp) + EVT_CHAR( mBarRange :: onKey ) + //how to catch the new event (our event) //EVT_COMMAND (ID_MY_WINDOW, wxEVT_MY_EVENT, MyFrame::OnMyEvent) END_EVENT_TABLE() @@ -43,12 +45,12 @@ END_EVENT_TABLE() mBarRange::mBarRange(wxWindow *parent, int w, int h) :wxScrolledWindow(parent,-1,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL) { - acceptedClick = true; - _bitmap_bar = NULL; + acceptedClick = true; + _bitmap_bar = NULL; SetWidth (w); SetHeight(h); - _initialPoint = 0; - trianglesHalfWidth = 5; + _initialPoint = 0; + trianglesHalfWidth = 5; wxColour start_Colour; @@ -249,19 +251,32 @@ void mBarRange::SetHeight(int h) // Logical Start of the rectangle //---------------------------------------------------------------------------- +int mBarRange::filtreValue(int value) +{ + if(value<_min) + value = _min; + else if (value>_max) + value = _max; + + return value; +} + + int mBarRange::GetStart() { return _start; - } //---------------------------------------------------------------------------- // param start: value real units //---------------------------------------------------------------------------- void mBarRange::SetStart(int newstart) { - if(newstart<_min) - newstart = _min; - _start = newstart; + _start = filtreValue(newstart); + if (_start>_end) { _start=_end; } + if (_in_rangeProperty==true) + { + if (_start>_actual) { _start=_actual; } + } RefreshForce(); } //---------------------------------------------------------------------------- @@ -275,11 +290,14 @@ int mBarRange::GetEnd() //---------------------------------------------------------------------------- // param end: value pixel units //---------------------------------------------------------------------------- -void mBarRange::SetEnd(int nwend) +void mBarRange::SetEnd(int newend) { - if(nwend>_max) - _end = _max; - _end=nwend; + _end = filtreValue(newend); + if (_end<_start) { _end=_start; } + if (_in_rangeProperty==true) + { + if (_end<_actual) { _end=_actual; } + } RefreshForce(); } //---------------------------------------------------------------------------- @@ -290,13 +308,14 @@ int mBarRange::GetActual() return _actual; } //---------------------------------------------------------------------------- -void mBarRange::SetActual(int actual) +void mBarRange::SetActual(int newactual) { - if(actual<_min) - _actual = _min; - else if (actual>_max) - _actual = _max; - _actual=actual; + _actual = filtreValue(newactual); + if (_in_rangeProperty==true) + { + if (_actual<_start) { _actual=_start; } + if (_actual>_end) { _actual=_end; } + } RefreshForce(); } @@ -332,19 +351,7 @@ void mBarRange::OnSize( wxSizeEvent &WXUNUSED(event) ) void mBarRange::Refresh(bool eraseBackground, const wxRect* rect) { -// EED Borrame -//FILE *ff; -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , "mBarRange :: Refresh 01\n" ); -//fclose(ff); - wxScrolledWindow::Refresh(false); - - -// EED Borrame -//ff=fopen ("c:/temp/xx.txt", "a+"); -//fprintf( ff , "mBarRange :: Refresh 02\n" ); -//fclose(ff); } @@ -353,13 +360,6 @@ void mBarRange::Refresh(bool eraseBackground, const wxRect* rect) //---------------------------------------------------------------------------- void mBarRange::OnPaint( wxPaintEvent &WXUNUSED(event) ) { - -// EED Borrame -//FILE *ff; -//ff=fopen ("c:/temp/xx.txt", "a+"); -//fprintf( ff , "pColorBar :: OnPaint 01\n" ); -//fclose(ff); - if (_bitmap_bar!=NULL){ //repaint rectangle if(_orientation) @@ -395,45 +395,33 @@ void mBarRange::OnPaint( wxPaintEvent &WXUNUSED(event) ) } } - -// EED Borrame -//ff=fopen ("c:/temp/xx.txt", "a+"); -//fprintf( ff , "pColorBar :: OnPaint 02\n" ); -//fclose(ff); +} -} //---------------------------------------------------------------------------- //Repaint the bar if it is horizontal //---------------------------------------------------------------------------- void mBarRange::RefreshHorizontalView() { - -// EED Borrame -//FILE *ff; -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , "mBarRange :: RefreshHorizontalView 01\n" ); -//fclose(ff); - wxPoint points[3]; //int largestNumberWidthInPixels = 15; // JPRx - int pxStart=GetPixelStart(); - int pxEnd=GetPixelEnd(); - int pxActual=GetPixelActual(); + int pxStart = GetPixelStart(); + int pxEnd = GetPixelEnd(); + int pxActual = GetPixelActual(); - int letterHeight = 9; - int barHeight = 2*letterHeight; - int tempHeight = _h-(6*letterHeight); + int letterHeight= 9; + int barHeight = 2*letterHeight; + int tempHeight = _h-(6*letterHeight); if (_visibleLables) { - barHeight = (tempHeight>0) ? tempHeight : (int) _h/2; + barHeight = (tempHeight>0) ? tempHeight : (int) _h/2; } else - barHeight = _h; + barHeight = _h; wxMemoryDC temp_dc; temp_dc.SelectObject( *_bitmap_bar ); @@ -613,10 +601,6 @@ void mBarRange::RefreshHorizontalView() } } -// EED Borrame -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , "mBarRange :: RefreshHorizontalView 02\n" ); -//fclose(ff); } //---------------------------------------------------------------------------- @@ -625,12 +609,6 @@ void mBarRange::RefreshHorizontalView() void mBarRange::RefreshVerticalView() { - -// EED Borrame -//FILE *ff; -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , "mBarRange :: RefreshVerticalView 01\n" ); -//fclose(ff); wxPoint points[3]; int px1=GetPixelStart(); @@ -683,24 +661,24 @@ void mBarRange::RefreshVerticalView() // 2 Shadow Triangles: Start and End - points[0].x=_h; - points[0].y=0; - points[1].x=0; - points[1].y=-trianglesHalfWidth-1; - points[2].x=0; - points[2].y=trianglesHalfWidth+2; + points[0].x = _h; + points[0].y = 0; + points[1].x = 0; + points[1].y = -trianglesHalfWidth-1; + points[2].x = 0; + points[2].y = trianglesHalfWidth+2; temp_dc.SetBrush(wxBrush( wxColour(104,104,104),wxSOLID )); temp_dc.SetPen(wxPen( wxColour(104,104,104),1,wxSOLID )); temp_dc.DrawPolygon(3,points,0,px1); temp_dc.DrawPolygon(3,points,0,px2); // 2 Triangles: Start and End - points[0].x=_h; - points[0].y=0; - points[1].x=0; - points[1].y=-trianglesHalfWidth; - points[2].x=0; - points[2].y=trianglesHalfWidth; + points[0].x = _h; + points[0].y = 0; + points[1].x = 0; + points[1].y = -trianglesHalfWidth; + points[2].x = 0; + points[2].y = trianglesHalfWidth; //first triangle (start) if( _selectionMoveId==1 ) { @@ -824,15 +802,6 @@ void mBarRange::RefreshForce() //---------------------------------------------------------------------------- void mBarRange::OnMouseMove(wxMouseEvent& event ) { -// EED Borrame -//FILE *ff; -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , "mBarRange :: OnMouseMove 01\n" ); -//fclose(ff); - - //int px1=GetPixelStart(); // JPRx - //int px2=GetPixelEnd(); // JPRx - //int px3=GetPixelActual(); // JPRx if (activeState) { wxPoint point = event.GetPosition(); @@ -945,9 +914,6 @@ void mBarRange::OnMouseMove(wxMouseEvent& event ) //------------------------------------------- createAndSendEvent( wxEVT_TSBAR_ACTUAL ); // createAndSendEvent( 98765 ); - -//printf("EED creaMaracasVisu mBarRange::OnMouseMove XXXXXXX \n"); - } else if( validPos_ActualTri && _in_rangeProperty ) // the tringle in between start and end @@ -1004,6 +970,10 @@ void mBarRange::OnMouseMove(wxMouseEvent& event ) // Sending the event that the bar ahs being moved //------------------------------------------- createAndSendEvent( wxEVT_TSBAR_MOVED ); + //EED + createAndSendEvent( wxEVT_TSBAR_ACTUAL ); + createAndSendEvent( wxEVT_TSBAR_END ); + createAndSendEvent( wxEVT_TSBAR_START ); } //if actual has to be between start and end else if(_in_rangeProperty && ((next_start<=GetActual()) && (next_end>=GetActual()) && (next_end<=_max)&& (next_start>=_min)) ) @@ -1025,6 +995,10 @@ void mBarRange::OnMouseMove(wxMouseEvent& event ) // Sending the event that the bar ahs being moved //------------------------------------------- createAndSendEvent( wxEVT_TSBAR_MOVED ); + //EED + createAndSendEvent( wxEVT_TSBAR_ACTUAL ); + createAndSendEvent( wxEVT_TSBAR_END ); + createAndSendEvent( wxEVT_TSBAR_START ); } } } @@ -1041,13 +1015,9 @@ void mBarRange::OnMouseMove(wxMouseEvent& event ) } } } +} -// EED Borrame -//ff=fopen ("c:/temp/xxx.txt", "a+"); -//fprintf( ff , " mBarRange :: OnMouseMove 02\n" ); -//fclose(ff); -} /* * Sets the represented minimum and maximunm values * param minRealValue The minimum represented value (real value) @@ -1395,11 +1365,65 @@ void mBarRange :: setVisibleLabels ( bool setVisibleLB ) void mBarRange ::onLeftClicDown(wxMouseEvent& event ) { acceptedClick = true; + SetFocus(); } - void mBarRange ::onLeftClickUp(wxMouseEvent& event ) + void mBarRange::onLeftClickUp(wxMouseEvent& event ) { acceptedClick = false; } +//EED 20 Juillet 2011 + void mBarRange::onKey(wxKeyEvent& event) + { + int step=0; + if ((event.GetKeyCode()==314) || (event.GetKeyCode()==317)) + { + step=-1; + } + + if ((event.GetKeyCode()==315) || (event.GetKeyCode()==316)) + { + step=1; + } + + if (step!=0) + { + if (_selectionMoveId == 1) // start + { + SetStart(GetStart()+step); + createAndSendEvent( wxEVT_TSBAR_START ); + } + + if (_selectionMoveId == 2) // end + { + SetEnd(GetEnd()+step); + createAndSendEvent( wxEVT_TSBAR_END ); + } + + if (_selectionMoveId == 3) // actual + { + SetActual(GetActual()+step); + createAndSendEvent( wxEVT_TSBAR_ACTUAL ); + } + + if (_selectionMoveId == 4) // bar + { + if (( GetStart()+step>=_min ) && ( GetEnd()+step<=_max )) + { + SetStart(GetStart()+step); + SetEnd(GetEnd()+step); + if (_moveActualWithBar) + { + SetActual(GetActual()+step); + } + createAndSendEvent( wxEVT_TSBAR_START ); + createAndSendEvent( wxEVT_TSBAR_END ); + createAndSendEvent( wxEVT_TSBAR_ACTUAL ); + createAndSendEvent( wxEVT_TSBAR_MOVED ); + } // Start>_min && End<_max + }// _selectionMoveId == 4 + } // step + } +