LazMapViewer: Combine the units of the two fulldemo projects.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@9326 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
d7ebdbad20
commit
20997f05cc
547
components/lazmapviewer/examples/fulldemo/configframe.lfm
Normal file
547
components/lazmapviewer/examples/fulldemo/configframe.lfm
Normal file
@ -0,0 +1,547 @@
|
||||
object CfgFrame: TCfgFrame
|
||||
Left = 0
|
||||
Height = 682
|
||||
Top = 0
|
||||
Width = 287
|
||||
ClientHeight = 682
|
||||
ClientWidth = 287
|
||||
TabOrder = 0
|
||||
DesignLeft = 1150
|
||||
DesignTop = 210
|
||||
object LblProviders: TLabel
|
||||
AnchorSideLeft.Control = cmbProviders
|
||||
AnchorSideTop.Control = Owner
|
||||
Left = 4
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 52
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Providers:'
|
||||
FocusControl = cmbProviders
|
||||
ParentColor = False
|
||||
end
|
||||
object cmbProviders: TComboBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = LblProviders
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = btnLoadMapProviders
|
||||
Left = 4
|
||||
Height = 23
|
||||
Top = 25
|
||||
Width = 213
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 2
|
||||
DropDownCount = 24
|
||||
ItemHeight = 15
|
||||
Style = csDropDownList
|
||||
TabOrder = 0
|
||||
OnChange = cmbProvidersChange
|
||||
end
|
||||
object btnLoadMapProviders: TSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbProviders
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = btnSaveMapProviders
|
||||
Left = 219
|
||||
Height = 28
|
||||
Top = 22
|
||||
Width = 30
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 2
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000003591
|
||||
DBFA439FDDFA439FDDFA429FDDFA429EDDFA419EDCFA419EDCFA419EDCFA419E
|
||||
DCFA419EDCFA419EDCFA419EDCFA3792DAFB3080DF100000000000000000429C
|
||||
DEF76EC7EBFF6DC7EAFF6BC6EAFF6AC5E9FF68C4E9FF67C3E8FF65C2E8FF64C1
|
||||
E7FF63C0E7FF61BFE6FF60BEE5FF51AFE3FE308CD6450000000000000000409A
|
||||
DDF47CD0F1FF7BD0F0FF7ACFEFFF79CEEFFF77CDEEFF76CCEEFF74CBEDFF73CA
|
||||
EDFF71C9ECFF70C8ECFF6EC7EBFF6AC3E9FF3993DB8E00000000000000003E99
|
||||
DCEC7ECEF1FF8AD9F6FF89D8F5FF87D7F4FF86D6F4FF84D5F3FF83D5F3FF81D4
|
||||
F2FF80D3F2FF7ED2F1FF7DD1F1FF7BD0F0FF439ADEB40000000000000000409B
|
||||
DDE470C1EDFF99E2FBFF97E2FBFF96E1FAFF94E0F9FF93DFF9FF91DEF8FF90DD
|
||||
F8FF8EDCF7FF8DDBF7FF8CDAF6FF8AD9F6FF4EA4E2CD00000000000000004AA5
|
||||
E0DF61B3E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA2E8FEFFA0E7FEFF9FE6
|
||||
FDFF9DE5FDFF9CE4FCFF9AE3FCFF99E2FBFF5FB3E9E33080DF100000000051A8
|
||||
E2DF5EB2E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9
|
||||
FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFF84CFF5FB348CDA450000000058AD
|
||||
E5DF60B3E8FF61B3E9FF61B3E9FF60B2E9FF60B2E8FF60B2E8FF5FB1E8FF5FB1
|
||||
E8FF5EB1E8FF5EB1E8FF5EB1E7FF59ADE7FB55A9E5E33B94DC85000000005FB0
|
||||
E8DF9DE4FBFF9AE3FAFF97E1F9FF94DFF8FF91DDF7FF8EDBF5FF8BD9F4FF88D8
|
||||
F3FF85D6F2FF82D4F1FF7FD2F0FF4FA7E1DF00000000000000000000000061B1
|
||||
E8DFA6EAFFFFA6EAFFFFA6EAFFFFA3E8FEFF7AC6F1ED59ACE6DF58AAE5DF57AA
|
||||
E5DF56AAE5DF53A9E4DF53A8E4DF3C94DCE20000000000000000000000004096
|
||||
DEE25DAEE7DF5DAEE7DF5DAEE7DF57A9E6DF4399DF6E00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000
|
||||
}
|
||||
OnClick = btnLoadMapProvidersClick
|
||||
end
|
||||
object btnSaveMapProviders: TSpeedButton
|
||||
AnchorSideLeft.Control = btnLoadMapProviders
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cmbProviders
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 251
|
||||
Height = 28
|
||||
Top = 22
|
||||
Width = 32
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 4
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000A4653455A465
|
||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000A46534FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000
|
||||
}
|
||||
OnClick = btnSaveMapProvidersClick
|
||||
end
|
||||
object gbProxy: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = cmbProviders
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 185
|
||||
Top = 56
|
||||
Width = 279
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Around = 4
|
||||
Caption = 'Proxy'
|
||||
ClientHeight = 165
|
||||
ClientWidth = 275
|
||||
TabOrder = 1
|
||||
object lblProxyHost: TLabel
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = edProxyHost
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 65
|
||||
Width = 28
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'Host:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyHost: TEdit
|
||||
AnchorSideLeft.Control = edProxyUserName
|
||||
AnchorSideTop.Control = rbProxyData
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 61
|
||||
Width = 184
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 3
|
||||
end
|
||||
object lblProxyPort: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = seProxyPort
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 90
|
||||
Width = 22
|
||||
Caption = 'Port'
|
||||
ParentColor = False
|
||||
end
|
||||
object seProxyPort: TSpinEdit
|
||||
AnchorSideLeft.Control = lblProxyUserName
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edProxyHost
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 86
|
||||
Width = 70
|
||||
BorderSpacing.Top = 2
|
||||
MaxValue = 65535
|
||||
TabOrder = 4
|
||||
end
|
||||
object lblProxyUserName: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = edProxyUserName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 115
|
||||
Width = 59
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'User name:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyUserName: TEdit
|
||||
AnchorSideLeft.Control = lblProxyUserName
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = seProxyPort
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 111
|
||||
Width = 184
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 5
|
||||
end
|
||||
object lblProxyPassword: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = edProxyPassword
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 140
|
||||
Width = 50
|
||||
Caption = 'Password'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyPassword: TEdit
|
||||
AnchorSideLeft.Control = edProxyUserName
|
||||
AnchorSideTop.Control = edProxyUserName
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 136
|
||||
Width = 184
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
TabOrder = 6
|
||||
end
|
||||
object rbProxyData: TRadioButton
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = rbSystemProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 42
|
||||
Width = 74
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Proxy data'
|
||||
TabOrder = 2
|
||||
OnChange = rbProxyDataChange
|
||||
end
|
||||
object rbNoProxy: TRadioButton
|
||||
AnchorSideLeft.Control = gbProxy
|
||||
AnchorSideTop.Control = gbProxy
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 67
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'No proxy'
|
||||
TabOrder = 0
|
||||
OnChange = rbNoProxyChange
|
||||
end
|
||||
object rbSystemProxy: TRadioButton
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = rbNoProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 21
|
||||
Width = 110
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Use system proxy'
|
||||
Checked = True
|
||||
TabOrder = 1
|
||||
TabStop = True
|
||||
OnChange = rbSystemProxyChange
|
||||
end
|
||||
end
|
||||
object cbZoomToCursor: TCheckBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = gbProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 249
|
||||
Width = 100
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 16
|
||||
Caption = 'Zoom to cursor'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 2
|
||||
OnChange = cbZoomToCursorChange
|
||||
end
|
||||
object cbUseThreads: TCheckBox
|
||||
AnchorSideLeft.Control = cbZoomToCursor
|
||||
AnchorSideTop.Control = cbZoomToCursor
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 272
|
||||
Width = 79
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Use threads'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 3
|
||||
OnChange = cbUseThreadsChange
|
||||
end
|
||||
object cbDoubleBuffer: TCheckBox
|
||||
AnchorSideLeft.Control = cbUseThreads
|
||||
AnchorSideTop.Control = cbUseThreads
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 295
|
||||
Width = 85
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'DblBuffering'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 4
|
||||
OnChange = cbDoubleBufferChange
|
||||
end
|
||||
object cbDebugTiles: TCheckBox
|
||||
AnchorSideLeft.Control = cbDoubleBuffer
|
||||
AnchorSideTop.Control = cbDoubleBuffer
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 318
|
||||
Width = 77
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Debug tiles'
|
||||
TabOrder = 5
|
||||
OnChange = cbDebugTilesChange
|
||||
end
|
||||
object cbCyclicView: TCheckBox
|
||||
AnchorSideLeft.Control = cbZoomToCursor
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = cbZoomToCursor
|
||||
Left = 120
|
||||
Height = 19
|
||||
Top = 249
|
||||
Width = 77
|
||||
Caption = 'Cyclic view'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 6
|
||||
OnChange = cbCyclicViewChange
|
||||
end
|
||||
object cbPreviewTiles: TCheckBox
|
||||
AnchorSideLeft.Control = cbCyclicView
|
||||
AnchorSideTop.Control = cbUseThreads
|
||||
Left = 120
|
||||
Height = 19
|
||||
Top = 272
|
||||
Width = 83
|
||||
Caption = 'Preview tiles'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 7
|
||||
OnChange = cbPreviewTilesChange
|
||||
end
|
||||
object clbBackColor: TColorButton
|
||||
AnchorSideLeft.Control = cbCyclicView
|
||||
AnchorSideTop.Control = cbDoubleBuffer
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 120
|
||||
Height = 28
|
||||
Top = 290
|
||||
Width = 108
|
||||
BorderWidth = 2
|
||||
ButtonColorAutoSize = False
|
||||
ButtonColorSize = 15
|
||||
ButtonColor = clWhite
|
||||
Caption = 'Map backgr.'
|
||||
Margin = 4
|
||||
OnColorChanged = clbBackColorColorChanged
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = cbDebugTiles
|
||||
AnchorSideTop.Control = cbDebugTiles
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 2
|
||||
Top = 343
|
||||
Width = 257
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Shape = bsTopLine
|
||||
end
|
||||
object rgPOIMode: TRadioGroup
|
||||
AnchorSideLeft.Control = cmbProviders
|
||||
AnchorSideTop.Control = Bevel1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 128
|
||||
Top = 351
|
||||
Width = 279
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoFill = False
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Right = 4
|
||||
Caption = 'POI Mode'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 4
|
||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 4
|
||||
ClientHeight = 108
|
||||
ClientWidth = 275
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'default drawing'
|
||||
'default POI image'
|
||||
'image from imagelist'
|
||||
'custom drawing'
|
||||
)
|
||||
TabOrder = 8
|
||||
OnClick = rgPOIModeClick
|
||||
object Bevel3: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 4
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object btnSelectPOIImage: TButton
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 29
|
||||
Width = 66
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
Caption = 'Select...'
|
||||
Enabled = False
|
||||
TabOrder = 4
|
||||
OnClick = btnSelectPOIImageClick
|
||||
end
|
||||
object Bevel4: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 54
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object Bevel5: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 79
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
end
|
||||
object btnPOITextFont: TButton
|
||||
AnchorSideLeft.Control = rgPOIMode
|
||||
AnchorSideTop.Control = rgPOIMode
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 30
|
||||
Top = 487
|
||||
Width = 87
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'POI text font'
|
||||
TabOrder = 9
|
||||
OnClick = btnPOITextFontClick
|
||||
end
|
||||
object LblPOITextBgColor: TLabel
|
||||
AnchorSideLeft.Control = btnPOITextFont
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPOITextFont
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 97
|
||||
Height = 15
|
||||
Top = 495
|
||||
Width = 39
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Backgr.'
|
||||
ParentColor = False
|
||||
end
|
||||
object cbPOITextBgColor: TColorBox
|
||||
AnchorSideLeft.Control = LblPOITextBgColor
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = btnPOITextFont
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = rgPOIMode
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 142
|
||||
Height = 21
|
||||
Top = 492
|
||||
Width = 141
|
||||
NoneColorColor = clWhite
|
||||
Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
ItemHeight = 15
|
||||
TabOrder = 10
|
||||
OnChange = cbPOITextBgColorChange
|
||||
end
|
||||
object OpenPictureDialog: TOpenPictureDialog
|
||||
Left = 184
|
||||
Top = 344
|
||||
end
|
||||
object FontDialog: TFontDialog
|
||||
MinFontSize = 0
|
||||
MaxFontSize = 0
|
||||
Left = 40
|
||||
Top = 528
|
||||
end
|
||||
end
|
359
components/lazmapviewer/examples/fulldemo/configframe.pas
Normal file
359
components/lazmapviewer/examples/fulldemo/configframe.pas
Normal file
@ -0,0 +1,359 @@
|
||||
unit ConfigFrame;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, IniFiles,
|
||||
Graphics,
|
||||
Forms, Controls, StdCtrls, Buttons, Dialogs, ExtCtrls, ColorBox, ExtDlgs, Spin,
|
||||
mvMapViewer, mvEngine,
|
||||
globals;
|
||||
|
||||
type
|
||||
{ TCfgFrame }
|
||||
|
||||
TCfgFrame = class(TFrame)
|
||||
Bevel1: TBevel;
|
||||
Bevel3: TBevel;
|
||||
Bevel4: TBevel;
|
||||
Bevel5: TBevel;
|
||||
btnLoadMapProviders: TSpeedButton;
|
||||
btnPOITextFont: TButton;
|
||||
btnSaveMapProviders: TSpeedButton;
|
||||
btnSelectPOIImage: TButton;
|
||||
cbCyclicView: TCheckBox;
|
||||
cbDebugTiles: TCheckBox;
|
||||
cbDoubleBuffer: TCheckBox;
|
||||
cbPOITextBgColor: TColorBox;
|
||||
cbPreviewTiles: TCheckBox;
|
||||
cmbProviders: TComboBox;
|
||||
cbUseThreads: TCheckBox;
|
||||
cbZoomToCursor: TCheckBox;
|
||||
clbBackColor: TColorButton;
|
||||
edProxyHost: TEdit;
|
||||
edProxyPassword: TEdit;
|
||||
edProxyUserName: TEdit;
|
||||
FontDialog: TFontDialog;
|
||||
gbProxy: TGroupBox;
|
||||
LblPOITextBgColor: TLabel;
|
||||
LblProviders: TLabel;
|
||||
lblProxyHost: TLabel;
|
||||
lblProxyPassword: TLabel;
|
||||
lblProxyPort: TLabel;
|
||||
lblProxyUserName: TLabel;
|
||||
OpenPictureDialog: TOpenPictureDialog;
|
||||
rbNoProxy: TRadioButton;
|
||||
rbProxyData: TRadioButton;
|
||||
rbSystemProxy: TRadioButton;
|
||||
rgPOIMode: TRadioGroup;
|
||||
seProxyPort: TSpinEdit;
|
||||
procedure btnLoadMapProvidersClick(Sender: TObject);
|
||||
procedure btnPOITextFontClick(Sender: TObject);
|
||||
procedure btnSaveMapProvidersClick(Sender: TObject);
|
||||
procedure btnSelectPOIImageClick(Sender: TObject);
|
||||
procedure cbCyclicViewChange(Sender: TObject);
|
||||
procedure cbDebugTilesChange(Sender: TObject);
|
||||
procedure cbDoubleBufferChange(Sender: TObject);
|
||||
procedure cbPOITextBgColorChange(Sender: TObject);
|
||||
procedure cbPreviewTilesChange(Sender: TObject);
|
||||
procedure cbUseThreadsChange(Sender: TObject);
|
||||
procedure cbZoomToCursorChange(Sender: TObject);
|
||||
procedure clbBackColorColorChanged(Sender: TObject);
|
||||
procedure cmbProvidersChange(Sender: TObject);
|
||||
procedure rbNoProxyChange(Sender: TObject);
|
||||
procedure rgPOIModeClick(Sender: TObject);
|
||||
procedure rbProxyDataChange(Sender: TObject);
|
||||
procedure rbSystemProxyChange(Sender: TObject);
|
||||
private
|
||||
FMapView: TMapView;
|
||||
FPOIImage: TCustomBitmap;
|
||||
FDrawGPSPointEvent: TDrawGpsPointEvent;
|
||||
FUpdateLayersEvent: TNotifyEvent;
|
||||
function GetMapProviders: TStrings;
|
||||
function GetPOIMode: TPOIMode;
|
||||
function GetPOITextBkColor: TColor;
|
||||
procedure SetMapView(AValue: TMapView);
|
||||
protected
|
||||
procedure DoUpdateLayers; virtual;
|
||||
procedure UpdateDownloadEngineProxy;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
|
||||
procedure ReadFromIni(ini: TCustomIniFile); virtual;
|
||||
procedure WriteToIni(ini: TCustomIniFile); virtual;
|
||||
|
||||
property MapView: TMapView read FMapView write SetMapView;
|
||||
property MapProviders: TStrings read GetMapProviders;
|
||||
property POIMode: TPOIMode read GetPOIMode;
|
||||
property POITextBkColor: TColor read GetPOITextBkColor;
|
||||
property OnDrawGPSPoint: TDrawGpsPointEvent read FDrawGPSPointEvent write FDrawGPSPointEvent;
|
||||
property OnUpdateLayers: TNotifyEvent read FUpdateLayersEvent write FUpdateLayersEvent;
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TCfgFrame }
|
||||
|
||||
constructor TCfgFrame.Create(AOwner: TComponent);
|
||||
var
|
||||
fn: String;
|
||||
begin
|
||||
inherited;
|
||||
|
||||
fn := Application.Location + 'mapmarker.png';
|
||||
if not FileExists(fn) then
|
||||
MessageDlg('Copy the file "mapmarker.png" from the source folder to the folder with the executable.',
|
||||
mtError, [mbOK], 0)
|
||||
else
|
||||
begin
|
||||
FPOIImage := TPortableNetworkGraphic.Create;
|
||||
FPOIImage.PixelFormat := pf32bit;
|
||||
FPOIImage.LoadFromFile(fn);
|
||||
end;
|
||||
end;
|
||||
|
||||
destructor TCfgFrame.Destroy;
|
||||
begin
|
||||
FPOIImage.Free;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.btnLoadMapProvidersClick(Sender: TObject);
|
||||
var
|
||||
fn: String;
|
||||
msg: String;
|
||||
begin
|
||||
fn := Application.Location + MAP_PROVIDER_FILENAME;
|
||||
if FileExists(fn) then begin
|
||||
if MapView.Engine.ReadProvidersFromXML(fn, msg) then begin
|
||||
MapView.GetMapProviders(cmbProviders.Items);
|
||||
cmbProviders.ItemIndex := 0;
|
||||
MapView.MapProvider := cmbProviders.Text;
|
||||
// sgLayers.Columns[1].PickList.Assign(cmbProviders.Items); // <<--- FIXME
|
||||
end else
|
||||
ShowMessage(msg);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.btnPOITextFontClick(Sender: TObject);
|
||||
begin
|
||||
FontDialog.Font.Assign(MapView.Font);
|
||||
if FontDialog.Execute then
|
||||
MapView.Font.Assign(FontDialog.Font);
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.btnSaveMapProvidersClick(Sender: TObject);
|
||||
begin
|
||||
MapView.Engine.WriteProvidersToXML(Application.Location + MAP_PROVIDER_FILENAME);
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.btnSelectPOIImageClick(Sender: TObject);
|
||||
begin
|
||||
OpenPictureDialog.Filter := 'PNG files|*.png|BMP files|*.bmp';
|
||||
OpenPictureDialog.DefaultExt := '.png';
|
||||
if OpenPictureDialog.Execute then
|
||||
begin
|
||||
FPOIImage.LoadFromFile(OpenPictureDialog.FileName);
|
||||
MapView.POIImage.Assign(FPOIImage);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbCyclicViewChange(Sender: TObject);
|
||||
begin
|
||||
MapView.Cyclic := cbCyclicView.Checked;
|
||||
DoUpdateLayers;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbDebugTilesChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DebugTiles := CbDebugTiles.Checked;
|
||||
MapView.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbDoubleBufferChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DoubleBuffered := cbDoubleBuffer.Checked;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbPOITextBgColorChange(Sender: TObject);
|
||||
begin
|
||||
MapView.POITextBgColor := cbPOITextBgColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbPreviewTilesChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DrawPreviewTiles := cbPreviewTiles.Checked;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbUseThreadsChange(Sender: TObject);
|
||||
begin
|
||||
MapView.UseThreads := cbUseThreads.Checked;
|
||||
DoUpdateLayers;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.clbBackColorColorChanged(Sender: TObject);
|
||||
begin
|
||||
MapView.InactiveColor := clbBackColor.ButtonColor;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cbZoomToCursorChange(Sender: TObject);
|
||||
begin
|
||||
MapView.ZoomToCursor := CbZoomToCursor.Checked;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.cmbProvidersChange(Sender: TObject);
|
||||
begin
|
||||
MapView.MapProvider := cmbProviders.Text;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.DoUpdateLayers;
|
||||
begin
|
||||
if Assigned(FUpdateLayersEvent) then
|
||||
FUpdateLayersEvent(Self);
|
||||
end;
|
||||
|
||||
function TCfgFrame.GetMapProviders: TStrings;
|
||||
begin
|
||||
Result := cmbProviders.Items;
|
||||
end;
|
||||
|
||||
function TCfgFrame.GetPOIMode: TPOIMode;
|
||||
begin
|
||||
Result := TPOIMode(rgPOIMode.ItemIndex);
|
||||
end;
|
||||
|
||||
function TCfgFrame.GetPOITextBkColor: TColor;
|
||||
begin
|
||||
Result := cbPOITextBgColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.ReadFromIni(ini: TCustomIniFile);
|
||||
var
|
||||
n: Integer;
|
||||
s: String;
|
||||
begin
|
||||
n := ini.ReadInteger('Proxy', 'UseProxy', 0);
|
||||
case n of
|
||||
0: rbNoProxy.Checked := true;
|
||||
1: rbSystemProxy.Checked := true;
|
||||
2: rbProxyData.Checked := true;
|
||||
end;
|
||||
edProxyHost.Text := ini.ReadString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||
seProxyPort.Value := ini.ReadInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||
edProxyUserName.Text := ini.ReadString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||
edProxyPassword.Text := ini.ReadString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||
|
||||
UpdateDownloadEngineProxy;
|
||||
|
||||
// The following parameters already have been read by the main form,
|
||||
// we still must update the frame controls.
|
||||
MapView.GetMapProviders(cmbProviders.Items);
|
||||
cmbProviders.ItemIndex := cmbProviders.Items.IndexOf(MapView.MapProvider);
|
||||
clbBackColor.ButtonColor := MapView.InactiveColor;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.rbNoProxyChange(Sender: TObject);
|
||||
begin
|
||||
UpdateDownloadEngineProxy;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.rbProxyDataChange(Sender: TObject);
|
||||
begin
|
||||
UpdateDownloadEngineProxy;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.rbSystemProxyChange(Sender: TObject);
|
||||
begin
|
||||
UpdateDownloadEngineProxy;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.rgPOIModeClick(Sender: TObject);
|
||||
begin
|
||||
case rgPOIMode.ItemIndex of
|
||||
0: begin // default symbol
|
||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||
MapView.OnDrawGPSPoint := nil;
|
||||
end;
|
||||
1: begin // default POI image
|
||||
MapView.POIImage := FPOIImage;
|
||||
MapView.OnDrawGPSPoint := nil;
|
||||
end;
|
||||
2: begin // image from image list, to be applied to the next POI only
|
||||
//
|
||||
end;
|
||||
3: begin // custom-drawn symbol
|
||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||
MapView.OnDrawGPSPoint := FDrawGpsPointEvent;
|
||||
end;
|
||||
end;
|
||||
MapView.Invalidate;
|
||||
btnSelectPOIImage.Enabled := (rgPOIMode.ItemIndex = 1);
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.SetMapView(AValue: TMapView);
|
||||
begin
|
||||
if FMapView = AValue then
|
||||
exit;
|
||||
FMapView := AValue;
|
||||
if FMapView = nil then
|
||||
raise Exception.Create('[TCfgFrame.SetMapView] New mapview is nil.');
|
||||
|
||||
FMapView.GetMapProviders(cmbProviders.Items);
|
||||
cmbProviders.ItemIndex := cmbProviders.Items.IndexOf(FMapView.MapProvider);
|
||||
//sgLayers.Columns[1].PickList.Assign(CbProviders.Items); // << --- FIX ME
|
||||
FMapView.DoubleBuffered := true;
|
||||
FMapView.Zoom := 1;
|
||||
cbZoomToCursor.Checked := FMapView.ZoomToCursor;
|
||||
cbUseThreads.Checked := FMapView.UseThreads;
|
||||
cbDoubleBuffer.Checked := FMapView.DoubleBuffered;
|
||||
cbPOITextBgColor.Selected := FMapView.POITextBgColor;
|
||||
cbPOITextBgColor.ItemHeight := cmbProviders.ItemHeight + 2;
|
||||
clbBackColor.ButtonColor := FMapView.InactiveColor;
|
||||
|
||||
FDrawGPSpointEvent := FMapView.OnDrawGPSPoint;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.UpdateDownloadEngineProxy;
|
||||
begin
|
||||
if MapView.DownloadEngine.HasProxySupport then
|
||||
begin
|
||||
MapView.DownloadEngine.SetProxy(
|
||||
rbSystemProxy.Checked, rbProxyData.Checked,
|
||||
edProxyHost.Name, seProxyPort.Value, edProxyUserName.Text, edProxyPassword.Text
|
||||
);
|
||||
rbSystemProxy.Enabled := MapView.DownloadEngine.SupportsSystemProxy;
|
||||
lblProxyHost.Enabled := rbProxyData.Checked;
|
||||
edProxyHost.Enabled := rbProxyData.Checked;
|
||||
lblProxyPort.Enabled := rbProxyData.Checked;
|
||||
seProxyPort.Enabled := rbProxyData.Checked;
|
||||
lblProxyUserName.Enabled := rbProxyData.Checked;
|
||||
edProxyUserName.Enabled := rbProxyData.Checked;
|
||||
lblProxyPassword.Enabled := rbProxyData.Checked;
|
||||
edProxyPassword.Enabled := rbProxyData.Checked;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame.WriteToIni(ini: TCustomIniFile);
|
||||
var
|
||||
n: Integer = 0;
|
||||
begin
|
||||
if rbSystemProxy.Checked then
|
||||
n := 1
|
||||
else if rbProxyData.Checked then
|
||||
n := 2;
|
||||
ini.EraseSection('Proxy');
|
||||
ini.WriteInteger('Proxy', 'UseProxy', n);
|
||||
ini.WriteString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||
ini.WriteInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||
ini.WriteString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||
ini.WriteString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
@ -0,0 +1,139 @@
|
||||
inherited CfgFrame_with_addons: TCfgFrame_with_addons
|
||||
inherited LblProviders: TLabel
|
||||
AnchorSideTop.Control = Owner
|
||||
end
|
||||
inherited cmbProviders: TComboBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
end
|
||||
inherited btnSaveMapProviders: TSpeedButton
|
||||
AnchorSideRight.Control = Owner
|
||||
end
|
||||
inherited gbProxy: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = cbDownloadEngine
|
||||
AnchorSideRight.Control = Owner
|
||||
Top = 154
|
||||
BorderSpacing.Top = 6
|
||||
end
|
||||
inherited cbZoomToCursor: TCheckBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
Top = 347
|
||||
end
|
||||
inherited cbUseThreads: TCheckBox
|
||||
Top = 370
|
||||
end
|
||||
inherited cbDoubleBuffer: TCheckBox
|
||||
Top = 393
|
||||
end
|
||||
inherited cbDebugTiles: TCheckBox
|
||||
Top = 416
|
||||
end
|
||||
inherited cbCyclicView: TCheckBox
|
||||
Top = 347
|
||||
end
|
||||
inherited cbPreviewTiles: TCheckBox
|
||||
Top = 370
|
||||
end
|
||||
inherited clbBackColor: TColorButton
|
||||
Top = 388
|
||||
end
|
||||
inherited Bevel1: TBevel
|
||||
Top = 441
|
||||
end
|
||||
inherited rgPOIMode: TRadioGroup
|
||||
AnchorSideRight.Control = Owner
|
||||
Top = 449
|
||||
end
|
||||
inherited btnPOITextFont: TButton
|
||||
Top = 585
|
||||
end
|
||||
inherited LblPOITextBgColor: TLabel
|
||||
Top = 593
|
||||
end
|
||||
inherited cbPOITextBgColor: TColorBox
|
||||
Top = 590
|
||||
end
|
||||
object Label1: TLabel[17]
|
||||
AnchorSideLeft.Control = cbDrawingEngine
|
||||
AnchorSideTop.Control = cmbProviders
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 56
|
||||
Width = 86
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Drawing engine:'
|
||||
ParentColor = False
|
||||
end
|
||||
object cbDrawingEngine: TComboBox[18]
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 23
|
||||
Top = 73
|
||||
Width = 275
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
ItemHeight = 15
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'default'
|
||||
'RGBGraphics'
|
||||
'BGRABitmap'
|
||||
'LCL'
|
||||
)
|
||||
Style = csDropDownList
|
||||
TabOrder = 11
|
||||
Text = 'default'
|
||||
OnChange = cbDrawingEngineChange
|
||||
end
|
||||
object Label2: TLabel[19]
|
||||
AnchorSideLeft.Control = cbDownloadEngine
|
||||
AnchorSideTop.Control = cbDrawingEngine
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 15
|
||||
Top = 104
|
||||
Width = 96
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Download engine:'
|
||||
ParentColor = False
|
||||
end
|
||||
object cbDownloadEngine: TComboBox[20]
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Label2
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = Owner
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 23
|
||||
Top = 121
|
||||
Width = 275
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
ItemHeight = 15
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'default'
|
||||
'Synapse'
|
||||
'FpHTTPClient'
|
||||
'WinInet'
|
||||
)
|
||||
Style = csDropDownList
|
||||
TabOrder = 12
|
||||
Text = 'default'
|
||||
OnChange = cbDownloadEngineChange
|
||||
end
|
||||
inherited OpenPictureDialog: TOpenPictureDialog[21]
|
||||
end
|
||||
inherited FontDialog: TFontDialog[22]
|
||||
Top = 616
|
||||
end
|
||||
end
|
@ -0,0 +1,108 @@
|
||||
unit ConfigFrame_with_Addons;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
mvDrawingEngine, mvDE_RGBGraphics, mvDE_BGRA, mvDE_LCL,
|
||||
mvDLEFPC, mvDLEWin, mvDLESynapse,
|
||||
ConfigFrame;
|
||||
|
||||
type
|
||||
|
||||
{ TCfgFrame_with_addons }
|
||||
|
||||
TCfgFrame_with_addons = class(TCfgFrame)
|
||||
cbDownloadEngine: TComboBox;
|
||||
cbDrawingEngine: TComboBox;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
procedure cbDownloadEngineChange(Sender: TObject);
|
||||
procedure cbDrawingEngineChange(Sender: TObject);
|
||||
private
|
||||
FRGBGraphicsDrawingEngine: TMvRGBGraphicsDrawingEngine;
|
||||
FBGRADrawingEngine: TMvBGRADrawingEngine;
|
||||
FLCLDrawingEngine: TMvLCLDrawingEngine;
|
||||
FSynapseDownloadEngine: TMvDESynapse;
|
||||
FFpHttpClientDownloadEngine: TMvDEFPC;
|
||||
{$IFDEF MSWINDOWS}
|
||||
FWinDownloadEngine: TMvDEWin;
|
||||
{$ENDIF}
|
||||
|
||||
public
|
||||
destructor Destroy; override;
|
||||
|
||||
end;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TCfgFrame_with_addons }
|
||||
|
||||
destructor TCfgFrame_with_addons.Destroy;
|
||||
begin
|
||||
FreeAndNil(FRGBGraphicsDrawingEngine);
|
||||
FreeAndNil(FBGRADrawingEngine);
|
||||
FreeAndNil(FSynapseDownloadEngine);
|
||||
FreeAndNil(FFpHttpClientDownloadEngine);
|
||||
{$IFDEF MSWINDOWS}
|
||||
FreeAndNil(FWinDownloadEngine);
|
||||
{$ENDIF}
|
||||
inherited;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame_with_addons.cbDrawingEngineChange(Sender: TObject);
|
||||
begin
|
||||
case cbDrawingEngine.ItemIndex of
|
||||
0: MapView.DrawingEngine := nil;
|
||||
1: begin
|
||||
if FRGBGraphicsDrawingEngine = nil then
|
||||
FRGBGraphicsDrawingEngine := TMvRGBGraphicsDrawingEngine.Create(self);
|
||||
MapView.DrawingEngine := FRGBGraphicsDrawingEngine;
|
||||
end;
|
||||
2: begin
|
||||
if FBGRADrawingEngine = nil then
|
||||
FBGRADrawingEngine := TMvBGRADrawingEngine.Create(self);
|
||||
MapView.DrawingEngine := FBGRADrawingEngine;
|
||||
end;
|
||||
3: begin
|
||||
if FLCLDrawingEngine = nil then
|
||||
FLCLDrawingEngine := TMvLCLDrawingEngine.Create(self);
|
||||
MapView.DrawingEngine := FLCLDrawingEngine;
|
||||
end;
|
||||
end;
|
||||
DoUpdateLayers;
|
||||
end;
|
||||
|
||||
procedure TCfgFrame_with_addons.cbDownloadEngineChange(Sender: TObject);
|
||||
begin
|
||||
case cbDownloadEngine.ItemIndex of
|
||||
0: MapView.DownloadEngine := nil;
|
||||
1: begin
|
||||
if FSynapseDownloadEngine = nil then
|
||||
FSynapseDownloadEngine := TMvDESynapse.Create(self);
|
||||
MapView.DownloadEngine := FSynapseDownloadEngine;
|
||||
end;
|
||||
2: begin
|
||||
if FFpHttpClientDownloadEngine = nil then
|
||||
FFpHttpClientDownloadEngine := TMvDEFPC.Create(self);
|
||||
MapView.DownloadEngine := FFpHttpClientDownloadEngine;
|
||||
end;
|
||||
3: begin
|
||||
{$IFDEF MSWINDOWS}
|
||||
if FWinDownloadEngine = nil then
|
||||
FWinDownloadEngine := TMvDEWin.Create(Self);
|
||||
MapView.DownloadEngine := FWinDownloadEngine;
|
||||
{$ELSE}
|
||||
ShowMessage('WinInet download engine can only be used in Windows.');
|
||||
{$ENDIF}
|
||||
end;
|
||||
end;
|
||||
UpdateDownloadEngineProxy;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
@ -7,9 +7,14 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, mvEngine;
|
||||
|
||||
type
|
||||
TPOIMode = (pmDefaultDrawing, pmDefaultImage, pmImageList, pmCustomDrawing);
|
||||
|
||||
const
|
||||
MAP_PROVIDER_FILENAME = 'map-providers.xml';
|
||||
|
||||
const
|
||||
DistanceUnit_Names: array[TDistanceUnits] of string = ('m', 'km', 'miles');
|
||||
|
||||
var
|
||||
DistanceUnit: TDistanceUnits = duKilometers;
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
object MainForm: TMainForm
|
||||
Left = 381
|
||||
Left = 375
|
||||
Height = 586
|
||||
Top = 187
|
||||
Top = 177
|
||||
Width = 750
|
||||
Caption = 'LazMapViewer'
|
||||
ClientHeight = 586
|
||||
@ -40,9 +40,9 @@ object MainForm: TMainForm
|
||||
Height = 586
|
||||
Top = 0
|
||||
Width = 275
|
||||
ActivePage = PgConfig
|
||||
ActivePage = PgData
|
||||
Align = alRight
|
||||
TabIndex = 2
|
||||
TabIndex = 0
|
||||
TabOrder = 1
|
||||
object PgData: TTabSheet
|
||||
Caption = 'Data'
|
||||
@ -715,534 +715,6 @@ object MainForm: TMainForm
|
||||
end
|
||||
object PgConfig: TTabSheet
|
||||
Caption = 'Config'
|
||||
ClientHeight = 558
|
||||
ClientWidth = 267
|
||||
object LblProviders: TLabel
|
||||
AnchorSideLeft.Control = CbProviders
|
||||
AnchorSideTop.Control = PgConfig
|
||||
Left = 4
|
||||
Height = 15
|
||||
Top = 8
|
||||
Width = 52
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'Providers:'
|
||||
FocusControl = CbProviders
|
||||
ParentColor = False
|
||||
end
|
||||
object CbProviders: TComboBox
|
||||
AnchorSideLeft.Control = PgConfig
|
||||
AnchorSideTop.Control = LblProviders
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = BtnLoadMapProviders
|
||||
Left = 4
|
||||
Height = 23
|
||||
Top = 25
|
||||
Width = 193
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 2
|
||||
DropDownCount = 24
|
||||
ItemHeight = 15
|
||||
Style = csDropDownList
|
||||
TabOrder = 0
|
||||
OnChange = CbProvidersChange
|
||||
end
|
||||
object BtnLoadMapProviders: TSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CbProviders
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = BtnSaveMapProviders
|
||||
Left = 199
|
||||
Height = 28
|
||||
Top = 22
|
||||
Width = 30
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 2
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000003591
|
||||
DBFA439FDDFA439FDDFA429FDDFA429EDDFA419EDCFA419EDCFA419EDCFA419E
|
||||
DCFA419EDCFA419EDCFA419EDCFA3792DAFB3080DF100000000000000000429C
|
||||
DEF76EC7EBFF6DC7EAFF6BC6EAFF6AC5E9FF68C4E9FF67C3E8FF65C2E8FF64C1
|
||||
E7FF63C0E7FF61BFE6FF60BEE5FF51AFE3FE308CD6450000000000000000409A
|
||||
DDF47CD0F1FF7BD0F0FF7ACFEFFF79CEEFFF77CDEEFF76CCEEFF74CBEDFF73CA
|
||||
EDFF71C9ECFF70C8ECFF6EC7EBFF6AC3E9FF3993DB8E00000000000000003E99
|
||||
DCEC7ECEF1FF8AD9F6FF89D8F5FF87D7F4FF86D6F4FF84D5F3FF83D5F3FF81D4
|
||||
F2FF80D3F2FF7ED2F1FF7DD1F1FF7BD0F0FF439ADEB40000000000000000409B
|
||||
DDE470C1EDFF99E2FBFF97E2FBFF96E1FAFF94E0F9FF93DFF9FF91DEF8FF90DD
|
||||
F8FF8EDCF7FF8DDBF7FF8CDAF6FF8AD9F6FF4EA4E2CD00000000000000004AA5
|
||||
E0DF61B3E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA2E8FEFFA0E7FEFF9FE6
|
||||
FDFF9DE5FDFF9CE4FCFF9AE3FCFF99E2FBFF5FB3E9E33080DF100000000051A8
|
||||
E2DF5EB2E8FFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9
|
||||
FFFFA3E9FFFFA3E9FFFFA3E9FFFFA3E9FFFF84CFF5FB348CDA450000000058AD
|
||||
E5DF60B3E8FF61B3E9FF61B3E9FF60B2E9FF60B2E8FF60B2E8FF5FB1E8FF5FB1
|
||||
E8FF5EB1E8FF5EB1E8FF5EB1E7FF59ADE7FB55A9E5E33B94DC85000000005FB0
|
||||
E8DF9DE4FBFF9AE3FAFF97E1F9FF94DFF8FF91DDF7FF8EDBF5FF8BD9F4FF88D8
|
||||
F3FF85D6F2FF82D4F1FF7FD2F0FF4FA7E1DF00000000000000000000000061B1
|
||||
E8DFA6EAFFFFA6EAFFFFA6EAFFFFA3E8FEFF7AC6F1ED59ACE6DF58AAE5DF57AA
|
||||
E5DF56AAE5DF53A9E4DF53A8E4DF3C94DCE20000000000000000000000004096
|
||||
DEE25DAEE7DF5DAEE7DF5DAEE7DF57A9E6DF4399DF6E00000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000
|
||||
}
|
||||
OnClick = BtnLoadMapProvidersClick
|
||||
end
|
||||
object BtnSaveMapProviders: TSpeedButton
|
||||
AnchorSideLeft.Control = BtnLoadMapProviders
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CbProviders
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Control = PgConfig
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 231
|
||||
Height = 28
|
||||
Top = 22
|
||||
Width = 32
|
||||
Anchors = [akTop, akRight]
|
||||
BorderSpacing.Right = 4
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000A4653455A465
|
||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BDBAFFB6BD
|
||||
BAFFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA46534FFA465
|
||||
34FFA46534FFA46534FFA46534FFA46534FFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFECEE
|
||||
EEFFECEEEEFFECEEEEFFECEEEEFFECEEEEFFA46534FF00000000A46534FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000A46534FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959F3FF5959
|
||||
F3FF5959F3FF5959F3FF5959F3FF5959F3FFA46534FF00000000
|
||||
}
|
||||
OnClick = BtnSaveMapProvidersClick
|
||||
end
|
||||
object CbUseThreads: TCheckBox
|
||||
AnchorSideLeft.Control = PgConfig
|
||||
AnchorSideTop.Control = CbZoomToCursor
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 272
|
||||
Width = 79
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Use threads'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 4
|
||||
OnChange = CbUseThreadsChange
|
||||
end
|
||||
object CbDoubleBuffer: TCheckBox
|
||||
AnchorSideLeft.Control = CbUseThreads
|
||||
AnchorSideTop.Control = CbUseThreads
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 295
|
||||
Width = 85
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'DblBuffering'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 6
|
||||
OnChange = CbDoubleBufferChange
|
||||
end
|
||||
object CbDebugTiles: TCheckBox
|
||||
AnchorSideLeft.Control = CbDoubleBuffer
|
||||
AnchorSideTop.Control = CbDoubleBuffer
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 318
|
||||
Width = 77
|
||||
BorderSpacing.Top = 4
|
||||
Caption = 'Debug tiles'
|
||||
TabOrder = 7
|
||||
OnChange = CbDebugTilesChange
|
||||
end
|
||||
object BtnPOITextFont: TButton
|
||||
AnchorSideLeft.Control = rgPOIMode
|
||||
AnchorSideTop.Control = rgPOIMode
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 30
|
||||
Top = 487
|
||||
Width = 87
|
||||
BorderSpacing.Top = 8
|
||||
Caption = 'POI text font'
|
||||
TabOrder = 9
|
||||
OnClick = BtnPOITextFontClick
|
||||
end
|
||||
object cbPOITextBgColor: TColorBox
|
||||
AnchorSideLeft.Control = LblPOITextBgColor
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BtnPOITextFont
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 142
|
||||
Height = 21
|
||||
Top = 492
|
||||
Width = 119
|
||||
NoneColorColor = clWhite
|
||||
Style = [cbStandardColors, cbExtendedColors, cbIncludeNone, cbCustomColor, cbPrettyNames, cbCustomColors]
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Left = 6
|
||||
ItemHeight = 15
|
||||
TabOrder = 10
|
||||
OnChange = cbPOITextBgColorChange
|
||||
end
|
||||
object LblPOITextBgColor: TLabel
|
||||
AnchorSideLeft.Control = BtnPOITextFont
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = BtnPOITextFont
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 97
|
||||
Height = 15
|
||||
Top = 495
|
||||
Width = 39
|
||||
BorderSpacing.Left = 6
|
||||
Caption = 'Backgr.'
|
||||
ParentColor = False
|
||||
end
|
||||
object Bevel1: TBevel
|
||||
AnchorSideLeft.Control = CbDebugTiles
|
||||
AnchorSideTop.Control = CbDebugTiles
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 2
|
||||
Top = 343
|
||||
Width = 257
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 6
|
||||
Shape = bsTopLine
|
||||
end
|
||||
object rgPOIMode: TRadioGroup
|
||||
AnchorSideLeft.Control = CbProviders
|
||||
AnchorSideTop.Control = Bevel1
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 128
|
||||
Top = 351
|
||||
Width = 233
|
||||
AutoFill = False
|
||||
BorderSpacing.Top = 6
|
||||
Caption = 'POI Mode'
|
||||
ChildSizing.LeftRightSpacing = 12
|
||||
ChildSizing.TopBottomSpacing = 4
|
||||
ChildSizing.ShrinkHorizontal = crsScaleChilds
|
||||
ChildSizing.ShrinkVertical = crsScaleChilds
|
||||
ChildSizing.Layout = cclTopToBottomThenLeftToRight
|
||||
ChildSizing.ControlsPerLine = 4
|
||||
ClientHeight = 108
|
||||
ClientWidth = 229
|
||||
ItemIndex = 0
|
||||
Items.Strings = (
|
||||
'default drawing'
|
||||
'default POI image'
|
||||
'image from imagelist'
|
||||
'custom drawing'
|
||||
)
|
||||
TabOrder = 8
|
||||
OnClick = rgPOIModeClick
|
||||
object Bevel3: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 4
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object BtnSelectPOIImage: TButton
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 29
|
||||
Width = 66
|
||||
AutoSize = True
|
||||
BorderSpacing.Left = 8
|
||||
Caption = 'Select...'
|
||||
Enabled = False
|
||||
TabOrder = 4
|
||||
OnClick = BtnSelectPOIImageClick
|
||||
end
|
||||
object Bevel4: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 54
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
object Bevel5: TBevel
|
||||
Left = 151
|
||||
Height = 25
|
||||
Top = 79
|
||||
Width = 66
|
||||
Constraints.MaxHeight = 25
|
||||
Shape = bsSpacer
|
||||
end
|
||||
end
|
||||
object CbZoomToCursor: TCheckBox
|
||||
AnchorSideLeft.Control = PgConfig
|
||||
AnchorSideTop.Control = gbProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 19
|
||||
Top = 249
|
||||
Width = 100
|
||||
BorderSpacing.Left = 4
|
||||
BorderSpacing.Top = 8
|
||||
BorderSpacing.Right = 16
|
||||
Caption = 'Zoom to cursor'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 2
|
||||
OnChange = CbZoomToCursorChange
|
||||
end
|
||||
object cbCyclicView: TCheckBox
|
||||
AnchorSideLeft.Control = CbZoomToCursor
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = CbZoomToCursor
|
||||
Left = 120
|
||||
Height = 19
|
||||
Top = 249
|
||||
Width = 77
|
||||
Caption = 'Cyclic view'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 3
|
||||
OnChange = cbCyclicViewChange
|
||||
end
|
||||
object clbBackColor: TColorButton
|
||||
AnchorSideLeft.Control = cbCyclicView
|
||||
AnchorSideTop.Control = CbDoubleBuffer
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 120
|
||||
Height = 28
|
||||
Top = 290
|
||||
Width = 108
|
||||
BorderWidth = 2
|
||||
ButtonColorAutoSize = False
|
||||
ButtonColorSize = 15
|
||||
ButtonColor = clWhite
|
||||
Caption = 'Map backgr.'
|
||||
Margin = 4
|
||||
OnColorChanged = clbBackColorColorChanged
|
||||
end
|
||||
object CbPreviewTiles: TCheckBox
|
||||
AnchorSideLeft.Control = cbCyclicView
|
||||
AnchorSideTop.Control = CbUseThreads
|
||||
Left = 120
|
||||
Height = 19
|
||||
Top = 272
|
||||
Width = 83
|
||||
Caption = 'Preview tiles'
|
||||
Checked = True
|
||||
State = cbChecked
|
||||
TabOrder = 5
|
||||
OnChange = CbPreviewTilesChange
|
||||
end
|
||||
object gbProxy: TGroupBox
|
||||
AnchorSideLeft.Control = PgConfig
|
||||
AnchorSideTop.Control = CbProviders
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = PgConfig
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 4
|
||||
Height = 185
|
||||
Top = 56
|
||||
Width = 259
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Top = 4
|
||||
BorderSpacing.Around = 4
|
||||
Caption = 'Proxy'
|
||||
ClientHeight = 165
|
||||
ClientWidth = 255
|
||||
TabOrder = 1
|
||||
object lblProxyHost: TLabel
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = edProxyHost
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 65
|
||||
Width = 28
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'Host:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyHost: TEdit
|
||||
AnchorSideLeft.Control = edProxyUserName
|
||||
AnchorSideTop.Control = rbProxyData
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 61
|
||||
Width = 164
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 3
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
object lblProxyPort: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = seProxyPort
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 90
|
||||
Width = 22
|
||||
Caption = 'Port'
|
||||
ParentColor = False
|
||||
end
|
||||
object seProxyPort: TSpinEdit
|
||||
AnchorSideLeft.Control = lblProxyUserName
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = edProxyHost
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 86
|
||||
Width = 70
|
||||
BorderSpacing.Top = 2
|
||||
MaxValue = 65535
|
||||
TabOrder = 4
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
object lblProxyUserName: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = edProxyUserName
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 115
|
||||
Width = 59
|
||||
BorderSpacing.Right = 6
|
||||
Caption = 'User name:'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyUserName: TEdit
|
||||
AnchorSideLeft.Control = lblProxyUserName
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = seProxyPort
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 111
|
||||
Width = 164
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
TabOrder = 5
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
object lblProxyPassword: TLabel
|
||||
AnchorSideLeft.Control = lblProxyHost
|
||||
AnchorSideTop.Control = edProxyPassword
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 20
|
||||
Height = 15
|
||||
Top = 140
|
||||
Width = 50
|
||||
Caption = 'Password'
|
||||
ParentColor = False
|
||||
end
|
||||
object edProxyPassword: TEdit
|
||||
AnchorSideLeft.Control = edProxyUserName
|
||||
AnchorSideTop.Control = edProxyUserName
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideRight.Control = gbProxy
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 85
|
||||
Height = 23
|
||||
Top = 136
|
||||
Width = 164
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
BorderSpacing.Top = 2
|
||||
BorderSpacing.Right = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
TabOrder = 6
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
object rbProxyData: TRadioButton
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = rbSystemProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 42
|
||||
Width = 74
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Proxy data'
|
||||
TabOrder = 2
|
||||
OnChangeBounds = rbProxyChange
|
||||
end
|
||||
object rbNoProxy: TRadioButton
|
||||
AnchorSideLeft.Control = gbProxy
|
||||
AnchorSideTop.Control = gbProxy
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 0
|
||||
Width = 67
|
||||
BorderSpacing.Left = 10
|
||||
Caption = 'No proxy'
|
||||
TabOrder = 0
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
object rbSystemProxy: TRadioButton
|
||||
AnchorSideLeft.Control = rbNoProxy
|
||||
AnchorSideTop.Control = rbNoProxy
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 10
|
||||
Height = 19
|
||||
Top = 21
|
||||
Width = 110
|
||||
BorderSpacing.Top = 2
|
||||
Caption = 'Use system proxy'
|
||||
Checked = True
|
||||
TabOrder = 1
|
||||
TabStop = True
|
||||
OnChange = rbProxyChange
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
object GeoNames: TMVGeoNames
|
||||
|
@ -1,3 +1,10 @@
|
||||
{ This file is used by the "MapViewer_Demo" and the "MapViewer_Demo_with_Addons"
|
||||
projects.
|
||||
|
||||
Active define WITH_ADDONS in the project options for "MapViewer_Demo_with_Addons"
|
||||
and make sure that the addon packages are listed as requirements.
|
||||
}
|
||||
|
||||
unit Main;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
@ -6,65 +13,39 @@ interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, Types, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
||||
StdCtrls, ComCtrls, Buttons, IntfGraphics, ColorBox, Spin, PrintersDlgs,
|
||||
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj, mvDrawingEngine, Grids, ExtDlgs;
|
||||
StdCtrls, ComCtrls, Buttons, IntfGraphics, PrintersDlgs,
|
||||
Grids, ExtDlgs,
|
||||
mvGeoNames, mvMapViewer, mvTypes, mvGpsObj, mvDrawingEngine,
|
||||
{$IFDEF WITH_ADDONS}ConfigFrame_with_Addons{$ELSE}ConfigFrame{$ENDIF};
|
||||
|
||||
type
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
TMainForm = class(TForm)
|
||||
Bevel1: TBevel;
|
||||
Bevel2: TBevel;
|
||||
Bevel3: TBevel;
|
||||
Bevel4: TBevel;
|
||||
Bevel5: TBevel;
|
||||
BtnSearch: TButton;
|
||||
BtnGoTo: TButton;
|
||||
BtnGPSPoints: TButton;
|
||||
BtnSaveToFile: TButton;
|
||||
BtnLoadGPXFile: TButton;
|
||||
BtnPOITextFont: TButton;
|
||||
BtnPrintMap: TButton;
|
||||
BtnSelectPOIImage: TButton;
|
||||
CbDoubleBuffer: TCheckBox;
|
||||
CbFoundLocations: TComboBox;
|
||||
CbLocations: TComboBox;
|
||||
CbProviders: TComboBox;
|
||||
OpenPictureDialog: TOpenPictureDialog;
|
||||
PgLayers: TTabSheet;
|
||||
rbSystemProxy: TRadioButton;
|
||||
rbNoProxy: TRadioButton;
|
||||
rbProxyData: TRadioButton;
|
||||
CbUseThreads: TCheckBox;
|
||||
CbMouseCoords: TGroupBox;
|
||||
CbDistanceUnits: TComboBox;
|
||||
CbDebugTiles: TCheckBox;
|
||||
cbPOITextBgColor: TColorBox;
|
||||
CbZoomToCursor: TCheckBox;
|
||||
cbCyclicView: TCheckBox;
|
||||
CbPreviewTiles: TCheckBox;
|
||||
clbBackColor: TColorButton;
|
||||
edProxyHost: TEdit;
|
||||
edProxyUserName: TEdit;
|
||||
edProxyPassword: TEdit;
|
||||
FontDialog: TFontDialog;
|
||||
GbCenterCoords: TGroupBox;
|
||||
GbScreenSize: TGroupBox;
|
||||
GbSearch: TGroupBox;
|
||||
GbGPS: TGroupBox;
|
||||
gbProxy: TGroupBox;
|
||||
InfoCenterLatitude: TLabel;
|
||||
InfoViewportHeight: TLabel;
|
||||
InfoCenterLongitude: TLabel;
|
||||
InfoBtnGPSPoints: TLabel;
|
||||
GPSPointInfo: TLabel;
|
||||
InfoViewportWidth: TLabel;
|
||||
lblProxyUserName: TLabel;
|
||||
lblProxyPort: TLabel;
|
||||
lblProxyHost: TLabel;
|
||||
LblPOITextBgColor: TLabel;
|
||||
lblProxyPassword: TLabel;
|
||||
LblSelectLocation: TLabel;
|
||||
LblCenterLatitude: TLabel;
|
||||
LblViewportHeight: TLabel;
|
||||
@ -74,20 +55,15 @@ type
|
||||
InfoPositionLongitude: TLabel;
|
||||
InfoPositionLatitude: TLabel;
|
||||
LblCenterLongitude: TLabel;
|
||||
LblProviders: TLabel;
|
||||
LblZoom: TLabel;
|
||||
MapView: TMapView;
|
||||
GeoNames: TMVGeoNames;
|
||||
BtnLoadMapProviders: TSpeedButton;
|
||||
BtnSaveMapProviders: TSpeedButton;
|
||||
OpenDialog: TOpenDialog;
|
||||
PageControl: TPageControl;
|
||||
PgData: TTabSheet;
|
||||
PgConfig: TTabSheet;
|
||||
POIImages: TImageList;
|
||||
PrintDialog: TPrintDialog;
|
||||
rgPOIMode: TRadioGroup;
|
||||
seProxyPort: TSpinEdit;
|
||||
sgLayers: TStringGrid;
|
||||
rgDrawMode: TRadioGroup;
|
||||
lblOpacity: TLabel;
|
||||
@ -100,21 +76,9 @@ type
|
||||
procedure BtnGPSPointsClick(Sender: TObject);
|
||||
procedure BtnSaveToFileClick(Sender: TObject);
|
||||
procedure BtnPOITextFontClick(Sender: TObject);
|
||||
procedure BtnSelectPOIImageClick(Sender: TObject);
|
||||
procedure cbCyclicViewChange(Sender: TObject);
|
||||
procedure CbDebugTilesChange(Sender: TObject);
|
||||
procedure CbDoubleBufferChange(Sender: TObject);
|
||||
procedure CbFoundLocationsDrawItem(Control: TWinControl; Index: Integer;
|
||||
ARect: TRect; State: TOwnerDrawState);
|
||||
procedure cbPOITextBgColorChange(Sender: TObject);
|
||||
procedure CbPreviewTilesChange(Sender: TObject);
|
||||
procedure CbProvidersChange(Sender: TObject);
|
||||
procedure rbProxyChange(Sender: TObject);
|
||||
procedure CbShowPOIImageChange(Sender: TObject);
|
||||
procedure CbUseThreadsChange(Sender: TObject);
|
||||
procedure CbDistanceUnitsChange(Sender: TObject);
|
||||
procedure CbZoomToCursorChange(Sender: TObject);
|
||||
procedure clbBackColorColorChanged(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
@ -128,23 +92,18 @@ type
|
||||
procedure MapViewMouseUp(Sender: TObject; Button: TMouseButton;
|
||||
{%H-}Shift: TShiftState; X, Y: Integer);
|
||||
procedure MapViewZoomChange(Sender: TObject);
|
||||
procedure BtnLoadMapProvidersClick(Sender: TObject);
|
||||
procedure BtnSaveMapProvidersClick(Sender: TObject);
|
||||
procedure rgDrawModeSelectionChanged(Sender: TObject);
|
||||
procedure rgPOIModeClick(Sender: TObject);
|
||||
procedure sgLayersCheckboxToggled(sender: TObject; aCol, aRow: Integer;
|
||||
aState: TCheckboxState);
|
||||
procedure sgLayersCheckboxToggled({%H-}Sender: TObject; {%H-}aCol, {%H-}aRow: Integer; aState: TCheckboxState);
|
||||
procedure sgLayersEditingDone(Sender: TObject);
|
||||
procedure sgLayersSelection(Sender: TObject; aCol, aRow: Integer);
|
||||
procedure sgLayersSelection(Sender: TObject; {%H-}aCol, aRow: Integer);
|
||||
procedure tbOpacityChange(Sender: TObject);
|
||||
procedure UpdateLayers;
|
||||
procedure UpdateLayers(Sender: TObject);
|
||||
procedure ZoomTrackBarChange(Sender: TObject);
|
||||
|
||||
private
|
||||
POIImage: TCustomBitmap;
|
||||
CfgFrame: {$IFDEF WITH_ADDONS}TCfgFrame_with_Addons{$ELSE}TCfgFrame{$ENDIF};
|
||||
procedure ClearFoundLocations;
|
||||
procedure UpdateCoords(X, Y: Integer);
|
||||
procedure UpdateDownloadEngineProxy;
|
||||
procedure UpdateDropdownWidth(ACombobox: TCombobox);
|
||||
procedure UpdateLocationHistory(ALocation: String);
|
||||
procedure UpdateViewportSize;
|
||||
@ -177,7 +136,6 @@ type
|
||||
|
||||
const
|
||||
MAX_LOCATIONS_HISTORY = 50;
|
||||
MAP_PROVIDER_FILENAME = 'map-providers.xml';
|
||||
USE_DMS = true;
|
||||
_TILELAYERS_ID_ = 42;
|
||||
|
||||
@ -193,28 +151,6 @@ end;
|
||||
|
||||
{ TMainForm }
|
||||
|
||||
procedure TMainForm.BtnLoadMapProvidersClick(Sender: TObject);
|
||||
var
|
||||
fn: String;
|
||||
msg: String;
|
||||
begin
|
||||
fn := Application.Location + MAP_PROVIDER_FILENAME;
|
||||
if FileExists(fn) then begin
|
||||
if MapView.Engine.ReadProvidersFromXML(fn, msg) then begin
|
||||
MapView.GetMapProviders(CbProviders.Items);
|
||||
CbProviders.ItemIndex := 0;
|
||||
MapView.MapProvider := CbProviders.Text;
|
||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
||||
end else
|
||||
ShowMessage(msg);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.BtnSaveMapProvidersClick(Sender: TObject);
|
||||
begin
|
||||
MapView.Engine.WriteProvidersToXML(Application.Location + MAP_PROVIDER_FILENAME);
|
||||
end;
|
||||
|
||||
procedure TMainForm.rgDrawModeSelectionChanged(Sender: TObject);
|
||||
begin
|
||||
TileLayer[Pred(sgLayers.Row)].DrawMode := TItemDrawMode(rgDrawMode.ItemIndex);
|
||||
@ -374,34 +310,6 @@ begin
|
||||
MapView.Font.Assign(FontDialog.Font);
|
||||
end;
|
||||
|
||||
procedure TMainForm.BtnSelectPOIImageClick(Sender: TObject);
|
||||
begin
|
||||
OpenPictureDialog.Filter := 'PNG files|*.png|BMP files|*.bmp';
|
||||
OpenPictureDialog.DefaultExt := '.png';
|
||||
if OpenPictureDialog.Execute then
|
||||
begin
|
||||
POIImage.LoadFromFile(OpenPictureDialog.FileName);
|
||||
MapView.POIImage.Assign(POIImage);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.cbCyclicViewChange(Sender: TObject);
|
||||
begin
|
||||
MapView.Cyclic := cbCyclicView.Checked;
|
||||
UpdateLayers;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbDebugTilesChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DebugTiles := CbDebugTiles.Checked;
|
||||
MapView.Invalidate;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbDoubleBufferChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DoubleBuffered := CbDoubleBuffer.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbFoundLocationsDrawItem(Control: TWinControl;
|
||||
Index: Integer; ARect: TRect; State: TOwnerDrawState);
|
||||
var
|
||||
@ -431,58 +339,12 @@ begin
|
||||
combo.Canvas.TextOut(x, y, P.Descr);
|
||||
end;
|
||||
|
||||
procedure TMainForm.cbPOITextBgColorChange(Sender: TObject);
|
||||
begin
|
||||
MapView.POITextBgColor := cbPOITextBgColor.Selected;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbPreviewTilesChange(Sender: TObject);
|
||||
begin
|
||||
MapView.DrawPreviewTiles := CbPreviewTiles.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbProvidersChange(Sender: TObject);
|
||||
begin
|
||||
MapView.MapProvider := CbProviders.Text;
|
||||
end;
|
||||
|
||||
procedure TMainForm.rbProxyChange(Sender: TObject);
|
||||
begin
|
||||
UpdateDownloadEngineProxy;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbShowPOIImageChange(Sender: TObject);
|
||||
begin
|
||||
{
|
||||
if CbShowPOIImage.Checked then
|
||||
MapView.POIImage.Assign(POIImage)
|
||||
else
|
||||
MapView.POIImage.Clear;
|
||||
}
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbUseThreadsChange(Sender: TObject);
|
||||
begin
|
||||
MapView.UseThreads := CbUseThreads.Checked;
|
||||
UpdateLayers;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbDistanceUnitsChange(Sender: TObject);
|
||||
begin
|
||||
DistanceUnit := TDistanceUnits(CbDistanceUnits.ItemIndex);
|
||||
UpdateViewPortSize;
|
||||
end;
|
||||
|
||||
procedure TMainForm.CbZoomToCursorChange(Sender: TObject);
|
||||
begin
|
||||
MapView.ZoomToCursor := CbZoomToCursor.Checked;
|
||||
end;
|
||||
|
||||
procedure TMainForm.clbBackColorColorChanged(Sender: TObject);
|
||||
begin
|
||||
MapView.InactiveColor := clbBackColor.ButtonColor;
|
||||
end;
|
||||
|
||||
procedure TMainForm.ClearFoundLocations;
|
||||
var
|
||||
i: Integer;
|
||||
@ -497,35 +359,17 @@ end;
|
||||
|
||||
procedure TMainForm.FormCreate(Sender: TObject);
|
||||
var
|
||||
fn: String;
|
||||
I: Integer;
|
||||
begin
|
||||
CfgFrame := {$IFDEF WITH_ADDONS}TCfgFrame_with_Addons{$ELSE}TCfgFrame{$ENDIF}.Create(self);
|
||||
CfgFrame.Parent := pgConfig;
|
||||
CfgFrame.Align := alClient;
|
||||
CfgFrame.MapView := MapView;
|
||||
CfgFrame.OnDrawGPSPoint := @MapViewDrawGpsPoint;
|
||||
CfgFrame.OnUpdateLayers := @UpdateLayers;
|
||||
|
||||
cInputQueryEditSizePercents := 0;
|
||||
|
||||
fn := Application.Location + 'mapmarker.png';
|
||||
if not FileExists(fn) then
|
||||
MessageDlg('Copy the file "mapmarker.png" from the source folder to the folder with the executable.',
|
||||
mtError, [mbOK], 0)
|
||||
else
|
||||
begin
|
||||
// FMapMarker := CreateMapMarker(32, clRed, clBlack);
|
||||
POIImage := TPortableNetworkGraphic.Create;
|
||||
POIImage.PixelFormat := pf32bit;
|
||||
POIImage.LoadFromFile(fn);
|
||||
end;
|
||||
|
||||
MapView.GetMapProviders(CbProviders.Items);
|
||||
CbProviders.ItemIndex := CbProviders.Items.IndexOf(MapView.MapProvider);
|
||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
||||
MapView.DoubleBuffered := true;
|
||||
MapView.Zoom := 1;
|
||||
CbZoomToCursor.Checked := MapView.ZoomToCursor;
|
||||
CbUseThreads.Checked := MapView.UseThreads;
|
||||
CbDoubleBuffer.Checked := MapView.DoubleBuffered;
|
||||
CbPOITextBgColor.Selected := MapView.POITextBgColor;
|
||||
CbPOITextBgColor.ItemHeight := CbProviders.ItemHeight + 2;
|
||||
ClbBackColor.ButtonColor := MapView.InactiveColor;
|
||||
|
||||
InfoPositionLongitude.Caption := '';
|
||||
InfoPositionLatitude.Caption := '';
|
||||
InfoCenterLongitude.Caption := '';
|
||||
@ -567,7 +411,6 @@ begin
|
||||
for I := 0 to High(TileLayer) do
|
||||
MapView.GPSLayer[I].Delete(TileLayer[I]);
|
||||
ClearFoundLocations;
|
||||
FreeAndNil(POIImage)
|
||||
end;
|
||||
|
||||
procedure TMainForm.FormShow(Sender: TObject);
|
||||
@ -599,22 +442,30 @@ var
|
||||
sym: TGPSSymbol;
|
||||
clr: TColor;
|
||||
extent: TSize;
|
||||
lMapView: TMapView;
|
||||
begin
|
||||
lMapView := TMapView(Sender);
|
||||
|
||||
// Screen coordinates of the GPS point
|
||||
P := TMapView(Sender).LatLonToScreen(APoint.RealPoint);
|
||||
P := lMapView.LatLonToScreen(APoint.RealPoint);
|
||||
|
||||
// Draw the GPS point as specified by the data in the point's ExtraData
|
||||
if not (APoint.ExtraData is TGPSExtraData) then
|
||||
exit;
|
||||
|
||||
// Get the POI attributes
|
||||
with TGPSExtraData(APoint.ExtraData) do
|
||||
if (APoint.ExtraData is TGPSExtraData) then
|
||||
// Get the POI attributes
|
||||
with TGPSExtraData(APoint.ExtraData) do
|
||||
begin
|
||||
clr := Color;
|
||||
sym := Symbol;
|
||||
d := Size div 2;
|
||||
end
|
||||
else
|
||||
begin
|
||||
clr := Color;
|
||||
sym := Symbol;
|
||||
d := Size div 2;
|
||||
sym := gpsPlus;
|
||||
clr := clRed;
|
||||
d := 5;
|
||||
end;
|
||||
|
||||
|
||||
// Draw the POI symbol
|
||||
ADrawer.PenColor := clr;
|
||||
case sym of
|
||||
@ -655,12 +506,12 @@ begin
|
||||
// Prepare text output: background color...
|
||||
inc(P.Y, d + 4);
|
||||
extent := ADrawer.TextExtent(APoint.Name);
|
||||
if cbPOITextBgColor.selected = clNone then
|
||||
if CfgFrame.POITextBkColor = clNone then
|
||||
ADrawer.BrushStyle := bsClear
|
||||
else
|
||||
begin
|
||||
ADrawer.BrushStyle := bsSolid;
|
||||
ADrawer.BrushColor := cbPOITextBgColor.Selected;
|
||||
ADrawer.BrushColor := CfgFrame.POITextBkColor;
|
||||
end;
|
||||
|
||||
// ... and font
|
||||
@ -673,11 +524,6 @@ begin
|
||||
ADrawer.TextOut(P.X - extent.CX div 2, P.Y, APoint.Name);
|
||||
end;
|
||||
|
||||
{ ADrawer.BrushColor := clRed;
|
||||
ADrawer.BrushStyle := bsSolid;
|
||||
ADrawer.Ellipse(P.X - R, P.Y - R, P.X + R, P.Y + R);
|
||||
end;
|
||||
}
|
||||
procedure TMainForm.MapViewMouseLeave(Sender: TObject);
|
||||
begin
|
||||
UpdateCoords(MaxInt, MaxInt);
|
||||
@ -733,14 +579,14 @@ begin
|
||||
if (Button = mbRight) then begin
|
||||
rPt := MapView.ScreenToLatLon(Point(X, Y));
|
||||
|
||||
case rgPOIMode.ItemIndex of
|
||||
0, 1:
|
||||
case CfgFrame.POIMode of
|
||||
pmDefaultDrawing, pmDefaultImage:
|
||||
begin
|
||||
if not InputQuery('Name of GPS location', 'Please enter name', gpsName) then
|
||||
exit;
|
||||
gpsPt := TGpsPoint.CreateFrom(rPt);
|
||||
end;
|
||||
2:
|
||||
pmImageList:
|
||||
begin
|
||||
if GPSPointForm = nil then
|
||||
begin
|
||||
@ -754,7 +600,7 @@ begin
|
||||
GPSPointForm.GetImageIndexData(gpsName, gpsImageIndex);
|
||||
TGPSPointOfInterest(gpsPt).ImageIndex := gpsImageIndex;
|
||||
end;
|
||||
3:
|
||||
pmCustomDrawing:
|
||||
begin
|
||||
if GPSPointForm = nil then
|
||||
begin
|
||||
@ -796,24 +642,10 @@ var
|
||||
s: String;
|
||||
pt: TRealPoint;
|
||||
du: TDistanceUnits;
|
||||
provider: String;
|
||||
begin
|
||||
ini := TMemIniFile.Create(CalcIniName);
|
||||
try
|
||||
HERE_AppID := ini.ReadString('HERE', 'APP_ID', '');
|
||||
HERE_AppCode := ini.ReadString('HERE', 'APP_CODE', '');
|
||||
OpenWeatherMap_ApiKey := ini.ReadString('OpenWeatherMap', 'API_Key', '');
|
||||
ThunderForest_ApiKey := ini.ReadString('ThunderForest', 'API_Key', '');
|
||||
|
||||
if ((HERE_AppID <> '') and (HERE_AppCode <> '')) or
|
||||
(OpenWeatherMap_ApiKey <> '') or
|
||||
(ThunderForest_ApiKey <> '') then
|
||||
begin
|
||||
MapView.Engine.ClearMapProviders;
|
||||
MapView.Engine.RegisterProviders;
|
||||
MapView.GetMapProviders(CbProviders.Items);
|
||||
sgLayers.Columns[1].PickList.Assign(CbProviders.Items);
|
||||
end;
|
||||
|
||||
R := Screen.DesktopRect;
|
||||
L := ini.ReadInteger('MainForm', 'Left', Left);
|
||||
T := ini.ReadInteger('MainForm', 'Top', Top);
|
||||
@ -825,20 +657,34 @@ begin
|
||||
if T < R.Top then T := R.Top;
|
||||
SetBounds(L, T, W, H);
|
||||
|
||||
s := ini.ReadString('MapView', 'Provider', MapView.MapProvider);
|
||||
if CbProviders.Items.IndexOf(s) = -1 then begin
|
||||
MessageDlg('Map provider "' + s + '" not found.', mtError, [mbOK], 0);
|
||||
s := CbProviders.Items[0];
|
||||
end;
|
||||
MapView.MapProvider := s;
|
||||
CbProviders.Text := MapView.MapProvider;
|
||||
HERE_AppID := ini.ReadString('HERE', 'APP_ID', '');
|
||||
HERE_AppCode := ini.ReadString('HERE', 'APP_CODE', '');
|
||||
OpenWeatherMap_ApiKey := ini.ReadString('OpenWeatherMap', 'API_Key', '');
|
||||
ThunderForest_ApiKey := ini.ReadString('ThunderForest', 'API_Key', '');
|
||||
|
||||
list := TStringList.Create;
|
||||
try
|
||||
MapView.Engine.ClearMapProviders;
|
||||
MapView.Engine.RegisterProviders;
|
||||
MapView.GetMapProviders(list);
|
||||
sgLayers.Columns[1].PickList.Assign(list);
|
||||
|
||||
provider := ini.ReadString('MapView', 'Provider', MapView.MapProvider);
|
||||
if MapView.Engine.MapProviderByName(provider) = nil then
|
||||
begin
|
||||
MessageDlg('Map provider "' + provider + '" not found.', mtError, [mbOK], 0);
|
||||
provider := list[0];
|
||||
end;
|
||||
MapView.MapProvider := provider;
|
||||
finally
|
||||
list.Free;
|
||||
end;
|
||||
|
||||
MapView.InactiveColor := ini.ReadInteger('MapView', 'MapBkgrColor', MapView.InactiveColor);
|
||||
MapView.Zoom := ini.ReadInteger('MapView', 'Zoom', MapView.Zoom);
|
||||
pt.Lon := StrToFloatDef(ini.ReadString('MapView', 'Center.Longitude', ''), 0.0, PointFormatSettings);
|
||||
pt.Lat := StrToFloatDef(ini.ReadString('MapView', 'Center.Latitude', ''), 0.0, PointFormatSettings);
|
||||
MapView.Center := pt;
|
||||
MapView.InactiveColor := ini.ReadInteger('MapView', 'MapBkgrColor', MapView.InactiveColor);
|
||||
clbBackColor.ButtonColor := MapView.InactiveColor;
|
||||
|
||||
s := ini.ReadString('MapView', 'DistanceUnits', '');
|
||||
if s <> '' then begin
|
||||
@ -862,47 +708,13 @@ begin
|
||||
List.Free;
|
||||
end;
|
||||
|
||||
i := ini.ReadInteger('Proxy', 'UseProxy', 0);
|
||||
case i of
|
||||
0: rbNoProxy.Checked := true;
|
||||
1: rbSystemProxy.Checked := true;
|
||||
2: rbProxyData.Checked := true;
|
||||
end;
|
||||
edProxyHost.Text := ini.ReadString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||
seProxyPort.Value := ini.ReadInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||
edProxyUserName.Text := ini.ReadString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||
edProxyPassword.Text := ini.ReadString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||
|
||||
UpdateDownloadEngineProxy;
|
||||
CfgFrame.ReadFromIni(ini);
|
||||
|
||||
finally
|
||||
ini.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.rgPOIModeClick(Sender: TObject);
|
||||
begin
|
||||
case rgPOIMode.ItemIndex of
|
||||
0: begin // default
|
||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||
MapView.OnDrawGPSPoint := nil;
|
||||
MapView.Invalidate;
|
||||
end;
|
||||
1: begin // default POI image
|
||||
MapView.POIImage := POIImage;
|
||||
MapView.OnDrawGPSPoint := nil;
|
||||
MapView.Invalidate;
|
||||
end;
|
||||
2: ; // image from image list
|
||||
3: begin // symbol
|
||||
if MapView.POIImage <> nil then MapView.POIImage.Clear;
|
||||
MapView.OnDrawGPSPoint := @MapViewDrawGpsPoint;
|
||||
MapView.Invalidate;
|
||||
end;
|
||||
end;
|
||||
BtnSelectPOIImage.Enabled := (rgPOIMode.ItemIndex = 1);
|
||||
end;
|
||||
|
||||
procedure TMainForm.sgLayersCheckboxToggled(sender: TObject; aCol,
|
||||
aRow: Integer; aState: TCheckboxState);
|
||||
begin
|
||||
@ -936,7 +748,7 @@ begin
|
||||
MapView.Redraw;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UpdateLayers;
|
||||
procedure TMainForm.UpdateLayers(Sender: TObject);
|
||||
var
|
||||
TL: TGPSTileLayer;
|
||||
begin
|
||||
@ -964,26 +776,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UpdateDownloadEngineProxy;
|
||||
begin
|
||||
if MapView.DownloadEngine.HasProxySupport then
|
||||
begin
|
||||
MapView.DownloadEngine.SetProxy(
|
||||
rbSystemProxy.Checked, rbProxyData.Checked,
|
||||
edProxyHost.Name, seProxyPort.Value, edProxyUserName.Text, edProxyPassword.Text
|
||||
);
|
||||
rbSystemProxy.Enabled := MapView.DownloadEngine.SupportsSystemProxy;
|
||||
lblProxyHost.Enabled := rbProxyData.Checked;
|
||||
edProxyHost.Enabled := rbProxyData.Checked;
|
||||
lblProxyPort.Enabled := rbProxyData.Checked;
|
||||
seProxyPort.Enabled := rbProxyData.Checked;
|
||||
lblProxyUserName.Enabled := rbProxyData.Checked;
|
||||
edProxyUserName.Enabled := rbProxyData.Checked;
|
||||
lblProxyPassword.Enabled := rbProxyData.Checked;
|
||||
edProxyPassword.Enabled := rbProxyData.Checked;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UpdateDropdownWidth(ACombobox: TCombobox);
|
||||
var
|
||||
cnv: TControlCanvas;
|
||||
@ -1082,18 +874,7 @@ begin
|
||||
for i := 0 to CbLocations.Items.Count-1 do
|
||||
ini.WriteString('Locations', 'Item'+IntToStr(i), CbLocations.Items[i]);
|
||||
|
||||
if rbSystemProxy.Checked then
|
||||
i := 1
|
||||
else if rbProxyData.Checked then
|
||||
i := 2
|
||||
else
|
||||
i := 0;
|
||||
ini.EraseSection('Proxy');
|
||||
ini.WriteInteger('Proxy', 'UseProxy', i);
|
||||
ini.WriteString('Proxy', 'ProxyHost', edProxyHost.Text);
|
||||
ini.WriteInteger('Proxy', 'ProxyPort', seProxyPort.Value);
|
||||
ini.WriteString('Proxy', 'ProxyName', edProxyUserName.Text);
|
||||
ini.WriteString('Proxy', 'ProxyPassword', edProxyPassword.Text);
|
||||
CfgFrame.WriteToIni(ini);
|
||||
|
||||
finally
|
||||
ini.Free;
|
||||
|
@ -36,10 +36,11 @@
|
||||
<PackageName Value="LCL"/>
|
||||
</Item3>
|
||||
</RequiredPackages>
|
||||
<Units Count="6">
|
||||
<Units Count="7">
|
||||
<Unit0>
|
||||
<Filename Value="MapViewer_Demo.lpr"/>
|
||||
<Filename Value="mapViewer_demo.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="mapviewer_demo"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
@ -71,13 +72,21 @@
|
||||
<Filename Value="..\..\source\mvengine_mapreg.inc"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="configframe.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="CfgFrame"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Frame"/>
|
||||
<UnitName Value="ConfigFrame"/>
|
||||
</Unit6>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\MapViewer_Demo"/>
|
||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\mapviewer_demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
@ -6,7 +6,7 @@ uses
|
||||
{$IFDEF UNIX}cthreads,{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms,
|
||||
Main, gpslistform;
|
||||
Main, gpslistform, ConfigFrame;
|
||||
|
||||
{$R *.res}
|
||||
|
@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="12"/>
|
||||
<PathDelim Value="\"/>
|
||||
<General>
|
||||
<Flags>
|
||||
<CompatibilityMode Value="True"/>
|
||||
</Flags>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<Title Value="MapViewer_Demo_with_Addons"/>
|
||||
<Scaled Value="True"/>
|
||||
<ResourceType Value="res"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
</General>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="6">
|
||||
<Item1>
|
||||
<PackageName Value="lazmapviewer_bgra"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="lazmapviewer_rgbgraphics"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<PackageName Value="lazMapViewer_Synapse"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<PackageName Value="Printer4Lazarus"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<PackageName Value="lazMapViewerPkg"/>
|
||||
</Item5>
|
||||
<Item6>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item6>
|
||||
</RequiredPackages>
|
||||
<Units Count="8">
|
||||
<Unit0>
|
||||
<Filename Value="mapviewer_demo_with_addons.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="main.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="MainForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="Main"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="gpslistform.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="GPSListViewer"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="globals.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="gpsptform.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="GPSPointForm"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="..\..\source\mvengine_mapreg.inc"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="configframe.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="CfgFrame"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Frame"/>
|
||||
<UnitName Value="ConfigFrame"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="configframe_with_addons.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="CfgFrame_with_addons"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Frame"/>
|
||||
<UnitName Value="ConfigFrame_with_Addons"/>
|
||||
</Unit7>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<PathDelim Value="\"/>
|
||||
<Target>
|
||||
<Filename Value="bin\$(TargetCPU)-$(TargetOS)\MapViewer_Demo"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<DebugInfoType Value="dsDwarf3"/>
|
||||
</Debugging>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
<Other>
|
||||
<CustomOptions Value="-dWITH_ADDONS"/>
|
||||
<OtherDefines Count="1">
|
||||
<Define0 Value="WITH_ADDONS"/>
|
||||
</OtherDefines>
|
||||
</Other>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="4">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Name Value="EHTTPClient"/>
|
||||
</Item4>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
@ -0,0 +1,22 @@
|
||||
program MapViewer_Demo;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
uses
|
||||
{$IFDEF UNIX}cthreads,{$ENDIF}
|
||||
Interfaces, // this includes the LCL widgetset
|
||||
Forms,
|
||||
Main, gpslistform, ConfigFrame, configframe_with_addons;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
begin
|
||||
RequireDerivedFormResource:=True;
|
||||
Application.Title:='MapViewer_Demo_with_Addons';
|
||||
Application.Scaled:=True;
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TMainForm, MainForm);
|
||||
Application.CreateForm(TGPSListViewer, GPSListViewer);
|
||||
Application.Run;
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user