initial commit moved from svn

This commit is contained in:
fatalerrors
2022-10-24 22:07:20 +02:00
parent b2caa19213
commit 0e96f4f5e4
229 changed files with 20039 additions and 0 deletions

262
uinit.pas Normal file
View File

@@ -0,0 +1,262 @@
{
********************************************************************************
YaPeTaVi - Yet another Periodic Table Viewer
Copyright (C) 2009-2010 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
All rights reserved.
http://www.geoffray-levasseur.org/
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 3 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 59 Temple
Place - Suite 330, Boston, MA 02111-1307, USA.
********************************************************************************
Description:
Element array initialization and test unit
}
unit uInit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
procedure InitTable;
function TestTable: Boolean;
procedure InitPaths;
procedure InitIcons;
implementation
uses
uElemListClass, uUtils, uConst, uStrings, uIconManager, Controls, Forms,
uDebug, uCommon;
procedure InitTable;
{$warning Is there a way to do this more efficiently?}
begin //add each element in order
ElementsList := TElemList.Create(nil);
ElementsList.BeginUpdate;
ElementsList.Add(H);
ElementsList.Add(He);
ElementsList.Add(Li);
ElementsList.Add(Be);
ElementsList.Add(B);
ElementsList.Add(C);
ElementsList.Add(N);
ElementsList.Add(O);
ElementsList.Add(F);
ElementsList.Add(Ne);
ElementsList.Add(Na);
ElementsList.Add(Mg);
ElementsList.Add(Al);
ElementsList.Add(Si);
ElementsList.Add(P);
ElementsList.Add(S);
ElementsList.Add(Cl);
ElementsList.Add(Ar);
ElementsList.Add(K);
ElementsList.Add(Ca);
ElementsList.Add(Sc);
ElementsList.Add(Ti);
ElementsList.Add(V);
ElementsList.Add(Cr);
ElementsList.Add(Mn);
ElementsList.Add(Fe);
ElementsList.Add(Co);
ElementsList.Add(Ni);
ElementsList.Add(Cu);
ElementsList.Add(Zn);
ElementsList.Add(Ga);
ElementsList.Add(Ge);
ElementsList.Add(Ars);
ElementsList.Add(Se);
ElementsList.Add(Br);
ElementsList.Add(Kr);
ElementsList.Add(Rb);
ElementsList.Add(Sr);
ElementsList.Add(Y);
ElementsList.Add(Zr);
ElementsList.Add(Nb);
ElementsList.Add(Mo);
ElementsList.Add(Tc);
ElementsList.Add(Ru);
ElementsList.Add(Rh);
ElementsList.Add(Pd);
ElementsList.Add(Ag);
ElementsList.Add(Cd);
ElementsList.Add(Ind);
ElementsList.Add(Sn);
ElementsList.Add(Sb);
ElementsList.Add(Te);
ElementsList.Add(I);
ElementsList.Add(Xe);
ElementsList.Add(Cs);
ElementsList.Add(Ba);
ElementsList.Add(La);
ElementsList.Add(Ce);
ElementsList.Add(Pr);
ElementsList.Add(Nd);
ElementsList.Add(Pm);
ElementsList.Add(Sm);
ElementsList.Add(Eu);
ElementsList.Add(Gd);
ElementsList.Add(Tb);
ElementsList.Add(Dy);
ElementsList.Add(Ho);
ElementsList.Add(Er);
ElementsList.Add(Tm);
ElementsList.Add(Yb);
ElementsList.Add(Lu);
ElementsList.Add(Hf);
ElementsList.Add(Ta);
ElementsList.Add(W);
ElementsList.Add(Re);
ElementsList.Add(Os);
ElementsList.Add(Ir);
ElementsList.Add(Pt);
ElementsList.Add(Au);
ElementsList.Add(Hg);
ElementsList.Add(Tl);
ElementsList.Add(Pb);
ElementsList.Add(Bi);
ElementsList.Add(Po);
ElementsList.Add(At);
ElementsList.Add(Rn);
ElementsList.Add(Fr);
ElementsList.Add(Ra);
ElementsList.Add(Ac);
ElementsList.Add(Th);
ElementsList.Add(Pa);
ElementsList.Add(U);
ElementsList.Add(Np);
ElementsList.Add(Pu);
ElementsList.Add(Am);
ElementsList.Add(Cm);
ElementsList.Add(Bk);
ElementsList.Add(Cf);
ElementsList.Add(Es);
ElementsList.Add(Fm);
ElementsList.Add(Md);
ElementsList.Add(No);
ElementsList.Add(Lr);
ElementsList.Add(Rf);
ElementsList.Add(Db);
ElementsList.Add(Sg);
ElementsList.Add(Bh);
ElementsList.Add(Hs);
ElementsList.Add(Mt);
ElementsList.Add(Ds);
ElementsList.Add(Rg);
ElementsList.Add(Cn);
ElementsList.EndUpdate;
end;
function TestTable: Boolean;
var
N: integer;
begin
Result := True;
for N := 1 to ElemNumber do
if ElementsList.Elements[N].Number <> N then
begin
Result := False;
PrintLnDbg('*** ERROR: uInit.TestTable: Invalid order in the list: Get ' +
IntToStr(N) + ' but should be ' + IntToStr(ElementsList.Elements[N].Number) +
'. Please contact application developper!', vlLow);
end;
if Result then
PrintLnDbg('Table seems to be Ok.', vlHigh)
else
begin
PrintLnDbg('*** uInit.TestTable: The table will probably contains errors!',
vlLow);
PrintLnDbg('*** uInit.TestTable: Some program functionalities may be ' +
'affected...', vlLow);
end;
end;
procedure InitPaths;
var
Err: LongInt;
begin
sPrgmPath := GetProgramPath;
Err := FormatFileName(GetUserDir + '.yapetavi', sUsrPath);
if sUsrPath[Length(sUsrPath)] <> DirectorySeparator then
sUsrPath := sUsrPath + DirectorySeparator;
if Err = 0 then
begin
MkDir(sUsrPath);
PrintLnDbg('User path is: ' + sUsrPath + ' created successfully...', vlLow);
end else
if Err = $1000 then
PrintLnDbg('User path is: ' + sUsrPath, vlLow)
else
if Err = $2000 then
begin
PrintLnDbg('*** ERROR: uInit.InitPaths: .yapetavi is a file, can''t ' +
'create this directory', vlLow);
PrintLnDbg(erSolveFileConflict, vlLow);
Halt(10);
end;
Err := FormatFileName(sUsrPath + 'db', sDbPath);
if Err = 0 then
begin
MkDir(sDbPath);
PrintLnDbg('Database path is: ' + sDbPath + ' created successfully...', vlLow);
end else
if Err = $1000 then
PrintLnDbg('Database path is: ' + sDbPath, vlLow)
else
if Err = $2000 then
begin
PrintLnDbg('*** ERROR: uInit.InitPaths: .yapetavi/db is a file, can''t ' +
'create this directory', vlLow);
PrintLnDbg(erSolveFileConflict, vlLow);
Halt(11);
end;
Err := FormatFileName(sUsrPath + 'pics', sPicPath);
if Err = 0 then
begin
MkDir(sPicPath);
PrintLnDbg('Pictures path is: ' + sPicPath + ' created successfully...', vlLow);
end else
if Err = $1000 then
PrintLnDbg(' Pictures path is: ' + sPicPath, vlLow)
else
if Err = $2000 then
begin
PrintLnDbg('*** ERROR: uInit.InitPaths: .yapetavi/pic is a file, can''t ' +
'create this directory', vlLow);
PrintLnDbg(erSolveFileConflict, vlLow);
Halt(13);
end;
Err := FormatFileName(GetProgramPrefix, sPrefixPath); //the directory must exists so no more checks
end;
procedure InitIcons;
var
Err: LongInt;
begin
Err := FormatFileName(GetIconSetsBaseDir, sIconsBase);
GetIconSets(sIconsBase, IconSetsList);
Err := FormatFileName(FindOxygen, sIconPath);
ilDefault := TImageList.Create(Application);
ilDefault.Masked := False;
end;
end.