fix: optical stuff, add bookmark icons for SynEdit

This commit is contained in:
Ansgar Becker
2025-11-24 12:53:38 +01:00
parent e1781f96dc
commit 29d1abc23c
12 changed files with 325 additions and 42 deletions

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 649 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 821 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 756 B

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -732,7 +732,7 @@ object MainForm: TMainForm
Width = 17
MouseActions = <>
MarkupInfo.Background = clBtnFace
MarkupInfo.Foreground = clNone
MarkupInfo.Foreground = clGrayText
DigitCount = 2
ShowOnlyLineNumbersMultiplesOf = 1
ZeroStart = False
@@ -864,20 +864,21 @@ object MainForm: TMainForm
end
object ToolBarTree: TPanel
Left = 0
Height = 30
Height = 28
Top = 0
Width = 212
Align = alTop
AutoSize = True
ClientHeight = 30
BevelOuter = bvNone
ClientHeight = 28
ClientWidth = 212
TabOrder = 2
object editDatabaseFilter: TEditButton
AnchorSideLeft.Control = ToolBarTree
Left = 1
Left = 0
Height = 28
Hint = 'Database filter|A list of databases, separated by semicolon. Can contain regular expressions, e.g. "mydb;test.*;project\d+".'
Top = 1
Top = 0
Width = 79
ButtonWidth = 23
Flat = True
@@ -899,9 +900,9 @@ object MainForm: TMainForm
AnchorSideLeft.Side = asrBottom
AnchorSideRight.Control = ToolBarTree
AnchorSideRight.Side = asrBottom
Left = 188
Left = 189
Height = 23
Top = 1
Top = 0
Width = 23
Action = actFavoriteObjectsOnly
Anchors = [akTop, akRight]
@@ -912,10 +913,10 @@ object MainForm: TMainForm
object editTableFilter: TEditButton
AnchorSideLeft.Control = editDatabaseFilter
AnchorSideLeft.Side = asrBottom
Left = 80
Left = 79
Height = 28
Hint = 'Table filter|Can contain regular expressions, e.g. "phpbb_\d"'
Top = 1
Top = 0
Width = 100
ButtonWidth = 23
Flat = True
@@ -937,8 +938,8 @@ object MainForm: TMainForm
AnchorSideTop.Side = asrBottom
AnchorSideRight.Side = asrBottom
Left = 0
Height = 147
Top = 30
Height = 149
Top = 28
Width = 212
Align = alClient
Constraints.MinHeight = 40
@@ -2987,7 +2988,9 @@ object MainForm: TMainForm
OnDragDrop = SynMemoQueryDragDrop
OnDragOver = SynMemoQueryDragOver
OnMouseWheel = AnySynMemoMouseWheel
Gutter.Width = 68
BookMarkOptions.BookmarkImages = ImageListSynBookMarks
BookMarkOptions.Xoffset = 0
Gutter.Width = 65
Gutter.MouseActions = <>
RightGutter.Width = 0
RightGutter.MouseActions = <>
@@ -3433,6 +3436,7 @@ object MainForm: TMainForm
object SynGutterMarks1: TSynGutterMarks
Width = 30
MouseActions = <>
MaxExtraMarksColums = 0
end
object SynGutterLineNumber1: TSynGutterLineNumber
Width = 17
@@ -3450,12 +3454,6 @@ object MainForm: TMainForm
ModifiedColor = 59900
SavedColor = clGreen
end
object SynGutterSeparator1: TSynGutterSeparator
Width = 3
MouseActions = <>
MarkupInfo.Background = clWhite
MarkupInfo.Foreground = clGray
end
object SynGutterCodeFolding1: TSynGutterCodeFolding
Width = 13
MouseActions = <>
@@ -20229,7 +20227,7 @@ object MainForm: TMainForm
end
object SynCompletionProposal: TSynCompletion
OnExecute = SynCompletionProposalExecute
Position = -1
Position = 0
LinesInWindow = 6
OnSearchPosition = SynCompletionProposalSearchPosition
OnPositionChanged = SynCompletionProposalChange
@@ -21074,4 +21072,283 @@ object MainForm: TMainForm
Left = 256
Top = 264
end
object ImageListSynBookMarks: TImageList
Scaled = True
Left = 96
Top = 120
Bitmap = {
4C7A0A0000001000000010000000270400000000000078DAED9A5B4854511486
35C25271C228BB8CD285889C810A241BCB2E481C478CA47166D01222668AE842
36124598B7A23B954549F5D04B051A56484444865DC04AEC1E5D9F821E82DE7B
ED5B750E0C3EC4AC1D4597B36131FB1CE6DF6BED75D6BFD6DEFB1C2B2BEDB02F
232D6222968D4D336CCE387F3A3E3F3F7F5C24126946B6D21FAFC17B3C9ECC96
9696A795959575D168743DFDE7DC1B9E2ABEBCBCBC2E168B75D87678C17FF4F9
7C0B52C563730BB2A1A4A4A41AECDB4422719BEBD50AFC2E70AFC1F5A23F8FEB
639665D528ECAF01DBC79CBF5D8B7EBFDF3F53E9BF97E8DD811FDAC1771B3CBF
D1D8B1128938BEFF9BE2EF4778EB27F96BB9FC4F090F7FAA0281C00A2D9ED89B
44CC0ED831DCA5C513AF23852F606B4CF0493CFE2BF1F8CF036E0F3EBC82BC92
BEF854E33FF2652459B837DAE5BFCBFFDF89979A49ECEEE7B74A8BA76E2D8BC7
E3EDC4EE5238F088EBB0A9FDD8D088EC36C14B0D975A4E1EB44CF0327FE49061
FE901C7026373737CDC07F5BC8BF5F18E304720439A05C3F140DC921CB5DFEBB
FC4F151F0E8777127FFDC863626FBDC9FAD5E65F2E637C22FE8CEA17B809E0DF
30CE082DDEB6FF336BF0A3CE5ADE207F64D4D7D7F70483C16A53FFA3BFB3A2A2
4285C7EEF36D6D6D3DFC3E047FD0C9210AFF67E2BBB1D89FEED6FFFF97FFC4C1
04E260B2099ED8F1107F1F907B2678E2F614F5AFD304CFDE6591ECDFB17DA116
6FEFBF0799FB64F0012D3E140AAD41F70759FB33879B9243E89F57ACFFF3D03B
4B843A5E2B3954FA86CF6F2ABADBDCFDBFCB7F65FECFF725356DFDB363BF4F7E
45BC5E6F86168FDA3253FB6DFDC7E50C4C7B7E29ADB4B4745E2D8D71B6490E63
8CE93FB1FF381B8D46631A3C73CF2B2C2CCC268FCD957314F44FD3E01B1A1AF6
80EB45770763F95DFEBBFCD7E2899B19C4CF5A649D01FFB6D0E4DC3DC63896F2
FC6B0CB1FB2C2727678489FDE80B527F5F3435355D669C5BF20E438397337372
47B79C9B63C3C8D6D656A9BFB315FA4BD17FCDB9C60F3DDC5BA2587F0CC3EE81
783CBE9D7D5482FE03599368FCCFFF73E43D442010A8A69FE5F2DFE5BF26FE7C
431A9C9C982ABEA0A0201BCE5C7784F87D6F7AFE260D2E3D975C6482A77E86C1
5F36F59FE4113834C7F0FD4908EEDF307D7E326F742F365CBF49EE6EFF17CF9F
5CFEFF7A3CB5A38AF8D94BFDD9EC7116FFA9D7CF55C4FD25385B2C67D8D4D2B3
1ABC7C7700E6B0F4897F39FFEF52E6AF5160EE9277EE3737373FC10ED5FA9FFF
CB9A5BDE39C41967107B1A3478E67E11EE47EDB1A648FE53FA2F21F6CB370BE2
3BC63BAD7D7EE89D2F6B37FC57967C86E7F2DFE57F8AEBC72CE26713D2EAA769
F1F637371BE14190F87F2567690AFE8D03F32E291F343A1C4C71FF90217B7662
BF883DF418387412FC3E257F8A597F5F007B8EB95C75F61006E7FFE9E0EF68F6
0FF69C43927FC1F6CB774006FC5F8854269F7DB8FCFF8EFD0A6101DED2
}
BitmapAdv = {
4C69030000004C7A0A0000001800000018000000760600000000000078DAED9C
6B6C545510C75BA54805DBCAAB949676B7A90B12FD809A28B6BBED5AA8B4B481
466D4D4C77BB6D82860F44C38706A4DDDD82AD4D8C44D40413B5A0F888C604FD
E42BA2C61831F800D3F8223E91A888DA407D4450FF7F336B6E36351AEF9C98AE
B3C9E4EE3D1F7E6776CEB933B373CEB9F1A2BC17EB0BF3522E242EEC3C479F4C
3FC69F9AFCFAFAFA4B1A1A1AD6E05AADC90F04023352A9D4A390DF201F434E27
93C92782C1E0740D7E7777F70898475A5A5A82BCEFE9E989E2FE47B4DFE8975F
5555750E58DFC5E3F13E6F3BDA5E81BCE9970F7B5F48BBE07A91F4B7309D4EBF
20B6FA05F7D37DF29B845FCEB1C5F7639043F83D1BA57D9E4F7EB3E8FA08AFB0
F9EDD0F90CB477F03E1C0E9FED93BF4CF8C7C05EED69DF80B67185F13D0B9C6F
C1BE256B7C9FC6383CA5313F61EBADE09D84CEABF16CCD475F7DB8FF15F7610D
3EE70878BB213F88AD8EA38FABB5FD03FA2980FE013CB705E63FFF9FFCB8E3FC
246EF98FF1FF433E7C7223FC5C489B0F6E3BFCF298C4DC94261FCC7DE2F777BB
E02712896B61931AF8FE692EF89EFCD3F839C8077719A4197950ABE4887B780F
896AF091A73D24F33F5B0E997F33BEE53F96FF183FF7F9B1586C3D7CFE4B90B7
92C9E44ED652B4F860DE0DF91CB9D020E2236B279F403E401F3335F8E0947BF5
451FAD128B6B5DD89F5CE1AF72C147ACDF0CFE09FCA6B9DA7CE40DAC994D208F
D8A43D3F03814035D847A1FF3D0EEA27359C43908743A150BE261FECC5D41B36
7912DFF3B59F2FB0DF939CEA0BA9E1F27E0CCFD901A5FF471B99774E227DE6DF
2CFFB1FCC7F853991F8944CAE0CB5642AE825C0E1FADED9FE99B8F322791EF63
88650B14F53FDF132317CB3AD21DAEEC0FF67EAE19BAE023B62FE75A09D76334
F960BEEBB1BF7AFE007D3B21D720C6733DE97BC80E57F6EFEAEA4AF07744A3D1
5247F96717F94D4D4DC57EF9988F73A0676563636321F505BB8DF9F9D0D0D0A8
867DC0BB22ABAEF415C6A01FCF70A196FD91D3CE83D4E0392B36FF69F98FE53F
C6CF453E7C6631FCE7B35CB3825FADD0E6C32FB34EF3B3D43642CAF1B78EDC74
3AFD98365FF6481D86FEBBC04D68F3B9BF05CCCF18B3C0BD4E938F98CB7ACC29
AEE9889D3AB4F8656565F960BD01FD1FF0C4CAB55A7C3096FEC5DA51464EFAE1
635C8BB907CB2BC83F07641DAC87F70EEA636D2EE6BFE7190EB136C3BCCBFC9B
E53F96FFD8FC31FEDFD606F665CBC0C0C03ACDFA0F6BFFDEDA39FE4B3669F211
577A1DDAC7393F994CBECA3D5288BF69D8E7524DFEF0F0F036CAE0E0E076F4F1
32FB433F5B5CCD4F8CF5FDE8E327E68D8EEA3337480EA15EFF91FDCA7C060E6A
D807F3A682FBCFFBFBFBB7638CEF9335B68F609BA0061F9C128CEB6DC8FB3977
6E650D0EBFE14CF36F96FF58FE63F327C7EA333CE31184D4E2FBB98AF58D32F8
E407792E2BF3DF1A7DD469F0E58CD6FBF0FDFB79A606DC599AF641ACBD997B1E
D04F890BFB83FD3ACFB0D5D6D6CE665E02FD2FF09EFB52E04F403E95EB985C0F
634CCEF3CB87AE05927BDE99D90B85EB1CB4BD8DF1784649FF71D865BDB7ADB7
B797637242897F907333AB6D27E4430D7E2291E0BEB409E40E2DB0D70CFC9608
CF6869E587B0F73439039939FF35CE3542B66BFA0739D7B7C0FCA7E53F96FFD8
FC31FE3F8E2F374D56FF9135B0150AF1A513FF4DEFF20AD87B25C78A3AAA3F8C
720FA80BFB232FA994FA49B70BBED44E8E68C747D17D11758FC5621B5CCC4FE8
CEFAC6D7E8A7509B0F7B2C12BB6F72F17C41F77BF92E05AE016BF3C1AC903C74
AB0BFF007B37C89AD75CF36F96FF58FE63F32797F8F06DDC9FDC0C69A9ABABAB
50AE9FA4F82E1B9EC795FDB1A7B87F52830F7D2F9678BBCAD3DF16BE63C87B36
CB477DA35DF2A8259E3ED7485BA95F3EE24911F7E570EF306B3F7C0F106B3390
512DFBC30EC1CCBB07641DECF1C9CE08F918DF6D5C8B620D08D7E7250E6F561A
DF76E1ADF0F437923D26FF960F5B8C78F7F8C898570B7FAD82FE9DA27F1F78B3
B95685EF3B64FF798592FDFB653FF89FE7DE596BD2F63FD168B41CFA1799FFB4
FCC7F21F9B3FB9C6873F5EC873D790CBBCFB2A34F8F0D149E63DB20EF3256B27
E86389061F3EB955FEB7AF9478CFBDC4CF415ED3E0A7D369FE6F3F90D5E79512
23830AF5B13D5C03CBE2576A9D4F87ED3BC43ED787C361EEC75D8AB621E1B729
8D2FCFBB1F97F8FB0DDF1F28F6513DBF0F7D4B3C637E1A736896F6F3C5BA18D8
DC2BB55729FFFCE33D973C47055907EE3B7C0E58B3D1E047229152B13BD796C7
3016C3B0CB7CF36FC69F6AF9CFEFA550785E4C7A0A0000002000000020000000
FA0A00000000000078DAED9D7F70D3F519C7A1A5FCEAEF8094990411AD254D43
378692D49F4C9A5C772A6D93A6BAED3897D4E28F29FD866DA5DC48489A31D98A
DED8A677320FEFFC75E2A143BA1D1341D4E910C7D0A9EC8713369963938D819B
53861B7B3FF5F97A31ABE81F7D3EE1D893BBE748BEE1FAFA7E3F9FE7F3E4797F
7E5A55A3F647CA46AD2F8459CC1E55A0977D1FCA57BEF247E6555F5F7F066C0E
AC0136D914DFE5728DE9E8E8B82A954A3DBB62C58A7DB03DB06D9148E42AA7D3
39419A9F4EA75781F756369BDDB168D1A281783C7E0B3EFF16F67626935926C9
F7FBFD6783F34FD8CF1B1B1BDD0E87635445454511EEA309D70EC3DEC0FFA992
E0835382675D03C63BB1586C61FEF7B8BE01761C7573B5041F3E36057FFF09D8
AFF0DE675F77BBDD13A2D1E835B87E80F9DF13E2D7C2E77683F10CDE3BD917EB
F0F931E2C25E25BF800DE2FB8902FC4FE26FBF02DB82F7D578E64822917881D9
0F0583C108DFC38FBD5E6FA500FF53ECE7BB607730F73594F7952887227CEFA7
CF28A34D1E8F67BC00DF8BBFFF32ECDF6CBB42A15073CEF79FC1B5BFC237EF29
2B2B1B2DC09F447106760CEDE04EB4B30F7C8F7BB99ABE4379A485DA5F31C79A
635D5D5D5F1AA6FD3D407502BF982B187FCE01E36FB083288F00AC8ADA02EECB
627FD8241D7FE15F19708EC2FE007B94DA23EC086C27DA40C0D0EF4F339E792D
985BA9BDA13E069A9A9A2699FCFDA5B88FB277A0AD57D07BCD7F94AFFC93976F
15587F5BAAFF95AF7CE58FE00BB9D0E9C8416623FFA836CD470E1687FE799C34
09EEE1B326F878DED390E7778169EBAE2103BFC3041FCF7C2DE7BEC791079316
D861921F0804CE5CB264C96D2887E96016D99ADF149FF5FE18D66305E1E7E841
E52BFFFF8AEF743A4BA91F8A0C5A7B36EBDFE388895FB1AF23367C4230FE3570
1F986DFFE0187CC0BE1689446292F10FF7B0FE44E6F7FB5B34FF50BEF295AFFA
5FF5BFF295AFFC538F5F5E5E5E8C7CD7C5732066C36A3E6C1C46821F8BC5FA52
A9D44F790EC4AB78BF2D1E8F5F23CDA77150B04877FC3D9D4E3F899CF73BB075
F8BC9F7271DCC38D288731527CFCED71602460BD5EAFB7C6BE0E0D12E771C0A7
718FA79BF63F303D60BF441A84C6CA0BC0AF05FBF9FCF911A6F8D083AD34FE6E
59D646E84487493E345731CF0DA1F91F9D26E30FF57DC2176FA37939F87795E9
F807E6374807D39C04DCCB24537CB0AAC0BC19EC7FC1EE9F3F7F7E91C9F80BF6
00C520D823F03DA7A9F88FE77680FD6DEE77A07910F36017C3CEE739117E32C1
F87B813DD789FB3FFE02FB33EC8F3C27623FE2F38B527C97CBE5A378FF11FD20
6B35FF50BEF255FFABFE57BEF2957FAAF03D1ECF9949BC90673D0C7B0AB916CD
41BD0B39E125C80DCB0CE8EF0ECEFD7E47735E39E7A3CF6FD03C5C693EF23F67
381CFE80BE0C040241D27EACBFAA0B51FF606F66BEDF341F65520C3FF819AD01
8116759BE4833D1E9AFB73C486AD37D5FEC0A2E77D9275C7D0DC6FEA0F33C87F
8E35FFCBBCEE621FAD4FC99F976FA2FEE1FF4E848407796EFEF2CACACAD1A6FD
1FFAFB22AA8B743ABDD5EBF53A4CF349FF12BFBFBF7FB3CFE72B37CD47DD7F93
FA22BABBBB575657578BD53FCA7731AC2F9BCDC6F1ACDD60521F08F5C3BE8D18
F0D070FD2023C9B7E77CE4D8319A0387E7BFDE5E97241CFFC746229169B059F8
1DA8437B1BABF987F295AFFA5FF5BFF295AF7CC3FA672A34DF1591F75E3ED37C
E47CEBEC5C0C79E1CD26F9D01D01D63E6F99E643634CCFE97F78C2341FF96E9A
D642406FF5F118A8317E341A3D8FEBFC39FA0CFF4B9AE2C3DFA7241209EA7B7A
3D140A5DCAFC3E53FC4C2643CFFA2EDADA52FB1AF84B4CF0E1EE34C7E1206CB7
D3E99C98C3BF499A5F5B5B3B71D9B265F7D3DE0328F701EA87B38DD782933FFC
80AFB58E341FEDCDC53AF3F8C7B02323CD87DF55A09C2F832DCC37CBB2D671F9
0FDAD74CFEFEC017171522FE9E2C7CD4CD0CF23BF888AF107CCD7F94AF7CD5FF
AAFF95AF7CE50BEB1F57E4042FE9F1BF9CF1F761ADADADCD61820FCDB1215783
D8065D34D6041F459D2D44FD9F2CFC582CB69AD619C08CEEBF65F353A9D43ED8
D334EF01BE700F3457184DA3529ADFD0D010C866B31BC8FAFBFB1FE635E0AFB0
FF3F457B8248F2696CBDB1B1B198CCE7F39540F34CE2BD0977F0FC8F5421E21F
EEE1325A03000D48FB2F5614801F02FF4DF037836F74FC1D755E02F6ED5CFE4B
25CB1FEDDE036B6C6F6F9F02AB8946A3F31289C4EDDC07BA13F75223C9072393
17F369FDC35ECBB25683ED966E7F2D2D2DB33299CC75A8E7743299FC2AEA7D01
AD41A339489A7F285FF9AAFF55FFABFF295FF926F8B4D7396C2AEC1C98DB141F
39E059C835BF86DCEB873C0FF905E8A16F49F3A1F54A73F6BBA6B597DB611B79
DDE34DD27CB03F0FDE213CEB33C160B01D657E1A6CAC89FA478E59CE7BC0BF36
77EE5CB769FF439D5FCADA775521FC1FFCA13907A15028D1DBDB4B637EB7E25E
EE25BF43BDB449AFFFE07D16DE85FD89CF81789E8DDE1FA6F5D8527CF85831CF
3D3E4A6BAFFD7EFFFB6BCDE10B67D19914DC2F334F828FB21D0DEEBDD4E668CD
75FEF72B57AE5CCCFA332358FEABB8FEC3F9DFA12DB69116A43A12E477DB7B7F
E67F876B497EFE2F4BF19B9A9A4A79EDF921D4C5455EAFB774E6CC9913F96C8A
BD7CFEC8D992F10FCF7903AF35FA3D24F08FA08107B9FF8962A278FCA5572010
3897E77C6C4E24128FA0CC69DD89C7E4EF2FB507947B3962F204CD7F94AF7CD5
FFAAFFD5FF94AFFC53958F1C6B7CE4A35FADB4264082DFD9D939E363CCBDDD87
BCEC5C09BEDBED2E45CEDB339C9126665DF812ED4567BAFEA1892C69FD75A217
F549F0F96BD34CF3C15CCC75FF5DD3ED8FC6DBA141681EC001D4C125A6F9600E
3D7B4F4FCFDAE1E69E48F34907F2B977734CC73FD4FB8DACC71F341D7F699F7D
D4FB4FE83CBE6030B8C0341FF53EB4E6C2B2AC07A85FD0349FF73FA1FEA616D3
BF7FA8F7EBB9BD6F2FC4EF2FCADBCFF3FD6769FEA17CE5ABFE57FDAFFEA77CE5
4BF379DC81C69C67C1CE23AD595757672CFFA37D8EF8CCF55F73EEFFE2F2E5CB
37050281F325F978EEF15D5D74F4DF8AA334F68E1CD0A2F3F8703F77F03C00D2
FD73A4F839FBBBEF6E6E6EAECFBB2FD2FEFF89C562D709F2FDACB1B7E3FD94BC
7C38CE3A68A920DF5EFF4CE3DC3D39B9F05468101A033C084D1212EE7FBA3067
BF451A0B4FC0F6F0BEF75FA0B3C1A5FD1F8F783978BFC9E96F7A27994C66C11E
2DDDFEC03883EBE028B4E716D8209F074FEB517AE18BE5527C3A7B133C5A7F7F
047EF6757C9E4CBA13E5F145AE9323F0FF4E293EDA5C3B3FF74670CBF2FCBFD3
DE03518A8FBF1DE3FEB5EFFFCFDF8F447CDCFEB609B6BF8B697C9F7C0F657E05
AD7B814DA0B884BABF95F7A14B09C6DF8A9C7DF75FE7FD3E073926D2DE97341F
AA4EBAFDD15E33B03BD3E9F4165AFB82767F373EC7101B4A4CFEFE43FB57A1EC
1DF0C522CD7F94AF7CD5FFAAFFD5FF94AF7C137CCEFF6AB90F6086DBED1E678A
8F5CCB4BB936E77E340EB40B79F92DB4379A01FDD566E7C1B4DF388D77F3FA53
3A8B690FE912493E72FC9DBCFE7C1E52E212D646E3908FAE617D7083143F1A8D
4EE7FCFBF161FCE1D33C07782B9D1128C187CEB9D0D6DEC3F09D74F61FF50749
CD7F00BF8675CE2FF33520F589F15A90BD541642FAFBFD730EA03BD6D01EDCAD
ADAD9351E717F0197487E82C483A8F52CAFF68AF31F8FB7DD40F437D4E6C87B9
2D1EE6F29F29D9FE710F0E30825D5D5DDD78EE85F49EE63E80FD0B5A0B947B2E
A4A9F80BED19A6E7479DAC361DFF110FC7B1EFD378F81C493EAFF79A56FFDECB
8F72BF96EBFE4DD4459F74FC4D26935782F52C9FFBB09FD7DFD3D9273DD44720
CD0F87C397F35AAFBB50D60388890BE08FD59A7F285FF9CA3F59F5FF7F01D804
7C434C7A0A0000003000000030000000AB0B00000000000078DAEDDD0F905555
1D0770B534B4E80F8A29A90C1928E2B4010E5AA395829A1911584C9991568235
80ACB4ADCBBEBBEFBDFBF6B1ADB2A608E436C98850DA8E42D4A6FCCB1DD4C93F
439135AE664A4A2392534213D9340CD8F7379DD7FCE6CC7DF7DDA571DFEFC877
677EB3BC7D57E773CE3BE7DC73EFFDBD73F2C71FF1463EF03822D01FFAE9A79F
7EFAE9A79FFE90FC51145D5A28143A11F7E4F3F91588AB116759F7C3380CE63E
C41B55A23797CB8DB3E82F954AA7C3F7DB8A15653988D8E2CAB34F95E199F6F6
F693ADF9E1FABDB2B7F7F4F4BC4D7D2E23F0F73FA932DC69C90FDF0C65BB2DE9
98CECECEA178EF0555C60F19F26FA9B8D0BE47A77C46912A678B053FECE7A83A
DD54E3D8A5CADF67C15F2C16A72A5363D231711C8FD57DDBC51E0BFEB6B6B639
AAFEAF4CA8F3EB3CF70175FC0803EDA750F1E0B398ECB5F775DA8E6397C9394D
BD1E536F3F1CDDCA73B66B5317F8E72EBCF729BF0FA05D8D3750FF77E8FA84FD
16CFBE157F3F4EF597BB2AEFE19C37CA40FD7729EB6ECFDE9250DE0D95F71B1B
1B8F35E06F4D98E7EC913654E5F8ED96C61F382FF7DAF97D88A352CAFB17776C
BF91F3D729CADF5FA3AC97AA63BB0DCD1F36A831F41359C62A8C3D0D86FC3355
BD3E853F1D9970CC2C75CC7A6BF367F81ED0737CBCFE3CE234C4F9785D54EFED
C7DF2E31E89739FE4B29D75E12AF4A798C5F3FDE8EF843C2F9F701B4F97199FF
5F75BEFF00EF09884F232695CBE5F7F3FE09FDF4D34F3FFDF4D34F7F363F83F9
3FECBFF4D34F3FFDF4D34FFFE1E22F140ACDF2CC14F18390FCF0CE85FD157DFF
36043F9CD7205E4EBA776ED90FDF57117F4EBBF76FD92F7927DEBDFE1C624828
FECA3354986F55651A1252FB2F97CBC3BDCF644868FD977EFAE9A79F7EFAE9A7
3FEB4F14451325AF5307CCCBBD39E9522F6EB036FF1C48C0BF867EDE7FA09F7E
FAE9A79F7EFAE9B7E66730FF87FD977EFAE9A79F7EFAE9A79F7EFAD37F5A5B5B
47E6F3F905EE39C67AFC7B895B476A98753F8C37A5DCF77F4DD644B1E8876B02
E239CFFC32FEB62DA11CDFB2E6D7EB23C0778BAC89A5DFF7BE07FFBFF5522CB5
9FB6B6B6EBD3DA875EAB49F2FD421B7F606E52FE9B03F4772AFFEA00FDD7EA3C
C5D0FC30AFADF8A328BA2224BF5B8BA3D276B685347F70F9104FABB6332B30FF
7DAAEE3B439ABF796B7CAD0D69FE2963BC5E0325A4F9B3CC21549B79A8BBBBFB
E850FCDE5A87DBF0FADDA1CCFFF59A70883FE2F531A15CBFC0BA52B5F75743BA
FE92F98CAAF783885F231E9335F8109B65FD5B197F103D3A0CF97F79087958CF
1BF2FF26643FEF9FD04F3FFDF4D34F3F736F98FFC3F64F3FFDF4D34F3FFDF4D3
4FFF9BF7D3D2D232DCED4595777933F7E3F55DB29F16FE3D276D5F0C0BFE0CF7
3B77A10CF303F0CBFAFF7DC562F1C7F03E8CDF7E39BE6ED12FF900F8199BF41E
CAB0D2BBEF3C24B4FE2BFD41ED537241687ED4F977B3E4FE18F6EB67631785E4
97E7A788672BCF24433A7FC17DA6DECB0C6D7FBA653F8C1B615C23CF2361FF95
6AF3FFC4EBCF599F3FA49CBF366719FB0DF87B51FF3DAEBF3E287B227963FF4F
6BCD25ACF55FB727DE23AA1CCB431B3F9B9A9A86EABD853A3A3ADE17DAFCD93B
077C2640FFDDCAFFB1D0FCBA2FA7E533199D3FC47A9F3F4BFD17E3CB3439AFCA
5EADB2BFB2ECF75B2A9546CA7E78F07E53E7D0E3DF4FD6CA25ABC3FECB1D1973
4ED6D7DABBB81E7EDD361242F67CDC8463A658BEFE75FBF54D92B931E2B3B816
1B3FD0BC3DDE3FA19F7EFAE9A79FFEFAFB19CCFF61FFA59F7EFAE9A79F7EFAE9
0FCB5F2814AE47B4E4F3F936176342F1C3FA71FF7E68B1589C1A90FF77A1FABD
F5665E09C91FC77183B2BFAE9F5F84E097BCAB8AB7542A9D8ADF4F84E297BD39
FCB52AF0B74743F0A3AE47E976A3FA425F087ED4F3CFD473BA31CABFD1BA5F72
4BAAAD7182B2F45AF62F5EBCF87818F7FAED46956DAD65BFCE0BC8E5720D09FE
9F58F5C37385DE27A84AF9D658F4CF9E3DFB68D85EACD66E947FA5453F2C5F18
E89A0FFEB36DFAFF2FBFE46774D50A3D0FC57FB34EBF17C2F597ECC11CE2FC9F
7EFA79FF847EFAE9A79F7EFAE90FC9CF60FE0FFB2FFDF4D34F3FFDF4D34FBF4D
BFCAEFC912E6BEFF3E90E72E8B162DFA00FD6F8E5FD6AC08B1FDD34F3FFDFFF5
4751345DD69A419C833829247F957D22FE2AFB0865FD0EBCE5F11F65B8D1A2BF
ABABEB581D92D314C7F1387867CABA09032983F5F537102F8538FF9435A4545E
E8A8D0FC3AAF356D0D35C3F5FFA2CECB0DACFD9FADD7780CA9FDC33E42AFFD63
6DFF56A95BC43710E7E572B9D198DF9F2C6B514AAE89CBB3D2E7800E6BE3BF9C
57339CBB64FDBAD8E2F917F53CB98A79BFCB7D2B0E642D9A7AB47F59734972B6
51960B1117A3FD9CC1FB27F4D34F3FFDF4D34FFF60FB19CCFF61FFA59F7EFAE9
A79F7EFA0F277F3E9F3FD13D439D217B37B9DC992996FDF09D20CFE70A85C2F3
213D7F941FF8AE0DF5F9A9DCFFF7D6F9B957F688409C556BBFA97AFBA58DABFA
7D2E8AA2CB42EABF7A7F20D8278734FEE835AE640FB3D0C64F37D654FC9302F4
57D6CCD92BAFE7CD9BF70EF73CEC1A37DECF95D7F20CD2A87FA7F3CBB3E9D535
C6CF466B7E98F625389F46B97ADCBA33FDDE7BDFB7E29771DD3B372D9167C1FE
711893A6E1FD1D6A8CBAD088FF5DCABFB5C6E7A4D767FA91A1F6535977E9B1B4
E324A749F99F32D47FFBB3E424B96377B9630F18AAFFCDAAFD9F98623F46D5FF
7643FE4EE5FF4E8AFF4AE5BFD38A5FF66B52AE67E07C6F9572FE42957386B1F9
E75255867E191F25FFB0B9B9F93D6E7EA4DBD84A83F3E7617A7FD6945827C71A
BEFE6A91FD413DF3BF65FD4CC455A15CBFC37A1CAEBFCE956B2FDE3FA19F7EFA
E9A79F7EFAE9CFEE6730FF87FD977EFAE9A79F7EFAE9A7DF96DFE5FBB41D42CC
B5E08FE378E221EEBDB03A643FEAFF0E2BED1F65185B2B5C1ED30AE59F1F5AFF
55F5BF3BB4F107E648F95B02F457DACDBE5AF970D6FC70B7AABA2F8776FEF2C6
9D6121F9DD33C98AFFB6D0E60FBAEE5B5B5B4F0DC90F73B36A373F0C6DFEA6EB
1EE7B03342F2C3DCA4EAFEDED0E6CFDE983321243FBCDF56F6DED0AE5FBCBA3F
3F24BFDE3F14FF7E28B4EB47AFEE2F09C90FEF02E57F3CB4EB77EFFB17D379FF
817EFAE9A79F7EFAE9A77F607E06F37FD87FE9A79F7EFAE9A79FFEB7AA5FD607
2F140A5F42E4E5FBED787DB73CEB45CC59B870E13B2DFB615C88D893926FF28F
2CCFADEBE14F581F5FBEA77C3B6295EC65E3DD4FBFC192BF582C5EAE7C0F27ED
EB8563A629FFEB96FCF0B42BDB9494CF6855E5B85C2ED760C8DFABFC67A6F84B
EAB84F1AF2DF9A655D2BBCB7491D779AA1F6FF51AF7FCE4AB02FC892B357AFF1
07BE9BBC32AC8DE378BCB427DDEEA57FA7AD6F51CFF15FF7E32AB9863DB2FE86
E5F3AF3BF71E48F0EF903D558C9F7F8B9EF96F099FC17CA3E7DFEF29E3CE4A1F
76EB6EFCDC2B4764ECFCF53565EBC3EB536AF58D2C6D69B0FCF0EC54CFABCFCD
72FECDF2190C865FD66651A65D353EA7297A2CB2E02F97CBC3F5FE8269C74651
74B13A7685A1F6F38272CD4CA9FF15EAB3FA8A217FDE1B5F3A650D41F79D860F
CA1E967A0CC2EB67B39C830779FCBC2763CEFF5ED83F6CF1FC25D7287A6F3EEF
BC25EB9335CA5A7101DC7F381273B7D128CF65F07E44D601E2FD13FAE9A79F7E
FAE9A79FFEEC7E06F37FD87FE9A79F7EFAE9A79FFEB7BA5FF67991EF0EE277C1
ED2B24F7A4BF582A954EB7EE77CFC3FE5EE5FEF37ED95FCBAA5FF654F0EE3B6F
C1EF27100FCA7A2DEABD55D6FCB29F82FECE721CC70DDEFBF22CE34975CC55C6
FC3BD4F3D1B149C7C87D75F5193C62C58F7E3952B9EEAF51CE4CF942839C7F32
43F94B358EBD2E4B1B1A64FFD559D7C691EFC3AB636F36E29F90795F23756CDA
73E041F6BF5DE79BE0F579193FAB5556C61FC9B155AE7FB93DD7263435350DC5
EF8BDCFB1BBDF3C33263E7AFEE01AEFF5630387F90B168ABCB17AE385FC3EF47
11F3647F24F5F7B9D6FCDEF94AD6AC3BC92BDF8D6A3DA089A1CD9FE1DF505943
2DB4F9BFB7CFE5B290FCB2A796DE4F37698F3FAB7EC93BF4F28416189C3F1F05
DB975DC8BA57CBDD5C6D9737662EB678FD2239F135C6FBED5236ABD78FCA7F50
C67ED4F36EC4E3B80E5E8298CAFB0FF4D34F3FFDF4D34F3FFD87873FE4F80FBE
29E9B8
}
end
end

