diff --git a/.gitattributes b/.gitattributes index 30555c151d..afdd574ac4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -308,6 +308,9 @@ ide/aboutfrm.pas svneol=native#text/pascal ide/addtoprojectdlg.pas svneol=native#text/pascal ide/basedebugmanager.pas svneol=native#text/pascal ide/buildlazdialog.pas svneol=native#text/pascal +ide/charactermapdlg.lfm svneol=native#text/plain +ide/charactermapdlg.lrs svneol=native#text/pascal +ide/charactermapdlg.pas svneol=native#text/pascal ide/checkcompileropts.lfm svneol=native#text/plain ide/checkcompileropts.lrs svneol=native#text/pascal ide/checkcompileropts.pas svneol=native#text/pascal diff --git a/components/synedit/synhighlighterposition.pas b/components/synedit/synhighlighterposition.pas index 4d9666b7c0..5680641308 100644 --- a/components/synedit/synhighlighterposition.pas +++ b/components/synedit/synhighlighterposition.pas @@ -54,7 +54,7 @@ type fTokenEnd: LongInt; // end of current token fTextAttri: TSynHighlighterAttributes; fTokenPos: Integer; - FTokenID: integer; + fTokenArrayPos: integer; FTokenKind: TtkTokenKind; fTokens: TList; // list of PPositionTokens function GetTokens(TheLineNumber: integer): PPositionTokens; @@ -227,13 +227,13 @@ begin fTokenKind := tkNone; exit; end; - inc(fTokenID); + inc(fTokenArrayPos); p:=Tokens[fLineNumber]; - if (p<>nil) and (p^.Count>fTokenID) then begin - fTokenEnd := p^.Tokens[fTokenID].Column+1; + if (p<>nil) and (p^.Count>fTokenArrayPos) then begin + fTokenKind := p^.Tokens[fTokenArrayPos].Kind; + fTokenEnd := p^.Tokens[fTokenArrayPos].Column+1; if fTokenEnd>fLineLen+1 then fTokenEnd := fLineLen+1; - fTokenKind := p^.Tokens[fTokenID].Kind; if fTokenEnd=fTokenPos then Next; end else begin @@ -255,7 +255,7 @@ begin fLine := NewValue; fLineLen := length(fLine); fLineNumber := LineNumber; - FTokenID := 0; + fTokenArrayPos := 0; fTokenPos := 1; p:=Tokens[fLineNumber]; if p<>nil then begin @@ -292,6 +292,7 @@ var p: PPositionTokens; TokenIndex, TokenCount: integer; begin + if Col<1 then exit; // fill up lines while (Line>=fTokens.Count) do fTokens.Add(nil); // resize Token array diff --git a/ide/charactermapdlg.lfm b/ide/charactermapdlg.lfm new file mode 100644 index 0000000000..b7bcf63d6b --- /dev/null +++ b/ide/charactermapdlg.lfm @@ -0,0 +1,761 @@ +object CharacterMapDialog: TCharacterMapDialog + CAPTION = 'CharacterMapDialog' + CLIENTHEIGHT = 405 + CLIENTWIDTH = 412 + KEYPREVIEW = True + ONCREATE = CharacterMapDialogCREATE + ONDESTROY = CharacterMapDialogDESTROY + ONKEYDOWN = CharacterMapDialogKEYDOWN + POSITION = poscreencenter + HORZSCROLLBAR.PAGE = 413 + VERTSCROLLBAR.PAGE = 406 + LEFT = 379 + HEIGHT = 405 + TOP = 278 + WIDTH = 412 + object OkButton: TBUTTON + ANCHORS = [akleft, akbottom] + MODALRESULT = 1 + CAPTION = 'Ok' + TABSTOP = True + TABORDER = 0 + LEFT = 112 + HEIGHT = 25 + TOP = 374 + WIDTH = 75 + end + object CancelButton: TBUTTON + ANCHORS = [akleft, akbottom] + MODALRESULT = 2 + CAPTION = 'Cancel' + TABSTOP = True + TABORDER = 1 + LEFT = 224 + HEIGHT = 25 + TOP = 374 + WIDTH = 75 + end + object CharactersGroupbox: TGROUPBOX + ANCHORS = [aktop, akleft, akright, akbottom] + CAPTION = 'Characters' + CLIENTHEIGHT = 271 + CLIENTWIDTH = 393 + PARENTCTL3D = False + TABORDER = 2 + LEFT = 8 + HEIGHT = 288 + TOP = 8 + WIDTH = 397 + object CharMapSynedit: TSYNEDIT + ALIGN = altop + ANCHORS = [aktop, akleft, akright, akbottom] + COLOR = 16777215 + FONT.HEIGHT = -15 + FONT.NAME = 'courier' + HEIGHT = 248 + NAME = 'CharMapSynedit' + PARENTCTL3D = False + TABORDER = 0 + WIDTH = 393 + ONMOUSEDOWN = CharMapSyneditMOUSEDOWN + ONMOUSEMOVE = CharMapSyneditMOUSEMOVE + BOOKMARKOPTIONS.ONCHANGE = nil + GUTTER.VISIBLE = False + GUTTER.ONCHANGE = nil + KEYSTROKES = < + item + COMMAND = 3 + SHORTCUT = 38 + end + item + COMMAND = 103 + SHORTCUT = 8230 + end + item + COMMAND = 211 + SHORTCUT = 16422 + end + item + COMMAND = 4 + SHORTCUT = 40 + end + item + COMMAND = 104 + SHORTCUT = 8232 + end + item + COMMAND = 212 + SHORTCUT = 16424 + end + item + COMMAND = 1 + SHORTCUT = 37 + end + item + COMMAND = 101 + SHORTCUT = 8229 + end + item + COMMAND = 5 + SHORTCUT = 16421 + end + item + COMMAND = 105 + SHORTCUT = 24613 + end + item + COMMAND = 2 + SHORTCUT = 39 + end + item + COMMAND = 102 + SHORTCUT = 8231 + end + item + COMMAND = 6 + SHORTCUT = 16423 + end + item + COMMAND = 106 + SHORTCUT = 24615 + end + item + COMMAND = 10 + SHORTCUT = 34 + end + item + COMMAND = 110 + SHORTCUT = 8226 + end + item + COMMAND = 14 + SHORTCUT = 16418 + end + item + COMMAND = 114 + SHORTCUT = 24610 + end + item + COMMAND = 9 + SHORTCUT = 33 + end + item + COMMAND = 109 + SHORTCUT = 8225 + end + item + COMMAND = 13 + SHORTCUT = 16417 + end + item + COMMAND = 113 + SHORTCUT = 24609 + end + item + COMMAND = 7 + SHORTCUT = 36 + end + item + COMMAND = 107 + SHORTCUT = 8228 + end + item + COMMAND = 15 + SHORTCUT = 16420 + end + item + COMMAND = 115 + SHORTCUT = 24612 + end + item + COMMAND = 8 + SHORTCUT = 35 + end + item + COMMAND = 108 + SHORTCUT = 8227 + end + item + COMMAND = 16 + SHORTCUT = 16419 + end + item + COMMAND = 116 + SHORTCUT = 24611 + end + item + COMMAND = 223 + SHORTCUT = 45 + end + item + COMMAND = 201 + SHORTCUT = 16429 + end + item + COMMAND = 604 + SHORTCUT = 8237 + end + item + COMMAND = 502 + SHORTCUT = 46 + end + item + COMMAND = 603 + SHORTCUT = 8238 + end + item + COMMAND = 501 + SHORTCUT = 8 + end + item + COMMAND = 501 + SHORTCUT = 8200 + end + item + COMMAND = 504 + SHORTCUT = 16392 + end + item + COMMAND = 601 + SHORTCUT = 32776 + end + item + COMMAND = 602 + SHORTCUT = 40968 + end + item + COMMAND = 509 + SHORTCUT = 13 + end + item + COMMAND = 199 + SHORTCUT = 16449 + end + item + COMMAND = 201 + SHORTCUT = 16451 + end + item + COMMAND = 610 + SHORTCUT = 24649 + end + item + COMMAND = 509 + SHORTCUT = 16461 + end + item + COMMAND = 510 + SHORTCUT = 16462 + end + item + COMMAND = 503 + SHORTCUT = 16468 + end + item + COMMAND = 611 + SHORTCUT = 24661 + end + item + COMMAND = 604 + SHORTCUT = 16470 + end + item + COMMAND = 603 + SHORTCUT = 16472 + end + item + COMMAND = 507 + SHORTCUT = 16473 + end + item + COMMAND = 506 + SHORTCUT = 24665 + end + item + COMMAND = 601 + SHORTCUT = 16474 + end + item + COMMAND = 602 + SHORTCUT = 24666 + end + item + COMMAND = 301 + SHORTCUT = 16432 + end + item + COMMAND = 302 + SHORTCUT = 16433 + end + item + COMMAND = 303 + SHORTCUT = 16434 + end + item + COMMAND = 304 + SHORTCUT = 16435 + end + item + COMMAND = 305 + SHORTCUT = 16436 + end + item + COMMAND = 306 + SHORTCUT = 16437 + end + item + COMMAND = 307 + SHORTCUT = 16438 + end + item + COMMAND = 308 + SHORTCUT = 16439 + end + item + COMMAND = 309 + SHORTCUT = 16440 + end + item + COMMAND = 310 + SHORTCUT = 16441 + end + item + COMMAND = 351 + SHORTCUT = 24624 + end + item + COMMAND = 352 + SHORTCUT = 24625 + end + item + COMMAND = 353 + SHORTCUT = 24626 + end + item + COMMAND = 354 + SHORTCUT = 24627 + end + item + COMMAND = 355 + SHORTCUT = 24628 + end + item + COMMAND = 356 + SHORTCUT = 24629 + end + item + COMMAND = 357 + SHORTCUT = 24630 + end + item + COMMAND = 358 + SHORTCUT = 24631 + end + item + COMMAND = 359 + SHORTCUT = 24632 + end + item + COMMAND = 360 + SHORTCUT = 24633 + end + item + COMMAND = 231 + SHORTCUT = 24654 + end + item + COMMAND = 232 + SHORTCUT = 24643 + end + item + COMMAND = 233 + SHORTCUT = 24652 + end + item + COMMAND = 612 + SHORTCUT = 9 + end + item + COMMAND = 613 + SHORTCUT = 8201 + end + item + COMMAND = 250 + SHORTCUT = 24642 + end> + LINES.Strings = ( + 'CharMapSynedit' + ) + OPTIONS = [eoautoindent, eonocaret, eonoselection, eoscrollpasteol, eoshowscrollhint, eosmarttabs, eotabstospaces, eotrimtrailingspaces] + READONLY = True + SELECTEDCOLOR.ONCHANGE = nil + CURSOR = 65532 + HEIGHT = 248 + WIDTH = 393 + end + object CharInfoLabel: TLABEL + ALIGN = albottom + ANCHORS = [akleft, akright, akbottom] + CAPTION = 'CharInfoLabel' + LAYOUT = tltop + HEIGHT = 20 + TOP = 251 + WIDTH = 393 + end + end + object TextGroupbox: TGROUPBOX + ANCHORS = [akleft, akright, akbottom] + CAPTION = 'Text' + CLIENTHEIGHT = 53 + CLIENTWIDTH = 393 + PARENTCTL3D = False + TABORDER = 3 + LEFT = 8 + HEIGHT = 70 + TOP = 296 + WIDTH = 397 + object TextSynedit: TSYNEDIT + ALIGN = alclient + COLOR = 16777215 + FONT.HEIGHT = -15 + FONT.NAME = 'courier' + HEIGHT = 53 + NAME = 'TextSynedit' + PARENTCTL3D = False + TABORDER = 0 + WIDTH = 393 + BOOKMARKOPTIONS.ONCHANGE = nil + GUTTER.VISIBLE = False + GUTTER.ONCHANGE = nil + KEYSTROKES = < + item + COMMAND = 3 + SHORTCUT = 38 + end + item + COMMAND = 103 + SHORTCUT = 8230 + end + item + COMMAND = 211 + SHORTCUT = 16422 + end + item + COMMAND = 4 + SHORTCUT = 40 + end + item + COMMAND = 104 + SHORTCUT = 8232 + end + item + COMMAND = 212 + SHORTCUT = 16424 + end + item + COMMAND = 1 + SHORTCUT = 37 + end + item + COMMAND = 101 + SHORTCUT = 8229 + end + item + COMMAND = 5 + SHORTCUT = 16421 + end + item + COMMAND = 105 + SHORTCUT = 24613 + end + item + COMMAND = 2 + SHORTCUT = 39 + end + item + COMMAND = 102 + SHORTCUT = 8231 + end + item + COMMAND = 6 + SHORTCUT = 16423 + end + item + COMMAND = 106 + SHORTCUT = 24615 + end + item + COMMAND = 10 + SHORTCUT = 34 + end + item + COMMAND = 110 + SHORTCUT = 8226 + end + item + COMMAND = 14 + SHORTCUT = 16418 + end + item + COMMAND = 114 + SHORTCUT = 24610 + end + item + COMMAND = 9 + SHORTCUT = 33 + end + item + COMMAND = 109 + SHORTCUT = 8225 + end + item + COMMAND = 13 + SHORTCUT = 16417 + end + item + COMMAND = 113 + SHORTCUT = 24609 + end + item + COMMAND = 7 + SHORTCUT = 36 + end + item + COMMAND = 107 + SHORTCUT = 8228 + end + item + COMMAND = 15 + SHORTCUT = 16420 + end + item + COMMAND = 115 + SHORTCUT = 24612 + end + item + COMMAND = 8 + SHORTCUT = 35 + end + item + COMMAND = 108 + SHORTCUT = 8227 + end + item + COMMAND = 16 + SHORTCUT = 16419 + end + item + COMMAND = 116 + SHORTCUT = 24611 + end + item + COMMAND = 223 + SHORTCUT = 45 + end + item + COMMAND = 201 + SHORTCUT = 16429 + end + item + COMMAND = 604 + SHORTCUT = 8237 + end + item + COMMAND = 502 + SHORTCUT = 46 + end + item + COMMAND = 603 + SHORTCUT = 8238 + end + item + COMMAND = 501 + SHORTCUT = 8 + end + item + COMMAND = 501 + SHORTCUT = 8200 + end + item + COMMAND = 504 + SHORTCUT = 16392 + end + item + COMMAND = 601 + SHORTCUT = 32776 + end + item + COMMAND = 602 + SHORTCUT = 40968 + end + item + COMMAND = 509 + SHORTCUT = 13 + end + item + COMMAND = 199 + SHORTCUT = 16449 + end + item + COMMAND = 201 + SHORTCUT = 16451 + end + item + COMMAND = 610 + SHORTCUT = 24649 + end + item + COMMAND = 509 + SHORTCUT = 16461 + end + item + COMMAND = 510 + SHORTCUT = 16462 + end + item + COMMAND = 503 + SHORTCUT = 16468 + end + item + COMMAND = 611 + SHORTCUT = 24661 + end + item + COMMAND = 604 + SHORTCUT = 16470 + end + item + COMMAND = 603 + SHORTCUT = 16472 + end + item + COMMAND = 507 + SHORTCUT = 16473 + end + item + COMMAND = 506 + SHORTCUT = 24665 + end + item + COMMAND = 601 + SHORTCUT = 16474 + end + item + COMMAND = 602 + SHORTCUT = 24666 + end + item + COMMAND = 301 + SHORTCUT = 16432 + end + item + COMMAND = 302 + SHORTCUT = 16433 + end + item + COMMAND = 303 + SHORTCUT = 16434 + end + item + COMMAND = 304 + SHORTCUT = 16435 + end + item + COMMAND = 305 + SHORTCUT = 16436 + end + item + COMMAND = 306 + SHORTCUT = 16437 + end + item + COMMAND = 307 + SHORTCUT = 16438 + end + item + COMMAND = 308 + SHORTCUT = 16439 + end + item + COMMAND = 309 + SHORTCUT = 16440 + end + item + COMMAND = 310 + SHORTCUT = 16441 + end + item + COMMAND = 351 + SHORTCUT = 24624 + end + item + COMMAND = 352 + SHORTCUT = 24625 + end + item + COMMAND = 353 + SHORTCUT = 24626 + end + item + COMMAND = 354 + SHORTCUT = 24627 + end + item + COMMAND = 355 + SHORTCUT = 24628 + end + item + COMMAND = 356 + SHORTCUT = 24629 + end + item + COMMAND = 357 + SHORTCUT = 24630 + end + item + COMMAND = 358 + SHORTCUT = 24631 + end + item + COMMAND = 359 + SHORTCUT = 24632 + end + item + COMMAND = 360 + SHORTCUT = 24633 + end + item + COMMAND = 231 + SHORTCUT = 24654 + end + item + COMMAND = 232 + SHORTCUT = 24643 + end + item + COMMAND = 233 + SHORTCUT = 24652 + end + item + COMMAND = 612 + SHORTCUT = 9 + end + item + COMMAND = 613 + SHORTCUT = 8201 + end + item + COMMAND = 250 + SHORTCUT = 24642 + end> + LINES.Strings = ( + 'TextSynedit' + ) + OPTIONS = [eoautoindent, eobrackethighlight, eodragdropediting, eoscrollpasteol, eoshowscrollhint, eosmarttabs, eotabstospaces, eotrimtrailingspaces] + SELECTEDCOLOR.ONCHANGE = nil + CURSOR = 65532 + HEIGHT = 53 + WIDTH = 393 + end + end +end diff --git a/ide/charactermapdlg.lrs b/ide/charactermapdlg.lrs new file mode 100644 index 0000000000..817e19e6ad --- /dev/null +++ b/ide/charactermapdlg.lrs @@ -0,0 +1,127 @@ +{ This is an automatically generated lazarus resource file } + +LazarusResources.Add('TCharacterMapDialog','FORMDATA',[ + 'TPF0'#19'TCharacterMapDialog'#18'CharacterMapDialog'#7'CAPTION'#6#18'Charact' + +'erMapDialog'#12'CLIENTHEIGHT'#3#149#1#11'CLIENTWIDTH'#3#156#1#10'KEYPREVIEW' + +#9#8'ONCREATE'#7#24'CharacterMapDialogCREATE'#9'ONDESTROY'#7#25'CharacterMap' + +'DialogDESTROY'#9'ONKEYDOWN'#7#25'CharacterMapDialogKEYDOWN'#8'POSITION'#7#14 + +'poscreencenter'#18'HORZSCROLLBAR.PAGE'#3#157#1#18'VERTSCROLLBAR.PAGE'#3#150 + +#1#4'LEFT'#3'{'#1#6'HEIGHT'#3#149#1#3'TOP'#3#22#1#5'WIDTH'#3#156#1#0#7'TBUTT' + +'ON'#8'OkButton'#7'ANCHORS'#11#6'akleft'#8'akbottom'#0#11'MODALRESULT'#2#1#7 + +'CAPTION'#6#2'Ok'#7'TABSTOP'#9#8'TABORDER'#2#0#4'LEFT'#2'p'#6'HEIGHT'#2#25#3 + +'TOP'#3'v'#1#5'WIDTH'#2'K'#0#0#7'TBUTTON'#12'CancelButton'#7'ANCHORS'#11#6'a' + +'kleft'#8'akbottom'#0#11'MODALRESULT'#2#2#7'CAPTION'#6#6'Cancel'#7'TABSTOP'#9 + +#8'TABORDER'#2#1#4'LEFT'#3#224#0#6'HEIGHT'#2#25#3'TOP'#3'v'#1#5'WIDTH'#2'K'#0 + +#0#9'TGROUPBOX'#18'CharactersGroupbox'#7'ANCHORS'#11#5'aktop'#6'akleft'#7'ak' + +'right'#8'akbottom'#0#7'CAPTION'#6#10'Characters'#12'CLIENTHEIGHT'#3#15#1#11 + +'CLIENTWIDTH'#3#137#1#11'PARENTCTL3D'#8#8'TABORDER'#2#2#4'LEFT'#2#8#6'HEIGHT' + +#3' '#1#3'TOP'#2#8#5'WIDTH'#3#141#1#0#8'TSYNEDIT'#14'CharMapSynedit'#5'ALIGN' + +#7#5'altop'#7'ANCHORS'#11#5'aktop'#6'akleft'#7'akright'#8'akbottom'#0#5'COLO' + +'R'#4#255#255#255#0#11'FONT.HEIGHT'#2#241#9'FONT.NAME'#6#7'courier'#6'HEIGHT' + +#3#248#0#4'NAME'#6#14'CharMapSynedit'#11'PARENTCTL3D'#8#8'TABORDER'#2#0#5'WI' + +'DTH'#3#137#1#11'ONMOUSEDOWN'#7#23'CharMapSyneditMOUSEDOWN'#11'ONMOUSEMOVE'#7 + +#23'CharMapSyneditMOUSEMOVE'#24'BOOKMARKOPTIONS.ONCHANGE'#13#14'GUTTER.VISIB' + +'LE'#8#15'GUTTER.ONCHANGE'#13#10'KEYSTROKES'#14#1#7'COMMAND'#2#3#8'SHORTCUT' + +#2'&'#0#1#7'COMMAND'#2'g'#8'SHORTCUT'#3'& '#0#1#7'COMMAND'#3#211#0#8'SHORTCU' + +'T'#3'&@'#0#1#7'COMMAND'#2#4#8'SHORTCUT'#2'('#0#1#7'COMMAND'#2'h'#8'SHORTCUT' + +#3'( '#0#1#7'COMMAND'#3#212#0#8'SHORTCUT'#3'(@'#0#1#7'COMMAND'#2#1#8'SHORTCU' + +'T'#2'%'#0#1#7'COMMAND'#2'e'#8'SHORTCUT'#3'% '#0#1#7'COMMAND'#2#5#8'SHORTCUT' + +#3'%@'#0#1#7'COMMAND'#2'i'#8'SHORTCUT'#3'%`'#0#1#7'COMMAND'#2#2#8'SHORTCUT'#2 + +''''#0#1#7'COMMAND'#2'f'#8'SHORTCUT'#3''' '#0#1#7'COMMAND'#2#6#8'SHORTCUT'#3 + +'''@'#0#1#7'COMMAND'#2'j'#8'SHORTCUT'#3'''`'#0#1#7'COMMAND'#2#10#8'SHORTCUT' + +#2'"'#0#1#7'COMMAND'#2'n'#8'SHORTCUT'#3'" '#0#1#7'COMMAND'#2#14#8'SHORTCUT'#3 + +'"@'#0#1#7'COMMAND'#2'r'#8'SHORTCUT'#3'"`'#0#1#7'COMMAND'#2#9#8'SHORTCUT'#2 + +'!'#0#1#7'COMMAND'#2'm'#8'SHORTCUT'#3'! '#0#1#7'COMMAND'#2#13#8'SHORTCUT'#3 + +'!@'#0#1#7'COMMAND'#2'q'#8'SHORTCUT'#3'!`'#0#1#7'COMMAND'#2#7#8'SHORTCUT'#2 + +'$'#0#1#7'COMMAND'#2'k'#8'SHORTCUT'#3'$ '#0#1#7'COMMAND'#2#15#8'SHORTCUT'#3 + +'$@'#0#1#7'COMMAND'#2's'#8'SHORTCUT'#3'$`'#0#1#7'COMMAND'#2#8#8'SHORTCUT'#2 + +'#'#0#1#7'COMMAND'#2'l'#8'SHORTCUT'#3'# '#0#1#7'COMMAND'#2#16#8'SHORTCUT'#3 + +'#@'#0#1#7'COMMAND'#2't'#8'SHORTCUT'#3'#`'#0#1#7'COMMAND'#3#223#0#8'SHORTCUT' + +#2'-'#0#1#7'COMMAND'#3#201#0#8'SHORTCUT'#3'-@'#0#1#7'COMMAND'#3'\'#2#8'SHORT' + +'CUT'#3'- '#0#1#7'COMMAND'#3#246#1#8'SHORTCUT'#2'.'#0#1#7'COMMAND'#3'['#2#8 + +'SHORTCUT'#3'. '#0#1#7'COMMAND'#3#245#1#8'SHORTCUT'#2#8#0#1#7'COMMAND'#3#245 + +#1#8'SHORTCUT'#3#8' '#0#1#7'COMMAND'#3#248#1#8'SHORTCUT'#3#8'@'#0#1#7'COMMAN' + +'D'#3'Y'#2#8'SHORTCUT'#4#8#128#0#0#0#1#7'COMMAND'#3'Z'#2#8'SHORTCUT'#4#8#160 + +#0#0#0#1#7'COMMAND'#3#253#1#8'SHORTCUT'#2#13#0#1#7'COMMAND'#3#199#0#8'SHORTC' + +'UT'#3'A@'#0#1#7'COMMAND'#3#201#0#8'SHORTCUT'#3'C@'#0#1#7'COMMAND'#3'b'#2#8 + +'SHORTCUT'#3'I`'#0#1#7'COMMAND'#3#253#1#8'SHORTCUT'#3'M@'#0#1#7'COMMAND'#3 + +#254#1#8'SHORTCUT'#3'N@'#0#1#7'COMMAND'#3#247#1#8'SHORTCUT'#3'T@'#0#1#7'COMM' + +'AND'#3'c'#2#8'SHORTCUT'#3'U`'#0#1#7'COMMAND'#3'\'#2#8'SHORTCUT'#3'V@'#0#1#7 + +'COMMAND'#3'['#2#8'SHORTCUT'#3'X@'#0#1#7'COMMAND'#3#251#1#8'SHORTCUT'#3'Y@'#0 + +#1#7'COMMAND'#3#250#1#8'SHORTCUT'#3'Y`'#0#1#7'COMMAND'#3'Y'#2#8'SHORTCUT'#3 + +'Z@'#0#1#7'COMMAND'#3'Z'#2#8'SHORTCUT'#3'Z`'#0#1#7'COMMAND'#3'-'#1#8'SHORTCU' + +'T'#3'0@'#0#1#7'COMMAND'#3'.'#1#8'SHORTCUT'#3'1@'#0#1#7'COMMAND'#3'/'#1#8'SH' + +'ORTCUT'#3'2@'#0#1#7'COMMAND'#3'0'#1#8'SHORTCUT'#3'3@'#0#1#7'COMMAND'#3'1'#1 + +#8'SHORTCUT'#3'4@'#0#1#7'COMMAND'#3'2'#1#8'SHORTCUT'#3'5@'#0#1#7'COMMAND'#3 + +'3'#1#8'SHORTCUT'#3'6@'#0#1#7'COMMAND'#3'4'#1#8'SHORTCUT'#3'7@'#0#1#7'COMMAN' + +'D'#3'5'#1#8'SHORTCUT'#3'8@'#0#1#7'COMMAND'#3'6'#1#8'SHORTCUT'#3'9@'#0#1#7'C' + +'OMMAND'#3'_'#1#8'SHORTCUT'#3'0`'#0#1#7'COMMAND'#3'`'#1#8'SHORTCUT'#3'1`'#0#1 + +#7'COMMAND'#3'a'#1#8'SHORTCUT'#3'2`'#0#1#7'COMMAND'#3'b'#1#8'SHORTCUT'#3'3`' + +#0#1#7'COMMAND'#3'c'#1#8'SHORTCUT'#3'4`'#0#1#7'COMMAND'#3'd'#1#8'SHORTCUT'#3 + +'5`'#0#1#7'COMMAND'#3'e'#1#8'SHORTCUT'#3'6`'#0#1#7'COMMAND'#3'f'#1#8'SHORTCU' + +'T'#3'7`'#0#1#7'COMMAND'#3'g'#1#8'SHORTCUT'#3'8`'#0#1#7'COMMAND'#3'h'#1#8'SH' + +'ORTCUT'#3'9`'#0#1#7'COMMAND'#3#231#0#8'SHORTCUT'#3'N`'#0#1#7'COMMAND'#3#232 + +#0#8'SHORTCUT'#3'C`'#0#1#7'COMMAND'#3#233#0#8'SHORTCUT'#3'L`'#0#1#7'COMMAND' + +#3'd'#2#8'SHORTCUT'#2#9#0#1#7'COMMAND'#3'e'#2#8'SHORTCUT'#3#9' '#0#1#7'COMMA' + +'ND'#3#250#0#8'SHORTCUT'#3'B`'#0#0#13'LINES.Strings'#1#6#14'CharMapSynedit'#0 + +#7'OPTIONS'#11#12'eoautoindent'#9'eonocaret'#13'eonoselection'#15'eoscrollpa' + ,'steol'#16'eoshowscrollhint'#11'eosmarttabs'#14'eotabstospaces'#20'eotrimtra' + +'ilingspaces'#0#8'READONLY'#9#22'SELECTEDCOLOR.ONCHANGE'#13#6'CURSOR'#4#252 + +#255#0#0#6'HEIGHT'#3#248#0#5'WIDTH'#3#137#1#0#0#6'TLABEL'#13'CharInfoLabel'#5 + +'ALIGN'#7#8'albottom'#7'ANCHORS'#11#6'akleft'#7'akright'#8'akbottom'#0#7'CAP' + +'TION'#6#13'CharInfoLabel'#6'LAYOUT'#7#5'tltop'#6'HEIGHT'#2#20#3'TOP'#3#251#0 + +#5'WIDTH'#3#137#1#0#0#0#9'TGROUPBOX'#12'TextGroupbox'#7'ANCHORS'#11#6'akleft' + +#7'akright'#8'akbottom'#0#7'CAPTION'#6#4'Text'#12'CLIENTHEIGHT'#2'5'#11'CLIE' + +'NTWIDTH'#3#137#1#11'PARENTCTL3D'#8#8'TABORDER'#2#3#4'LEFT'#2#8#6'HEIGHT'#2 + +'F'#3'TOP'#3'('#1#5'WIDTH'#3#141#1#0#8'TSYNEDIT'#11'TextSynedit'#5'ALIGN'#7#8 + +'alclient'#5'COLOR'#4#255#255#255#0#11'FONT.HEIGHT'#2#241#9'FONT.NAME'#6#7'c' + +'ourier'#6'HEIGHT'#2'5'#4'NAME'#6#11'TextSynedit'#11'PARENTCTL3D'#8#8'TABORD' + +'ER'#2#0#5'WIDTH'#3#137#1#24'BOOKMARKOPTIONS.ONCHANGE'#13#14'GUTTER.VISIBLE' + +#8#15'GUTTER.ONCHANGE'#13#10'KEYSTROKES'#14#1#7'COMMAND'#2#3#8'SHORTCUT'#2'&' + +#0#1#7'COMMAND'#2'g'#8'SHORTCUT'#3'& '#0#1#7'COMMAND'#3#211#0#8'SHORTCUT'#3 + +'&@'#0#1#7'COMMAND'#2#4#8'SHORTCUT'#2'('#0#1#7'COMMAND'#2'h'#8'SHORTCUT'#3'(' + +' '#0#1#7'COMMAND'#3#212#0#8'SHORTCUT'#3'(@'#0#1#7'COMMAND'#2#1#8'SHORTCUT'#2 + +'%'#0#1#7'COMMAND'#2'e'#8'SHORTCUT'#3'% '#0#1#7'COMMAND'#2#5#8'SHORTCUT'#3'%' + +'@'#0#1#7'COMMAND'#2'i'#8'SHORTCUT'#3'%`'#0#1#7'COMMAND'#2#2#8'SHORTCUT'#2 + +''''#0#1#7'COMMAND'#2'f'#8'SHORTCUT'#3''' '#0#1#7'COMMAND'#2#6#8'SHORTCUT'#3 + +'''@'#0#1#7'COMMAND'#2'j'#8'SHORTCUT'#3'''`'#0#1#7'COMMAND'#2#10#8'SHORTCUT' + +#2'"'#0#1#7'COMMAND'#2'n'#8'SHORTCUT'#3'" '#0#1#7'COMMAND'#2#14#8'SHORTCUT'#3 + +'"@'#0#1#7'COMMAND'#2'r'#8'SHORTCUT'#3'"`'#0#1#7'COMMAND'#2#9#8'SHORTCUT'#2 + +'!'#0#1#7'COMMAND'#2'm'#8'SHORTCUT'#3'! '#0#1#7'COMMAND'#2#13#8'SHORTCUT'#3 + +'!@'#0#1#7'COMMAND'#2'q'#8'SHORTCUT'#3'!`'#0#1#7'COMMAND'#2#7#8'SHORTCUT'#2 + +'$'#0#1#7'COMMAND'#2'k'#8'SHORTCUT'#3'$ '#0#1#7'COMMAND'#2#15#8'SHORTCUT'#3 + +'$@'#0#1#7'COMMAND'#2's'#8'SHORTCUT'#3'$`'#0#1#7'COMMAND'#2#8#8'SHORTCUT'#2 + +'#'#0#1#7'COMMAND'#2'l'#8'SHORTCUT'#3'# '#0#1#7'COMMAND'#2#16#8'SHORTCUT'#3 + +'#@'#0#1#7'COMMAND'#2't'#8'SHORTCUT'#3'#`'#0#1#7'COMMAND'#3#223#0#8'SHORTCUT' + +#2'-'#0#1#7'COMMAND'#3#201#0#8'SHORTCUT'#3'-@'#0#1#7'COMMAND'#3'\'#2#8'SHORT' + +'CUT'#3'- '#0#1#7'COMMAND'#3#246#1#8'SHORTCUT'#2'.'#0#1#7'COMMAND'#3'['#2#8 + +'SHORTCUT'#3'. '#0#1#7'COMMAND'#3#245#1#8'SHORTCUT'#2#8#0#1#7'COMMAND'#3#245 + +#1#8'SHORTCUT'#3#8' '#0#1#7'COMMAND'#3#248#1#8'SHORTCUT'#3#8'@'#0#1#7'COMMAN' + +'D'#3'Y'#2#8'SHORTCUT'#4#8#128#0#0#0#1#7'COMMAND'#3'Z'#2#8'SHORTCUT'#4#8#160 + +#0#0#0#1#7'COMMAND'#3#253#1#8'SHORTCUT'#2#13#0#1#7'COMMAND'#3#199#0#8'SHORTC' + +'UT'#3'A@'#0#1#7'COMMAND'#3#201#0#8'SHORTCUT'#3'C@'#0#1#7'COMMAND'#3'b'#2#8 + +'SHORTCUT'#3'I`'#0#1#7'COMMAND'#3#253#1#8'SHORTCUT'#3'M@'#0#1#7'COMMAND'#3 + +#254#1#8'SHORTCUT'#3'N@'#0#1#7'COMMAND'#3#247#1#8'SHORTCUT'#3'T@'#0#1#7'COMM' + +'AND'#3'c'#2#8'SHORTCUT'#3'U`'#0#1#7'COMMAND'#3'\'#2#8'SHORTCUT'#3'V@'#0#1#7 + +'COMMAND'#3'['#2#8'SHORTCUT'#3'X@'#0#1#7'COMMAND'#3#251#1#8'SHORTCUT'#3'Y@'#0 + +#1#7'COMMAND'#3#250#1#8'SHORTCUT'#3'Y`'#0#1#7'COMMAND'#3'Y'#2#8'SHORTCUT'#3 + +'Z@'#0#1#7'COMMAND'#3'Z'#2#8'SHORTCUT'#3'Z`'#0#1#7'COMMAND'#3'-'#1#8'SHORTCU' + +'T'#3'0@'#0#1#7'COMMAND'#3'.'#1#8'SHORTCUT'#3'1@'#0#1#7'COMMAND'#3'/'#1#8'SH' + +'ORTCUT'#3'2@'#0#1#7'COMMAND'#3'0'#1#8'SHORTCUT'#3'3@'#0#1#7'COMMAND'#3'1'#1 + +#8'SHORTCUT'#3'4@'#0#1#7'COMMAND'#3'2'#1#8'SHORTCUT'#3'5@'#0#1#7'COMMAND'#3 + +'3'#1#8'SHORTCUT'#3'6@'#0#1#7'COMMAND'#3'4'#1#8'SHORTCUT'#3'7@'#0#1#7'COMMAN' + +'D'#3'5'#1#8'SHORTCUT'#3'8@'#0#1#7'COMMAND'#3'6'#1#8'SHORTCUT'#3'9@'#0#1#7'C' + +'OMMAND'#3'_'#1#8'SHORTCUT'#3'0`'#0#1#7'COMMAND'#3'`'#1#8'SHORTCUT'#3'1`'#0#1 + +#7'COMMAND'#3'a'#1#8'SHORTCUT'#3'2`'#0#1#7'COMMAND'#3'b'#1#8'SHORTCUT'#3'3`' + +#0#1#7'COMMAND'#3'c'#1#8'SHORTCUT'#3'4`'#0#1#7'COMMAND'#3'd'#1#8'SHORTCUT'#3 + +'5`'#0#1#7'COMMAND'#3'e'#1#8'SHORTCUT'#3'6`'#0#1#7'COMMAND'#3'f'#1#8'SHORTCU' + +'T'#3'7`'#0#1#7'COMMAND'#3'g'#1#8'SHORTCUT'#3'8`'#0#1#7'COMMAND'#3'h'#1#8'SH' + +'ORTCUT'#3'9`'#0#1#7'COMMAND'#3#231#0#8'SHORTCUT'#3'N`'#0#1#7'COMMAND'#3#232 + +#0#8'SHORTCUT'#3'C`'#0#1#7'COMMAND'#3#233#0#8'SHORTCUT'#3'L`'#0#1#7'COMMAND' + +#3'd'#2#8'SHORTCUT'#2#9#0#1#7'COMMAND'#3'e'#2#8'SHORTCUT'#3#9' '#0#1#7'COMMA' + +'ND'#3#250#0#8'SHORTCUT'#3'B`'#0#0#13'LINES.Strings'#1#6#11'TextSynedit'#0#7 + +'OPTIONS'#11#12'eoautoindent'#18'eobrackethighlight'#17'eodragdropediting'#15 + +'eoscrollpasteol'#16'eoshowscrollhint'#11'eosmarttabs'#14'eotabstospaces'#20 + +'eotrimtrailingspaces'#0#22'SELECTEDCOLOR.ONCHANGE'#13#6'CURSOR'#4#252#255#0 + +#0#6'HEIGHT'#2'5'#5'WIDTH'#3#137#1#0#0#0#0 +]); diff --git a/ide/charactermapdlg.pas b/ide/charactermapdlg.pas new file mode 100644 index 0000000000..a18e11ba00 --- /dev/null +++ b/ide/charactermapdlg.pas @@ -0,0 +1,246 @@ +{ +/*************************************************************************** + charactermapdlg.pas + ------------------- + + ***************************************************************************/ + + *************************************************************************** + * * + * This source is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This code is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * General Public License for more details. * + * * + * A copy of the GNU General Public License is available on the World * + * Wide Web at . You can also * + * obtain it by writing to the Free Software Foundation, * + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * * + *************************************************************************** + + Author: Mattias Gaertner + + Abstract: + Dialog for character map. +} +unit CharacterMapDlg; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons, + SynEdit, StdCtrls, LCLType, GraphType, LazarusIDEStrConsts, EditorOptions, + SynEditHighlighter, SynHighlighterPosition; + +type + TCharacterMapDialog = class(TForm) + CharactersGroupbox: TGROUPBOX; + CharInfoLabel: TLABEL; + TextSynedit: TSYNEDIT; + TextGroupbox: TGROUPBOX; + OkButton: TBUTTON; + CancelButton: TBUTTON; + CharMapSynedit: TSYNEDIT; + procedure CharMapSyneditMOUSEDOWN(Sender: TOBject; Button: TMouseButton; + Shift: TShiftState; X, Y: Integer); + procedure CharMapSyneditMOUSEMOVE(Sender: TObject; Shift: TShiftState; X, + Y: Integer); + procedure CharacterMapDialogCREATE(Sender: TObject); + procedure CharacterMapDialogDESTROY(Sender: TObject); + procedure CharacterMapDialogKEYDOWN(Sender: TObject; var Key: Word; + Shift: TShiftState); + private + FPositionHighlighter: TSynPositionHighlighter; + FCharacters: string; + FHighlightAttr: TSynHighlighterAttributes; + FHighlightAttrID: Integer; + FTextAttrID: Integer; + procedure FillCharMap; + procedure SelectCharacter(Row, Col: integer); + procedure HighlightCharacter(Row, Col: integer); + function GetCharacterInfo(Row, Col: integer): string; + procedure SetCharacters(const AValue: string); + procedure SetSynEditSettings; + function RowColValid(Row, Col: integer): boolean; + function GetCharOrd(Row, Col: integer): integer; + function RowColToSynEditRowCol(Row, Col: integer): TPoint; + procedure SynEditXYToRowCol(X, Y: integer; var Row, Col: integer); + public + property Characters: string read FCharacters write SetCharacters; + end; + +function ShowCharacterMap(var s: string): boolean; + +implementation + +function ShowCharacterMap(var s: string): boolean; +var + CharacterMapDialog: TCharacterMapDialog; +begin + CharacterMapDialog:=TCharacterMapDialog.Create(Application); + Result:=CharacterMapDialog.ShowModal=mrOk; + if Result then + s:=CharacterMapDialog.Characters; + CharacterMapDialog.Free; +end; + +{ TCharacterMapDialog } + +procedure TCharacterMapDialog.CharacterMapDialogKEYDOWN(Sender: TObject; + var Key: Word; Shift: TShiftState); +begin + if Key=VK_ESCAPE then ModalResult:=mrCancel; +end; + +procedure TCharacterMapDialog.CharMapSyneditMOUSEMOVE(Sender: TObject; + Shift: TShiftState; X, Y: Integer); +var + Row: Integer; + Col: Integer; +begin + SynEditXYToRowCol(X,Y,Row,Col); + HighlightCharacter(Row,Col); +end; + +procedure TCharacterMapDialog.FillCharMap; +var + y: Integer; + x: Integer; + CurLine: String; + CharOrd: Integer; + CurChar: string; +begin + CharMapSynedit.Lines.Clear; + for y:=0 to 13 do begin + CurLine:=''; + for x:=0 to 15 do begin + CharOrd:=(y+2)*16+x; + CurChar:=chr(CharOrd)+' '; + CurLine:=CurLine+CurChar; + end; + CharMapSynedit.Lines.Add(CurLine); + end; +end; + +procedure TCharacterMapDialog.SelectCharacter(Row, Col: integer); +begin + +end; + +procedure TCharacterMapDialog.HighlightCharacter(Row, Col: integer); +var + s: String; + HighlightPos: TPoint; +begin + s:=GetCharacterInfo(Row,Col); + //writeln('TCharacterMapDialog.HighlightCharacter Row=',Row,' Col=',Col,' ',s); + CharInfoLabel.Caption:=s; + FPositionHighlighter.ClearAllTokens; + if RowColValid(Row,Col) then begin + HighlightPos:=RowColToSynEditRowCol(Row,Col); + FPositionHighlighter.AddToken(HighlightPos.Y-1,HighlightPos.X-1, + FTextAttrID); + FPositionHighlighter.AddToken(HighlightPos.Y-1,HighlightPos.X+1, + FHighlightAttrID); + end; +end; + +function TCharacterMapDialog.GetCharacterInfo(Row, Col: integer): string; +var + CharOrd: Integer; +begin + if RowColValid(Row,Col) then begin + CharOrd:=GetCharOrd(Row,Col); + Result:='Dezimal='+IntToStr(CharOrd)+' Hex='+HexStr(CharOrd,2); + end else begin + Result:='-'; + end; +end; + +procedure TCharacterMapDialog.SetCharacters(const AValue: string); +begin + if FCharacters=AValue then exit; + FCharacters:=AValue; + TextSynedit.Lines.Text:=AValue; +end; + +procedure TCharacterMapDialog.SetSynEditSettings; +begin + EditorOpts.GetSynEditSettings(CharMapSynedit); + EditorOpts.GetSynEditSettings(TextSynedit); +end; + +function TCharacterMapDialog.RowColValid(Row, Col: integer): boolean; +begin + Result:=(Row>=1) and (Row<=14) and (Col>=1) and (Col<=16); +end; + +function TCharacterMapDialog.GetCharOrd(Row, Col: integer): integer; +begin + Result:=(Row+1)*16+Col-1; +end; + +function TCharacterMapDialog.RowColToSynEditRowCol(Row, Col: integer): TPoint; +begin + Result.X:=Col*2-1; + Result.Y:=Row; +end; + +procedure TCharacterMapDialog.SynEditXYToRowCol(X, Y: integer; var Row, + Col: integer); +var + RowColumn: TPoint; +begin + RowColumn:=CharMapSynedit.PixelsToRowColumn(Point(X,Y)); + Row:=RowColumn.Y; + Col:=RowColumn.X div 2; +end; + +procedure TCharacterMapDialog.CharacterMapDialogCREATE(Sender: TObject); +begin + Caption:=lisCharacterMap; + FHighlightAttr:=TSynHighlighterAttributes.Create('Highlight'); + with FHighlightAttr do begin + Foreground:=clBlue; + Style:=Style+[fsBold]; + end; + FPositionHighlighter:=TSynPositionHighlighter.Create(Self); + FHighlightAttrID:=FPositionHighlighter.GetCopiedTokenID(FHighlightAttr); + FTextAttrID:= + FPositionHighlighter.GetCopiedTokenID(FPositionHighlighter.TextAttri); + CharMapSynedit.Highlighter:=FPositionHighlighter; + SetSynEditSettings; + FillCharMap; + TextSynedit.Lines.Clear; +end; + +procedure TCharacterMapDialog.CharMapSyneditMOUSEDOWN(Sender: TOBject; + Button: TMouseButton; Shift: TShiftState; X, Y: Integer); +var + Row: Integer; + Col: Integer; +begin + SynEditXYToRowCol(X,Y,Row,Col); + if not RowColValid(Row,Col) then exit; + Characters:=Characters+chr(GetCharOrd(Row,Col)); +end; + +procedure TCharacterMapDialog.CharacterMapDialogDESTROY(Sender: TObject); +begin + FreeAndNil(FPositionHighlighter); + FreeAndNil(FHighlightAttr); +end; + +initialization + {$I charactermapdlg.lrs} + +end. + diff --git a/ide/keymapping.pp b/ide/keymapping.pp index c84a28fb10..f7981ec2c0 100644 --- a/ide/keymapping.pp +++ b/ide/keymapping.pp @@ -90,19 +90,20 @@ const ecSelectParagraph = ecUserFirst + 60; // insert text - ecInsertGPLNotice = ecUserFirst + 80; - ecInsertLGPLNotice = ecUserFirst + 81; - ecInsertUserName = ecUserFirst + 82; - ecInsertDateTime = ecUserFirst + 83; - ecInsertChangeLogEntry = ecUserFirst + 84; - ecInsertCVSAuthor = ecUserFirst + 85; - ecInsertCVSDate = ecUserFirst + 86; - ecInsertCVSHeader = ecUserFirst + 87; - ecInsertCVSID = ecUserFirst + 88; - ecInsertCVSLog = ecUserFirst + 89; - ecInsertCVSName = ecUserFirst + 90; - ecInsertCVSRevision = ecUserFirst + 91; - ecInsertCVSSource = ecUserFirst + 92; + ecInsertCharacter = ecUserFirst + 80; + ecInsertGPLNotice = ecUserFirst + 81; + ecInsertLGPLNotice = ecUserFirst + 82; + ecInsertUserName = ecUserFirst + 83; + ecInsertDateTime = ecUserFirst + 84; + ecInsertChangeLogEntry = ecUserFirst + 85; + ecInsertCVSAuthor = ecUserFirst + 86; + ecInsertCVSDate = ecUserFirst + 87; + ecInsertCVSHeader = ecUserFirst + 88; + ecInsertCVSID = ecUserFirst + 89; + ecInsertCVSLog = ecUserFirst + 90; + ecInsertCVSName = ecUserFirst + 91; + ecInsertCVSRevision = ecUserFirst + 92; + ecInsertCVSSource = ecUserFirst + 93; // codetools ecWordCompletion = ecUserFirst + 100; @@ -556,6 +557,7 @@ begin ecSelectCodeBlock : Result:= lismenuselectcodeblock; ecSelectLine : Result:= lismenuselectline; ecSelectParagraph : Result:= lismenuselectparagraph; + ecInsertCharacter : Result:= srkmecInsertCharacter; ecInsertGPLNotice : Result:= srkmecInsertGPLNotice; ecInsertLGPLNotice : Result:= srkmecInsertLGPLNotice; ecInsertUserName : Result:= srkmecInsertUserName; @@ -1335,6 +1337,7 @@ begin Add(C,'Delete whole text',ecClearAll,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Break line and move cursor',ecLineBreak,VK_RETURN,[],VK_UNKNOWN,[]); Add(C,'Break line, leave cursor',ecInsertLine,VK_N,[ssCtrl],VK_UNKNOWN,[]); + Add(C,'Insert from Character Map',ecInsertCharacter,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Insert GPL notice',ecInsertGPLNotice,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Insert LGPL notice',ecInsertLGPLNotice,VK_UNKNOWN,[],VK_UNKNOWN,[]); Add(C,'Insert username',ecInsertUserName,VK_UNKNOWN,[],VK_UNKNOWN,[]); diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 4cada242bc..b4a3445e7b 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -137,6 +137,7 @@ resourcestring lisMenuSelectCodeBlock = 'Select code block'; lisMenuSelectLine = 'Select line'; lisMenuSelectParagraph = 'Select paragraph'; + lisMenuInsertCharacter = 'Insert from Character Map'; lisMenuInsertText = 'Insert text'; lisMenuInsertCVSKeyword = 'CVS keyword'; lisMenuInsertGeneral = 'General'; @@ -1084,6 +1085,7 @@ resourcestring // edit menu srkmecSelectionTabs2Spaces = 'Convert tabs to spaces in selection'; + srkmecInsertCharacter = 'Insert from Charactermap'; srkmecInsertGPLNotice = 'Insert GPL notice'; srkmecInsertLGPLNotice = 'Insert LGPL notice'; srkmecInsertUserName = 'Insert current username'; @@ -2212,6 +2214,7 @@ resourcestring lisMenuTemplateContents = 'Contents'; lisMenuTemplateTutorial = 'Tutorial'; lisMenuTemplateAbout = 'About'; + lisCharacterMap = 'Character Map'; implementation end. diff --git a/ide/main.pp b/ide/main.pp index 3849800f9f..279f95b184 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -131,6 +131,7 @@ type procedure mnuEditSelectLineClick(Sender: TObject); procedure mnuEditSelectParagraphClick(Sender: TObject); procedure mnuEditCompleteCodeClicked(Sender: TObject); + procedure mnuEditInsertCharacterClicked(Sender: TObject); // edit->insert text->CVS keyword procedure mnuEditInsertCVSAuthorClick(Sender: TObject); @@ -1444,6 +1445,7 @@ begin itmEditSelectLine.OnClick:=@mnuEditSelectLineClick; itmEditSelectParagraph.OnClick:=@mnuEditSelectParagraphClick; itmEditCompleteCode.OnClick:=@mnuEditCompleteCodeClicked; + itmEditInsertCharacter.OnClick:=@mnuEditInsertCharacterClicked; // insert text->CVS keyword itmEditInsertCVSAuthor.OnClick:=@mnuEditInsertCVSAuthorClick; @@ -9287,6 +9289,11 @@ begin DoCompleteCodeAtCursor; end; +procedure TMainIDE.mnuEditInsertCharacterClicked(Sender: TObject); +begin + DoEditMenuCommand(ecInsertCharacter); +end; + procedure TMainIDE.mnuEditInsertCVSAuthorClick(Sender: TObject); begin DoEditMenuCommand(ecInsertCVSAuthor); @@ -9426,6 +9433,9 @@ end. { ============================================================================= $Log$ + Revision 1.640 2003/08/18 18:07:53 mattias + implemented character map + Revision 1.639 2003/08/18 10:02:36 mattias fixed win32 lazconf and improved enclose selection diff --git a/ide/mainbar.pas b/ide/mainbar.pas index df657d412f..45fc79911e 100644 --- a/ide/mainbar.pas +++ b/ide/mainbar.pas @@ -225,6 +225,7 @@ type itmEditSelectCodeBlock: TMenuItem; itmEditSelectLine: TMenuItem; itmEditSelectParagraph: TMenuItem; + itmEditInsertCharacter: TMenuItem; itmEditInsertText: TMenuItem; itmEditCompleteCode: TMenuItem; @@ -750,6 +751,11 @@ begin itmEditSelect.Add(itmEditSelectParagraph); end; + itmEditInsertCharacter := TMenuItem.Create(Self); + itmEditInsertCharacter.Name:='itmEditInsertCharacter'; + itmEditInsertCharacter.Caption := lisMenuInsertCharacter; + mnuEdit.Add(itmEditInsertCharacter); + itmEditInsertText := TMenuItem.Create(Self); itmEditInsertText.Name:='itmEditInsertText'; itmEditInsertText.Caption := lisMenuInsertText; diff --git a/ide/uniteditor.pp b/ide/uniteditor.pp index 7a9e61b481..abb75698fb 100644 --- a/ide/uniteditor.pp +++ b/ide/uniteditor.pp @@ -55,7 +55,7 @@ uses MsgView, InputHistory, LazarusIDEStrConsts, BaseDebugManager, Debugger, TypInfo, LResources, LazConf, EnvironmentOpts, Compiler, SortSelectionDlg, EncloseSelectionDlg, ClipBoardHistory, DiffDialog, - SourceEditProcs, SourceMarks; + SourceEditProcs, SourceMarks, CharacterMapDlg; type TSourceNoteBook = class; @@ -240,6 +240,7 @@ type procedure SelectLine; procedure SelectParagraph; function CommentText(const Txt: string; CommentType: TCommentType): string; + procedure InsertCharacterFromMap; procedure InsertGPLNotice(CommentType: TCommentType); procedure InsertLGPLNotice(CommentType: TCommentType); procedure InsertUsername; @@ -1082,6 +1083,9 @@ Begin ecSelectParagraph: SelectParagraph; + ecInsertCharacter: + InsertCharacterFromMap; + ecInsertGPLNotice: InsertGPLNotice(comtDefault); @@ -1321,6 +1325,14 @@ begin Result:=IDEProcs.CommentText(Txt,CommentType); end; +procedure TSourceEditor.InsertCharacterFromMap; +var + NewChars: string; +begin + if not ShowCharacterMap(NewChars) then exit; + FEditor.SelText:=NewChars; +end; + procedure TSourceEditor.InsertGPLNotice(CommentType: TCommentType); var Txt: string;