Changeset 116
- Timestamp:
- Aug 18, 2021, 5:50:18 PM (3 years ago)
- Location:
- trunk
- Files:
-
- 22 added
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Forms/UFormMain.lfm
r115 r116 14 14 OnDestroy = FormDestroy 15 15 OnShow = FormShow 16 LCLVersion = '2.0.1 0.0'16 LCLVersion = '2.0.12.0' 17 17 WindowState = wsMaximized 18 18 object StatusBarMain: TStatusBar -
trunk/Forms/UFormMain.pas
r115 r116 171 171 UCore, UFormCPU, UFormOptions, UFormMessages, UFormTargets, UFormOutput, UFormInput, 172 172 UFormMemory, UFormSourceCode, UFormTargetCode, UTargetInterpretter, UFormLog, 173 UBFTarget ;173 UBFTarget, UCommon; 174 174 175 175 resourcestring … … 613 613 AProjectClose.Execute; 614 614 if Core.Project.Openned then Exit; 615 Core.Project.FileName := 'Examples' + DirectorySeparator + SNewProject + '.b';615 Core.Project.FileName := CombinePaths(Core.DataDir, 'Examples' + DirectorySeparator + SNewProject + '.b'); 616 616 FormSourceCode.SynEditSource.Clear; 617 617 Core.Project.Openned := True; … … 631 631 if Core.LastOpenedList.Items.Count > 0 then 632 632 OpenDialog1.FileName := Core.LastOpenedList.Items[0] 633 else OpenDialog1.FileName := ExtractFileDir(Application.ExeName) + DirectorySeparator + 'Examples';633 else OpenDialog1.FileName := CombinePaths(Core.DataDir, 'Examples'); 634 634 OpenDialog1.InitialDir := ExtractFileDir(OpenDialog1.FileName); 635 635 if OpenDialog1.Execute then begin -
trunk/Languages/LazFuck.cs.po
r115 r116 12 12 "Language: cs\n" 13 13 14 #: tcore.applicationinfo.description 15 msgid "A simple BrainFuck IDE written in Lazarus/FPC." 16 msgstr "" 17 14 18 #: tformcpu.caption 15 19 msgctxt "tformcpu.caption" -
trunk/Languages/LazFuck.po
r115 r116 1 1 msgid "" 2 2 msgstr "Content-Type: text/plain; charset=UTF-8" 3 4 #: tcore.applicationinfo.description 5 msgid "A simple BrainFuck IDE written in Lazarus/FPC." 6 msgstr "" 3 7 4 8 #: tformcpu.caption -
trunk/Packages/Common/Common.lpk
r115 r116 37 37 </Other> 38 38 </CompilerOptions> 39 <Description Value="Various libraries"/> 40 <License Value="GNU/GPL"/> 41 <Version Minor="7"/> 42 <Files Count="26"> 39 <Description Value="Common package with various useful units. 40 41 Source: https://svn.zdechov.net/PascalClassLibrary/Common/"/> 42 <License Value="Copy left."/> 43 <Version Minor="8"/> 44 <Files Count="29"> 43 45 <Item1> 44 46 <Filename Value="StopWatch.pas"/> … … 140 142 </Item22> 141 143 <Item23> 144 <Filename Value="UMetaCanvas.pas"/> 145 <UnitName Value="UMetaCanvas"/> 146 </Item23> 147 <Item24> 148 <Filename Value="UGeometric.pas"/> 149 <UnitName Value="UGeometric"/> 150 </Item24> 151 <Item25> 142 152 <Filename Value="UTranslator.pas"/> 143 153 <HasRegisterProc Value="True"/> 144 154 <UnitName Value="UTranslator"/> 145 </Item2 3>146 <Item2 4>155 </Item25> 156 <Item26> 147 157 <Filename Value="ULanguages.pas"/> 148 158 <UnitName Value="ULanguages"/> 149 </Item2 4>150 <Item2 5>159 </Item26> 160 <Item27> 151 161 <Filename Value="UFormAbout.pas"/> 152 162 <UnitName Value="UFormAbout"/> 153 </Item2 5>154 <Item2 6>163 </Item27> 164 <Item28> 155 165 <Filename Value="UAboutDialog.pas"/> 156 166 <HasRegisterProc Value="True"/> 157 167 <UnitName Value="UAboutDialog"/> 158 </Item26> 168 </Item28> 169 <Item29> 170 <Filename Value="UPixelPointer.pas"/> 171 <UnitName Value="UPixelPointer"/> 172 </Item29> 159 173 </Files> 160 174 <i18n> -
trunk/Packages/Common/Common.pas
r115 r116 12 12 UMemory, UResetableThread, UPool, ULastOpenedList, URegistry, 13 13 UJobProgressView, UXMLUtils, UApplicationInfo, USyncCounter, UListViewSort, 14 UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UAboutDialog, 15 UTranslator, ULanguages, UFormAbout, LazarusPackageIntf; 14 UPersistentForm, UFindFile, UScaleDPI, UTheme, UStringTable, UMetaCanvas, 15 UGeometric, UTranslator, ULanguages, UFormAbout, UAboutDialog, 16 UPixelPointer, LazarusPackageIntf; 16 17 17 18 implementation … … 29 30 RegisterUnit('UScaleDPI', @UScaleDPI.Register); 30 31 RegisterUnit('UTheme', @UTheme.Register); 32 RegisterUnit('UTranslator', @UTranslator.Register); 31 33 RegisterUnit('UAboutDialog', @UAboutDialog.Register); 32 RegisterUnit('UTranslator', @UTranslator.Register);33 34 end; 34 35 -
trunk/Packages/Common/UApplicationInfo.pas
r115 r116 6 6 7 7 uses 8 SysUtils, Classes, Forms, URegistry, Controls, Graphics ;8 SysUtils, Classes, Forms, URegistry, Controls, Graphics, LCLType; 9 9 10 10 type … … 14 14 TApplicationInfo = class(TComponent) 15 15 private 16 FDescription: T Caption;16 FDescription: TTranslateString; 17 17 FIcon: TBitmap; 18 18 FIdentification: Byte; … … 49 49 property EmailContact: string read FEmailContact write FEmailContact; 50 50 property AppName: string read FAppName write FAppName; 51 property Description: string read FDescription write FDescription;51 property Description: TTranslateString read FDescription write FDescription; 52 52 property ReleaseDate: TDateTime read FReleaseDate write FReleaseDate; 53 53 property RegistryKey: string read FRegistryKey write FRegistryKey; … … 77 77 constructor TApplicationInfo.Create(AOwner: TComponent); 78 78 begin 79 inherited Create(AOwner);79 inherited; 80 80 FVersionMajor := 1; 81 81 FIdentification := 1; … … 89 89 begin 90 90 FreeAndNil(FIcon); 91 inherited Destroy;91 inherited; 92 92 end; 93 93 -
trunk/Packages/Common/UCommon.pas
r102 r116 40 40 {$ENDIF} 41 41 42 function IntToBin(Data: Int64; Count: Byte): string;42 function AddLeadingZeroes(const aNumber, Length : integer) : string; 43 43 function BinToInt(BinStr: string): Int64; 44 function TryHexToInt(Data: string; var Value: Integer): Boolean;45 function TryBinToInt(Data: string; var Value: Integer): Boolean;46 44 function BinToHexString(Source: AnsiString): string; 47 45 //function DelTree(DirName : string): Boolean; … … 49 47 function BCDToInt(Value: Byte): Byte; 50 48 function CompareByteArray(Data1, Data2: TArrayOfByte): Boolean; 49 procedure CopyStringArray(Dest: TStringArray; Source: array of string); 50 function CombinePaths(Path1, Path2: string): string; 51 function ComputerName: string; 52 procedure DeleteFiles(APath, AFileSpec: string); 53 procedure ExecuteProgram(Executable: string; Parameters: array of string); 54 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog); 55 procedure FreeThenNil(var Obj); 56 function GetDirCount(Dir: string): Integer; 51 57 function GetUserName: string; 52 function LoggedOnUserNameEx(Format: TUserNameFormat): string;53 function SplitString(var Text: string; Count: Word): string;54 58 function GetBitCount(Variable: QWord; MaxIndex: Integer): Integer; 55 59 function GetBit(Variable: QWord; Index: Byte): Boolean; 60 function GetStringPart(var Text: string; Separator: string): string; 61 function GenerateNewName(OldName: string): string; 62 function GetFileFilterItemExt(Filter: string; Index: Integer): string; 63 function IntToBin(Data: Int64; Count: Byte): string; 64 function LastPos(const SubStr: String; const S: String): Integer; 65 function LoadFileToStr(const FileName: TFileName): AnsiString; 66 function LoggedOnUserNameEx(Format: TUserNameFormat): string; 67 function MergeArray(A, B: array of string): TArrayOfString; 68 function OccurenceOfChar(What: Char; Where: string): Integer; 69 procedure OpenWebPage(URL: string); 70 procedure OpenFileInShell(FileName: string); 71 function PosFromIndex(SubStr: string; Text: string; 72 StartIndex: Integer): Integer; 73 function PosFromIndexReverse(SubStr: string; Text: string; 74 StartIndex: Integer): Integer; 75 function RemoveQuotes(Text: string): string; 76 procedure SaveStringToFile(S, FileName: string); 56 77 procedure SetBit(var Variable: Int64; Index: Byte; State: Boolean); overload; 57 78 procedure SetBit(var Variable: QWord; Index: Byte; State: Boolean); overload; 58 79 procedure SetBit(var Variable: Cardinal; Index: Byte; State: Boolean); overload; 59 80 procedure SetBit(var Variable: Word; Index: Byte; State: Boolean); overload; 60 function AddLeadingZeroes(const aNumber, Length : integer) : string;61 function LastPos(const SubStr: String; const S: String): Integer;62 function GenerateNewName(OldName: string): string;63 function GetFileFilterItemExt(Filter: string; Index: Integer): string;64 procedure FileDialogUpdateFilterFileType(FileDialog: TOpenDialog);65 procedure DeleteFiles(APath, AFileSpec: string);66 procedure OpenWebPage(URL: string);67 procedure OpenFileInShell(FileName: string);68 procedure ExecuteProgram(Executable: string; Parameters: array of string);69 procedure FreeThenNil(var Obj);70 function RemoveQuotes(Text: string): string;71 function ComputerName: string;72 function OccurenceOfChar(What: Char; Where: string): Integer;73 function GetDirCount(Dir: string): Integer;74 function MergeArray(A, B: array of string): TArrayOfString;75 function LoadFileToStr(const FileName: TFileName): AnsiString;76 procedure SaveStringToFile(S, FileName: string);77 81 procedure SearchFiles(AList: TStrings; Dir: string; 78 82 FilterMethod: TFilterMethod = nil; FileNameMethod: TFileNameMethod = nil); 79 function GetStringPart(var Text: string; Separator: string): string;83 function SplitString(var Text: string; Count: Word): string; 80 84 function StripTags(const S: string): string; 81 function PosFromIndex(SubStr: string; Text: string; 82 StartIndex: Integer): Integer; 83 function PosFromIndexReverse(SubStr: string; Text: string; 84 StartIndex: Integer): Integer; 85 procedure CopyStringArray(Dest: TStringArray; Source: array of string); 85 function TryHexToInt(Data: string; var Value: Integer): Boolean; 86 function TryBinToInt(Data: string; var Value: Integer): Boolean; 86 87 87 88 … … 669 670 end; 670 671 672 function CombinePaths(Path1, Path2: string): string; 673 begin 674 Result := Path1; 675 if Result <> '' then Result := Result + DirectorySeparator + Path2 676 else Result := Path2; 677 end; 678 671 679 672 680 initialization -
trunk/Packages/Common/UFormAbout.lfm
r115 r116 11 11 OnShow = FormShow 12 12 Position = poScreenCenter 13 LCLVersion = '2.0. 2.0'13 LCLVersion = '2.0.10.0' 14 14 object LabelDescription: TLabel 15 15 Left = 30 16 Height = 2 616 Height = 24 17 17 Top = 135 18 18 Width = 642 … … 28 28 object LabelContent: TLabel 29 29 Left = 30 30 Height = 2 631 Top = 1 9130 Height = 24 31 Top = 189 32 32 Width = 642 33 33 Align = alTop … … 50 50 TabOrder = 0 51 51 object LabelAppName: TLabel 52 Left = 9653 Height = 10052 Left = 108 53 Height = 84 54 54 Top = 20 55 Width = 5 7255 Width = 564 56 56 Anchors = [akTop, akLeft, akRight] 57 57 AutoSize = False … … 68 68 Top = 30 69 69 Width = 72 70 Proportional = True 71 Stretch = True 70 72 end 71 73 end -
trunk/Packages/Common/UListViewSort.pas
r102 r116 1 1 unit UListViewSort; 2 2 3 // Date: 201 0-11-033 // Date: 2019-05-17 4 4 5 5 {$mode delphi} … … 8 8 9 9 uses 10 {$IFDEF Windows}Windows, CommCtrl, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils,10 {$IFDEF Windows}Windows, CommCtrl, LMessages, {$ENDIF}Classes, Graphics, ComCtrls, SysUtils, 11 11 Controls, DateUtils, Dialogs, fgl, Forms, Grids, StdCtrls, ExtCtrls, 12 LclIntf, L Messages, LclType, LResources;12 LclIntf, LclType, LResources; 13 13 14 14 type -
trunk/Packages/Common/UPersistentForm.pas
r93 r116 3 3 {$mode delphi} 4 4 5 // Date: 20 15-04-185 // Date: 2020-11-26 6 6 7 7 interface … … 9 9 uses 10 10 Classes, SysUtils, Forms, URegistry, LCLIntf, Registry, Controls, ComCtrls, 11 ExtCtrls ;11 ExtCtrls, LCLType; 12 12 13 13 type … … 26 26 FormRestoredSize: TRect; 27 27 FormWindowState: TWindowState; 28 FormFullScreen: Boolean; 28 29 Form: TForm; 29 30 procedure LoadFromRegistry(RegistryContext: TRegistryContext); … … 31 32 function CheckEntireVisible(Rect: TRect): TRect; 32 33 function CheckPartVisible(Rect: TRect; Part: Integer): TRect; 33 procedure Load(Form: TForm; DefaultMaximized: Boolean = False); 34 procedure Load(Form: TForm; DefaultMaximized: Boolean = False; 35 DefaultFullScreen: Boolean = False); 34 36 procedure Save(Form: TForm); 35 37 constructor Create(AOwner: TComponent); override; 38 procedure SetFullScreen(State: Boolean); 36 39 property RegistryContext: TRegistryContext read FRegistryContext 37 40 write FRegistryContext; … … 43 46 procedure Register; 44 47 48 45 49 implementation 46 47 50 48 51 procedure Register; … … 169 172 + FormRestoredSize.Top; 170 173 // Other state 171 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(wsNormal))); 174 FormWindowState := TWindowState(ReadIntegerWithDefault('WindowState', Integer(FormWindowState))); 175 FormFullScreen := ReadBoolWithDefault('FullScreen', FormFullScreen); 172 176 finally 173 177 Free; … … 193 197 // Other state 194 198 WriteInteger('WindowState', Integer(FormWindowState)); 199 WriteBool('FullScreen', FormFullScreen); 195 200 finally 196 201 Free; … … 250 255 end; 251 256 252 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False); 257 procedure TPersistentForm.Load(Form: TForm; DefaultMaximized: Boolean = False; 258 DefaultFullScreen: Boolean = False); 253 259 begin 254 260 Self.Form := Form; … … 258 264 FormRestoredSize := Bounds((Screen.Width - Form.Width) div 2, 259 265 (Screen.Height - Form.Height) div 2, Form.Width, Form.Height); 266 FormWindowState := Form.WindowState; 267 FormFullScreen := DefaultFullScreen; 260 268 261 269 LoadFromRegistry(RegistryContext); … … 277 285 Form.BoundsRect := FormNormalSize; 278 286 end; 287 if FormFullScreen then SetFullScreen(True); 279 288 LoadControl(Form); 280 289 end; … … 284 293 Self.Form := Form; 285 294 FormNormalSize := Bounds(Form.Left, Form.Top, Form.Width, Form.Height); 286 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 287 Form.RestoredHeight); 295 if not FormFullScreen then 296 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 297 Form.RestoredHeight); 288 298 FormWindowState := Form.WindowState; 289 299 SaveToRegistry(RegistryContext); … … 300 310 end; 301 311 312 procedure TPersistentForm.SetFullScreen(State: Boolean); 313 begin 314 if State then begin 315 FormFullScreen := True; 316 FormNormalSize := Form.BoundsRect; 317 FormRestoredSize := Bounds(Form.RestoredLeft, Form.RestoredTop, Form.RestoredWidth, 318 Form.RestoredHeight); 319 FormWindowState := Form.WindowState; 320 ShowWindow(Form.Handle, SW_SHOWFULLSCREEN); 321 {$IFDEF WINDOWS} 322 Form.BorderStyle := bsNone; 323 {$ENDIF} 324 end else begin 325 FormFullScreen := False; 326 {$IFDEF WINDOWS} 327 Form.BorderStyle := bsSizeable; 328 {$ENDIF} 329 ShowWindow(Form.Handle, SW_SHOWNORMAL); 330 if FormWindowState = wsNormal then begin 331 Form.BoundsRect := FormNormalSize; 332 end else 333 if FormWindowState = wsMaximized then begin 334 Form.BoundsRect := FormRestoredSize; 335 Form.WindowState := wsMaximized; 336 end; 337 end; 338 end; 339 302 340 end. 303 341 -
trunk/Packages/Common/UScaleDPI.pas
r102 r116 227 227 Temp[I] := TBitmap.Create; 228 228 Temp[I].SetSize(NewWidth, NewHeight); 229 {$IFDEF Linux} 230 Temp[I].PixelFormat := pf24bit; 231 {$ELSE} 229 232 Temp[I].PixelFormat := pf32bit; 233 {$ENDIF} 230 234 Temp[I].TransparentColor := TempBmp.TransparentColor; 231 235 //Temp[I].TransparentMode := TempBmp.TransparentMode; -
trunk/Packages/Common/UThreading.pas
r93 r116 6 6 7 7 uses 8 Classes, SysUtils, Forms, Contnrs, SyncObjs;8 Classes, SysUtils, Forms, fgl, SyncObjs; 9 9 10 10 type … … 22 22 function GetSuspended: Boolean; virtual; abstract; 23 23 function GetTerminated: Boolean; virtual; abstract; 24 function GetThreadId: Integer; virtual; abstract;24 function GetThreadId: TThreadID; virtual; abstract; 25 25 procedure SetFreeOnTerminate(const AValue: Boolean); virtual; abstract; 26 26 procedure SetPriority(const AValue: TThreadPriority); virtual; abstract; … … 42 42 property Terminated: Boolean read GetTerminated write SetTerminated; 43 43 property Finished: Boolean read GetFinished; 44 property ThreadId: Integerread GetThreadId;44 property ThreadId: TThreadID read GetThreadId; 45 45 end; 46 46 … … 68 68 function GetSuspended: Boolean; override; 69 69 function GetTerminated: Boolean; override; 70 function GetThreadId: Integer; override;70 function GetThreadId: TThreadID; override; 71 71 procedure SetFreeOnTerminate(const AValue: Boolean); override; 72 72 procedure SetPriority(const AValue: TThreadPriority); override; … … 102 102 { TThreadList } 103 103 104 TThreadList = class(T ObjectList)105 function FindById(Id: Integer): TVirtualThread;104 TThreadList = class(TFPGObjectList<TVirtualThread>) 105 function FindById(Id: TThreadID): TVirtualThread; 106 106 constructor Create; virtual; 107 107 end; … … 164 164 if MainThreadID = ThreadID then Method 165 165 else begin 166 Thread := ThreadList.FindById(ThreadID); 166 try 167 ThreadListLock.Acquire; 168 Thread := ThreadList.FindById(ThreadID); 169 finally 170 ThreadListLock.Release; 171 end; 167 172 if Assigned(Thread) then begin 168 173 Thread.Synchronize(Method); … … 173 178 { TThreadList } 174 179 175 function TThreadList.FindById(Id: Integer): TVirtualThread;180 function TThreadList.FindById(Id: TThreadID): TVirtualThread; 176 181 var 177 182 I: Integer; 178 183 begin 179 184 I := 0; 180 while (I < ThreadList.Count) and (T VirtualThread(ThreadList[I]).ThreadID <> Id) do185 while (I < ThreadList.Count) and (ThreadList[I].ThreadID <> Id) do 181 186 Inc(I); 182 if I < ThreadList.Count then Result := T VirtualThread(ThreadList[I])187 if I < ThreadList.Count then Result := ThreadList[I] 183 188 else Result := nil; 184 189 end; … … 233 238 end; 234 239 235 function TListedThread.GetThreadId: Integer;240 function TListedThread.GetThreadId: TThreadID; 236 241 begin 237 242 Result := FThread.ThreadID; … … 356 361 ThreadListLock := TCriticalSection.Create; 357 362 ThreadList := TThreadList.Create; 358 ThreadList. OwnsObjects := False;363 ThreadList.FreeObjects := False; 359 364 360 365 finalization -
trunk/UCore.lfm
r115 r116 20 20 EmailContact = 'robie@centrum.cz' 21 21 AppName = 'LazFuck' 22 Description = ' Simple BrainFuck IDE written in Lazarus/FPC.'23 ReleaseDate = 4 360222 Description = 'A simple BrainFuck IDE written in Lazarus/FPC.' 23 ReleaseDate = 44426 24 24 RegistryKey = '\Software\Chronosoft\LazFuck' 25 25 RegistryRoot = rrKeyCurrentUser … … 541 541 0000000000000000000000000000000000000000000000000000 542 542 } 543 left = 108544 top = 24543 Left = 108 544 Top = 24 545 545 end 546 546 object Translator: TTranslator 547 547 POFilesFolder = 'Languages' 548 left = 108549 top = 108548 Left = 108 549 Top = 108 550 550 end 551 551 object LastOpenedList: TLastOpenedList 552 552 MaxCount = 10 553 left = 108554 top = 192553 Left = 108 554 Top = 192 555 555 end 556 556 object PersistentForm1: TPersistentForm 557 557 MinVisiblePart = 50 558 558 EntireVisible = False 559 left = 108560 top = 276559 Left = 108 560 Top = 276 561 561 end 562 562 object ImageListMain: TImageList 563 left = 372564 top = 24563 Left = 372 564 Top = 24 565 565 Bitmap = { 566 566 4C691D0000001000000010000000000000000000000000000000000000000000 … … 1497 1497 object ScaleDPI1: TScaleDPI 1498 1498 AutoDetect = False 1499 left = 3721500 top = 1201499 Left = 372 1500 Top = 120 1501 1501 end 1502 1502 object ThemeManager: TThemeManager 1503 left = 3621504 top = 2091503 Left = 362 1504 Top = 209 1505 1505 end 1506 1506 object AboutDialog: TAboutDialog 1507 CoolTranslator = CoolTranslator1507 CoolTranslator = Translator 1508 1508 ThemeManager = ThemeManager 1509 1509 ApplicationInfo = ApplicationInfo 1510 left = 3621511 top = 2881510 Left = 362 1511 Top = 288 1512 1512 end 1513 1513 end -
trunk/UCore.pas
r115 r116 31 31 procedure ScaleDPI; 32 32 public 33 DataDir: string; 33 34 Project: TProject; 34 35 Targets: TTargetList; … … 64 65 65 66 procedure TCore.DataModuleCreate(Sender: TObject); 66 begin 67 const 68 LinuxDataDir = '/usr/share/LazFuck'; 69 LinuxLanguagesDir = LinuxDataDir + '/Languages'; 70 begin 71 DataDir := ''; 72 {$IFDEF Linux} 73 // If installed in Linux system then use installation shared game directory for data files 74 if DirectoryExists(LinuxDataDir) then 75 DataDir := LinuxDataDir; 76 // If installed in Linux system then use installation directory for po files 77 if not DirectoryExists(Translator.POFilesFolder) and DirectoryExists(LinuxLanguagesDir) then 78 Translator.POFilesFolder := LinuxLanguagesDir; 79 {$ENDIF} 80 67 81 Project := TProject.Create; 68 82 Targets := TTargetList.Create; … … 79 93 Targets.Add(TTargetCSharp.Create); 80 94 Targets.Add(TTargetJavascript.Create); 81 82 {$IFDEF Linux}83 // If installed in Linux system then use installation directory for po files84 if Application.ExeName = '/usr/bin/' + ExtractFileNameOnly(Application.ExeName) then85 Translator.POFilesFolder := '/usr/share/' + ExtractFileNameOnly(Application.ExeName) + '/languages';86 {$ENDIF}87 95 88 96 LoadFromRegistry(Core.ApplicationInfo.GetRegistryContext);
Note:
See TracChangeset
for help on using the changeset viewer.