initial commit from lost SVN repo
This commit is contained in:
518
spackgui/LICENSE
Normal file
518
spackgui/LICENSE
Normal file
@@ -0,0 +1,518 @@
|
||||
|
||||
CeCILL FREE SOFTWARE LICENSE AGREEMENT
|
||||
|
||||
Version 2.1 dated 2013-06-21
|
||||
|
||||
|
||||
Notice
|
||||
|
||||
This Agreement is a Free Software license agreement that is the result
|
||||
of discussions between its authors in order to ensure compliance with
|
||||
the two main principles guiding its drafting:
|
||||
|
||||
* firstly, compliance with the principles governing the distribution
|
||||
of Free Software: access to source code, broad rights granted to users,
|
||||
* secondly, the election of a governing law, French law, with which it
|
||||
is conformant, both as regards the law of torts and intellectual
|
||||
property law, and the protection that it offers to both authors and
|
||||
holders of the economic rights over software.
|
||||
|
||||
The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
|
||||
license are:
|
||||
|
||||
Commissariat à l'énergie atomique et aux énergies alternatives - CEA, a
|
||||
public scientific, technical and industrial research establishment,
|
||||
having its principal place of business at 25 rue Leblanc, immeuble Le
|
||||
Ponant D, 75015 Paris, France.
|
||||
|
||||
Centre National de la Recherche Scientifique - CNRS, a public scientific
|
||||
and technological establishment, having its principal place of business
|
||||
at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
|
||||
|
||||
Institut National de Recherche en Informatique et en Automatique -
|
||||
Inria, a public scientific and technological establishment, having its
|
||||
principal place of business at Domaine de Voluceau, Rocquencourt, BP
|
||||
105, 78153 Le Chesnay cedex, France.
|
||||
|
||||
|
||||
Preamble
|
||||
|
||||
The purpose of this Free Software license agreement is to grant users
|
||||
the right to modify and redistribute the software governed by this
|
||||
license within the framework of an open source distribution model.
|
||||
|
||||
The exercising of this right is conditional upon certain obligations for
|
||||
users so as to preserve this status for all subsequent redistributions.
|
||||
|
||||
In consideration of access to the source code and the rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors only have limited liability.
|
||||
|
||||
In this respect, the risks associated with loading, using, modifying
|
||||
and/or developing or reproducing the software by the user are brought to
|
||||
the user's attention, given its Free Software status, which may make it
|
||||
complicated to use, with the result that its use is reserved for
|
||||
developers and experienced professionals having in-depth computer
|
||||
knowledge. Users are therefore encouraged to load and test the
|
||||
suitability of the software as regards their requirements in conditions
|
||||
enabling the security of their systems and/or data to be ensured and,
|
||||
more generally, to use and operate it in the same conditions of
|
||||
security. This Agreement may be freely reproduced and published,
|
||||
provided it is not altered, and that no provisions are either added or
|
||||
removed herefrom.
|
||||
|
||||
This Agreement may apply to any or all software for which the holder of
|
||||
the economic rights decides to submit the use thereof to its provisions.
|
||||
|
||||
Frequently asked questions can be found on the official website of the
|
||||
CeCILL licenses family (http://www.cecill.info/index.en.html) for any
|
||||
necessary clarification.
|
||||
|
||||
|
||||
Article 1 - DEFINITIONS
|
||||
|
||||
For the purpose of this Agreement, when the following expressions
|
||||
commence with a capital letter, they shall have the following meaning:
|
||||
|
||||
Agreement: means this license agreement, and its possible subsequent
|
||||
versions and annexes.
|
||||
|
||||
Software: means the software in its Object Code and/or Source Code form
|
||||
and, where applicable, its documentation, "as is" when the Licensee
|
||||
accepts the Agreement.
|
||||
|
||||
Initial Software: means the Software in its Source Code and possibly its
|
||||
Object Code form and, where applicable, its documentation, "as is" when
|
||||
it is first distributed under the terms and conditions of the Agreement.
|
||||
|
||||
Modified Software: means the Software modified by at least one
|
||||
Contribution.
|
||||
|
||||
Source Code: means all the Software's instructions and program lines to
|
||||
which access is required so as to modify the Software.
|
||||
|
||||
Object Code: means the binary files originating from the compilation of
|
||||
the Source Code.
|
||||
|
||||
Holder: means the holder(s) of the economic rights over the Initial
|
||||
Software.
|
||||
|
||||
Licensee: means the Software user(s) having accepted the Agreement.
|
||||
|
||||
Contributor: means a Licensee having made at least one Contribution.
|
||||
|
||||
Licensor: means the Holder, or any other individual or legal entity, who
|
||||
distributes the Software under the Agreement.
|
||||
|
||||
Contribution: means any or all modifications, corrections, translations,
|
||||
adaptations and/or new functions integrated into the Software by any or
|
||||
all Contributors, as well as any or all Internal Modules.
|
||||
|
||||
Module: means a set of sources files including their documentation that
|
||||
enables supplementary functions or services in addition to those offered
|
||||
by the Software.
|
||||
|
||||
External Module: means any or all Modules, not derived from the
|
||||
Software, so that this Module and the Software run in separate address
|
||||
spaces, with one calling the other when they are run.
|
||||
|
||||
Internal Module: means any or all Module, connected to the Software so
|
||||
that they both execute in the same address space.
|
||||
|
||||
GNU GPL: means the GNU General Public License version 2 or any
|
||||
subsequent version, as published by the Free Software Foundation Inc.
|
||||
|
||||
GNU Affero GPL: means the GNU Affero General Public License version 3 or
|
||||
any subsequent version, as published by the Free Software Foundation Inc.
|
||||
|
||||
EUPL: means the European Union Public License version 1.1 or any
|
||||
subsequent version, as published by the European Commission.
|
||||
|
||||
Parties: mean both the Licensee and the Licensor.
|
||||
|
||||
These expressions may be used both in singular and plural form.
|
||||
|
||||
|
||||
Article 2 - PURPOSE
|
||||
|
||||
The purpose of the Agreement is the grant by the Licensor to the
|
||||
Licensee of a non-exclusive, transferable and worldwide license for the
|
||||
Software as set forth in Article 5 <#scope> hereinafter for the whole
|
||||
term of the protection granted by the rights over said Software.
|
||||
|
||||
|
||||
Article 3 - ACCEPTANCE
|
||||
|
||||
3.1 The Licensee shall be deemed as having accepted the terms and
|
||||
conditions of this Agreement upon the occurrence of the first of the
|
||||
following events:
|
||||
|
||||
* (i) loading the Software by any or all means, notably, by
|
||||
downloading from a remote server, or by loading from a physical medium;
|
||||
* (ii) the first time the Licensee exercises any of the rights granted
|
||||
hereunder.
|
||||
|
||||
3.2 One copy of the Agreement, containing a notice relating to the
|
||||
characteristics of the Software, to the limited warranty, and to the
|
||||
fact that its use is restricted to experienced users has been provided
|
||||
to the Licensee prior to its acceptance as set forth in Article 3.1
|
||||
<#accepting> hereinabove, and the Licensee hereby acknowledges that it
|
||||
has read and understood it.
|
||||
|
||||
|
||||
Article 4 - EFFECTIVE DATE AND TERM
|
||||
|
||||
|
||||
4.1 EFFECTIVE DATE
|
||||
|
||||
The Agreement shall become effective on the date when it is accepted by
|
||||
the Licensee as set forth in Article 3.1 <#accepting>.
|
||||
|
||||
|
||||
4.2 TERM
|
||||
|
||||
The Agreement shall remain in force for the entire legal term of
|
||||
protection of the economic rights over the Software.
|
||||
|
||||
|
||||
Article 5 - SCOPE OF RIGHTS GRANTED
|
||||
|
||||
The Licensor hereby grants to the Licensee, who accepts, the following
|
||||
rights over the Software for any or all use, and for the term of the
|
||||
Agreement, on the basis of the terms and conditions set forth hereinafter.
|
||||
|
||||
Besides, if the Licensor owns or comes to own one or more patents
|
||||
protecting all or part of the functions of the Software or of its
|
||||
components, the Licensor undertakes not to enforce the rights granted by
|
||||
these patents against successive Licensees using, exploiting or
|
||||
modifying the Software. If these patents are transferred, the Licensor
|
||||
undertakes to have the transferees subscribe to the obligations set
|
||||
forth in this paragraph.
|
||||
|
||||
|
||||
5.1 RIGHT OF USE
|
||||
|
||||
The Licensee is authorized to use the Software, without any limitation
|
||||
as to its fields of application, with it being hereinafter specified
|
||||
that this comprises:
|
||||
|
||||
1. permanent or temporary reproduction of all or part of the Software
|
||||
by any or all means and in any or all form.
|
||||
|
||||
2. loading, displaying, running, or storing the Software on any or all
|
||||
medium.
|
||||
|
||||
3. entitlement to observe, study or test its operation so as to
|
||||
determine the ideas and principles behind any or all constituent
|
||||
elements of said Software. This shall apply when the Licensee
|
||||
carries out any or all loading, displaying, running, transmission or
|
||||
storage operation as regards the Software, that it is entitled to
|
||||
carry out hereunder.
|
||||
|
||||
|
||||
5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
|
||||
|
||||
The right to make Contributions includes the right to translate, adapt,
|
||||
arrange, or make any or all modifications to the Software, and the right
|
||||
to reproduce the resulting software.
|
||||
|
||||
The Licensee is authorized to make any or all Contributions to the
|
||||
Software provided that it includes an explicit notice that it is the
|
||||
author of said Contribution and indicates the date of the creation thereof.
|
||||
|
||||
|
||||
5.3 RIGHT OF DISTRIBUTION
|
||||
|
||||
In particular, the right of distribution includes the right to publish,
|
||||
transmit and communicate the Software to the general public on any or
|
||||
all medium, and by any or all means, and the right to market, either in
|
||||
consideration of a fee, or free of charge, one or more copies of the
|
||||
Software by any means.
|
||||
|
||||
The Licensee is further authorized to distribute copies of the modified
|
||||
or unmodified Software to third parties according to the terms and
|
||||
conditions set forth hereinafter.
|
||||
|
||||
|
||||
5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
|
||||
|
||||
The Licensee is authorized to distribute true copies of the Software in
|
||||
Source Code or Object Code form, provided that said distribution
|
||||
complies with all the provisions of the Agreement and is accompanied by:
|
||||
|
||||
1. a copy of the Agreement,
|
||||
|
||||
2. a notice relating to the limitation of both the Licensor's warranty
|
||||
and liability as set forth in Articles 8 and 9,
|
||||
|
||||
and that, in the event that only the Object Code of the Software is
|
||||
redistributed, the Licensee allows effective access to the full Source
|
||||
Code of the Software for a period of at least three years from the
|
||||
distribution of the Software, it being understood that the additional
|
||||
acquisition cost of the Source Code shall not exceed the cost of the
|
||||
data transfer.
|
||||
|
||||
|
||||
5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
|
||||
|
||||
When the Licensee makes a Contribution to the Software, the terms and
|
||||
conditions for the distribution of the resulting Modified Software
|
||||
become subject to all the provisions of this Agreement.
|
||||
|
||||
The Licensee is authorized to distribute the Modified Software, in
|
||||
source code or object code form, provided that said distribution
|
||||
complies with all the provisions of the Agreement and is accompanied by:
|
||||
|
||||
1. a copy of the Agreement,
|
||||
|
||||
2. a notice relating to the limitation of both the Licensor's warranty
|
||||
and liability as set forth in Articles 8 and 9,
|
||||
|
||||
and, in the event that only the object code of the Modified Software is
|
||||
redistributed,
|
||||
|
||||
3. a note stating the conditions of effective access to the full source
|
||||
code of the Modified Software for a period of at least three years
|
||||
from the distribution of the Modified Software, it being understood
|
||||
that the additional acquisition cost of the source code shall not
|
||||
exceed the cost of the data transfer.
|
||||
|
||||
|
||||
5.3.3 DISTRIBUTION OF EXTERNAL MODULES
|
||||
|
||||
When the Licensee has developed an External Module, the terms and
|
||||
conditions of this Agreement do not apply to said External Module, that
|
||||
may be distributed under a separate license agreement.
|
||||
|
||||
|
||||
5.3.4 COMPATIBILITY WITH OTHER LICENSES
|
||||
|
||||
The Licensee can include a code that is subject to the provisions of one
|
||||
of the versions of the GNU GPL, GNU Affero GPL and/or EUPL in the
|
||||
Modified or unmodified Software, and distribute that entire code under
|
||||
the terms of the same version of the GNU GPL, GNU Affero GPL and/or EUPL.
|
||||
|
||||
The Licensee can include the Modified or unmodified Software in a code
|
||||
that is subject to the provisions of one of the versions of the GNU GPL,
|
||||
GNU Affero GPL and/or EUPL and distribute that entire code under the
|
||||
terms of the same version of the GNU GPL, GNU Affero GPL and/or EUPL.
|
||||
|
||||
|
||||
Article 6 - INTELLECTUAL PROPERTY
|
||||
|
||||
|
||||
6.1 OVER THE INITIAL SOFTWARE
|
||||
|
||||
The Holder owns the economic rights over the Initial Software. Any or
|
||||
all use of the Initial Software is subject to compliance with the terms
|
||||
and conditions under which the Holder has elected to distribute its work
|
||||
and no one shall be entitled to modify the terms and conditions for the
|
||||
distribution of said Initial Software.
|
||||
|
||||
The Holder undertakes that the Initial Software will remain ruled at
|
||||
least by this Agreement, for the duration set forth in Article 4.2 <#term>.
|
||||
|
||||
|
||||
6.2 OVER THE CONTRIBUTIONS
|
||||
|
||||
The Licensee who develops a Contribution is the owner of the
|
||||
intellectual property rights over this Contribution as defined by
|
||||
applicable law.
|
||||
|
||||
|
||||
6.3 OVER THE EXTERNAL MODULES
|
||||
|
||||
The Licensee who develops an External Module is the owner of the
|
||||
intellectual property rights over this External Module as defined by
|
||||
applicable law and is free to choose the type of agreement that shall
|
||||
govern its distribution.
|
||||
|
||||
|
||||
6.4 JOINT PROVISIONS
|
||||
|
||||
The Licensee expressly undertakes:
|
||||
|
||||
1. not to remove, or modify, in any manner, the intellectual property
|
||||
notices attached to the Software;
|
||||
|
||||
2. to reproduce said notices, in an identical manner, in the copies of
|
||||
the Software modified or not.
|
||||
|
||||
The Licensee undertakes not to directly or indirectly infringe the
|
||||
intellectual property rights on the Software of the Holder and/or
|
||||
Contributors, and to take, where applicable, vis-à-vis its staff, any
|
||||
and all measures required to ensure respect of said intellectual
|
||||
property rights of the Holder and/or Contributors.
|
||||
|
||||
|
||||
Article 7 - RELATED SERVICES
|
||||
|
||||
7.1 Under no circumstances shall the Agreement oblige the Licensor to
|
||||
provide technical assistance or maintenance services for the Software.
|
||||
|
||||
However, the Licensor is entitled to offer this type of services. The
|
||||
terms and conditions of such technical assistance, and/or such
|
||||
maintenance, shall be set forth in a separate instrument. Only the
|
||||
Licensor offering said maintenance and/or technical assistance services
|
||||
shall incur liability therefor.
|
||||
|
||||
7.2 Similarly, any Licensor is entitled to offer to its licensees, under
|
||||
its sole responsibility, a warranty, that shall only be binding upon
|
||||
itself, for the redistribution of the Software and/or the Modified
|
||||
Software, under terms and conditions that it is free to decide. Said
|
||||
warranty, and the financial terms and conditions of its application,
|
||||
shall be subject of a separate instrument executed between the Licensor
|
||||
and the Licensee.
|
||||
|
||||
|
||||
Article 8 - LIABILITY
|
||||
|
||||
8.1 Subject to the provisions of Article 8.2, the Licensee shall be
|
||||
entitled to claim compensation for any direct loss it may have suffered
|
||||
from the Software as a result of a fault on the part of the relevant
|
||||
Licensor, subject to providing evidence thereof.
|
||||
|
||||
8.2 The Licensor's liability is limited to the commitments made under
|
||||
this Agreement and shall not be incurred as a result of in particular:
|
||||
(i) loss due the Licensee's total or partial failure to fulfill its
|
||||
obligations, (ii) direct or consequential loss that is suffered by the
|
||||
Licensee due to the use or performance of the Software, and (iii) more
|
||||
generally, any consequential loss. In particular the Parties expressly
|
||||
agree that any or all pecuniary or business loss (i.e. loss of data,
|
||||
loss of profits, operating loss, loss of customers or orders,
|
||||
opportunity cost, any disturbance to business activities) or any or all
|
||||
legal proceedings instituted against the Licensee by a third party,
|
||||
shall constitute consequential loss and shall not provide entitlement to
|
||||
any or all compensation from the Licensor.
|
||||
|
||||
|
||||
Article 9 - WARRANTY
|
||||
|
||||
9.1 The Licensee acknowledges that the scientific and technical
|
||||
state-of-the-art when the Software was distributed did not enable all
|
||||
possible uses to be tested and verified, nor for the presence of
|
||||
possible defects to be detected. In this respect, the Licensee's
|
||||
attention has been drawn to the risks associated with loading, using,
|
||||
modifying and/or developing and reproducing the Software which are
|
||||
reserved for experienced users.
|
||||
|
||||
The Licensee shall be responsible for verifying, by any or all means,
|
||||
the suitability of the product for its requirements, its good working
|
||||
order, and for ensuring that it shall not cause damage to either persons
|
||||
or properties.
|
||||
|
||||
9.2 The Licensor hereby represents, in good faith, that it is entitled
|
||||
to grant all the rights over the Software (including in particular the
|
||||
rights set forth in Article 5 <#scope>).
|
||||
|
||||
9.3 The Licensee acknowledges that the Software is supplied "as is" by
|
||||
the Licensor without any other express or tacit warranty, other than
|
||||
that provided for in Article 9.2 <#good-faith> and, in particular,
|
||||
without any warranty as to its commercial value, its secured, safe,
|
||||
innovative or relevant nature.
|
||||
|
||||
Specifically, the Licensor does not warrant that the Software is free
|
||||
from any error, that it will operate without interruption, that it will
|
||||
be compatible with the Licensee's own equipment and software
|
||||
configuration, nor that it will meet the Licensee's requirements.
|
||||
|
||||
9.4 The Licensor does not either expressly or tacitly warrant that the
|
||||
Software does not infringe any third party intellectual property right
|
||||
relating to a patent, software or any other property right. Therefore,
|
||||
the Licensor disclaims any and all liability towards the Licensee
|
||||
arising out of any or all proceedings for infringement that may be
|
||||
instituted in respect of the use, modification and redistribution of the
|
||||
Software. Nevertheless, should such proceedings be instituted against
|
||||
the Licensee, the Licensor shall provide it with technical and legal
|
||||
expertise for its defense. Such technical and legal expertise shall be
|
||||
decided on a case-by-case basis between the relevant Licensor and the
|
||||
Licensee pursuant to a memorandum of understanding. The Licensor
|
||||
disclaims any and all liability as regards the Licensee's use of the
|
||||
name of the Software. No warranty is given as regards the existence of
|
||||
prior rights over the name of the Software or as regards the existence
|
||||
of a trademark.
|
||||
|
||||
|
||||
Article 10 - TERMINATION
|
||||
|
||||
10.1 In the event of a breach by the Licensee of its obligations
|
||||
hereunder, the Licensor may automatically terminate this Agreement
|
||||
thirty (30) days after notice has been sent to the Licensee and has
|
||||
remained ineffective.
|
||||
|
||||
10.2 A Licensee whose Agreement is terminated shall no longer be
|
||||
authorized to use, modify or distribute the Software. However, any
|
||||
licenses that it may have granted prior to termination of the Agreement
|
||||
shall remain valid subject to their having been granted in compliance
|
||||
with the terms and conditions hereof.
|
||||
|
||||
|
||||
Article 11 - MISCELLANEOUS
|
||||
|
||||
|
||||
11.1 EXCUSABLE EVENTS
|
||||
|
||||
Neither Party shall be liable for any or all delay, or failure to
|
||||
perform the Agreement, that may be attributable to an event of force
|
||||
majeure, an act of God or an outside cause, such as defective
|
||||
functioning or interruptions of the electricity or telecommunications
|
||||
networks, network paralysis following a virus attack, intervention by
|
||||
government authorities, natural disasters, water damage, earthquakes,
|
||||
fire, explosions, strikes and labor unrest, war, etc.
|
||||
|
||||
11.2 Any failure by either Party, on one or more occasions, to invoke
|
||||
one or more of the provisions hereof, shall under no circumstances be
|
||||
interpreted as being a waiver by the interested Party of its right to
|
||||
invoke said provision(s) subsequently.
|
||||
|
||||
11.3 The Agreement cancels and replaces any or all previous agreements,
|
||||
whether written or oral, between the Parties and having the same
|
||||
purpose, and constitutes the entirety of the agreement between said
|
||||
Parties concerning said purpose. No supplement or modification to the
|
||||
terms and conditions hereof shall be effective as between the Parties
|
||||
unless it is made in writing and signed by their duly authorized
|
||||
representatives.
|
||||
|
||||
11.4 In the event that one or more of the provisions hereof were to
|
||||
conflict with a current or future applicable act or legislative text,
|
||||
said act or legislative text shall prevail, and the Parties shall make
|
||||
the necessary amendments so as to comply with said act or legislative
|
||||
text. All other provisions shall remain effective. Similarly, invalidity
|
||||
of a provision of the Agreement, for any reason whatsoever, shall not
|
||||
cause the Agreement as a whole to be invalid.
|
||||
|
||||
|
||||
11.5 LANGUAGE
|
||||
|
||||
The Agreement is drafted in both French and English and both versions
|
||||
are deemed authentic.
|
||||
|
||||
|
||||
Article 12 - NEW VERSIONS OF THE AGREEMENT
|
||||
|
||||
12.1 Any person is authorized to duplicate and distribute copies of this
|
||||
Agreement.
|
||||
|
||||
12.2 So as to ensure coherence, the wording of this Agreement is
|
||||
protected and may only be modified by the authors of the License, who
|
||||
reserve the right to periodically publish updates or new versions of the
|
||||
Agreement, each with a separate number. These subsequent versions may
|
||||
address new issues encountered by Free Software.
|
||||
|
||||
12.3 Any Software distributed under a given version of the Agreement may
|
||||
only be subsequently distributed under the same version of the Agreement
|
||||
or a subsequent version, subject to the provisions of Article 5.3.4
|
||||
<#compatibility>.
|
||||
|
||||
|
||||
Article 13 - GOVERNING LAW AND JURISDICTION
|
||||
|
||||
13.1 The Agreement is governed by French law. The Parties agree to
|
||||
endeavor to seek an amicable solution to any disagreements or disputes
|
||||
that may arise during the performance of the Agreement.
|
||||
|
||||
13.2 Failing an amicable solution within two (2) months as from their
|
||||
occurrence, and unless emergency proceedings are necessary, the
|
||||
disagreements or disputes shall be referred to the Paris Courts having
|
||||
jurisdiction, by the more diligent Party.
|
||||
2
spackgui/README.md
Normal file
2
spackgui/README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# spackgui
|
||||
|
||||
2
spackgui/buildsys.inc
Normal file
2
spackgui/buildsys.inc
Normal file
@@ -0,0 +1,2 @@
|
||||
//Please do not edit this file. Just run create-buildsys_inc.sh to update it.
|
||||
'Linux 3.9.0-sabayon x86_64 GNU/Linux'
|
||||
2
spackgui/create-buildsys_inc.sh
Executable file
2
spackgui/create-buildsys_inc.sh
Executable file
@@ -0,0 +1,2 @@
|
||||
echo "//Please do not edit this file. Just run create-buildsys_inc.sh to update it." > buildsys.inc
|
||||
echo "'$(uname -srmo)'" >> buildsys.inc
|
||||
765
spackgui/frmabout.lfm
Normal file
765
spackgui/frmabout.lfm
Normal file
@@ -0,0 +1,765 @@
|
||||
object fAbout: TfAbout
|
||||
Left = 3265
|
||||
Height = 468
|
||||
Top = 623
|
||||
Width = 695
|
||||
BorderIcons = [biSystemMenu]
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'About'
|
||||
ClientHeight = 468
|
||||
ClientWidth = 695
|
||||
Constraints.MaxHeight = 468
|
||||
Constraints.MaxWidth = 695
|
||||
Constraints.MinHeight = 468
|
||||
Constraints.MinWidth = 695
|
||||
DesignTimePPI = 108
|
||||
OnCreate = FormCreate
|
||||
Position = poMainFormCenter
|
||||
ShowInTaskBar = stNever
|
||||
LCLVersion = '1.9.0.0'
|
||||
object ProgramIcon: TImage
|
||||
Left = 14
|
||||
Height = 76
|
||||
Top = 9
|
||||
Width = 76
|
||||
Picture.Data = {
|
||||
1754506F727461626C654E6574776F726B47726170686963553B000089504E47
|
||||
0D0A1A0A0000000D494844520000005E0000005E0806000000AAD2A36E000000
|
||||
0473424954080808087C08648800000009704859730000101D0000101D01D1B9
|
||||
54430000001974455874536F667477617265007777772E696E6B73636170652E
|
||||
6F72679BEE3C1A0000200049444154789CCD9D779C5C55F9FFDFB74C9FEDBDD7
|
||||
6CB29B6CB29BDE490881D082898034290A08A2282AA86041AC2816EC282A2282
|
||||
48EF811042427AD9F464379BEDBDEFEC4E9FB9F7FEFEB853B3094910FDFE9E57
|
||||
6E66766E3BE7739EFBF473AEA0691AFFBF912008D6C2F2DAE9469365A6A66953
|
||||
95A0BF2418F0E706FCDE34BFDF9DE8F7BA2D5EB753060D93C51E349A6D1EA3D1
|
||||
32261B4C03926CEC162543337034E0F7EEEB6E3D7848D334F7FF759F4E26E1FF
|
||||
17E00BCB6AA64BB2FCDDB191BEE52383DD299AA67E2CD7150491C4D4EC615B62
|
||||
C67A2518F8416FFB91C31FCB85FF43FA3F05BEAC72DE658A12F8DAE860D75CC7
|
||||
48BFE554C748928CC59688D59688D59E88D59A88C5A66F002EE7186ED7181E97
|
||||
23F43986C73D8EAA044F794F7B5286CB9E9CB55D920C3FEF6CAA5BF7DFEBDD87
|
||||
D3FF1CF849D3167FD2EB19FBF6487F4795CB396A88DD274932B98593282E9B46
|
||||
566E31567B12668B8D701BB5D07F1A1A9A069AAAA16AFAF7F0A7A6E9BF79DD2E
|
||||
DCAE3106FBDAE96E3B4A7F77D384C1305B93FC89A939078C26FB0F3A4EEC7EF5
|
||||
7F8501FC0F812F9FBA68A1D3D1FFAFBEAEA68210840098CC160A4BA6523C691A
|
||||
852595188D2610848917D03434E053572C4303FCFE00FE40109F3FC0C090839E
|
||||
DE613ABB0709288A0EBEAA0F86AAEA03E2F7FBE9ED6CA0A7ED28BD1D0D04FC9E
|
||||
988B0BA46615375B6CA9D77536EDD9F9DFC602FE07C0974C9E5312F07B5EE969
|
||||
AFAF565505009B3D99928AE9949457935B508628498802180C321565F9545796
|
||||
3236EEE2ED8DBB09374F0B01FFE80FEE4292C453DEABBEB183471F7F1997DBAB
|
||||
03AF6AA127006449C2EB0FA2691A8AA232D8D74A6FDB51BADB8EE0753B743044
|
||||
89F4ECF23D92C174654FEB81B6FF262EFF35E0B3F22B92CC16DB8BDD6DC79607
|
||||
033E01C064B63173FE4AA6D52E46966544512029D1CEB4CA62AAA79450515E80
|
||||
D12003303034CA4F1E7D0620226A0451E0E7DFBB13807F3CB71E97DB8BD16820
|
||||
3D359195E7CDC26236F1C2EB5B78ED9D1D681A2821E0017EFDC33BE8EC1E62E3
|
||||
B643ECA86BC0EB0BEAC7280A2DF53B3971F03DFC3EDDF89164A3969E53F196D7
|
||||
3376EDE840DBD87F031FF9E3BEA020087271C5ECBF8D0DF75CD7EF718A00926C
|
||||
60DACCA5D4CEBD008BC5822008D8AC66BE78EB27C8CFCD8C4896518793BD8DED
|
||||
1C3BDE46536B17B21CE56C4D23322800CDAD3D0C8F8E87C48A4A72A29DA50BA6
|
||||
535298852489A8AA0EB8AA41756509692989A4A52432636A091E8F8F2DBBEB79
|
||||
6FCB418E3476525AB59082B2599C38B289D6A35B51827EA1AFE3F02546B37D38
|
||||
A7A4F66FBDADFBEFD434EDD4DAFA23D2C70A7CF1E4B99392D372F6B61EDF9300
|
||||
BA2937A96A36B3165D4C626232A228228A029228100806B1984D0802D437B6F3
|
||||
F6C6DDF4F60F23082084464296A5C8B5354DC36C36461B2E8B180CFA7EABC54C
|
||||
59712E00F5273A90C4181DA1C2B285D5001C3AD64A7BD7004BE64D65E5D219AC
|
||||
5C3A83DEFE115E787307EBDE3FC094DA8B289ABC90E3FBD7D3D5B417BFD729F5
|
||||
B6EEBFD59E9CFDC9ECE29AD9BDADFB9B3F2EAC3E36E04BAB16ACE9EF6CF8B7C7
|
||||
3D2603E417573267C965A465E4B078EE54F61F3A4150511045114914102591A3
|
||||
C7DB58BA603A46A3CCC0E00806594292448A0AB2A8282BA0ADA39786131D800E
|
||||
BCC56C8ADCEF817B6E98D086F6CE7EEA0E1C0FE900DD0FB0DB2CCC9C5E0EC05B
|
||||
1BF65077A889A75ED848CDD432962DAC66F68C7252926CE80A5FC06C4DA07AE1
|
||||
2729A95C427DDD5B0C741DC339DA9B12F0B9EBF3CA66AFED6ADAF3FAC781D7C7
|
||||
027CF1E4B93FE96CDE7F9F120C08A22831EFBC4F50396321A22870D5E54BB870
|
||||
D96C6C56335B761E429244A410E73734B5B374C1748A0BB2993BB392B2E23CCA
|
||||
4A72319B74CE4E494EA0B9AD4757AC2771FCD18656B23253494B49445155FEF6
|
||||
F45B1C69684355D510C7EBE02F985D892C49A8AA8628EA4F4A20A8B2E74023BB
|
||||
F63762B79951140D0140206270D993B3987DFE2DB437EEE4E8AE97F179C60C7D
|
||||
6D075FCD2999F9BD9E96BAEFFDA798FD47C00B8220E49554AFEF6A39BC02344C
|
||||
661BCB2FB9919C82B288481975B80058B1A4965DFBEA11D0225CDFDD3D80C7EB
|
||||
C36236B17AD522005C6E2F878E36D1D4DA4D6B472F06598A28488B4937FB1545
|
||||
E1F9D73681A6F1C9D5CB983AB9984F5CB2988EAE7EC69D613351054416CF9B0A
|
||||
80280A7CEDF35732E270B265E711DEDF7688B6AE41C69D1E342D64C16A1A5A08
|
||||
FDF933CB6968EA459B340F5B5226FBDF7F12BFCF25F4B6EE7F30B360EAEC81CE
|
||||
A3ABB5FFC03239B55D761694993729293DBBA4ADABE5D00AD0484ECDE6D2ABEF
|
||||
2627BF0C8BD988280888A2C8CEBD47718CBB48494E60D6F449489288419630C8
|
||||
12A224D2D4D205E856CC53CFBDCD1F9F7899F59BF6D0D2DE8DA6A9180C120683
|
||||
8CC12047383E185490651151127973FD76C69D6ED253935873E992C813254922
|
||||
45F99914E665A269F0D8936FB065D711AC1613975F388F9F3F782BF7DF7D95AE
|
||||
4FF47F803E00D5930BB8FF8B6BF8F5433731A9249BD4AC52165CFA65ECC93980
|
||||
C640E7D1CB92338A1B53328B13FFA7C01755CCA9F4BA1DDD83BD2D0500F92555
|
||||
ACBAF20B2426A7F2894B16F2C883B733B7B60249145054958D5BF603B06C510D
|
||||
064942964424594296249A5ABB0148B05919191DC76890311A248C0619B3C940
|
||||
71413699E949180D524404051505832C234B12FE409075EFED02A0665A395593
|
||||
8B90241151145930BB0A8086A60E76EF6FE0AFFF5CC7DDF7FF9E3F3DF516C71A
|
||||
3B68EF1C20847B48A9437646120FDCBD165912494BB1F3C8B7AE65F9824A2CF6
|
||||
14165C7A379905BAA21E1D682D0BF83C9D39C5B5151F05C373163529198589C1
|
||||
8077B7D3316005983AF37C6AE65F84248A5CB6723EAB2F5A00C067AFBF840F76
|
||||
1CE2B5B7B7B1675F3D2B96D4929591426545114D6DDD48A2882C8B7476F7A1A8
|
||||
2A66B39182BC4C461C4E8AF2B328CCCFA2202F0B93D1C0FEC38DECDC7B24CAF1
|
||||
8A8AD1201114054445A0B1B983E34D9D5494E573F9450B39D1DC8528A9CCAE99
|
||||
0CC09E7D0D8882802682CF1FE0831D87D9B4ED10AAAA45AC280D0D9BD9C477EE
|
||||
B98A04BB859EFE519E7F63079FBBE102EEFDDCA524D82CBCFAEE7E669E7F0B8D
|
||||
FBDEA2E9E07A5C63FD09C06E7B7276BE73B477FC5C703C27074A1004212DABB8
|
||||
65A8AFB50860EE7957525E352722CF0BF33379E8BE1B01080482180C329D3D03
|
||||
3CFDC206A65796B06AC53C3ABAFA79FA85F5C87288F325912B2E5E42415E166E
|
||||
8F376462EA0FBEC7EBA3AB6780A6964EBA7B87505535126CF0F9FC288A4A5051
|
||||
0906150C0699D4E4444449A4BDB38F8CF4146EBBE13204416FCBBEC327D8B6EB
|
||||
28878EB512545414554551F5D08212B2F9EFBFFB6A665697E2F6F8F8EA434FD2
|
||||
DE3D4CD5A4021EFCCA27B1594D7CFBE72FB1E7501B8220D279621787B6FC1380
|
||||
E48CE2E3A303AD53CE45E64B0F3EF8E05903FFD8DF9E5B37D0DD380BA0B27639
|
||||
95354B292FC9656CCC852409B8DC5E2695E6919196C4FA4D7B3118640AF33299
|
||||
35BD82A3C75B29CCCF263D2D89CEEE7E3C1EAF0EBE2C63319B28C8CBC2609019
|
||||
191DE7444B27FB0F35B2EFE071BA7B06717B7C48A24820E067786880AECE765A
|
||||
5B1AE9EDEEC4E376A1AABA221D777B181E19271008323432C69E03C771B9BDA4
|
||||
A52631A9248FF9B32B59BAA09AC4045DAC8D8D7B424137B8E5531770DE82A9A8
|
||||
AAC68F7EF302F5277411D83F344630A830ABBA04A351E6835DC70181A4B40234
|
||||
4D65A4AF09AF7B342D23BF6AC6BD5FB9EBD9B3C5F2AC454D7ED9CCEFF7B61FBB
|
||||
0820B7A88A990B2EE6966B56B262490D5B761DE1A9E736A0692A1B3ED847E5A4
|
||||
42A65795F29BC75F64D58AB92C5D3083B5979D87DBED0560EECC2ADE7A773BB2
|
||||
2C6190653A7BFAD9B1E708BD7D430482010441C0ED76B16FCF4E76EED8427B5B
|
||||
0BC3C38378DC1F9ECF30992D24262693999D4FF9941994944F65FDB08375EFED
|
||||
A2283F9BB933A73073FA242EBD602EA9C909FCF6AFAF2108B072490D975E301B
|
||||
80BF3DBB81BA43CDBAF8D14D7B06479C0064A72786CC7D9DB127CFBA1CE7682F
|
||||
7D6D0718E83CF6899C9299F7F7B4D4FDE86303BEA07CF6E5BDED871F008DC494
|
||||
2CE62DFF149AA6E17479D134583C772AF939E93CF6F7D76838D14EDFC008B9D9
|
||||
699416E5F0EEFB7BE8E8EC63CDA54BB159CD009416E592919E8CD3E941962582
|
||||
01858EAE5E468687D8BB673B3BB76FE1C8A1FD0483A7F7D225494203544589FC
|
||||
E6F37A18F07A18E8EFE1C8C1DD8892444151056515D53846AB39DEDCC5D32FBE
|
||||
C78CA9E574F50C220802532717F2D96B2F0460FDE6FDBCB67E3782A03B6C42C8
|
||||
D65936BF12808E9E61C28E16A1D074CD79B7B0EDB59F313ED2C540E7911FE496
|
||||
CEAAEB6EDE7BC638FF19657C76E1D412C760C771AF675C369A6D9C7FC55D2426
|
||||
A5228A208922B3A697F3B94F5F8CD56A66DCE9E6AF4FAF23272B95ABAF58C6B1
|
||||
C6369E7DE93D64592239D1C665172DA2B8201BB7C7CB3B1B773136EEC220CB74
|
||||
77B5F1F43F1E67DFDE5DC4B6471044A6554F67EAB419A4A6A5939A964E724A1A
|
||||
49C929D8EC490403418686061918E867707080C1C1014686876839514F5BCB71
|
||||
E2FB2650545AC99CC5979294964D30A802020F7FFB336465A430EEF470C7D7FF
|
||||
80DBE343D5F4188FA6092C9957C5D73FBF1A80077EF63C7587DB4110110431F4
|
||||
29E1718DB0F5951FE3F73A315993FC09297915039D473E34BAF9A1C00B822027
|
||||
24670D8C8FF6258BA2C4A2559F2133B71429A44C2549FFCCCA4CE1AE5B2EA730
|
||||
2F13455179F3DD1D9CBF6426568B89DFFDE525C69C3AC04683444DF5243ABB07
|
||||
0806838C394678E1DF4FB279E3BB84537D46A39159B3E7B174D9F92C5ABC94E4
|
||||
E4145455435155544525A828040241FC812081A04230F4DD1F08467F0F288C8E
|
||||
8E70EC701D470FEDA5B5E918C16020DC27CA2B67533B7F15266B02E9A9497CE5
|
||||
736BC9CF4DA7B1B99B9FFDF165FA061C681ACCADADE01B777D025996F860673D
|
||||
3FFAFDEBE846BF0E78F853102586FB4EB0F38D5FA0AA0AF6E49C41E7684FCE87
|
||||
05D63E14F89CE2EA3FF4B61DBE03A066E12728AD9CA773BAA0832E8A02B22422
|
||||
4B226693816BD62E67D11CDD530C5B35BBF71D63C3E63A0C21DBDC6894518201
|
||||
D6BDF63CEBDE7C9940C00F406A5A3A37DD7C1B975C7A39369B0D4992427256CF
|
||||
28298A4230A844800F8492208180823F108800AF83AFE00F04098606C7ED7673
|
||||
68DF0EB66F7E0397538FF24A924CE58C2554CD5C86CD9EC09D375DC69C9A49B8
|
||||
3D3EDEDF7698A4441B0B664D4614059ADAFAF8D64F9F63D4E98D000F3AD70BA2
|
||||
0EBC2048B4377CC0C1CD4F02905950FD685FFBC12F9F33F0268BDD0E8CF8BD2E
|
||||
392B7F320B56DE14321B89988F9224208B22922C460660E19CA95CB97A290659
|
||||
571FFE40903FFCF525544DC564343034D8CBEF7EF943FA7A75ABC16AB571F535
|
||||
9FE69A6B6FC09E60D71DA350B02C6C562A21F32F1854088440F6F9020482413D
|
||||
13E5D7072196EBFD7E1DF44008FC4050C1EBF1B277C706F6EDDC80DFAF2BFA84
|
||||
A434965E7C0BF6A474569E3793EBD69C8725E42F689AC68EBA467EFEA737707B
|
||||
027A3821047A58DC84410F0FC0AE758FD2D77600A3D91E0021D5E719739E13F0
|
||||
590555AFF6771EBB5C1044965DF1459252B3900481AC8C24EC5613FE4080E191
|
||||
711DFC10E8722814509097C1A7AFBE90B494448647C678FEB58D78BD7E1A1B0E
|
||||
F3973FFE1C8FDB85288A5C7AF95A6EB8F133A467646034C8988C468C46195996
|
||||
75EF3306F840304830A88440F7F3D81F7EC3FC854BC92B280E01EF8F00EFF347
|
||||
07403F47073E18DA9CCE71F66C7B9BA3FBB7EA6109A39905175C4746EE24EC36
|
||||
0B15A579242658D97DA089A111171A029A26C4002FC4891904115194104419E7
|
||||
4837EF3FF71D344D2523BFEAB9FE8E23579F35F0A959A57963C35D1D4AD02F14
|
||||
4E9A45EDA24F52569CC5CD9F5A41F594A2C8714DAD3D6CDA7E909D7B8F856230
|
||||
51F0136C1616CDABA6EE40031A1ADB36BDCDCBCF3F89AAAAD86C76BEF2F5EF32
|
||||
77EE7C8C460326A30193C988C968C06C32EAD730C8711C1F0C06F1FAFC11E06F
|
||||
FFECA7E9EC68E77B3FFA05B97985787D8118F1A3831F053E4830A846383F1854
|
||||
50148DF6D606DE7FF349FC3E0F8220327DDE2594562D0C25CFA30A361E78218E
|
||||
E309812F46448EC8FEF7FF4A7BFD074806939A90925B38D2D7DC7532C6A78CD5
|
||||
4892FCBC12F40B92646072CD4A72325378E8DEEBA89E5284D7E7C731A6471CCB
|
||||
8A73F8CCB517F1F95B5663B79A89869A74D77CF3F603F8FC019E7BFACFBCF8EF
|
||||
27505595DCBC027EF0F06FA9AD9D8D20087A502BF2B4E862C6181A08ABC58CD9
|
||||
64C4683420CB3246A32114B397587BE5358C8D3978F081AFD2D9D18624EAA269
|
||||
C24634B12284B7D0DF790593B8E4EABB494CC944D3540EEC789D7D5B5FE23F49
|
||||
879A4D3253E6AC41928D28019F2849C6A74F75DC04E033F32B6B87FA9AE60394
|
||||
542DC26C4DE4EB5F588BCD6AE6C537B773DB577FC39D5FFF1D5FFBDEE36CDC7A
|
||||
008019534BB9E5DA8BF4CEC554080802BCFDC6BFD9B9F53D00A6D7CCE1DBDFFF
|
||||
05D9B97971E048A2C8C60DEB3971E2389224459E02B3D988D96CC26434603048
|
||||
1170255164E585AB282D9B84C331CA43DFB997EEAE8EC8F5C2F70E37251C048B
|
||||
B42BF29F2EE32F5A7B17B945BAADDEDAB09BA37BDF3927B08D0689958B26F3EB
|
||||
6F7D822FDCB008B32D85D2EA95000CF79D589A9E3B65FA19810FFA3DFFD25415
|
||||
A3C94AF9B4F3A828CDA5B8209303475B78FAA54DF803BA85D4DB3FC2DF9F5DCF
|
||||
6FFFFA2A9AA6515951445545511CF807F66E63D3BBAF01306FE132EEBAE701AC
|
||||
565BF4E6A21091E37F7DFC317EFEC84F22B2DD6090319B74D075992FE9A94341
|
||||
A4B3B39D5F3EF26386060700708C8EF0C307EFA3ABB33DEEFE277F3FE5DF0818
|
||||
8C66165F742345153301683CB489CEA67DC41FC984BFD3926DDCB8761E7FFFD9
|
||||
A7B9FBA6A514E7A7B270661199A976CA6B2FC568B6A3A90A8AE27FE64381CF2A
|
||||
9C76E1C8407B0540D9F4F3918D6616CC0A45F80E9C38F95C00F61D3AC1D65D47
|
||||
00282ECC8EFCDED9DEC42BCFFD158092B2C95C77E31D133A1D4B1D1DED1CD8BF
|
||||
EF8C8FF9C18307B86AED65BCFCD2F3381CA391DF1D8E111EFEFED73971FCE887
|
||||
9E7F3A120481594BD69296A533CFFE6D2F3132D07ECA6327976673DF1DABF8DB
|
||||
23B770CD65B349B49B1977F9A83BD285248A5C7E7E2506A3858A99970330DADF
|
||||
5A9559307545EC35E2805782FE6F8186D99A44D1E4F9A106E9FBD2521222C769
|
||||
C483D3DADE0B100909384687F9F73F7E4B30182429398D9B6FFF2A922C475278
|
||||
6152439560A32323B85C4EC6C7C7D9B6752B834343747575E1F5F9F0F9030483
|
||||
411445415555DE7AF335949830412C399DE33CFAB3EFB273DBFBD1B69E83BC16
|
||||
4589F92B6EC0624B425582ECDEF8141E975E732349224BE64DE117DFBE8E5F7D
|
||||
F73A96CF9F821CAAEF796BD3516EBEEF697EF487771977F958B9A802ABD940F1
|
||||
B4F3B1D852000D5509DE1F77AFB8868FF6CD01C82E9C8628EA19FCA6361DD455
|
||||
CB67919B951AD791F0D792A21C001A9B3BD1348D57FFFD275CCE310C062337DE
|
||||
7A0F367B42B40C4FD3D042F52EE1ADAD23EA5DDF70FDA798563599CA2993292E
|
||||
2AE2D0A14311474951559293933F14BC6030C83F9FF81DC78EEC8FB633667FB8
|
||||
302ABA2F7E604C163BF3577C1A4936E0F338D9B759D78D736694F2CDBB2EA7B2
|
||||
3C174D835D075AF8EDDF75DD5594971AF29E15DED97A1C8BD9C0A2592588A24C
|
||||
4EA91E7C7339FA169C12F8E48CA2453ECF981920B3A02A02EC965DF5B476F463
|
||||
361978F85B37B372694DC839D21B3CBBA68205B3AB70BA3C1CA96FE1F8913ABA
|
||||
3AF42A88D557DE424E5E51086022E5749A160A01A82A8AA2D2D6DA1A074C9886
|
||||
8787F8DAD7BE8A3FC4F5C180C2C5975E81289E3971F6EFA71EC3393E8E16063B
|
||||
14FE8D5C5D8B1F90D89D4969B9CC58B816809181767ADA0EB1735F13BDFDBA68
|
||||
BBFFA7CFF3DD5FBEC29BEF1FE6607D1755E5D954966781003BF6EBE26961AD2E
|
||||
B2B28B6B01F0BA1D96A4F4C285138037182D5F0B7D929A551207C4F77EF12C0D
|
||||
4D5D58CC466EBB61157FFCE91778E0CBD7F2C3FB6FE6CE9BF464C313CFBC8DD7
|
||||
E767CBC6570028282AA7BA665EA4C05455D548F1911A037A30A8D0DAD2745A00
|
||||
F7ECDECDE0E050C8860F909A96CE85AB2E3D23F0CE71071FBCF77A14F41831A7
|
||||
737DF83B1CDCB59E91C1EEC83E80FCD219A4661603D050B70E5509F2F23B7B01
|
||||
983D3D8ACFBB5BEB01F8FCF58B99529AC979734A01B05A74EF372D673206936E
|
||||
50184DB648082102BC7B7C703940467EA51E000AE9700D181E75F2C04F9EE2D5
|
||||
7776E1F1FAB05A4C544E2A203F279DB171374FFCEB1D8E1C6FE360DD16468775
|
||||
4B63F94557EA615B350476087445D5035D8AA273BDA2286CDBFAC16901549420
|
||||
DBB66D8D0984055876FE8567041EA0A3BD390A7A08642DF2D445413E7E782B9B
|
||||
D7FD0DAFD715E9B30654CE5E15C26688F6E33B7867F3619C2E2F972CAF26C1A6
|
||||
FB2DBB0EB402509C97CA4FEFBB8CCB96EB66E97BDB1B01104491AC22DD9A743B
|
||||
872E08B74D06B0276596BBC787920032F3A79E060095279EDDC0B32F6F66D68C
|
||||
72126C66DC5E1F47EB5B51540525E867CF563D0C5D3E650639F92521D0A36226
|
||||
765314054511686C69A2BDADE54301DCF0EE3BCC99B730122473394F19FE9840
|
||||
BD5D6D9178BDA6EA70C6CB7B7D4B49CFA3AFEB042DF5BBA898BE2CB41352328A
|
||||
C82AA8A2AFE328270E6D20B76C362FBF53C70D6B1672EB354B79EC9F9B5938AB
|
||||
0C80759BEB0904555293ADEC3ED8C1C69DD1A738BB78269DC7B7E31E1B48B125
|
||||
6694B9C6069A64008B3DF56BAEB101444926236FF249CDD713C1E1F0BF2F1064
|
||||
675D835E0D260AC892EE7D1EDDB7058FDB8920882C5E7E4544AC68AA5E69202A
|
||||
0241514114053D492D0A080181AEAE8E3302F8C6EBAFB064D90A66CE9C4B5051
|
||||
F4F8C85990208AA8C4540DEB3180502DBD3E0443FD1D044201B3E6633B9954BD
|
||||
14B4A80E993C7315FD9DF5F8BD2EDA1BB6F3CAFA54AEB87026172EA9E2C22555
|
||||
91E3F61CEE60F7A14E265AFB9059508D28C9A84A106B42FA5780BB4400AFDBB1
|
||||
1A202D7B1292ACCBA6EACA42D65C3C8F9BAF5EC6D48A82E8E5E2E465547E361D
|
||||
D7AD88499533494ECB8A988A6A44AE87395D8D6C4145616CECCCC5B89AA6F1D3
|
||||
1F7D8FA1E1617CFE0049C9A967057C5A7A765C3BC2216634181AE8E6B5677EC1
|
||||
BAE77FC3F04027001E97839EF6FAC853A169604FCA20A7581715BD6D0771BABC
|
||||
7CFB172F31E68CD6D7BFF4CE41761D6C3B25E800B2C144469E3E483ECFD81500
|
||||
B220085641107200320BA6822070C1A2A9DC73DB25111BFE9397CCE7CDF7EAF8
|
||||
F3536FA3095119189E89E1197330D4AFC781CAA6D4E89D15A3408B828022EA5C
|
||||
2F0802A2A810883853A777AA62696868903FFCF6177CE1CBDF20F12C819FBFE4
|
||||
A238F335C4F0A89AC68EF75F6264A867C239CD47B793555015239204B28BA6D3
|
||||
DDB29FB1E12EBCAE511A9A24AEFBD2E3141764303CEA65CCE5D7CDEF0FE94A76
|
||||
712D7DED07718EF6E6098260154551CA0F3F76C919C54892C85D37AF4410E0C8
|
||||
F14E0E1C6D05E092F36752529815632544B7B6A64300C8B291FCA2C991CE86B9
|
||||
4D3989D3F508A11E27CFCD2F3A5D5B27D0F6AD9BF17AFD188D6666CD59F8A1C7
|
||||
CE59B882F22935FABD43A51C618E6F693C407FF7A9F5CA404F1323835DC4A298
|
||||
9E5B8124EBE5837DEDFADC3555D5686E1FC2E1F4863CF289A80B027CF2A26A72
|
||||
B31249C9D27581A6A988A29C2F26A61544B4A9C99A4869612626A3817D875BB9
|
||||
EF87FFE48187FFC5B6BD0D0014E567EA07C6881B4DD3686FD61B935734599765
|
||||
A18E2A211113B6D9756B261EFC8CAC3C24E9EC64B6DFEF637474846050E1B377
|
||||
7E95DA590B268421121293597BEDED5C70C9A774D91E76D6228A5EE3D09E8D1F
|
||||
7A9FC6031BC3DD440324C9407A8E5E30D6D77198709C539810798B52A2DDCCB7
|
||||
EF5AC98D9F98456A9215B32D25BA2F2DBF52960DA64A005192319AEC5496E975
|
||||
E6BBF63745CA1B8643E50DA3632E9DCB85A8A8F179DDF485B8A7B04CAF4B5105
|
||||
0D4150515581A0A246DA25004121DEDD9725891517ADE69D375FFA503000EC09
|
||||
89982C36FC017D36C7CDB7DF83D7E7A3BFAF97F1B13152D232315B6C21EB275C
|
||||
B4142A5C0A717B6F670B837D1FAED07B3B8EE17139305993224E5566E134FA3A
|
||||
8E30D2D74CC0E7C668D14328616E8F1D84AAF22CBEF699A5A4A5D8F43C4040C1
|
||||
68B64714AC6C3057CA1A9401982C892040615E1A00CDED0391614CB0EB332187
|
||||
46623D4101158DBEEE663455CFD817145745448B20E84A550054414011340425
|
||||
3A77355664ADBAEC6A9A1AEB696A3C765A304451E4E65BBF4420104451C24F90
|
||||
5EC894969E4D524A46C4210B869EAA934D5855D538BC6FF3190718345C634398
|
||||
ACC9E8569D40667E95FE5D5319E96F26AB6806F19C2F2008B0F6C26AAE5F5D8B
|
||||
248A74F63A78E42F9B68E91C06C06C4DC63D3E0882502E6BAA5AA4FF980408E4
|
||||
E7E88AEB9E5B57D1D6354857EF3053CAF30018777A75312310E17CB7530F2299
|
||||
2D560C264B4479E9096A7D4062018F744DD28D5455D51321B7DEF50D767CF02E
|
||||
1BDF7D9D31C748DCB1932657B1E6EA9BC8CB2FD1810F3965E15C6CC44A0A2AA1
|
||||
7D5A6470A29B86CBE98888C53391C7ED88B3F90D261B46B30DBFD789D7358AD1
|
||||
68A030378DD4243BC9493652922CD454E632638A2E31D66D6EE02FCFEFC21F88
|
||||
3EE1669B0EBCA62A85B2AAF8B301FDB142202F4B9745D999C96467C607A4FEF6
|
||||
CB2F30E6F4D0D533445B673F8F3FFD0E6E976E0E5A6C49BAA916E242550817FB
|
||||
9F7A86B64468F02442930624162DBB98054B56D2D2DCC0F0503F06D940715905
|
||||
69E97AB8391054A29E704CC94718FC6088CBF501D1225B58C91F3FBC2BF4749E
|
||||
99027E6F3498131223666B127EAF139FC7415961063FBF7FED29CFDD77AC9B27
|
||||
5FDE1B07BA7EBE8EA712F4E7C8C1802F2D0CBC2008DC72DFDFC8C948203F2799
|
||||
FCEC540AB25328C84D252F278D049B9944BB85C449F9D86C66340D3C21E0ADB6
|
||||
245455CF056BAA8622A81CDCB389CEB606565F7D0782109D4B1CB62E24514353
|
||||
5584D00C11515411059192B24A4ACA2A237233104ABEA86AF8290929CA1825AE
|
||||
C48897B07C57C303113AFEC4D1DD67053A40425226613113425F173DC35D78DD
|
||||
0E1CE31E3CDE00A3631E46C7BD8C8C7990259139D5F9D456E6F2971F5DC5BA0F
|
||||
1A78EDBDA30C8DEAA58761051B0CF8D2E4A0DF9B183B1AC1A04247F7081DDD43
|
||||
A035228474BB2068242558C8CF49A520278D6068226F385E6DB62546CA9ED125
|
||||
0C8228D1D9DAC0E1FDDB29AB98CEC13DEF130CF8A999B394ECDC82903729208A
|
||||
5A341B25A88862387D2744062AAC132493A72700001AC649444154C29E6798F3
|
||||
95D84F25C69A8AF91EB668824AE0AC409764238969F921BC2399DA903806AFCB
|
||||
41CFC03857DFFD44A8D220EAE916E42473DD65352CA82D66CDCA695CBEBC8A97
|
||||
D61FE6A957EBA218FB3D49B2DFE73447810FDD4408097041888B9D8E8D7B38E6
|
||||
ECA2BEB1134100518872BCC59A48784635A22E6152D2747957B7633D3B37BD86
|
||||
CFA77B7B07F66EA6B4A29A25CB57939D5788A86908AA0EBC9E379D98A28B8D32
|
||||
46676C6B31E66A54EEAB113113C3F19A466A7A1E5DAE337BCAC5958B900D9638
|
||||
6E47D0653480CFE308D555C6247643D4D133CAC37F7E9F92FC54AEBFBC9639D3
|
||||
0B58505BA4031F3ADFEF7399E38B5605518FCC68E159587A9C26343D283A392B
|
||||
742F0DF085227A46B31D35E2CEEAFB53D273100401E758BCB204683E7E8896C6
|
||||
23CC9A7F3E8BCF5F8DD1688C49807F38F061C0D5907DAEA81AC16090D1E1015C
|
||||
AE716C0929586C0991D9DDE1819ABD640DC383DD91A7F4549453544D7975284B
|
||||
17C3ED20600A99907ECF38C424EB4F452D9DC3FCE00F1BA828C960F5F95527ED
|
||||
D5908D269BC7EB76D8BC9EB150C95CCC486AFACD352DEA1F6821B3460805CE0C
|
||||
260B7E9F1BBFD7AD2B57550051075F948C24A664E018EE3F65E3344D65CFF677
|
||||
69ACDFCFCA4BAFA7A86C4A7C39467880B518F0892E1ED1D5DE44FDE1DD74B537
|
||||
323A3C4078CA3E802C1BA8AA5D4A55ED7244C980AA6998AC895CB0F68BD4EFDF
|
||||
44F3B19D28417FE4F8A4D45C4AA62E21BBB806017102B78380DFABCB6A83C916
|
||||
9A3B75E670C7F196011EF9CB2600BC2E3D916234D93DB26CB438703B6C3EB723
|
||||
02B88010C7F56196D7B43028A1E740D3B05893708D0DE17639D05450C578F033
|
||||
734A4E0B7C981C23833CFFD4A34CAB5DC4D20BD66232994F3D50E8CBA4ECDFFD
|
||||
3E0D47F630363A74DA6B0683010EEEDE40537D1D17ACF93C267302AAA66134DA
|
||||
9836E762AA665DC4B86318BFCF8D2D290BD9600E152E85F18EE7764110226B1E
|
||||
986DC9118E3F17F2BA75E065A3D9214A06D32080CFED085D4C8CDE302606A185
|
||||
7E8BA4D0429F26ABFEF8795C63F14B978456CFC8299C72D60D3BBC6F2BFFF8D3
|
||||
0F191B1BD5A7D8C46C81A082637498E79EFC25BBB7BEFDA1A0C7926B7C84ADEF
|
||||
FC13455174C688A401456C89E924671486400F3F59C249DC1E05DF1702CE6C4B
|
||||
41208CD3D993D7A58B5CC9601A1425C9D003FA6808717581F1237E3207E80D15
|
||||
305BF519871EB7239AF0083B512A64E694C669FD33D1B863988DEB9E9D00FC98
|
||||
638417FFF96B46CFF0F49C8A067B5BA9DBF2720C63C446588590FD10EE574C5F
|
||||
23224FC72496E305F1DC408728C74B92A1471404A91D748E17421C1FBE915E1B
|
||||
180376C4BC8B826FB2E82696C73516E9946E63EBE08BB289B4CCC27303AABF3B
|
||||
54DF18F548EB0FEFC6313270CE9D0D534BC36E8EEE5D1FD1FD7A5BA3A0EB7DE2
|
||||
1422468C30629863CDB654CE95DB212AE305416A97354D6D84D0684414861863
|
||||
C6C49A95BA6C1788CAFBB06DEBF73AF107FC180D7A2245453711354163F28CA5
|
||||
0CF6B69E7503B550BC27D6961D19EA3BE78E9E4C0D0736D2DBD94066FE1432F3
|
||||
A690989687204851E57D1A1103024A3080DFABCFA8B4D8534E71F5335398E335
|
||||
4D6D94FD5EE73100550912F0B93118AD8006821885590B2B58FD336CE5689A46
|
||||
4A66313AC768F47736905B528DA085B3E8FAE06517549299574E7FD7A9ABD14E
|
||||
A68A690B42719E287D1411732A720C75E318EAA6F1C07B48B281948C62A6CDFF
|
||||
24667BEA49224688582E822032D0752494751348CD9E74CEF7F57B9D91A5B902
|
||||
3ED751D139DAD310DEA98B9BA888893E66614512D6014244D91ACD0924A7EB5E
|
||||
5E4FFBB1A8B8896CBA0D3D6FF97524A5664F6CD149949A91C7E4E98BE3622D8A
|
||||
AA31E6183CE7CE9E89946080C19E46B6AFFB3D8A1288EB635CDF0581BE36BD40
|
||||
3725B324E2819E0B85C514C0F848F77111E81204510318E96B8A889B93413F59
|
||||
DEC7829F15CAA5F477D5A32A6AD4EAD14053F54FD96866D1AACF905F527DDAC6
|
||||
E5974C63C9AA9BD034412FFF086D3E9F0F9FC775CE9D3D5BF279C6686FD81EE9
|
||||
57BC65A78BDDBE763DCB965D32F323DD63A44FAF3A0861DD256B9AE64E48CE69
|
||||
773A7A8B7A5BF75154B50CDDE707C25EAC1EF98A6948480C84C44E56C1341AF6
|
||||
AD23E8F732D8DB4C46EEA4A8ED1F8A400880D16467CEF26B29AD5AC0404F338E
|
||||
E11E24492621299D8CEC1232F3CA10042132D33A4C8E918F9FDB4FA6E1BE664A
|
||||
A6AD2016F0B0A131D8DD4030B4785CCE4704BEB7751F00B6C4CCF6F1D11EB70C
|
||||
6030595F00BE32D0759460C0876C3045808F0D0FE858AA13C0B72665624BCCC0
|
||||
3536406FFB11D27327E971FB90228E3D5F0052338B49CD2A8EAAB2D0048248C8
|
||||
81A8CD10F07BD9B5E9B98FD4D973A1B003196BD185B73068F6E4ECD00A1EE746
|
||||
C1808F812EBD8A3984B5AE031D43EDBF015DC1F677E88F9420864C4B518C91FB
|
||||
31F2FE24472B3B542DD5D9B4178F7B4CF702099B6CC204D9AF9B9BD1AC7F34E2
|
||||
A8457C019FCFCBE6B7FEC268A8BCEEBF4A71667448E488223EB7838EE3DB00C8
|
||||
2D9DF3912EDDDF7128A258C3588B004A30D06AB1A70D02F4B6D6855B12013D2A
|
||||
F74F928131E017552E4136985195208DFBDF8DF1024F9E4B141D00EDA44108FF
|
||||
A669A00415B6AD7F929150CDCB7F9B125272629469B4DFF57B5E415502C8464B
|
||||
6496C7B95218538B3D6D5009065A21A676D26C4B5E07D0D77630264B13E200F1
|
||||
E4069DCCF92246730225D39601D0D5B417E768BF0E768CB3151E00353408EAC9
|
||||
4F41CCF71347B731D4DBF2913AFA5128AB707A5CDF0451C439DA4B6788DBCB6B
|
||||
2E8E24B8CF853455A5AFED2010C518E28B561F0508F85C0C452DCC90372B9D16
|
||||
FCD827A2B8F23C4C9644344DA561DF3A221E6FDC000831564F7410F4EFD10118
|
||||
1DFA1F8897106517D7E8E5D427C9F6FA9D2FA0692A666B3265D32FFA48D71EEA
|
||||
6920E0D32DB230C61003BCD735BAC764497441540387E964F063657ED8D44C4A
|
||||
B021194C94D7E80DECEF3CCA60EF8988C9191D0042E087735BB12246880C8628
|
||||
7EEC4B629E92D27227337DF10DF1A08B22835DF5F4B6E9658993E77C02493692
|
||||
916AE3EA8B67F0A94B6690956E3FABEB87B13459125D5ED7E89EF0EF71D12B6B
|
||||
42FA66809EE63DA86AFC34FC38F04F52B8972C9FCE138FDCC2BC9A72F227CDC7
|
||||
9E9C05C081CDFFC4E31A45138408D8BA0D1A7D0A2251CF93062323FFECA39A1F
|
||||
854C96042A66AD66EE855FC460B2470D0951C4E31C66EFBB7F0020212597C229
|
||||
4B9839358FDF3FB896EB57D772DDE5B5E4649C793932550DD2D3AC631DC6364C
|
||||
71C007FCEE1F8080C73542EBE1F7265C28027EA8912949361EFCF2657CE1C665
|
||||
984D0696CC998428CACC587A33926CC2EF7351B7F16F7AC221249234418C7B0A
|
||||
E2062186EB3372A790907C664FF75C2931359F698BAE65F9D53FA07CC62A4449
|
||||
8E612609251860D75B8FE2F73A910D2666ADBC93ACB444EEBB75199224F0CE96
|
||||
E33CFBE601F61FEBA6382F85D52BA6326B6A1ED22922B0AD87DFC3E31A018410
|
||||
B631589E3C392B29AD60CFD870E72CA3D9CE8AEB7E8AC178AA65DD35664FCBE7
|
||||
EE1B17939460C1EF0FF297E7B6F3DA8683E806BC4A7FC761EADE7B1C4DD3C82A
|
||||
ACA676D94D71E747BFC6DBEDB1FBC6477AD8F6D66F4FBB16FCD952525A812EC7
|
||||
4B66624DC888331BE34D65D8FDF6EFE869D98B2008CCB9E88B6417D772F3DAD9
|
||||
AC59398D5F3DF1011B77362108F0A94B6AB8E6D29A4812EA58533FDFFED5DB04
|
||||
827A162CE0F7B0E1E9FBF07B9D24A6E6EF750C75CC8E6DD30441EAF38C5D2788
|
||||
52BDDFEB144EEC7B83CA7957C6ED3719653E7BE51C2E5AA2D7D137770CF1C8E3
|
||||
EFD1DE3DACD7AD6BAA5E7955389D8A9997D1B0F735FADA0FD1B8FF6D26D55E1C
|
||||
897246008E64B4C214F6D834EC29B9CCB9E076F66D7A12BFF7EC2623803E9D28
|
||||
21358FCCFCA96417D760B1A7C599C1B1B128FDE9D59FBEFA5D2FD2D3A24FB7A9
|
||||
9C7B6564FED2FC9A42DCDE009BF7B460B318F9D24D8B9937A3104DD3D87BB88B
|
||||
D2C2342ACB32B9E282A93CBF4EB7604EEC7B03BFD789204A9ACF3376DDC96D9C
|
||||
00BCD7ED389E9C59BCCE31D07671F3A1F5944C5B11A907995494CE576E594A6E
|
||||
965E51F0E2FAC33CF54A1D4A3018EA547802830E6CE9F48B708EF6D1D5B48BA6
|
||||
83EB09F8DC54CE5B1B39363A08617E8F791242AC949255CAE2D55FA5A371273D
|
||||
CDFB222B5E473A60309290924B426A1E0929B924A6E6634D488B0E629CDF2144
|
||||
B83C16784D5539B4F51FB41ED908407EC542CA6B2F89DCC3ED09909391C8CD6B
|
||||
6631BFA688CC343B3E7F909FFF75333B0FB4B3787609F77EF63C723375B9EF75
|
||||
8DD07C683D008969F9EB46FB5B8F9F117800C740DB4D926CEC51827EA97EF74B
|
||||
D42CFB0C3595B97CE70B1720892203C32E7EF5C4071C6ED4A7620AA2A8E75905
|
||||
1541134295002A021AD58BAFC7EF7532D07594F686AD381D7DD42EFB0C069355
|
||||
0FE2C4811E139F8821A33989B2EA0B299B1E3BF74988FB1ECD7F9E14D68D013C
|
||||
CCED51E005FC5E277BDEF91D83DDFA24B2CC826A6ACEBB25EEFE2FBC7D887B6F
|
||||
5DC6EA157A30B0A97D88479FDC425B971E714C49D4C5F1E0B06E36D6EF7E0925
|
||||
E847928D8A63A0ED264E41A7CCC9699A36909092F777808E86AD8C0F7771A4B1
|
||||
8FCE1E3DF5F5D8B33B22A0473A1E524E61E51B5ECD42948DCCBEF0F3144F5D0E
|
||||
C070EF09B6BDF1739CA3BDF1A629315B382173F216734CECB911D376827F116B
|
||||
818557D808FF263036DCC9E6171E8A805E5ABD9279977C1983C148923D9A70DF
|
||||
5AD7CAB77FB58E57371CE1B17FEDE0DE87DF88805E9893CC152BA6120CAABCB5
|
||||
B99EF1E12E3A1AB602909092F7774DD34E99363BED7A358220D80C26DB50C0E7
|
||||
326515CD60DEC55FA6282F859F7FE33246C7BCDCFD8357707BFCA73C570BF9FD
|
||||
FA72575AE4EFF6862D1CDEF60C9AAA20194C54D45E4661E592C86466E2DA7272
|
||||
BB4E4AB59D34A3248EBB277079ACC8D1CDBCD6C3EF51BFFB4582011FA22851BD
|
||||
E4468A2A97929460E6BEDB966136CA7CE391B722CAF264FAE13DABC8CE48C06E
|
||||
356136C93CFDDA3E9E7DF3003BDFFA157D6D0730986CBE80CF95A669DA29E3D9
|
||||
A7CD426B9AE6B225663C0CD0D77680D6A3EFD3D635C23F5EA92323D5C61DD7CC
|
||||
3FDDA9BA1C1563572FD2D7012EAA5CCAFC4BEEC168B6A3047C1CDBF5029B5FF8
|
||||
3E3DCD7B43E748319C2B9DB4853938BA2E4CD4B48DDE27D61E8FFA1D5244AF74
|
||||
366EE7BD67BEC9E16DCF100CF8309AED2CB8FC5E8A2A9702204B2205D9C99417
|
||||
A5F3B9D3F47152713A532765919E624396445E7CE730CFBEA963144E98D81233
|
||||
1E3E1DE8F0211C1F0250B626A4B7B8C707F3455162C165F7929E3799EFDD7D11
|
||||
33A6E4F0B3BF6C62CB9E33C753A69466F0F9EB1772F8782F7F7D7E078EE1018E
|
||||
ED7A9EEEA63D84393B31AD80C9B3AF20E334D33DE3DA8510F300C4CBF789725D
|
||||
A7FE8E431CDBF93C8EC1F6C8B179E573A99A7F956EF5C4507545360F7DE92244
|
||||
51E077FFDCC63B5B26E84692132D64A6D9E91F72323AE661A8BB81EDAFFF0C55
|
||||
55B026A477BAC7074B3EF2627000B2C1942DC9A666BF77DC6234DB59FAC9EF50
|
||||
5058CCAFBF7505F5CDFD7CFF77EF9EF65C9BC5C84D6B6671E1E2C911C9F0D42B
|
||||
7BF9F75B074003C7602B47773ECF6057744282C5964A56F10CB28B6A48CDAE88
|
||||
2B0D892F201242FF84C8F7D841D05495A19E067A5AF6D2DBBA0F8F7338726646
|
||||
7E1555F3AF2629BD08A341A2BA229BBD47E217515AB3721A37AF9D4D20A8F0CD
|
||||
47DEA2B1EDF4C918F7F8009B5F7808BFD789D19CE05182BED260C0D77BDA1338
|
||||
0BE001ECC9D90BBCCEE12D8A12101352F358B2E6DB941466D1D9EBE074E72F9E
|
||||
5DC2AD57CD2525D1C2E89807411448B29BF9D62FD771E8786C9B34FA3B8E706C
|
||||
E77331DCA893C16425AB7006A9D9E598AD29986DC998ACC998AC892151A3AB05
|
||||
9FC781D7358AD73D8AD735CA706F237D6D0722C1A93025A5175135EF4A320AA6
|
||||
01603619F8C9D72EA6283785EF3CFAF649ED82AFDFBE9C85B545F40E8CF3A51F
|
||||
BE82D737918183011F1FBCF47DC687BB9024836AB6A72E768EF66E3F13A667BD
|
||||
A873527AE11D63439D7F008DECE25AE6AEFA2213141E90956EE78E6B163073AA
|
||||
3E8BE4FD5D4D3CF54A1D7FF8DE5A340DAEFBCAD3A751581AC3BD27E869A9A3B7
|
||||
B50E97E3F455058220620A1552F9DC637CD8EBE96C49996417CF24A76426A9D9
|
||||
E513DAFC851B16B27251058E712FF7FCF8358646A28365311BF8E5FD97939391
|
||||
C89B9BEA79EC5F3B26B479D7BADF840261028969F9773A06DBFF78DAC6C4F6E1
|
||||
5CD673494A2F7C7C6CA8E3B30093665E46E5DC4F46F649A2C815175471CDA535
|
||||
988C329A068FFCE57DB6EC6D65EEF4021EB87305FB8E75F3E0AF272E3B75DD65
|
||||
B58C8E7BD8BEBF8D11879EDB1C1FEEA2A7B58EBED6FD38477B4E7A61D6E9C960
|
||||
B4604FCE21ABB8869CE29924A4EA0C2008909B994420A8D03F14F5820DB2C4C3
|
||||
F75E4259611AC75B06F8E62FDE0AADC2AAD3E4920C1EBE575FB4E2FAAF3E8D2B
|
||||
C6923BB6EB051AEBF4578624A615FCC531D87EEBD921798EEBC78F0D75DC664F
|
||||
CE9EE11CED9DDD58F73AB6C44C0AA72C2133CDCE0377AEA0384FF7707B07C7C9
|
||||
4E4FE09A4B6BE8E87130BBBA008003C726C6D8655964F58A2A2C6603B77F6A1E
|
||||
C79AFAD95AD7CAB63A2B09A97991558E94A00FAF6B148F6B04AF6B24529565B6
|
||||
2563B6E962C8624B4192A32F70319B0CCC9D5EC092D9254C9D9485CD6244D3E0
|
||||
DD6D8DFCF629DDD60E04157EF2D8467E71FFE554946470DB55F3F8C3335149D1
|
||||
D032C0C8989BD4242B9969F6C844B2F6FA0F22A0DB93B3F78C0D75DC762E589E
|
||||
F30BB80441B059ECA9CD1EE77026E89C5F356F2D57AC98C6C54BA7F0C767B673
|
||||
A0A187EB2EAFE5CA8BA647961BB45A8C7CE5C7AFD1D43EB1D8D46E33317F4621
|
||||
8B6715337D720E9224A26950DFDCCF132FEEA1BEF9DC8A99B23312B869CD6C66
|
||||
4FCBC7187A65516BD708BD83E3CCA9CE4712457EF2A78D6CDFD71639A7B63297
|
||||
EF7E71258220F0C76776F0D666DDA95A34B398FB6E5BC6B8CBC78DF7FD0B5555
|
||||
39B6EBC508E8167B6ABFC7395CFA61A6E32971FC284BFDC9B231CF60B6EFF5BA
|
||||
46B2409F2E3E73C5E730184D713E506D652EF7DCA23B25E32E1F9FBEF719CE74
|
||||
BB4945E93C78F785D8AD7A29E03D3F7A95E68EE1B863D6AC9CC6F5AB6B51558D
|
||||
3BBEF322C38EF8F84D528299277EF2294451E0F58DC778E3FD6374F7EB33416E
|
||||
BB7A1E972DAFE48917F7F0D2FAF81980979C3785CF5D331F55D5D873589FF532
|
||||
7B5A3E4145E5A1DFBE4BDDE156EA363C16496E986D297D01AF735630E89FB0AE
|
||||
E499E823BD232418F477795D2365B6A4CC9DA067593E78E9FBB8C6E2BDE37DC7
|
||||
BA79F95DBD73071B7A3E1474511458B3721A3FFAEAC5D8AD46DC1E3F7F7C66C7
|
||||
04D00501562D998C4196301965562C289F702DC7B89743C7F5750A8647DD11D0
|
||||
054120C1A68BA231A76FC2796F6EAAE7E9D7F7218A0273A71730A7BA80AEBE31
|
||||
BEF79BF5ECD873900F5EFA7EB43E262973A7D73552F6514087FFE075449AA6B9
|
||||
044158909092FBC7F1919EDBC787BBD8FCC243CCB9F00BA4E546975EA9A9D495
|
||||
DBA9E47B984A0B52F9C20D8B282BD41D99EDFBDAF8D3B33B277032C0F4C9B964
|
||||
6724D037E8242BDDCE058B26F1FCDB07270CEA077B5A98312597C5B34BD8B4BB
|
||||
99F3E696B26AC96432D3ECBCBAE1081B420BF99C4CCFBE7180DD073BA82ACFC2
|
||||
31EE655B5D1BFD9DC7D8FDCE6F43A1698184949C3F8D8F74DFF19FBC8EE83F4A
|
||||
6C866EFCB98494DC3DEEF1C13FFABD4E71FBEB3F63DAE21B28AE5A06405AB215
|
||||
80030D1357CA301A24AEBBBC962B564C45140586465C3CF6EC4E761E38F5B283
|
||||
00AB96E86B0A3CF3FA3ED65C388DA2DC14AA2B723878D2F5B7EF6BE3CE6B1750
|
||||
5A90CAE33FBC2AE2C029AA8A2C4B646724D03B70EAF7A934770C479EB4D6A3EF
|
||||
7378CB53A8AA822819546B42FA1D63C35D7F3E179C4E451F4B46797CA4FBCF16
|
||||
7BCA4155096EF07B9DB6839BFF4E5FDB7EAAE65DC5D71E7E9DAB2E9E3EA19333
|
||||
A6E4F0F9EB16929DA1AFD0F7C6FBC7F8C72B7578BCA79F12999C6861DE0C3D29
|
||||
B16D5F1B2949166E5A339B958B264D00DEE9F65377B48B39D5059C681BE4C577
|
||||
0E919460E186D5B55C72DE14CE9F5FC69F9EDDC986EDA7AE601E1FEEE2E8CEE7
|
||||
22B117A3D9EE122579C5F848F7C7F2BED78F2D95EF718EEC1404A1CC624FDDE9
|
||||
710E17F5B51DA0BFFD100593173132B4266EF50AB349E6813B576032CA0C0CBB
|
||||
F8D9E3EFD3D072E649072B16942349225BB69FC0E70FB269770B377E62160B6A
|
||||
8BB0DB4C385DF1727BCB9E56E6541720CB22DB4216CCAE83ED7CE596A54CABC8
|
||||
E6EE1B1733B93493C7FEB5235216EE758D50BFFB253A1AB6461C338B3DB5CDE3
|
||||
1C9EA769DA7F5EA41FA28FFCE6B35391A6697D1EE770B93D39FB7E83D1EAD134
|
||||
95F6FA0FD8F0CC3738B6F3F98813549C175DBF3223D5C65DD72FE4EA8B67909B
|
||||
75FACCBD20C0858B7431535B95C72FBE7939DFBC7D398AA261902596CD2D9D70
|
||||
CECE83EDF8030A25F9A914E4E8A5D543A36EBEFDE8DBFCFBAD0304820AE9C956
|
||||
4AF25309F83D1CDBF93C1B9EF906EDF51FA02F6F6EF5D893B3EFF73887CB3F4E
|
||||
D0E1239A9367756141B025A4E4FED43D3E78BB12F4CBA0CF85AD987939C5D3CE
|
||||
C76C32316B5A3E8B671633BB3A1F73E83D7E2D9DC36CDEDDCC8BEFC49B7A33A6
|
||||
E4F2D0972ED4DF80E0092008200AFA7A6816B381B6AE11EEFEC12B13DA118EB7
|
||||
FCFBAD03FCF3D5F87A21A341C2EBF3D17AF83D8ED7BD16C9EB4AB231684D48FF
|
||||
D3F848F77DE76A9F9F2DFDD7AA86420DBE4B1084071352F3FEEC1CED5DEDF73A
|
||||
85C3DB9EA1E9C03A724A67D3DD5ACBB6BD9331990C71835053993701F8B0527D
|
||||
6EDD419E7DE340E477B3C9C0DF1FFE144579294C2A4EA7B1353E8AF8C19E1616
|
||||
D41492911A2D400A472E7B5BF7D1D3BC27548201822869F6E4EC57C787BB6E1B
|
||||
1BEEFAE813AECE82FE672F4B976443B93531E329E748EFBCD8EC92C16423AB68
|
||||
3AD9C533C92CA8C66AB5929C68898BA724275AF8EB8FAE4214456EFFD6F3F40F
|
||||
C7571C7CE9A6C59C3FBF9CB7B71CE7F7FFDC16B74F7F898089FEC111FA3B0ED1
|
||||
DB5A475FDBC193229702F694EC9DEEB1811B9460E0ECE60BFD87F43F033E4C66
|
||||
6BD25C9335E99B5ED7E80ABF773CAE0A545F7EB18AECE25A52B2CA30DB52309A
|
||||
ED58CD067232F5452AC2B192584A49B25098938C3FA070AC490F2FE8EBCA8C30
|
||||
D2D7446FEB3E06BA8E4EA8CF319A13C6CDB6E40D3EB7E3C75EB763D77FB1DB13
|
||||
E87F0E7C2C89925C93909CF379BFCFB53A1C7E38C53198ADC97A30CC1A0A8885
|
||||
FE0662E2F0239178BCD73D7ADA2228B32DA5CF68B2BD3A3EDAF37B5509EE3FE5
|
||||
41FF03FA3F053E96044128B227E7DCAAAAC16B3DE383A55A64E2E97F7C5DCD92
|
||||
90DE2C8AF233CED19EC7354D6B3BF359FF7DFAFF06F8581204C10AE401B9167B
|
||||
EA64D968A910104A344DC9538281AC60D09712F479EC00B2C9E29465D388241B
|
||||
FA0441EAD2D05A827ECF718F73F838D00574699AF6E12F09FC3FA0FF07941F09
|
||||
895384A7330000000049454E44AE426082
|
||||
}
|
||||
Stretch = True
|
||||
end
|
||||
object lbProductName: TLabel
|
||||
Left = 108
|
||||
Height = 25
|
||||
Top = 18
|
||||
Width = 79
|
||||
Caption = 'SPackGui'
|
||||
Font.Height = -19
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbFullVersion: TLabel
|
||||
Left = 108
|
||||
Height = 20
|
||||
Top = 50
|
||||
Width = 130
|
||||
Caption = 'Version %s (%s-%s)'
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object PageControl1: TPageControl
|
||||
Left = 14
|
||||
Height = 315
|
||||
Top = 99
|
||||
Width = 670
|
||||
ActivePage = tsAbout
|
||||
ParentFont = False
|
||||
TabIndex = 0
|
||||
TabOrder = 0
|
||||
object tsAbout: TTabSheet
|
||||
Caption = 'About'
|
||||
ClientHeight = 283
|
||||
ClientWidth = 666
|
||||
ParentFont = False
|
||||
object lbProductDesc: TLabel
|
||||
Left = 18
|
||||
Height = 68
|
||||
Top = 16
|
||||
Width = 630
|
||||
AutoSize = False
|
||||
Caption = 'SPackGui is a graphical package manager designed as a user interface for command line tools provided by SPack.'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
WordWrap = True
|
||||
end
|
||||
object lbCopyright: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 115
|
||||
Width = 307
|
||||
Alignment = taCenter
|
||||
Caption = 'Copyright (c) 2012-2013, 2018 Geoffray Levasseur'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbCompiler: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 88
|
||||
Width = 335
|
||||
Caption = 'Designed with Free Pascal %s and Lazarus %s rev. %s.'
|
||||
Constraints.MaxWidth = 585
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbMaintMail: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 187
|
||||
Width = 229
|
||||
Caption = 'geoffray.levasseur@legos.obs-mip.fr'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
OnClick = lbMaintURLClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object lbMaintURL: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 206
|
||||
Width = 348
|
||||
Caption = 'http://www.geoffray-levasseur.org/softwares/spackgui/'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
OnClick = lbMaintURLClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object lbLicense: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 250
|
||||
Width = 491
|
||||
Caption = 'This software is under protection of the CeCILL. Check "License" tab for details.'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbWidgetSetUsed: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 142
|
||||
Width = 108
|
||||
Caption = 'lbWidgetSetUsed'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object tsAuthors: TTabSheet
|
||||
Caption = 'Authors'
|
||||
ClientHeight = 283
|
||||
ClientWidth = 666
|
||||
ParentFont = False
|
||||
object lbAuth1Name: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 12
|
||||
Width = 127
|
||||
Caption = 'Geoffray Levasseur'
|
||||
Font.Color = clWindowText
|
||||
Font.Name = 'Default'
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbAuth1Address: TLabel
|
||||
Left = 45
|
||||
Height = 20
|
||||
Top = 34
|
||||
Width = 229
|
||||
Caption = 'geoffray.levasseur@legos.obs-mip.fr'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
OnClick = lbMaintURLClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object lbAuth1URL: TLabel
|
||||
Left = 45
|
||||
Height = 20
|
||||
Top = 52
|
||||
Width = 221
|
||||
Caption = 'http://www.geoffray-levasseur.org/'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
OnClick = lbMaintURLClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object lbAuth1Comments: TLabel
|
||||
Left = 45
|
||||
Height = 20
|
||||
Top = 70
|
||||
Width = 152
|
||||
Caption = 'Founder and maintenor.'
|
||||
Font.Color = clWindowText
|
||||
Font.Name = 'Default'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object tsThanks: TTabSheet
|
||||
Caption = 'Thanks'
|
||||
ClientHeight = 283
|
||||
ClientWidth = 666
|
||||
ParentFont = False
|
||||
object lbThanks1Name: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 12
|
||||
Width = 163
|
||||
Caption = 'Oxygen icon theme team'
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbThanks1Address: TLabel
|
||||
Left = 45
|
||||
Height = 20
|
||||
Top = 34
|
||||
Width = 183
|
||||
Caption = 'http://www.oxygen-icons.org'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
OnClick = lbMaintURLClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object lbThanks1Comments: TLabel
|
||||
Left = 45
|
||||
Height = 20
|
||||
Top = 52
|
||||
Width = 445
|
||||
Caption = 'Main icon theme (under Creative Commons Attributions-ShareAlike 3.0)'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object tsLicense: TTabSheet
|
||||
Caption = 'License'
|
||||
ClientHeight = 283
|
||||
ClientWidth = 666
|
||||
ParentFont = False
|
||||
object lbReadLicense: TLabel
|
||||
Left = 9
|
||||
Height = 45
|
||||
Top = 232
|
||||
Width = 648
|
||||
AutoSize = False
|
||||
Caption = 'The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
WordWrap = True
|
||||
OnClick = lbReadLicenseClick
|
||||
OnMouseEnter = lbMaintURLMouseEnter
|
||||
OnMouseLeave = lbMaintURLMouseLeave
|
||||
end
|
||||
object mmLicence: TMemo
|
||||
Left = 9
|
||||
Height = 207
|
||||
Top = 9
|
||||
Width = 648
|
||||
BorderStyle = bsNone
|
||||
Color = clAppWorkspace
|
||||
Lines.Strings = (
|
||||
'This software is governed by the CeCILL license under French law and abiding by the rules of distribution of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info". '
|
||||
''
|
||||
'As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by the license, users are provided only with a limited warranty and the software''s author, the holder of the economic rights, and the successive licensors have only limited liability.'
|
||||
''
|
||||
'In this respect, the user''s attention is drawn to the risks associated with loading, using, modifying and/or developing or reproducing the software by the user in light of its specific status of free software, that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged to load and test the software''s suitability as regards their requirements in conditions enabling the security of their systems and/or data to be ensured and, more generally, to use and operate it in the same conditions as regards security.'
|
||||
)
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
ScrollBars = ssAutoVertical
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
object lbBuild: TLabel
|
||||
Left = 108
|
||||
Height = 20
|
||||
Top = 70
|
||||
Width = 130
|
||||
Caption = 'Build on %s with %s.'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnClose: TBitBtn
|
||||
Tag = -1
|
||||
Left = 513
|
||||
Height = 34
|
||||
Top = 423
|
||||
Width = 171
|
||||
Caption = 'Close'
|
||||
Font.Name = 'Default'
|
||||
OnClick = btnCloseClick
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
176
spackgui/frmabout.pas
Normal file
176
spackgui/frmabout.pas
Normal file
@@ -0,0 +1,176 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 1997-1999, 2009-2012 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://0.tuxfamilly.org/
|
||||
http://www.geoffray-levasseur.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
About dialog unit
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmAbout;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
SysUtils, Classes, Graphics, Forms, Controls, StdCtrls, Buttons, ExtCtrls,
|
||||
Menus, LResources, ComCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TfAbout }
|
||||
|
||||
TfAbout = class(TForm)
|
||||
btnClose: TBitBtn;
|
||||
lbWidgetSetUsed: TLabel;
|
||||
lbThanks1Address: TLabel;
|
||||
lbThanks1Comments: TLabel;
|
||||
lbThanks1Name: TLabel;
|
||||
lbCopyright: TLabel;
|
||||
lbCompiler: TLabel;
|
||||
lbReadLicense: TLabel;
|
||||
lbProductName: TLabel;
|
||||
lbMaintMail: TLabel;
|
||||
lbLicense: TLabel;
|
||||
lbAuth1Name: TLabel;
|
||||
lbAuth1Address: TLabel;
|
||||
lbAuth1URL: TLabel;
|
||||
lbAuth1Comments: TLabel;
|
||||
lbMaintURL: TLabel;
|
||||
lbBuild: TLabel;
|
||||
lbFullVersion: TLabel;
|
||||
mmLicence: TMemo;
|
||||
PageControl1: TPageControl;
|
||||
lbProductDesc: TLabel;
|
||||
ProgramIcon: TImage;
|
||||
tsThanks: TTabSheet;
|
||||
tsAbout: TTabSheet;
|
||||
tsAuthors: TTabSheet;
|
||||
tsLicense: TTabSheet;
|
||||
procedure btnCloseClick(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure lbReadLicenseClick(Sender: TObject);
|
||||
procedure lbMaintURLClick(Sender: TObject);
|
||||
procedure lbMaintURLMouseEnter(Sender: TObject);
|
||||
procedure lbMaintURLMouseLeave(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
HLCol: TColor;
|
||||
OverCol: TColor;
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fAbout: TfAbout;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
{$IFDEF LCLQT}
|
||||
qt4,
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLQT5}
|
||||
qt5,
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLGTK2}
|
||||
gtk2,
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLGTK3} //not yet ready in LCL, just here for experimentations
|
||||
gtk3,
|
||||
{$ENDIF}
|
||||
uStrings, uUtils, uVersion, uIconManager;
|
||||
|
||||
procedure TfAbout.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfAbout.FormCreate(Sender: TObject);
|
||||
begin
|
||||
btnClose.Tag := icClose;
|
||||
InitBtnGlyphs(Self);
|
||||
PageControl1.ActivePage := tsAbout;
|
||||
lbFullVersion.Caption := Format(lbFullVersion.Caption, [GetVersionString(vrVersion),
|
||||
GetBuildOS, GetBuildCPU]);
|
||||
lbCompiler.Caption := Format(lbCompiler.Caption, [GetFPCVersion, GetLazarusVersion,
|
||||
GetLazarusRevision]);
|
||||
lbBuild.Caption := Format(lbBuild.Caption, [GetBuildDate, BuildSys]);
|
||||
HLCol := clBlue;
|
||||
OverCol := clRed;
|
||||
lbMaintMail.Font.Color := HLCol;
|
||||
lbMaintURL.Font.Color := HLCol;
|
||||
lbAuth1Address.Font.Color := HLCol;
|
||||
lbAuth1URL.Font.Color := HLCol;
|
||||
lbThanks1Address.Font.Color := HLCol;
|
||||
lbReadLicense.Font.Color := HLCol;
|
||||
{$IFDEF LCLQT or IFDEF LCLQT5}
|
||||
lbWidgetSetUsed.Caption := Format(rsQtVersion, [PChar(QtVersion)]);
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLGTK2 OR LCLGTK3}
|
||||
lbWidgetSetUsed.Caption := Format(rsGtkVersion, [gtk_major_version,
|
||||
gtk_minor_version, gtk_micro_version]);
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TfAbout.lbReadLicenseClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(sCecillAddress);
|
||||
end;
|
||||
|
||||
procedure TfAbout.lbMaintURLClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(TLabel(Sender).Caption);
|
||||
end;
|
||||
|
||||
procedure TfAbout.lbMaintURLMouseEnter(Sender: TObject);
|
||||
begin
|
||||
TLabel(Sender).Font.Color := OverCol;
|
||||
TLabel(Sender).Font.Style := [fsUnderline];
|
||||
TLabel(Sender).Cursor := crHandPoint;
|
||||
end;
|
||||
|
||||
procedure TfAbout.lbMaintURLMouseLeave(Sender: TObject);
|
||||
begin
|
||||
TLabel(Sender).Font.Color := HLCol;
|
||||
TLabel(Sender).Font.Style := [];
|
||||
end;
|
||||
|
||||
end.
|
||||
133
spackgui/frmaddchangerepo.lfm
Normal file
133
spackgui/frmaddchangerepo.lfm
Normal file
@@ -0,0 +1,133 @@
|
||||
object fAddChangeRepo: TfAddChangeRepo
|
||||
Left = 2617
|
||||
Height = 200
|
||||
Top = 596
|
||||
Width = 626
|
||||
BorderIcons = [biSystemMenu, biMaximize]
|
||||
Caption = 'fAddChangeRepo'
|
||||
ClientHeight = 200
|
||||
ClientWidth = 626
|
||||
Constraints.MaxHeight = 200
|
||||
Constraints.MinHeight = 200
|
||||
Constraints.MinWidth = 394
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCloseQuery = FormCloseQuery
|
||||
OnCreate = FormCreate
|
||||
Position = poOwnerFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object btnOk: TBitBtn
|
||||
Tag = -1
|
||||
Left = 352
|
||||
Height = 34
|
||||
Top = 155
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnCancel: TBitBtn
|
||||
Tag = -1
|
||||
Left = 491
|
||||
Height = 34
|
||||
Top = 155
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object edName: TEdit
|
||||
Left = 126
|
||||
Height = 34
|
||||
Top = 8
|
||||
Width = 485
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
OnChange = edNameChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
Text = 'edName'
|
||||
end
|
||||
object lbName: TLabel
|
||||
Left = 9
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 41
|
||||
Caption = '&Name:'
|
||||
FocusControl = edName
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbAddress: TLabel
|
||||
Left = 9
|
||||
Height = 20
|
||||
Top = 57
|
||||
Width = 54
|
||||
Caption = '&Address:'
|
||||
FocusControl = edAddress
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edAddress: TEdit
|
||||
Left = 126
|
||||
Height = 34
|
||||
Top = 48
|
||||
Width = 462
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
OnChange = edNameChange
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
Text = 'edAddress'
|
||||
end
|
||||
object lbHelp: TLabel
|
||||
Left = 128
|
||||
Height = 20
|
||||
Top = 83
|
||||
Width = 433
|
||||
Caption = 'You can fill that field with both distant (http or ftp) or local addresses.'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnBrowse: TButton
|
||||
Left = 590
|
||||
Height = 28
|
||||
Top = 50
|
||||
Width = 21
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '...'
|
||||
OnClick = btnBrowseClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
object edComment: TEdit
|
||||
Left = 126
|
||||
Height = 34
|
||||
Top = 109
|
||||
Width = 485
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
ParentFont = False
|
||||
TabOrder = 5
|
||||
Text = 'edComment'
|
||||
end
|
||||
object lbComment: TLabel
|
||||
Left = 9
|
||||
Height = 20
|
||||
Top = 114
|
||||
Width = 76
|
||||
Caption = '&Description:'
|
||||
FocusControl = edComment
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object dlgSelectDirectory: TSelectDirectoryDialog
|
||||
InitialDir = '/'
|
||||
Options = [ofPathMustExist, ofCreatePrompt, ofNoNetworkButton, ofEnableSizing, ofViewDetail]
|
||||
left = 81
|
||||
top = 153
|
||||
end
|
||||
end
|
||||
138
spackgui/frmaddchangerepo.pas
Normal file
138
spackgui/frmaddchangerepo.pas
Normal file
@@ -0,0 +1,138 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
add/change repository dialog
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmAddChangeRepo;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
StdCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TfAddChangeRepo }
|
||||
|
||||
TfAddChangeRepo = class(TForm)
|
||||
btnCancel: TBitBtn;
|
||||
btnOk: TBitBtn;
|
||||
btnBrowse: TButton;
|
||||
edComment: TEdit;
|
||||
edName: TEdit;
|
||||
edAddress: TEdit;
|
||||
lbHelp: TLabel;
|
||||
lbComment: TLabel;
|
||||
lbName: TLabel;
|
||||
lbAddress: TLabel;
|
||||
dlgSelectDirectory: TSelectDirectoryDialog;
|
||||
procedure btnBrowseClick(Sender: TObject);
|
||||
procedure edNameChange(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fAddChangeRepo: TfAddChangeRepo;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
uCommon, uIconManager, uStrings, uDebug;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfAddChangeRepo }
|
||||
|
||||
procedure TfAddChangeRepo.edNameChange(Sender: TObject);
|
||||
begin
|
||||
btnOk.Enabled := (Trim(edName.Text) <> '') and (Trim(edAddress.Text) <> '');
|
||||
end;
|
||||
|
||||
procedure TfAddChangeRepo.btnBrowseClick(Sender: TObject);
|
||||
begin
|
||||
if dlgSelectDirectory.Execute then
|
||||
edAddress.Text := dlgSelectDirectory.FileName;
|
||||
end;
|
||||
|
||||
procedure TfAddChangeRepo.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfAddChangeRepo.FormCloseQuery(Sender: TObject;
|
||||
var CanClose: boolean);
|
||||
begin
|
||||
CanClose := False;
|
||||
// = is forbidden in name and " in address
|
||||
if Pos('=', edName.Text) <> 0 then
|
||||
MessageDlg(rsError, rsErrorEqualForbidden, mtError, [mbOK], 0)
|
||||
else
|
||||
if Pos('"', edAddress.Text) <> 0 then
|
||||
MessageDlg(rsError, rsErrorQuoteForbidden, mtError, [mbOK], 0)
|
||||
else
|
||||
CanClose := True;
|
||||
end;
|
||||
|
||||
procedure TfAddChangeRepo.FormCreate(Sender: TObject);
|
||||
begin
|
||||
btnOk.Tag := icOk;
|
||||
btnCancel.Tag := icCancel;
|
||||
edNameChange(Sender);
|
||||
LoadWindowGeometry(Self);
|
||||
InitBtnGlyphs(Self);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
412
spackgui/frmdisplaysettings.lfm
Normal file
412
spackgui/frmdisplaysettings.lfm
Normal file
@@ -0,0 +1,412 @@
|
||||
object fDisplaySettings: TfDisplaySettings
|
||||
Left = 2649
|
||||
Height = 477
|
||||
Top = 855
|
||||
Width = 579
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Display configuration'
|
||||
ClientHeight = 477
|
||||
ClientWidth = 579
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object PageControl: TPageControl
|
||||
Left = 18
|
||||
Height = 396
|
||||
Top = 18
|
||||
Width = 550
|
||||
ActivePage = tsColors
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
ParentFont = False
|
||||
TabIndex = 1
|
||||
TabOrder = 0
|
||||
object tsGeneral: TTabSheet
|
||||
Caption = 'General'
|
||||
ClientHeight = 364
|
||||
ClientWidth = 546
|
||||
ParentFont = False
|
||||
object gbByteUnits: TGroupBox
|
||||
Left = 17
|
||||
Height = 117
|
||||
Top = 16
|
||||
Width = 513
|
||||
Caption = 'Size units'
|
||||
ClientHeight = 85
|
||||
ClientWidth = 509
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
object rbMetricUnits: TRadioButton
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 35
|
||||
Width = 231
|
||||
Caption = 'Metric system units (ko, Mo, etc.)'
|
||||
OnChange = rbIECUnitsChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object rbIECUnits: TRadioButton
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 8
|
||||
Width = 417
|
||||
Caption = 'Units from Internationnal Electronic Commition (Kio, Mio, etc.)'
|
||||
Checked = True
|
||||
OnChange = rbIECUnitsChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
TabStop = True
|
||||
end
|
||||
object lbUnitExample: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 69
|
||||
Width = 93
|
||||
Caption = 'lbUnitExample'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object gbNumbers: TGroupBox
|
||||
Left = 296
|
||||
Height = 135
|
||||
Top = 142
|
||||
Width = 234
|
||||
Caption = 'Nombres'
|
||||
ClientHeight = 103
|
||||
ClientWidth = 230
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
object edDecimalSeparator: TEdit
|
||||
Left = 187
|
||||
Height = 34
|
||||
Top = 17
|
||||
Width = 27
|
||||
OnChange = edDecimalSeparatorChange
|
||||
OnClick = edDecimalSeparatorChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'edDecimalSeparator'
|
||||
end
|
||||
object edThousandsSeparator: TEdit
|
||||
Left = 187
|
||||
Height = 34
|
||||
Top = 62
|
||||
Width = 27
|
||||
OnChange = edThousandsSeparatorChange
|
||||
OnClick = edThousandsSeparatorChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
Text = 'edThousandsSeparator'
|
||||
end
|
||||
object lbThousandsSeparator: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 66
|
||||
Width = 136
|
||||
Caption = 'Thousands separator:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbDecimalSeparator: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 21
|
||||
Width = 118
|
||||
Caption = 'Decimal separator:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object gbListView: TGroupBox
|
||||
Left = 17
|
||||
Height = 136
|
||||
Top = 142
|
||||
Width = 261
|
||||
Caption = 'Lists'
|
||||
ClientHeight = 104
|
||||
ClientWidth = 257
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
object ckbDisplayGrid: TCheckBox
|
||||
Left = 18
|
||||
Height = 24
|
||||
Top = 14
|
||||
Width = 113
|
||||
Caption = 'Display a grid'
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object ckbNoColors: TCheckBox
|
||||
Left = 18
|
||||
Height = 24
|
||||
Top = 44
|
||||
Width = 136
|
||||
Caption = 'Do not use colors'
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
end
|
||||
object tsColors: TTabSheet
|
||||
Caption = 'Colors'
|
||||
ClientHeight = 361
|
||||
ClientWidth = 542
|
||||
ParentFont = False
|
||||
object clbUpdatablePackageBackground: TColorBox
|
||||
Left = 376
|
||||
Height = 34
|
||||
Top = 40
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object lbUpdatablePackage: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 208
|
||||
Caption = 'Packages with available upgrade:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbUpdatablePackageFont: TLabel
|
||||
Left = 35
|
||||
Height = 20
|
||||
Top = 46
|
||||
Width = 33
|
||||
Caption = 'Font:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbUpdatablePackageFont: TColorBox
|
||||
Left = 100
|
||||
Height = 34
|
||||
Top = 40
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object lbUpdatablePackageBackground: TLabel
|
||||
Left = 288
|
||||
Height = 20
|
||||
Top = 46
|
||||
Width = 80
|
||||
Caption = 'Background:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbOutdatedPackage: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 80
|
||||
Width = 131
|
||||
Caption = 'Deprecated package:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbOutdatedPackageFont: TLabel
|
||||
Left = 35
|
||||
Height = 20
|
||||
Top = 109
|
||||
Width = 33
|
||||
Caption = 'Font:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbOutdatedPackageFont: TColorBox
|
||||
Left = 100
|
||||
Height = 34
|
||||
Top = 104
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object clbOutdatedPackageBackground: TColorBox
|
||||
Left = 376
|
||||
Height = 34
|
||||
Top = 104
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object lbOutdatedPackageBackground: TLabel
|
||||
Left = 288
|
||||
Height = 20
|
||||
Top = 109
|
||||
Width = 80
|
||||
Caption = 'Background:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbPackageToInstallFont: TLabel
|
||||
Left = 35
|
||||
Height = 20
|
||||
Top = 173
|
||||
Width = 33
|
||||
Caption = 'Font:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToInstallFont: TColorBox
|
||||
Left = 100
|
||||
Height = 34
|
||||
Top = 168
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
object lbPackageToInstallBackground: TLabel
|
||||
Left = 288
|
||||
Height = 20
|
||||
Top = 173
|
||||
Width = 80
|
||||
Caption = 'Background:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToInstallBackground: TColorBox
|
||||
Left = 376
|
||||
Height = 34
|
||||
Top = 168
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 5
|
||||
end
|
||||
object lbPackageToInstall: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 144
|
||||
Width = 171
|
||||
Caption = 'Package set for installation:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbPackageToUpgradeFont: TLabel
|
||||
Left = 35
|
||||
Height = 20
|
||||
Top = 237
|
||||
Width = 33
|
||||
Caption = 'Font:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToUpgradeFont: TColorBox
|
||||
Left = 100
|
||||
Height = 34
|
||||
Top = 232
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 6
|
||||
end
|
||||
object lbPackageToUpgradeBackground: TLabel
|
||||
Left = 288
|
||||
Height = 20
|
||||
Top = 237
|
||||
Width = 80
|
||||
Caption = 'Background:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToUpgradeBackground: TColorBox
|
||||
Left = 376
|
||||
Height = 34
|
||||
Top = 232
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 7
|
||||
end
|
||||
object lbPackageToUpgrade: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 208
|
||||
Width = 127
|
||||
Caption = 'Package to upgrade:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbPackageToRemoveFont: TLabel
|
||||
Left = 35
|
||||
Height = 20
|
||||
Top = 301
|
||||
Width = 33
|
||||
Caption = 'Font:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToRemoveFont: TColorBox
|
||||
Left = 100
|
||||
Height = 34
|
||||
Top = 296
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 8
|
||||
end
|
||||
object lbPackageToRemoveBackground: TLabel
|
||||
Left = 288
|
||||
Height = 20
|
||||
Top = 301
|
||||
Width = 80
|
||||
Caption = 'Background:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object clbPackageToRemoveBackground: TColorBox
|
||||
Left = 376
|
||||
Height = 34
|
||||
Top = 296
|
||||
Width = 144
|
||||
ItemHeight = 19
|
||||
ParentFont = False
|
||||
TabOrder = 9
|
||||
end
|
||||
object lbPackageToRemove: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 272
|
||||
Width = 188
|
||||
Caption = 'Package set for uninstallation:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
end
|
||||
object btnOk: TBitBtn
|
||||
Tag = -1
|
||||
Left = 307
|
||||
Height = 34
|
||||
Top = 432
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
OnClick = btnOkClick
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnCancel: TBitBtn
|
||||
Tag = -1
|
||||
Left = 448
|
||||
Height = 34
|
||||
Top = 432
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
217
spackgui/frmdisplaysettings.pas
Normal file
217
spackgui/frmdisplaysettings.pas
Normal file
@@ -0,0 +1,217 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
configuration dialog for command line and network parameters
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmDisplaySettings;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
||||
Buttons, ExtCtrls, StdCtrls, ColorBox;
|
||||
|
||||
type
|
||||
|
||||
{ TfDisplaySettings }
|
||||
|
||||
TfDisplaySettings = class(TForm)
|
||||
btnCancel: TBitBtn;
|
||||
btnOk: TBitBtn;
|
||||
ckbNoColors: TCheckBox;
|
||||
ckbDisplayGrid: TCheckBox;
|
||||
clbUpdatablePackageBackground: TColorBox;
|
||||
clbPackageToRemoveBackground: TColorBox;
|
||||
clbUpdatablePackageFont: TColorBox;
|
||||
clbOutdatedPackageFont: TColorBox;
|
||||
clbOutdatedPackageBackground: TColorBox;
|
||||
clbPackageToInstallFont: TColorBox;
|
||||
clbPackageToInstallBackground: TColorBox;
|
||||
clbPackageToUpgradeFont: TColorBox;
|
||||
clbPackageToUpgradeBackground: TColorBox;
|
||||
clbPackageToRemoveFont: TColorBox;
|
||||
edDecimalSeparator: TEdit;
|
||||
edThousandsSeparator: TEdit;
|
||||
gbByteUnits: TGroupBox;
|
||||
gbNumbers: TGroupBox;
|
||||
gbListView: TGroupBox;
|
||||
lbDecimalSeparator: TLabel;
|
||||
lbPackageToInstall: TLabel;
|
||||
lbPackageToUpgradeFont: TLabel;
|
||||
lbPackageToUpgradeBackground: TLabel;
|
||||
lbPackageToUpgrade: TLabel;
|
||||
lbPackageToRemoveFont: TLabel;
|
||||
lbPackageToRemoveBackground: TLabel;
|
||||
lbPackageToRemove: TLabel;
|
||||
lbThousandsSeparator: TLabel;
|
||||
lbUpdatablePackage: TLabel;
|
||||
lbUpdatablePackageFont: TLabel;
|
||||
lbUpdatablePackageBackground: TLabel;
|
||||
lbOutdatedPackage: TLabel;
|
||||
lbOutdatedPackageFont: TLabel;
|
||||
lbOutdatedPackageBackground: TLabel;
|
||||
lbPackageToInstallFont: TLabel;
|
||||
lbPackageToInstallBackground: TLabel;
|
||||
lbUnitExample: TLabel;
|
||||
PageControl: TPageControl;
|
||||
rbMetricUnits: TRadioButton;
|
||||
rbIECUnits: TRadioButton;
|
||||
tsColors: TTabSheet;
|
||||
tsGeneral: TTabSheet;
|
||||
procedure btnOkClick(Sender: TObject);
|
||||
procedure edDecimalSeparatorChange(Sender: TObject);
|
||||
procedure edThousandsSeparatorChange(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure rbIECUnitsChange(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fDisplaySettings: TfDisplaySettings;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
uIconManager, uCommon, uStrings, uListViewColors, uDebug;
|
||||
|
||||
{ TfDisplaySettings }
|
||||
|
||||
procedure TfDisplaySettings.edThousandsSeparatorChange(Sender: TObject);
|
||||
begin
|
||||
edThousandsSeparator.SelectAll;
|
||||
end;
|
||||
|
||||
procedure TfDisplaySettings.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfDisplaySettings.btnOkClick(Sender: TObject);
|
||||
begin
|
||||
bUnitsAreDecimal := rbIECUnits.Checked = False;
|
||||
if edThousandsSeparator.Text <> '' then
|
||||
cThousandSep := edThousandsSeparator.Text[1]
|
||||
else
|
||||
cThousandSep := #0;
|
||||
cDecimalSep := edDecimalSeparator.Text[1];
|
||||
bShowGrig := ckbDisplayGrid.Checked;
|
||||
bNoColors := ckbNoColors.Checked;
|
||||
clUpdatablePackageFont := clbUpdatablePackageFont.Selected;
|
||||
clUpdatablePackageBack := clbUpdatablePackageBackground.Selected;
|
||||
clOutdatedPackageFont := clbOutdatedPackageFont.Selected;
|
||||
clOutdatedPackageBack := clbOutdatedPackageBackground.Selected;
|
||||
clPackageToInstallFont := clbPackageToInstallFont.Selected;
|
||||
clPackageToInstallBack := clbPackageToInstallBackground.Selected;
|
||||
clPackageToUpgradeFont := clbPackageToUpgradeFont.Selected;
|
||||
clPackageToUpgradeBack := clbPackageToUpgradeBackground.Selected;
|
||||
clPackageToRemoveFont := clbPackageToRemoveFont.Selected;
|
||||
clPackageToRemoveBack := clbPackageToRemoveBackground.Selected;
|
||||
SaveColors;
|
||||
iniMain.WriteInteger(rsConfSectionDisplay, rsConfNameThousandsSep,
|
||||
Ord(cThousandSep));
|
||||
iniMain.WriteInteger(rsConfSectionDisplay, rsConfNameDecimalSep,
|
||||
Ord(cDecimalSep));
|
||||
iniMain.WriteBool(rsConfSectionDisplay, rsConfNameDecimalUnits,
|
||||
bUnitsAreDecimal);
|
||||
iniMain.WriteBool(rsConfSectionDisplay, rsConfNameShowGrid, bShowGrig);
|
||||
iniMain.WriteBool(rsConfSectionDisplay, rsConfNameNoColors, bNoColors);
|
||||
end;
|
||||
|
||||
procedure TfDisplaySettings.edDecimalSeparatorChange(Sender: TObject);
|
||||
begin
|
||||
btnOk.Enabled := edDecimalSeparator.Text <> '';
|
||||
edDecimalSeparator.SelectAll;
|
||||
end;
|
||||
|
||||
procedure TfDisplaySettings.FormCreate(Sender: TObject);
|
||||
begin
|
||||
LoadWindowGeometry(Self);
|
||||
btnOk.Tag := icOk;
|
||||
btnCancel.Tag := icCancel;
|
||||
InitBtnGlyphs(Self);
|
||||
PageControl.ActivePageIndex := 0;
|
||||
if not bUnitsAreDecimal then
|
||||
rbIECUnits.Checked := True
|
||||
else
|
||||
rbMetricUnits.Checked := True;
|
||||
edThousandsSeparator.Text := cThousandSep;
|
||||
edDecimalSeparator.Text := cDecimalSep;
|
||||
ckbDisplayGrid.Checked := bShowGrig;
|
||||
ckbNoColors.Checked := bNoColors;
|
||||
clbUpdatablePackageFont.Selected := clUpdatablePackageFont;
|
||||
clbUpdatablePackageBackground.Selected := clUpdatablePackageBack;
|
||||
clbOutdatedPackageFont.Selected := clOutdatedPackageFont;
|
||||
clbOutdatedPackageBackground.Selected := clOutdatedPackageBack;
|
||||
clbPackageToInstallFont.Selected := clPackageToInstallFont;
|
||||
clbPackageToInstallBackground.Selected := clPackageToInstallBack;
|
||||
clbPackageToUpgradeFont.Selected := clPackageToUpgradeFont;
|
||||
clbPackageToUpgradeBackground.Selected := clPackageToUpgradeBack;
|
||||
clbPackageToRemoveFont.Selected := clPackageToRemoveFont;
|
||||
clbPackageToRemoveBackground.Selected := clPackageToRemoveBack;
|
||||
rbIECUnitsChange(nil);
|
||||
end;
|
||||
|
||||
procedure TfDisplaySettings.rbIECUnitsChange(Sender: TObject);
|
||||
var
|
||||
S: string;
|
||||
begin
|
||||
if rbIECUnits.Checked then
|
||||
S := IntToStr(5000 div 1024) + cDecimalSep +
|
||||
Copy(IntToStr(5000 mod 1024), 1, 2) + ' ' + rsKiB
|
||||
else
|
||||
S := IntToStr(5000 div 1000) + ' ' + rsKB;
|
||||
lbUnitExample.Caption := Format(rsUnitExample, [S]);;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
530
spackgui/frmenvironementsettings.lfm
Normal file
530
spackgui/frmenvironementsettings.lfm
Normal file
@@ -0,0 +1,530 @@
|
||||
object fEnvironmentSettings: TfEnvironmentSettings
|
||||
Left = 2589
|
||||
Height = 505
|
||||
Top = 0
|
||||
Width = 677
|
||||
Caption = 'Environment parameters'
|
||||
ClientHeight = 505
|
||||
ClientWidth = 677
|
||||
Constraints.MinHeight = 497
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object btnCancel: TBitBtn
|
||||
Tag = -1
|
||||
Left = 546
|
||||
Height = 34
|
||||
Top = 459
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnOk: TBitBtn
|
||||
Tag = -1
|
||||
Left = 405
|
||||
Height = 34
|
||||
Top = 459
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
OnClick = btnOkClick
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object pcMain: TPageControl
|
||||
Left = 18
|
||||
Height = 423
|
||||
Top = 18
|
||||
Width = 648
|
||||
ActivePage = tsCommands
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
TabIndex = 0
|
||||
TabOrder = 0
|
||||
object tsCommands: TTabSheet
|
||||
Caption = '&Commands'
|
||||
ClientHeight = 391
|
||||
ClientWidth = 644
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
object lbInstall: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 20
|
||||
Width = 108
|
||||
Caption = '&Install a package:'
|
||||
FocusControl = edInstall
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edInstall: TEdit
|
||||
Left = 188
|
||||
Height = 34
|
||||
Top = 16
|
||||
Width = 442
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'edInstall'
|
||||
end
|
||||
object edReinstall: TEdit
|
||||
Left = 188
|
||||
Height = 34
|
||||
Top = 56
|
||||
Width = 442
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
Text = 'edReinstall'
|
||||
end
|
||||
object lbReinstall: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 61
|
||||
Width = 123
|
||||
Caption = '&Reinstall a package:'
|
||||
FocusControl = edReinstall
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edRemove: TEdit
|
||||
Left = 188
|
||||
Height = 34
|
||||
Top = 96
|
||||
Width = 442
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
Text = 'edRemove'
|
||||
end
|
||||
object lbRemove: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 100
|
||||
Width = 110
|
||||
Caption = '&Delete a package:'
|
||||
FocusControl = edRemove
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edUpdate: TEdit
|
||||
Left = 188
|
||||
Height = 34
|
||||
Top = 136
|
||||
Width = 442
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
Text = 'edUpdate'
|
||||
end
|
||||
object lbUpdate: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 141
|
||||
Width = 124
|
||||
Caption = '&Upgrade a package:'
|
||||
FocusControl = edUpdate
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object tsPaths: TTabSheet
|
||||
Caption = '&Paths'
|
||||
ClientHeight = 391
|
||||
ClientWidth = 644
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
object lbInstPackageDir: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 20
|
||||
Width = 135
|
||||
Caption = '&Installed package list:'
|
||||
FocusControl = edInstPackageDir
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbPackageDwlDir: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 57
|
||||
Width = 144
|
||||
Caption = '&Download packages in:'
|
||||
FocusControl = edPackageDwlDir
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbRepoDwlDir: TLabel
|
||||
Left = 14
|
||||
Height = 20
|
||||
Top = 93
|
||||
Width = 192
|
||||
Caption = '&Repositories indexes directory:'
|
||||
FocusControl = edRepoDwlDir
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edInstPackageDir: TEdit
|
||||
Left = 242
|
||||
Height = 34
|
||||
Top = 16
|
||||
Width = 357
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'edInstPackageDir'
|
||||
end
|
||||
object edPackageDwlDir: TEdit
|
||||
Left = 242
|
||||
Height = 34
|
||||
Top = 53
|
||||
Width = 357
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
Text = 'edPackageDwlDir'
|
||||
end
|
||||
object edRepoDwlDir: TEdit
|
||||
Left = 242
|
||||
Height = 34
|
||||
Top = 89
|
||||
Width = 357
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edInstallChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
Text = 'edRepoDwlDir'
|
||||
end
|
||||
object btnBrowseInstPkgDir: TButton
|
||||
Left = 602
|
||||
Height = 27
|
||||
Top = 17
|
||||
Width = 21
|
||||
Caption = '...'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnBrowseInstPkgDirClick
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnBrowsePkgDwlDir: TButton
|
||||
Left = 602
|
||||
Height = 27
|
||||
Top = 53
|
||||
Width = 21
|
||||
Caption = '...'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnBrowsePkgDwlDirClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnBrowseRepoDwlDir: TButton
|
||||
Left = 602
|
||||
Height = 27
|
||||
Top = 89
|
||||
Width = 21
|
||||
Caption = '...'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnBrowseRepoDwlDirClick
|
||||
ParentFont = False
|
||||
TabOrder = 5
|
||||
end
|
||||
end
|
||||
object tsNetwork: TTabSheet
|
||||
Caption = '&Network'
|
||||
ClientHeight = 391
|
||||
ClientWidth = 644
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
object gbHttpProxy: TGroupBox
|
||||
Left = 14
|
||||
Height = 144
|
||||
Top = 16
|
||||
Width = 613
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Caption = 'HTTP Proxy'
|
||||
ClientHeight = 112
|
||||
ClientWidth = 609
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
object lbHttpProxyAddress: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 17
|
||||
Width = 54
|
||||
Caption = '&Address:'
|
||||
FocusControl = edHttpProxyAddress
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edHttpProxyAddress: TEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 12
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edHttpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'edHttpProxyAddress'
|
||||
end
|
||||
object lbHttpProxyPort: TLabel
|
||||
Left = 444
|
||||
Height = 20
|
||||
Top = 17
|
||||
Width = 31
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'P&ort:'
|
||||
FocusControl = edHttpProxyPort
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edHttpProxyPort: TEdit
|
||||
Left = 499
|
||||
Height = 34
|
||||
Top = 12
|
||||
Width = 99
|
||||
Anchors = [akTop, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edHttpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
Text = 'edHttpProxyPort'
|
||||
end
|
||||
object lbHttpProxyName: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 48
|
||||
Width = 68
|
||||
Caption = '&Username:'
|
||||
FocusControl = edHttpProxyUser
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edHttpProxyUser: TEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 44
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edHttpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
Text = 'edHttpProxyUser'
|
||||
end
|
||||
object medHttpProxyPass: TMaskEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 75
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
CharCase = ecNormal
|
||||
Font.Color = clWindowText
|
||||
MaxLength = 0
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
OnChange = edHttpProxyAddressChange
|
||||
Text = 'medHttpProxyPass'
|
||||
SpaceChar = '_'
|
||||
end
|
||||
object lbHttpProxyPass: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 80
|
||||
Width = 64
|
||||
Caption = 'Pass&word:'
|
||||
FocusControl = medHttpProxyPass
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnCopyToFtp: TBitBtn
|
||||
Left = 418
|
||||
Height = 34
|
||||
Top = 64
|
||||
Width = 180
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'To &FTP proxy'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnCopyToFtpClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
object gbFtpProxy: TGroupBox
|
||||
Left = 14
|
||||
Height = 144
|
||||
Top = 178
|
||||
Width = 613
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Caption = 'Proxy FTP'
|
||||
ClientHeight = 112
|
||||
ClientWidth = 609
|
||||
Font.Color = clWindowText
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
object lbFtpProxyAddress: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 17
|
||||
Width = 54
|
||||
Caption = 'A&ddress:'
|
||||
FocusControl = edFtpProxyAddress
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edFtpProxyAddress: TEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 12
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edFtpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'edFtpProxyAddress'
|
||||
end
|
||||
object lbFtpProxyPort: TLabel
|
||||
Left = 444
|
||||
Height = 20
|
||||
Top = 17
|
||||
Width = 31
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Po&rt:'
|
||||
FocusControl = edFtpProxyPort
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edFtpProxyPort: TEdit
|
||||
Left = 499
|
||||
Height = 34
|
||||
Top = 12
|
||||
Width = 99
|
||||
Anchors = [akTop, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edFtpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
Text = 'edFtpProxyPort'
|
||||
end
|
||||
object lbFtpProxyUser: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 48
|
||||
Width = 68
|
||||
Caption = 'Us&ername:'
|
||||
FocusControl = edFtpProxyUser
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object edFtpProxyUser: TEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 44
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
Font.Color = clWindowText
|
||||
OnChange = edFtpProxyAddressChange
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
Text = 'edFtpProxyUser'
|
||||
end
|
||||
object medFtpProxyPass: TMaskEdit
|
||||
Left = 118
|
||||
Height = 34
|
||||
Top = 75
|
||||
Width = 282
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
CharCase = ecNormal
|
||||
Font.Color = clWindowText
|
||||
MaxLength = 0
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
OnChange = edFtpProxyAddressChange
|
||||
Text = 'medFtpProxyPass'
|
||||
SpaceChar = '_'
|
||||
end
|
||||
object lbFtpProxyPass: TLabel
|
||||
Left = 15
|
||||
Height = 20
|
||||
Top = 80
|
||||
Width = 64
|
||||
Caption = 'Pa&ssword:'
|
||||
FocusControl = medFtpProxyPass
|
||||
Font.Color = clWindowText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnCopyToHttp: TBitBtn
|
||||
Tag = 40
|
||||
Left = 418
|
||||
Height = 34
|
||||
Top = 64
|
||||
Width = 180
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'To &HTTP proxy'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnCopyToHttpClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
object btnGetSystemProxy: TBitBtn
|
||||
Tag = 33
|
||||
Left = 14
|
||||
Height = 34
|
||||
Top = 340
|
||||
Width = 609
|
||||
Caption = '&Get system proxy parameters'
|
||||
Font.Color = clWindowText
|
||||
OnClick = btnGetSystemProxyClick
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
end
|
||||
end
|
||||
object dlgSelectDirectory: TSelectDirectoryDialog
|
||||
InitialDir = '/'
|
||||
Options = [ofPathMustExist, ofCreatePrompt, ofNoNetworkButton, ofEnableSizing, ofViewDetail]
|
||||
left = 72
|
||||
top = 450
|
||||
end
|
||||
end
|
||||
328
spackgui/frmenvironementsettings.pas
Normal file
328
spackgui/frmenvironementsettings.pas
Normal file
@@ -0,0 +1,328 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
configuration dialog for command line and network parameters
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmEnvironementSettings;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
ComCtrls, StdCtrls, maskedit;
|
||||
|
||||
type
|
||||
|
||||
{ TfEnvironmentSettings }
|
||||
|
||||
TfEnvironmentSettings = class(TForm)
|
||||
btnBrowseInstPkgDir: TButton;
|
||||
btnBrowsePkgDwlDir: TButton;
|
||||
btnBrowseRepoDwlDir: TButton;
|
||||
btnGetSystemProxy: TBitBtn;
|
||||
btnCopyToFtp: TBitBtn;
|
||||
btnCopyToHttp: TBitBtn;
|
||||
btnCancel: TBitBtn;
|
||||
btnOk: TBitBtn;
|
||||
dlgSelectDirectory: TSelectDirectoryDialog;
|
||||
edInstall: TEdit;
|
||||
edInstPackageDir: TEdit;
|
||||
edPackageDwlDir: TEdit;
|
||||
edRepoDwlDir: TEdit;
|
||||
edReinstall: TEdit;
|
||||
edRemove: TEdit;
|
||||
edUpdate: TEdit;
|
||||
edHttpProxyAddress: TEdit;
|
||||
edHttpProxyPort: TEdit;
|
||||
edHttpProxyUser: TEdit;
|
||||
edFtpProxyAddress: TEdit;
|
||||
edFtpProxyPort: TEdit;
|
||||
edFtpProxyUser: TEdit;
|
||||
gbHttpProxy: TGroupBox;
|
||||
gbFtpProxy: TGroupBox;
|
||||
lbInstPackageDir: TLabel;
|
||||
lbPackageDwlDir: TLabel;
|
||||
lbRepoDwlDir: TLabel;
|
||||
lbHttpProxyAddress: TLabel;
|
||||
lbHttpProxyPort: TLabel;
|
||||
lbHttpProxyName: TLabel;
|
||||
lbHttpProxyPass: TLabel;
|
||||
lbFtpProxyAddress: TLabel;
|
||||
lbFtpProxyPort: TLabel;
|
||||
lbFtpProxyUser: TLabel;
|
||||
lbFtpProxyPass: TLabel;
|
||||
lbInstall: TLabel;
|
||||
lbRemove: TLabel;
|
||||
lbUpdate: TLabel;
|
||||
lbReinstall: TLabel;
|
||||
medHttpProxyPass: TMaskEdit;
|
||||
medFtpProxyPass: TMaskEdit;
|
||||
pcMain: TPageControl;
|
||||
tsPaths: TTabSheet;
|
||||
tsNetwork: TTabSheet;
|
||||
tsCommands: TTabSheet;
|
||||
procedure btnBrowseInstPkgDirClick(Sender: TObject);
|
||||
procedure btnBrowseRepoDwlDirClick(Sender: TObject);
|
||||
procedure btnBrowsePkgDwlDirClick(Sender: TObject);
|
||||
procedure btnCopyToFtpClick(Sender: TObject);
|
||||
procedure btnCopyToHttpClick(Sender: TObject);
|
||||
procedure btnGetSystemProxyClick(Sender: TObject);
|
||||
procedure btnOkClick(Sender: TObject);
|
||||
procedure edFtpProxyAddressChange(Sender: TObject);
|
||||
procedure edHttpProxyAddressChange(Sender: TObject);
|
||||
procedure edInstallChange(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
PathChanged: Boolean;
|
||||
end;
|
||||
|
||||
var
|
||||
fEnvironmentSettings: TfEnvironmentSettings;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
uIconManager, uCommon, uStrings, uUtils, uDebug;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfEnvironmentSettings }
|
||||
|
||||
procedure TfEnvironmentSettings.FormCreate(Sender: TObject);
|
||||
begin
|
||||
PathChanged := False;
|
||||
//init icons
|
||||
btnOk.Tag := icOk;
|
||||
btnCancel.Tag := icCancel;
|
||||
btnCopyToFtp.Tag := icDown;
|
||||
btnCopyToHttp.Tag := icUp;
|
||||
InitBtnGlyphs(Self);
|
||||
//init interface
|
||||
pcMain.ActivePageIndex := 0;
|
||||
edInstall.Text := sInstallPackage;
|
||||
edReinstall.Text := sReinstallPackage;
|
||||
edRemove.Text := sRemovePackage;
|
||||
edUpdate.Text := sUpdatePackage;
|
||||
edInstPackageDir.Text := sSpackPkgDir;
|
||||
edPackageDwlDir.Text := sDwlDir;
|
||||
edRepoDwlDir.Text := sRepoIndexDir;
|
||||
edHttpProxyAddress.Text := sHttpProxyAddress;
|
||||
if iHttpProxyPort <> 0 then
|
||||
edHttpProxyPort.Text := IntToStr(iHttpProxyPort)
|
||||
else
|
||||
edHttpProxyPort.Text := '';
|
||||
edHttpProxyUser.Text := sHttpProxyUser;
|
||||
medHttpProxyPass.Text := sHttpProxyPass;
|
||||
edFtpProxyAddress.Text := sFtpProxyAddress;
|
||||
if iFtpProxyPort <> 0 then
|
||||
edFtpProxyPort.Text := IntToStr(iFtpProxyPort)
|
||||
else
|
||||
edFtpProxyPort.Text := '';
|
||||
edFtpProxyUser.Text := sFtpProxyUser;
|
||||
medFtpProxyPass.Text := sFtpProxyPass;
|
||||
edInstallChange(nil);
|
||||
edHttpProxyAddressChange(nil);
|
||||
edFtpProxyAddressChange(nil);
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.edHttpProxyAddressChange(Sender: TObject);
|
||||
begin
|
||||
edHttpProxyPort.Enabled := edHttpProxyAddress.Text <> '';
|
||||
edHttpProxyUser.Enabled := (edHttpProxyAddress.Text <> '') and
|
||||
(edHttpProxyPort.Text <> '');
|
||||
medHttpProxyPass.Enabled := edHttpProxyUser.Enabled and
|
||||
(edHttpProxyUser.Text <> '');
|
||||
if (Sender = edHttpProxyAddress) and (edHttpProxyAddress.Text <> '') and
|
||||
(edHttpProxyPort.Text = '') then
|
||||
edHttpProxyPort.Text := IntToStr(iDefaultProxyPort);
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.edInstallChange(Sender: TObject);
|
||||
begin
|
||||
btnOk.Enabled := (Trim(edInstall.Text) <> '') and
|
||||
(Trim(edReinstall.Text) <> '') and (Trim(edRemove.Text) <> '') and
|
||||
(Trim(edUpdate.Text) <> '') and (Trim(edInstPackageDir.Text) <> '') and
|
||||
(Trim(edPackageDwlDir.Text) <> '') and (Trim(edRepoDwlDir.Text) <> '');
|
||||
PathChanged := True;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.edFtpProxyAddressChange(Sender: TObject);
|
||||
begin
|
||||
edFtpProxyPort.Enabled := edFtpProxyAddress.Text <> '';
|
||||
edFtpProxyUser.Enabled := (edFtpProxyAddress.Text <> '') and
|
||||
(edFtpProxyPort.Text <> '');
|
||||
medFtpProxyPass.Enabled := edFtpProxyUser.Enabled and
|
||||
(edFtpProxyUser.Text <> '');
|
||||
if (Sender = edFtpProxyAddress) and (edFtpProxyAddress.Text <> '') and
|
||||
(edFtpProxyPort.Text = '') then
|
||||
edFtpProxyPort.Text := IntToStr(iDefaultProxyPort);
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnCopyToFtpClick(Sender: TObject);
|
||||
begin
|
||||
edFtpProxyAddress.Text := edHttpProxyAddress.Text;
|
||||
edFtpProxyPort.Text := edHttpProxyPort.Text;
|
||||
edFtpProxyUser.Text := edHttpProxyUser.Text;
|
||||
medFtpProxyPass.Text := medHttpProxyPass.Text;
|
||||
edFtpProxyAddressChange(Sender);
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnBrowsePkgDwlDirClick(Sender: TObject);
|
||||
begin
|
||||
dlgSelectDirectory.FileName := edRepoDwlDir.Text;
|
||||
if dlgSelectDirectory.Execute then
|
||||
edRepoDwlDir.Text := dlgSelectDirectory.FileName;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnBrowseRepoDwlDirClick(Sender: TObject);
|
||||
begin
|
||||
dlgSelectDirectory.FileName := edPackageDwlDir.Text;
|
||||
if dlgSelectDirectory.Execute then
|
||||
edPackageDwlDir.Text := dlgSelectDirectory.FileName;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnBrowseInstPkgDirClick(Sender: TObject);
|
||||
begin
|
||||
dlgSelectDirectory.FileName := edInstPackageDir.Text;
|
||||
if dlgSelectDirectory.Execute then
|
||||
edInstPackageDir.Text := dlgSelectDirectory.FileName;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnCopyToHttpClick(Sender: TObject);
|
||||
begin
|
||||
edHttpProxyAddress.Text := edFtpProxyAddress.Text;
|
||||
edHttpProxyPort.Text := edFtpProxyPort.Text;
|
||||
edHttpProxyUser.Text := edFtpProxyUser.Text;
|
||||
medHttpProxyPass.Text := medFtpProxyPass.Text;
|
||||
edHttpProxyAddressChange(Sender);
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnGetSystemProxyClick(Sender: TObject);
|
||||
var
|
||||
sHttp, sFtp: string;
|
||||
Usr, Pass, Addr, Port: string;
|
||||
begin
|
||||
sHttp := GetEnvironmentVariable(rsEnvHttpProxy);
|
||||
sFtp := GetEnvironmentVariable(rsEnvFtpProxy);
|
||||
if sHttp <> '' then
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoGetHttpProxySettings, [sHttp]), vlLow);
|
||||
GetProxyInfo(sHttp, Usr, Pass, Addr, Port);
|
||||
edHttpProxyUser.Text := Usr;
|
||||
medHttpProxyPass.Text := Pass;
|
||||
edHttpProxyAddress.Text := Addr;
|
||||
edHttpProxyPort.Text := Port;
|
||||
end;
|
||||
if sFtp <> '' then
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoGetFtpProxySettings, [sFtp]), vlLow);
|
||||
GetProxyInfo(sFtp, Usr, Pass, Addr, Port);
|
||||
edFtpProxyUser.Text := Usr;
|
||||
medFtpProxyPass.Text := Pass;
|
||||
edFtpProxyAddress.Text := Addr;
|
||||
edFtpProxyPort.Text := Port;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfEnvironmentSettings.btnOkClick(Sender: TObject);
|
||||
var
|
||||
Tmp: string;
|
||||
begin
|
||||
iniMain.WriteString(rsConfSectionCommand, rsConfNameInstallCommand,
|
||||
edInstall.Text);
|
||||
iniMain.WriteString(rsConfSectionCommand, rsConfNameReinstallCommand,
|
||||
edReinstall.Text);
|
||||
iniMain.WriteString(rsConfSectionCommand, rsConfNameRemoveCommand,
|
||||
edRemove.Text);
|
||||
iniMain.WriteString(rsConfSectionCommand, rsConfNameUpdateCommand,
|
||||
edUpdate.Text);
|
||||
iniMain.WriteString(rsConfSectionPaths, rsConfNameInstPkgPath,
|
||||
edInstPackageDir.Text);
|
||||
iniMain.WriteString(rsConfSectionPaths, rsConfNamePkgDownloadPath,
|
||||
edPackageDwlDir.Text);
|
||||
iniMain.WriteString(rsConfSectionPaths, rsConfNameRepoDownloadPath,
|
||||
edRepoDwlDir.Text);
|
||||
Tmp := '';
|
||||
if Trim(edHttpProxyUser.Text) <> '' then
|
||||
begin
|
||||
Tmp := Trim(edHttpProxyUser.Text);
|
||||
if Trim(medHttpProxyPass.Text) <> '' then
|
||||
Tmp := Tmp + ':' + medHttpProxyPass.Text;
|
||||
end;
|
||||
if Tmp <> '' then
|
||||
Tmp := Tmp + '@';
|
||||
Tmp := Tmp + Trim(edHttpProxyAddress.Text);
|
||||
if Trim(edHttpProxyPort.Text) <> '' then
|
||||
Tmp := Tmp + ':' + edHttpProxyPort.Text;
|
||||
iniMain.WriteString(rsConfSectionProxy, rsConfNameHttpProxy, Tmp);
|
||||
Tmp := '';
|
||||
if Trim(edFtpProxyUser.Text) <> '' then
|
||||
begin
|
||||
Tmp := Trim(edFtpProxyUser.Text);
|
||||
if Trim(medFtpProxyPass.Text) <> '' then
|
||||
Tmp := Tmp + ':' + medFtpProxyPass.Text;
|
||||
end;
|
||||
if Tmp <> '' then
|
||||
Tmp := Tmp + '@';
|
||||
Tmp := Tmp + Trim(edFtpProxyAddress.Text);
|
||||
if Trim(edFtpProxyPort.Text) <> '' then
|
||||
Tmp := Tmp + ':' + edFtpProxyPort.Text;
|
||||
iniMain.WriteString(rsConfSectionProxy, rsConfNameFtpProxy, Tmp);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
617
spackgui/frmlogfile.lfm
Normal file
617
spackgui/frmlogfile.lfm
Normal file
@@ -0,0 +1,617 @@
|
||||
object fLogView: TfLogView
|
||||
Left = 4456
|
||||
Height = 263
|
||||
Top = 32
|
||||
Width = 580
|
||||
Caption = 'Log'
|
||||
ClientHeight = 231
|
||||
ClientWidth = 580
|
||||
DesignTimePPI = 108
|
||||
Menu = mmMainMenu
|
||||
OnActivate = FormActivate
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
inline seEditor: TSynEdit
|
||||
Left = 0
|
||||
Height = 231
|
||||
Top = 0
|
||||
Width = 580
|
||||
Align = alClient
|
||||
Color = clWindow
|
||||
Font.Color = clWindowText
|
||||
Font.Height = -12
|
||||
Font.Name = 'DejaVu Sans Mono'
|
||||
Font.Pitch = fpFixed
|
||||
Font.Quality = fqNonAntialiased
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Gutter.Width = 60
|
||||
Gutter.MouseActions = <>
|
||||
RightGutter.Width = 0
|
||||
RightGutter.MouseActions = <>
|
||||
Highlighter = SynAnySyn
|
||||
Keystrokes = <
|
||||
item
|
||||
Command = ecUp
|
||||
ShortCut = 38
|
||||
end
|
||||
item
|
||||
Command = ecSelUp
|
||||
ShortCut = 8230
|
||||
end
|
||||
item
|
||||
Command = ecScrollUp
|
||||
ShortCut = 16422
|
||||
end
|
||||
item
|
||||
Command = ecDown
|
||||
ShortCut = 40
|
||||
end
|
||||
item
|
||||
Command = ecSelDown
|
||||
ShortCut = 8232
|
||||
end
|
||||
item
|
||||
Command = ecScrollDown
|
||||
ShortCut = 16424
|
||||
end
|
||||
item
|
||||
Command = ecLeft
|
||||
ShortCut = 37
|
||||
end
|
||||
item
|
||||
Command = ecSelLeft
|
||||
ShortCut = 8229
|
||||
end
|
||||
item
|
||||
Command = ecWordLeft
|
||||
ShortCut = 16421
|
||||
end
|
||||
item
|
||||
Command = ecSelWordLeft
|
||||
ShortCut = 24613
|
||||
end
|
||||
item
|
||||
Command = ecRight
|
||||
ShortCut = 39
|
||||
end
|
||||
item
|
||||
Command = ecSelRight
|
||||
ShortCut = 8231
|
||||
end
|
||||
item
|
||||
Command = ecWordRight
|
||||
ShortCut = 16423
|
||||
end
|
||||
item
|
||||
Command = ecSelWordRight
|
||||
ShortCut = 24615
|
||||
end
|
||||
item
|
||||
Command = ecPageDown
|
||||
ShortCut = 34
|
||||
end
|
||||
item
|
||||
Command = ecSelPageDown
|
||||
ShortCut = 8226
|
||||
end
|
||||
item
|
||||
Command = ecPageBottom
|
||||
ShortCut = 16418
|
||||
end
|
||||
item
|
||||
Command = ecSelPageBottom
|
||||
ShortCut = 24610
|
||||
end
|
||||
item
|
||||
Command = ecPageUp
|
||||
ShortCut = 33
|
||||
end
|
||||
item
|
||||
Command = ecSelPageUp
|
||||
ShortCut = 8225
|
||||
end
|
||||
item
|
||||
Command = ecPageTop
|
||||
ShortCut = 16417
|
||||
end
|
||||
item
|
||||
Command = ecSelPageTop
|
||||
ShortCut = 24609
|
||||
end
|
||||
item
|
||||
Command = ecLineStart
|
||||
ShortCut = 36
|
||||
end
|
||||
item
|
||||
Command = ecSelLineStart
|
||||
ShortCut = 8228
|
||||
end
|
||||
item
|
||||
Command = ecEditorTop
|
||||
ShortCut = 16420
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorTop
|
||||
ShortCut = 24612
|
||||
end
|
||||
item
|
||||
Command = ecLineEnd
|
||||
ShortCut = 35
|
||||
end
|
||||
item
|
||||
Command = ecSelLineEnd
|
||||
ShortCut = 8227
|
||||
end
|
||||
item
|
||||
Command = ecEditorBottom
|
||||
ShortCut = 16419
|
||||
end
|
||||
item
|
||||
Command = ecSelEditorBottom
|
||||
ShortCut = 24611
|
||||
end
|
||||
item
|
||||
Command = ecToggleMode
|
||||
ShortCut = 45
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16429
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 8237
|
||||
end
|
||||
item
|
||||
Command = ecDeleteChar
|
||||
ShortCut = 46
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 8238
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastChar
|
||||
ShortCut = 8200
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLastWord
|
||||
ShortCut = 16392
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 32776
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 40968
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 13
|
||||
end
|
||||
item
|
||||
Command = ecSelectAll
|
||||
ShortCut = 16449
|
||||
end
|
||||
item
|
||||
Command = ecCopy
|
||||
ShortCut = 16451
|
||||
end
|
||||
item
|
||||
Command = ecBlockIndent
|
||||
ShortCut = 24649
|
||||
end
|
||||
item
|
||||
Command = ecLineBreak
|
||||
ShortCut = 16461
|
||||
end
|
||||
item
|
||||
Command = ecInsertLine
|
||||
ShortCut = 16462
|
||||
end
|
||||
item
|
||||
Command = ecDeleteWord
|
||||
ShortCut = 16468
|
||||
end
|
||||
item
|
||||
Command = ecBlockUnindent
|
||||
ShortCut = 24661
|
||||
end
|
||||
item
|
||||
Command = ecPaste
|
||||
ShortCut = 16470
|
||||
end
|
||||
item
|
||||
Command = ecCut
|
||||
ShortCut = 16472
|
||||
end
|
||||
item
|
||||
Command = ecDeleteLine
|
||||
ShortCut = 16473
|
||||
end
|
||||
item
|
||||
Command = ecDeleteEOL
|
||||
ShortCut = 24665
|
||||
end
|
||||
item
|
||||
Command = ecUndo
|
||||
ShortCut = 16474
|
||||
end
|
||||
item
|
||||
Command = ecRedo
|
||||
ShortCut = 24666
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker0
|
||||
ShortCut = 16432
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker1
|
||||
ShortCut = 16433
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker2
|
||||
ShortCut = 16434
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker3
|
||||
ShortCut = 16435
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker4
|
||||
ShortCut = 16436
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker5
|
||||
ShortCut = 16437
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker6
|
||||
ShortCut = 16438
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker7
|
||||
ShortCut = 16439
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker8
|
||||
ShortCut = 16440
|
||||
end
|
||||
item
|
||||
Command = ecGotoMarker9
|
||||
ShortCut = 16441
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker0
|
||||
ShortCut = 24624
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker1
|
||||
ShortCut = 24625
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker2
|
||||
ShortCut = 24626
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker3
|
||||
ShortCut = 24627
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker4
|
||||
ShortCut = 24628
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker5
|
||||
ShortCut = 24629
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker6
|
||||
ShortCut = 24630
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker7
|
||||
ShortCut = 24631
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker8
|
||||
ShortCut = 24632
|
||||
end
|
||||
item
|
||||
Command = ecSetMarker9
|
||||
ShortCut = 24633
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41009
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel2
|
||||
ShortCut = 41010
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41011
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41012
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel1
|
||||
ShortCut = 41013
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel6
|
||||
ShortCut = 41014
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel7
|
||||
ShortCut = 41015
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel8
|
||||
ShortCut = 41016
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel9
|
||||
ShortCut = 41017
|
||||
end
|
||||
item
|
||||
Command = EcFoldLevel0
|
||||
ShortCut = 41008
|
||||
end
|
||||
item
|
||||
Command = EcFoldCurrent
|
||||
ShortCut = 41005
|
||||
end
|
||||
item
|
||||
Command = EcUnFoldCurrent
|
||||
ShortCut = 41003
|
||||
end
|
||||
item
|
||||
Command = EcToggleMarkupWord
|
||||
ShortCut = 32845
|
||||
end
|
||||
item
|
||||
Command = ecNormalSelect
|
||||
ShortCut = 24654
|
||||
end
|
||||
item
|
||||
Command = ecColumnSelect
|
||||
ShortCut = 24643
|
||||
end
|
||||
item
|
||||
Command = ecLineSelect
|
||||
ShortCut = 24652
|
||||
end
|
||||
item
|
||||
Command = ecTab
|
||||
ShortCut = 9
|
||||
end
|
||||
item
|
||||
Command = ecShiftTab
|
||||
ShortCut = 8201
|
||||
end
|
||||
item
|
||||
Command = ecMatchBracket
|
||||
ShortCut = 24642
|
||||
end
|
||||
item
|
||||
Command = ecColSelUp
|
||||
ShortCut = 40998
|
||||
end
|
||||
item
|
||||
Command = ecColSelDown
|
||||
ShortCut = 41000
|
||||
end
|
||||
item
|
||||
Command = ecColSelLeft
|
||||
ShortCut = 40997
|
||||
end
|
||||
item
|
||||
Command = ecColSelRight
|
||||
ShortCut = 40999
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageDown
|
||||
ShortCut = 40994
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageBottom
|
||||
ShortCut = 57378
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageUp
|
||||
ShortCut = 40993
|
||||
end
|
||||
item
|
||||
Command = ecColSelPageTop
|
||||
ShortCut = 57377
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineStart
|
||||
ShortCut = 40996
|
||||
end
|
||||
item
|
||||
Command = ecColSelLineEnd
|
||||
ShortCut = 40995
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorTop
|
||||
ShortCut = 57380
|
||||
end
|
||||
item
|
||||
Command = ecColSelEditorBottom
|
||||
ShortCut = 57379
|
||||
end>
|
||||
MouseActions = <>
|
||||
MouseTextActions = <>
|
||||
MouseSelActions = <>
|
||||
Lines.Strings = (
|
||||
'seEditor'
|
||||
)
|
||||
Options = [eoAutoIndent, eoBracketHighlight, eoEnhanceHomeKey, eoGroupUndo, eoScrollPastEol, eoSmartTabs, eoTabsToSpaces, eoTrimTrailingSpaces, eoAltSetsColumnMode]
|
||||
Options2 = [eoFoldedCopyPaste]
|
||||
MouseOptions = [emAltSetsColumnMode, emCtrlWheelZoom]
|
||||
VisibleSpecialChars = [vscSpace, vscTabAtLast]
|
||||
ReadOnly = True
|
||||
SelectedColor.BackPriority = 50
|
||||
SelectedColor.ForePriority = 50
|
||||
SelectedColor.FramePriority = 50
|
||||
SelectedColor.BoldPriority = 50
|
||||
SelectedColor.ItalicPriority = 50
|
||||
SelectedColor.UnderlinePriority = 50
|
||||
SelectedColor.StrikeOutPriority = 50
|
||||
BracketHighlightStyle = sbhsBoth
|
||||
BracketMatchColor.Background = clNone
|
||||
BracketMatchColor.Foreground = clNone
|
||||
BracketMatchColor.Style = [fsBold]
|
||||
FoldedCodeColor.Background = clNone
|
||||
FoldedCodeColor.Foreground = clGray
|
||||
FoldedCodeColor.FrameColor = clGray
|
||||
MouseLinkColor.Background = clNone
|
||||
MouseLinkColor.Foreground = clBlue
|
||||
LineHighlightColor.Background = clNone
|
||||
LineHighlightColor.Foreground = clNone
|
||||
inline SynLeftGutterPartList1: TSynGutterPartList
|
||||
object SynGutterMarks1: TSynGutterMarks
|
||||
Width = 27
|
||||
MouseActions = <>
|
||||
end
|
||||
object SynGutterLineNumber1: TSynGutterLineNumber
|
||||
Width = 15
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clBtnFace
|
||||
MarkupInfo.Foreground = clNone
|
||||
DigitCount = 2
|
||||
ShowOnlyLineNumbersMultiplesOf = 1
|
||||
ZeroStart = False
|
||||
LeadingZeros = False
|
||||
end
|
||||
object SynGutterChanges1: TSynGutterChanges
|
||||
Width = 5
|
||||
MouseActions = <>
|
||||
ModifiedColor = 59900
|
||||
SavedColor = clGreen
|
||||
end
|
||||
object SynGutterSeparator1: TSynGutterSeparator
|
||||
Width = 2
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clWhite
|
||||
MarkupInfo.Foreground = clGray
|
||||
end
|
||||
object SynGutterCodeFolding1: TSynGutterCodeFolding
|
||||
Width = 11
|
||||
MouseActions = <>
|
||||
MarkupInfo.Background = clNone
|
||||
MarkupInfo.Foreground = clGray
|
||||
MouseActionsExpanded = <>
|
||||
MouseActionsCollapsed = <>
|
||||
end
|
||||
end
|
||||
end
|
||||
object mmMainMenu: TMainMenu
|
||||
left = 342
|
||||
top = 162
|
||||
object mnuFile: TMenuItem
|
||||
Caption = '&File'
|
||||
object mnuUpdate: TMenuItem
|
||||
Caption = '&Update'
|
||||
ShortCut = 116
|
||||
OnClick = mnuUpdateClick
|
||||
end
|
||||
object mnuSep3: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuSaveAs: TMenuItem
|
||||
Caption = '&Enregistrer sous...'
|
||||
ShortCut = 16467
|
||||
OnClick = mnuSaveAsClick
|
||||
end
|
||||
object mnuSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuClose: TMenuItem
|
||||
Caption = '&Close'
|
||||
ShortCut = 16465
|
||||
ShortCutKey2 = 16472
|
||||
OnClick = mnuCloseClick
|
||||
end
|
||||
end
|
||||
object mnuEdit: TMenuItem
|
||||
Caption = '&Edit'
|
||||
object mnuSelectAll: TMenuItem
|
||||
Caption = '&Select all'
|
||||
ShortCut = 16449
|
||||
OnClick = mnuSelectAllClick
|
||||
end
|
||||
object mnuSep2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuCopy: TMenuItem
|
||||
Caption = '&Copy'
|
||||
ShortCut = 16451
|
||||
OnClick = mnuCopyClick
|
||||
end
|
||||
object mnuSep4: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuFont: TMenuItem
|
||||
Caption = '&Font...'
|
||||
OnClick = mnuFontClick
|
||||
end
|
||||
end
|
||||
end
|
||||
object dlgSave: TSaveDialog
|
||||
left = 504
|
||||
top = 162
|
||||
end
|
||||
object dlgFont: TFontDialog
|
||||
MinFontSize = 0
|
||||
MaxFontSize = 0
|
||||
Options = [fdEffects, fdFixedPitchOnly, fdForceFontExist]
|
||||
left = 423
|
||||
top = 162
|
||||
end
|
||||
object SynAnySyn: TSynAnySyn
|
||||
Enabled = False
|
||||
Comments = [csPasStyle]
|
||||
DetectPreprocessor = False
|
||||
IdentifierChars = '!"#$%&''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
|
||||
KeyAttri.Foreground = clMaroon
|
||||
NumberAttri.Foreground = clTeal
|
||||
StringAttri.Foreground = clGreen
|
||||
StringDelim = sdDoubleQuote
|
||||
Markup = False
|
||||
Entity = False
|
||||
DollarVariables = False
|
||||
ActiveDot = False
|
||||
left = 234
|
||||
top = 162
|
||||
end
|
||||
object pmEditor: TPopupMenu
|
||||
left = 504
|
||||
top = 99
|
||||
object mnuPopCopy: TMenuItem
|
||||
Caption = 'Copy'
|
||||
OnClick = mnuCopyClick
|
||||
end
|
||||
object mnuPopSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuPopSelectAll: TMenuItem
|
||||
Caption = 'Select all'
|
||||
OnClick = mnuSelectAllClick
|
||||
end
|
||||
end
|
||||
end
|
||||
194
spackgui/frmlogfile.pas
Normal file
194
spackgui/frmlogfile.pas
Normal file
@@ -0,0 +1,194 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2012-2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
logfile viewer
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmLogFile;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, SynEdit, SynHighlighterAny, Forms, Controls,
|
||||
Graphics, Dialogs, Menus;
|
||||
|
||||
type
|
||||
|
||||
{ TfLogView }
|
||||
|
||||
TfLogView = class(TForm)
|
||||
dlgFont: TFontDialog;
|
||||
mnuPopSelectAll: TMenuItem;
|
||||
mnuPopSep1: TMenuItem;
|
||||
mnuPopCopy: TMenuItem;
|
||||
mnuFont: TMenuItem;
|
||||
mnuSep4: TMenuItem;
|
||||
mnuUpdate: TMenuItem;
|
||||
mnuSep3: TMenuItem;
|
||||
mmMainMenu: TMainMenu;
|
||||
mnuCopy: TMenuItem;
|
||||
mnuSep2: TMenuItem;
|
||||
mnuSelectAll: TMenuItem;
|
||||
mnuEdit: TMenuItem;
|
||||
mnuClose: TMenuItem;
|
||||
mnuSep1: TMenuItem;
|
||||
mnuSaveAs: TMenuItem;
|
||||
mnuFile: TMenuItem;
|
||||
dlgSave: TSaveDialog;
|
||||
pmEditor: TPopupMenu;
|
||||
seEditor: TSynEdit;
|
||||
SynAnySyn: TSynAnySyn;
|
||||
procedure FormActivate(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure mnuCloseClick(Sender: TObject);
|
||||
procedure mnuCopyClick(Sender: TObject);
|
||||
procedure mnuFontClick(Sender: TObject);
|
||||
procedure mnuSaveAsClick(Sender: TObject);
|
||||
procedure mnuSelectAllClick(Sender: TObject);
|
||||
procedure mnuUpdateClick(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fLogView: TfLogView;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
uDebug, uIconManager, uCommon, uStrings;
|
||||
|
||||
{ TfLogView }
|
||||
|
||||
procedure TfLogView.mnuUpdateClick(Sender: TObject);
|
||||
var
|
||||
X, Y: Integer;
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoLoadingLogFile, [sLogFileName]), vlHigh);
|
||||
X := 0;
|
||||
Y := 0;
|
||||
if seEditor.Lines.Count <> 0 then
|
||||
begin
|
||||
X := seEditor.CaretX;
|
||||
Y := seEditor.CaretY;
|
||||
seEditor.ClearAll;
|
||||
end;
|
||||
Flush(tLogFile);
|
||||
seEditor.Lines.LoadFromFile(sLogFileName);
|
||||
seEditor.CaretX := X;
|
||||
seEditor.CaretY := Y;
|
||||
end;
|
||||
|
||||
procedure TfLogView.mnuSelectAllClick(Sender: TObject);
|
||||
begin
|
||||
seEditor.SelectAll;
|
||||
end;
|
||||
|
||||
procedure TfLogView.mnuCopyClick(Sender: TObject);
|
||||
begin
|
||||
seEditor.CopyToClipboard;
|
||||
end;
|
||||
|
||||
procedure TfLogView.mnuFontClick(Sender: TObject);
|
||||
begin
|
||||
dlgFont.Options := [fdEffects, fdFixedPitchOnly, fdForceFontExist];
|
||||
dlgFont.Font := seEditor.Font;
|
||||
if dlgFont.Execute then
|
||||
begin
|
||||
seEditor.Font := dlgFont.Font;
|
||||
iniMain.WriteString(Self.Name, rsConfNameLogFontName, seEditor.Font.Name);
|
||||
iniMain.WriteInteger(Self.Name, rsConfNameLogFontSize, seEditor.Font.Size);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfLogView.mnuCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfLogView.FormCreate(Sender: TObject);
|
||||
begin
|
||||
mmMainMenu.Images := ilDefault;
|
||||
mnuCopy.ImageIndex := icCopy;
|
||||
mnuClose.ImageIndex := icClose;
|
||||
mnuSaveAs.ImageIndex := icSave;
|
||||
mnuSelectAll.ImageIndex := icSelectAll;
|
||||
mnuUpdate.ImageIndex := icRefresh;
|
||||
mnuFont.ImageIndex := icFontSettings;
|
||||
LoadWindowGeometry(Self);
|
||||
seEditor.Font.Name := iniMain.ReadString(Self.Name, rsConfNameLogFontName,
|
||||
seEditor.Font.Name);
|
||||
seEditor.Font.Size := iniMain.ReadInteger(Self.Name, rsConfNameLogFontSize,
|
||||
seEditor.Font.Size);
|
||||
SynAnySyn.KeyWords.Add(rsBaseDebug);
|
||||
SynAnySyn.KeyWords.Add(rsBaseError);
|
||||
SynAnySyn.KeyWords.Add(rsBaseWarning);
|
||||
SynAnySyn.KeyWords.Add(rsBaseInfo);
|
||||
end;
|
||||
|
||||
procedure TfLogView.FormActivate(Sender: TObject);
|
||||
begin
|
||||
mnuUpdateClick(nil);
|
||||
end;
|
||||
|
||||
procedure TfLogView.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfLogView.mnuSaveAsClick(Sender: TObject);
|
||||
begin
|
||||
if dlgSave.Execute then
|
||||
seEditor.Lines.SaveToFile(dlgSave.FileName);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
441
spackgui/frmmain.lfm
Normal file
441
spackgui/frmmain.lfm
Normal file
@@ -0,0 +1,441 @@
|
||||
object fMain: TfMain
|
||||
Left = 3490
|
||||
Height = 560
|
||||
Top = 0
|
||||
Width = 921
|
||||
Caption = 'SPackGui'
|
||||
ClientHeight = 528
|
||||
ClientWidth = 921
|
||||
DesignTimePPI = 108
|
||||
Menu = mmMenu
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poDesktopCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object pnLeft: TPanel
|
||||
Left = 0
|
||||
Height = 503
|
||||
Top = 0
|
||||
Width = 225
|
||||
Align = alLeft
|
||||
BevelOuter = bvNone
|
||||
ClientHeight = 503
|
||||
ClientWidth = 225
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
object clbStates: TCheckListBox
|
||||
Left = 0
|
||||
Height = 150
|
||||
Top = 0
|
||||
Width = 225
|
||||
Align = alTop
|
||||
Items.Strings = (
|
||||
'Installed'
|
||||
'Not installed'
|
||||
'To upgrade'
|
||||
)
|
||||
ItemHeight = 26
|
||||
OnClickCheck = clbStatesClickCheck
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Data = {
|
||||
03000000000000
|
||||
}
|
||||
end
|
||||
object spHorizPanel: TSplitter
|
||||
Cursor = crVSplit
|
||||
Left = 0
|
||||
Height = 6
|
||||
Top = 150
|
||||
Width = 225
|
||||
Align = alTop
|
||||
ResizeAnchor = akTop
|
||||
end
|
||||
object tvPackageTree: TTreeView
|
||||
Left = 0
|
||||
Height = 347
|
||||
Top = 156
|
||||
Width = 225
|
||||
Align = alClient
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
OnClick = tvPackageTreeClick
|
||||
end
|
||||
end
|
||||
object spVertPanel: TSplitter
|
||||
Left = 225
|
||||
Height = 503
|
||||
Top = 0
|
||||
Width = 6
|
||||
end
|
||||
object lvPackageList: TListView
|
||||
Left = 231
|
||||
Height = 503
|
||||
Top = 0
|
||||
Width = 690
|
||||
Align = alClient
|
||||
AutoSort = False
|
||||
Columns = <
|
||||
item
|
||||
Caption = 'Package'
|
||||
Width = 169
|
||||
end
|
||||
item
|
||||
Caption = 'Version'
|
||||
Width = 101
|
||||
end
|
||||
item
|
||||
Caption = 'Last version'
|
||||
Width = 101
|
||||
end
|
||||
item
|
||||
Alignment = taRightJustify
|
||||
Caption = 'Size'
|
||||
Width = 101
|
||||
end
|
||||
item
|
||||
Alignment = taRightJustify
|
||||
Caption = 'Installed size'
|
||||
Width = 101
|
||||
end
|
||||
item
|
||||
Caption = 'Description'
|
||||
Width = 281
|
||||
end>
|
||||
GridLines = True
|
||||
MultiSelect = True
|
||||
ParentFont = False
|
||||
PopupMenu = pmPackageList
|
||||
RowSelect = True
|
||||
ScrollBars = ssAutoBoth
|
||||
SortType = stData
|
||||
TabOrder = 2
|
||||
ViewStyle = vsReport
|
||||
OnColumnClick = lvPackageListColumnClick
|
||||
OnCompare = lvPackageListCompare
|
||||
end
|
||||
object sbStatusBar: TStatusBar
|
||||
Left = 0
|
||||
Height = 25
|
||||
Top = 503
|
||||
Width = 921
|
||||
Panels = <>
|
||||
ParentFont = False
|
||||
end
|
||||
object mmMenu: TMainMenu
|
||||
left = 765
|
||||
top = 414
|
||||
object mnuFile: TMenuItem
|
||||
Caption = '&File'
|
||||
object mnuFileOpen: TMenuItem
|
||||
Action = acFileOpen
|
||||
end
|
||||
object mnuFileSave: TMenuItem
|
||||
Action = acFileSave
|
||||
end
|
||||
object mnuFileSaveAll: TMenuItem
|
||||
Action = acFileSaveAll
|
||||
end
|
||||
object mnuFileSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuFileShowLog: TMenuItem
|
||||
Action = acFileShowLog
|
||||
end
|
||||
object mnuFileSep2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuFileExit: TMenuItem
|
||||
Action = acFileExit
|
||||
end
|
||||
end
|
||||
object mnuEdit: TMenuItem
|
||||
Caption = '&Edit'
|
||||
object mnuEditCancel: TMenuItem
|
||||
Action = acEditCancel
|
||||
end
|
||||
object mnuEditApply: TMenuItem
|
||||
Action = acEditApply
|
||||
end
|
||||
object mnuEditSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuEditSearch: TMenuItem
|
||||
Action = acEditSearch
|
||||
end
|
||||
object mnuEditShowHistory: TMenuItem
|
||||
Action = acEditShowHistory
|
||||
end
|
||||
object mnuEditSep2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuEditReload: TMenuItem
|
||||
Action = acEditReload
|
||||
end
|
||||
end
|
||||
object mnuPackage: TMenuItem
|
||||
Caption = '&Package'
|
||||
object mnuPackageReinit: TMenuItem
|
||||
Action = acPackageReinit
|
||||
end
|
||||
object mnuPackageInstall: TMenuItem
|
||||
Action = acPackageInstall
|
||||
end
|
||||
object mnuPackageUpdate: TMenuItem
|
||||
Action = acPackageUpdate
|
||||
end
|
||||
object mnuPackageRemove: TMenuItem
|
||||
Action = acPackageRemove
|
||||
end
|
||||
object mnuPackageSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuPackageChooseVersion: TMenuItem
|
||||
Action = acPackageChooseVersion
|
||||
end
|
||||
object mnuPackageSep2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuPackageProperties: TMenuItem
|
||||
Action = acPackageProperties
|
||||
end
|
||||
end
|
||||
object mnuTools: TMenuItem
|
||||
Caption = '&Tools'
|
||||
object mnuToolsCheckConfFiles: TMenuItem
|
||||
Action = acToolsCheckConfFiles
|
||||
end
|
||||
object mnuToolsCheckDependencies: TMenuItem
|
||||
Action = acToolsCheckDeps
|
||||
end
|
||||
end
|
||||
object mnuConfig: TMenuItem
|
||||
Caption = '&Configuration'
|
||||
object mnuConfigEnvironment: TMenuItem
|
||||
Action = acConfigEnvironment
|
||||
end
|
||||
object mnuConfigDisplay: TMenuItem
|
||||
Action = acConfigDisplay
|
||||
end
|
||||
object mnuConfigRepositories: TMenuItem
|
||||
Action = acConfigRepositories
|
||||
end
|
||||
end
|
||||
object mnuHelp: TMenuItem
|
||||
Caption = '&Help'
|
||||
object mnuHelpManual: TMenuItem
|
||||
Action = acHelpManual
|
||||
end
|
||||
object mnuHelpSep1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuHelpBugReport: TMenuItem
|
||||
Action = acHelpBugReport
|
||||
end
|
||||
object mnuHelpSep2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuHelpAbout: TMenuItem
|
||||
Action = acHelpAbout
|
||||
end
|
||||
end
|
||||
object mnuDebug: TMenuItem
|
||||
Caption = 'Debug'
|
||||
object mnuDebugCreateException: TMenuItem
|
||||
Action = acDebugCreateException
|
||||
end
|
||||
object mnuDebugLogHeapStatus: TMenuItem
|
||||
Action = acDebugLogHeapStatus
|
||||
end
|
||||
object mnuLogDatabase: TMenuItem
|
||||
Caption = 'Log package database...'
|
||||
OnClick = mnuLogDatabaseClick
|
||||
end
|
||||
end
|
||||
end
|
||||
object acActionList: TActionList
|
||||
left = 693
|
||||
top = 414
|
||||
object acFileOpen: TAction
|
||||
Category = 'File'
|
||||
Caption = '&Open a package list...'
|
||||
Hint = 'Open a list of packages to install...'
|
||||
ShortCut = 16463
|
||||
end
|
||||
object acFileSave: TAction
|
||||
Category = 'File'
|
||||
Caption = '&Save a package list...'
|
||||
Hint = 'Allows to save a list of packges for deployment purposes...'
|
||||
ShortCut = 16467
|
||||
end
|
||||
object acFileSaveAll: TAction
|
||||
Category = 'File'
|
||||
Caption = 'Save list of &installed packages...'
|
||||
Hint = 'Save the list of installed packages, usefull for cloning purposes...'
|
||||
ShortCut = 24659
|
||||
end
|
||||
object acFileShowLog: TAction
|
||||
Category = 'File'
|
||||
Caption = 'Show &log...'
|
||||
Hint = 'Affichiche le journal des évènements, utile pour le déboguage'
|
||||
OnExecute = acFileShowLogExecute
|
||||
end
|
||||
object acFileExit: TAction
|
||||
Category = 'File'
|
||||
Caption = 'E&xit'
|
||||
Hint = 'Sort du programme (si des modifications n''ont pas été appliquées elles seront perdues)'
|
||||
OnExecute = acFileExitExecute
|
||||
ShortCut = 16465
|
||||
end
|
||||
object acEditCancel: TAction
|
||||
Category = 'Edit'
|
||||
Caption = '&Cancel changes'
|
||||
Hint = 'Cancel all change that have not been applied yet'
|
||||
ShortCut = 16474
|
||||
end
|
||||
object acEditApply: TAction
|
||||
Category = 'Edit'
|
||||
Caption = 'A&pply changes...'
|
||||
Hint = 'Apply asked modification to the system'
|
||||
ShortCut = 16452
|
||||
end
|
||||
object acEditSearch: TAction
|
||||
Category = 'Edit'
|
||||
Caption = '&Search...'
|
||||
Hint = 'Search packages following a set of criteria'
|
||||
OnExecute = acEditSearchExecute
|
||||
ShortCut = 16454
|
||||
end
|
||||
object acEditShowHistory: TAction
|
||||
Category = 'Edit'
|
||||
Caption = '&Display search history...'
|
||||
Hint = 'Display the list of search that have been made'
|
||||
end
|
||||
object acEditReload: TAction
|
||||
Category = 'Edit'
|
||||
Caption = 'Re&load package list'
|
||||
Hint = 'Download again indes files and reload package list'
|
||||
OnExecute = acEditReloadExecute
|
||||
ShortCut = 116
|
||||
end
|
||||
object acPackageReinit: TAction
|
||||
Category = 'Package'
|
||||
Caption = 'Reini&tialize'
|
||||
Hint = 'Reinstall selected packages'
|
||||
ShortCut = 16468
|
||||
end
|
||||
object acPackageInstall: TAction
|
||||
Category = 'Package'
|
||||
Caption = '&Install'
|
||||
Hint = 'Install selected packages'
|
||||
ShortCut = 16457
|
||||
end
|
||||
object acPackageUpdate: TAction
|
||||
Category = 'Package'
|
||||
Caption = '&Upgrade'
|
||||
Hint = 'Upgrade the selected packages'
|
||||
ShortCut = 16469
|
||||
end
|
||||
object acPackageRemove: TAction
|
||||
Category = 'Package'
|
||||
Caption = '&Remove'
|
||||
Hint = 'Uninstall the selected packages'
|
||||
ShortCut = 16466
|
||||
end
|
||||
object acPackageChooseVersion: TAction
|
||||
Category = 'Package'
|
||||
Caption = 'Choose &version...'
|
||||
Hint = 'Allows you to select the version of a package if several are available'
|
||||
end
|
||||
object acPackageProperties: TAction
|
||||
Category = 'Package'
|
||||
Caption = '&Properties...'
|
||||
Hint = 'Display informations aabout the selected package...'
|
||||
OnExecute = acPackagePropertiesExecute
|
||||
end
|
||||
object acConfigEnvironment: TAction
|
||||
Category = 'Config'
|
||||
Caption = '&Environment parameters...'
|
||||
Hint = 'Allow you to change some parameters relative to the environment'
|
||||
OnExecute = acConfigEnvironmentExecute
|
||||
end
|
||||
object acConfigDisplay: TAction
|
||||
Category = 'Config'
|
||||
Caption = 'Display parameters...'
|
||||
Hint = 'Allow you to change display to your taste...'
|
||||
OnExecute = acConfigDisplayExecute
|
||||
end
|
||||
object acConfigRepositories: TAction
|
||||
Category = 'Config'
|
||||
Caption = '&Package repositories...'
|
||||
Hint = 'Allow to change package repositories and choose default one...'
|
||||
OnExecute = acConfigRepositoriesExecute
|
||||
end
|
||||
object acHelpManual: TAction
|
||||
Category = 'Help'
|
||||
Caption = '&Manual'
|
||||
Hint = 'Display online manual in your web browser'
|
||||
ShortCut = 112
|
||||
end
|
||||
object acHelpBugReport: TAction
|
||||
Category = 'Help'
|
||||
Caption = 'Create a &bug repport...'
|
||||
Hint = 'Allow you to send a bug repport to developper'
|
||||
end
|
||||
object acHelpAbout: TAction
|
||||
Category = 'Help'
|
||||
Caption = '&About...'
|
||||
Hint = 'Display informations on the program...'
|
||||
OnExecute = acHelpAboutExecute
|
||||
end
|
||||
object acToolsCheckConfFiles: TAction
|
||||
Category = 'Tools'
|
||||
Caption = '&Update configuration files...'
|
||||
Hint = 'Permit to check if system configuration files are up-to-date'
|
||||
end
|
||||
object acToolsCheckDeps: TAction
|
||||
Category = 'Tools'
|
||||
Caption = 'Check &dependances...'
|
||||
Hint = 'Allow you to check dependencies consistency of the system'
|
||||
end
|
||||
object acDebugCreateException: TAction
|
||||
Category = 'Debug'
|
||||
Caption = 'Create an exception'
|
||||
OnExecute = acDebugCreateExceptionExecute
|
||||
end
|
||||
object acDebugLogHeapStatus: TAction
|
||||
Category = 'Debug'
|
||||
Caption = 'Log heap status'
|
||||
OnExecute = acDebugLogHeapStatusExecute
|
||||
end
|
||||
end
|
||||
object pmPackageList: TPopupMenu
|
||||
left = 837
|
||||
top = 414
|
||||
object mnuPackageListReinit: TMenuItem
|
||||
Action = acPackageReinit
|
||||
end
|
||||
object mnuPackageListInstall: TMenuItem
|
||||
Action = acPackageInstall
|
||||
end
|
||||
object mnuPackageListUpdate: TMenuItem
|
||||
Action = acPackageUpdate
|
||||
end
|
||||
object mnuPackageListRemove: TMenuItem
|
||||
Action = acPackageRemove
|
||||
end
|
||||
object mnuPackageListBar1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuPackageListChooseVersion: TMenuItem
|
||||
Action = acPackageChooseVersion
|
||||
end
|
||||
object mnuPackageListBar2: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object mnuPackageListProperties: TMenuItem
|
||||
Action = acPackageProperties
|
||||
end
|
||||
end
|
||||
end
|
||||
791
spackgui/frmmain.pas
Normal file
791
spackgui/frmmain.pas
Normal file
@@ -0,0 +1,791 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2012-2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
main window and program functionnalities
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmMain;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
Menus, ExtCtrls, CheckLst, ComCtrls, ActnList, uPackageManager, frmProgress,
|
||||
StdCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TfMain }
|
||||
|
||||
TfMain = class(TForm)
|
||||
acActionList: TActionList;
|
||||
acFileOpen: TAction;
|
||||
acFileSave: TAction;
|
||||
acFileSaveAll: TAction;
|
||||
acFileShowLog: TAction;
|
||||
acFileExit: TAction;
|
||||
acEditCancel: TAction;
|
||||
acEditApply: TAction;
|
||||
acEditSearch: TAction;
|
||||
acEditShowHistory: TAction;
|
||||
acEditReload: TAction;
|
||||
acPackageReinit: TAction;
|
||||
acPackageInstall: TAction;
|
||||
acPackageUpdate: TAction;
|
||||
acPackageRemove: TAction;
|
||||
acPackageChooseVersion: TAction;
|
||||
acPackageProperties: TAction;
|
||||
acConfigEnvironment: TAction;
|
||||
acConfigDisplay: TAction;
|
||||
acConfigRepositories: TAction;
|
||||
acHelpManual: TAction;
|
||||
acHelpBugReport: TAction;
|
||||
acHelpAbout: TAction;
|
||||
acDebugCreateException: TAction;
|
||||
acDebugLogHeapStatus: TAction;
|
||||
acToolsCheckDeps: TAction;
|
||||
acToolsCheckConfFiles: TAction;
|
||||
clbStates: TCheckListBox;
|
||||
lvPackageList: TListView;
|
||||
mnuLogDatabase: TMenuItem;
|
||||
mnuDebugLogHeapStatus: TMenuItem;
|
||||
mnuDebugCreateException: TMenuItem;
|
||||
mnuDebug: TMenuItem;
|
||||
mnuPackageListBar1: TMenuItem;
|
||||
mnuPackageListProperties: TMenuItem;
|
||||
mnuPackageListChooseVersion: TMenuItem;
|
||||
mnuPackageListBar2: TMenuItem;
|
||||
mnuPackageListRemove: TMenuItem;
|
||||
mnuPackageListReinit: TMenuItem;
|
||||
mnuPackageListInstall: TMenuItem;
|
||||
mnuPackageListUpdate: TMenuItem;
|
||||
mnuTools: TMenuItem;
|
||||
mnuToolsCheckConfFiles: TMenuItem;
|
||||
mnuToolsCheckDependencies: TMenuItem;
|
||||
mmMenu: TMainMenu;
|
||||
mnuFile: TMenuItem;
|
||||
mnuFileOpen: TMenuItem;
|
||||
mnuFileSave: TMenuItem;
|
||||
mnuFileSep2: TMenuItem;
|
||||
mnuFileShowLog: TMenuItem;
|
||||
mnuFileSaveAll: TMenuItem;
|
||||
mnuFileSep1: TMenuItem;
|
||||
mnuFileExit: TMenuItem;
|
||||
mnuEdit: TMenuItem;
|
||||
mnuEditCancel: TMenuItem;
|
||||
mnuEditSep1: TMenuItem;
|
||||
mnuEditSearch: TMenuItem;
|
||||
mnuEditShowHistory: TMenuItem;
|
||||
mnuEditSep2: TMenuItem;
|
||||
mnuEditReload: TMenuItem;
|
||||
mnuEditApply: TMenuItem;
|
||||
mnuPackage: TMenuItem;
|
||||
mnuPackageReinit: TMenuItem;
|
||||
mnuPackageInstall: TMenuItem;
|
||||
mnuPackageUpdate: TMenuItem;
|
||||
mnuPackageRemove: TMenuItem;
|
||||
mnuPackageChooseVersion: TMenuItem;
|
||||
mnuPackageSep1: TMenuItem;
|
||||
mnuPackageSep2: TMenuItem;
|
||||
mnuPackageProperties: TMenuItem;
|
||||
mnuConfig: TMenuItem;
|
||||
mnuConfigEnvironment: TMenuItem;
|
||||
mnuConfigRepositories: TMenuItem;
|
||||
mnuConfigDisplay: TMenuItem;
|
||||
mnuHelp: TMenuItem;
|
||||
mnuHelpManual: TMenuItem;
|
||||
mnuHelpSep1: TMenuItem;
|
||||
mnuHelpBugReport: TMenuItem;
|
||||
mnuHelpSep2: TMenuItem;
|
||||
mnuHelpAbout: TMenuItem;
|
||||
pnLeft: TPanel;
|
||||
pmPackageList: TPopupMenu;
|
||||
spVertPanel: TSplitter;
|
||||
spHorizPanel: TSplitter;
|
||||
sbStatusBar: TStatusBar;
|
||||
tvPackageTree: TTreeView;
|
||||
PackageList: TPackageList;
|
||||
procedure acConfigDisplayExecute(Sender: TObject);
|
||||
procedure acConfigEnvironmentExecute(Sender: TObject);
|
||||
procedure acConfigRepositoriesExecute(Sender: TObject);
|
||||
procedure acDebugCreateExceptionExecute(Sender: TObject);
|
||||
procedure acDebugLogHeapStatusExecute(Sender: TObject);
|
||||
procedure acEditReloadExecute(Sender: TObject);
|
||||
procedure acEditSearchExecute(Sender: TObject);
|
||||
procedure acFileExitExecute(Sender: TObject);
|
||||
procedure acFileShowLogExecute(Sender: TObject);
|
||||
procedure acHelpAboutExecute(Sender: TObject);
|
||||
procedure acPackagePropertiesExecute(Sender: TObject);
|
||||
procedure clbStatesClickCheck(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure lvPackageListColumnClick(Sender: TObject; Column: TListColumn);
|
||||
procedure lvPackageListCompare(Sender: TObject; Item1, Item2: TListItem;
|
||||
Data: Integer; var Compare: Integer);
|
||||
procedure lvPackageListCustomDrawItem(Sender: TCustomListView;
|
||||
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
|
||||
procedure mnuLogDatabaseClick(Sender: TObject);
|
||||
procedure tvPackageTreeClick(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
FLastSortedColumn: Integer;
|
||||
FAscending: Boolean;
|
||||
FRootNode: TTreeNode;
|
||||
FUncategorised: TTreeNode;
|
||||
FSelectedCat: string;
|
||||
procedure AssignIcons;
|
||||
procedure SaveExtraParams;
|
||||
procedure LoadExtraParams;
|
||||
procedure InitRepo;
|
||||
procedure LoadPackages(const AUpdate: Boolean);
|
||||
procedure CreateBaseNodes;
|
||||
procedure AddCategory(const Cat: string; var AParent: TTreeNode);
|
||||
public
|
||||
fProgress: TfProgress;
|
||||
function CompareSize(const S1, S2: string): Integer;
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fMain: TfMain;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
frmLogFile, LCLType, frmAbout, uIconManager, uDebug, uCommon,
|
||||
uUtils, frmEnvironementSettings, frmRepoSettings, uStrings, uSpackPackage,
|
||||
frmPackageProperty, frmSearch, frmDisplaySettings, uListViewColors;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
procedure DoProgress(const Min, Max, Pos: LongInt; const Msg: string);
|
||||
begin
|
||||
if Assigned(fMain.fProgress) then
|
||||
begin
|
||||
fMain.fProgress.ProgressBar2.Position := Pos;
|
||||
//if Msg <> '' then
|
||||
// fMain.fProgress.lbProgressionMessage.Caption := Msg; //that is slow
|
||||
end;
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
|
||||
{ TfMain }
|
||||
|
||||
procedure TfMain.AssignIcons;
|
||||
begin
|
||||
acFileOpen.ImageIndex := icOpen;
|
||||
acFileSave.ImageIndex := icSave;
|
||||
acFileSaveAll.ImageIndex := icSaveAll;
|
||||
acEditApply.ImageIndex := icApply;
|
||||
acEditCancel.ImageIndex := icUndo;
|
||||
acEditSearch.ImageIndex := icSearch;
|
||||
acEditReload.ImageIndex := icRefresh;
|
||||
acFileExit.ImageIndex := icExit;
|
||||
acPackageProperties.ImageIndex := icProperties;
|
||||
acConfigEnvironment.ImageIndex := icSettings;
|
||||
acConfigDisplay.ImageIndex := icDisplay;
|
||||
acConfigRepositories.ImageIndex := icRepository;
|
||||
acHelpAbout.ImageIndex := icAbout;
|
||||
acHelpBugReport.ImageIndex := icReportBug;
|
||||
acHelpManual.ImageIndex := icManual;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.SaveExtraParams;
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
for I := 0 to lvPackageList.ColumnCount - 1 do
|
||||
iniMain.WriteInteger(Self.Name, rsConfNameListViewColumn + IntToStr(I),
|
||||
lvPackageList.Column[I].Width);
|
||||
iniMain.WriteInteger(Self.Name, rsConfNameHorizPanelLeft, pnLeft.Width);
|
||||
iniMain.WriteInteger(Self.Name, rsConfNameVertPanelTop,
|
||||
clbStates.Height);
|
||||
iniMain.WriteInteger(Self.Name, rsConfNameSortColumn, FLastSortedColumn);
|
||||
iniMain.WriteBool(Self.Name, rsConfNameSortAscending, FAscending);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.LoadExtraParams;
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
for I := 0 to lvPackageList.ColumnCount - 1 do
|
||||
lvPackageList.Column[I].Width := iniMain.ReadInteger(Self.Name,
|
||||
rsConfNameListViewColumn + IntToStr(I), lvPackageList.Column[I].Width);
|
||||
pnLeft.Width := iniMain.ReadInteger(Self.Name, rsConfNameHorizPanelLeft,
|
||||
pnLeft.Width);
|
||||
clbStates.Height := iniMain.ReadInteger(Self.Name,
|
||||
rsConfNameVertPanelTop, clbStates.Height);
|
||||
FLastSortedColumn := iniMain.ReadInteger(Self.Name, rsConfNameSortColumn, 0);
|
||||
FAscending := iniMain.ReadBool(Self.Name, rsConfNameSortAscending, True);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.LoadPackages(const AUpdate: Boolean);
|
||||
var
|
||||
I, J, N, D: Integer;
|
||||
LI: TListItem;
|
||||
begin
|
||||
//cleanning
|
||||
if lvPackageList.Items.Count > 0 then
|
||||
lvPackageList.Clear;
|
||||
//activating this is not allowing to sort anymore
|
||||
//lvPackageList.OwnerData := not bNoColors;
|
||||
if PackageList.InstPackageLoaded then
|
||||
begin
|
||||
Cursor := crHourGlass;
|
||||
lvPackageList.BeginUpdate;
|
||||
for I := 0 to PackageList.Count - 1 do
|
||||
begin
|
||||
if not AUpdate then
|
||||
DoProgress(0, PackageList.Count - 1, I, rsProgressTidyPackageList);
|
||||
// always add category
|
||||
try
|
||||
if (PackageList.Packages[I].Cat <> '') and (not AUpdate) then
|
||||
AddCategory(PackageList.Packages[I].Cat, FRootNode);
|
||||
except
|
||||
ShowMessage('Error adding ' + PackageList.Packages[I].Cat + ' category.');
|
||||
end;
|
||||
// skip if not in selected cat
|
||||
if ((FSelectedCat <> '/') and
|
||||
(Pos(FSelectedCat, PackageList.Packages[I].Cat) <> 1)) or
|
||||
((PackageList.Packages[I].Cat = '') and (FSelectedCat <> '')) then
|
||||
Continue;
|
||||
// skip if not in the right state
|
||||
if ((psInstalled in PackageList.Packages[I].State) and
|
||||
(not clbStates.Checked[0])) or
|
||||
((not (psInstalled in PackageList.Packages[I].State)) and
|
||||
(not clbStates.Checked[1])) or
|
||||
((psUpdatable in PackageList.Packages[I].State) and
|
||||
(not clbStates.Checked[2])) then
|
||||
Continue;
|
||||
LI := lvPackageList.Items.Add;
|
||||
if PackageList.Packages[I].Name = '' then
|
||||
raise Exception.Create(rsExceptUnnamedPackage);
|
||||
LI.Data := PackageList.Packages[I];
|
||||
LI.Caption := PackageList.Packages[I].Name;
|
||||
for J := 0 to 4 do
|
||||
LI.SubItems.Add('');
|
||||
N := PackageList.Packages[I].GetInstalled;
|
||||
D := PackageList.Packages[I].GetDefaultVer;
|
||||
if D = 0 then
|
||||
D := PackageList.Packages[I].GetLatest;
|
||||
if N <> 0 then
|
||||
begin
|
||||
LI.SubItems[0] := PackageList.Packages[I].Alternatives[N].Version +
|
||||
'-' + IntToStr(PackageList.Packages[I].Alternatives[N].Build);
|
||||
if PackageList.Packages[I].Alternatives[N].Size <> 0 then
|
||||
LI.SubItems[2] := DispSize(PackageList.Packages[I].Alternatives[N].Size);
|
||||
LI.SubItems[3] := DispSize(PackageList.Packages[I].InstSize);
|
||||
LI.SubItems[4] := PackageList.Packages[I].Desc;
|
||||
end else
|
||||
begin
|
||||
LI.SubItems[0] := '';
|
||||
LI.SubItems[2] := '';
|
||||
LI.SubItems[4] := rsDescNotInstalledPackage;
|
||||
end;
|
||||
if D <> 0 then
|
||||
begin
|
||||
LI.SubItems[1] := PackageList.Packages[I].Alternatives[D].Version +
|
||||
'-' + IntToStr(PackageList.Packages[I].Alternatives[D].Build);
|
||||
if PackageList.Packages[I].Alternatives[D].Size <> 0 then
|
||||
LI.SubItems[2] := DispSize(PackageList.Packages[I].Alternatives[D].Size);
|
||||
end else
|
||||
begin
|
||||
LI.SubItems[1] := '';
|
||||
LI.SubItems[3] := '';
|
||||
end;
|
||||
end;
|
||||
Cursor := crArrow;
|
||||
lvPackageList.ScrollBy(0, 0);
|
||||
lvPackageList.EndUpdate;
|
||||
end else
|
||||
begin
|
||||
PrintLnDbg(Format(rsErrorNoPackage, [PackageList.InstPackageDir]), vlLow);
|
||||
MessageDlg(rsNoPackageFound, mtError, [MBOK], 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.InitRepo;
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
LoadRepoSettings;
|
||||
for I := 0 to slRepoList.Count - 1 do
|
||||
begin
|
||||
if (Pos(sHttpPrefix, slRepoList[I]) > 0) or
|
||||
(Pos(sFtpPrefix, slRepoList[I]) > 0) then
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoAddingDistantRepo, [slRepoList[I]]), vlLow);
|
||||
PackageList.DistantRepoList.Add(slRepoList[I])
|
||||
end else
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoAddingLocalRepo, [slRepoList[I]]), vlLow);
|
||||
PackageList.LocalRepoList.Add(slRepoList[I]);
|
||||
end;
|
||||
//does the following really make sense?
|
||||
//clbStates.AddItem(Copy(slRepoList[I], 1,
|
||||
// Pos('=', slRepoList[I]) - 1), nil);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.CreateBaseNodes;
|
||||
begin
|
||||
FRootNode := tvPackageTree.Items.AddFirst(nil, rsAllPackages);
|
||||
FRootNode.Focused := True;
|
||||
FUncategorised := tvPackageTree.Items.AddChild(FRootNode, rsUncategorized);
|
||||
FUncategorised.MakeVisible;
|
||||
FRootNode.Expanded := True;
|
||||
FSelectedCat := '/';
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.AddCategory(const Cat: string; var AParent: TTreeNode);
|
||||
var
|
||||
Node: TTreeNode;
|
||||
S1, S2: string;
|
||||
I: Integer;
|
||||
begin
|
||||
if AParent = nil then
|
||||
AParent := FRootNode;
|
||||
if Pos('/', Cat) > 1 then
|
||||
begin
|
||||
S1 := Copy(Cat, 1, Pos('/', Cat) - 1);
|
||||
S2 := Copy(Cat, Pos('/', Cat) + 1, Length(Cat) - Pos('/', Cat));
|
||||
end else
|
||||
begin
|
||||
S1 := Cat;
|
||||
S2 := '';
|
||||
end;
|
||||
Node := nil;
|
||||
for I := 0 to AParent.Count - 1 do
|
||||
if AParent.Items[I].Text = S1 then
|
||||
Node := AParent.Items[I];
|
||||
if Node = nil then
|
||||
begin
|
||||
PrintLnDbg(Format(rsDebugNodeAdded, [S1, AParent.Text]));
|
||||
Node := tvPackageTree.Items.AddChild(AParent, S1);
|
||||
Node.MakeVisible;
|
||||
Node.Parent.Expanded := True;
|
||||
end;
|
||||
if S2 <> '' then
|
||||
AddCategory(S2, Node); // recursive...
|
||||
Node.AlphaSort;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.FormCreate(Sender: TObject);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
{$IFDEF DEBUG}
|
||||
mnuDebug.Visible := True;
|
||||
{$ELSE}
|
||||
mnuDebug.Visible := False;
|
||||
{$ENDIF}
|
||||
FLastSortedColumn := -1;
|
||||
FAscending := True;
|
||||
PackageList := TPackageList.Create;
|
||||
mmMenu.Images := ilDefault;
|
||||
pmPackageList.Images := ilDefault;
|
||||
acActionList.Images := ilDefault;
|
||||
LoadWindowGeometry(Self);
|
||||
AssignIcons;
|
||||
InitBtnGlyphs(Self);
|
||||
LoadColors;
|
||||
LoadExtraParams;
|
||||
InitRepo;
|
||||
CreateBaseNodes;
|
||||
for I := 0 to clbStates.Count - 1 do
|
||||
clbStates.Checked[I] := True;
|
||||
lvPackageList.GridLines := bShowGrig;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.FormShow(Sender: TObject);
|
||||
begin
|
||||
acEditReloadExecute(nil);
|
||||
//lvPackageListColumnClick(lvPackageList,
|
||||
// lvPackageList.Column[FLastSortedColumn]);
|
||||
tvPackageTree.ScrollBy(0, 0);
|
||||
tvPackageTree.Selected := FRootNode;
|
||||
lvPackageList.SortColumn := FLastSortedColumn;
|
||||
lvPackageList.SortType := stData;
|
||||
end;
|
||||
|
||||
|
||||
function TfMain.CompareSize(const S1, S2: string): Integer;
|
||||
var
|
||||
N1, N2: LongInt;
|
||||
begin //that solution looks weird but is quite faster that looking into database
|
||||
N1 := SizeStrToInt(S1);
|
||||
N2 := SizeStrToInt(S2);
|
||||
Result := 0;
|
||||
if N1 > N2 then
|
||||
Result := 1
|
||||
else
|
||||
if N1 < N2 then
|
||||
Result := -1;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.lvPackageListColumnClick(Sender: TObject; Column: TListColumn);
|
||||
begin
|
||||
TListView(Sender).SortType := stNone;
|
||||
if Column.Index = FLastSortedColumn then
|
||||
FAscending := not FAscending
|
||||
else
|
||||
begin
|
||||
FLastSortedColumn := Column.Index;
|
||||
FAscending := True;
|
||||
end;
|
||||
lvPackageList.SortColumn := Column.Index;
|
||||
TListView(Sender).SortType := stData;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.lvPackageListCompare(Sender: TObject; Item1, Item2: TListItem;
|
||||
Data: Integer; var Compare: Integer);
|
||||
begin
|
||||
case FLastSortedColumn of
|
||||
0: Compare := AnsiCompareText(Item1.Caption, Item2.Caption); //pkgname
|
||||
1: Compare := CompareVersion(Item1.SubItems[0], Item2.SubItems[0]); //installed version
|
||||
2: Compare := CompareVersion(Item1.SubItems[1], Item2.SubItems[1]); //last version
|
||||
3: Compare := CompareSize(Item1.SubItems[2], Item2.SubItems[2]); //pkgsize
|
||||
4: Compare := CompareSize(Item1.SubItems[3], Item2.SubItems[3]); //installed size
|
||||
5: Compare := AnsiCompareText(Item1.SubItems[4], Item2.SubItems[4]); //description
|
||||
end;
|
||||
if not FAscending then
|
||||
Compare := -Compare;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.lvPackageListCustomDrawItem(Sender: TCustomListView;
|
||||
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
|
||||
var
|
||||
FontCol, BGCol: TColor;
|
||||
begin
|
||||
if bNoColors then
|
||||
begin
|
||||
inherited;
|
||||
Exit;
|
||||
end;
|
||||
GetColorFromState(TSPackPackage(Item.Data).State, FontCol, BGCol);
|
||||
Sender.Brush.Color := BGCol;
|
||||
Sender.Canvas.Font.Color := FontCol;
|
||||
Sender.Canvas.Refresh;
|
||||
inherited;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.mnuLogDatabaseClick(Sender: TObject);
|
||||
var
|
||||
SL: TStringList;
|
||||
I, J, N, P, L: Integer;
|
||||
S: string;
|
||||
begin
|
||||
SL := TStringList.Create;
|
||||
SL.Add(rsInfoStartLoggingDb);
|
||||
for I := 0 to PackageList.Count - 1 do
|
||||
begin
|
||||
SL.Add(Format(rsLogNewPackage, [PackageList.Packages[I].Cat,
|
||||
PackageList.Packages[I].Name]));
|
||||
SL.Add(Format(rsLogDescription, [PackageList.Packages[I].Desc]));
|
||||
N := PackageList.Packages[I].GetInstalled;
|
||||
P := PackageList.Packages[I].GetDefaultVer;
|
||||
L := PackageList.Packages[I].GetLatest;
|
||||
for J := 1 to MaxPackAlt do
|
||||
if PackageList.Packages[I].Alternatives[J].Version <> '' then
|
||||
begin
|
||||
S := Format(rsLogPackageAlt, [J,
|
||||
PackageList.Packages[I].Alternatives[J].Version,
|
||||
PackageList.Packages[I].Alternatives[J].Build,
|
||||
DispSize(PackageList.Packages[I].Alternatives[J].Size),
|
||||
PackageList.Packages[I].Alternatives[J].SourceAddress]);
|
||||
if N = J then
|
||||
S := S + rsLogInstalled;
|
||||
if P = J then
|
||||
S := S + rsLogDefault;
|
||||
if L = J then
|
||||
S := S + rsLogLatest;
|
||||
SL.Add(S);
|
||||
end;
|
||||
SL.Add(rsLogSep);
|
||||
end;
|
||||
PrintLnDbg(SL, vlFull);
|
||||
PrintLnDbg(rsInfoEndLoggingDb, vlFull);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.tvPackageTreeClick(Sender: TObject);
|
||||
var
|
||||
Node: TTreeNode;
|
||||
begin
|
||||
lvPackageList.SortType := stNone;
|
||||
if tvPackageTree.Selected = FRootNode then
|
||||
FSelectedCat := '/'
|
||||
else
|
||||
if tvPackageTree.Selected = FUncategorised then
|
||||
FSelectedCat := ''
|
||||
else
|
||||
begin
|
||||
FSelectedCat := '';
|
||||
Node := tvPackageTree.Selected;
|
||||
while Node <> FRootNode do
|
||||
begin
|
||||
FSelectedCat := Node.Text + '/' + FSelectedCat;
|
||||
Node := Node.Parent;
|
||||
end;
|
||||
FSelectedCat := Copy(FSelectedCat, 1, Length(FSelectedCat) - 1);
|
||||
end;
|
||||
PrintLnDbg(Format(rsDebugDisplayingCategory, [FSelectedCat]));
|
||||
LoadPackages(True);
|
||||
lvPackageList.SortColumn := FLastSortedColumn;
|
||||
lvPackageList.SortType := stData;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acHelpAboutExecute(Sender: TObject);
|
||||
begin
|
||||
with TfAbout.Create(Application) do
|
||||
try
|
||||
ShowModal;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acPackagePropertiesExecute(Sender: TObject);
|
||||
begin
|
||||
if lvPackageList.Selected = nil then
|
||||
Exit;
|
||||
with TfPackageProperty.Create(Application) do
|
||||
try
|
||||
Self.Cursor := crHourGlass;
|
||||
Application.ProcessMessages;
|
||||
LoadPackageInfo(lvPackageList.Selected.Caption);
|
||||
Self.Cursor := crArrow;
|
||||
ShowModal;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.clbStatesClickCheck(Sender: TObject);
|
||||
begin
|
||||
lvPackageList.SortType := stData;
|
||||
LoadPackages(True);
|
||||
lvPackageList.SortColumn := FLastSortedColumn;
|
||||
lvPackageList.SortType := stData;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
SaveExtraParams;
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acFileExitExecute(Sender: TObject);
|
||||
begin
|
||||
Application.Terminate;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acFileShowLogExecute(Sender: TObject);
|
||||
begin
|
||||
if sLogFileName = '' then
|
||||
Exit;
|
||||
if (fLogView = nil) or (not Assigned(fLogView)) then
|
||||
begin
|
||||
PrintLnDbg(rsInfoShowingLogWin, vlHigh);
|
||||
fLogView := TfLogView.Create(Application);
|
||||
fLogView.Show;
|
||||
end else
|
||||
if not fLogView.Visible then
|
||||
fLogView.Show;
|
||||
fLogView.SetFocus;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acEditReloadExecute(Sender: TObject);
|
||||
var
|
||||
Steps, I: Integer;
|
||||
begin
|
||||
try
|
||||
if (PackageList = nil) or (not Assigned(PackageList)) then
|
||||
PackageList := TPackageList.Create
|
||||
else
|
||||
PackageList.Clear;
|
||||
Cursor := crHourGlass;
|
||||
Steps := 2 + PackageList.LocalRepoList.Count + PackageList.DistantRepoList.Count;
|
||||
if PackageList.InstPackageDir = '' then
|
||||
PackageList.InstPackageDir := sDefaultSpackPkgDir;
|
||||
fProgress := CreateProgress(rsProgressLoading, rsProgressInitDB,
|
||||
rsProgressReadingInstalled, 0, Steps, 0, PackageList.GetInstalledCount);
|
||||
PackageList.OnProgress := @DoProgress;
|
||||
fProgress.CanCancel := False;
|
||||
fProgress.ShowOnTop;
|
||||
Application.ProcessMessages;
|
||||
try
|
||||
PackageList.GetInstalledPackages;
|
||||
finally
|
||||
fProgress.ProgressBar.Position := fProgress.ProgressBar.Position + 1;
|
||||
fProgress.lbProgressionMessage2.Caption := rsProgressReadingLocal;
|
||||
fProgress.ProgressBar2.Position := 0;
|
||||
end;
|
||||
Application.ProcessMessages;
|
||||
try
|
||||
PackageList.LoadLocalRepo;
|
||||
finally
|
||||
fProgress.ProgressBar.Position := fProgress.ProgressBar.Position + 1;
|
||||
fProgress.lbProgressionMessage2.Caption := rsProgressDownloadingIndex;
|
||||
fProgress.ProgressBar2.Position := 0;
|
||||
end;
|
||||
Application.ProcessMessages;
|
||||
try
|
||||
PackageList.DownloadDistantRepo;
|
||||
finally
|
||||
fProgress.ProgressBar.Position := fProgress.ProgressBar.Position + 1;
|
||||
fProgress.lbProgressionMessage2.Caption := rsProgressReadingDistant;
|
||||
fProgress.ProgressBar2.Position := 0;
|
||||
end;
|
||||
Application.ProcessMessages;
|
||||
for I := 0 to slRepoList.Count - 1 do
|
||||
if (Pos(sHttpPrefix, slRepoList[I]) - Pos('=', slRepoList[I]) = 1) or
|
||||
(Pos(sFtpPrefix, slRepoList[I]) - Pos('=', slRepoList[I]) = 1) then
|
||||
try
|
||||
PackageList.LoadDistantRepo(Copy(slRepoList[I], 1,
|
||||
Pos('=', slRepoList[I]) - 1));
|
||||
finally
|
||||
fProgress.ProgressBar.Position := fProgress.ProgressBar.Position + 1;
|
||||
end;
|
||||
fProgress.lbProgressionMessage2.Caption := rsProgressTidyPackageList;
|
||||
fProgress.ProgressBar2.Position := 0;
|
||||
Application.ProcessMessages;
|
||||
Cursor := crArrow;
|
||||
finally
|
||||
PackageList.SetDeprecated(slDeprecated);
|
||||
LoadPackages(False);
|
||||
fProgress.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acEditSearchExecute(Sender: TObject);
|
||||
begin
|
||||
with TfSearch.Create(Application) do
|
||||
try
|
||||
ShowModal;
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acConfigRepositoriesExecute(Sender: TObject);
|
||||
begin
|
||||
with TfRepoSettings.Create(Application) do
|
||||
try
|
||||
if (ShowModal = mrOK) and RepoChanged then
|
||||
if MessageDlg(rsReloadPackagesAfterRepoChange, mtConfirmation,
|
||||
mbYesNo, 0) = mrYes then
|
||||
acEditReloadExecute(nil);
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acDebugCreateExceptionExecute(Sender: TObject);
|
||||
begin
|
||||
raise
|
||||
Exception.Create(rsExceptTest);
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acDebugLogHeapStatusExecute(Sender: TObject);
|
||||
begin
|
||||
PrintLnDbg(GetHeapStatus(SysGetHeapStatus));
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acConfigEnvironmentExecute(Sender: TObject);
|
||||
begin
|
||||
with TfEnvironmentSettings.Create(Application) do
|
||||
try
|
||||
if (ShowModal = mrOK) and PathChanged then
|
||||
if MessageDlg(rsReloadPackagesAfterEnvChange, mtConfirmation,
|
||||
mbYesNo, 0) = mrYes then
|
||||
acEditReloadExecute(nil);
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TfMain.acConfigDisplayExecute(Sender: TObject);
|
||||
begin
|
||||
with TfDisplaySettings.Create(Application) do
|
||||
try
|
||||
if ShowModal = mrOK then
|
||||
LoadPackages(True);
|
||||
finally
|
||||
Free;
|
||||
lvPackageList.GridLines := bShowGrig;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
379
spackgui/frmpackageproperty.lfm
Normal file
379
spackgui/frmpackageproperty.lfm
Normal file
@@ -0,0 +1,379 @@
|
||||
object fPackageProperty: TfPackageProperty
|
||||
Left = 3660
|
||||
Height = 540
|
||||
Top = 832
|
||||
Width = 658
|
||||
Caption = 'Properties'
|
||||
ClientHeight = 540
|
||||
ClientWidth = 658
|
||||
Constraints.MinHeight = 540
|
||||
Constraints.MinWidth = 658
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
LCLVersion = '1.9.0.0'
|
||||
object lbPackageName: TLabel
|
||||
Left = 16
|
||||
Height = 25
|
||||
Top = 18
|
||||
Width = 135
|
||||
Caption = 'lbPackageName'
|
||||
Font.Height = -19
|
||||
Font.Style = [fsBold]
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnClose: TBitBtn
|
||||
Tag = -1
|
||||
Left = 471
|
||||
Height = 34
|
||||
Top = 490
|
||||
Width = 171
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'Close'
|
||||
OnClick = btnCloseClick
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object pcMain: TPageControl
|
||||
Left = 16
|
||||
Height = 396
|
||||
Top = 81
|
||||
Width = 626
|
||||
ActivePage = tsProperties
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
ParentFont = False
|
||||
TabIndex = 0
|
||||
TabOrder = 1
|
||||
object tsProperties: TTabSheet
|
||||
Caption = '&Properties'
|
||||
ClientHeight = 361
|
||||
ClientWidth = 618
|
||||
Font.Color = clCaptionText
|
||||
ParentFont = False
|
||||
object Label1: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 36
|
||||
Caption = 'State:'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object Label2: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 61
|
||||
Width = 107
|
||||
Caption = 'Installed version:'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object Label3: TLabel
|
||||
Left = 311
|
||||
Height = 20
|
||||
Top = 44
|
||||
Width = 180
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Size of the installed package:'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object Label4: TLabel
|
||||
Left = 329
|
||||
Height = 20
|
||||
Top = 70
|
||||
Width = 162
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Size of the unpacked files:'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbState: TLabel
|
||||
Left = 151
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 45
|
||||
Caption = 'lbState'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbVersion: TLabel
|
||||
Left = 151
|
||||
Height = 20
|
||||
Top = 61
|
||||
Width = 59
|
||||
Caption = 'lbVersion'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbPackageSize: TLabel
|
||||
Left = 518
|
||||
Height = 20
|
||||
Top = 44
|
||||
Width = 89
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'lbPackageSize'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbInstalledSize: TLabel
|
||||
Left = 515
|
||||
Height = 20
|
||||
Top = 70
|
||||
Width = 92
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'lbInstalledSize'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object Label5: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 97
|
||||
Width = 232
|
||||
Caption = '&Available versions in the repositories:'
|
||||
FocusControl = lvFileList
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lvVersionList: TListView
|
||||
Left = 16
|
||||
Height = 225
|
||||
Top = 124
|
||||
Width = 591
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Columns = <
|
||||
item
|
||||
Caption = 'Repository'
|
||||
Width = 169
|
||||
end
|
||||
item
|
||||
Caption = 'Version'
|
||||
Width = 135
|
||||
end
|
||||
item
|
||||
Caption = 'Size'
|
||||
Width = 79
|
||||
end
|
||||
item
|
||||
Caption = 'URL'
|
||||
Width = 562
|
||||
end>
|
||||
Font.Color = clCaptionText
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
RowSelect = True
|
||||
TabOrder = 0
|
||||
ViewStyle = vsReport
|
||||
end
|
||||
object lbState1: TLabel
|
||||
Left = 151
|
||||
Height = 20
|
||||
Top = 34
|
||||
Width = 52
|
||||
Caption = 'lbState2'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object Label8: TLabel
|
||||
Left = 431
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 60
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Category:'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object lbCategory: TLabel
|
||||
Left = 538
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 69
|
||||
Alignment = taRightJustify
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'lbCategory'
|
||||
Font.Color = clCaptionText
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
object tsFileList: TTabSheet
|
||||
Caption = ' &File list'
|
||||
ClientHeight = 361
|
||||
ClientWidth = 618
|
||||
ParentFont = False
|
||||
object lvFileList: TListView
|
||||
Left = 9
|
||||
Height = 306
|
||||
Top = 7
|
||||
Width = 600
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Columns = <
|
||||
item
|
||||
Caption = 'Name'
|
||||
Width = 450
|
||||
end
|
||||
item
|
||||
Alignment = taRightJustify
|
||||
Caption = 'Size'
|
||||
Width = 123
|
||||
end>
|
||||
ParentFont = False
|
||||
ReadOnly = True
|
||||
RowSelect = True
|
||||
SortType = stText
|
||||
TabOrder = 0
|
||||
ViewStyle = vsReport
|
||||
end
|
||||
object btnGetFileSizes: TBitBtn
|
||||
Left = 9
|
||||
Height = 34
|
||||
Top = 321
|
||||
Width = 600
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
Caption = 'Get files size'
|
||||
OnClick = btnGetFileSizesClick
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
end
|
||||
object tsMore: TTabSheet
|
||||
Caption = 'More information'
|
||||
ClientHeight = 361
|
||||
ClientWidth = 618
|
||||
ParentFont = False
|
||||
object btnGoogle: TButton
|
||||
Left = 48
|
||||
Height = 34
|
||||
Top = 52
|
||||
Width = 246
|
||||
Caption = '&Google'
|
||||
OnClick = btnGoogleClick
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object Label6: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 16
|
||||
Width = 340
|
||||
Caption = 'Display additionnal informations on the package from:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnLFS: TButton
|
||||
Left = 317
|
||||
Height = 34
|
||||
Top = 241
|
||||
Width = 246
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Linux from scratch'
|
||||
OnClick = btnLFSClick
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object btnArch: TButton
|
||||
Left = 48
|
||||
Height = 34
|
||||
Top = 313
|
||||
Width = 246
|
||||
Caption = '&Arch Linux'
|
||||
OnClick = btnArchClick
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnDebianPackages: TButton
|
||||
Left = 317
|
||||
Height = 34
|
||||
Top = 277
|
||||
Width = 246
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Debian Packages'
|
||||
OnClick = btnDebianPackagesClick
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnWikipedia: TButton
|
||||
Left = 317
|
||||
Height = 34
|
||||
Top = 52
|
||||
Width = 246
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Wikipedia'
|
||||
OnClick = btnWikipediaClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnGentoo: TButton
|
||||
Left = 48
|
||||
Height = 34
|
||||
Top = 277
|
||||
Width = 246
|
||||
Caption = '&Gentoo / Funtoo'
|
||||
OnClick = btnGentooClick
|
||||
ParentFont = False
|
||||
TabOrder = 5
|
||||
end
|
||||
object Label7: TLabel
|
||||
Left = 16
|
||||
Height = 117
|
||||
Top = 112
|
||||
Width = 582
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
AutoSize = False
|
||||
Caption = 'You can also access to other website from other distributions through this interface, as informative purpose. You may notice that Ninjo is very different from those distribution on many points.'#10#10'Thus, dependencies information and even functionnalities of those package very different from what you see in Ninjo:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
WordWrap = True
|
||||
end
|
||||
object btnSlackware: TButton
|
||||
Left = 48
|
||||
Height = 34
|
||||
Top = 241
|
||||
Width = 246
|
||||
Caption = '&Slackware Linux'
|
||||
OnClick = btnSlackwareClick
|
||||
ParentFont = False
|
||||
TabOrder = 6
|
||||
end
|
||||
object btnDebianPatchTracker: TButton
|
||||
Left = 317
|
||||
Height = 34
|
||||
Top = 313
|
||||
Width = 246
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Debian Patch Tracker'
|
||||
OnClick = btnDebianPatchTrackerClick
|
||||
ParentFont = False
|
||||
TabOrder = 7
|
||||
end
|
||||
end
|
||||
end
|
||||
object lbDescription: TLabel
|
||||
Left = 16
|
||||
Height = 20
|
||||
Top = 53
|
||||
Width = 84
|
||||
Caption = 'lbDescription'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
end
|
||||
305
spackgui/frmpackageproperty.pas
Normal file
305
spackgui/frmpackageproperty.pas
Normal file
@@ -0,0 +1,305 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
form showing packages details
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmPackageProperty;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
Buttons, ComCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TfPackageProperty }
|
||||
|
||||
TfPackageProperty = class(TForm)
|
||||
btnDebianPatchTracker: TButton;
|
||||
btnGetFileSizes: TBitBtn;
|
||||
btnGoogle: TButton;
|
||||
btnLFS: TButton;
|
||||
btnArch: TButton;
|
||||
btnDebianPackages: TButton;
|
||||
btnSlackware: TButton;
|
||||
btnWikipedia: TButton;
|
||||
btnGentoo: TButton;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
Label4: TLabel;
|
||||
Label5: TLabel;
|
||||
Label6: TLabel;
|
||||
Label7: TLabel;
|
||||
Label8: TLabel;
|
||||
lbCategory: TLabel;
|
||||
lbDescription: TLabel;
|
||||
lbInstalledSize: TLabel;
|
||||
lbPackageSize: TLabel;
|
||||
lbState1: TLabel;
|
||||
lbVersion: TLabel;
|
||||
lbState: TLabel;
|
||||
lbPackageName: TLabel;
|
||||
btnClose: TBitBtn;
|
||||
lvVersionList: TListView;
|
||||
lvFileList: TListView;
|
||||
pcMain: TPageControl;
|
||||
tsMore: TTabSheet;
|
||||
tsFileList: TTabSheet;
|
||||
tsProperties: TTabSheet;
|
||||
procedure btnArchClick(Sender: TObject);
|
||||
procedure btnDebianPackagesClick(Sender: TObject);
|
||||
procedure btnDebianPatchTrackerClick(Sender: TObject);
|
||||
procedure btnGentooClick(Sender: TObject);
|
||||
procedure btnGetFileSizesClick(Sender: TObject);
|
||||
procedure btnCloseClick(Sender: TObject);
|
||||
procedure btnGoogleClick(Sender: TObject);
|
||||
procedure btnLFSClick(Sender: TObject);
|
||||
procedure btnSlackwareClick(Sender: TObject);
|
||||
procedure btnWikipediaClick(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
{ public declarations }
|
||||
procedure LoadPackageInfo(const S: string);
|
||||
end;
|
||||
|
||||
var
|
||||
fPackageProperty: TfPackageProperty;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
uses
|
||||
uSpackPackage, frmMain, uCommon, uIconManager, uDebug, uStrings, uDownload,
|
||||
uUtils, BaseUnix;
|
||||
|
||||
{ TfPackageProperty }
|
||||
|
||||
procedure TfPackageProperty.LoadPackageInfo(const S: string);
|
||||
var
|
||||
I, J, Def, Inst: Integer;
|
||||
LI: TListItem;
|
||||
Available: Boolean;
|
||||
FName: string;
|
||||
Dwl: TDownloader;
|
||||
FList: TStringList;
|
||||
Pkg: TSPackPackage;
|
||||
begin
|
||||
PrintLnDbg(Format(rsInfoShowingPackageInfo, [S]), vlLow);
|
||||
Available := False;
|
||||
Pkg := fMain.PackageList.GetPkgFromName(S);
|
||||
lbPackageName.Caption := Pkg.Name;
|
||||
lbDescription.Caption := Pkg.Desc;
|
||||
lbCategory.Caption := Pkg.Cat;
|
||||
Inst := Pkg.GetInstalled;
|
||||
Def := Pkg.GetDefaultVer;
|
||||
if Inst <> 0 then
|
||||
begin
|
||||
lbVersion.Caption := Pkg.Alternatives[Inst].Version + '-' +
|
||||
IntToStr(Pkg.Alternatives[Inst].Build);
|
||||
lbInstalledSize.Caption := DispSize(Pkg.InstSize);
|
||||
lbPackageSize.Caption := DispSize(Pkg.Alternatives[Inst].Size);
|
||||
FList := Pkg.LoadFileList(fMain.PackageList.InstPackageDir);
|
||||
for I := 0 to FList.Count - 1 do
|
||||
begin
|
||||
if FList[I] = './' then
|
||||
Continue;
|
||||
FName := FList[I];
|
||||
if FName[1] <> '/' then
|
||||
FName := '/' + FName;
|
||||
LI := lvFileList.Items.Add;
|
||||
LI.Caption := FName;
|
||||
end;
|
||||
FList.Free;
|
||||
end else
|
||||
lbDescription.Caption := rsDescNotInstalledPackage;
|
||||
for I := 1 to MaxPackAlt do
|
||||
if (not Pkg.Alternatives[I].Installed) and
|
||||
(Pkg.Alternatives[I].Version <> '') then
|
||||
begin
|
||||
Available := True;
|
||||
LI := lvVersionList.Items.Add;
|
||||
for J := 0 to slRepoList.Count - 1 do
|
||||
if Pos(Pkg.Alternatives[I].SourceAddress, slRepoList[J]) <> 0 then
|
||||
LI.Caption := Copy(slRepoList[J], 1, Pos('=', slRepoList[J]) - 1);
|
||||
LI.SubItems.Add(Pkg.Alternatives[I].Version + '-' +
|
||||
IntToStr(Pkg.Alternatives[I].Build));
|
||||
LI.SubItems.Add(DispSize(Pkg.Alternatives[I].Size));
|
||||
LI.SubItems.Add(Pkg.Alternatives[I].SourceAddress);
|
||||
if (Pos(sHttpPrefix, Pkg.Alternatives[I].SourceAddress) <> 0) or
|
||||
(Pos(sFtpPrefix, Pkg.Alternatives[I].SourceAddress) <> 0) then
|
||||
begin
|
||||
Dwl := TDownloader.Create;
|
||||
Dwl.URL := Pkg.Alternatives[I].SourceAddress + '/' + Pkg.Cat + '/' +
|
||||
Pkg.Name + '-' + Pkg.Alternatives[I].Version + '-' + sArch + '-' +
|
||||
IntToStr(Pkg.Alternatives[I].Build) + LowerCase(rsSpackExt);
|
||||
if bUnitsAreDecimal then
|
||||
LI.SubItems[1] := DispSize(Dwl.FileSize)
|
||||
else
|
||||
LI.SubItems[1] := DispSize(Dwl.FileSize);
|
||||
Dwl.Free;
|
||||
end else
|
||||
LI.SubItems.Add(DispSize(Pkg.Alternatives[I].Size));
|
||||
end;
|
||||
if psInstalled in Pkg.State then
|
||||
lbState.Caption := rsStateInstalled
|
||||
else
|
||||
begin
|
||||
lbState.Caption := rsStateNotInstalled;
|
||||
lbState1.Caption := ''; //overload upgradable status
|
||||
end;
|
||||
if Available then
|
||||
lbState.Caption := lbState.Caption + ', ' + rsStateAvailable;
|
||||
if psDeprecated in Pkg.State then
|
||||
lbState1.Caption := rsStateDeprecated
|
||||
else
|
||||
if psUpdatable in Pkg.State then
|
||||
lbState1.Caption := Format(rsStateUpgradable,
|
||||
[Pkg.Alternatives[Pkg.GetDefaultVer].Version]);
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnGoogleClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsGoogleSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnLFSClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(rsLFSSearch + lbPackageName.Caption);
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnSlackwareClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsSlackwareSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnWikipediaClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsWikipediaSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnDebianPackagesClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsDebianSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnDebianPatchTrackerClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsDebianPatchTracker, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnGentooClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsGentooSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnArchClick(Sender: TObject);
|
||||
begin
|
||||
OpenURL(Format(rsArchSearch, [lbPackageName.Caption]));
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.btnGetFileSizesClick(Sender: TObject);
|
||||
var
|
||||
I: Integer;
|
||||
FStat: stat;
|
||||
begin
|
||||
for I := 0 to lvFileList.Items.Count - 1 do
|
||||
begin
|
||||
if lvFileList.Items[I].SubItems.Count = 0 then
|
||||
lvFileList.Items[I].SubItems.Add('');
|
||||
if FileExists(lvFileList.Items[I].Caption) then
|
||||
begin
|
||||
FpStat(lvFileList.Items[I].Caption, FStat);
|
||||
if FStat.st_mode = S_IFLNK then
|
||||
lvFileList.Items[I].SubItems[0] := rsSymlink
|
||||
else
|
||||
if (FStat.st_mode = S_IFDIR) or
|
||||
(DirectoryExists(lvFileList.Items[I].Caption)) then
|
||||
lvFileList.Items[I].SubItems[0] := rsDirectory
|
||||
else
|
||||
lvFileList.Items[I].SubItems[0] := DispSize(FileSize(lvFileList.Items[I].Caption));
|
||||
end else
|
||||
lvFileList.Items[I].SubItems[0] := rsNotFound;
|
||||
Application.ProcessMessages;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfPackageProperty.FormCreate(Sender: TObject);
|
||||
begin
|
||||
pcMain.ActivePageIndex := 0;
|
||||
btnClose.Tag := icClose;
|
||||
btnGetFileSizes.Tag := icRefresh;
|
||||
LoadWindowGeometry(Self);
|
||||
InitBtnGlyphs(Self);
|
||||
lbPackageName.Caption := rsUnknowPackage;
|
||||
lbDescription.Caption := '';
|
||||
lbState.Caption := rsStateNotInstalled;
|
||||
lbVersion.Caption := rsStateNotInstalled;
|
||||
lbPackageSize.Caption := DispSize(0);
|
||||
lbInstalledSize.Caption := DispSize(0);
|
||||
lbState1.Caption := '';
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
|
||||
139
spackgui/frmreposettings.lfm
Normal file
139
spackgui/frmreposettings.lfm
Normal file
@@ -0,0 +1,139 @@
|
||||
object fRepoSettings: TfRepoSettings
|
||||
Left = 4349
|
||||
Height = 304
|
||||
Top = 724
|
||||
Width = 722
|
||||
BorderIcons = [biSystemMenu, biMaximize]
|
||||
Caption = 'Repositories configuration'
|
||||
ClientHeight = 304
|
||||
ClientWidth = 722
|
||||
Constraints.MinHeight = 259
|
||||
Constraints.MinWidth = 434
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCloseQuery = FormCloseQuery
|
||||
OnCreate = FormCreate
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object btnCancel: TBitBtn
|
||||
Tag = 23
|
||||
Left = 587
|
||||
Height = 34
|
||||
Top = 259
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Cancel = True
|
||||
Caption = 'Cancel'
|
||||
ModalResult = 2
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object btnOk: TBitBtn
|
||||
Tag = 22
|
||||
Left = 454
|
||||
Height = 34
|
||||
Top = 259
|
||||
Width = 120
|
||||
Anchors = [akRight, akBottom]
|
||||
Caption = 'OK'
|
||||
Default = True
|
||||
ModalResult = 1
|
||||
OnClick = btnOkClick
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object lvRepoList: TListView
|
||||
Left = 9
|
||||
Height = 175
|
||||
Top = 32
|
||||
Width = 565
|
||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||
Columns = <
|
||||
item
|
||||
Caption = 'Name'
|
||||
Width = 112
|
||||
end
|
||||
item
|
||||
AutoSize = True
|
||||
Caption = 'Address'
|
||||
Width = 112
|
||||
end
|
||||
item
|
||||
Caption = 'Description'
|
||||
Width = 374
|
||||
end>
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
ViewStyle = vsReport
|
||||
OnClick = lvRepoListClick
|
||||
end
|
||||
object lbList: TLabel
|
||||
Left = 9
|
||||
Height = 20
|
||||
Top = 9
|
||||
Width = 177
|
||||
Caption = '&List configured repositories:'
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object btnAdd: TBitBtn
|
||||
Tag = -1
|
||||
Left = 587
|
||||
Height = 34
|
||||
Top = 32
|
||||
Width = 120
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&New...'
|
||||
OnClick = btnAddClick
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object btnChange: TBitBtn
|
||||
Tag = -1
|
||||
Left = 587
|
||||
Height = 34
|
||||
Top = 77
|
||||
Width = 120
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Change...'
|
||||
OnClick = btnChangeClick
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
object btnDelete: TBitBtn
|
||||
Tag = -1
|
||||
Left = 587
|
||||
Height = 34
|
||||
Top = 122
|
||||
Width = 120
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = '&Remove'
|
||||
OnClick = btnDeleteClick
|
||||
ParentFont = False
|
||||
TabOrder = 5
|
||||
end
|
||||
object lbDefaultRepo: TLabel
|
||||
Left = 18
|
||||
Height = 20
|
||||
Top = 223
|
||||
Width = 117
|
||||
Anchors = [akLeft, akBottom]
|
||||
Caption = '&Default repository:'
|
||||
FocusControl = cbDefaultRepo
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object cbDefaultRepo: TComboBox
|
||||
Left = 162
|
||||
Height = 34
|
||||
Top = 216
|
||||
Width = 412
|
||||
Anchors = [akLeft, akRight, akBottom]
|
||||
ItemHeight = 20
|
||||
OnChange = cbDefaultRepoChange
|
||||
ParentFont = False
|
||||
Style = csDropDownList
|
||||
TabOrder = 6
|
||||
end
|
||||
end
|
||||
253
spackgui/frmreposettings.pas
Normal file
253
spackgui/frmreposettings.pas
Normal file
@@ -0,0 +1,253 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
configuration dialog for repositories
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
unit frmRepoSettings;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Buttons,
|
||||
ComCtrls, StdCtrls;
|
||||
|
||||
type
|
||||
|
||||
{ TfRepoSettings }
|
||||
|
||||
TfRepoSettings = class(TForm)
|
||||
btnChange: TBitBtn;
|
||||
btnDelete: TBitBtn;
|
||||
btnAdd: TBitBtn;
|
||||
btnCancel: TBitBtn;
|
||||
btnOk: TBitBtn;
|
||||
cbDefaultRepo: TComboBox;
|
||||
lbDefaultRepo: TLabel;
|
||||
lbList: TLabel;
|
||||
lvRepoList: TListView;
|
||||
procedure btnAddClick(Sender: TObject);
|
||||
procedure btnChangeClick(Sender: TObject);
|
||||
procedure btnDeleteClick(Sender: TObject);
|
||||
procedure btnOkClick(Sender: TObject);
|
||||
procedure cbDefaultRepoChange(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure lvRepoListClick(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
FChange: Boolean;
|
||||
procedure PopulateDefaultList;
|
||||
public
|
||||
{ public declarations }
|
||||
RepoChanged: Boolean;
|
||||
end;
|
||||
|
||||
var
|
||||
fRepoSettings: TfRepoSettings;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
frmAddChangeRepo, uStrings, uCommon, uIconManager, uDebug;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfRepoSettings }
|
||||
|
||||
procedure TfRepoSettings.PopulateDefaultList;
|
||||
var
|
||||
I, N: Integer;
|
||||
begin
|
||||
cbDefaultRepo.Items.Clear;
|
||||
for I := 0 to lvRepoList.Items.Count - 1 do
|
||||
begin
|
||||
N := cbDefaultRepo.Items.Add(lvRepoList.Items[I].Caption);
|
||||
if cbDefaultRepo.Items[N] = sDefaultRepo then
|
||||
cbDefaultRepo.Caption := cbDefaultRepo.Items[N];
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.btnAddClick(Sender: TObject);
|
||||
var
|
||||
LI: TListItem;
|
||||
I: Integer;
|
||||
begin
|
||||
with TfAddChangeRepo.Create(Self) do
|
||||
try
|
||||
Caption := rsNewRepo;
|
||||
edName.Text := '';
|
||||
edAddress.Text := '';
|
||||
edComment.Text := '';
|
||||
if ShowModal = mrOK then
|
||||
begin
|
||||
for I := 0 to lvRepoList.Items.Count - 1 do
|
||||
if lvRepoList.Items[I].Caption = Trim(edName.Text) then
|
||||
MessageDlg(rsError, rsErrorDuplicateRepoName, mtError, [mbOK], 0);
|
||||
LI := lvRepoList.Items.Add;
|
||||
LI.Caption := Trim(edName.Text);
|
||||
LI.SubItems.Add(Trim(edAddress.Text));
|
||||
LI.SubItems.Add(Trim(edComment.Text));
|
||||
FChange := True;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
PopulateDefaultList;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.btnChangeClick(Sender: TObject);
|
||||
begin
|
||||
if lvRepoList.SelCount <> 1 then
|
||||
Exit;
|
||||
with TfAddChangeRepo.Create(Self) do
|
||||
try
|
||||
Caption := rsChangeRepo;
|
||||
edName.Text := lvRepoList.Selected.Caption;
|
||||
edAddress.Text := lvRepoList.Selected.SubItems[0];
|
||||
edComment.Text := iniRepo.ReadString(lvRepoList.Selected.Caption,
|
||||
rsConfNameRepoDesc, '');
|
||||
if ShowModal = mrOK then
|
||||
begin
|
||||
lvRepoList.Selected.Caption := edName.Text;
|
||||
lvRepoList.Selected.SubItems[0] := edAddress.Text;
|
||||
lvRepoList.Selected.SubItems[1] := edComment.Text;
|
||||
FChange := True;
|
||||
end;
|
||||
finally
|
||||
Free;
|
||||
PopulateDefaultList;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.btnDeleteClick(Sender: TObject);
|
||||
begin
|
||||
if lvRepoList.SelCount = 1 then
|
||||
lvRepoList.Selected.Delete;
|
||||
lvRepoListClick(Sender);
|
||||
FChange := True;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.btnOkClick(Sender: TObject);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
slRepoList.Clear;
|
||||
for I := 0 to lvRepoList.Items.Count - 1 do
|
||||
slRepoList.Add(lvRepoList.Items[I].Caption + '=' +
|
||||
lvRepoList.Items[I].SubItems[0]);
|
||||
sDefaultRepo := cbDefaultRepo.Caption;
|
||||
SaveRepoSettings;
|
||||
for I := 0 to lvRepoList.Items.Count - 1 do
|
||||
iniRepo.WriteString(lvRepoList.Items[I].Caption, rsConfNameRepoDesc,
|
||||
lvRepoList.Items[I].SubItems[1]);
|
||||
RepoChanged := FChange;
|
||||
FChange := False;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.cbDefaultRepoChange(Sender: TObject);
|
||||
begin
|
||||
FChange := True;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.FormClose(Sender: TObject;
|
||||
var CloseAction: TCloseAction);
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.FormCloseQuery(Sender: TObject; var CanClose: boolean);
|
||||
begin
|
||||
CanClose := not FChange;
|
||||
if FChange then
|
||||
CanClose := MessageDlg(rsWarning, rsLooseRepoChanges, mtWarning,
|
||||
[mbYes, mbNo], 0) = mrYes;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.FormCreate(Sender: TObject);
|
||||
var
|
||||
I, N: Integer;
|
||||
LI: TListItem;
|
||||
begin
|
||||
FChange := False;
|
||||
btnAdd.Tag := icAdd;
|
||||
btnChange.Tag := icChange;
|
||||
btnDelete.Tag := icDelete;
|
||||
btnOk.Tag := icOk;
|
||||
btnCancel.Tag := icCancel;
|
||||
LoadWindowGeometry(Self);
|
||||
InitBtnGlyphs(Self);
|
||||
LoadRepoSettings;
|
||||
for I := 0 to slRepoList.Count - 1 do
|
||||
begin
|
||||
N := Pos('=', slRepoList[I]);
|
||||
LI := lvRepoList.Items.Add;
|
||||
LI.Caption := Copy(slRepoList[I], 1, N - 1);
|
||||
LI.SubItems.Add(Copy(slRepoList[I], N + 1, Length(slRepoList[I]) - N));
|
||||
LI.SubItems.Add(iniRepo.ReadString(Copy(slRepoList[I], 1, N - 1),
|
||||
rsConfNameRepoDesc, ''));
|
||||
end;
|
||||
PopulateDefaultList;
|
||||
lvRepoListClick(nil);
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.FormShow(Sender: TObject);
|
||||
begin
|
||||
lvRepoList.SortColumn := 0;
|
||||
lvRepoList.SortDirection := sdAscending;
|
||||
lvRepoList.SortType := stText;
|
||||
end;
|
||||
|
||||
procedure TfRepoSettings.lvRepoListClick(Sender: TObject);
|
||||
begin
|
||||
btnChange.Enabled := lvRepoList.SelCount = 1;
|
||||
btnDelete.Enabled := lvRepoList.SelCount = 1;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
168
spackgui/frmsearch.lfm
Normal file
168
spackgui/frmsearch.lfm
Normal file
@@ -0,0 +1,168 @@
|
||||
object fSearch: TfSearch
|
||||
Left = 4359
|
||||
Height = 232
|
||||
Top = 1092
|
||||
Width = 612
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Research'
|
||||
ClientHeight = 232
|
||||
ClientWidth = 612
|
||||
DesignTimePPI = 108
|
||||
OnClose = FormClose
|
||||
OnCreate = FormCreate
|
||||
OnDestroy = FormDestroy
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '1.9.0.0'
|
||||
object lbSearch: TLabel
|
||||
Left = 17
|
||||
Height = 20
|
||||
Top = 18
|
||||
Width = 90
|
||||
Caption = '&Text to search:'
|
||||
FocusControl = cbxSearch
|
||||
ParentColor = False
|
||||
ParentFont = False
|
||||
end
|
||||
object cbxSearch: TComboBox
|
||||
Left = 168
|
||||
Height = 34
|
||||
Top = 14
|
||||
Width = 434
|
||||
Anchors = [akTop, akLeft, akRight]
|
||||
ItemHeight = 26
|
||||
OnChange = cbxSearchChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
Text = 'cbxSearch'
|
||||
end
|
||||
object gbOptions: TGroupBox
|
||||
Left = 17
|
||||
Height = 120
|
||||
Top = 51
|
||||
Width = 235
|
||||
Caption = 'Options'
|
||||
ClientHeight = 88
|
||||
ClientWidth = 231
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
object ckbWholeWord: TCheckBox
|
||||
Left = 14
|
||||
Height = 24
|
||||
Top = 3
|
||||
Width = 131
|
||||
Caption = '&Entire word only'
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object ckbCaseSensitive: TCheckBox
|
||||
Left = 14
|
||||
Height = 24
|
||||
Top = 29
|
||||
Width = 116
|
||||
Caption = 'Case sensitive'
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object ckbRegExpr: TCheckBox
|
||||
Left = 14
|
||||
Height = 24
|
||||
Top = 56
|
||||
Width = 153
|
||||
Caption = '&Regular expressions'
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnRegExprHelp: TButton
|
||||
Left = 178
|
||||
Height = 24
|
||||
Top = 57
|
||||
Width = 28
|
||||
Caption = '?'
|
||||
OnClick = btnRegExprHelpClick
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
end
|
||||
object btnClose: TBitBtn
|
||||
Left = 442
|
||||
Height = 34
|
||||
Top = 189
|
||||
Width = 160
|
||||
Anchors = [akTop, akRight]
|
||||
Cancel = True
|
||||
Caption = 'Close'
|
||||
OnClick = btnCloseClick
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object btnSearch: TBitBtn
|
||||
Left = 261
|
||||
Height = 34
|
||||
Top = 189
|
||||
Width = 160
|
||||
Anchors = [akTop, akRight]
|
||||
Caption = 'Search'
|
||||
Default = True
|
||||
OnClick = btnSearchClick
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object gbWhere: TGroupBox
|
||||
Left = 270
|
||||
Height = 120
|
||||
Top = 51
|
||||
Width = 332
|
||||
Caption = 'Chercher dans'
|
||||
ClientHeight = 88
|
||||
ClientWidth = 328
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
object ckbPackageName: TCheckBox
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 15
|
||||
Width = 119
|
||||
Caption = 'Package &name'
|
||||
OnClick = cbxSearchChange
|
||||
ParentFont = False
|
||||
TabOrder = 0
|
||||
end
|
||||
object ckbDescription: TCheckBox
|
||||
Left = 16
|
||||
Height = 24
|
||||
Top = 47
|
||||
Width = 100
|
||||
Caption = '&Description'
|
||||
OnClick = cbxSearchChange
|
||||
ParentFont = False
|
||||
TabOrder = 1
|
||||
end
|
||||
object ckbInstalled: TCheckBox
|
||||
Left = 178
|
||||
Height = 24
|
||||
Top = 3
|
||||
Width = 82
|
||||
Caption = '&Installed'
|
||||
ParentFont = False
|
||||
TabOrder = 2
|
||||
end
|
||||
object ckbNotInstalle: TCheckBox
|
||||
Left = 178
|
||||
Height = 24
|
||||
Top = 29
|
||||
Width = 105
|
||||
Caption = '&Not installet'
|
||||
ParentFont = False
|
||||
TabOrder = 3
|
||||
end
|
||||
object ckbToUpgrade: TCheckBox
|
||||
Left = 178
|
||||
Height = 24
|
||||
Top = 56
|
||||
Width = 99
|
||||
Caption = 'To &upgrade'
|
||||
ParentFont = False
|
||||
TabOrder = 4
|
||||
end
|
||||
end
|
||||
end
|
||||
293
spackgui/frmsearch.pas
Normal file
293
spackgui/frmsearch.pas
Normal file
@@ -0,0 +1,293 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2012-2013 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://www.geoffray-levasseur.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
search dialog
|
||||
|
||||
}
|
||||
unit frmSearch;
|
||||
|
||||
{$mode objfpc}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
||||
Buttons, ComCtrls, uCommon, uSpackPackage;
|
||||
|
||||
type
|
||||
|
||||
{ TfSearch }
|
||||
|
||||
TfSearch = class(TForm)
|
||||
btnClose: TBitBtn;
|
||||
btnSearch: TBitBtn;
|
||||
btnRegExprHelp: TButton;
|
||||
cbxSearch: TComboBox;
|
||||
ckbToUpgrade: TCheckBox;
|
||||
ckbNotInstalle: TCheckBox;
|
||||
ckbInstalled: TCheckBox;
|
||||
ckbDescription: TCheckBox;
|
||||
ckbPackageName: TCheckBox;
|
||||
ckbWholeWord: TCheckBox;
|
||||
ckbCaseSensitive: TCheckBox;
|
||||
ckbRegExpr: TCheckBox;
|
||||
gbOptions: TGroupBox;
|
||||
gbWhere: TGroupBox;
|
||||
lbSearch: TLabel;
|
||||
procedure btnCloseClick(Sender: TObject);
|
||||
procedure btnRegExprHelpClick(Sender: TObject);
|
||||
procedure btnSearchClick(Sender: TObject);
|
||||
procedure cbxSearchChange(Sender: TObject);
|
||||
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure lvSearchResultChange(Sender: TObject; Item: TListItem; Change: TItemChange);
|
||||
procedure lvSearchResultColumnClick(Sender: TObject; Column: TListColumn);
|
||||
procedure lvSearchResultCompare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
|
||||
private
|
||||
{ private declarations }
|
||||
FSearchTerms: TStringList;
|
||||
FLastSortedColumn: Integer;
|
||||
FAscending: Boolean;
|
||||
procedure ParseString(const Str: string);
|
||||
procedure SearchTerm(const Pkg: TSPackPackage);
|
||||
function TestField(const ASearch, AField: string): Boolean;
|
||||
public
|
||||
{ public declarations }
|
||||
end;
|
||||
|
||||
var
|
||||
fSearch: TfSearch;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
LCLType, uStrings, frmMain, uIconManager, uDebug;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfSearch }
|
||||
|
||||
procedure TfSearch.ParseString(const Str: string);
|
||||
var
|
||||
I, N: Integer;
|
||||
InBrace: Boolean;
|
||||
begin
|
||||
if Length(Str) < 1 then
|
||||
Exit; //cannot parse an empty string
|
||||
FSearchTerms.Clear;
|
||||
N := FSearchTerms.Add('');
|
||||
InBrace := False;
|
||||
for I := 1 to Length(Str) do
|
||||
begin
|
||||
if (Str[I] = '"') and ckbRegExpr.Checked then
|
||||
begin
|
||||
InBrace := not InBrace;
|
||||
Continue;
|
||||
end;
|
||||
if (Str[I] = ' ') and (not InBrace) then
|
||||
if FSearchTerms[N] <> '' then //in case of several successive spaces
|
||||
N := FSearchTerms.Add('')
|
||||
else
|
||||
else
|
||||
FSearchTerms[N] := FSearchTerms[N] + Str[I];
|
||||
end;
|
||||
end;
|
||||
|
||||
function TfSearch.TestField(const ASearch, AField: string): Boolean;
|
||||
var
|
||||
N: Integer;
|
||||
begin
|
||||
N := Pos(ASearch, AField);
|
||||
if N <> 0 then
|
||||
begin //many if so begin is put to clarify even if it's not needed
|
||||
if ckbWholeWord.Checked then
|
||||
begin
|
||||
//we use if here as in those statement the second term is not evaluated
|
||||
//when the first one is set to false : we can't have a range check error
|
||||
//as the second test is done only if the first one return true
|
||||
//if we use Result := test1 and test2 both tests are alwais evaluated and
|
||||
//will result in range checking error in some cases (match at end or
|
||||
//beginning of a string)
|
||||
if (N + Length(ASearch) <= Length(AField)) and
|
||||
(AField[N + Length(ASearch)] <> ' ') then
|
||||
Result := False
|
||||
else
|
||||
if (N > 1) and (AField[N - 1] <> ' ') then
|
||||
Result := False
|
||||
else
|
||||
Result := True;
|
||||
end else
|
||||
Result := True;
|
||||
end else
|
||||
Result := False;
|
||||
end;
|
||||
|
||||
procedure TfSearch.SearchTerm(const Pkg: TSPackPackage);
|
||||
begin
|
||||
//do it
|
||||
end;
|
||||
|
||||
procedure TfSearch.btnRegExprHelpClick(Sender: TObject);
|
||||
begin
|
||||
Application.MessageBox(PChar(rsRegExprHelp), PChar(rsHelp),
|
||||
MB_ICONINFORMATION + MB_OK);
|
||||
end;
|
||||
|
||||
procedure TfSearch.btnSearchClick(Sender: TObject);
|
||||
var
|
||||
I: integer;
|
||||
begin
|
||||
cbxSearch.Items.Add(cbxSearch.Text);
|
||||
if Trim(cbxSearch.Text) = '' then
|
||||
Exit;
|
||||
Cursor := crHourGlass;
|
||||
ParseString(Trim(cbxSearch.Text)); //put each term in a stringlist
|
||||
if ckbRegExpr.Checked and ((Trim(FSearchTerms[0])[1] in RegExprOperator) or
|
||||
(Trim(FSearchTerms[FSearchTerms.Count - 1])[1] in RegExprOperator)) then
|
||||
begin
|
||||
MessageDlg(rsErrorSearchSynthax, mtError, [MBOK], 0);
|
||||
Exit;
|
||||
end;
|
||||
try
|
||||
for I := 0 to fMain.PackageList.Count - 1 do
|
||||
begin
|
||||
Application.ProcessMessages;
|
||||
SearchTerm(fMain.PackageList.Packages[I]);
|
||||
end;
|
||||
//Sort(lvSearchResult, 0, False);
|
||||
finally
|
||||
Cursor := crArrow;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfSearch.cbxSearchChange(Sender: TObject);
|
||||
begin
|
||||
btnSearch.Enabled := (ckbPackageName.Checked or ckbDescription.Checked) and
|
||||
(Trim(cbxSearch.Text) <> '');
|
||||
end;
|
||||
|
||||
procedure TfSearch.FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
try
|
||||
SaveWindowGeometry(Self);
|
||||
IniWriteStrings(iniMain, Self.Name, rsConfNameFindHistory, cbxSearch.Items);
|
||||
except
|
||||
PrintLnDbg(rsErrorCannotSaveConf, vlLow);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfSearch.FormCreate(Sender: TObject);
|
||||
begin
|
||||
FSearchTerms := TStringList.Create;
|
||||
btnSearch.Enabled := False;
|
||||
//next line is needed because of different metrics with fonts and/or widget sets
|
||||
{$IFDEF LCLGTK2 OR $IFDEF LCLGTK3}
|
||||
btnRegExprHelp.Left := ckbRegExpr.Left + ckbRegExpr.Width + 1;
|
||||
btnRegExprHelp.Top := ckbRegExpr.Top;
|
||||
btnRegExprHelp.Height := ckbRegExpr.Height;
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLQT OR $IFDEF LCLQT5}
|
||||
btnRegExprHelp.Left := ckbRegExpr.Left + ckbRegExpr.Width + 21;
|
||||
btnRegExprHelp.Top := ckbRegExpr.Top + 1;
|
||||
btnRegExprHelp.Height := ckbRegExpr.Height + 1;
|
||||
{$ENDIF} //other widget sets not tested so left as designed
|
||||
btnRegExprHelp.Width := ckbRegExpr.Height;
|
||||
btnSearch.Tag := icSearch;
|
||||
btnClose.Tag := icClose;
|
||||
InitBtnGlyphs(Self);
|
||||
cbxSearch.Text := '';
|
||||
LoadWindowGeometry(Self);
|
||||
IniReadStrings(iniMain, Self.Name, rsConfNameFindHistory, cbxSearch.Items);
|
||||
ckbPackageName.Checked := True;
|
||||
ckbDescription.Checked := True;
|
||||
ckbInstalled.Checked := True;
|
||||
ckbNotInstalle.Checked := True;
|
||||
ckbToUpgrade.Checked := True;
|
||||
end;
|
||||
|
||||
procedure TfSearch.FormDestroy(Sender: TObject);
|
||||
begin
|
||||
try
|
||||
FSearchTerms.Free;
|
||||
finally
|
||||
inherited;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfSearch.lvSearchResultChange(Sender: TObject; Item: TListItem; Change: TItemChange);
|
||||
begin
|
||||
end;
|
||||
|
||||
procedure TfSearch.lvSearchResultColumnClick(Sender: TObject;
|
||||
Column: TListColumn);
|
||||
begin
|
||||
TListView(Sender).SortType := stNone;
|
||||
if Column.Index = FLastSortedColumn then
|
||||
FAscending := not FAscending
|
||||
else
|
||||
FLastSortedColumn := Column.Index;
|
||||
TListView(Sender).SortColumn := Column.Index;
|
||||
TListView(Sender).SortType := stData;
|
||||
end;
|
||||
|
||||
procedure TfSearch.lvSearchResultCompare(Sender: TObject;
|
||||
Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
|
||||
begin
|
||||
case FLastSortedColumn of
|
||||
0: Compare := AnsiCompareText(Item1.Caption, Item2.Caption);
|
||||
1: Compare := CompareVersion(Item1.SubItems[0], Item2.SubItems[0]);
|
||||
2: Compare := CompareVersion(Item1.SubItems[1], Item2.SubItems[1]);
|
||||
3: Compare := fMain.CompareSize(Item1.SubItems[2], Item2.SubItems[2]);
|
||||
4: Compare := fMain.CompareSize(Item1.SubItems[3], Item2.SubItems[3]);
|
||||
5: Compare := AnsiCompareText(Item1.SubItems[4], Item2.SubItems[4]);
|
||||
end;
|
||||
if not FAscending then
|
||||
Compare := -Compare;
|
||||
end;
|
||||
|
||||
procedure TfSearch.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
409
spackgui/i18n/spackgui.po
Normal file
409
spackgui/i18n/spackgui.po
Normal file
@@ -0,0 +1,409 @@
|
||||
msgid ""
|
||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||
|
||||
#: frmprogress.rsexceptnotcancelled
|
||||
msgid "The expected \"Cancel\" event was not triggered."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.btnclose.caption
|
||||
msgctxt "TFABOUT.BTNCLOSE.CAPTION"
|
||||
msgid "Fermer"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.caption
|
||||
msgid "A propos..."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbauth1address.caption
|
||||
msgctxt "TFABOUT.LBAUTH1ADDRESS.CAPTION"
|
||||
msgid "jeff.levasseur@free.fr"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbauth1comments.caption
|
||||
msgid "Fondateur et mainteneur du projet."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbauth1name.caption
|
||||
msgid "Geoffray Levasseur"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbauth1url.caption
|
||||
msgctxt "TFABOUT.LBAUTH1URL.CAPTION"
|
||||
msgid "http://jeff.levasseur.tuxfamily.org/"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbbuild.caption
|
||||
msgid "Construit le %s avec %s."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbcompiler.caption
|
||||
msgid "Conçu avec Free Pascal %s et Lazarus %s rev. %s."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbcopyright.caption
|
||||
msgid "Copyright (c) 2012 Geoffray Levasseur"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbfullversion.caption
|
||||
msgid "Version %s (%s-%s)"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lblicense.caption
|
||||
msgid "Ce logiciel est protégé par la CeCILL. Voir \"License\" pour les détails."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbmaintmail.caption
|
||||
msgctxt "tfabout.lbmaintmail.caption"
|
||||
msgid "jeff.levasseur@free.fr"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbmainturl.caption
|
||||
msgctxt "tfabout.lbmainturl.caption"
|
||||
msgid "http://jeff.levasseur.tuxfamily.org/"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbproductdesc.caption
|
||||
msgid "SPackGui est un gestionnaire de paquets graphique pour les distributions GNU/Linux. Il agit comme une sur-couche à l'outil en ligne de commande SPack."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbproductname.caption
|
||||
msgctxt "TFABOUT.LBPRODUCTNAME.CAPTION"
|
||||
msgid "SPackGui"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbreadlicense.caption
|
||||
msgid "Le fait d'exécuter le logiciel signifie que vous avez pris connaissance de la licence CeCILL, et que vous en avez accepté les termes."
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbthanks1address.caption
|
||||
msgid "http://www.oxygen-icons.org"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbthanks1comments.caption
|
||||
msgid "Jeu d'icones du projet (protégé par Creative Commons Attributions-ShareAlike 3.0)"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.lbthanks1name.caption
|
||||
msgid "L'équipe Oxygène"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.tsabout.caption
|
||||
msgid "A propos"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.tsauthors.caption
|
||||
msgid "Auteurs"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.tslicense.caption
|
||||
msgid "License"
|
||||
msgstr ""
|
||||
|
||||
#: tfabout.tsthanks.caption
|
||||
msgid "Remerciement"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acconfigdisplay.caption
|
||||
msgid "Paramètres d'affichage..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acconfigenvironment.caption
|
||||
msgid "Paramètres d'environnement..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acconfigrepositories.caption
|
||||
msgid "Dépots logiciels..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.aceditapply.caption
|
||||
msgid "Appliquer les modifications..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.aceditcancel.caption
|
||||
msgid "Annuler les modifications"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.aceditreload.caption
|
||||
msgid "Recharger la liste des paquets"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.aceditsearch.caption
|
||||
msgid "Rechercher..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.aceditshowhistory.caption
|
||||
msgid "Afficher l'historique de recherche..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acfileexit.caption
|
||||
msgid "Quitter"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acfileopen.caption
|
||||
msgid "Ouvrir une liste de paquets..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acfilesave.caption
|
||||
msgid "Enregistrer une liste de paquets..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acfilesaveall.caption
|
||||
msgid "Enregistrer la liste des paquets installés..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acfileshowlog.caption
|
||||
msgid "&Afficher le journal..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.achelpabout.caption
|
||||
msgid "À propos..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.achelpbugreport.caption
|
||||
msgid "Créer un rapport de boggues"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.achelpmanual.caption
|
||||
msgid "Manuel"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackagechooseversion.caption
|
||||
msgid "Choisir la version..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackageinstall.caption
|
||||
msgid "Installer"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackageproperties.caption
|
||||
msgid "Propriétés..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackagereinit.caption
|
||||
msgid "Réinitialiser"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackageremove.caption
|
||||
msgid "Supprimer"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.acpackageupdate.caption
|
||||
msgid "Mettre à jour"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.actoolscheckconffiles.caption
|
||||
msgid "Mettre à jour les fichiers de configurations..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.actoolscheckdeps.caption
|
||||
msgid "Vérifier les dépendences..."
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.caption
|
||||
msgctxt "tfmain.caption"
|
||||
msgid "SPackGui"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[0].caption
|
||||
msgctxt "tfmain.lvpackagelist.columns[0].caption"
|
||||
msgid "Paquet"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[1].caption
|
||||
msgid "Version"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[2].caption
|
||||
msgid "Dernière version"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[3].caption
|
||||
msgid "Taille"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[4].caption
|
||||
msgid "Taille installé"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.lvpackagelist.columns[5].caption
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnuconfig.caption
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnuedit.caption
|
||||
msgid "Édition"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnueditsep1.caption
|
||||
msgctxt "TFMAIN.MNUEDITSEP1.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnueditsep2.caption
|
||||
msgctxt "TFMAIN.MNUEDITSEP2.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnufile.caption
|
||||
msgid "Fichier"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnufilesep1.caption
|
||||
msgctxt "TFMAIN.MNUFILESEP1.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnufilesep2.caption
|
||||
msgctxt "TFMAIN.MNUFILESEP2.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnuhelp.caption
|
||||
msgctxt "TFMAIN.MNUHELP.CAPTION"
|
||||
msgid "Aide"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnuhelpsep1.caption
|
||||
msgctxt "TFMAIN.MNUHELPSEP1.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnuhelpsep2.caption
|
||||
msgctxt "TFMAIN.MNUHELPSEP2.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnupackage.caption
|
||||
msgctxt "TFMAIN.MNUPACKAGE.CAPTION"
|
||||
msgid "Paquet"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnupackagesep1.caption
|
||||
msgctxt "TFMAIN.MNUPACKAGESEP1.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnupackagesep2.caption
|
||||
msgctxt "TFMAIN.MNUPACKAGESEP2.CAPTION"
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
|
||||
#: tfmain.mnutools.caption
|
||||
msgid "Outils"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rserrorbase
|
||||
msgid "*** ERROR: "
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rserrorbutlogrotate
|
||||
msgid "E logrotate worked but the log file still exists"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rserrorcreatinglogfile
|
||||
msgid "E could not create log file"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rserrorlogrotate
|
||||
msgid "E logrotate failed"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rserrorwritinglogfile
|
||||
msgid "E unable to write in logfile"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rsinfobase
|
||||
msgid "Info: "
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rsinfologgingstarted
|
||||
msgid "Logging started: "
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rsinfologgingterminated
|
||||
msgid "Closing log file: application terminated"
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rswarningbase
|
||||
msgid "! WARNING: "
|
||||
msgstr ""
|
||||
|
||||
#: udebug.rswarningnologfile
|
||||
msgid "W no log file will be created, logging on stdout (console) only"
|
||||
msgstr ""
|
||||
|
||||
#: uspack.rscapacityerror
|
||||
msgid "E TPackageList: Trying to set a wrong capacity %n"
|
||||
msgstr ""
|
||||
|
||||
#: uspack.rspkglistindexerror
|
||||
msgid "E TPackageList: Index %n out of bounds"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rsdone
|
||||
msgid "Terminé"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rserror
|
||||
msgid "Erreur"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rserrorloadingpackage
|
||||
msgid "E Failed to load package informations in %s"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rserrorunabletolock
|
||||
msgid "E cannot lock the program: change will not be allowed"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rsfullapptitle
|
||||
msgctxt "ustrings.rsfullapptitle"
|
||||
msgid "SPackGui"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rsgb
|
||||
msgid "Go"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rshelp
|
||||
msgctxt "ustrings.rshelp"
|
||||
msgid "Aide"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rskb
|
||||
msgid "ko"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rslocalreponotfound
|
||||
msgid "E Unavailable local repository: "
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rsmb
|
||||
msgid "Mo"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rsquestion
|
||||
msgid "Question"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rswarning
|
||||
msgid "Attention"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rswarningdbgnotroot
|
||||
msgid "W running in non root mode"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rswarningnotroot
|
||||
msgid ""
|
||||
"Il apparait que SPackGui n'a pas été lancé avec les privilèges d'administration (root). En conséquence, vous ne pourrez appliquer aucune des modifications que vous tenterez.\n"
|
||||
"Le journal sera placé dans votre dossier personel au lieu de /var/log.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ustrings.rswarningotherinstance
|
||||
msgid "Une autre instance du programme est en cour d'exécution. Aucune modification ne pourra être apporté au système."
|
||||
msgstr ""
|
||||
|
||||
BIN
spackgui/spackgui.ico
Normal file
BIN
spackgui/spackgui.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 134 KiB |
273
spackgui/spackgui.lpi
Normal file
273
spackgui/spackgui.lpi
Normal file
@@ -0,0 +1,273 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<CONFIG>
|
||||
<ProjectOptions>
|
||||
<Version Value="11"/>
|
||||
<General>
|
||||
<SessionStorage Value="InProjectDir"/>
|
||||
<MainUnit Value="0"/>
|
||||
<Title Value="SPackGui"/>
|
||||
<Scaled Value="True"/>
|
||||
<UseAppBundle Value="False"/>
|
||||
<ResourceType Value="res"/>
|
||||
<XPManifest>
|
||||
<DpiAware Value="True"/>
|
||||
</XPManifest>
|
||||
<Icon Value="0"/>
|
||||
</General>
|
||||
<i18n>
|
||||
<OutDir Value="i18n"/>
|
||||
</i18n>
|
||||
<VersionInfo>
|
||||
<CharSet Value="04B0"/>
|
||||
<Attributes pvaDebug="True" pvaPreRelease="True"/>
|
||||
</VersionInfo>
|
||||
<BuildModes Count="1">
|
||||
<Item1 Name="Default" Default="True"/>
|
||||
</BuildModes>
|
||||
<PublishOptions>
|
||||
<Version Value="2"/>
|
||||
<IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
|
||||
<ExcludeFileFilter Value="*.(bak|ppu|o|so);*~;backup"/>
|
||||
</PublishOptions>
|
||||
<RunParams>
|
||||
<FormatVersion Value="2"/>
|
||||
<Modes Count="1">
|
||||
<Mode0 Name="default"/>
|
||||
</Modes>
|
||||
</RunParams>
|
||||
<RequiredPackages Count="2">
|
||||
<Item1>
|
||||
<PackageName Value="SynEdit"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<PackageName Value="LCL"/>
|
||||
</Item2>
|
||||
</RequiredPackages>
|
||||
<Units Count="28">
|
||||
<Unit0>
|
||||
<Filename Value="spackgui.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit0>
|
||||
<Unit1>
|
||||
<Filename Value="frmmain.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fMain"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmMain"/>
|
||||
</Unit1>
|
||||
<Unit2>
|
||||
<Filename Value="../common/ucommon.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uCommon"/>
|
||||
</Unit2>
|
||||
<Unit3>
|
||||
<Filename Value="../common/udebug.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uDebug"/>
|
||||
</Unit3>
|
||||
<Unit4>
|
||||
<Filename Value="../common/uiconmanager.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uIconManager"/>
|
||||
</Unit4>
|
||||
<Unit5>
|
||||
<Filename Value="../common/ustrings.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uStrings"/>
|
||||
</Unit5>
|
||||
<Unit6>
|
||||
<Filename Value="../common/uutils.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uUtils"/>
|
||||
</Unit6>
|
||||
<Unit7>
|
||||
<Filename Value="buildsys.inc"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit7>
|
||||
<Unit8>
|
||||
<Filename Value="uversion.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uVersion"/>
|
||||
</Unit8>
|
||||
<Unit9>
|
||||
<Filename Value="version.inc"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit9>
|
||||
<Unit10>
|
||||
<Filename Value="frmabout.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fAbout"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmAbout"/>
|
||||
</Unit10>
|
||||
<Unit11>
|
||||
<Filename Value="../common/frmprogress.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fProgress"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmProgress"/>
|
||||
</Unit11>
|
||||
<Unit12>
|
||||
<Filename Value="../common/udownload.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uDownload"/>
|
||||
</Unit12>
|
||||
<Unit13>
|
||||
<Filename Value="frmlogfile.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fLogView"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmLogFile"/>
|
||||
</Unit13>
|
||||
<Unit14>
|
||||
<Filename Value="../common/synapse/blcksock.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit14>
|
||||
<Unit15>
|
||||
<Filename Value="../common/synapse/ftpsend.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit15>
|
||||
<Unit16>
|
||||
<Filename Value="../common/synapse/httpsend.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit16>
|
||||
<Unit17>
|
||||
<Filename Value="../common/udownloadmanager.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uDownloadManager"/>
|
||||
</Unit17>
|
||||
<Unit18>
|
||||
<Filename Value="frmenvironementsettings.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fEnvironmentSettings"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmEnvironementSettings"/>
|
||||
</Unit18>
|
||||
<Unit19>
|
||||
<Filename Value="frmreposettings.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fRepoSettings"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmRepoSettings"/>
|
||||
</Unit19>
|
||||
<Unit20>
|
||||
<Filename Value="frmaddchangerepo.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fAddChangeRepo"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmAddChangeRepo"/>
|
||||
</Unit20>
|
||||
<Unit21>
|
||||
<Filename Value="../common/defines.inc"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
</Unit21>
|
||||
<Unit22>
|
||||
<Filename Value="../common/uspackpackage.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uSpackPackage"/>
|
||||
</Unit22>
|
||||
<Unit23>
|
||||
<Filename Value="frmpackageproperty.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fPackageProperty"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmPackageProperty"/>
|
||||
</Unit23>
|
||||
<Unit24>
|
||||
<Filename Value="frmsearch.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fSearch"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmSearch"/>
|
||||
</Unit24>
|
||||
<Unit25>
|
||||
<Filename Value="frmdisplaysettings.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<ComponentName Value="fDisplaySettings"/>
|
||||
<HasResources Value="True"/>
|
||||
<ResourceBaseClass Value="Form"/>
|
||||
<UnitName Value="frmDisplaySettings"/>
|
||||
</Unit25>
|
||||
<Unit26>
|
||||
<Filename Value="../common/ulistviewcolors.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uListViewColors"/>
|
||||
</Unit26>
|
||||
<Unit27>
|
||||
<Filename Value="../common/upackagemanager.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uPackageManager"/>
|
||||
</Unit27>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
<Version Value="11"/>
|
||||
<Target>
|
||||
<Filename Value="../bin/spackgui"/>
|
||||
</Target>
|
||||
<SearchPaths>
|
||||
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||
<OtherUnitFiles Value="../common;../common/synapse"/>
|
||||
<UnitOutputDirectory Value="../bin/lib/$(TargetCPU)-$(TargetOS)"/>
|
||||
</SearchPaths>
|
||||
<Parsing>
|
||||
<SyntaxOptions>
|
||||
<AllowLabel Value="False"/>
|
||||
</SyntaxOptions>
|
||||
</Parsing>
|
||||
<CodeGeneration>
|
||||
<SmartLinkUnit Value="True"/>
|
||||
<Checks>
|
||||
<IOChecks Value="True"/>
|
||||
<RangeChecks Value="True"/>
|
||||
<OverflowChecks Value="True"/>
|
||||
<StackChecks Value="True"/>
|
||||
</Checks>
|
||||
</CodeGeneration>
|
||||
<Linking>
|
||||
<Debugging>
|
||||
<UseExternalDbgSyms Value="True"/>
|
||||
</Debugging>
|
||||
<LinkSmart Value="True"/>
|
||||
<Options>
|
||||
<Win32>
|
||||
<GraphicApplication Value="True"/>
|
||||
</Win32>
|
||||
</Options>
|
||||
</Linking>
|
||||
</CompilerOptions>
|
||||
<Debugging>
|
||||
<Exceptions Count="7">
|
||||
<Item1>
|
||||
<Name Value="EAbort"/>
|
||||
</Item1>
|
||||
<Item2>
|
||||
<Name Value="ECodetoolError"/>
|
||||
</Item2>
|
||||
<Item3>
|
||||
<Name Value="EFOpenError"/>
|
||||
</Item3>
|
||||
<Item4>
|
||||
<Name Value="EConvertError"/>
|
||||
</Item4>
|
||||
<Item5>
|
||||
<Name Value="ERangeError"/>
|
||||
</Item5>
|
||||
<Item6>
|
||||
<Name Value="EReadError"/>
|
||||
</Item6>
|
||||
<Item7>
|
||||
<Name Value="EStringListError"/>
|
||||
</Item7>
|
||||
</Exceptions>
|
||||
</Debugging>
|
||||
</CONFIG>
|
||||
134
spackgui/spackgui.lpr
Normal file
134
spackgui/spackgui.lpr
Normal file
@@ -0,0 +1,134 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2012-2013 Geoffray Levasseur <jeff.levasseur@free.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://jeff.levasseur.tuxfamily.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
main program
|
||||
|
||||
Note: This program is intended for Unix OSes only. So all functions are Unix
|
||||
centric and references to any other OS have been removed. If you are
|
||||
interested in some more multiplatform functions for your own program, a more
|
||||
complete version for some of those may be available. To get it, please
|
||||
ask for it by mail to the maintenor or check the other projects of the
|
||||
author in the parent directory of the trunk subversion tree of that project.
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
program spackgui;
|
||||
|
||||
{$include ../common/defines.inc}
|
||||
|
||||
uses
|
||||
{$IFDEF UseCThreads}
|
||||
cthreads,
|
||||
cmem,
|
||||
{$ENDIF}
|
||||
Interfaces, IniFiles, // this includes the LCL widgetset
|
||||
sysutils, LCLType, Dialogs, LCLVersion, Forms,
|
||||
frmmain, uversion, frmabout, ucommon, udebug, uiconmanager, ustrings, uutils,
|
||||
frmprogress, uPackageManager, uDownload, blcksock, ftpsend, httpsend,
|
||||
frmLogFile, uDownloadManager, frmEnvironementSettings, frmAddChangeRepo,
|
||||
uSpackPackage, frmPackageProperty, frmsearch, frmDisplaySettings,
|
||||
uListViewColors;
|
||||
|
||||
{$R *.res}
|
||||
|
||||
procedure CheckLocking; {$warning Use PID for a better instance checking}
|
||||
var
|
||||
OtherComputer, OtherUser: string;
|
||||
begin
|
||||
//we use a file for "instance checking" as this is commonly used on Unixes
|
||||
if FileExists(sLockFile) then
|
||||
begin
|
||||
Application.MessageBox(PChar(Format(rsWarningOtherInstance, [OtherUser,
|
||||
OtherComputer])), PChar(rsWarning), MB_ICONHAND + MB_OK);
|
||||
bChangeAllowed := False;
|
||||
end else
|
||||
begin
|
||||
bChangeAllowed := True;
|
||||
if not CreateLockFile(sLockFile) then
|
||||
begin
|
||||
PrintLnDbg(rsErrorUnableToLock, vlLow);
|
||||
bChangeAllowed := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
begin
|
||||
Application.Scaled:=True;
|
||||
if not InitDbg(sDefaultLogFileName) then
|
||||
InitDbg(GetUserDir + ExtractFileName(sDefaultLogFileName));
|
||||
Application.Title := 'SPackGui';
|
||||
Application.OnException := ExceptionProc;
|
||||
{$IF (lcl_major >= 1) or ((lcl_minor >= 9) and (lcl_release >= 31))}
|
||||
RequireDerivedFormResource := True;
|
||||
{$ENDIF}
|
||||
{$IFDEF TEST}
|
||||
PrintLnDbg(rsInfoRunningTest);
|
||||
{$ENDIF}
|
||||
{$IFDEF Debug}
|
||||
PrintLnDbg(rsInfoRunningDebug);
|
||||
{$ENDIF}
|
||||
InitConf;
|
||||
if bReadOnly then
|
||||
begin
|
||||
PrintLnDbg(rsErrorReadOnly, vlLow);
|
||||
PrintLnDbg(rsWarningConfWillBeLost, vlLow);
|
||||
end;
|
||||
if GetUserName <> sRootUserName then
|
||||
begin
|
||||
Application.MessageBox(PChar(rsWarningNotRoot), PChar(rsWarning),
|
||||
MB_ICONHAND + MB_OK);
|
||||
PrintlnDbg(rsWarningDbgNotRoot, vlLow);
|
||||
end;
|
||||
CheckLocking;
|
||||
fLogView := nil;
|
||||
LoadIconSet(sIconBaseDir);
|
||||
try
|
||||
Application.Initialize;
|
||||
Application.CreateForm(TfMain, fMain);
|
||||
Application.Run;
|
||||
finally
|
||||
if FileExists(sLockFile) then
|
||||
begin
|
||||
AssignFile(tLockFile, sLockFile);
|
||||
Erase(tLockFile);
|
||||
end;
|
||||
TerminateDbg;
|
||||
end;
|
||||
end.
|
||||
|
||||
164
spackgui/uversion.pas
Normal file
164
spackgui/uversion.pas
Normal file
@@ -0,0 +1,164 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2000-2012 Geoffray Levasseur <geoffray.levasseurbrandin@numericable.fr>.
|
||||
http://www.geoffray-levasseur.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
Version info manipulation functions
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
|
||||
unit uVersion;
|
||||
|
||||
{$MODE objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, InterfaceBase, LCLVersion, LCLPlatformDef;
|
||||
|
||||
type
|
||||
TVersionState = (vsAlpha, vsBeta, vsReleaseCandidate, vsFinal);
|
||||
TVerRec = record
|
||||
Major: Byte;
|
||||
Minor: Byte;
|
||||
Release: Byte;
|
||||
Build: Word;
|
||||
Add: TVersionState;
|
||||
end;
|
||||
|
||||
const
|
||||
LCLPlatformDisplayNames: array[TLCLPlatform] of string = ('GTK 1', 'GTK 2',
|
||||
{$IF (lcl_major >= 1) and (lcl_minor >= 1)}
|
||||
'GTK 3',
|
||||
{$ENDIF}
|
||||
'Win32/Win64', 'WinCE', 'Carbon', 'QT 4',
|
||||
{$IF (lcl_major >= 1) and (lcl_minor >= 4)}
|
||||
'QT 5',
|
||||
{$ENDIF}
|
||||
'FpGui', 'NoGui', 'Cocoa',
|
||||
{$IF (lcl_major >= 1) and (lcl_minor >= 8)}
|
||||
'Android', 'MUI');
|
||||
{$ELSE}
|
||||
'Android');
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
function GetBuildCPU: string;
|
||||
function GetBuildOS: string;
|
||||
function GetBuildDate: string;
|
||||
function GetLCLWidgetType: TLCLPlatform;
|
||||
function GetFPCVersion: String;
|
||||
function GetLazarusVersion: string;
|
||||
function GetLazarusRevision: string;
|
||||
function GetVersionString(VerRec: TVerRec): String;
|
||||
|
||||
{$I version.inc}
|
||||
|
||||
var
|
||||
Debug: Boolean;
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
uUtils;
|
||||
|
||||
function GetBuildOS: string;
|
||||
begin
|
||||
Result := LowerCase({$I %FPCTARGETOS%});
|
||||
end;
|
||||
|
||||
function GetBuildCPU: string;
|
||||
begin
|
||||
Result := LowerCase({$I %FPCTARGETCPU%});
|
||||
end;
|
||||
|
||||
function GetLCLWidgetType: TLCLPlatform;
|
||||
begin
|
||||
if WidgetSet <> nil then
|
||||
Result := WidgetSet.LCLPlatform
|
||||
else
|
||||
Result:= lpGtk;
|
||||
end;
|
||||
|
||||
function GetFPCVersion: String;
|
||||
begin
|
||||
Result := {$I %FPCVERSION%};
|
||||
end;
|
||||
|
||||
function GetBuildDate: string;
|
||||
var
|
||||
BuildDate: string;
|
||||
SlPos1, SlPos2: integer;
|
||||
Date: TDateTime;
|
||||
begin
|
||||
BuildDate := {$I %date%};
|
||||
SlPos1 := Pos('/', BuildDate);
|
||||
SlPos2 := SlPos1 + Pos('/', Copy(BuildDate, SlPos1 + 1, Length(BuildDate)- SlPos1));
|
||||
Date := EncodeDate(StrToWord(Copy(BuildDate, 1, SlPos1 - 1)),
|
||||
StrToWord(Copy(BuildDate, SlPos1 + 1, SlPos2 - SlPos1 - 1)),
|
||||
StrToWord(Copy(BuildDate, SlPos2 + 1, Length(BuildDate) - SlPos2)));
|
||||
Result := FormatDateTime('yyyy/mm/dd', Date);
|
||||
end;
|
||||
|
||||
function GetLazarusVersion: string;
|
||||
begin
|
||||
Result := Format('%d.%d.%d', [lcl_major, lcl_minor, lcl_release]);
|
||||
end;
|
||||
|
||||
function GetLazarusRevision: string;
|
||||
//use the lazarus source code - change path as you need
|
||||
//if you don't have lazarus source code delete the line {$I <path>} and replace
|
||||
//RevisionStr const by 'unknow'
|
||||
{$I ../../../fp-laz/lazarus/ide/revision.inc}
|
||||
begin
|
||||
if Trim(RevisionStr) <> '' then
|
||||
Result := 'svn ' + RevisionStr
|
||||
else
|
||||
Result := 'inconnue';
|
||||
end;
|
||||
|
||||
function GetVersionString(VerRec: TVerRec): String;
|
||||
begin
|
||||
Result := InttoStr(VerRec.Major) + '.' + InttoStr(VerRec.Minor) + '.' +
|
||||
InttoStr(VerRec.Release) + '-' + InttoStr(VerRec.Build);
|
||||
case VerRec.Add of
|
||||
vsAlpha: Result := Result + ' alpha';
|
||||
vsBeta: Result := Result + ' beta';
|
||||
vsReleaseCandidate: Result := Result + 'RC';
|
||||
end;
|
||||
Result := Result + ' ' + LCLPlatformDisplayNames[GetLCLWidgetType];
|
||||
end;
|
||||
|
||||
end.
|
||||
52
spackgui/version.inc
Normal file
52
spackgui/version.inc
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
********************************************************************************
|
||||
|
||||
SPackGui
|
||||
Copyright (C) 2013 Geoffray Levasseur <jeff.levasseur@free.fr>.
|
||||
Copyright (C) <date> <add your name and mail address here>
|
||||
|
||||
http://jeff.levasseur.tuxfamily.org/
|
||||
http://0.tuxfamilly.org/
|
||||
|
||||
This software is governed by the CeCILL license under French law and
|
||||
abiding by the rules of distribution of free software. You can use,
|
||||
modify and/ or redistribute the software under the terms of the CeCILL
|
||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||
"http://www.cecill.info".
|
||||
|
||||
As a counterpart to the access to the source code and rights to copy,
|
||||
modify and redistribute granted by the license, users are provided only
|
||||
with a limited warranty and the software's author, the holder of the
|
||||
economic rights, and the successive licensors have only limited
|
||||
liability.
|
||||
|
||||
In this respect, the user's attention is drawn to the risks associated
|
||||
with loading, using, modifying and/or developing or reproducing the
|
||||
software by the user in light of its specific status of free software,
|
||||
that may mean that it is complicated to manipulate, and that also
|
||||
therefore means that it is reserved for developers and experienced
|
||||
professionals having in-depth computer knowledge. Users are therefore
|
||||
encouraged to load and test the software's suitability as regards their
|
||||
requirements in conditions enabling the security of their systems and/or
|
||||
data to be ensured and, more generally, to use and operate it in the
|
||||
same conditions as regards security.
|
||||
|
||||
The fact that you are presently reading this means that you have had
|
||||
knowledge of the CeCILL license and that you accept its terms.
|
||||
|
||||
********************************************************************************
|
||||
|
||||
Description:
|
||||
version information for the application. changes only made by maintenor!
|
||||
|
||||
********************************************************************************
|
||||
}
|
||||
|
||||
const
|
||||
BuildSys = {$I buildsys.inc}; //That file must be created by a script
|
||||
vrVersion: TVerRec = (Major: 0;
|
||||
Minor: 0; //if > 50 it's a prerelease for Major + 1 version
|
||||
Release: 50; //if > 50 same with minor + 1 version
|
||||
Build: 28; //incremented on each published build
|
||||
Add: vsALpha); //version 0 alpha 0 rel 1
|
||||
|
||||
Reference in New Issue
Block a user