Exemplo n.º 1
0
 def __init__(self, parent, status_bar_adapter, divider_line_slider,
              fn_handle_db_error, config, main_frame):
     wx.Panel.__init__(self, parent, style=wx.NO_BORDER)
     self.fn_handle_db_error = fn_handle_db_error
     self.config = config
     self.main_frame = main_frame
     self.controller = DrawingArea(self, status_bar_adapter, config,
                                   get_drawer(), divider_line_slider,
                                   fn_handle_db_error)
     self.surface_bitmap = None
     self._create_gui()
Exemplo n.º 2
0
 def __init__(self, parent, status_bar_adapter, divider_line_slider,
              fn_handle_db_error, config, main_frame):
     wx.Panel.__init__(self, parent, style=wx.NO_BORDER)
     self.fn_handle_db_error = fn_handle_db_error
     self.config = config
     self.main_frame = main_frame
     self.controller = DrawingArea(
         self, status_bar_adapter, config, get_drawer(),
         divider_line_slider, fn_handle_db_error)
     self.surface_bitmap = None
     self._create_gui()
Exemplo n.º 3
0
class DrawingAreaPanel(wx.Panel):
    def __init__(self, parent, status_bar_adapter, divider_line_slider,
                 fn_handle_db_error, config, main_frame):
        wx.Panel.__init__(self, parent, style=wx.NO_BORDER)
        self.fn_handle_db_error = fn_handle_db_error
        self.config = config
        self.main_frame = main_frame
        self.controller = DrawingArea(self, status_bar_adapter, config,
                                      get_drawer(), divider_line_slider,
                                      fn_handle_db_error)
        self.surface_bitmap = None
        self._create_gui()

    def get_drawer(self):
        return self.controller.get_drawer()

    def get_timeline(self):
        return self.controller.get_timeline()

    def get_view_properties(self):
        return self.controller.get_view_properties()

    def get_current_image(self):
        return self.surface_bitmap

    def get_filtered_events(self, search_target):
        events = self.get_timeline().search(search_target)
        return self.get_view_properties().filter_events(events)

    def set_timeline(self, timeline):
        self.controller.set_timeline(timeline)

    def show_hide_legend(self, show):
        self.controller.show_hide_legend(show)

    def get_time_period(self):
        return self.controller.get_time_period()

    def navigate_timeline(self, navigation_fn):
        self.controller.navigate_timeline(navigation_fn)

    def redraw_timeline(self):
        self.controller.redraw_timeline()

    def balloon_visibility_changed(self, visible):
        self.controller.balloon_visibility_changed(visible)

    def redraw_surface(self, fn_draw):
        width, height = self.GetSizeTuple()
        self.surface_bitmap = wx.EmptyBitmap(width, height)
        memdc = wx.MemoryDC()
        memdc.SelectObject(self.surface_bitmap)
        memdc.BeginDrawing()
        memdc.SetBackground(wx.Brush(wx.WHITE, wx.SOLID))
        memdc.Clear()
        fn_draw(memdc)
        memdc.EndDrawing()
        del memdc
        self.Refresh()
        self.Update()

    def enable_disable_menus(self):
        self.main_frame.enable_disable_menus()

    def open_event_editor_for(self, event):
        open_event_editor_for(self, self.config,
                              self.controller.get_timeline(),
                              self.fn_handle_db_error, event)

    def open_duplicate_event_dialog_for_event(self, event):
        open_duplicate_event_dialog_for_event(self,
                                              self.controller.get_timeline(),
                                              self.fn_handle_db_error, event)

    def open_create_event_editor(self, start_time, end_time):
        open_create_event_editor(self, self.config,
                                 self.controller.get_timeline(),
                                 self.fn_handle_db_error, start_time, end_time)

    def start_balloon_show_timer(self, milliseconds=-1, oneShot=False):
        self.balloon_show_timer.Start(milliseconds, oneShot)

    def start_balloon_hide_timer(self, milliseconds=-1, oneShot=False):
        self.balloon_hide_timer.Start(milliseconds, oneShot)

    def start_dragscroll_timer(self, milliseconds=-1, oneShot=False):
        self.dragscroll_timer.Start(milliseconds, oneShot)

    def stop_dragscroll_timer(self):
        self.dragscroll_timer.Stop()

    def set_select_period_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_IBEAM))

    def set_size_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_SIZEWE))

    def set_move_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_SIZING))

    def set_default_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))

    def ask_question(self, question):
        return _ask_question(question, self)

    def ok_to_edit(self):
        return self.main_frame.ok_to_edit()

    def edit_ends(self):
        self.SetFocusIgnoringChildren()
        return self.main_frame.edit_ends()

    def zoom_in(self):
        self.controller.mouse_wheel_moved(120, True, False, False,
                                          self._get_half_width())

    def zoom_out(self):
        self.controller.mouse_wheel_moved(-120, True, False, False,
                                          self._get_half_width())

    def vert_zoom_in(self):
        self.controller.mouse_wheel_moved(120, False, False, True,
                                          self._get_half_width())

    def vert_zoom_out(self):
        self.controller.mouse_wheel_moved(-120, False, False, True,
                                          self._get_half_width())

    def _get_half_width(self):
        return self.GetSize()[0] / 2

    def _create_gui(self):
        self.balloon_show_timer = wx.Timer(self, -1)
        self.balloon_hide_timer = wx.Timer(self, -1)
        self.dragscroll_timer = wx.Timer(self, -1)
        self.Bind(wx.EVT_TIMER, self._on_balloon_show_timer,
                  self.balloon_show_timer)
        self.Bind(wx.EVT_TIMER, self._on_balloon_hide_timer,
                  self.balloon_hide_timer)
        self.Bind(wx.EVT_TIMER, self._on_dragscroll, self.dragscroll_timer)
        self.Bind(wx.EVT_ERASE_BACKGROUND, self._on_erase_background)
        self.Bind(wx.EVT_PAINT, self._on_paint)
        self.Bind(wx.EVT_SIZE, self._on_size)
        self.Bind(wx.EVT_LEFT_DOWN, self._on_left_down)
        self.Bind(wx.EVT_RIGHT_DOWN, self._on_right_down)
        self.Bind(wx.EVT_LEFT_DCLICK, self._on_left_dclick)
        self.Bind(wx.EVT_MIDDLE_UP, self._on_middle_up)
        self.Bind(wx.EVT_LEFT_UP, self._on_left_up)
        self.Bind(wx.EVT_ENTER_WINDOW, self._on_enter)
        self.Bind(wx.EVT_MOTION, self._on_motion)
        self.Bind(wx.EVT_MOUSEWHEEL, self._on_mousewheel)
        self.Bind(wx.EVT_KEY_DOWN, self._on_key_down)
        self.Bind(wx.EVT_KEY_UP, self._on_key_up)

    def _on_balloon_show_timer(self, evt):
        self.controller.balloon_show_timer_fired()

    def _on_balloon_hide_timer(self, evt):
        self.controller.balloon_hide_timer_fired()

    def _on_dragscroll(self, evt):
        self.controller.dragscroll_timer_fired()

    def _on_erase_background(self, event):
        # For double buffering
        pass

    def _on_paint(self, event):
        dc = wx.AutoBufferedPaintDC(self)
        dc.BeginDrawing()
        if self.surface_bitmap:
            dc.DrawBitmap(self.surface_bitmap, 0, 0, True)
        else:
            pass  # TODO: Fill with white?
        dc.EndDrawing()

    def _on_size(self, evt):
        self.controller.window_resized()

    def _on_left_down(self, evt):
        self.controller.left_mouse_down(evt.GetX(), evt.GetY(),
                                        evt.ControlDown(), evt.ShiftDown(),
                                        evt.AltDown())
        evt.Skip()

    def _on_right_down(self, evt):
        self.controller.right_mouse_down(evt.GetX(), evt.GetY(), evt.AltDown())

    def _on_left_dclick(self, evt):
        self.controller.left_mouse_dclick(evt.GetX(), evt.GetY(),
                                          evt.ControlDown(), evt.AltDown())

    def _on_middle_up(self, evt):
        self.controller.middle_mouse_clicked(evt.GetX())

    def _on_left_up(self, evt):
        self.controller.left_mouse_up()

    def _on_enter(self, evt):
        self.controller.mouse_enter(evt.GetX(), evt.LeftIsDown())

    def _on_motion(self, evt):
        self.controller.mouse_moved(evt.GetX(), evt.GetY(), evt.AltDown())

    def _on_mousewheel(self, evt):
        self.controller.mouse_wheel_moved(evt.GetWheelRotation(),
                                          evt.ControlDown(), evt.ShiftDown(),
                                          evt.AltDown(), evt.GetX())

    def _on_key_down(self, evt):
        self.controller.key_down(evt.GetKeyCode(), evt.AltDown())
        evt.Skip()

    def _on_key_up(self, evt):
        self.controller.key_up(evt.GetKeyCode())
