doublecmd/src/fAbout.pas

192 lines
6 KiB
ObjectPascal

{
Seksi Commander
----------------------------
Implementing of About dialog
Licence : GNU GPL v 2.0
Author : radek.cervinka@centrum.cz
contributors:
Copyright (C) 2006-2008 Koblov Alexander (Alexx2000@mail.ru)
}
unit fAbout;
{$mode objfpc}{$H+}
interface
uses
Graphics, Forms, Controls, StdCtrls, ExtCtrls, Buttons,
SysUtils, Classes, LCLType;
type
{ TfrmAbout }
TfrmAbout = class(TForm)
btnClose: TBitBtn;
btnCopyToClipboard: TButton;
imgLogo: TImage;
lblWidgetsetVer: TLabel;
lblPlatform: TLabel;
lblOperatingSystem: TLabel;
lblRevision: TLabel;
lblHomePageAddress: TLabel;
lblHomePage: TLabel;
lblFreePascalVer: TLabel;
lblTitle: TLabel;
lblLazarusVer: TLabel;
lblBuild: TLabel;
lblVersion: TLabel;
pnlText: TPanel;
memInfo: TMemo;
pnlInfo: TPanel;
pnlLogo: TPanel;
procedure btnCopyToClipboardClick(Sender: TObject);
procedure lblHomePageAddressClick(Sender: TObject);
procedure lblHomePageAddressMouseEnter(Sender: TObject);
procedure lblHomePageAddressMouseLeave(Sender: TObject);
procedure OKButtonClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure frmAboutShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
procedure ShowAboutBox;
implementation
{$R *.lfm}
uses
Clipbrd, dmHelpManager, uDCVersion, uClipboard;
const
cIndention = LineEnding + #32#32;
cAboutMsg =
'This program is free software under GNU GPL 2 license, see COPYING.txt file.' + LineEnding + LineEnding +
'Active developers: '+ cIndention +
'Alexander Koblov (alexx2000@mail.ru) - author, core developer' + cIndention +
'Denis Bisson (denis.bisson@denisbisson.org) - developer' + LineEnding + LineEnding +
'Recent developers: ' + cIndention +
'Przemysław Nagay (cobines@gmail.com) - core developer' + cIndention +
'Dmitry Kolomiets (B4rr4cuda@rambler.ru) - developer' + cIndention +
'Radek Cervinka (radek.cervinka@centrum.cz) - author of Seksi Commander' + LineEnding + LineEnding +
'Contributors:' + cIndention +
'Tolstov Igor (attid@yandex.ru)' + cIndention +
'Anton Panferov (ast.a_s@mail.ru)' + cIndention +
'Rustem Rakhimov (dok_rust@bk.ru)' + cIndention +
'Moroz Serhiy (frost.asm@gmail.com)' + cIndention +
'Vitaly Zotov (vitalyzotov@mail.ru)' + cIndention +
'Zolotov Alex (zolotov-alex@shamangrad.net)' + cIndention +
'Peter Cernoch (pcernoch@volny.cz) - author PFM' + cIndention +
'Pavel Letko (letcuv@centrum.cz) - multirename, split, linker' + cIndention +
'Jiri Karasek (jkarasek@centrum.cz)' + cIndention +
'Vladimir Pilny (vladimir@pilny.com)' + cIndention +
'Vaclav Juza (vaclavjuza@seznam.cz)' + cIndention +
'Martin Matusu (xmat@volny.cz) - chown, chgrp' + cIndention +
'Radek Polak - some viewer fixes' + cIndention +
'Dmytro Zheludko (doublecmd@zheludko.mail.ua)' + cIndention +
'Andryei Gudyak - main icon' + cIndention +
'translators (see details in language files) ' + LineEnding + LineEnding +
'Double Commander uses icons from:' + LineEnding +
'- Tango Icon Library (http://tango.freedesktop.org/Tango_Icon_Library)' + LineEnding +
'- Silk icon set 1.3 by Mark James (http://www.famfamfam.com/lab/icons/silk/)' + LineEnding +
'- Elementary icon theme 2.7.1 (https://github.com/elementary/icons)' + LineEnding +
'- Farm-Fresh Web Icons (https://www.fatcow.com/free-icons)' + LineEnding +
'- Oxygen icon theme (http://oxygen-icons.org)' + LineEnding + LineEnding +
'Big thanks to Lazarus and Free Pascal Team!';
procedure ShowAboutBox;
begin
with TfrmAbout.Create(Application) do
try
ShowModal;
finally
Free;
end;
end;
procedure TfrmAbout.OKButtonClick(Sender: TObject);
begin
Close;
end;
procedure TfrmAbout.lblHomePageAddressMouseLeave(Sender: TObject);
begin
with Sender as TLabel do
begin
Font.Style:= [];
Font.Color:= clBlue;
Cursor:= crDefault;
end;
end;
procedure TfrmAbout.lblHomePageAddressMouseEnter(Sender: TObject);
begin
with Sender as TLabel do
begin
Font.Style:= [fsUnderLine];
Font.Color:= clRed;
Cursor:= crHandPoint;
end;
end;
procedure TfrmAbout.lblHomePageAddressClick(Sender: TObject);
var
ErrMsg: String;
begin
dmHelpMgr.HTMLHelpDatabase.ShowURL('https://doublecmd.sourceforge.io','Double Commander Web Site', ErrMsg);
end;
procedure TfrmAbout.btnCopyToClipboardClick(Sender: TObject);
var
StrInfo: String;
begin
StrInfo := Format('Double Commander' + LineEnding +
'Version: %s' + LineEnding +
'Revision: %s' + LineEnding +
'Build date: %s' + LineEnding +
'Lazarus: %s' + LineEnding +
'FPC: %s' + LineEnding +
'Platform: %s' + LineEnding +
'OS version: %s' + LineEnding,
[dcVersion, dcRevision, dcBuildDate,
GetLazarusVersion, fpcVersion,
TargetCPU + '-' + TargetOS + '-' + TargetWS,
OSVersion]);
if WSVersion <> EmptyStr then
StrInfo := StrInfo + LineEnding + 'Widgetset library: ' + WSVersion;
ClipboardSetText(StrInfo);
end;
procedure TfrmAbout.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key = VK_Escape) then
Close;
end;
procedure TfrmAbout.frmAboutShow(Sender: TObject);
begin
memInfo.Lines.Text := cAboutMsg;
memInfo.CaretPos := Classes.Point(0, 0);
lblVersion.Caption := lblVersion.Caption + #32 + dcVersion;
lblRevision.Caption := lblRevision.Caption + #32 + dcRevision;
lblBuild.Caption := lblBuild.Caption + #32 + dcBuildDate;
lblLazarusVer.Caption := lblLazarusVer.Caption + #32 + GetLazarusVersion;
lblFreePascalVer.Caption := lblFreePascalVer.Caption + #32 + fpcVersion;
lblPlatform.Caption := TargetCPU + '-' + TargetOS + '-' + TargetWS;
lblOperatingSystem.Caption := OSVersion;
lblWidgetsetVer.Caption := WSVersion;
end;
end.