Package Gnumed :: Package timelinelib :: Package view :: Module zoom
[frames] | no frames]

Source Code for Module Gnumed.timelinelib.view.zoom

 1  # Copyright (C) 2009, 2010, 2011  Rickard Lindberg, Roger Lindberg 
 2  # 
 3  # This file is part of Timeline. 
 4  # 
 5  # Timeline is free software: you can redistribute it and/or modify 
 6  # it under the terms of the GNU General Public License as published by 
 7  # the Free Software Foundation, either version 3 of the License, or 
 8  # (at your option) any later version. 
 9  # 
10  # Timeline is distributed in the hope that it will be useful, 
11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
13  # GNU General Public License for more details. 
14  # 
15  # You should have received a copy of the GNU General Public License 
16  # along with Timeline.  If not, see <http://www.gnu.org/licenses/>. 
17   
18   
19  from timelinelib.view.periodbase import SelectPeriodByDragInputHandler 
20   
21   
22 -class ZoomByDragInputHandler(SelectPeriodByDragInputHandler):
23
24 - def __init__(self, controller, status_bar_adapter, start_time):
25 SelectPeriodByDragInputHandler.__init__(self, controller, start_time) 26 self.controller = controller 27 self.status_bar_adapter = status_bar_adapter 28 self.status_bar_adapter.set_text(_("Select region to zoom into"))
29
30 - def mouse_moved(self, x, y, alt_down=False):
31 SelectPeriodByDragInputHandler.mouse_moved(self, x, y, alt_down) 32 try: 33 p = self.get_current_period() 34 except ValueError: 35 self.status_bar_adapter.set_text(_("Region too long")) 36 else: 37 if p.delta() < p.time_type.get_min_zoom_delta()[0]: 38 self.status_bar_adapter.set_text(_("Region too short")) 39 else: 40 self.status_bar_adapter.set_text("")
41
42 - def end_action(self):
43 self.status_bar_adapter.set_text("") 44 period = self.get_last_valid_period() 45 start = period.start_time 46 end = period.end_time 47 delta = end - start 48 if period.time_type.zoom_is_ok(delta): 49 # Don't zoom in to less than an hour which upsets things. 50 self.controller.navigate_timeline(lambda tp: tp.update(start, end))
51