Center At Cursor Example

This example shows how to scroll the timeline to move the clicked date to the center of the screen.

It contains three files
  • center_at_cursor_example.py (Contains the main program)
  • canvas.py (User defined Canvas class)
  • timelineadaptor.py (Code needed to access the Timeline library)

center_at_cursor_example.py

"""
This example displays the tutorial timeline in a wx.Frame window
using a TimelineCanvas object.

By clicking with the cursor on a date in the timeline, the timeline will be scrolled
to a position where the selected date is in the center of the timeline.
"""


import wx

import timelineadaptor
from timelinelib.db import db_open

from canvas import Canvas


class MainFrame(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, size=(800, 400))
        self._display_example_timeline()

    def _display_example_timeline(self):
        path_to_timeline_file = ":tutorial:"
        db_open(path_to_timeline_file).display_in_canvas(Canvas(self))


if __name__ == "__main__":
    app = wx.App()
    frame = MainFrame()
    frame.Show()
    app.MainLoop()

canvas.py

"""
The user defined Canvas class inherited from TimelineCanvas.
"""


import wx

from timelinelib.canvas import TimelineCanvas


class Canvas(TimelineCanvas):

    def __init__(self, parent):
        self._parent = parent
        TimelineCanvas.__init__(self, parent)
        self.Bind(wx.EVT_LEFT_DOWN, self._on_left_down)

    def _on_left_down(self, evt):
        self.CenterAtCursor(evt)

timelineadaptor.py

def make_sure_timelinelib_can_be_imported():
    import os
    import sys
    sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "..", "..", "source"))


def install_gettext_in_builtin_namespace():
    def _(message):
        return message
    import builtins
    if not "_" in builtins.__dict__:
        builtins.__dict__["_"] = _


make_sure_timelinelib_can_be_imported()
install_gettext_in_builtin_namespace()