wiki test: showing language enabled

git-svn-id: trunk@35819 -
This commit is contained in:
mattias 2012-03-08 10:10:05 +00:00
parent fd960b161e
commit f985998e16
6 changed files with 138 additions and 21 deletions

View File

@ -98,6 +98,7 @@ function WikiHeaderToLink(Header: string): string;
function WikiCreateCommonCodeTagList(AddLazWikiLangs: boolean): TKeyWordFunctionList;
function GetWikiPageLanguage(const Page: string): string;
function WikiPageHasLanguage(const Page, Languages: string): boolean;
function WikiLangInLanguageFilter(const Lang, Languages: string): boolean;
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;
function CompareFilenameWithPage(Filename, Page: Pointer): integer;
@ -477,15 +478,18 @@ begin
end;
function WikiPageHasLanguage(const Page, Languages: string): boolean;
begin
Result:=WikiLangInLanguageFilter(GetWikiPageLanguage(Page),Languages);
end;
function WikiLangInLanguageFilter(const Lang, Languages: string): boolean;
// * = fits any
// de = fits 'de' and original
// -,de = fits only 'de'
var
Lang: String;
p: PChar;
StartPos: PChar;
begin
Lang:=GetWikiPageLanguage(Page);
if (Languages='') then
exit(Lang='');
p:=PChar(Languages);
@ -507,7 +511,6 @@ begin
end;
while p^=',' do inc(p);
end;
Result:=false;
end;
function ComparePagesWithFilenames(Page1, Page2: Pointer): integer;

View File

@ -33,6 +33,8 @@ resourcestring
rsLanguageSpanish = 'Spanish';
rsLanguageTurkish = 'Turkish';
rsLanguageUkrainian = 'Ukrainian';
wrsWikiSearchOptions = 'Wiki Search Options';
wrsLanguages = 'Languages';
implementation

View File

@ -1544,7 +1544,7 @@ end;
function TWikiHelp.LangCodeToCaption(ID: string): string;
begin
if ID='' then Result:='English, original'
if ID='' then Result:=rsLanguageEnglishOriginal
else if CompareText(ID,'af')=0 then Result:=rsLanguageAfrikaans
else if CompareText(ID,'ar')=0 then Result:=rsLanguageArabic
else if CompareText(ID,'ca')=0 then Result:=rsLanguageCatalan
@ -1574,8 +1574,8 @@ end;
function TWikiHelp.LangCaptionToCode(Caption: string): string;
begin
Result:='';
if Caption=rsLanguageEnglish then Result:='en'
if Caption=rsLanguageEnglishOriginal then Result:=''
else if Caption=rsLanguageEnglish then Result:='en'
else if Caption=rsLanguageAfrikaans then Result:='af'
else if Caption=rsLanguageArabic then Result:='ar'
else if Caption=rsLanguageCatalan then Result:='ca'
@ -1599,6 +1599,7 @@ begin
else if Caption=rsLanguageSpanish then Result:='es'
else if Caption=rsLanguageTurkish then Result:='tk'
else if Caption=rsLanguageUkrainian then Result:='uk'
else Result:=Caption;
end;
function TWikiHelp.GetProgressCaption: string;

View File

@ -317,7 +317,6 @@ var
HTML: String;
begin
UpdateProgress;
HTML:=WikiHelp.ResultsHTML;
if HTML='' then exit;
LoadHTML(ResultsIpHtmlPanel,HTML);

View File

@ -13,30 +13,102 @@ object WikiSearchOptsWnd: TWikiSearchOptsWnd
Left = 0
Height = 308
Top = 0
Width = 159
Width = 194
Align = alLeft
Caption = 'LanguagesGroupBox'
ClientHeight = 292
ClientWidth = 155
ClientWidth = 190
TabOrder = 0
object LanguagesTreeView: TTreeView
Left = 0
Height = 292
Top = 0
Width = 155
Width = 190
Align = alClient
DefaultItemHeight = 16
ReadOnly = True
ShowLines = False
ShowRoot = False
StateImages = ImageList1
TabOrder = 0
Options = [tvoAutoItemHeight, tvoHideSelection, tvoKeepCollapsedNodes, tvoReadOnly, tvoShowButtons, tvoToolTips, tvoThemedDraw]
end
end
object LanguagesSplitter: TSplitter
Left = 159
Left = 194
Height = 308
Top = 0
Width = 5
end
object ImageList1: TImageList
left = 70
top = 106
Bitmap = {
4C69020000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614CFF8062
49FF816249FF816249FF826449FF816348FF836248FF836248FF84624AFF7E61
4CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFEED4BCFFEDD2
B8FFEFD2B7FFEDCFB4FFEFCFB2FFEECEB1FFF1CFB2FFF0CEB1FFEFCCB2FFEBCC
B3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFE6CCB4FFD1B6
9CFFD2B59AFFD1B398FFD2B295FFCBAB8EFFCBA98CFFC8A689FFC6A389FFDCBD
A4FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614CFF8062
49FF816249FF816249FF816249FF816249FF836248FF816348FF816249FF7C61
4CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FC00FFFFF700806D5EFF7C614CFF7C614CFF806D5EFFFFFFF700FFFFFC00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FB00FFFFF2007C614CFFE8CDB8FFE8CDB8FF7C614CFFFFFFF200FFFFFA00FFFF
FF00FFFFFE00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFC00FFFFFB00FFFF
F500FFFFED00836248FFEACEB6FFEACEB6FF836248FFFFFFEB00FFFFF500FFFF
F900FFFFFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF700FFFFF200FFFF
EB00FFFFE6008A6245FFECCEB5FFECCEB5FF8A6245FFFFFFE600FFFFEB00FFFF
F100FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7A624CFF8362
48FF8A6343FF8A6343FFEDCFB4FFEDCFB4FF8C6343FF8C6342FF856346FF7F63
4BFF816F5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFEED4BCFFEFD2
B7FFF2D2B5FFF1CFB2FFEDCFB2FFEFCFB2FFF5CFB1FFF4CEB0FFEFCDB0FFEBCD
B2FF7F634BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF007C614CFFE6CCB4FFD3B5
9CFFD4B497FFD5B395FFD4B294FFCFAC8BFFCFA989FFCCA688FFC6A487FFDCBE
A3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00806D5EFF7C614DFF8362
48FF8A6343FF8E6342FFD2AC8AFFD4AB8AFF906341FF8E6342FF876246FF7E62
4AFF826D5EFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFF800FFFFF200FFFF
ED00FFFFE6008E6342FFF6D0AEFFD2AC8AFF8E6342FFFFFFE600FFFFED00FFFF
F200FFFFF700FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFC00FFFFFB00FFFF
F500FFFFED00856346FFEFCFB2FFCBAB8EFF856346FFFFFFEB00FFFFF500FFFF
FB00FFFFFC00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FB00FFFFF2007C614CFFECCEB5FFECCEB5FF7C614CFFFFFFF200FFFFFB00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FC00FFFFF700806D5EFF7B604BFF7D624DFF806D5EFFFFFFF700FFFFFC00FDFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF00FFFFFF00FFFFFF00
}
end
end

