Browser options save

This commit is contained in:
Margers 2025-01-09 20:31:59 +00:00 committed by Michael Van Canneyt
parent fa9ebd2d4c
commit 2b35696400
4 changed files with 129 additions and 30 deletions

View File

@ -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';

View File

@ -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));

View File

@ -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;

View File

@ -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