Exemplo n.º 4
0
class DrawingAreaPanel(wx.Panel):

    def __init__(self, parent, status_bar_adapter, divider_line_slider,
                 fn_handle_db_error, config, main_frame):
        wx.Panel.__init__(self, parent, style=wx.NO_BORDER)
        self.fn_handle_db_error = fn_handle_db_error
        self.config = config
        self.main_frame = main_frame
        self.controller = DrawingArea(
            self, status_bar_adapter, config, get_drawer(),
            divider_line_slider, fn_handle_db_error)
        self.surface_bitmap = None
        self._create_gui()

    def get_drawer(self):
        return self.controller.get_drawer()

    def get_timeline(self):
        return self.controller.get_timeline()

    def get_view_properties(self):
        return self.controller.get_view_properties()

    def get_current_image(self):
        return self.surface_bitmap

    def get_filtered_events(self, search_target):
        events = self.get_timeline().search(search_target)
        return self.get_view_properties().filter_events(events)
        
    def set_timeline(self, timeline):
        self.controller.set_timeline(timeline)

    def show_hide_legend(self, show):
        self.controller.show_hide_legend(show)

    def get_time_period(self):
        return self.controller.get_time_period()

    def navigate_timeline(self, navigation_fn):
        self.controller.navigate_timeline(navigation_fn)

    def redraw_timeline(self):
        self.controller.redraw_timeline()

    def balloon_visibility_changed(self, visible):
        self.controller.balloon_visibility_changed(visible)

    def redraw_surface(self, fn_draw):
        width, height = self.GetSizeTuple()
        self.surface_bitmap = wx.EmptyBitmap(width, height)
        memdc = wx.MemoryDC()
        memdc.SelectObject(self.surface_bitmap)
        memdc.BeginDrawing()
        memdc.SetBackground(wx.Brush(wx.WHITE, wx.SOLID))
        memdc.Clear()
        fn_draw(memdc)
        memdc.EndDrawing()
        del memdc
        self.Refresh()
        self.Update()

    def enable_disable_menus(self):
        self.main_frame.enable_disable_menus()

    def open_event_editor_for(self, event):
        open_event_editor_for(
            self,
            self.config,
            self.controller.get_timeline(),
            self.fn_handle_db_error,
            event)

    def open_duplicate_event_dialog_for_event(self, event):
        open_duplicate_event_dialog_for_event(
            self,
            self.controller.get_timeline(),
            self.fn_handle_db_error,
            event)

    def open_create_event_editor(self, start_time, end_time):
        open_create_event_editor(
            self,
            self.config,
            self.controller.get_timeline(),
            self.fn_handle_db_error,
            start_time,
            end_time)

    def start_balloon_show_timer(self, milliseconds=-1, oneShot=False):
        self.balloon_show_timer.Start(milliseconds, oneShot)

    def start_balloon_hide_timer(self, milliseconds=-1, oneShot=False):
        self.balloon_hide_timer.Start(milliseconds, oneShot)

    def start_dragscroll_timer(self, milliseconds=-1, oneShot=False):
        self.dragscroll_timer.Start(milliseconds, oneShot)

    def stop_dragscroll_timer(self):
        self.dragscroll_timer.Stop()

    def set_select_period_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_IBEAM))

    def set_size_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_SIZEWE))

    def set_move_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_SIZING))

    def set_default_cursor(self):
        self.SetCursor(wx.StockCursor(wx.CURSOR_ARROW))

    def ask_question(self, question):
        return _ask_question(question, self)

    def ok_to_edit(self):
        return self.main_frame.ok_to_edit()
    
    def edit_ends(self):
        self.SetFocusIgnoringChildren()
        return self.main_frame.edit_ends()

    def zoom_in(self):
        self.controller.mouse_wheel_moved(120, True, False, False, self._get_half_width())
    
    def zoom_out(self):
        self.controller.mouse_wheel_moved(-120, True, False, False, self._get_half_width())

    def vert_zoom_in(self):
        self.controller.mouse_wheel_moved(120, False, False, True, self._get_half_width())
    
    def vert_zoom_out(self):
        self.controller.mouse_wheel_moved(-120, False, False, True, self._get_half_width())

    def _get_half_width(self):
        return self.GetSize()[0] / 2
        
    def _create_gui(self):
        self.balloon_show_timer = wx.Timer(self, -1)
        self.balloon_hide_timer = wx.Timer(self, -1)
        self.dragscroll_timer = wx.Timer(self, -1)
        self.Bind(wx.EVT_TIMER,            self._on_balloon_show_timer, self.balloon_show_timer)
        self.Bind(wx.EVT_TIMER,            self._on_balloon_hide_timer, self.balloon_hide_timer)
        self.Bind(wx.EVT_TIMER,            self._on_dragscroll, self.dragscroll_timer)
        self.Bind(wx.EVT_ERASE_BACKGROUND, self._on_erase_background)
        self.Bind(wx.EVT_PAINT,            self._on_paint)
        self.Bind(wx.EVT_SIZE,             self._on_size)
        self.Bind(wx.EVT_LEFT_DOWN,        self._on_left_down)
        self.Bind(wx.EVT_RIGHT_DOWN,       self._on_right_down)
        self.Bind(wx.EVT_LEFT_DCLICK,      self._on_left_dclick)
        self.Bind(wx.EVT_MIDDLE_UP,        self._on_middle_up)
        self.Bind(wx.EVT_LEFT_UP,          self._on_left_up)
        self.Bind(wx.EVT_ENTER_WINDOW,     self._on_enter)
        self.Bind(wx.EVT_MOTION,           self._on_motion)
        self.Bind(wx.EVT_MOUSEWHEEL,       self._on_mousewheel)
        self.Bind(wx.EVT_KEY_DOWN,         self._on_key_down)
        self.Bind(wx.EVT_KEY_UP,           self._on_key_up)

    def _on_balloon_show_timer(self, evt):
        self.controller.balloon_show_timer_fired()

    def _on_balloon_hide_timer(self, evt):
        self.controller.balloon_hide_timer_fired()

    def _on_dragscroll(self, evt):
        self.controller.dragscroll_timer_fired()

    def _on_erase_background(self, event):
        # For double buffering
        pass

    def _on_paint(self, event):
        dc = wx.AutoBufferedPaintDC(self)
        dc.BeginDrawing()
        if self.surface_bitmap:
            dc.DrawBitmap(self.surface_bitmap, 0, 0, True)
        else:
            pass # TODO: Fill with white?
        dc.EndDrawing()

    def _on_size(self, evt):
        self.controller.window_resized()

    def _on_left_down(self, evt):
        self.controller.left_mouse_down(evt.GetX(), evt.GetY(), evt.ControlDown(),
                                        evt.ShiftDown(), evt.AltDown())
        evt.Skip()

    def _on_right_down(self, evt):
        self.controller.right_mouse_down(evt.GetX(), evt.GetY(), evt.AltDown())

    def _on_left_dclick(self, evt):
        self.controller.left_mouse_dclick(evt.GetX(), evt.GetY(), evt.ControlDown(),
                                          evt.AltDown())

    def _on_middle_up(self, evt):
        self.controller.middle_mouse_clicked(evt.GetX())

    def _on_left_up(self, evt):
        self.controller.left_mouse_up()

    def _on_enter(self, evt):
        self.controller.mouse_enter(evt.GetX(), evt.LeftIsDown())

    def _on_motion(self, evt):
        self.controller.mouse_moved(evt.GetX(), evt.GetY(), evt.AltDown())

    def _on_mousewheel(self, evt):
        self.controller.mouse_wheel_moved(evt.GetWheelRotation(), evt.ControlDown(), evt.ShiftDown(), evt.AltDown(), evt.GetX())

    def _on_key_down(self, evt):
        self.controller.key_down(evt.GetKeyCode(), evt.AltDown())
        evt.Skip()

    def _on_key_up(self, evt):
        self.controller.key_up(evt.GetKeyCode())