📄 fmain.pas
字号:
bHideScrollBarsAsNeeded := reg.ReadReg('bHideScrollBarsAsNeeded', False);
bHalfPageScroll := reg.ReadReg('bHalfPageScroll', True);
bScrollbyOneLess := reg.ReadReg('bScrollbyOneLess', False);
bScrollPastEndofFile := reg.ReadReg('bScrollPastEndofFile', False);
bScrollPastEndofLine := reg.ReadReg('bScrollPastEndofLine', True);
bShowScrollHint := reg.ReadReg('bShowScrollHint', True);
bScrollHintFollowsMouse := reg.ReadReg('bScrollHintFollowsMouse', False);
bTabsToSpaces := reg.ReadReg('bTabsToSpaces', True);
bTrimTrailingSpaces := reg.ReadReg('bTrimTrailingSpaces', True);
bGroupUndo := reg.ReadReg('bGroupUndo', True);
bDisableScrollArrows := reg.ReadReg('bDisableScrollArrows', False);
iInsertCaretMode := Reg.ReadReg('iInsertCaretMode', 0);
iOverwriteCaretMode := Reg.ReadReg('iOverwriteCaretMode', 3);
bHighlightTabs := Reg.ReadReg('bHighlightTabs', True);
gcHighlightTabs := Reg.ReadReg('gcHighlightTabs', clRed);
bSingleClick := reg.ReadReg('bSingleClick', false);
{ External Browser }
sExternalBrowser := Reg.ReadReg('ExternalBrowser', '');
if sExternalBrowser = '' then
sExternalBrowser := reg.GetProgramAssociation('HTM');
{ Editor - Gutter Options }
bGutterVisible := reg.ReadReg('bGuttervisible', True);
bGutterAutosize := reg.ReadReg('bGutterAutoSize', True);
bGutterShowLineNumbers := reg.ReadReg('bGutterShowLineNumbers', True);
bGutterStartAtZero := reg.ReadReg('bGutterStartAtZero', False);
bGutterShowLeadingZeros := reg.ReadReg('bGutterShowLeadingZeros', False);
bGutterUseGutterFont := reg.ReadReg('bGutterUseGutterFont', True);
//fGutterFont := TFont(Reg.ReadReg('fGutterFont'));
cGutterColor := Reg.ReadReg('cGutterColor', 13026246);
{ Brace Highlighting }
gcMatchBracketColor := Reg.ReadReg('BracketColor', clNavy);
gbHighlightBrackets := reg.ReadReg('BraceColor', True);
gcBadBracketColor := Reg.ReadReg('BadBracketColor', clYellow);
gbHighlightBadBrackets := reg.ReadReg('BadBraceColor', True);
gcMatchBracketColorBack := Reg.ReadReg('BracketColorBack', clMoneyGreen);
gcBadBracketColorBack := Reg.ReadReg('BadBracketColorBack', clRed);
strDictionary := Reg.ReadReg('strDictionary', '');
bAutoCheck := reg.ReadReg('bAutoCheck', False);
bFromCursor := reg.ReadReg('bFromCursor', False);
bIgnoreSingleCharacters := reg.ReadReg('bIgnoreSingleCharacters', True);
bIgnoreNumbers := reg.ReadReg('bIgnoreNumbers', True);
iHashLength := Reg.ReadReg('iHashLength', 4);
gcPenColor := Reg.ReadReg('gcPenColor', clRed);
bAEnabled := reg.ReadReg('bAEnabled', False);
bAMouseDown := reg.ReadReg('bAMouseDown', False);
bABeep := reg.ReadReg('bABeep', False);
bAIgnore := reg.ReadReg('bAIgnore', False);
bAMaintain := reg.ReadReg('bAMaintain', False);
sDefaultHighlighter := reg.ReadReg('sDefaultHighlighter', 'C++');
bUseDefault := reg.ReadReg('bDefaultHighlighter', True);
With dmMain.synSpell do begin
if FileExists(strDictionary) then begin
dmMain.SYnspell.DictionaryPath := ExtractFilePath(strDictionary);
dmMain.SYnspell.UserDirectory := DictionaryPath;
dmMain.SYnspell.LoadDictionary('', strDictionary);
dmMain.synSpell.Options := [sscoSuggestWords];
if bAutoCheck = True then
Options := Options + [sscoAutoSpellCheck]
else
Options := Options - [sscoAutoSpellCheck];
if bFromCursor = True then
Options := Options + [sscoStartFromCursor]
else
Options := Options - [sscoStartFromCursor];
if bIgnoreSingleCharacters = True then
Options := Options + [sscoIgnoreSingleChars]
else
Options := Options - [sscoIgnoreSingleChars];
if bIgnoreNumbers = True then
Options := Options + [sscoIgnoreWordsWithNumbers]
else
Options := Options - [sscoIgnoreWordsWithNumbers];
PenColor := gcPenColor;
HashLength := iHashLength;
end;
end;
if bAEnabled then begin
with dmMain.SynAutoCorrect do begin
Enabled := true;
if FileExists(ExtractFilePath(Application.exename) + 'autocorr.dat') then
LoadFromList(ExtractFilePath(Application.exename) + 'autocorr.dat');
if bAMouseDown then
Include(AutoCorrOp, ascoCorrectOnMouseDown);
if bAIgnore then
Include(AutoCorrOp, ascoIgnoreCase);
if bAMaintain then
Include(AutoCorrOp, ascoMaintainCase);
Options := AutoCorrOp;
end;
end;
{ Editor - Right Edge Options }
iEdgeColumn := Reg.ReadReg('iEdgeColumn', 80);
iEdgeColor := Reg.ReadReg('iEdgeColor', 13026246);
{ Editor - Line/Tab Spacing Options }
iExtraLines := Reg.ReadReg('iExtraLines', 0);
iTabWidth := Reg.ReadReg('iTabWidth', 8);
{ Editor - Bookmark Options }
bBookmarkKeys := reg.ReadReg('bBookmarkKeys', True);
bBookmarksVisible := reg.ReadReg('bBookmarksVisible', True);
{ Editor - Main }
fGutterFont := TFont.Create;
With fGutterFont Do begin
Size := Reg.ReadReg('iGutterSize', 8);
Styled := [];
if Reg.ReadReg('bGutterBold', False) then
Include(Styled, fsBold);
if Reg.ReadReg('bGutterItalic', False) then
Include(Styled, fsItalic);
if Reg.ReadReg('bGutterStrikeOut', False) then
Include(Styled, fsStrikeOut);
if Reg.ReadReg('bGutterUnderline', False) then
Include(Styled, fsUnderline);
Style := Styled;
Name := Reg.ReadReg('sGutterName', 'Terminal');
end;
fEditorFont := TFont.Create;
with fEditorFont do begin
Size := Reg.ReadReg('iEditorSize', 10);
Styled := [];
if Reg.ReadReg('bEditorBold', False) then
Include(Styled, fsBold);
if Reg.ReadReg('bEditorItalic', False) then
Include(Styled, fsItalic);
if Reg.ReadReg('bEditorStrikeOut', False) then
Include(Styled, fsStrikeOut);
if Reg.ReadReg('bEditorUnderline', False) then
Include(Styled, fsUnderline);
Style := Styled;
Name := Reg.ReadReg('sEditorName', 'Courier New');
end;
Reg.Destroy;
LoadTools;
end;
procedure Tfrmmain.LoadSettings;
var
m_sIniFileName: String;
pch: TPageControlHost;
begin
{ Dock the stuff }
{tbStandard.ManualDock(pgTop);
tbWeb.ManualDock(pgTop);
tbSearch.ManualDock(pgtop);
tbMacros.ManualDock(pgTop);
tbTools.ManualDock(pgTop);}
tbSearch.Repaint;
Self.Resize;
//pgTop.ActivePage := pgTop.Pages[0];
frmFiles := TfrmFiles.Create(Self);
frmTags := TfrmTags.Create(self);
frmProjects := TfrmProjects.Create(self);
frmSnippets := TfrmSnippets.Create(self);
frmQuickFtp := TfrmQuickFTP.Create(Self);
frmOutput := TfrmOutput.Create(self);
Grep := TfrmGrepResults.Create(self);
DockHandler.LoadDesktop('Software\cEdit\Docking');
if DockHandler.bLoadSuccess = true then
exit;
dpLeft.DockOrientation := doVertical;
pch := TPageControlHost.Create(Self);
pch.Visible := False;
frmfiles.ManualDock(pch.PageControl);
frmProjects.ManualDock(pch.PageControl);
frmprojects.show;
frmQuicKFTP.ManualDock(pch.PageControl);
frmFiles.Show;
frmQuickFTP.show;
pch.ManualDock(dpLeft);
pch.Visible := True;
pch.PageControl.ActivePage := pch.PageControl.Pages[0];
pch := TPageControlHost.Create(Self);
pch.Visible := False;
frmTags.ManualDock(pch.PageControl);
frmSnippets.ManualDock(pch.PageControl);
frmSnippets.Show;
frmtags.show;
pch.ManualDock(dpRight);
pch.Visible := True;
pch.PageControl.ActivePage := pch.PageControl.Pages[0];
pch := TPageControlHost.Create(Self);
pch.Visible := False;
frmOutput.ManualDock(pch.pageControl);
Grep.ManualDock(pch.pageControl);
frmOutput.Show;
grep.Show;
pch.ManualDock(dpBottom);
pch.Visible := True;
pch.PageControl.ActivePage := pch.PageControl.Pages[0];
DockHandler.Refresh;
end;
procedure TfrmMain.ActivationFromOtherInstance;
var
sl: TStringList;
i: Integer;
sFileName: String;
begin
Application.Restore;
Application.BringToFront;
sl := TStringList.Create;
sl.CommaText := rcvStr;
if sl.Count > 0 then sl.Delete(0);
for i := 0 to sl.Count - 1 do begin
sFileName := sl[i];
if FileExists(sFileName) then begin
dmMain.NewDoc(sFileName);
end;
end;
sl.Free;
end;
procedure TfrmMain.FormShow(Sender: TObject);
var
sParam: String;
i: Integer;
begin
dmMain.LoadHighlighters;
FileView1.Checked := frmFiles.Visible;
QuickFTP1.Checked := frmQuickFTP.Visible;
QuickTags1.Checked := frmTags.Visible;
ProjectView1.Checked := frmProjects.Visible;
SnippetsView1.Checked := frmSnippets.Visible;
DebugOutput2.Checked := frmOutput.Visible;
FindInFiles2.checked := Grep.Visible;
main1.Checked := tbrMain.Visible;
abbedView1.Checked := bMDITabs;
search2.Checked := tbSearch.Visible;
Standard1.Checked := tbrProg.Visible;
Editor1.Checked := tbStandard.Visible;
Web1.Checked := tbWeb.Visible;
Macro1.Checked := tbMacros.Visible;
ools1.Checked := tbTools.Visible;
oolPalette1.Checked := pnlPage.Visible;
StatusBar1.Checked := bStatusBar;
DockHandler.Refresh;
dpBottom.Height := dpBottom.Height - 1;
dpBottom.Height := dpBottom.Height + 1;
if pgTop.Visible then
for i := 0 to pgTop.PageCount - 1 do
if pgTop.Pages[i].TabVisible = true then begin
pgTop.Pages[i].SetFocus;
break;
end;
{ FileView1.Checked := frmFiles.Visible;
QuickTags1.Checked := frmTags.Visible;
ProjectView1.Checked := frmProjects.Visible;
SnippetsView1.Checked := frmSnippets.Visible;
DebugOutput1.Checked := frmOutput.Visible;
FindInFiles1.Checked := Grep.Visible;}
// Arrange the windows
// Cascade;
end;
function TfrmMain.ShowFile(sFileName: String; nLine: Integer; bError: Boolean; bChangeProject: Boolean; mdi: TfrmDoc = nil): TfrmDoc;
var
wnd: HWnd;
begin
if mdi = nil
then Result := ChildFromFileName(sFileName)
else Result := mdi;
if Result <> nil then begin
if Result <> ActiveMDIChild then begin
wnd := GetWindow(Result.Handle, GW_HWNDNEXT);
SendMessage(ClientHandle, WM_MDINEXT, wnd, 1);
end;
end else begin
sFileName := StringReplace(sFileName, '/', '\', [rfReplaceAll]);
dmMain.NewDoc(sFileName);
end;
end;
function TfrmMain.ChildFromFileName(sFileName: String): TfrmDoc;
var
i: Integer;
sTransformedName, sTransformedResultName: String;
begin
i := 0;
Result := nil;
sTransformedName := StringReplace(sFileName, '/', '\', [rfReplaceAll]);
while i < MDIChildCount do begin
Result := TfrmDoc(MDIChildren[i]);
sTransformedResultName := StringReplace(Result.FileName, '/', '\', [rfReplaceAll]);
if UpperCase(sTransformedResultName) = UpperCase(sTransformedName) then break;
inc(i);
end;
end;
procedure TfrmMain.pgTbarDockDrop(Sender: TObject; Source: TDragDockObject;
X, Y: Integer);
begin
// pgTBar.ActivePage.Caption := 'test';
end;
function TfrmMain.GetVisibleDockClientCount(win: TWinControl): Integer;
var
i: Integer;
begin
Result := 0;
for i := 0 to win.DockClientCount - 1 do begin
if win.DockClients[i].Visible then inc(Result);
end;
end;
{
procedure TfrmMain.HandleSetOtherHostsAsString(Sender: TDockHandler; sValue: String);
var
i: Integer;
sl: TStringList;
sName: String;
cmp: TComponent;
frm: TDockableForm;
mdi: tfrmDoc;
begin
sl := TStringList.Create;
sl.CommaText := sValue;
for i := 0 to sl.Count - 1 do begin
sName := sl.Names[i];
cmp := FindComponent(sl.Values[sName]);
if cmp <> nil then begin
if cmp is TDockableForm then begin
frm := TDockableForm(cmp);
docCount:=docCount+1;
mdi := NewDoc('Document' + IntToStr(docCount));
frm.Tag := Integer(mdi);
mdi.UseDockManager := True;
mdi.DockSite := True;
DockHandler.RegisterDockHost(mdi);
frm.ManualDock(mdi);
frm.Visible := True;
end;
end else if UpperCase(sName) = 'FRMMAIN' then begin
AsString := sl.Values[sName];
end;
end;
sl.Free;
end;
function TfrmMain.HandleGetOtherHostsAsString(Sender: TDockHandler): String;
var
i: Integer;
sl: TStringList;
mdi: tfrmDoc;
begin
Result := '';
sl := TStringList.Create;
sl.Values['MainForm'] := AsString;
for i := 0 to Sender.DockHostCount - 1 do begin
if Sender.DockHosts[i] is tfrmDoc then begin
mdi := tfrmDoc(Sender.DockHosts[i]);
if mdi.DockClientCount = 1 then begin
sl.Values[mdi.Name] := mdi.DockClients[0].Name;
end;
end;
end;
Result := sl.CommaText;
sl.Free;
end;
}
procedure TfrmMain.FormDestroy(Sender: TObject);
var i: Integer;
begin
mru.SaveMenuItems;
DockHandler.SaveDesktop('Software\cEdit\Docking');
Self := Nil;
end;
procedure TfrmMain.ctBarTopResize(Sender: TObject);
begin
// pgTbar.Width := ctBarTop.ClientWidth - pgTBar.Left;
end;
procedure TfrmMain.ctBarTopEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
// pgTbar.Width := ctBarTop.ClientWidth - pgTBar.Left;
end;
procedure TfrmMain.ctBarTopGetSiteInfo(Sender: TObject;
DockClient: TControl; var InfluenceRect: TRect; MousePos: TPoint;
var CanDock: Boolean);
begin
CanDock := (DockClient.Tag = 1);
end;
procedure TfrmMain.pgTbarGetSiteInfo(Sender: TObject; DockClient: TControl;
var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -