diff --git a/res/icons/synbookmarks/0.png b/res/icons/synbookmarks/0.png new file mode 100644 index 00000000..549b75e3 Binary files /dev/null and b/res/icons/synbookmarks/0.png differ diff --git a/res/icons/synbookmarks/1.png b/res/icons/synbookmarks/1.png new file mode 100644 index 00000000..b2ae1aaf Binary files /dev/null and b/res/icons/synbookmarks/1.png differ diff --git a/res/icons/synbookmarks/2.png b/res/icons/synbookmarks/2.png new file mode 100644 index 00000000..d4362ffe Binary files /dev/null and b/res/icons/synbookmarks/2.png differ diff --git a/res/icons/synbookmarks/3.png b/res/icons/synbookmarks/3.png new file mode 100644 index 00000000..b8ea5859 Binary files /dev/null and b/res/icons/synbookmarks/3.png differ diff --git a/res/icons/synbookmarks/4.png b/res/icons/synbookmarks/4.png new file mode 100644 index 00000000..16d0b2cc Binary files /dev/null and b/res/icons/synbookmarks/4.png differ diff --git a/res/icons/synbookmarks/5.png b/res/icons/synbookmarks/5.png new file mode 100644 index 00000000..611c12f0 Binary files /dev/null and b/res/icons/synbookmarks/5.png differ diff --git a/res/icons/synbookmarks/6.png b/res/icons/synbookmarks/6.png new file mode 100644 index 00000000..8df470e4 Binary files /dev/null and b/res/icons/synbookmarks/6.png differ diff --git a/res/icons/synbookmarks/7.png b/res/icons/synbookmarks/7.png new file mode 100644 index 00000000..0a45c008 Binary files /dev/null and b/res/icons/synbookmarks/7.png differ diff --git a/res/icons/synbookmarks/8.png b/res/icons/synbookmarks/8.png new file mode 100644 index 00000000..44c180e6 Binary files /dev/null and b/res/icons/synbookmarks/8.png differ diff --git a/res/icons/synbookmarks/9.png b/res/icons/synbookmarks/9.png new file mode 100644 index 00000000..942c44ab Binary files /dev/null and b/res/icons/synbookmarks/9.png differ diff --git a/source/main.lfm b/source/main.lfm index 035a1118..19e0062d 100644 --- a/source/main.lfm +++ b/source/main.lfm @@ -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 diff --git a/source/main.pas b/source/main.pas index 6993fb11..ada4920e 100644 --- a/source/main.pas +++ b/source/main.pas @@ -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;