mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-26 10:00:42 +01:00
Browser options save
This commit is contained in:
parent
fa9ebd2d4c
commit
2b35696400
@ -625,6 +625,7 @@ resourcestring menu_local_gotosource = '~G~oto source';
|
||||
{Browser options dialog.}
|
||||
dialog_browseroptions = 'Browser Options';
|
||||
dialog_localbrowseroptions = 'Local Browser Options';
|
||||
label_browser_units = '~U~nits';
|
||||
label_browser_labels = '~L~abels';
|
||||
label_browser_constants = '~C~onstants';
|
||||
label_browser_types = '~T~ypes';
|
||||
|
||||
@ -39,7 +39,7 @@ uses
|
||||
{$ifdef USE_EXTERNAL_COMPILER}
|
||||
fpintf, { superseeds version_string of version unit }
|
||||
{$endif USE_EXTERNAL_COMPILER}
|
||||
WConsts,WUtils,WINI,WViews,WEditor,WCEdit,
|
||||
WConsts,WUtils,WINI,WViews,WEditor,WCEdit,FPSymbol,
|
||||
{$ifndef NODEBUG}FPDebug,{$endif}FPConst,FPVars,
|
||||
FPIntf,FPTools,FPSwitch,fpchash;
|
||||
|
||||
@ -82,6 +82,7 @@ const
|
||||
secColors = 'Colors';
|
||||
secHelp = 'Help';
|
||||
secEditor = 'Editor';
|
||||
secBrowser = 'Browser';
|
||||
secBreakpoint = 'Breakpoints';
|
||||
secWatches = 'Watches';
|
||||
secHighlight = 'Highlight';
|
||||
@ -123,6 +124,10 @@ const
|
||||
ieDefaultIndentSize = 'DefaultIndentSize';
|
||||
ieDefaultEditorFlags='DefaultFlags';
|
||||
ieDefaultSaveExt = 'DefaultSaveExt';
|
||||
ieBrowserSymbols = 'SymbolFlags';
|
||||
ieBrowserDisplay = 'DisplayFlags';
|
||||
ieBrowserSub = 'SubBrowsing';
|
||||
ieBrowserPane = 'PreferrdPane';
|
||||
ieOpenExts = 'OpenExts';
|
||||
ieHighlightExts = 'Exts';
|
||||
ieTabsPattern = 'NeedsTabs';
|
||||
@ -478,6 +483,11 @@ begin
|
||||
DefaultIndentSize:=INIFile^.GetIntEntry(secEditor,ieDefaultIndentSize,DefaultIndentSize);
|
||||
DefaultCodeEditorFlags:=INIFile^.GetIntEntry(secEditor,ieDefaultEditorFlags,DefaultCodeEditorFlags);
|
||||
DefaultSaveExt:=INIFile^.GetEntry(secEditor,ieDefaultSaveExt,DefaultSaveExt);
|
||||
{ Browser }
|
||||
DefaultSymbolFlags:=INIFile^.GetIntEntry(secBrowser,ieBrowserSymbols,DefaultSymbolFlags);
|
||||
DefaultDispayFlags:=INIFile^.GetIntEntry(secBrowser,ieBrowserDisplay,DefaultDispayFlags);
|
||||
DefaultBrowserSub:=INIFile^.GetIntEntry(secBrowser,ieBrowserSub,DefaultBrowserSub);
|
||||
DefaultBrowserPane:=INIFile^.GetIntEntry(secBrowser,ieBrowserPane,DefaultBrowserPane);
|
||||
{ Highlight }
|
||||
HighlightExts:=INIFile^.GetEntry(secHighlight,ieHighlightExts,HighlightExts);
|
||||
TabsPattern:=INIFile^.GetEntry(secHighlight,ieTabsPattern,TabsPattern);
|
||||
@ -698,6 +708,11 @@ begin
|
||||
INIFile^.SetIntEntry(secEditor,ieDefaultIndentSize,DefaultIndentSize);
|
||||
INIFile^.SetIntEntry(secEditor,ieDefaultEditorFlags,DefaultCodeEditorFlags);
|
||||
INIFile^.SetEntry(secEditor,ieDefaultSaveExt,DefaultSaveExt);
|
||||
{ Browser }
|
||||
INIFile^.SetIntEntry(secBrowser,ieBrowserSymbols,DefaultSymbolFlags);
|
||||
INIFile^.SetIntEntry(secBrowser,ieBrowserDisplay,DefaultDispayFlags);
|
||||
INIFile^.SetIntEntry(secBrowser,ieBrowserSub,DefaultBrowserSub);
|
||||
INIFile^.SetIntEntry(secBrowser,ieBrowserPane,DefaultBrowserPane);
|
||||
{ Highlight }
|
||||
INIFile^.SetEntry(secHighlight,ieHighlightExts,EscapeIniText(HighlightExts));
|
||||
INIFile^.SetEntry(secHighlight,ieTabsPattern,EscapeIniText(TabsPattern));
|
||||
|
||||
@ -1350,54 +1350,84 @@ var D: PCenterDialog;
|
||||
TitleS: string;
|
||||
CB1,CB2: PCheckBoxes;
|
||||
RB1,RB2: PRadioButtons;
|
||||
SymbolsFlags,DisplayFlags,BrowserFlags : Longint;
|
||||
BrowserSub,BrowserPane : Longint;
|
||||
DialogWidth : sw_integer;
|
||||
SymbolsHight: sw_integer;
|
||||
DisplayHight: sw_integer;
|
||||
begin
|
||||
if Browser=nil then
|
||||
TitleS:=dialog_browseroptions
|
||||
else
|
||||
begin { Default browser options }
|
||||
TitleS:=dialog_browseroptions;
|
||||
SymbolsFlags := DefaultSymbolFlags;
|
||||
DisplayFlags := DefaultDispayFlags;
|
||||
BrowserSub:=DefaultBrowserSub;
|
||||
BrowserPane:=DefaultBrowserPane;
|
||||
DialogWidth:=56;
|
||||
SymbolsHight:=4;
|
||||
DisplayHight:=1;
|
||||
end else
|
||||
begin { Local browser options }
|
||||
TitleS:=dialog_localbrowseroptions;
|
||||
R.Assign(0,0,56,15);
|
||||
{BrowserFlags := DefaultBrowserFlags;}
|
||||
BrowserFlags := Browser^.GetFlags;
|
||||
DisplayFlags := BrowserFlags shr 30;
|
||||
SymbolsFlags := BrowserFlags and $7f;
|
||||
DialogWidth:=56-20;
|
||||
SymbolsHight:=7;
|
||||
DisplayHight:=2;
|
||||
RB1:=nil; {it is not suppoused to be valid}
|
||||
end;
|
||||
R.Assign(0,0,DialogWidth,16);
|
||||
New(D, Init(R, TitleS));
|
||||
with D^ do
|
||||
begin
|
||||
HelpCtx:=hcBrowser;
|
||||
GetExtent(R); R.Grow(-2,-2);
|
||||
R.B.Y:=R.A.Y+1+3; R2.Copy(R); Inc(R2.A.Y);
|
||||
R.B.Y:=R.A.Y+1+SymbolsHight; R2.Copy(R); Inc(R2.A.Y);
|
||||
New(CB1, Init(R2,
|
||||
NewSItem(RExpand(label_browser_labels,21+2),
|
||||
NewSItem(RExpand(label_browser_units,21+2),
|
||||
NewSItem(label_browser_labels,
|
||||
NewSItem(label_browser_constants,
|
||||
NewSItem(label_browser_types,
|
||||
NewSItem(label_browser_variables,
|
||||
NewSItem(label_browser_procedures,
|
||||
NewSItem(label_browser_inherited,
|
||||
nil)))))))
|
||||
nil))))))))
|
||||
);
|
||||
Insert(CB1);
|
||||
R2.Move(0,-1); R2.B.Y:=R2.A.Y+1;
|
||||
Insert(New(PLabel, Init(R2, label_browser_symbols, CB1)));
|
||||
CB1^.Value := SymbolsFlags;
|
||||
|
||||
if Browser=nil then
|
||||
begin
|
||||
R.Move(0,R.B.Y-R.A.Y+1);
|
||||
R.B.Y:=R.A.Y+1+2; R2.Copy(R);
|
||||
R3.Copy(R2); R3.B.X:=R3.A.X+(R3.B.X-R3.A.X) div 2-1; Inc(R3.A.Y);
|
||||
New(RB1, Init(R3,
|
||||
NewSItem(label_browser_newbrowser,
|
||||
NewSItem(label_browser_currentbrowser,
|
||||
nil)))
|
||||
);
|
||||
Insert(RB1);
|
||||
R3.Move(0,-1); R3.B.Y:=R3.A.Y+1;
|
||||
Insert(New(PLabel, Init(R3, label_browser_subbrowsing, RB1)));
|
||||
R3.Copy(R2); R3.A.X:=R3.B.X-(R3.B.X-R3.A.X) div 2+1; Inc(R3.A.Y);
|
||||
New(RB2, Init(R3,
|
||||
NewSItem(label_browser_scope,
|
||||
NewSItem(label_browser_reference,
|
||||
nil)))
|
||||
);
|
||||
Insert(RB2);
|
||||
R3.Move(0,-1); R3.B.Y:=R3.A.Y+1;
|
||||
Insert(New(PLabel, Init(R3, label_browser_preferredpane, RB2)));
|
||||
RB1^.Value:=BrowserSub;
|
||||
RB2^.Value:=BrowserPane;
|
||||
end;
|
||||
|
||||
R.Move(0,R.B.Y-R.A.Y+1);
|
||||
R.B.Y:=R.A.Y+1+2; R2.Copy(R);
|
||||
R3.Copy(R2); R3.B.X:=R3.A.X+(R3.B.X-R3.A.X) div 2-1; Inc(R3.A.Y);
|
||||
New(RB1, Init(R3,
|
||||
NewSItem(label_browser_newbrowser,
|
||||
NewSItem(label_browser_currentbrowser,
|
||||
nil)))
|
||||
);
|
||||
Insert(RB1);
|
||||
R3.Move(0,-1); R3.B.Y:=R3.A.Y+1;
|
||||
Insert(New(PLabel, Init(R3, label_browser_subbrowsing, RB1)));
|
||||
R3.Copy(R2); R3.A.X:=R3.B.X-(R3.B.X-R3.A.X) div 2+1; Inc(R3.A.Y);
|
||||
New(RB2, Init(R3,
|
||||
NewSItem(label_browser_scope,
|
||||
NewSItem(label_browser_reference,
|
||||
nil)))
|
||||
);
|
||||
Insert(RB2);
|
||||
R3.Move(0,-1); R3.B.Y:=R3.A.Y+1;
|
||||
Insert(New(PLabel, Init(R3, label_browser_preferredpane, RB2)));
|
||||
|
||||
R.Move(0,R.B.Y-R.A.Y+1);
|
||||
R.B.Y:=R.A.Y+1+1; R2.Copy(R); Inc(R2.A.Y);
|
||||
R.B.Y:=R.A.Y+1+DisplayHight; R2.Copy(R); Inc(R2.A.Y);
|
||||
New(CB2, Init(R2,
|
||||
NewSItem(RExpand(label_browser_qualifiedsymbols,21+2),
|
||||
NewSItem(label_browser_sortsymbols,
|
||||
@ -1406,11 +1436,26 @@ begin
|
||||
Insert(CB2);
|
||||
R2.Move(0,-1); R2.B.Y:=R2.A.Y+1;
|
||||
Insert(New(PLabel, Init(R2, label_browser_display, CB2)));
|
||||
CB2^.Value:=DisplayFlags;
|
||||
end;
|
||||
InsertButtons(D);
|
||||
CB1^.Select;
|
||||
if Desktop^.ExecView(D)=cmOK then
|
||||
begin
|
||||
SymbolsFlags:=CB1^.Value;
|
||||
DisplayFlags:=CB2^.Value;
|
||||
if Browser=nil then
|
||||
begin
|
||||
{DefaultBrowserFlags:=BrowserFlags;}
|
||||
DefaultSymbolFlags:=SymbolsFlags;
|
||||
DefaultDispayFlags:=DisplayFlags;
|
||||
DefaultBrowserSub:=RB1^.Value;
|
||||
DefaultBrowserPane:=RB2^.Value;
|
||||
end else
|
||||
begin
|
||||
BrowserFlags:=DisplayFlags shl 30 or SymbolsFlags;
|
||||
Browser^.SetFlags(BrowserFlags);
|
||||
end;
|
||||
end;
|
||||
Dispose(D, Done);
|
||||
end;
|
||||
|
||||
@ -34,6 +34,29 @@ const
|
||||
btUnitInfo = 4;
|
||||
btBreakWatch = 7;
|
||||
|
||||
{Symbol Flags}
|
||||
bfUnits = $00000001;
|
||||
bfLabels = $00000002;
|
||||
bfConstants = $00000004;
|
||||
bfTypes = $00000008;
|
||||
bfVariables = $00000010;
|
||||
bfProcedures = $00000020;
|
||||
bfInherited = $00000040;
|
||||
{Display Flags}
|
||||
bfQualifiedSymbols = $40000000;
|
||||
bfSortAlways = $80000000;
|
||||
|
||||
const
|
||||
DefaultSymbolFlags : longint = bfUnits or
|
||||
bfLabels or bfConstants or bfTypes or bfVariables or bfProcedures;
|
||||
DefaultDispayFlags : longint = (bfQualifiedSymbols) shr 30;
|
||||
{ Note: default browser flags will be created with formula:
|
||||
BrowserFlags:=DefaultDispayFlags shl 30 or DefaultSymbolFlags;
|
||||
}
|
||||
DefaultBrowserSub : longint = 0;
|
||||
DefaultBrowserPane : longint = 0;
|
||||
|
||||
|
||||
type
|
||||
PBrowserWindow = ^TBrowserWindow;
|
||||
|
||||
@ -198,8 +221,11 @@ type
|
||||
procedure SelectTab(BrowserTab: Sw_integer); virtual;
|
||||
function GetPalette: PPalette; virtual;
|
||||
function Disassemble : boolean;
|
||||
function GetFlags: longint; virtual;
|
||||
procedure SetFlags(AFlags: longint); virtual;
|
||||
destructor Done;virtual;
|
||||
private
|
||||
BrowserFlags : Longint;
|
||||
PageTab : PBrowserTab;
|
||||
ST : PStaticText;
|
||||
Sym : PSymbol;
|
||||
@ -608,7 +634,8 @@ end;
|
||||
|
||||
procedure TSymbolView.OptionsDlg;
|
||||
begin
|
||||
{ Abstract }
|
||||
if MyBW<> nil then
|
||||
Message(@IDEApp, evCommand, cmBrowserOptions, MyBW); { Send message }
|
||||
end;
|
||||
|
||||
destructor TSymbolView.Done;
|
||||
@ -1594,6 +1621,7 @@ begin
|
||||
HelpCtx:=hcBrowserWindow;
|
||||
Sym:=ASym;
|
||||
Prefix:=NewStr(APrefix);
|
||||
BrowserFlags:=DefaultDispayFlags shl 30 or DefaultSymbolFlags;
|
||||
|
||||
GetExtent(R); R.Grow(-1,-1); R.B.Y:=R.A.Y+1;
|
||||
{$ifndef NODEBUG}
|
||||
@ -1904,6 +1932,16 @@ begin
|
||||
{$endif NODEBUG}
|
||||
end;
|
||||
|
||||
function TBrowserWindow.GetFlags: longint;
|
||||
begin
|
||||
GetFlags:=BrowserFlags;
|
||||
end;
|
||||
|
||||
procedure TBrowserWindow.SetFlags(AFlags: longint);
|
||||
begin
|
||||
BrowserFlags:=AFlags;
|
||||
end;
|
||||
|
||||
procedure TBrowserWindow.SetState(AState: Word; Enable: Boolean);
|
||||
{var OldState: word;}
|
||||
begin
|
||||
|
||||
Loading…
Reference in New Issue
Block a user