コード例 #1
0
class PreviewCanvas(object):
    def __init__(self,
                 parent,
                 sf,
                 notations,
                 sd=SongDecorator(),
                 embedded=False):
        object.__init__(self)
        show_link = not embedded and platform.system() != 'Linux'
        self.link = None
        if show_link:
            self.main_panel = wx.Window(parent)
            bSizer = wx.BoxSizer(wx.VERTICAL)
            self.link = wx.adv.HyperlinkCtrl(
                self.main_panel, 0, _("Copy formatted song to clipboard"), '')
            tt = wx.ToolTip(
                _("Copy formatted song to clipboard, so that it can be pasted in any program and printed"
                  ))
            self.link.SetToolTip(tt)
            bSizer.Add(self.link, 0, wx.EXPAND)
            parent = self.main_panel
        self.panel = wx.ScrolledWindow(parent, style=wx.BORDER_DOUBLE)
        self.panel.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
        self.pixedScrolled = 10
        self.panel.SetScrollbars(self.pixedScrolled, self.pixedScrolled, 0, 0)
        self.panel.Bind(wx.EVT_PAINT, self.OnPaint, self.panel)
        self.panel.SetBackgroundColour(wx.WHITE)
        self.text = ""
        if show_link:
            bSizer.Add(self.panel, 1, wx.EXPAND)
        else:
            self.main_panel = self.panel
        #SongFormat
        self.renderer = Renderer(sf, sd, notations)
        if show_link:
            self.main_panel.SetSizer(bSizer)
            self.main_panel.Layout()

    def OnPaint(self, e):
        #print("OnPaint")
        dc = wx.AutoBufferedPaintDC(self.panel)
        self.panel.PrepareDC(dc)
        dc.SetBackground(wx.WHITE_BRUSH)
        dc.Clear()
        w, h = self.renderer.Render(self.text, dc)
        self.panel.SetVirtualSize(wx.Size(w, h))

    def Refresh(self, text):
        self.text = text
        self.panel.Refresh()

    def SetDecorator(self, sd):
        self.renderer.SetDecorator(sd)