diff --git a/icons/file/document_back.png b/icons/file/document_back.png new file mode 100644 index 00000000..3ec8e327 Binary files /dev/null and b/icons/file/document_back.png differ diff --git a/icons/file/document_next.png b/icons/file/document_next.png new file mode 100644 index 00000000..5d698bff Binary files /dev/null and b/icons/file/document_next.png differ diff --git a/icons/file/document_plus.png b/icons/file/document_plus.png new file mode 100644 index 00000000..501d8e7b Binary files /dev/null and b/icons/file/document_plus.png differ diff --git a/src/ce_controls.pas b/src/ce_controls.pas index 7674e229..6fe06bcf 100644 --- a/src/ce_controls.pas +++ b/src/ce_controls.pas @@ -35,12 +35,15 @@ type fPageIndex: integer; fButtons: TCEPageControlButtons; fOnChanged: TNotifyEvent; + fOnChanging: TTabChangingEvent; + procedure btnCloseClick(sender: TObject); procedure btnMoveLeftClick(sender: TObject); procedure btnMoveRightClick(sender: TObject); procedure btnAddClick(sender: TObject); + procedure tabsChanging(Sender: TObject; var AllowChange: Boolean); procedure tabsChanged(sender: TObject); procedure hidePage(index: integer); procedure showPage(index: integer); @@ -75,11 +78,11 @@ type property addButton: TSpeedButton read fAddBtn; property onChanged: TNotifyEvent read fOnChanged write fOnChanged; + property onChanging: TTabChangingEvent read fOnChanging write fOnChanging; end; implementation - procedure TCEPage.RealSetText(const Value: TCaption); var i: integer; @@ -105,6 +108,7 @@ begin fTabs.Align := alClient; fTabs.Options:=[]; fTabs.OnChange:=@tabsChanged; + fTabs.OnChanging:=@tabsChanging; fMoveLeftBtn:= TSpeedButton.Create(self); fMoveLeftBtn.Parent := fHeader; @@ -174,6 +178,11 @@ begin setPageIndex(fTabs.TabIndex); end; +procedure TCEPageControl.tabsChanging(Sender: TObject; var AllowChange: Boolean); +begin + if assigned(fOnChanging) then fOnChanging(self, AllowChange); +end; + procedure TCEPageControl.hidePage(index: integer); var pge: TCEPage; @@ -213,7 +222,9 @@ begin hidePage(fPageIndex); fPageIndex := index; showPage(fPageIndex); - fTabs.TabIndex:= fPageIndex; + + if fTabs.TabIndex <> fPageIndex then + fTabs.TabIndex:= fPageIndex; changedNotify; end; @@ -246,8 +257,7 @@ begin fPageIndex -= 1; if fPages.Count = 0 then exit; - showPage(fPageIndex); - changedNotify; + setPageIndex(fPageIndex); end; function TCEPageControl.getPageIndex(page: TCEPage): integer; diff --git a/src/ce_editor.pas b/src/ce_editor.pas index 03519c78..f2a098be 100644 --- a/src/ce_editor.pas +++ b/src/ce_editor.pas @@ -53,6 +53,7 @@ type fErrList: TLexErrorList; fModStart: boolean; fLastCommand: TSynEditorCommand; + procedure pageBtnAddCLick(Sender: TObject); procedure pageCloseBtnClick(Sender: TObject); procedure lexFindToken(const aToken: PLexToken; out doStop: boolean); procedure memoKeyPress(Sender: TObject; var Key: char); @@ -94,7 +95,12 @@ begin pageControl.Parent := Content; pageControl.align := alClient; pageControl.onChanged:= @PageControlChange; + pageControl.onChanging:=@PageControlChanging; pageControl.closeButton.OnClick:=@pageCloseBtnClick; + AssignPng(pageControl.moveLeftButton, 'document_back'); + AssignPng(pageControl.moveRightButton, 'document_next'); + AssignPng(pageControl.addButton, 'document_add'); + AssignPng(pageControl.closeButton, 'document_delete'); fTokList := TLexTokenList.Create; fErrList := TLexErrorList.Create; @@ -234,6 +240,7 @@ begin if not assigned(doc) then exit(false); if (doc.modified or (doc.fileName = doc.tempFilename)) and (dlgFileChangeClose(doc.fileName) = mrCancel) then exit(false); + pageControl.pageIndex:=index; doc.Free; result := true; end; @@ -245,6 +252,11 @@ begin closeDocument(PageControl.PageIndex); end; +procedure TCEEditorWidget.pageBtnAddCLick(Sender: TObject); +begin + TCESynMemo.Create(nil); +end; + procedure TCEEditorWidget.focusedEditorChanged; begin macRecorder.Clear; diff --git a/src/ce_icons.inc b/src/ce_icons.inc index db2f1aa8..4ce79c51 100644 --- a/src/ce_icons.inc +++ b/src/ce_icons.inc @@ -923,6 +923,92 @@ LazarusResources.Add('script_gear','PNG',[ +#170#221#179#180#180#228#207#242#200'_8y'#251#218#217')'#248#31#23#13'Rn'#240 +#177'}'#234#0#0#0#0'IEND'#174'B`'#130 ]); +LazarusResources.Add('document_back','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#2'EIDATx'#218#148'S' + +'Mk'#19'A'#24'~f?bI'#138#30#138'i'#244#224#173#8#130#8'I*'#164'X'#4'!bK'#180 + +#208'zh'#171#7#241'W'#212#139#22'O"'#30'='#168#7#17'D'#162#217'|t'#147'l'#14 + +#233'ADw'#183'$'#248#7#188')'#8#26#5')'#226#166'Ivw'#156#153'M'#154'4'#7'?' + +#30#152'}?v'#222#153#231'}f'#134'T'#12#3#3#248#190#255#221#245#188')'#159#226 + +' (OPH'#132#128#16'R'#144'e'#249#170'$I'#226#151'2'#152#147'Y\DQ'#215#167#150 + +#151#150#240''''#180'Z'#173#149#183#166#153'UUu'#141'/"'#29#220'('#216#250 + +#243#139#27'h'#221#153#196#215#205#195#194#242#152#227'y'#246'%'#162#209'(' + +#206#165'R'#171'='#215#205'2'#198'C'#6'b'#1#16'a'#213#15#175#16#221#176'Y' + +#130#197#132#162'u/'#197#178#207'D'#11#172#16#211#177#24#230#231#230'VM'#219 + +'V'#149#177'f'#131#239#169'k'#248'v'#127#158#21'3'#130#212#135#207'b'#142#147 + +'33'#208#242'y'#174#21#174#175#175's'#198'+'#138'D'#134#229#164#223#130#188 + +#240#16'$'#243'$`'#196#22'P'#252#30#156'N'#15#201'D\'#140'}'#209#217'|%'#172 + +'R'#244#235' '#147#192#169'WK'#136#29';.4I'#206#158#133'a'#148'1'#29'='#138 + +'xb'#22'5'#163'"tH'#167#211#193#166#241#141':'#212#137'0'#168':A7O'#127#196 + +#194#229'e8'#142'#'#154#225#11#144#224#232#132'?'#136#185#157#140'D'#144'/' + +#149' E'#152#10#17#21'T'#238#181#17#14#5#253#212#170#21'4'#155'M'#200#178#130 + +'J'#185#140#6#243#27#141#6'$'#137#197#186'.'#252#253#182#207#223#174#139#14 + +':.'#176#219#246#240#227'W'#23'_'#30'g'#224'zL'#188#254#141'"'#252#210#244#25 + +#12#142#250'P('#20'0xs'#247'b'#178#227#236#161#237#180#241#232#210#30'+'#190 + +#130#130#150#199#142'e'#195#182','#200#172#184#160'i'#216#177'm'#150#11'b' + +#203'4'#135#202'''nm'#11's'#226'f'#150#214#170'%:'#10#198'@'#140'Q'#159#15 + +#207#11'rZ'#177'H'#165#7#23#186'x'#189'm'#188#255#244't-'#217'u'#3'z'#185'\' + +#14'&'#219#133#233#5'M'#27#250#150#249#14#150'e'#194#182#3#6'B1'#163'f'#136 + +#193'{+nm'#209#255'A'#129#205'W'#198'^'#222'nI'#215#143#240#155#246'7'#136 + +#135'D'#200'O2'#150'?3'#250'B'#255#1#222'o'#1#6#0#204'idd'#134#245#154'C'#0#0 + +#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('document_next','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#2'KIDATx'#218#140'S' + +#207'k'#19'A'#20#254'fg'#215'T,'#218#10#221#164#230'(U'#16#188'4'#169#144#198 + +#224')'#162' $'#209#30'j'#244#224'I'#175#30#5#161#138''''#241#236#197#156#4 + +#209#214#164'M'#186#217'DPO'#165'I'#183#164#198'?'#160#224#209'C'#211#131#30 + +'B~'#184#201#142'o6'#137'&A'#212#15#30';'#223#236#188#247#190#239#205'.3L' + +#243'['#167#219#157'r'#4'F!'#228#134#128#194#24#24'c'#135#156's]Q'#20#140'C' + +#149#201#215'c1'#252#13#181'Zmf'#187'\~'#163'iZr'#188#136'"D'#175#245#215#215 + +'wP{4'#137#131#199#199#221#167#228#18#175'V'#215#160#235':.'#134'B7'#237'Ng' + +#213'q'#156'Q'#5#2#204']h'#251'o'#161'?'#176'H5q&P{'#26#162#221#151#174#5'J' + +#132#215#231'Cdqq'#185'lY'#26'YZ'#162#232#21#144'>]'#203#231'n'#225#240'Y' + +#132#146'I'#162'p'#224#16#151'8;7'#135#204#250':d'#231#219#201'$'#141'F'#220 + +#144#185#10#235'+@'#223#2#191#250#28#236'Z'#10#174'"*'#160':6'#26'm'#27#193 + +#192#188#27#191'<'#195#129'G'#17'P9'#245#162#163'j'#191#16'>'#20'r'#240#205 + +#158#146#29#16'\'#184#128'b1'#15#175'>'#131#249#192#2#222#21'Mw'#14#209'h'#20 + +#26'%?'#172#206'B'#177'['#176#219#13'i'#161#135'X<'#214#191'='#225'V'#142#19 + +#151'k'#25#241'D'#2#3#165'*9'#156#224#16'$'#157#217']'#186#230'A'#1#211'0P' + +#169'T'#192#185#10'3'#159'Geo'#207#229#138#162#162'@'#252's'#245#147'{nB#'#19 + +'?'#154#224#140#9'N'#217','#147#205#138'%'#234' ''=P '#193#228'}'#247#21'H' + +#28#161#214#222'{'#5#156#156#244#224#196'Q'#14#15'i'#151#246#7#195#196#6'Mz' + +#215#178'`'#237#236#128'S'#242'F&'#227#242']'#201#201'Si'#187#132#131'T'#12 + +'/'#174#180#208'n6a7['#216'zr9'#8#169'`'#24#142#211#139#225#245#240#222#251 + +'bN'#156#185#187'&e'#5'"+'#31#127#223'B:'#157#134#223#239'G8'#28#30'Y'#151'K' + +#165#222'}'#17'$'#239#208#135#184#159'Z'#14#158#191'oV'#27'6'#189#202'nn'#138 + +#196'?'#254#133'a'#228'M'#3#199'<'#26#227#253#241#171#245'z}+g'#24#151#198 + +#191#241'?A'#254'H'#242'<'#159#158#30#136'r'#7'y'#154'b'#10#255#143#239#20'_' + +#6#228#167#0#3#0'<+'#28'O'#23'H~'#24#0#0#0#0'IEND'#174'B`'#130 +]); +LazarusResources.Add('document_plus','PNG',[ + #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' + +#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#2#3'IDATx'#218#140 + +'S'#189'k'#20'Q'#16#255#189#183'_'#135'U'#170#243'H!D'#201#217'h'#149'k'#18 + +#252#130#164'T8'#162#133#6'A-'#4#11#11'E'#193#194#198'? '#7#1'{#'#8'g'#145 + +#205#222#161'W'#164#13#150'Z'#8#218#10#134#220'&'#156')'#204#221#237#18'1' + +#187#251#156'y'#187'wf/'#241'c'#224#237#188#153'7'#243#219#223#204#155'''' + +#148'R`y'#211'j}'#143#226'xL%'#9'R'#207'@'#216#18#144'B@'#8#177'3_'#173#22 + +#135''''#156#203#31'^'#171#205#134#250#151't:'#29#229'z^'#253' '#128#28#26'I' + +#250'_'#191#221#198#246#150#143'm'#223'G'#155#246'_76'#180#255'U'#189#142'b' + +#177#136's'#211#211'7'#220'F'#227#245' '#207#196#136'<}'#249#14#229#147#227 + +#154'yD'#229#220#157'-k?'#151#176#31'E8^*'#225#252#204#204'u'#175#217#180#200 + +'}'#237#16'@'#237#222#156#14'f'#137#137'U'#20'''z'#127#186'<'#137#21#215'EB' + +#160'7'#23#22#152#254#213'#'#25#24#166'A'#0'\'#31#247#142'j4R'#176#202'TE' + +#175'\'#3#143#2'x'#240'|'#13#147#19#227'H('#224'au'#10'5'#239#131#222'?'#158 + +#175#224#254'R'#11#19'''Jxv{'#22'9$^'#212']'#221#233'0'#232#169#159'{'#129 + +#138'~'#4'j/'#236'i'#187#223#239#170'~'#175#171#130'L'#179#184#222#170#202 + +#223'BFI'#8#9#203'2qi'#233'#'#10#142#173'm'#14#227#21'+IlD'#22#159#230#201 + +#209#18'l'#203#192#153'''k'#216#15'vq'#150#180'c'#27'p'#200'w'#204'1'#181'6' + +#204'|'#202'!'#0#158#186#207#139#151'i'#30#190#225#211#226#21'Hi'#192'&&'#23 + +'j'#239#225#20'l'#20','#243#239#0#9#211#140#21'6_'#220'b'#131'"'#136#209#163 + +#183#136#194#174#214#134'i'#253#1' '#187'{'#190'Fp'#221'<'#230#16')'#163'Z' + +#21'['#254#142#214'|v0~'#200'GJ'#153#211#163#178#185'|'''#255#231',n'#8#16#6 + +#193':'#141#231#197'$}a'#249#174#240'K'#204#222#229#192#14#195'p]'#239#127'_' + +#159'8Ej'#12#255'/'#187#148#251#229#151#0#3#0'7'#190#22'@6n'#188'T'#0#0#0#0 + +'IEND'#174'B`'#130 +]); LazarusResources.Add('folder','PNG',[ #137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#6#0#0#0#31#243#255'a' +#0#0#0#25'tEXtSoftware'#0'Adobe ImageReadyq'#201'e<'#0#0#2#26'IDATx'#218#164