[Initranslator-svncheckins] SF.net SVN: initranslator: [180] translator/trunk
Brought to you by:
peter3
|
From: <pe...@us...> - 2006-12-10 01:30:31
|
Revision: 180
http://svn.sourceforge.net/initranslator/?rev=180&view=rev
Author: peter3
Date: 2006-12-09 17:30:29 -0800 (Sat, 09 Dec 2006)
Log Message:
-----------
ToolConsistency:
- better alhorithm in AutoShortCut
ToolKeyCheck:
- Remember user settings
Modified Paths:
--------------
translator/trunk/src/CommonUtils.pas
translator/trunk/src/MainFrm.pas
translator/trunk/src/ToolConsistency/ToolConsistencyFrm.pas
translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.dfm
translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.pas
translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.dfm
translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.pas
translator/trunk/translator.bpg
Modified: translator/trunk/src/CommonUtils.pas
===================================================================
--- translator/trunk/src/CommonUtils.pas 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/CommonUtils.pas 2006-12-10 01:30:29 UTC (rev 180)
@@ -54,6 +54,14 @@
function SubStrCount(const SubStr, Str: WideString): integer;
function WideContainsChar(Ch: WideChar; const S: WideString): boolean;
function IsCharPunct(const S: WideChar): boolean;
+function IsCharUpper(const S: WideChar): boolean;
+function IsCharLower(const S: WideChar): boolean;
+function IsCharDigit(const S: WideChar): boolean;
+function IsCharSpace(const S: WideChar): boolean;
+function IsCharControl(const S: WideChar): boolean;
+function IsCharBlank(const S: WideChar): boolean;
+function IsCharHex(const S: WideChar): boolean;
+function IsCharAlpha(const S: WideChar): boolean;
implementation
uses
@@ -486,18 +494,71 @@
end;
function WideContainsChar(Ch: WideChar; const S: WideString): boolean;
+var i: integer;
begin
- Result := SubStrCount(Ch, S) > 0;
+ for i := 1 to Length(S) do
+ if Ch = S[i] then
+ begin
+ Result := true;
+ Exit;
+ end;
+ Result := false;
end;
-function IsCharPunct(const S: WideChar): boolean;
+function IsCharType(const S: WideChar; InfoType, AType: Cardinal): boolean;
var
CharType: integer;
begin
- if GetStringTypeExW(LOCALE_SYSTEM_DEFAULT, CT_CTYPE1, @S, 1, CharType) then
- Result := CharType and C1_PUNCT = C1_PUNCT
+ if (S <> WideChar(#0)) and GetStringTypeExW(LOCALE_USER_DEFAULT, InfoType, @S, 1, CharType) then
+ Result := CharType and AType = AType
else
Result := false;
end;
+function IsCharPunct(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_PUNCT);
+end;
+
+function IsCharUpper(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_UPPER);
+end;
+
+function IsCharLower(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_LOWER);
+end;
+
+function IsCharDigit(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_DIGIT);
+end;
+
+function IsCharSpace(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_SPACE);
+end;
+
+function IsCharControl(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_CNTRL);
+end;
+
+function IsCharBlank(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_BLANK);
+end;
+
+function IsCharHex(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_XDIGIT);
+end;
+
+function IsCharAlpha(const S: WideChar): boolean;
+begin
+ Result := IsCharType(S, CT_CTYPE1, C1_ALPHA);
+end;
+
end.
+
Modified: translator/trunk/src/MainFrm.pas
===================================================================
--- translator/trunk/src/MainFrm.pas 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/MainFrm.pas 2006-12-10 01:30:29 UTC (rev 180)
@@ -3333,8 +3333,8 @@
Result := 0;
if not GlobalAppOptions.MisMatchLeadingSpaces then
Exit;
- for j := 1 to Length(S) do // is this loop really correct? does it skip trailbytes?
- if S[j] = cWideSpace then
+ for j := 1 to Length(S) do
+ if IsCharSpace(S[j]) then
Inc(Result)
else
Exit;
@@ -3347,8 +3347,8 @@
Result := 0;
if not GlobalAppOptions.MisMatchTrailingSpaces then
Exit;
- for j := Length(S) downto 1 do // is this loop really correct? does it skip trailbytes?
- if S[j] = cWideSpace then
+ for j := Length(S) downto 1 do
+ if IsCharSpace(S[j]) then
Inc(Result)
else
Exit;
@@ -3360,7 +3360,7 @@
i: integer;
begin
Result := '';
- for i := Length(S) downto 1 do // is this loop really correct? does it skip trailbytes?
+ for i := Length(S) downto 1 do
begin
W := TntWideLastChar(S[i]);
if IsCharPunct(W) then
@@ -3372,7 +3372,8 @@
function IsSameEndControl(const Original, Translation: WideString): boolean;
begin
- Result := not GlobalAppOptions.MisMatchEndControl or WideSameStr(EndControl(Original), EndControl(Translation));
+ Result := not GlobalAppOptions.MisMatchEndControl
+ or WideSameStr(EndControl(Original), EndControl(Translation));
end;
function CountMisMatch(const Original, Translation: WideString): boolean;
@@ -3404,7 +3405,7 @@
// * if any of the items in the "MisMatch" list doesn't match between Original and Translation
MisMatchList := TTntStringlist.Create;
try
- MisMatchList.CommaText := GLobalAppOptions.MisMatchItems;
+ MisMatchList.CommaText := GlobalAppOptions.MisMatchItems;
SaveEditChanges;
if SelectedListItem <> nil then
i := SelectedListItem.Index
Modified: translator/trunk/src/ToolConsistency/ToolConsistencyFrm.pas
===================================================================
--- translator/trunk/src/ToolConsistency/ToolConsistencyFrm.pas 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/ToolConsistency/ToolConsistencyFrm.pas 2006-12-10 01:30:29 UTC (rev 180)
@@ -65,8 +65,7 @@
procedure BuildList(IgnoreAccelChar: boolean);
procedure LoadSettings;
procedure SaveSettings;
- function AutoShortCut(const Item: ITranslationItem;
- S: WideString): WideString;
+ function AutoShortCut(Item: ITranslationItem; S: WideString): WideString;
public
{ Public declarations }
@@ -179,23 +178,37 @@
{ TfrmToolConsistency }
-function TfrmToolConsistency.AutoShortCut(const Item: ITranslationItem; S: WideString): WideString;
+function TfrmToolConsistency.AutoShortCut(Item: ITranslationItem; S: WideString): WideString;
+var
+ WHK:WideString;
+ i:integer;
begin
if (Item <> nil) then
begin
// Synchronize accelerator
if chkSynchronizeAccelChar.Checked then
begin
- if WideGetHotkey(Item.Original) = '' then
- begin
- //No accelerator in original
- S := WideStripHotkey(S);
- end
+ WHK := WideUpperCase(WideGetHotkey(Item.Original));
+ if WHK = '' then
+ S := WideStripHotkey(S)
else
begin
// Accelerator in original
if WideGetHotkey(S) = '' then
- S := cHotkeyPrefix + S;
+ begin
+ i := Pos(WHK, WideUpperCase(S));
+ if i > 0 then // insert at same character as original
+ S := Copy(S, 1, i - 1) + cHotkeyPrefix + Copy(S, i, MaxInt)
+ else // insert at the same character position as original
+ begin
+ i := Pos(cHotKeyPrefix + WHK, WideUpperCase(Item.Original));
+ if (i > 0) and (i <= Length(S)) then
+ S := Copy(S, 1, i - 1) + cHotkeyPrefix + Copy(S, i, MaxInt)
+ else // give up - insert at start
+ S := cHotkeyPrefix + S;
+ end;
+ end;
+
end;
end;
Item.Translation := S;
Modified: translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.dfm
===================================================================
--- translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.dfm 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.dfm 2006-12-10 01:30:29 UTC (rev 180)
@@ -14,6 +14,7 @@
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
+ ShowHint = True
DesignSize = (
478
183)
@@ -45,6 +46,7 @@
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 0
+ WantReturns = False
WordWrap = False
end
object reTranslation: TTntRichEdit
@@ -58,6 +60,7 @@
TabOrder = 1
WantReturns = False
WordWrap = False
+ OnEnter = reTranslationEnter
OnKeyDown = reTranslationKeyDown
OnKeyUp = reTranslationKeyUp
end
Modified: translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.pas
===================================================================
--- translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.pas 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/ToolKeyCheck/ToolKeyCheckEditFrm.pas 2006-12-10 01:30:29 UTC (rev 180)
@@ -18,6 +18,7 @@
Shift: TShiftState);
procedure reTranslationKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
+ procedure reTranslationEnter(Sender: TObject);
private
{ Private declarations }
public
@@ -61,4 +62,9 @@
Key := 0;
end;
+procedure TfrmToolKeyCheckEdit.reTranslationEnter(Sender: TObject);
+begin
+ reTranslation.SelectAll;
+end;
+
end.
\ No newline at end of file
Modified: translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.dfm
===================================================================
--- translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.dfm 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.dfm 2006-12-10 01:30:29 UTC (rev 180)
@@ -89,11 +89,12 @@
HideSelection = False
ReadOnly = True
RowSelect = True
+ PopupMenu = popListView
SmallImages = ilSortArrows
TabOrder = 1
ViewStyle = vsReport
OnColumnClick = lvItemsColumnClick
- OnDblClick = lvItemsDblClick
+ OnDblClick = acSyncExecute
OnEnter = lvItemsEnter
OnInsert = lvItemsInsert
OnResize = lvItemsResize
@@ -394,5 +395,29 @@
ShortCut = 27
OnExecute = acCloseExecute
end
+ object acSync: TTntAction
+ Caption = 'Show in main list'
+ OnExecute = acSyncExecute
+ end
end
+ object popListView: TTntPopupMenu
+ Left = 224
+ Top = 63
+ object Showinmainlist1: TTntMenuItem
+ Action = acSync
+ Default = True
+ end
+ object Edit1: TTntMenuItem
+ Action = acEdit
+ end
+ object N1: TTntMenuItem
+ Caption = '-'
+ end
+ object Update1: TTntMenuItem
+ Action = acUpdate
+ end
+ object Close1: TTntMenuItem
+ Action = acClose
+ end
+ end
end
Modified: translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.pas
===================================================================
--- translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.pas 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/src/ToolKeyCheck/ToolKeyCheckFrm.pas 2006-12-10 01:30:29 UTC (rev 180)
@@ -23,7 +23,8 @@
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, TntForms, ComCtrls, TransIntf, TntComCtrls, ImgList, ActnList,
- TntActnList, StdCtrls, TntStdCtrls, ExtCtrls, TntExtCtrls;
+ TntActnList, StdCtrls, TntStdCtrls, ExtCtrls, TntExtCtrls, Menus,
+ TntMenus;
type
TListViewInfo = class
@@ -42,12 +43,18 @@
acUpdate: TTntAction;
acEdit: TTntAction;
acClose: TTntAction;
+ popListView: TTntPopupMenu;
+ Edit1: TTntMenuItem;
+ acSync: TTntAction;
+ Showinmainlist1: TTntMenuItem;
+ N1: TTntMenuItem;
+ Update1: TTntMenuItem;
+ Close1: TTntMenuItem;
procedure lvItemsResize(Sender: TObject);
procedure lvItemsEnter(Sender: TObject);
procedure lvItemsColumnClick(Sender: TObject; Column: TListColumn);
procedure TntFormCreate(Sender: TObject);
procedure TntFormDestroy(Sender: TObject);
- procedure lvItemsDblClick(Sender: TObject);
procedure lvItemsSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure lvItemsInsert(Sender: TObject; Item: TListItem);
@@ -55,6 +62,7 @@
procedure acUpdateExecute(Sender: TObject);
procedure chkIgnoreEmptyClick(Sender: TObject);
procedure acEditExecute(Sender: TObject);
+ procedure acSyncExecute(Sender: TObject);
private
{ Private declarations }
FAppServices: IApplicationServices;
@@ -70,7 +78,7 @@
implementation
uses
- CommonUtils, TntWindows, TntSysUtils, TntMenus, WideIniFiles, ToolKeyCheckEditFrm;
+ TntWindows, TntSysUtils, CommonUtils, WideIniFiles, ToolKeyCheckEditFrm;
{$R *.DFM}
const
@@ -261,15 +269,6 @@
FListViewInfo.Free;
end;
-procedure TfrmToolKeyCheck.lvItemsDblClick(Sender: TObject);
-var AItem: ITranslationItem;
-begin
- if lvItems.Selected <> nil then
- AItem := ITranslationItem(lvItems.Selected.Data);
- if AItem <> nil then
- FAppServices.SelectedItem := AItem;
-end;
-
procedure TfrmToolKeyCheck.lvItemsSelectItem(Sender: TObject;
Item: TListItem; Selected: Boolean);
var AItem: ITranslationItem;
@@ -307,12 +306,23 @@
procedure TfrmToolKeyCheck.LoadSettings;
begin
-// TODO
+ with TWideMemIniFile.Create(ChangeFileExt(GetModuleName(hInstance), '.ini')) do
+ try
+ chkIgnoreEmpty.Checked := ReadBool('Settings', 'IgnoreEmpty', chkIgnoreEmpty.Checked);
+ finally
+ Free;
+ end;
end;
procedure TfrmToolKeyCheck.SaveSettings;
begin
-// TODO
+ with TWideMemIniFile.Create(ChangeFileExt(GetModuleName(hInstance), '.ini')) do
+ try
+ WriteBool('Settings', 'IgnoreEmpty', chkIgnoreEmpty.Checked);
+ UpdateFile;
+ finally
+ Free;
+ end;
end;
procedure TfrmToolKeyCheck.acEditExecute(Sender: TObject);
@@ -335,5 +345,14 @@
end;
end;
+procedure TfrmToolKeyCheck.acSyncExecute(Sender: TObject);
+var AItem: ITranslationItem;
+begin
+ if lvItems.Selected <> nil then
+ AItem := ITranslationItem(lvItems.Selected.Data);
+ if AItem <> nil then
+ FAppServices.SelectedItem := AItem;
+end;
+
end.
Modified: translator/trunk/translator.bpg
===================================================================
--- translator/trunk/translator.bpg 2006-12-09 18:21:56 UTC (rev 179)
+++ translator/trunk/translator.bpg 2006-12-10 01:30:29 UTC (rev 180)
@@ -12,9 +12,9 @@
PROJECTS = FoxitParser.dll IBForumsParser.dll MozillaDTDParser.dll \
MozillaPropsParser.dll MSDictBuild.exe MSDictParser.dll MsTermBuild.exe \
OlegParser.dll OOGSIParser.dll PHPNukeParser.dll PHPParser.dll \
- PolyGlotParser.dll POParser.dll SciTEParser.dll TMXParser.dll ToolTreeView.dll \
- ToolListEdit.dll ToolPropertiesView.dll ToolConsistency.dll XLIFFParser.dll \
- XilisoftParser.dll translator.exe
+ PolyGlotParser.dll POParser.dll SciTEParser.dll TMXParser.dll \
+ ToolConsistency.dll ToolKeyCheck.dll ToolListEdit.dll ToolPropertiesView.dll \
+ ToolTreeView.dll XLIFFParser.dll XilisoftParser.dll translator.exe
#------------------------------------------------------------------------------
default: $(PROJECTS)
#------------------------------------------------------------------------------
@@ -85,4 +85,7 @@
ToolConsistency.dll: src\ToolConsistency\ToolConsistency.dpr
$(DCC)
+ToolKeyCheck.dll: src\ToolKeyCheck\ToolKeyCheck.dpr
+ $(DCC)
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|