#   Programmer: Franz Steinhaeusler
#   E-mail:     francescoa@users.sourceforge.net
#   Note:       You must reply to the verification e-mail to get through.
#
#   Copyright 2005 Franz Steinhaeusler
#
#   Distributed under the terms of the GPL (GNU Public License)
#
#    DrPython is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

# Version 0.0.0 07.01.2005 ... initial version
#Plugin
#ScrollFunctions

#Version: 0.0.1, 08.04.2007.

import wx

def Plugin(DrFrame):

    def OnScrollToBegin (event):
        curline = DrFrame.txtDocument.GetCurrentLine()
        DrFrame.txtDocument.ScrollToLine(curline)
        return True
        #print "Scroll to begin"

    def OnScrollToMiddle (event):
        curline = DrFrame.txtDocument.GetCurrentLine()
        DrFrame.txtDocument.ScrollToLine(curline - DrFrame.txtDocument.LinesOnScreen ()/ 2 )
        return True
        #print "Scroll to middle"

    def OnScrollToEnd (event):
        curline = DrFrame.txtDocument.GetCurrentLine()
        DrFrame.txtDocument.ScrollToLine(curline - DrFrame.txtDocument.LinesOnScreen () + 1)
        return True
        #print "Scroll to end"

    ID_SCROLL_TO_BEGIN = DrFrame.GetNewId()
    ID_SCROLL_TO_MIDDLE = DrFrame.GetNewId()
    ID_SCROLL_TO_END = DrFrame.GetNewId()

    DrFrame.Bind(wx.EVT_MENU, OnScrollToBegin, id = ID_SCROLL_TO_BEGIN)
    DrFrame.Bind(wx.EVT_MENU, OnScrollToMiddle, id = ID_SCROLL_TO_MIDDLE)
    DrFrame.Bind(wx.EVT_MENU, OnScrollToEnd, id = ID_SCROLL_TO_END)

    DrFrame.AddPluginShortcutFunction("ScrollFunctions", "Scroll To Begin", OnScrollToBegin)
    DrFrame.AddPluginShortcutFunction("ScrollFunctions", "Scroll To Middle", OnScrollToMiddle)
    DrFrame.AddPluginShortcutFunction("ScrollFunctions", "Scroll To End", OnScrollToEnd)

    DrFrame.AddPluginPopUpMenuFunction("ScrollFunctions", "Scroll To Begin", OnScrollToBegin)
    DrFrame.AddPluginPopUpMenuFunction("ScrollFunctions", "Scroll To Middle", OnScrollToMiddle)
    DrFrame.AddPluginPopUpMenuFunction("ScrollFunctions", "Scroll To End", OnScrollToEnd)


    DrFrame.LoadPluginShortcuts('ScrollFunctions')
    scrollmenu = wx.Menu()
    scrollmenu.Append(ID_SCROLL_TO_BEGIN, DrFrame.GetPluginMenuLabel('ScrollFunctions', 'Scroll To Begin', 'Scroll To Begin'))
    scrollmenu.Append(ID_SCROLL_TO_MIDDLE, DrFrame.GetPluginMenuLabel('ScrollFunctions', 'Scroll To Middle', 'Scroll To Middle'))
    scrollmenu.Append(ID_SCROLL_TO_END, DrFrame.GetPluginMenuLabel('ScrollFunctions', 'Scroll To End', 'Scroll To End'))

    DrFrame.viewmenu.AppendSeparator()
    DrFrame.viewmenu.AppendMenu(DrFrame.GetNewId(), "Scroll to", scrollmenu)

