mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-07 22:34:41 +01:00
wiki test: languages
git-svn-id: trunk@35833 -
This commit is contained in:
parent
0987ec4d3e
commit
44dd07bcd7
@ -511,6 +511,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
while p^=',' do inc(p);
|
while p^=',' do inc(p);
|
||||||
end;
|
end;
|
||||||
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;
|
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;
|
||||||
|
|||||||
@ -1348,7 +1348,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
StartTime:=Now;
|
StartTime:=Now;
|
||||||
//debugln(['TWikiHelp.DoSearch START Search=',Trim(Query.Phrases.Text)]);
|
//debugln(['TWikiHelp.DoSearch START Search=',Trim(Query.Phrases.Text),' Lang="',Query.Languages,'"']);
|
||||||
FoundPages:=nil;
|
FoundPages:=nil;
|
||||||
Converter.Search(Query,Scoring,FoundPages);
|
Converter.Search(Query,Scoring,FoundPages);
|
||||||
HTML:='<html>'+LineEnding
|
HTML:='<html>'+LineEnding
|
||||||
@ -1360,6 +1360,7 @@ begin
|
|||||||
+'<body>'+LineEnding;
|
+'<body>'+LineEnding;
|
||||||
for i:=0 to Min(FoundPages.Count-1,MaxResults) do begin
|
for i:=0 to Min(FoundPages.Count-1,MaxResults) do begin
|
||||||
Page:=TW2HelpPage(FoundPages[i]);
|
Page:=TW2HelpPage(FoundPages[i]);
|
||||||
|
//debugln(['TWikiHelp.DoSearch ',Page.WikiDocumentName,' ',GetWikiPageLanguage(Page.WikiDocumentName),' ',WikiPageHasLanguage(Page.WikiDocumentName,Query.Languages)]);
|
||||||
Node:=Page.GetNodeHighestScore(Query,Scoring);
|
Node:=Page.GetNodeHighestScore(Query,Scoring);
|
||||||
s:='<div class="wikiSearchResultItem">'+FoundNodeToHTMLSnippet(Page,Node,Query)+'</div>'+LineEnding;
|
s:='<div class="wikiSearchResultItem">'+FoundNodeToHTMLSnippet(Page,Node,Query)+'</div>'+LineEnding;
|
||||||
//debugln(['TWikiHelp.TestSearch Score=',Page.Score,' HTML="',s,'"']);
|
//debugln(['TWikiHelp.TestSearch Score=',Page.Score,' HTML="',s,'"']);
|
||||||
|
|||||||
@ -17,7 +17,6 @@ begin
|
|||||||
RequireDerivedFormResource := True;
|
RequireDerivedFormResource := True;
|
||||||
Application.Initialize;
|
Application.Initialize;
|
||||||
Application.CreateForm(TWikiSearchDemoForm, WikiSearchDemoForm);
|
Application.CreateForm(TWikiSearchDemoForm, WikiSearchDemoForm);
|
||||||
Application.CreateForm(TWikiSearchOptsWnd, WikiSearchOptsWnd);
|
|
||||||
Application.Run;
|
Application.Run;
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|||||||
@ -70,6 +70,7 @@ 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;
|
||||||
@ -228,6 +229,7 @@ begin
|
|||||||
Result:=WikiSearchOptsWnd.Languages
|
Result:=WikiSearchOptsWnd.Languages
|
||||||
else
|
else
|
||||||
Result:='';
|
Result:='';
|
||||||
|
//debugln(['TWikiSearchDemoForm.GetLanguages "',Result,'"']);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.IpHtmlPanelHotClick(Sender: TObject);
|
procedure TWikiSearchDemoForm.IpHtmlPanelHotClick(Sender: TObject);
|
||||||
@ -305,6 +307,11 @@ begin
|
|||||||
Timer1.Enabled:=WikiHelp.Busy;
|
Timer1.Enabled:=WikiHelp.Busy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchDemoForm.WikiSearchOptsWndOptionsChanged(Sender: TObject);
|
||||||
|
begin
|
||||||
|
SearchParamsChanged;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchDemoForm.WikiHelpScanned(Sender: TObject);
|
procedure TWikiSearchDemoForm.WikiHelpScanned(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
UpdateProgress;
|
UpdateProgress;
|
||||||
@ -393,8 +400,10 @@ end;
|
|||||||
|
|
||||||
procedure TWikiSearchDemoForm.ShowOptions;
|
procedure TWikiSearchDemoForm.ShowOptions;
|
||||||
begin
|
begin
|
||||||
if WikiSearchOptsWnd=nil then
|
if WikiSearchOptsWnd=nil then begin
|
||||||
WikiSearchOptsWnd:=TWikiSearchOptsWnd.Create(Self);
|
WikiSearchOptsWnd:=TWikiSearchOptsWnd.Create(Self);
|
||||||
|
WikiSearchOptsWnd.OnOptionsChanged:=@WikiSearchOptsWndOptionsChanged;
|
||||||
|
end;
|
||||||
WikiSearchOptsWnd.UpdateAvailableLanguages;
|
WikiSearchOptsWnd.UpdateAvailableLanguages;
|
||||||
WikiSearchOptsWnd.ShowOnTop;
|
WikiSearchOptsWnd.ShowOnTop;
|
||||||
end;
|
end;
|
||||||
|
|||||||
@ -6,6 +6,7 @@ object WikiSearchOptsWnd: TWikiSearchOptsWnd
|
|||||||
Caption = 'WikiSearchOptsWnd'
|
Caption = 'WikiSearchOptsWnd'
|
||||||
ClientHeight = 308
|
ClientHeight = 308
|
||||||
ClientWidth = 364
|
ClientWidth = 364
|
||||||
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
LCLVersion = '0.9.31'
|
LCLVersion = '0.9.31'
|
||||||
@ -31,6 +32,7 @@ object WikiSearchOptsWnd: TWikiSearchOptsWnd
|
|||||||
ShowRoot = False
|
ShowRoot = False
|
||||||
StateImages = ImageList1
|
StateImages = ImageList1
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
|
OnMouseDown = LanguagesTreeViewMouseDown
|
||||||
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoToolTips, tvoThemedDraw]
|
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoToolTips, tvoThemedDraw]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -25,9 +25,9 @@ unit WikiSearchOptions;
|
|||||||
interface
|
interface
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Classes, SysUtils, FileUtil, AvgLvlTree, LazLogger, WikiHelpManager,
|
Classes, SysUtils, FileUtil, LazLogger, BasicCodeTools,
|
||||||
WikiFormat, WikiStrConsts, Forms, Controls, Graphics, Dialogs, ExtCtrls,
|
CodeToolsStructs, WikiHelpManager, WikiFormat, WikiStrConsts, Forms, Controls,
|
||||||
StdCtrls, ComCtrls;
|
Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -38,17 +38,26 @@ type
|
|||||||
LanguagesGroupBox: TGroupBox;
|
LanguagesGroupBox: TGroupBox;
|
||||||
LanguagesSplitter: TSplitter;
|
LanguagesSplitter: TSplitter;
|
||||||
LanguagesTreeView: TTreeView;
|
LanguagesTreeView: TTreeView;
|
||||||
|
procedure FormClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
|
procedure LanguagesTreeViewMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
|
||||||
|
{%H-}Shift: TShiftState; X, Y: Integer);
|
||||||
private
|
private
|
||||||
FLanguages: string;
|
FLanguages: TStringToStringTree;
|
||||||
procedure SetLanguages(AValue: string);
|
FOnOptionsChanged: TNotifyEvent;
|
||||||
|
function GetLangCodeEnabled(const ID: string): boolean;
|
||||||
|
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 SetLanguages(AValue: string);
|
||||||
public
|
public
|
||||||
property Languages: string read FLanguages write SetLanguages;
|
property Languages: string read GetLanguages write SetLanguages;
|
||||||
procedure UpdateAvailableLanguages;
|
procedure UpdateAvailableLanguages;
|
||||||
procedure UpdateEnabledLanguages;
|
procedure UpdateEnabledLanguages;
|
||||||
function LangCodeEnabled(const ID: string): boolean;
|
property LangCodeEnabled[const ID: string]: boolean read GetLangCodeEnabled
|
||||||
|
write SetLangCodeEnabled;
|
||||||
|
property OnOptionsChanged: TNotifyEvent read FOnOptionsChanged write FOnOptionsChanged;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
@ -64,12 +73,78 @@ procedure TWikiSearchOptsWnd.FormCreate(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Caption:=wrsWikiSearchOptions;
|
Caption:=wrsWikiSearchOptions;
|
||||||
LanguagesGroupBox.Caption:=wrsLanguages;
|
LanguagesGroupBox.Caption:=wrsLanguages;
|
||||||
|
FLanguages:=TStringToStringTree.Create(false);
|
||||||
|
FLanguages['']:='1';
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.FormClose(Sender: TObject;
|
||||||
|
var CloseAction: TCloseAction);
|
||||||
|
begin
|
||||||
|
FreeAndNil(FLanguages);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.LanguagesTreeViewMouseDown(Sender: TObject;
|
||||||
|
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||||
|
var
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
LangID: String;
|
||||||
|
begin
|
||||||
|
TVNode:=LanguagesTreeView.GetNodeAt(X,Y);
|
||||||
|
if TVNode=nil then exit;
|
||||||
|
if x>=TVNode.DisplayStateIconLeft then begin
|
||||||
|
LangID:=LangNodeTextToCode(TVNode.Text);
|
||||||
|
LangCodeEnabled[LangID]:=not LangCodeEnabled[LangID];
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWikiSearchOptsWnd.SetLanguages(AValue: string);
|
procedure TWikiSearchOptsWnd.SetLanguages(AValue: string);
|
||||||
|
var
|
||||||
|
p: PChar;
|
||||||
|
StartPos: PChar;
|
||||||
|
i: Integer;
|
||||||
|
Lang: String;
|
||||||
begin
|
begin
|
||||||
if FLanguages=AValue then Exit;
|
if AValue=GetLanguages then Exit;
|
||||||
FLanguages:=AValue;
|
FLanguages.Clear;
|
||||||
|
if AValue='' then begin
|
||||||
|
// empty = only english,original
|
||||||
|
FLanguages['']:='1';
|
||||||
|
end else begin
|
||||||
|
p:=PChar(AValue);
|
||||||
|
while p^<>#0 do begin
|
||||||
|
StartPos:=p;
|
||||||
|
while not (p^ in [#0,',']) do inc(p);
|
||||||
|
if p>StartPos then begin
|
||||||
|
if StartPos^='-' then begin
|
||||||
|
// not original language
|
||||||
|
end else if StartPos^='*' then begin
|
||||||
|
// fit any
|
||||||
|
for i:=0 to LanguagesTreeView.Items.TopLvlCount-1 do
|
||||||
|
FLanguages[LangNodeTextToCode(LanguagesTreeView.Items.TopLvlItems[i].Text)]:='1';
|
||||||
|
end else begin
|
||||||
|
// a specific language
|
||||||
|
Lang:=SubString(StartPos,p-StartPos);
|
||||||
|
if WikiHelp.LangCodeToCaption(Lang)<>Lang then
|
||||||
|
FLanguages[Lang]:='1';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
while p^=',' do inc(p);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
UpdateEnabledLanguages;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TWikiSearchOptsWnd.SetLangCodeEnabled(const ID: string;
|
||||||
|
AValue: boolean);
|
||||||
|
begin
|
||||||
|
if AValue=GetLangCodeEnabled(ID) then exit;
|
||||||
|
if AValue then
|
||||||
|
FLanguages[ID]:='1'
|
||||||
|
else
|
||||||
|
FLanguages.Remove(ID);
|
||||||
|
UpdateEnabledLanguages;
|
||||||
|
if Assigned(OnOptionsChanged) then
|
||||||
|
OnOptionsChanged(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWikiSearchOptsWnd.LangNodeTextToCode(NodeText: string): string;
|
function TWikiSearchOptsWnd.LangNodeTextToCode(NodeText: string): string;
|
||||||
@ -78,7 +153,7 @@ var
|
|||||||
begin
|
begin
|
||||||
p:=Pos(' (',NodeText);
|
p:=Pos(' (',NodeText);
|
||||||
if p>0 then Delete(NodeText,p,length(NodeText));
|
if p>0 then Delete(NodeText,p,length(NodeText));
|
||||||
Result:=WikiHelp.LangCaptionToCode(NodeText)
|
Result:=WikiHelp.LangCaptionToCode(NodeText);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWikiSearchOptsWnd.LangToNodeText(LangID: string; Count: integer
|
function TWikiSearchOptsWnd.LangToNodeText(LangID: string; Count: integer
|
||||||
@ -98,7 +173,7 @@ var
|
|||||||
TVNode: TTreeNode;
|
TVNode: TTreeNode;
|
||||||
LangToCount: TStringToPointerTree;
|
LangToCount: TStringToPointerTree;
|
||||||
Lang: String;
|
Lang: String;
|
||||||
S2PItem: PStringToPointerItem;
|
S2PItem: PStringToPointerTreeItem;
|
||||||
begin
|
begin
|
||||||
// collect all languages and count them
|
// collect all languages and count them
|
||||||
Langs:=TStringList.Create;
|
Langs:=TStringList.Create;
|
||||||
@ -148,7 +223,7 @@ var
|
|||||||
begin
|
begin
|
||||||
for i:=0 to LanguagesTreeView.Items.TopLvlCount-1 do begin
|
for i:=0 to LanguagesTreeView.Items.TopLvlCount-1 do begin
|
||||||
TVNode:=LanguagesTreeView.Items.TopLvlItems[i];
|
TVNode:=LanguagesTreeView.Items.TopLvlItems[i];
|
||||||
LangEnabled:=LangCodeEnabled(LangNodeTextToCode(TVNode.Text));
|
LangEnabled:=LangCodeEnabled[LangNodeTextToCode(TVNode.Text)];
|
||||||
if LangEnabled then
|
if LangEnabled then
|
||||||
TVNode.StateIndex:=1
|
TVNode.StateIndex:=1
|
||||||
else
|
else
|
||||||
@ -156,9 +231,23 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TWikiSearchOptsWnd.LangCodeEnabled(const ID: string): boolean;
|
function TWikiSearchOptsWnd.GetLangCodeEnabled(const ID: string): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=WikiLangInLanguageFilter(ID,Languages);
|
Result:=FLanguages.Contains(ID);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TWikiSearchOptsWnd.GetLanguages: string;
|
||||||
|
var
|
||||||
|
S2SItem: PStringToStringTreeItem;
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
if not FLanguages.Contains('') then
|
||||||
|
Result:='-';
|
||||||
|
for S2SItem in FLanguages do begin
|
||||||
|
if S2SItem^.Name='' then continue;
|
||||||
|
if Result<>'' then Result+=',';
|
||||||
|
Result+=S2SItem^.Name;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user