View File

@@ -5,16 +5,17 @@ unit main;
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus,
ActnList, ComCtrls, ExtCtrls, LCLProc, DateUtils, SynEdit, SynEditHighlighter,
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Menus, ActnList,
ComCtrls, ExtCtrls, LCLProc, DateUtils, SynEdit, SynEditHighlighter,
SynHighlighterSQL, SynGutterBase, SynCompletion, SynEditKeyCmds, SynEditTypes,
SynGutter, SynGutterCodeFolding,
StrUtils, laz.VirtualTrees, laz.VTHeaderPopup, RegExpr,
Buttons, StdCtrls, fphttpclient, Math, LCLIntf, Generics.Collections,
Generics.Defaults, opensslsockets, StdActns, Clipbrd, Types, LCLType, EditBtn,
FileUtil, LMessages, jsonconf, DelphiCompat, LazStringUtils, dbconnection, dbstructures, dbstructures.mysql,
generic_types, apphelpers, extra_controls, createdatabase,
SynEditMarkupBracket, searchreplace, ImgList, IniFiles, LazFileUtils, tabletools, lazaruscompat;
SynGutter, SynGutterLineNumber, SynGutterCodeFolding, StrUtils, laz.VirtualTrees,
laz.VTHeaderPopup, RegExpr, Buttons, StdCtrls, fphttpclient, Math, LCLIntf,
Generics.Collections, Generics.Defaults, opensslsockets, StdActns, Clipbrd,
Types, LCLType, EditBtn, FileUtil, LMessages, jsonconf, DelphiCompat,
LazStringUtils, dbconnection, dbstructures, dbstructures.mysql, generic_types,
apphelpers, extra_controls, createdatabase, SynEditMarkupBracket,
searchreplace, ImgList, IniFiles, LazFileUtils, tabletools,
lazaruscompat;
type
@@ -191,6 +192,7 @@ type
{ TMainForm }
TMainForm = class(TExtForm)
ImageListSynBookMarks: TImageList;
popupListHeader: TLazVTHeaderPopupMenu;
MainMenu1: TMainMenu;
MainMenuFile: TMenuItem;
@@ -12249,6 +12251,7 @@ var
i: Integer;
QueryTab, OldTab: TQueryTab;
HelperColumn: TVirtualTreeColumn;
SeparatorPart: TSynGutterSeparator;
begin
i := QueryTabs[QueryTabs.Count-1].Number + 1;
OldTab := QueryTabs.ActiveTab;
@@ -12300,18 +12303,10 @@ begin
QueryTab.Memo.WantTabs := SynMemoQuery.WantTabs;
QueryTab.Memo.Highlighter := SynMemoQuery.Highlighter;
QueryTab.Memo.Gutter.Width := SynMemoQuery.Gutter.Width;
// Todo: adding and gutter part results in EAccessviolation's when closing a query tab.
// Fix that and use the same gutter as in mother query tab
// In the meantime we let SynEdit use TSynGutter.CreateDefaultGutterParts
//for GutterPartIndex:=0 to SynMemoQuery.Gutter.Parts.Count-1 do begin
// QueryTab.Memo.Gutter.Parts.Add(SynMemoQuery.Gutter.Parts[GutterPartIndex].ClassType.Create(QueryTab.Memo.Gutter.Parts));
// QueryTab.Memo.Gutter.Parts[GutterPartIndex].Width := SynMemoQuery.Gutter.Parts[GutterPartIndex].Width;
//end;
//QueryTab.Memo.Gutter.Parts.Clear;
//QueryTab.Memo.Gutter.Parts.Add(TSynGutterLineNumber.Create(QueryTab.Memo.Gutter.Parts));
//QueryTab.Memo.Gutter.Parts[0].Width := SynMemoQuery.Gutter.Parts[0].Width;
//QueryTab.Memo.Gutter.Parts.Add(TSynGutterCodeFolding.Create(QueryTab.Memo.Gutter.Parts));
//QueryTab.Memo.Gutter.Parts[1].Width := SynMemoQuery.Gutter.Parts[1].Width;
SeparatorPart := QueryTab.Memo.Gutter.SeparatorPart(0);
if Assigned(SeparatorPart) then begin // Remove ugly separator, added by default in TSynGutter.CreateDefaultGutterParts
QueryTab.Memo.Gutter.Parts.Delete(SeparatorPart.Index);
end;
QueryTab.Memo.Font.Assign(SynMemoQuery.Font);
QueryTab.Memo.LineHighlightColor.Background := SynMemoQuery.LineHighlightColor.Background;
QueryTab.Memo.OnStatusChange := SynMemoQuery.OnStatusChange;
@@ -13369,6 +13364,8 @@ end;
procedure TMainForm.SetupSynEditor(Editor: TSynMemo);
var
BaseEditor: TSynMemo;
LineNumberPart: TSynGutterLineNumber;
CodeFoldingPart: TSynGutterCodeFolding;
begin
LogSQL('Setting up TSynMemo "'+Editor.Name+'"', lcDebug);
BaseEditor := SynMemoQuery;
@@ -13377,6 +13374,12 @@ begin
Editor.Font.Name := AppSettings.ReadString(asFontName);
Editor.Font.Size := AppSettings.ReadInt(asFontSize);
Editor.Font.Quality := fqCleartypeNatural;
LineNumberPart := Editor.Gutter.LineNumberPart(0);
if Assigned(LineNumberPart) then begin
LineNumberPart.LeftOffset := 2;
LineNumberPart.MarkupInfo.Foreground := clGrayText;
end;
Editor.BookMarkOptions.BookmarkImages := ImageListSynBookMarks;
//Editor.Gutter.BorderColor := GetThemeColor(clWindow);
//Editor.Gutter.Font.Name := Editor.Font.Name;
//Editor.Gutter.Font.Size := Editor.Font.Size;
@@ -13390,8 +13393,11 @@ begin
// Probably use TLazSynEditLineWrapPlugin?
{Editor.WordWrap := actQueryWordWrap.Checked;
// Assignment of OnScanForFoldRanges event is required for UseCodeFolding
Editor.OnScanForFoldRanges := BaseEditor.OnScanForFoldRanges;
Editor.UseCodeFolding := actCodeFolding.Checked;}
Editor.OnScanForFoldRanges := BaseEditor.OnScanForFoldRanges;}
CodeFoldingPart := Editor.Gutter.CodeFoldPart(0);
if Assigned(CodeFoldingPart) then begin
CodeFoldingPart.Visible := actCodeFolding.Checked;
end;
end;
Editor.LineHighlightColor.Background := StringToColor(AppSettings.ReadString(asSQLColActiveLine));
Editor.Options := BaseEditor.Options;