View File

@ -25,14 +25,16 @@ unit WikiSearchOptions;
interface
uses
Classes, SysUtils, FileUtil, AvgLvlTree, WikiHelpManager, WikiFormat, Forms,
Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, ComCtrls;
Classes, SysUtils, FileUtil, AvgLvlTree, LazLogger, WikiHelpManager,
WikiFormat, WikiStrConsts, Forms, Controls, Graphics, Dialogs, ExtCtrls,
StdCtrls, ComCtrls;
type
{ TWikiSearchOptsWnd }
TWikiSearchOptsWnd = class(TForm)
ImageList1: TImageList;
LanguagesGroupBox: TGroupBox;
LanguagesSplitter: TSplitter;
LanguagesTreeView: TTreeView;
@ -40,10 +42,13 @@ type
private
FLanguages: string;
procedure SetLanguages(AValue: string);
function LangNodeTextToCode(NodeText: string): string;
function LangToNodeText(LangID: string; Count: integer = -1): string;
public
property Languages: string read FLanguages write SetLanguages;
procedure UpdateAvailableLanguages;
procedure UpdateSelectedLanguages;
procedure UpdateEnabledLanguages;
function LangCodeEnabled(const ID: string): boolean;
end;
var
@ -57,8 +62,8 @@ implementation
procedure TWikiSearchOptsWnd.FormCreate(Sender: TObject);
begin
Caption:='Wiki Search Options';
LanguagesGroupBox.Caption:='Languages';
Caption:=wrsWikiSearchOptions;
LanguagesGroupBox.Caption:=wrsLanguages;
end;
procedure TWikiSearchOptsWnd.SetLanguages(AValue: string);
@ -67,6 +72,25 @@ begin
FLanguages:=AValue;
end;
function TWikiSearchOptsWnd.LangNodeTextToCode(NodeText: string): string;
var
p: SizeInt;
begin
p:=Pos(' (',NodeText);
if p>0 then Delete(NodeText,p,length(NodeText));
Result:=WikiHelp.LangCaptionToCode(NodeText)
end;
function TWikiSearchOptsWnd.LangToNodeText(LangID: string; Count: integer
): string;
begin
Result:=WikiHelp.LangCodeToCaption(LangID);
if Count<0 then
Result+=' (?)'
else
Result+=' ('+IntToStr(Count)+')';
end;
procedure TWikiSearchOptsWnd.UpdateAvailableLanguages;
var
Langs: TStringList;
@ -87,14 +111,14 @@ begin
end;
for S2PItem in LangToCount do
if S2PItem^.Name<>'' then
Langs.Add(WikiHelp.LangCodeToCaption(S2PItem^.Name)+' ('+IntToStr({%H-}PtrUInt(S2PItem^.Value))+')');
Langs.Add(LangToNodeText(S2PItem^.Name,{%H-}PtrUInt(S2PItem^.Value)));
Langs.Sort;
Langs.Insert(0,WikiHelp.LangCodeToCaption('')+' ('+IntToStr({%H-}PtrUInt(LangToCount['']))+')');
Langs.Insert(0,LangToNodeText('',{%H-}PtrUInt(LangToCount[''])));
finally
LangToCount.Free;
end;
end else begin
Langs.Add(WikiHelp.LangCodeToCaption(''));
Langs.Add(LangToNodeText(''));
end;
LanguagesTreeView.BeginUpdate;
@ -113,12 +137,28 @@ begin
LanguagesTreeView.EndUpdate;
Langs.Free;
end;
UpdateSelectedLanguages;
UpdateEnabledLanguages;
end;
procedure TWikiSearchOptsWnd.UpdateSelectedLanguages;
procedure TWikiSearchOptsWnd.UpdateEnabledLanguages;
var
i: Integer;
TVNode: TTreeNode;
LangEnabled: Boolean;
begin
for i:=0 to LanguagesTreeView.Items.TopLvlCount-1 do begin
TVNode:=LanguagesTreeView.Items.TopLvlItems[i];
LangEnabled:=LangCodeEnabled(LangNodeTextToCode(TVNode.Text));
if LangEnabled then
TVNode.StateIndex:=1
else
TVNode.StateIndex:=0;
end;
end;
function TWikiSearchOptsWnd.LangCodeEnabled(const ID: string): boolean;
begin
Result:=WikiLangInLanguageFilter(ID,Languages);
end;
end.