Hello. I'm trying to make a GUI for GPS chart and track display. I worked this
code up from bits taken from samples, and reference to the wxWidgets
descriptions of functions and such, and some reductions of my own devising in
the part that loads and displays the chart image. I can't find any indication
that this mailing lists accepts attachments so I've risked wordwrap mangling
with the script at the end of this message.
I don't have the grounding to understand the details behind wxLua, I can only
learn from example (and lots of trial and error), and although I made this work
very well for dragging the content like a page in a PDF reader, it's obviously
not constructed right, and I've driven myself alternately crazy and stupified
for weeks and failed to improve it no matter what snippets I find and try.
Playing with scroll events and refreshes and updates all fail, they'd just add
weight even if they did work, this is too broken for that to help... That it
works at all gives a good idea what I want, but I'd like to see how it should
be done.
To make it show a 'chart', edit the IMAGE:LoadFile line to point to some large
image. The diagonal red line, top left, has to display on the chart at all
times unless asked not to. I worked out the whole track draw code, but I left
only the simplest content to save you time looking at the code.
BLANK is an unseen panel of smallest possible size, which is shown and hidden
each time the window content is dragged around. It was a tortuous discovery,
but it makes the redraw of the chart and track work as I want them. They also
redraw as I want if the frame is obscured and uncovered, but not when scrolling
with any method. The scroll window itself won't work without the status bar! No
idea why, but it makes the scroll window about 2 pixels wide if absent! If
anything proves just how broken this is, it's that status bar weirdness.
After several tens of loads during a session, the chart image fails to draw,
suggesting that some resource is being created and not destroyed when it should
be, and I can't tell which, if any.
Ultimately I want to zoom the view in and out as well as pan it, so if you have
clues on how to do that, please let me know.
SCRIPT:
function main()
FRAME=wx.wxFrame(wx.NULL,-1,"GPS
Plot",wx.wxDefaultPosition,wx.wxSize(1024,768),wx.wxDEFAULT_FRAME_STYLE)
FRAME:Centre() FRAME:Show(true)
FRAME:CreateStatusBar()
IMAGE=wx.wxBitmap():ConvertToImage()
IMAGE:LoadFile("Chart.jpg")
local X,Y=IMAGE:GetWidth(),IMAGE:GetHeight()
SCROLL=wx.wxScrolledWindow(FRAME,-1) SCROLL:SetScrollbars(1,1,X,Y)
CHART=wx.wxStaticBitmap(SCROLL,-1,wx.wxBitmap(IMAGE),wx.wxPoint(0,0),wx.wxSize(X,Y))
IMAGE:Destroy()
LAYER=wx.wxPanel(SCROLL,-1,wx.wxPoint(0,0),wx.wxSize(X,Y))
BLANK=wx.wxPanel(SCROLL,-1,wx.wxPoint(0,0),wx.wxSize(0,0))
CHART:Connect(wx.wxEVT_LEFT_DOWN,OnLeftDown)
CHART:Connect(wx.wxEVT_MOTION,OnMotion)
LAYER:Connect(wx.wxEVT_PAINT,OnPaint)
end
--==================== Mouse Handling ====================--
MX,MY,VX,VY=0,0,0,0
function OnLeftDown(event)
MX,MY,VX,VY=wx.wxGetMousePosition():GetX(),wx.wxGetMousePosition():GetY(),SCROLL:GetViewStart()
end
function OnMotion(event)
if event:LeftIsDown() then
SCROLL:Scroll(VX+MX-wx.wxGetMousePosition():GetX(),VY+MY-wx.wxGetMousePosition():GetY())
BLANK:Show(nil) BLANK:Show(1)
end
end
--==================== Track Drawing =====================--
function OnPaint(event)
local DC=wx.wxPaintDC(LAYER)
DC:SetPen(wx.wxPen(wx.wxColour(255,0,0),1,wx.wxSOLID))
DC:DrawLine(0,0,600,600)
DC:delete()
end
--====================================================================================================================--
main()
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
wxlua-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wxlua-users