From 4b1ffb512542c33435c257dba38f44382e9e084a Mon Sep 17 00:00:00 2001 From: robin Date: Mon, 21 Nov 2016 19:07:16 -0500 Subject: [PATCH] onScrollChanged event, get/set scroll position of sourcePage control --- server/wxLdb/ui/mainWindow.lua | 9 ++++++++- server/wxLdb/ui/sourcePage.lua | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/server/wxLdb/ui/mainWindow.lua b/server/wxLdb/ui/mainWindow.lua index 459b017..5d9d176 100644 --- a/server/wxLdb/ui/mainWindow.lua +++ b/server/wxLdb/ui/mainWindow.lua @@ -66,7 +66,13 @@ function meta.__index:init() self.idleUpdates = {} self.frame:Connect( wx.wxEVT_IDLE, function( event ) self:onIdleUpdate_( event ) end ) - self.events = { onBreakPointChanged = {}, onFileOpen = {}, onFileClosed = {}, onApplicationExiting = {} } + self.events = { + onBreakPointChanged = {}, + onFileOpen = {}, + onFileClosed = {}, + onApplicationExiting = {}, + onScrollChanged = {} + } end function meta.__index:show( show ) @@ -272,6 +278,7 @@ function meta.__index:getSourcePage( source ) page.pageIdx = self.sourceBook:GetPageCount() self.sourceBook:AddPage( page:getRoot(), name ) page:registerEvent( "onBreakPointChanged", function( ... ) self:runEvents_( "onBreakPointChanged", source, ... ) end ) + page:registerEvent( "onScrollChanged", function( ... ) self:runEvents_( "onScrollChanged", source, ... ) end ) end return page end diff --git a/server/wxLdb/ui/sourcePage.lua b/server/wxLdb/ui/sourcePage.lua index 42a9bfe..d426676 100644 --- a/server/wxLdb/ui/sourcePage.lua +++ b/server/wxLdb/ui/sourcePage.lua @@ -5,6 +5,8 @@ local ui = editor = require( "ui.editor" ), } +local wx = require( "wx" ) + local lfs = require( "lfs" ) local assert = assert @@ -23,7 +25,10 @@ function new( parent, source ) local page = {} setmetatable( page, meta ) page.editor = ui.editor.new( parent ) - page.events = { onBreakPointChanged = {} } + page.events = { + onBreakPointChanged = {}, + onScrollChanged = {}, + } page:setSource_( source ) page.editor.breakpointCallback = function( line ) page:runEvents_( "onBreakPointChanged", line ) @@ -53,6 +58,9 @@ function meta.__index:update() assert( string.sub( self.source, 1, 1 ) == "@" ) local fileName = string.sub( self.source, 2 ) + local scrollPosition = self:GetScrollPos() + self:runEvents_( "onScrollChanged", scrollPosition ) + local newDate = lfs.attributes( fileName, "modification" ) or 0 if newDate > self.sourceDate then print( "reloading source file "..fileName ) @@ -78,6 +86,14 @@ function meta.__index:getFocus() return ed:GetCurrentLine() + 1 end +function meta.__index:SetScrollPos( pos ) + self.editor.editor:LineScroll(0, pos) +end + +function meta.__index:GetScrollPos() + return self.editor.editor:GetScrollPos( wx.wxVERTICAL ) +end + function meta.__index:setCurrentLine( line ) local editor = self.editor.editor if self.currentLine == line then return end