mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-05 15:38:15 +02:00
wiki test: options for scores
git-svn-id: trunk@35854 -
This commit is contained in:
parent
24c2bcc08e
commit
0c27d96b3a
@ -42,6 +42,15 @@ resourcestring
|
|||||||
|
|
||||||
wrsWikiSearchOptions = 'Wiki Search Options';
|
wrsWikiSearchOptions = 'Wiki Search Options';
|
||||||
wrsLanguages = 'Languages';
|
wrsLanguages = 'Languages';
|
||||||
|
wrsPageTitleWholeWord = 'Page title, whole word';
|
||||||
|
wrsScores = 'Scores';
|
||||||
|
wrsPageTitlePart = 'Page title, part';
|
||||||
|
wrsHeaderWholeWord = 'Header, whole word';
|
||||||
|
wrsHeaderPart = 'Header, part';
|
||||||
|
wrsTextWholeWord = 'Text, whole word';
|
||||||
|
wrsTextPart = 'Text, part';
|
||||||
|
wrsLinkWholeWord = 'Link, whole word';
|
||||||
|
wrsLinkPart = 'Link, part';
|
||||||
wrsAll = 'All';
|
wrsAll = 'All';
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
@ -75,8 +75,10 @@ type
|
|||||||
LoPhrases: TStrings; // Phrases lowercase
|
LoPhrases: TStrings; // Phrases lowercase
|
||||||
Languages: string; // comma separated list, '-' means not in the original, 'de' = german
|
Languages: string; // comma separated list, '-' means not in the original, 'de' = german
|
||||||
Scoring: TWHScoring;
|
Scoring: TWHScoring;
|
||||||
|
FreeScoring: boolean;
|
||||||
constructor Create(const SearchText: string; const aLang: string = '';
|
constructor Create(const SearchText: string; const aLang: string = '';
|
||||||
aScoring: TWHScoring = nil);
|
aScoring: TWHScoring = nil; aFreeScoring: boolean = false);
|
||||||
|
constructor Clone(Query: TWikiHelpQuery);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
function Equals(Obj: TObject): boolean; override;
|
function Equals(Obj: TObject): boolean; override;
|
||||||
procedure Assign(Source: TPersistent); override;
|
procedure Assign(Source: TPersistent); override;
|
||||||
@ -246,7 +248,7 @@ type
|
|||||||
|
|
||||||
// search
|
// search
|
||||||
procedure Search(const Term: string; const Languages: string = '';
|
procedure Search(const Term: string; const Languages: string = '';
|
||||||
Scoring: TWHScoring = nil);
|
Scoring: TWHScoring = nil; FreeScoring: boolean = false);
|
||||||
procedure Search(aQuery: TWikiHelpQuery);
|
procedure Search(aQuery: TWikiHelpQuery);
|
||||||
property Query: TWikiHelpQuery read FQuery;
|
property Query: TWikiHelpQuery read FQuery;
|
||||||
property DefaultScoring: TWHScoring read FDefaultScoring;
|
property DefaultScoring: TWHScoring read FDefaultScoring;
|
||||||
@ -579,7 +581,6 @@ var
|
|||||||
begin
|
begin
|
||||||
if Source is TWHScoring then begin
|
if Source is TWHScoring then begin
|
||||||
Src:=TWHScoring(Source);
|
Src:=TWHScoring(Source);
|
||||||
debugln(['TWHScoring.Assign ',SizeOf(Phrases)]);
|
|
||||||
Move(Src.Phrases,Phrases,SizeOf(Phrases));
|
Move(Src.Phrases,Phrases,SizeOf(Phrases));
|
||||||
end else
|
end else
|
||||||
inherited Assign(Source);
|
inherited Assign(Source);
|
||||||
@ -588,7 +589,7 @@ end;
|
|||||||
{ TWikiHelpQuery }
|
{ TWikiHelpQuery }
|
||||||
|
|
||||||
constructor TWikiHelpQuery.Create(const SearchText: string;
|
constructor TWikiHelpQuery.Create(const SearchText: string;
|
||||||
const aLang: string; aScoring: TWHScoring);
|
const aLang: string; aScoring: TWHScoring; aFreeScoring: boolean);
|
||||||
var
|
var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
@ -598,13 +599,26 @@ begin
|
|||||||
LoPhrases.Add(UTF8LowerCase(Phrases[i]));
|
LoPhrases.Add(UTF8LowerCase(Phrases[i]));
|
||||||
Languages:=aLang;
|
Languages:=aLang;
|
||||||
Scoring:=aScoring;
|
Scoring:=aScoring;
|
||||||
|
FreeScoring:=aFreeScoring;
|
||||||
|
end;
|
||||||
|
|
||||||
|
constructor TWikiHelpQuery.Clone(Query: TWikiHelpQuery);
|
||||||
|
begin
|
||||||
|
Phrases:=TStringList.Create;
|
||||||
|
LoPhrases:=TStringList.Create;
|
||||||
|
Scoring:=TWHScoring.Create;
|
||||||
|
FreeScoring:=true;
|
||||||
|
Assign(Query);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TWikiHelpQuery.Destroy;
|
destructor TWikiHelpQuery.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(Phrases);
|
FreeAndNil(Phrases);
|
||||||
FreeAndNil(LoPhrases);
|
FreeAndNil(LoPhrases);
|
||||||
FreeAndNil(Scoring);
|
if FreeScoring then
|
||||||
|
FreeAndNil(Scoring)
|
||||||
|
else
|
||||||
|
Scoring:=nil;
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1697,36 +1711,39 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiHelp.Search(const Term: string; const Languages: string;
|
procedure TWikiHelp.Search(const Term: string; const Languages: string;
|
||||||
Scoring: TWHScoring);
|
Scoring: TWHScoring; FreeScoring: boolean);
|
||||||
|
var
|
||||||
|
aQuery: TWikiHelpQuery;
|
||||||
begin
|
begin
|
||||||
if Scoring=nil then Scoring:=DefaultScoring;
|
if Scoring=nil then Scoring:=DefaultScoring;
|
||||||
Search(TWikiHelpQuery.Create(Term,Languages,Scoring));
|
aQuery:=TWikiHelpQuery.Create(Term,Languages,
|
||||||
|
Scoring,FreeScoring and (Scoring<>DefaultScoring));
|
||||||
|
try
|
||||||
|
Search(aQuery);
|
||||||
|
finally
|
||||||
|
aQuery.Free;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiHelp.Search(aQuery: TWikiHelpQuery);
|
procedure TWikiHelp.Search(aQuery: TWikiHelpQuery);
|
||||||
|
|
||||||
procedure FreeQuery(var aQuery: TWikiHelpQuery);
|
|
||||||
begin
|
|
||||||
if aQuery=nil then exit;
|
|
||||||
if aQuery.Scoring=DefaultScoring then
|
|
||||||
aQuery.Scoring:=nil;
|
|
||||||
FreeAndNil(aQuery);
|
|
||||||
end;
|
|
||||||
|
|
||||||
begin
|
begin
|
||||||
EnterCritSect;
|
EnterCritSect;
|
||||||
try
|
try
|
||||||
if (aQuery<>nil) and (FQuery<>nil) and (FQuery.Equals(aQuery)) then begin
|
if aQuery=nil then exit;
|
||||||
|
if FQuery=nil then
|
||||||
|
// first query
|
||||||
|
FQuery:=TWikiHelpQuery.Clone(aQuery)
|
||||||
|
else if FQuery.Equals(aQuery) then begin
|
||||||
// same query
|
// same query
|
||||||
FreeQuery(aQuery);
|
//debugln(['TWikiHelp.Search same query ',FQuery=aQuery,' ',FQuery.Scoring.Equals(aQuery.Scoring),' fquery.scoring=',FQuery.Scoring.Phrases[whfcPageTitle,whfsWholeWord],' aquery.scoring=',aQuery.Scoring.Phrases[whfcPageTitle,whfsWholeWord]]);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end else
|
||||||
FreeQuery(FQuery);
|
FQuery.Assign(aQuery);
|
||||||
FQuery:=aQuery;
|
|
||||||
if LoadingContent then exit;
|
if LoadingContent then exit;
|
||||||
finally
|
finally
|
||||||
LeaveCritSect;
|
LeaveCritSect;
|
||||||
end;
|
end;
|
||||||
|
//debugln(['TWikiHelp.Search searching']);
|
||||||
DoSearch;
|
DoSearch;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -70,18 +70,19 @@ type
|
|||||||
procedure SearchEditChange(Sender: TObject);
|
procedure SearchEditChange(Sender: TObject);
|
||||||
procedure ShowSearchToolButtonClick(Sender: TObject);
|
procedure ShowSearchToolButtonClick(Sender: TObject);
|
||||||
procedure Timer1Timer(Sender: TObject);
|
procedure Timer1Timer(Sender: TObject);
|
||||||
procedure WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
|
||||||
private
|
private
|
||||||
fLastSearchText: string;
|
fLastSearchText: string;
|
||||||
fLastLanguages: string;
|
fLastLanguages: string;
|
||||||
|
fLastScoring: TWHScoring;
|
||||||
FIdleConnected: boolean;
|
FIdleConnected: boolean;
|
||||||
FURLDataProvider: TWikiIpHtmlDataProvider;
|
FURLDataProvider: TWikiIpHtmlDataProvider;
|
||||||
procedure SearchParamsChanged;
|
procedure QueryChanged;
|
||||||
procedure SetIdleConnected(AValue: boolean);
|
procedure SetIdleConnected(AValue: boolean);
|
||||||
procedure UpdateProgress;
|
procedure UpdateProgress;
|
||||||
procedure LoadHTML(Target: TIpHtmlPanel; HTML: string); overload;
|
procedure LoadHTML(Target: TIpHtmlPanel; HTML: string); overload;
|
||||||
procedure LoadHTML(Target: TIpHtmlPanel; aStream: TStream); overload;
|
procedure LoadHTML(Target: TIpHtmlPanel; aStream: TStream); overload;
|
||||||
procedure ShowOptions;
|
procedure ShowOptions;
|
||||||
|
procedure WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
||||||
procedure WikiHelpScanned(Sender: TObject);
|
procedure WikiHelpScanned(Sender: TObject);
|
||||||
procedure WikiHelpSearched(Sender: TObject);
|
procedure WikiHelpSearched(Sender: TObject);
|
||||||
procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean);
|
procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean);
|
||||||
@ -139,6 +140,8 @@ begin
|
|||||||
FURLDataProvider.OnGetImage:=@DataProviderGetImage;
|
FURLDataProvider.OnGetImage:=@DataProviderGetImage;
|
||||||
|
|
||||||
WikiHelp:=TWikiHelp.Create(nil);
|
WikiHelp:=TWikiHelp.Create(nil);
|
||||||
|
fLastScoring:=TWHScoring.Create;
|
||||||
|
fLastScoring.Assign(WikiHelp.DefaultScoring);
|
||||||
WikiHelp.XMLDirectory:=SetDirSeparators('../wikixml');
|
WikiHelp.XMLDirectory:=SetDirSeparators('../wikixml');
|
||||||
WikiHelp.ImagesDirectory:=SetDirSeparators('../images');
|
WikiHelp.ImagesDirectory:=SetDirSeparators('../images');
|
||||||
WikiHelp.Converter.OutputDir:='';
|
WikiHelp.Converter.OutputDir:='';
|
||||||
@ -193,11 +196,14 @@ end;
|
|||||||
|
|
||||||
procedure TWikiSearchDemoForm.FormDestroy(Sender: TObject);
|
procedure TWikiSearchDemoForm.FormDestroy(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
IdleConnected:=false;
|
||||||
|
FreeAndNil(WikiSearchOptsWnd);
|
||||||
// free pages before dataprovider
|
// free pages before dataprovider
|
||||||
FreeAndNil(ResultsIpHtmlPanel);
|
FreeAndNil(ResultsIpHtmlPanel);
|
||||||
FreeAndNil(PageIpHtmlPanel);
|
FreeAndNil(PageIpHtmlPanel);
|
||||||
FreeAndNil(FURLDataProvider);
|
FreeAndNil(FURLDataProvider);
|
||||||
FreeAndNil(WikiHelp);
|
FreeAndNil(WikiHelp);
|
||||||
|
FreeAndNil(fLastScoring);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.HideSearchButtonClick(Sender: TObject);
|
procedure TWikiSearchDemoForm.HideSearchButtonClick(Sender: TObject);
|
||||||
@ -219,7 +225,7 @@ end;
|
|||||||
|
|
||||||
procedure TWikiSearchDemoForm.OnIdle(Sender: TObject; var Done: Boolean);
|
procedure TWikiSearchDemoForm.OnIdle(Sender: TObject; var Done: Boolean);
|
||||||
begin
|
begin
|
||||||
SearchParamsChanged;
|
QueryChanged;
|
||||||
IdleConnected:=false;
|
IdleConnected:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -309,7 +315,7 @@ end;
|
|||||||
|
|
||||||
procedure TWikiSearchDemoForm.WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
procedure TWikiSearchDemoForm.WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SearchParamsChanged;
|
QueryChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.WikiHelpScanned(Sender: TObject);
|
procedure TWikiSearchDemoForm.WikiHelpScanned(Sender: TObject);
|
||||||
@ -329,18 +335,23 @@ begin
|
|||||||
LoadHTML(ResultsIpHtmlPanel,HTML);
|
LoadHTML(ResultsIpHtmlPanel,HTML);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.SearchParamsChanged;
|
procedure TWikiSearchDemoForm.QueryChanged;
|
||||||
var
|
var
|
||||||
NewSearchText: String;
|
NewSearchText: String;
|
||||||
NewLanguages: String;
|
NewLanguages: String;
|
||||||
begin
|
begin
|
||||||
|
if ComponentState*[csDestroying,csLoading]<>[] then exit;
|
||||||
NewSearchText:=UTF8Trim(SearchEdit.Text);
|
NewSearchText:=UTF8Trim(SearchEdit.Text);
|
||||||
NewLanguages:=GetLanguages;
|
NewLanguages:=GetLanguages;
|
||||||
if (NewSearchText=fLastSearchText) and (NewLanguages=fLastLanguages) then
|
if (NewSearchText=fLastSearchText) and (NewLanguages=fLastLanguages)
|
||||||
|
and ((WikiSearchOptsWnd=nil) or fLastScoring.Equals(WikiSearchOptsWnd.Scoring))
|
||||||
|
then
|
||||||
exit;
|
exit;
|
||||||
fLastSearchText:=NewSearchText;
|
fLastSearchText:=NewSearchText;
|
||||||
fLastLanguages:=NewLanguages;
|
fLastLanguages:=NewLanguages;
|
||||||
WikiHelp.Search(NewSearchText,NewLanguages);
|
if WikiSearchOptsWnd<>nil then
|
||||||
|
fLastScoring.Assign(WikiSearchOptsWnd.Scoring);
|
||||||
|
WikiHelp.Search(NewSearchText,NewLanguages,fLastScoring);
|
||||||
Timer1.Enabled:=true;
|
Timer1.Enabled:=true;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -1,30 +1,30 @@
|
|||||||
object WikiSearchOptsWnd: TWikiSearchOptsWnd
|
object WikiSearchOptsWnd: TWikiSearchOptsWnd
|
||||||
Left = 364
|
Left = 364
|
||||||
Height = 308
|
Height = 300
|
||||||
Top = 392
|
Top = 392
|
||||||
Width = 364
|
Width = 449
|
||||||
Caption = 'WikiSearchOptsWnd'
|
Caption = 'WikiSearchOptsWnd'
|
||||||
ClientHeight = 308
|
ClientHeight = 300
|
||||||
ClientWidth = 364
|
ClientWidth = 449
|
||||||
OnClose = FormClose
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
LCLVersion = '0.9.31'
|
LCLVersion = '0.9.31'
|
||||||
object LanguagesGroupBox: TGroupBox
|
object LanguagesGroupBox: TGroupBox
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 308
|
Height = 300
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 194
|
Width = 218
|
||||||
Align = alLeft
|
Align = alClient
|
||||||
Caption = 'LanguagesGroupBox'
|
Caption = 'LanguagesGroupBox'
|
||||||
ClientHeight = 292
|
ClientHeight = 284
|
||||||
ClientWidth = 190
|
ClientWidth = 214
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
object LanguagesTreeView: TTreeView
|
object LanguagesTreeView: TTreeView
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 292
|
Height = 284
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 190
|
Width = 214
|
||||||
Align = alClient
|
Align = alClient
|
||||||
DefaultItemHeight = 16
|
DefaultItemHeight = 16
|
||||||
ReadOnly = True
|
ReadOnly = True
|
||||||
@ -37,10 +37,54 @@ object WikiSearchOptsWnd: TWikiSearchOptsWnd
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object LanguagesSplitter: TSplitter
|
object LanguagesSplitter: TSplitter
|
||||||
Left = 194
|
Left = 218
|
||||||
Height = 308
|
Height = 300
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 5
|
Width = 5
|
||||||
|
Align = alRight
|
||||||
|
ResizeAnchor = akRight
|
||||||
|
end
|
||||||
|
object ScoresGroupBox: TGroupBox
|
||||||
|
Left = 223
|
||||||
|
Height = 300
|
||||||
|
Top = 0
|
||||||
|
Width = 226
|
||||||
|
Align = alRight
|
||||||
|
Caption = 'ScoresGroupBox'
|
||||||
|
ClientHeight = 284
|
||||||
|
ClientWidth = 222
|
||||||
|
TabOrder = 2
|
||||||
|
object ScoresStringGrid: TStringGrid
|
||||||
|
Left = 0
|
||||||
|
Height = 284
|
||||||
|
Top = 0
|
||||||
|
Width = 222
|
||||||
|
Align = alClient
|
||||||
|
AutoFillColumns = True
|
||||||
|
ColCount = 2
|
||||||
|
Columns = <
|
||||||
|
item
|
||||||
|
Color = clBtnFace
|
||||||
|
MinSize = 100
|
||||||
|
MaxSize = 300
|
||||||
|
ReadOnly = True
|
||||||
|
SizePriority = 2
|
||||||
|
Title.Caption = 'Item'
|
||||||
|
Width = 110
|
||||||
|
end
|
||||||
|
item
|
||||||
|
Title.Caption = 'Score'
|
||||||
|
Width = 110
|
||||||
|
end>
|
||||||
|
FixedCols = 0
|
||||||
|
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goAlwaysShowEditor, goColSpanning, goDblClickAutoSize, goSmoothScroll]
|
||||||
|
TabOrder = 0
|
||||||
|
OnEditingDone = ScoresStringGridEditingDone
|
||||||
|
ColWidths = (
|
||||||
|
110
|
||||||
|
110
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object ImageList1: TImageList
|
object ImageList1: TImageList
|
||||||
left = 70
|
left = 70
|
||||||
|
@ -27,7 +27,7 @@ interface
|
|||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, LazLogger, BasicCodeTools,
|
Classes, SysUtils, FileUtil, LazLogger, BasicCodeTools,
|
||||||
CodeToolsStructs, WikiHelpManager, WikiFormat, WikiStrConsts, Forms, Controls,
|
CodeToolsStructs, WikiHelpManager, WikiFormat, WikiStrConsts, Forms, Controls,
|
||||||
Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls;
|
Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls, Grids;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -38,19 +38,26 @@ type
|
|||||||
LanguagesGroupBox: TGroupBox;
|
LanguagesGroupBox: TGroupBox;
|
||||||
LanguagesSplitter: TSplitter;
|
LanguagesSplitter: TSplitter;
|
||||||
LanguagesTreeView: TTreeView;
|
LanguagesTreeView: TTreeView;
|
||||||
|
ScoresGroupBox: TGroupBox;
|
||||||
|
ScoresStringGrid: TStringGrid;
|
||||||
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
|
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure LanguagesTreeViewMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
procedure LanguagesTreeViewMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
||||||
{%H-}Shift: TShiftState; X, Y: Integer);
|
{%H-}Shift: TShiftState; X, Y: Integer);
|
||||||
|
procedure ScoresStringGridEditingDone(Sender: TObject);
|
||||||
private
|
private
|
||||||
FLanguages: TStringToStringTree;
|
FLanguages: TStringToStringTree;
|
||||||
FOnOptionsChanged: TNotifyEvent;
|
FOnOptionsChanged: TNotifyEvent;
|
||||||
|
FScoring: TWHScoring;
|
||||||
function GetLangCodeEnabled(const ID: string): boolean;
|
function GetLangCodeEnabled(const ID: string): boolean;
|
||||||
function GetLanguages: string;
|
function GetLanguages: string;
|
||||||
function LangNodeTextToCode(NodeText: string): string;
|
function LangNodeTextToCode(NodeText: string): string;
|
||||||
function LangToNodeText(LangID: string; Count: integer = -1): string;
|
function LangToNodeText(LangID: string; Count: integer = -1): string;
|
||||||
procedure SetLangCodeEnabled(const ID: string; AValue: boolean);
|
procedure SetLangCodeEnabled(const ID: string; AValue: boolean);
|
||||||
procedure SetLanguages(AValue: string);
|
procedure SetLanguages(AValue: string);
|
||||||
|
procedure FillScoresGrid;
|
||||||
|
function Score2String(s: single): string;
|
||||||
|
procedure DoOptionsChanged;
|
||||||
public
|
public
|
||||||
property Languages: string read GetLanguages write SetLanguages;
|
property Languages: string read GetLanguages write SetLanguages;
|
||||||
property LangCodeEnabled[const ID: string]: boolean read GetLangCodeEnabled
|
property LangCodeEnabled[const ID: string]: boolean read GetLangCodeEnabled
|
||||||
@ -58,6 +65,7 @@ type
|
|||||||
procedure UpdateAvailableLanguages;
|
procedure UpdateAvailableLanguages;
|
||||||
procedure UpdateEnabledLanguages;
|
procedure UpdateEnabledLanguages;
|
||||||
property OnOptionsChanged: TNotifyEvent read FOnOptionsChanged write FOnOptionsChanged;
|
property OnOptionsChanged: TNotifyEvent read FOnOptionsChanged write FOnOptionsChanged;
|
||||||
|
property Scoring: TWHScoring read FScoring;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -71,16 +79,34 @@ implementation
|
|||||||
|
|
||||||
procedure TWikiSearchOptsWnd.FormCreate(Sender: TObject);
|
procedure TWikiSearchOptsWnd.FormCreate(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
FScoring:=TWHScoring.Create;
|
||||||
|
FScoring.Assign(WikiHelp.DefaultScoring);
|
||||||
|
|
||||||
Caption:=wrsWikiSearchOptions;
|
Caption:=wrsWikiSearchOptions;
|
||||||
LanguagesGroupBox.Caption:=wrsLanguages;
|
LanguagesGroupBox.Caption:=wrsLanguages;
|
||||||
FLanguages:=TStringToStringTree.Create(false);
|
FLanguages:=TStringToStringTree.Create(false);
|
||||||
FLanguages['']:='1';
|
FLanguages['']:='1';
|
||||||
|
|
||||||
|
ScoresGroupBox.Caption:=wrsScores;
|
||||||
|
with ScoresStringGrid do begin
|
||||||
|
RowCount:=9;
|
||||||
|
Cells[0, 1]:=wrsPageTitleWholeWord;
|
||||||
|
Cells[0, 2]:=wrsPageTitlePart;
|
||||||
|
Cells[0, 3]:=wrsHeaderWholeWord;
|
||||||
|
Cells[0, 4]:=wrsHeaderPart;
|
||||||
|
Cells[0, 5]:=wrsTextWholeWord;
|
||||||
|
Cells[0, 6]:=wrsTextPart;
|
||||||
|
Cells[0, 7]:=wrsLinkWholeWord;
|
||||||
|
Cells[0, 8]:=wrsLinkPart;
|
||||||
|
end;
|
||||||
|
FillScoresGrid;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchOptsWnd.FormClose(Sender: TObject;
|
procedure TWikiSearchOptsWnd.FormClose(Sender: TObject;
|
||||||
var CloseAction: TCloseAction);
|
var CloseAction: TCloseAction);
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FLanguages);
|
FreeAndNil(FLanguages);
|
||||||
|
FreeAndNil(FScoring);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchOptsWnd.LanguagesTreeViewMouseDown(Sender: TObject;
|
procedure TWikiSearchOptsWnd.LanguagesTreeViewMouseDown(Sender: TObject;
|
||||||
@ -97,6 +123,41 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.ScoresStringGridEditingDone(Sender: TObject);
|
||||||
|
var
|
||||||
|
Category: TWHFitsCategory;
|
||||||
|
FitsString: TWHFitsStringFlag;
|
||||||
|
OldScore: Single;
|
||||||
|
NewScore: Extended;
|
||||||
|
Row: Integer;
|
||||||
|
Col: Integer;
|
||||||
|
begin
|
||||||
|
Row:=ScoresStringGrid.Row;
|
||||||
|
Col:=ScoresStringGrid.Col;
|
||||||
|
if Col=1 then begin
|
||||||
|
case Row of
|
||||||
|
1: begin Category:=whfcPageTitle; FitsString:=whfsWholeWord; end;
|
||||||
|
2: begin Category:=whfcPageTitle; FitsString:=whfsPart; end;
|
||||||
|
3: begin Category:=whfcHeader; FitsString:=whfsWholeWord; end;
|
||||||
|
4: begin Category:=whfcHeader; FitsString:=whfsPart; end;
|
||||||
|
5: begin Category:=whfcText; FitsString:=whfsWholeWord; end;
|
||||||
|
6: begin Category:=whfcText; FitsString:=whfsPart; end;
|
||||||
|
7: begin Category:=whfcLink; FitsString:=whfsWholeWord; end;
|
||||||
|
8: begin Category:=whfcLink; FitsString:=whfsPart; end;
|
||||||
|
else exit;
|
||||||
|
end;
|
||||||
|
OldScore:=Scoring.Phrases[Category,FitsString];
|
||||||
|
NewScore:=StrToFloatDef(ScoresStringGrid.Cells[Col,Row],OldScore);
|
||||||
|
if (NewScore<-10000) then NewScore:=-10000;
|
||||||
|
if (NewScore>10000) then NewScore:=10000;
|
||||||
|
ScoresStringGrid.Cells[Col,Row]:=Score2String(NewScore);
|
||||||
|
if OldScore<>NewScore then begin
|
||||||
|
Scoring.Phrases[Category,FitsString]:=NewScore;
|
||||||
|
DoOptionsChanged;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchOptsWnd.SetLanguages(AValue: string);
|
procedure TWikiSearchOptsWnd.SetLanguages(AValue: string);
|
||||||
var
|
var
|
||||||
p: PChar;
|
p: PChar;
|
||||||
@ -134,6 +195,31 @@ begin
|
|||||||
UpdateEnabledLanguages;
|
UpdateEnabledLanguages;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.FillScoresGrid;
|
||||||
|
begin
|
||||||
|
with ScoresStringGrid do begin
|
||||||
|
Cells[1,1]:=Score2String(Scoring.Phrases[whfcPageTitle,whfsWholeWord]);
|
||||||
|
Cells[1,2]:=Score2String(Scoring.Phrases[whfcPageTitle,whfsPart]);
|
||||||
|
Cells[1,3]:=Score2String(Scoring.Phrases[whfcHeader,whfsWholeWord]);
|
||||||
|
Cells[1,4]:=Score2String(Scoring.Phrases[whfcHeader,whfsPart]);
|
||||||
|
Cells[1,5]:=Score2String(Scoring.Phrases[whfcText,whfsWholeWord]);
|
||||||
|
Cells[1,6]:=Score2String(Scoring.Phrases[whfcText,whfsPart]);
|
||||||
|
Cells[1,7]:=Score2String(Scoring.Phrases[whfcLink,whfsWholeWord]);
|
||||||
|
Cells[1,8]:=Score2String(Scoring.Phrases[whfcLink,whfsPart]);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TWikiSearchOptsWnd.Score2String(s: single): string;
|
||||||
|
begin
|
||||||
|
Result:=FloatToStrF(s,ffGeneral,5,2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.DoOptionsChanged;
|
||||||
|
begin
|
||||||
|
if Assigned(OnOptionsChanged) then
|
||||||
|
OnOptionsChanged(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchOptsWnd.SetLangCodeEnabled(const ID: string;
|
procedure TWikiSearchOptsWnd.SetLangCodeEnabled(const ID: string;
|
||||||
AValue: boolean);
|
AValue: boolean);
|
||||||
begin
|
begin
|
||||||
@ -143,8 +229,7 @@ begin
|
|||||||
else
|
else
|
||||||
FLanguages.Remove(ID);
|
FLanguages.Remove(ID);
|
||||||
UpdateEnabledLanguages;
|
UpdateEnabledLanguages;
|
||||||
if Assigned(OnOptionsChanged) then
|
DoOptionsChanged;
|
||||||
OnOptionsChanged(Self);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWikiSearchOptsWnd.LangNodeTextToCode(NodeText: string): string;
|
function TWikiSearchOptsWnd.LangNodeTextToCode(NodeText: string): string;
|
||||||
|
Loading…
Reference in New Issue
Block a user