Easy. You can add a reset button: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= v := RTView new. b := [ :someClasses | g := RTGrapher new. g view: v. ds := RTData new. ds points: someClasses. ds y: [ :cls | cls numberOfMethods ]. ds x: [ :cls | cls numberOfLinesOfCode ]. g add: ds.
g addDecorator: (RTRangeSelector new callback: [ :es | | classesToZoomIn | classesToZoomIn := es collect: #model. v cleanAll. b value: classesToZoomIn ]). g build. v addMenu: 'Reset' callback: [ v cleanAll. b value: RTShape withAllSubclasses ]. ]. b value: RTShape withAllSubclasses. v -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= If you wish to have a right click, you can do: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= v := RTView new. b := [ :someClasses | g := RTGrapher new. g view: v. ds := RTData new. ds points: someClasses. ds y: [ :cls | cls numberOfMethods ]. ds x: [ :cls | cls numberOfLinesOfCode ]. g add: ds. g addDecorator: (RTRangeSelector new callback: [ :es | | classesToZoomIn | classesToZoomIn := es collect: #model. v cleanAll. b value: classesToZoomIn ]). g build. v when: TRMouseRightClick do: [ v cleanAll. b value: RTShape withAllSubclasses. v signalUpdate ]. ]. b value: RTShape withAllSubclasses. v -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. > On Mar 29, 2018, at 5:45 AM, Alistair Grant <akgrant0...@gmail.com> wrote: > > Hi Alexandre, > > Thanks! (more below) > > > On 28 March 2018 at 14:56, Alexandre Bergel <alexandre.ber...@me.com> wrote: >> Hi Alistair! >> >> Yes, this is something we thought about some times ago. >> >> After updating Roassal, try this: >> -=-=-=-=-=-=-=-=-=-=-=-= >> v := RTView new. >> b := [ :someClasses | >> g := RTGrapher new. >> g view: v. >> ds := RTData new. >> ds points: someClasses. >> ds y: [ :cls | cls numberOfMethods ]. >> ds x: [ :cls | cls numberOfLinesOfCode ]. >> g add: ds. >> >> g addDecorator: (RTRangeSelector new callback: [:es | >> | classesToZoomIn | >> classesToZoomIn := es collect: #model. >> v cleanAll. >> b value: classesToZoomIn >> ]). >> g build. >> ]. >> >> b value: RTShape withAllSubclasses. >> v >> -=-=-=-=-=-=-=-=-=-=-=-= >> >> Let me know how it goes. > > Great, it's working fine! > > If you select an empty portion of the graph an error is raised - > "Error: No dataset has been added?". > > I solved this with the following change, which simply ignores empty > areas and notifies the user: > > > RTRangeSelector>>callbackWithSelectedElements > | selectedElements | > selectedElements := self elementsWithinTheSelection. > selectedElements ifEmpty: [ > UIManager default inform: 'Empty region selected, ignoring'. > ^self ]. > self evaluateCallBackWithElements: selectedElements > > > That was a quick hack, so there could well be a better solution. > > From what I can see, there isn't a way to zoom back out or scroll left > and right. > > I might modify RTRangeSelector so that a right click zooms out. I'll > have to think about scrolling a bit more. > > > Thanks again! > Alistair > > >> Cheers, >> Alexandre >> >> -- >> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: >> Alexandre Bergel http://www.bergel.eu >> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. >> >> >> >>> On Mar 28, 2018, at 4:02 AM, Alistair Grant <akgrant0...@gmail.com> wrote: >>> >>> Hi Everyone, >>> >>> I'm using RTGrapher to display a simple line graph where the x-axis >>> has values from roughly 0 to 500,000 and the y-axis from 0 to 20. >>> >>> What I'd like to be able to do is to zoom in just the x-axis, i.e. >>> instead of displaying the entire 0 to 500,000 range, be able to narrow >>> it down in stages, to, e.g. 430,000 to 431,000. The y-axis would be >>> unchanged, i.e. still 0 to 20. Ideally I could then scroll left and >>> right along the x-axis. >>> >>> I can create a Spec widget with buttons to redraw the graph, but was >>> wondering if there was a better way. >>> >>> Thanks, >>> Alistair >>> >> >> >