@ -0,0 +1,5 @@
|
||||
subprojects/blueprint-compiler
|
||||
build/
|
||||
.flatpak-builder/
|
||||
node_modules/
|
||||
.idea/
|
@ -0,0 +1,4 @@
|
||||
{
|
||||
"diffEditor.codeLens": true,
|
||||
"editor.tabCompletion": "on"
|
||||
}
|
@ -0,0 +1,675 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
|
@ -0,0 +1,74 @@
|
||||
# Jade GUI
|
||||
|
||||
The libadwaita/gtk based gui installer using jade as the backend.
|
||||
|
||||
## 💡 Features
|
||||
|
||||
- Beatiful UI
|
||||
- Easy to use
|
||||
- Uses accessible technologies
|
||||
|
||||
## 🫂 Support
|
||||
|
||||
**Support** is available in our [Discord](https://getcryst.al/discord) and the [Matrix](https://matrix.to/#/#space:getcryst.al). If you face any issues with the software, feel free to open an issue on this repository.
|
||||
|
||||
|
||||
## 👥 Contributors
|
||||
|
||||
A list of all **Jade GUI** contributors is available in [CONTRIBUTORS.md](CONTRIBUTORS.md)
|
||||
|
||||
For a list of **Jade GUI** maintainers specifically, see [.gitlab/CODEOWNERS](.gitlab/CODEOWNERS)
|
||||
|
||||
|
||||
## 💾 Installation
|
||||
### 🏗 From Source
|
||||
|
||||
**Install dependencies**
|
||||
|
||||
```bash
|
||||
# pacman -S jade openssl python-pytz gparted vte4 meson ninja libadwaita desktop-file-utils appstream-glib gtk4
|
||||
```
|
||||
|
||||
**Install jade-GUI from source using `meson` and `ninja`**
|
||||
```bash
|
||||
$ git clone https://github.com/crystal-linux/jade-gui
|
||||
$ cd jade-gui
|
||||
$ meson --prefix=/usr _build
|
||||
$ ninja -C _build
|
||||
$ cd _build
|
||||
$ sudo ninja install
|
||||
```
|
||||
|
||||
**Install jade-GUI as a flatpak using `flatpak-builder`** (Recommended for development)
|
||||
```sh
|
||||
$ git clone https://github.com/crystal-linux/jade-gui
|
||||
$ cd jade-gui
|
||||
$ flatpak-builder --user --install --install-deps-from=flathub --force-clean build-dir al.getcryst.jadegui.yml
|
||||
$ flatpak run al.getcryst.jadegui
|
||||
```
|
||||
## 📸 Screenshots
|
||||
|
||||
![App Screenshot](main-page-screenshot.png)
|
||||
|
||||
|
||||
## 🙌 Contributing
|
||||
|
||||
If you'd like to contribute to **Jade GUI**, please follow the [Crystal Linux contributing guidelines](https://git.getcryst.al/crystal/info/-/blob/main/CONTRIBUTING.md)!
|
||||
|
||||
This project uses `meson`, and `ninja` for **Jade GUI** development, please follow the guidelines below:
|
||||
|
||||
https://pypi.org/project/ninja/
|
||||
|
||||
https://mesonbuild.com/
|
||||
|
||||
## 📚 Documentation
|
||||
We are also constantly looking for translators for our i18n-enabled projects! If you speak more than one language, consider helping out on our [Weblate](https://i18n.getcryst.al)!
|
||||
|
||||
![https://i18n.getcryst.al/engage/crystal-linux/](https://i18n.getcryst.al/widgets/crystal-linux/-/287x66-black.png)
|
||||
|
||||
|
||||
## 📜 License
|
||||
|
||||
[GPLv3-only](https://choosealicense.com/licenses/gpl-3.0/)
|
||||
|
||||
![](https://git.getcryst.al/crystal/misc/branding/-/raw/main/banners/README-banner.png)
|
@ -0,0 +1,30 @@
|
||||
{
|
||||
"app-id": "al.getcryst.jadegui",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "43",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"command": "jade-gui",
|
||||
"finish-args": [
|
||||
"--share=network",
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--socket=wayland",
|
||||
"--talk-name=org.freedesktop.Flatpak",
|
||||
"--filesystem=home:rw"
|
||||
],
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/gtk-doc",
|
||||
"/share/pkgconfig",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules": [
|
||||
"modules.json",
|
||||
"python3-modules.json"
|
||||
]
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
app-id: al.getcryst.jadegui
|
||||
runtime: org.gnome.Platform
|
||||
runtime-version: '43'
|
||||
sdk: org.gnome.Sdk
|
||||
command: jade-gui
|
||||
finish-args:
|
||||
- "--share=network"
|
||||
- "--share=ipc"
|
||||
- "--socket=fallback-x11"
|
||||
- "--device=dri"
|
||||
- "--socket=wayland"
|
||||
- "--talk-name=org.freedesktop.Flatpak"
|
||||
- "--filesystem=home:rw"
|
||||
cleanup:
|
||||
- "/include"
|
||||
- "/lib/pkgconfig"
|
||||
- "/man"
|
||||
- "/share/doc"
|
||||
- "/share/gtk-doc"
|
||||
- "/share/pkgconfig"
|
||||
- "*.la"
|
||||
- "*.a"
|
||||
modules:
|
||||
- modules.json
|
||||
- python3-modules.json
|
||||
|
@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
if [[ $1 == "build" ]]; then
|
||||
if [[ ! -d "build" ]]; then
|
||||
meson build
|
||||
else
|
||||
meson --reconfigure build
|
||||
fi
|
||||
ninja -C build
|
||||
elif [[ $1 == "install" ]]; then
|
||||
pushd build
|
||||
sudo ninja install
|
||||
elif [[ $1 == "build-install" ]]; then
|
||||
if [[ ! -d "build" ]]; then
|
||||
meson build
|
||||
else
|
||||
meson --reconfigure build
|
||||
fi
|
||||
ninja -C build
|
||||
pushd build
|
||||
sudo ninja install
|
||||
else
|
||||
echo "Unkown command $1"
|
||||
echo "usage:"
|
||||
echo "build build jade gui"
|
||||
echo "install install jade gui"
|
||||
echo "build-install build and install jade_gui"
|
||||
fi
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>al.getcryst.jadegui.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-only</project_license>
|
||||
<description>
|
||||
<p>No description</p>
|
||||
</description>
|
||||
</component>
|
@ -0,0 +1,11 @@
|
||||
[Desktop Entry]
|
||||
Name=Install Crystal Linux
|
||||
|
||||
Exec=jade-gui
|
||||
|
||||
Icon=al.getcryst.jadegui
|
||||
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GTK;
|
||||
StartupNotify=true
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schemalist gettext-domain="jade_gui">
|
||||
<schema id="al.getcryst.jadegui" path="/al/getcryst/jadegui/">
|
||||
</schema>
|
||||
</schemalist>
|
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 8 0 c -4.40625 0 -8 3.59375 -8 8 s 3.59375 8 8 8 s 8 -3.59375 8 -8 s -3.59375 -8 -8 -8 z m 0 2 c 3.324219 0 6 2.675781 6 6 s -2.675781 6 -6 6 s -6 -2.675781 -6 -6 s 2.675781 -6 6 -6 z m 0 0"/><path d="m 4.929688 4.953125 c -0.128907 0.003906 -0.257813 0.058594 -0.351563 0.152344 c -0.191406 0.195312 -0.1875 0.511719 0.007813 0.707031 l 3.113281 3.042969 c 0.105469 0.097656 0.246093 0.144531 0.386719 0.128906 h 2.914062 c 0.277344 0 0.5 -0.222656 0.5 -0.5 c 0 -0.273437 -0.222656 -0.5 -0.5 -0.5 h -2.761719 l -2.953125 -2.886719 c -0.09375 -0.09375 -0.222656 -0.144531 -0.355468 -0.144531 z m 0 0"/></g></svg>
|
After Width: | Height: | Size: 768 B |
@ -0,0 +1,276 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="348"
|
||||
height="348"
|
||||
viewBox="0 0 348 343"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg226"
|
||||
sodipodi:docname="al.getcryst.jadegui.svg"
|
||||
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview228"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="2.2798834"
|
||||
inkscape:cx="162.06969"
|
||||
inkscape:cy="166.67519"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1011"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg226" />
|
||||
<path
|
||||
d="M 282.84032,4.1244755 H 86.840323 c -13.255,0 -24,10.7452005 -24,24.0000005 V 271.12448 c 0,13.255 10.745,24 24,24 H 282.84032 c 13.255,0 24,-10.745 24,-24 V 28.124476 c 0,-13.2548 -10.745,-24.0000005 -24,-24.0000005 z"
|
||||
fill="#613583"
|
||||
id="path132" />
|
||||
<path
|
||||
d="M 282.84032,-0.8755245 H 86.840323 c -13.255,0 -24,10.7452 -24,24.0000005 V 256.12448 c 0,13.255 10.745,24 24,24 H 282.84032 c 13.255,0 24,-10.745 24,-24 V 23.124476 c 0,-13.2548005 -10.745,-24.0000005 -24,-24.0000005 z"
|
||||
fill="#813d9c"
|
||||
id="path134" />
|
||||
<g
|
||||
filter="url(#filter0_d_9_3)"
|
||||
id="g138"
|
||||
transform="translate(-32.159677,-0.8755245)">
|
||||
<path
|
||||
d="m 308,106 c 0,-49.7056 -40.294,-90 -90,-90 -49.706,0 -90,40.2944 -90,90 0,49.706 40.294,90 90,90 49.706,0 90,-40.294 90,-90 z"
|
||||
fill="#c061cb"
|
||||
id="path136" />
|
||||
</g>
|
||||
<g
|
||||
filter="url(#filter1_d_9_3)"
|
||||
id="g144"
|
||||
transform="translate(-32.159677,-0.8755245)">
|
||||
<path
|
||||
d="m 207.343,269 32.011,-32 -13.813,-13.781 -4.416,4.406 9.365,9.375 -32.042,32 z"
|
||||
fill="#c061cb"
|
||||
id="path140" />
|
||||
<path
|
||||
d="M 226.011,205 194,237 l 13.75,13.719 h 0.063 l 4.385,-4.375 -9.334,-9.344 31.949,-32 z"
|
||||
fill="#c061cb"
|
||||
id="path142" />
|
||||
</g>
|
||||
<g
|
||||
filter="url(#filter2_d_9_3)"
|
||||
id="g148"
|
||||
transform="matrix(0.75301869,0,0,0.91306217,47.130955,22.092234)">
|
||||
<path
|
||||
d="M 217.035,106.133 318.039,238.49 272.304,263.186 Z"
|
||||
fill="#deddda"
|
||||
id="path146" />
|
||||
</g>
|
||||
<g
|
||||
filter="url(#filter3_d_9_3)"
|
||||
id="g154"
|
||||
style="fill:#4f3f78;fill-opacity:1;stroke:none;stroke-opacity:1"
|
||||
transform="translate(-16.364256,-0.19360914)">
|
||||
<path
|
||||
d="M 114,38 H 55 c -2.7614,0 -5,2.2386 -5,5 v 172.704 c 0,1.458 0.6359,2.842 1.7412,3.792 l 27.2264,23.398 c 1.773,1.524 4.3651,1.615 6.2414,0.221 l 31.774,-23.616 c 1.269,-0.943 2.017,-2.431 2.017,-4.013 V 43 c 0,-2.7614 -2.239,-5 -5,-5 z"
|
||||
fill="#352B50"
|
||||
id="path150"
|
||||
style="fill:#4f3f78;fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
<path
|
||||
d="m 88.5871,294.136 c -1.9997,2.678 -6.0123,2.678 -8.012,0 L 19.9692,212.992 C 17.5063,209.695 19.8595,205 23.9751,205 H 145.187 c 4.116,0 6.469,4.695 4.006,7.992 z"
|
||||
fill="#352B50"
|
||||
id="path152"
|
||||
style="fill:#4f3f78;fill-opacity:1;stroke:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<defs
|
||||
id="defs224">
|
||||
<linearGradient
|
||||
id="linearGradient3107"
|
||||
inkscape:swatch="solid">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop3105" />
|
||||
</linearGradient>
|
||||
<filter
|
||||
id="filter0_d_9_3"
|
||||
x="124"
|
||||
y="16"
|
||||
width="188"
|
||||
height="188"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood156" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
result="hardAlpha"
|
||||
id="feColorMatrix158" />
|
||||
<feOffset
|
||||
dy="4"
|
||||
id="feOffset160" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="2"
|
||||
id="feGaussianBlur162" />
|
||||
<feComposite
|
||||
in2="hardAlpha"
|
||||
operator="out"
|
||||
id="feComposite164" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"
|
||||
id="feColorMatrix166" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow_9_3"
|
||||
id="feBlend168" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect1_dropShadow_9_3"
|
||||
result="shape"
|
||||
id="feBlend170" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter1_d_9_3"
|
||||
x="187"
|
||||
y="202"
|
||||
width="59.3543"
|
||||
height="78"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood173" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
result="hardAlpha"
|
||||
id="feColorMatrix175" />
|
||||
<feOffset
|
||||
dy="4"
|
||||
id="feOffset177" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="3.5"
|
||||
id="feGaussianBlur179" />
|
||||
<feComposite
|
||||
in2="hardAlpha"
|
||||
operator="out"
|
||||
id="feComposite181" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"
|
||||
id="feColorMatrix183" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow_9_3"
|
||||
id="feBlend185" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect1_dropShadow_9_3"
|
||||
result="shape"
|
||||
id="feBlend187" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter2_d_9_3"
|
||||
x="212.035"
|
||||
y="99.133"
|
||||
width="109.004"
|
||||
height="165.053"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood190" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
result="hardAlpha"
|
||||
id="feColorMatrix192" />
|
||||
<feOffset
|
||||
dx="-1"
|
||||
dy="-3"
|
||||
id="feOffset194" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="2"
|
||||
id="feGaussianBlur196" />
|
||||
<feComposite
|
||||
in2="hardAlpha"
|
||||
operator="out"
|
||||
id="feComposite198" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"
|
||||
id="feColorMatrix200" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow_9_3"
|
||||
id="feBlend202" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect1_dropShadow_9_3"
|
||||
result="shape"
|
||||
id="feBlend204" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3_d_9_3"
|
||||
x="14.9661"
|
||||
y="34"
|
||||
width="139.23"
|
||||
height="266.144"
|
||||
filterUnits="userSpaceOnUse"
|
||||
color-interpolation-filters="sRGB">
|
||||
<feFlood
|
||||
flood-opacity="0"
|
||||
result="BackgroundImageFix"
|
||||
id="feFlood207" />
|
||||
<feColorMatrix
|
||||
in="SourceAlpha"
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"
|
||||
result="hardAlpha"
|
||||
id="feColorMatrix209" />
|
||||
<feOffset
|
||||
id="feOffset211" />
|
||||
<feGaussianBlur
|
||||
stdDeviation="2"
|
||||
id="feGaussianBlur213" />
|
||||
<feComposite
|
||||
in2="hardAlpha"
|
||||
operator="out"
|
||||
id="feComposite215" />
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"
|
||||
id="feColorMatrix217" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in2="BackgroundImageFix"
|
||||
result="effect1_dropShadow_9_3"
|
||||
id="feBlend219" />
|
||||
<feBlend
|
||||
mode="normal"
|
||||
in="SourceGraphic"
|
||||
in2="effect1_dropShadow_9_3"
|
||||
result="shape"
|
||||
id="feBlend221" />
|
||||
</filter>
|
||||
</defs>
|
||||
</svg>
|
After Width: | Height: | Size: 8.2 KiB |
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M7.188 2.281c-.094.056-.192.125-.29.19L5.566 3.803a1.684 1.684 0 11-2.17 2.17L2.332 7.037c.506-.069 1.017-.136 1.2.026.242.214.139 1.031.155 1.656.213.088.427.171.657.219.04.008.085-.007.125 0 .337-.525.683-1.288 1-1.344.322-.057.905.562 1.406.937a3.67 3.67 0 00.656-.468c-.195-.595-.594-1.369-.437-1.657.158-.29 1.019-.37 1.625-.531.028-.183.062-.371.062-.562 0-.075-.027-.146-.031-.22-.587-.217-1.435-.385-1.562-.687-.128-.302.34-1.021.593-1.593a3.722 3.722 0 00-.593-.532zm3.875 3.25c-.165.475-.305 1.086-.47 1.563-.43.047-.84.14-1.218.312-.38-.322-.787-.773-1.156-1.093a5.562 5.562 0 00-.688.468c.177.46.453 1.001.625 1.469-.298.309-.531.67-.719 1.063-.494 0-1.102-.084-1.593-.094a5.68 5.68 0 00-.219.812c.435.24 1.006.468 1.438.72-.006.093-.032.185-.032.28 0 .333.049.66.125.97-.382.304-.898.63-1.28.937.015.044.04.083.058.127l.613.613c.417-.1.868-.223 1.266-.303.248.343.532.626.875.875-.027.135-.068.283-.104.428.174-.063.34-.155.482-.297l1.432-1.432a1.994 1.994 0 01.533-3.918c.919 0 1.684.623 1.918 1.467l1.338-1.338c.06-.06.11-.124.156-.191-.035-.062-.06-.13-.1-.188.096-.152.205-.31.315-.47.017-.348-.1-.7-.37-.971l-.177-.176c-.28.192-.561.387-.83.555-.345-.233-.746-.383-1.156-.5-.077-.507-.107-1.132-.187-1.625a5.44 5.44 0 00-.875-.063zm-9.247.608c-.087.068-.173.138-.254.205l.014.035z" style="marker:none" overflow="visible"/><path d="M8.707.293a1 1 0 00-1.415 0l-6.999 7a1 1 0 000 1.413l7 7.001a1 1 0 001.415 0l7-7a1 1 0 000-1.413zm-.708 2.121l5.587 5.587L8 13.586 2.414 7.999z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><g color="#000" fill="#2e3436"><path d="M7.188 2.281c-.094.056-.192.125-.29.19L5.566 3.803a1.684 1.684 0 11-2.17 2.17L2.332 7.037c.506-.069 1.017-.136 1.2.026.242.214.139 1.031.155 1.656.213.088.427.171.657.219.04.008.085-.007.125 0 .337-.525.683-1.288 1-1.344.322-.057.905.562 1.406.937a3.67 3.67 0 00.656-.468c-.195-.595-.594-1.369-.437-1.657.158-.29 1.019-.37 1.625-.531.028-.183.062-.371.062-.562 0-.075-.027-.146-.031-.22-.587-.217-1.435-.385-1.562-.687-.128-.302.34-1.021.593-1.593a3.722 3.722 0 00-.593-.532zm3.875 3.25c-.165.475-.305 1.086-.47 1.563-.43.047-.84.14-1.218.312-.38-.322-.787-.773-1.156-1.093a5.562 5.562 0 00-.688.468c.177.46.453 1.001.625 1.469-.298.309-.531.67-.719 1.063-.494 0-1.102-.084-1.593-.094a5.68 5.68 0 00-.219.812c.435.24 1.006.468 1.438.72-.006.093-.032.185-.032.28 0 .333.049.66.125.97-.382.304-.898.63-1.28.937.015.044.04.083.058.127l.613.613c.417-.1.868-.223 1.266-.303.248.343.532.626.875.875-.027.135-.068.283-.104.428.174-.063.34-.155.482-.297l1.432-1.432a1.994 1.994 0 01.533-3.918c.919 0 1.684.623 1.918 1.467l1.338-1.338c.06-.06.11-.124.156-.191-.035-.062-.06-.13-.1-.188.096-.152.205-.31.315-.47.017-.348-.1-.7-.37-.971l-.177-.176c-.28.192-.561.387-.83.555-.345-.233-.746-.383-1.156-.5-.077-.507-.107-1.132-.187-1.625a5.44 5.44 0 00-.875-.063zm-9.247.608c-.087.068-.173.138-.254.205l.014.035z" style="marker:none" overflow="visible"/><path d="M8.707.293a1 1 0 00-1.415 0l-6.999 7a1 1 0 000 1.413l7 7.001a1 1 0 001.415 0l7-7a1 1 0 000-1.413zm-.708 2.121l5.587 5.587L8 13.586 2.414 7.999z" style="line-height:normal;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000;text-transform:none;text-orientation:mixed;shape-padding:0;isolation:auto;mix-blend-mode:normal;marker:none" font-weight="400" font-family="sans-serif" overflow="visible"/></g></svg>
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 10 2 c -0.277344 0 -0.527344 0.113281 -0.707031 0.292969 l -5.707031 5.707031 l 5.707031 5.707031 c 0.179687 0.183594 0.429687 0.292969 0.707031 0.292969 h 1 v -1 c 0 -0.273438 -0.113281 -0.523438 -0.292969 -0.707031 l -4.292969 -4.292969 l 4.292969 -4.292969 c 0.179688 -0.179687 0.292969 -0.429687 0.292969 -0.707031 v -1 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 493 B |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><g fill="#222222"><path d="m 6.507812 1 c -3.027343 0 -5.507812 2.472656 -5.507812 5.5 s 2.480469 5.5 5.507812 5.5 c 3.027344 0 5.503907 -2.472656 5.503907 -5.5 s -2.476563 -5.5 -5.503907 -5.5 z m 0 2 c 1.945313 0 3.503907 1.554688 3.503907 3.5 s -1.558594 3.5 -3.503907 3.5 c -1.949218 0 -3.503906 -1.554688 -3.503906 -3.5 s 1.554688 -3.5 3.503906 -3.5 z m 0 0"/><path d="m 10 8.988281 c -0.40625 0.003907 -0.773438 0.25 -0.925781 0.625 c -0.152344 0.378907 -0.0625 0.808594 0.230469 1.09375 l 4.003906 4 c 0.25 0.261719 0.625 0.367188 0.972656 0.273438 c 0.351562 -0.089844 0.625 -0.363281 0.714844 -0.714844 c 0.09375 -0.347656 -0.011719 -0.722656 -0.273438 -0.972656 l -4.003906 -4 c -0.1875 -0.195313 -0.449219 -0.304688 -0.71875 -0.304688 z m 0 0"/></g></svg>
|
After Width: | Height: | Size: 892 B |
@ -0,0 +1,13 @@
|
||||
application_id = 'al.getcryst.jadegui'
|
||||
|
||||
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
|
||||
install_data(
|
||||
join_paths(scalable_dir, ('@0@.svg').format(application_id)),
|
||||
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
|
||||
)
|
||||
|
||||
symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
|
||||
install_data(
|
||||
join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)),
|
||||
install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir)
|
||||
)
|
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#2e3436" d="m 8 1 c -2.199219 0 -4 1.800781 -4 4 v 2 c -1.109375 0 -2 0.890625 -2 2 v 5 c 0 0.554688 0.445312 1 1 1 h 10 c 0.554688 0 1 -0.445312 1 -1 v -5 c 0 -1.109375 -0.890625 -2 -2 -2 v -2 c 0 -2.199219 -1.800781 -4 -4 -4 z m 0 2 c 1.125 0 2 0.875 2 2 v 2 h -4 v -2 c 0 -1.125 0.875 -2 2 -2 z m 0 0"/></svg>
|
After Width: | Height: | Size: 407 B |
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16px" viewBox="0 0 16 16" width="16px"><path d="m 5 2 v 1 c 0 0.277344 0.113281 0.527344 0.292969 0.707031 l 4.292969 4.292969 l -4.292969 4.292969 c -0.179688 0.183593 -0.292969 0.433593 -0.292969 0.707031 v 1 h 1 c 0.277344 0 0.527344 -0.109375 0.707031 -0.292969 l 5.707031 -5.707031 l -5.707031 -5.707031 c -0.179687 -0.179688 -0.429687 -0.292969 -0.707031 -0.292969 z m 0 0" fill="#222222"/></svg>
|
After Width: | Height: | Size: 490 B |
@ -0,0 +1,43 @@
|
||||
desktop_file = i18n.merge_file(
|
||||
input: 'al.getcryst.jadegui.desktop.in',
|
||||
output: 'al.getcryst.jadegui.desktop',
|
||||
type: 'desktop',
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'applications')
|
||||
)
|
||||
|
||||
desktop_utils = find_program('desktop-file-validate', required: false)
|
||||
if desktop_utils.found()
|
||||
test('Validate desktop file', desktop_utils,
|
||||
args: [desktop_file]
|
||||
)
|
||||
endif
|
||||
|
||||
appstream_file = i18n.merge_file(
|
||||
input: 'al.getcryst.jadegui.appdata.xml.in',
|
||||
output: 'al.getcryst.jadegui.appdata.xml',
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'appdata')
|
||||
)
|
||||
|
||||
appstream_util = find_program('appstream-util', required: false)
|
||||
if appstream_util.found()
|
||||
test('Validate appstream file', appstream_util,
|
||||
args: ['validate', appstream_file]
|
||||
)
|
||||
endif
|
||||
|
||||
install_data('al.getcryst.jadegui.gschema.xml',
|
||||
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
|
||||
)
|
||||
|
||||
compile_schemas = find_program('glib-compile-schemas', required: false)
|
||||
if compile_schemas.found()
|
||||
test('Validate schema file', compile_schemas,
|
||||
args: ['--strict', '--dry-run', meson.current_source_dir()]
|
||||
)
|
||||
endif
|
||||
|
||||
subdir('icons')
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="AdwAboutWindow" id="aboutWindow">
|
||||
<property name="application-name">Jade GUI</property>
|
||||
<property name="application-icon">al.getcryst.jadegui</property>
|
||||
<property name="modal">True</property>
|
||||
<property name="version">1.9.0</property>
|
||||
<property name="comments">Easily install Crystal Linux</property>
|
||||
<property name="website">https://getcryst.al</property>
|
||||
<property
|
||||
name="issue-url">https://git.getcryst.al/crystal/software/jade-gui/-/issues</property>
|
||||
<property name="license-type">gpl-3-0-only</property>
|
||||
<property name="developer-name">Crystal Linux dev team</property>
|
||||
<property name="developers">axtlos https://github.com/axtloss
|
||||
marshmallow https://marsh.town
|
||||
Matt https://github.com/SomethingGeneric
|
||||
Michal https://github.com/not-my-segfault
|
||||
Mirko Brombin https://github.com/mirkobrombin
|
||||
Hari Rana (TheEvilSkeleton) https://theevilskeleton.gitlab.io/</property>
|
||||
<property name="artists">jasio https://github.com/hericiumvevo</property>
|
||||
</object>
|
||||
</interface>
|
@ -0,0 +1,106 @@
|
||||
# install_prefs.py
|
||||
#
|
||||
# Copyright 2022
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-only
|
||||
|
||||
from jade_gui.utils import disks
|
||||
import json
|
||||
|
||||
|
||||
class InstallPrefs:
|
||||
def __init__(
|
||||
self,
|
||||
timezone,
|
||||
locale,
|
||||
layout,
|
||||
variant,
|
||||
username,
|
||||
password,
|
||||
enable_sudo,
|
||||
disk,
|
||||
hostname,
|
||||
ipv_enabled,
|
||||
timeshift_enabled,
|
||||
zramd_enabled,
|
||||
desktop,
|
||||
partition_mode,
|
||||
partitions,
|
||||
):
|
||||
self.timezone = timezone
|
||||
self.locale = locale
|
||||
self.layout = layout
|
||||
self.variant = variant
|
||||
self.username = username
|
||||
self.password = password
|
||||
self.enable_sudo = enable_sudo
|
||||
if partition_mode.lower() != "manual":
|
||||
self.disk = disk.disk
|
||||
else:
|
||||
self.disk = ""
|
||||
self.hostname = hostname if len(hostname) != 0 else "crystal"
|
||||
self.ipv_enabled = ipv_enabled
|
||||
self.timeshift_enabled = timeshift_enabled
|
||||
self.zramd_enabled = zramd_enabled
|
||||
self.desktop = desktop
|
||||
self.partition_mode = partition_mode
|
||||
self.partitions = partitions
|
||||
self.is_efi = disks.get_uefi()
|
||||
self.bootloader_type = "grub-efi" if self.is_efi else "grub-legacy"
|
||||
self.bootloader_location = "/boot/efi/" if self.is_efi else self.disk
|
||||
|
||||
def generate_json(self):
|
||||
prefs = {
|
||||
"partition": {
|
||||
"device": self.disk,
|
||||
"mode": self.partition_mode,
|
||||
"efi": self.is_efi,
|
||||
"partitions": self.partitions,
|
||||
},
|
||||
"bootloader": {
|
||||
"type": self.bootloader_type,
|
||||
"location": self.bootloader_location,
|
||||
},
|
||||
"locale": {
|
||||
"locale": self.locale,
|
||||
"keymap": self.layout.country_shorthand,
|
||||
"timezone": self.timezone.region + "/" + self.timezone.location,
|
||||
},
|
||||
"networking": {"hostname": self.hostname, "ipv6": self.ipv_enabled},
|
||||
"users": [
|
||||
{
|
||||
"name": self.username,
|
||||
"password": self.password,
|
||||
"hasroot": self.enable_sudo,
|
||||
"shell": "bash",
|
||||
}
|
||||
],
|
||||
"rootpass": self.password,
|
||||
"desktop": self.desktop.lower(),
|
||||
"timeshift": self.timeshift_enabled,
|
||||
"extra_packages": ["firefox"],
|
||||
"flatpak": True,
|
||||
"zramd": self.zramd_enabled,
|
||||
"unakite": {
|
||||
"enable": False,
|
||||
"root": "/dev/null",
|
||||
"oldroot": self.disk,
|
||||
"efidir": "/dev/null",
|
||||
"bootdev": "/dev/null",
|
||||
},
|
||||
"kernel": "linux",
|
||||
}
|
||||
return json.dumps(prefs)
|
@ -0,0 +1,19 @@
|
||||
class JadeScreen:
|
||||
def __init__(self, set_valid):
|
||||
super().__init__()
|
||||
self._set_valid = set_valid
|
||||
|
||||
self.valid = False
|
||||
|
||||
def is_valid(self):
|
||||
return self.valid
|
||||
|
||||
def set_valid(self, valid: bool):
|
||||
self.valid = valid
|
||||
self._set_valid(valid)
|
||||
|
||||
def on_show(self):
|
||||
pass
|
||||
|
||||
def on_complete(self):
|
||||
pass
|
@ -0,0 +1,25 @@
|
||||
# keymap.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
class Keymap:
|
||||
def __init__(self, layout, variants, backend_layout):
|
||||
self.layout = layout
|
||||
self.variants = variants
|
||||
self.backend_layout = backend_layout
|
@ -0,0 +1,25 @@
|
||||
# locale.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
class locale:
|
||||
def __init__(self, locales, region, location):
|
||||
self.locales = locales
|
||||
self.region = region
|
||||
self.location = location
|
@ -0,0 +1,12 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
classesdir = join_paths(pkgdatadir, 'jade_gui/classes')
|
||||
|
||||
jade_gui_sources = [
|
||||
'__init__.py',
|
||||
'locale.py',
|
||||
'keymap.py',
|
||||
'install_prefs.py',
|
||||
'partition.py',
|
||||
'jade_screen.py'
|
||||
]
|
||||
install_data(jade_gui_sources, install_dir: classesdir)
|
@ -0,0 +1,31 @@
|
||||
# manualpartition.py
|
||||
#
|
||||
# Copyright 2022 axtlos <axtlos@getcryst.al>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, version 3 of the License only.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0
|
||||
|
||||
|
||||
class Partition:
|
||||
def __init__(self, partition, mountpoint, filesystem, size):
|
||||
self.partition = partition
|
||||
self.mountpoint = mountpoint
|
||||
self.filesystem = filesystem
|
||||
self.size = size
|
||||
|
||||
def generate_jade_entry(self):
|
||||
mountpoint = "/mnt" + self.mountpoint
|
||||
if self.mountpoint == "none":
|
||||
mountpoint = "none"
|
||||
return mountpoint + ":/dev/" + self.partition[5:] + ":" + self.filesystem
|
After Width: | Height: | Size: 3.3 KiB |
@ -0,0 +1,8 @@
|
||||
desktops = [
|
||||
"Onyx",
|
||||
"GNOME",
|
||||
"Plasma",
|
||||
"XFCE",
|
||||
"Sway",
|
||||
"i3",
|
||||
]
|
@ -0,0 +1,48 @@
|
||||
# desktop_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/desktop_screen.ui")
|
||||
class DesktopScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "DesktopScreen"
|
||||
|
||||
list_desktops = Gtk.Template.Child()
|
||||
|
||||
chosen_desktop = ""
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
|
||||
self.list_desktops.connect("row-selected", self.selected_desktop)
|
||||
|
||||
def selected_desktop(self, widget, row):
|
||||
if row is not None:
|
||||
print(row.get_title())
|
||||
self.chosen_desktop = row.get_title()
|
||||
row.select_button.set_active(True)
|
||||
|
||||
self.set_valid(True)
|
||||
else:
|
||||
print("row is none!!")
|
@ -0,0 +1,87 @@
|
||||
# desktop_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
import subprocess, shutil
|
||||
from gi.repository import Gtk, Adw, GtkSource, Gdk
|
||||
from gettext import gettext as _
|
||||
from jade_gui.utils.command import CommandUtils
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
class LogWindow(Adw.Window):
|
||||
def __init__(self, window, title, content, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
self.title = title
|
||||
self.content = content
|
||||
self.create_window()
|
||||
self.set_default_size(700, 700)
|
||||
|
||||
def create_window(self):
|
||||
headerbar = Gtk.HeaderBar()
|
||||
copy_button = Gtk.Button.new_from_icon_name("edit-copy-symbolic")
|
||||
contentbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
|
||||
scrolled_view = Gtk.ScrolledWindow(vexpand=True, hexpand=True)
|
||||
style_scheme_manager = GtkSource.StyleSchemeManager.get_default()
|
||||
text_buffer = GtkSource.Buffer(
|
||||
highlight_syntax=False,
|
||||
style_scheme=style_scheme_manager.get_scheme("oblivion"),
|
||||
)
|
||||
text_view = GtkSource.View(
|
||||
buffer=text_buffer, show_line_numbers=True, monospace=True
|
||||
)
|
||||
text_buffer = text_view.get_buffer()
|
||||
headerbar.set_title_widget(Gtk.Label.new(self.title))
|
||||
headerbar.pack_end(copy_button)
|
||||
buffer_iter = text_buffer.get_end_iter()
|
||||
text_buffer.insert(buffer_iter, self.content)
|
||||
scrolled_view.set_child(text_view)
|
||||
contentbox.append(headerbar)
|
||||
contentbox.append(scrolled_view)
|
||||
self.set_content(contentbox)
|
||||
copy_button.connect("clicked", self.copy_content)
|
||||
|
||||
def copy_content(self, widget):
|
||||
clipboard = Gdk.Display.get_clipboard(Gdk.Display.get_default())
|
||||
clipboard.set_content(Gdk.ContentProvider.new_for_value(self.content))
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/finished_screen.ui")
|
||||
class FinishedScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "FinishedScreen"
|
||||
|
||||
reboot_button = Gtk.Template.Child()
|
||||
output_button = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
self.reboot_button.connect("clicked", self.reboot)
|
||||
self.output_button.connect("clicked", self.output)
|
||||
|
||||
self.set_valid(True)
|
||||
|
||||
def reboot(self, widget):
|
||||
CommandUtils.run_command(["gnome-session-quit", "--reboot"])
|
||||
|
||||
def output(self, widget):
|
||||
with open("/tmp/jade-gui-output.txt", "r") as f:
|
||||
output = f.read()
|
||||
LogWindow(window=self.window, title="Jade log view", content=output).present()
|
@ -0,0 +1,70 @@
|
||||
# installer_Screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import subprocess, os, shutil
|
||||
import asyncio
|
||||
from gi.repository import Gtk, GLib, Adw, Vte, Pango
|
||||
from gettext import gettext as _
|
||||
from jade_gui.utils.command import CommandUtils
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
import time
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/install_screen.ui")
|
||||
class InstallScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "InstallScreen"
|
||||
|
||||
log_box = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
|
||||
# Vte instance
|
||||
self.vte_instance = Vte.Terminal()
|
||||
self.vte_instance.set_cursor_blink_mode(Vte.CursorBlinkMode.ON)
|
||||
self.vte_instance.set_mouse_autohide(True)
|
||||
self.vte_instance.set_font(Pango.FontDescription("Source Code Pro Regular 12"))
|
||||
self.log_box.append(self.vte_instance)
|
||||
self.vte_instance.connect("child-exited", self.on_vte_child_exited)
|
||||
|
||||
self.set_valid(False)
|
||||
|
||||
def on_show(self):
|
||||
prefs = self.window.summary_screen.installprefs.generate_json()
|
||||
with open(os.getenv("HOME") + "/.config/jade.json", "w") as f:
|
||||
f.write(prefs)
|
||||
|
||||
prefs = self.window.summary_screen.installprefs.generate_json()
|
||||
|
||||
self.vte_instance.spawn_async(
|
||||
Vte.PtyFlags.DEFAULT,
|
||||
".", # working directory
|
||||
["bash", "/usr/share/jade-gui/jade_gui/scripts/install.sh"],
|
||||
[], # environment
|
||||
GLib.SpawnFlags.DO_NOT_REAP_CHILD,
|
||||
None,
|
||||
None,
|
||||
-1,
|
||||
None,
|
||||
None,
|
||||
)
|
||||
|
||||
def on_vte_child_exited(self, *args):
|
||||
self.set_valid(True)
|
@ -0,0 +1,143 @@
|
||||
# keyboard_Screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from jade_gui.locales.locales_list import locations
|
||||
from jade_gui.widgets.layout import KeyboardLayout
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
from jade_gui.utils.gtk_helpers import set_list_text
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
from jade_gui.utils.command import CommandUtils
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/keyboard/keyboard_screen.ui")
|
||||
class KeyboardScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "KeyboardScreen"
|
||||
|
||||
event_controller = Gtk.EventControllerKey.new()
|
||||
|
||||
preview = Gtk.Template.Child()
|
||||
keyboard_search_button = Gtk.Template.Child()
|
||||
country_preview_list = Gtk.Template.Child()
|
||||
variant_preview = Gtk.Template.Child()
|
||||
variant_preview_list = Gtk.Template.Child()
|
||||
|
||||
layout = None
|
||||
variant = ""
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, keymaps, set_valid, application, **kwargs):
|
||||
super().__init__(set_valid=set_valid, **kwargs)
|
||||
self.window = window
|
||||
|
||||
builder = Gtk.Builder.new_from_resource(
|
||||
"/al/getcryst/jadegui/pages/keyboard/keyboard_dialog.ui"
|
||||
)
|
||||
self.search_dialog = builder.get_object("search_dialog")
|
||||
|
||||
self.search_dialog.set_transient_for(self.window)
|
||||
self.search_dialog.set_modal(self.window)
|
||||
|
||||
self.keyboard_entry_search = builder.get_object("keyboard_entry_search")
|
||||
self.layout_list = builder.get_object("layout_list")
|
||||
self.keyboard_search = builder.get_object("keyboard_search")
|
||||
self.select_variant_button = builder.get_object("select_variant_button")
|
||||
|
||||
self.event_controller.connect("key-released", self.search_keyboards)
|
||||
self.keyboard_entry_search.add_controller(self.event_controller)
|
||||
|
||||
self.keyboard_search_button.connect("clicked", self.present_dialog)
|
||||
self.select_variant_button.connect("clicked", self.confirm_selection)
|
||||
|
||||
for keymap in keymaps:
|
||||
layout = KeyboardLayout(
|
||||
window=window,
|
||||
country=keymap.layout,
|
||||
country_shorthand=keymap.backend_layout,
|
||||
application=application,
|
||||
keymap=keymap,
|
||||
**kwargs,
|
||||
)
|
||||
self.layout_list.append(layout)
|
||||
|
||||
for row in layout.rows:
|
||||
if row.country_shorthand == "us" and row.variant == "normal":
|
||||
self.variant = layout
|
||||
self.select_variant(row)
|
||||
|
||||
break
|
||||
|
||||
def confirm_selection(self, *_):
|
||||
self.search_dialog.hide()
|
||||
|
||||
def select_variant(self, variant, *_):
|
||||
self.variant = variant
|
||||
|
||||
self.variant_preview.set_visible(variant.variant != "normal")
|
||||
|
||||
set_list_text(self.country_preview_list, variant.country)
|
||||
set_list_text(self.variant_preview_list, variant.variant)
|
||||
|
||||
self.preview.set_description(
|
||||
f'Test "{variant.country_shorthand} - {variant.variant}"'
|
||||
)
|
||||
|
||||
self.set_xkbmap(variant.country_shorthand, variant.variant)
|
||||
|
||||
self.set_valid(True)
|
||||
|
||||
def set_xkbmap(self, layout, variant=None):
|
||||
if variant is None or variant == "normal":
|
||||
CommandUtils.run_command(
|
||||
[
|
||||
"gsettings",
|
||||
"set",
|
||||
"org.gnome.desktop.input-sources",
|
||||
"sources",
|
||||
"[('xkb', '{}')]".format(layout),
|
||||
]
|
||||
)
|
||||
else:
|
||||
CommandUtils.run_command(
|
||||
[
|
||||
"gsettings",
|
||||
"set",
|
||||
"org.gnome.desktop.input-sources",
|
||||
"sources",
|
||||
"[('xkb', '{}+{}')]".format(layout, variant),
|
||||
]
|
||||
)
|
||||
|
||||
def present_dialog(self, *_):
|
||||
self.search_dialog.present()
|
||||
|
||||
def search_keyboards(self, *_):
|
||||
terms = self.keyboard_entry_search.get_text()
|
||||
self.layout_list.set_filter_func(self.filter_layouts, terms)
|
||||
|
||||
@staticmethod
|
||||
def filter_layouts(row, terms=None):
|
||||
try:
|
||||
text = row.get_title()
|
||||
text = text.lower() + row.get_subtitle().lower()
|
||||
if terms.lower() in text:
|
||||
return True
|
||||
except:
|
||||
return True
|
||||
return False
|
@ -0,0 +1,71 @@
|
||||
# language_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, only
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/language_screen.ui")
|
||||
class LanguageScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "LanguageScreen"
|
||||
|
||||
event_controller = Gtk.EventControllerKey.new()
|
||||
|
||||
### Page and widgets on timezone screen
|
||||
list_languages = Gtk.Template.Child()
|
||||
language_entry_search = Gtk.Template.Child()
|
||||
language_search = Gtk.Template.Child()
|
||||
|
||||
chosen_language = None
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
|
||||
self.event_controller.connect("key-released", self.search_languages())
|
||||
self.language_entry_search.add_controller(self.event_controller)
|
||||
self.list_languages.connect("row-selected", self.selected_language)
|
||||
self.next_page_button.connect("clicked", self.carousel_next)
|
||||
|
||||
def selected_language(self, widget, row):
|
||||
print(row)
|
||||
if row is not None or row is not self.language_search:
|
||||
print(row.get_title())
|
||||
self.chosen_language = row
|
||||
|
||||
self.set_valid(True)
|
||||
else:
|
||||
print("row is none!!")
|
||||
|
||||
def search_languages(self, *args):
|
||||
terms = self.language_entry_search.get_text()
|
||||
self.list_languages.set_filter_func(self.filter_languages, terms)
|
||||
|
||||
@staticmethod
|
||||
def filter_languages(row, terms=None):
|
||||
try:
|
||||
text = row.get_title()
|
||||
text = text.lower() + row.get_subtitle().lower()
|
||||
if terms.lower() in text:
|
||||
return True
|
||||
except:
|
||||
return True
|
||||
return False
|
@ -0,0 +1,193 @@
|
||||
# locale_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 axtlos <axtlos@getcryst.al>
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, version 3 of the License only.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
import time, locale
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
from jade_gui.widgets.locale import LocaleEntry
|
||||
from jade_gui.widgets.selected_locale import SelectedLocale
|
||||
from jade_gui.utils.gtk_helpers import set_list_text
|
||||
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/locale/locale_screen.ui")
|
||||
class LocaleScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "LocaleScreen"
|
||||
|
||||
event_controller = Gtk.EventControllerKey.new()
|
||||
|
||||
### Page and widgets on timezone screen
|
||||
locale_search_button = Gtk.Template.Child()
|
||||
status_page = Gtk.Template.Child()
|
||||
|
||||
main_locale_list = Gtk.Template.Child()
|
||||
other_locale_list = Gtk.Template.Child()
|
||||
|
||||
empty_locales = Gtk.Template.Child()
|
||||
|
||||
style_provider = Gtk.CssProvider()
|
||||
date_preview = Gtk.Template.Child()
|
||||
datespreview = Gtk.Template.Child()
|
||||
number_preview = Gtk.Template.Child()
|
||||
numberpreview = Gtk.Template.Child()
|
||||
chosen_locales = []
|
||||
other_locales = []
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, locations, set_valid, application, **kwargs):
|
||||
super().__init__(set_valid=set_valid, **kwargs)
|
||||
self.window = window
|
||||
self.application = application
|
||||
self.kwargs = kwargs
|
||||
self.style_provider.load_from_data(b".emptyLocales { font-style: italic; font-size: 15px; }")
|
||||
Gtk.StyleContext.add_provider(
|
||||
self.empty_locales.get_style_context(),
|
||||
self.style_provider,
|
||||
Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION
|
||||
)
|
||||
|
||||
|
||||
builder = Gtk.Builder.new_from_resource(
|
||||
"/al/getcryst/jadegui/pages/locale/locale_dialog.ui"
|
||||
)
|
||||
self.search_dialog = builder.get_object("search_dialog")
|
||||
|
||||
self.search_dialog.set_transient_for(self.window)
|
||||
self.search_dialog.set_modal(self.window)
|
||||
|
||||
self.locale_entry_search = builder.get_object("locale_entry_search")
|
||||
self.locale_list = builder.get_object("locale_list")
|
||||
self.locale_search = builder.get_object("locale_search")
|
||||
|
||||
self.event_controller.connect("key-released", self.search_locales)
|
||||
self.locale_entry_search.add_controller(self.event_controller)
|
||||
self.locale_list.connect("row-selected", self.select_locale)
|
||||
self.locale_search_button.connect("clicked", self.present_dialog)
|
||||
|
||||
self._locale_list_length = 1
|
||||
|
||||
en_US = LocaleEntry(
|
||||
page=self,
|
||||
window=window,
|
||||
locale="en_US.UTF-8 UTF-8",
|
||||
button_group=None,
|
||||
application=application,
|
||||
**kwargs,
|
||||
)
|
||||
self.locale_list.append(en_US)
|
||||
if(len(self.chosen_locales) <= 0):
|
||||
self.chosen_locales.append("en_US.UTF-8 UTF-8")
|
||||
set_list_text(self.main_locale_list, self.chosen_locales[0])
|
||||
locales=["en_US.UTF-8 UTF-8"] # Keep a list of added locales to avoid duplicates
|
||||
for i in locations:
|
||||
for locale in i:
|
||||
if locale.locales not in locales:
|
||||
row = LocaleEntry(
|
||||
page=self,
|
||||
window=window,
|
||||
locale=locale.locales,
|
||||
button_group=en_US.main_locale_button,
|
||||
application=application,
|
||||
**kwargs,
|
||||
)
|
||||
locales.append(locale.locales)
|
||||
if row.locale in self.chosen_locales[0]:
|
||||
row.main_locale_button.set_active(True)
|
||||
self.locale_list.append(row)
|
||||
self._locale_list_length += 1
|
||||
self.update_locale_preview()
|
||||
|
||||
def present_dialog(self, *_):
|
||||
self.search_dialog.present()
|
||||
|
||||
def update_from_row(self, row):
|
||||
if row.main_locale_button.get_active():
|
||||
set_list_text(self.main_locale_list, row.locale)
|
||||
for i in self.other_locales:
|
||||
if i.locale == row.locale:
|
||||
self.update_selected_locale_list(remove=i.locale, row=i)
|
||||
if self.other_locales == []:
|
||||
self.empty_locales.show()
|
||||
self.update_selected_locale_list(main=row.locale)
|
||||
else:
|
||||
self.empty_locales.set_visible(False)
|
||||
locale = SelectedLocale(
|
||||
page=self,
|
||||
window=self.window,
|
||||
locale=row.locale,
|
||||
application=self.application,
|
||||
**self.kwargs,
|
||||
)
|
||||
self.update_selected_locale_list(add=row.locale, row=locale)
|
||||
|
||||
def update_locale_preview(self):
|
||||
locale.setlocale(locale.LC_ALL, self.chosen_locales[0][:-6])
|
||||
self.datespreview.set_label(time.strftime(locale.nl_langinfo(locale.D_T_FMT)))
|
||||
self.numberpreview.set_label(locale.format_string("%.2f", 1234567.89, grouping=True)+" - "+locale.currency(1234.56, grouping=True))
|
||||
|
||||
def update_selected_locale_list(self, add=None, remove=None, main=None, row=None):
|
||||
if main:
|
||||
self.chosen_locales[0] = main
|
||||
self.set_valid(True)
|
||||
self.update_locale_preview()
|
||||
if add:
|
||||
if add not in self.chosen_locales:
|
||||
self.chosen_locales.append(add)
|
||||
if row is not None:
|
||||
self.other_locales.append(row)
|
||||
self.other_locale_list.add_row(row)
|
||||
if remove:
|
||||
if remove != self.chosen_locales[0]:
|
||||
self.chosen_locales.remove(remove)
|
||||
if row is not None:
|
||||
self.other_locales.remove(row)
|
||||
self.other_locale_list.remove(row)
|
||||
if self.other_locales == []:
|
||||
self.empty_locales.show()
|
||||
else:
|
||||
print("Tried to remove main locale!!")
|
||||
return
|
||||
print(self.chosen_locales)
|
||||
|
||||
def select_locale(self, widget, row):
|
||||
self.search_dialog.hide()
|
||||
|
||||
self.status_page.set_description("")
|
||||
self.update_from_row(row)
|
||||
|
||||
def search_locales(self, *args):
|
||||
terms = self.locale_entry_search.get_text()
|
||||
self.locale_list.set_filter_func(self.filter_locales, terms)
|
||||
|
||||
def on_show(self):
|
||||
self.chosen_locales = [self.window.timezone_screen.chosen_timezone.locale]
|
||||
if self.chosen_locales != []:
|
||||
self.set_valid(True)
|
||||
|
||||
@staticmethod
|
||||
def filter_locales(row, terms=None):
|
||||
try:
|
||||
text = row.get_title()
|
||||
text = text.lower() + row.get_subtitle().lower()
|
||||
if terms.lower() in text:
|
||||
return True
|
||||
except:
|
||||
return True
|
||||
return False
|
@ -0,0 +1,18 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
functionsdir = join_paths(pkgdatadir, 'jade_gui/functions')
|
||||
|
||||
jade_gui_sources = [
|
||||
'__init__.py',
|
||||
'keyboard_screen.py',
|
||||
'timezone_screen.py',
|
||||
'locale_screen.py',
|
||||
'user_screen.py',
|
||||
'desktop_screen.py',
|
||||
'misc_screen.py',
|
||||
'partition_screen.py',
|
||||
'summary_screen.py',
|
||||
'install_screen.py',
|
||||
'finished_screen.py',
|
||||
'welcome_screen.py'
|
||||
]
|
||||
install_data(jade_gui_sources, install_dir: functionsdir)
|
@ -0,0 +1,51 @@
|
||||
# misc_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/misc_screen.ui")
|
||||
class MiscScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "MiscScreen"
|
||||
|
||||
hostname_entry = Gtk.Template.Child()
|
||||
ipv_switch = Gtk.Template.Child()
|
||||
timeshift_switch = Gtk.Template.Child()
|
||||
zramd_switch = Gtk.Template.Child()
|
||||
|
||||
hostname = "crystal"
|
||||
ipv_enabled = False
|
||||
zramd_enabled = False
|
||||
timeshift_enabled = True
|
||||
zramd_enabled = True
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
|
||||
self.set_valid(True)
|
||||
|
||||
def on_complete(self, *_):
|
||||
self.hostname = self.hostname_entry.get_text()
|
||||
self.ipv_enabled = self.ipv_switch.get_state()
|
||||
self.zramd_enabled = self.zramd_switch.get_state()
|
||||
self.timeshift_enabled = self.timeshift_switch.get_state()
|
@ -0,0 +1,105 @@
|
||||
# partition_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, version 3 of the License only.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import subprocess, shutil
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
from jade_gui.utils import disks
|
||||
from jade_gui.utils.command import CommandUtils
|
||||
from jade_gui.widgets.partition import PartitionEntry
|
||||
from jade_gui.classes.partition import Partition
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/partition_screen.ui")
|
||||
class PartitionScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "PartitionScreen"
|
||||
|
||||
disk_list = Gtk.Template.Child()
|
||||
open_bash = Gtk.Template.Child()
|
||||
open_gparted = Gtk.Template.Child()
|
||||
partition_list = Gtk.Template.Child()
|
||||
reload_partitions = Gtk.Template.Child()
|
||||
manual_partitioning = Gtk.Template.Child()
|
||||
automatic_partitioning = Gtk.Template.Child()
|
||||
manual_partitioning_page = Gtk.Template.Child()
|
||||
automatic_partitioning_page = Gtk.Template.Child()
|
||||
|
||||
selected_partition = None
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
self.disk_list.connect("row_selected", self.row_selected)
|
||||
self.manual_partitioning.connect("clicked", self.switch_manual_partitioning)
|
||||
self.reload_partitions.connect("clicked", self.check_partitions)
|
||||
self.automatic_partitioning.connect(
|
||||
"clicked", self.switch_automatic_partitioning
|
||||
)
|
||||
self.open_bash.connect("clicked", self.bash)
|
||||
self.open_gparted.connect("clicked", self.gparted)
|
||||
|
||||
def gparted(self, widget):
|
||||
CommandUtils.run_command(["pkexec", "gparted"])
|
||||
|
||||
def bash(self, widget):
|
||||
CommandUtils.run_command(["kgx", "-e", "/usr/bin/bash"])
|
||||
|
||||
def check_partitions(self, widget):
|
||||
self.partition_list.select_all()
|
||||
print(self.partition_list.get_row_at_index(2))
|
||||
for i in range(0, len(self.window.available_partitions)):
|
||||
self.partition_list.remove(self.partition_list.get_row_at_index(0))
|
||||
self.available_partitions = disks.get_partitions()
|
||||
self.window.available_partitions = self.available_partitions
|
||||
for partition in self.available_partitions:
|
||||
self.partition_list.append(
|
||||
PartitionEntry(
|
||||
window=self,
|
||||
partition=Partition(
|
||||
partition=partition,
|
||||
mountpoint="",
|
||||
filesystem="",
|
||||
size=disks.get_disk_size(partition),
|
||||
),
|
||||
application=None,
|
||||
)
|
||||
)
|
||||
|
||||
def switch_automatic_partitioning(self, widget):
|
||||
self.automatic_partitioning_page.set_visible(True)
|
||||
self.manual_partitioning_page.set_visible(False)
|
||||
self.set_valid(False)
|
||||
self.window.partition_mode = "Auto"
|
||||
|
||||
def switch_manual_partitioning(self, widget):
|
||||
self.automatic_partitioning_page.set_visible(False)
|
||||
self.manual_partitioning_page.set_visible(True)
|
||||
self.set_valid(False)
|
||||
self.window.partition_mode = "Manual"
|
||||
|
||||
def row_selected(self, widget, row):
|
||||
if row is not None:
|
||||
print(row.get_title())
|
||||
row.select_button.set_active(True)
|
||||
self.selected_partition = row
|
||||
|
||||
self.set_valid(True)
|
||||
else:
|
||||
print("ERROR: invalid row slected")
|
@ -0,0 +1,191 @@
|
||||
# summary_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import os
|
||||
from jade_gui.utils import disks
|
||||
from jade_gui.classes.install_prefs import InstallPrefs
|
||||
from jade_gui.utils.threading import RunAsync
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/summary_screen.ui")
|
||||
class SummaryScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "SummaryScreen"
|
||||
|
||||
timezone_label = Gtk.Template.Child()
|
||||
timezone_button = Gtk.Template.Child()
|
||||
locales = Gtk.Template.Child()
|
||||
keyboard_label = Gtk.Template.Child()
|
||||
keyboard_button = Gtk.Template.Child()
|
||||
username_label = Gtk.Template.Child()
|
||||
username_button = Gtk.Template.Child()
|
||||
sudo_label = Gtk.Template.Child()
|
||||
sudo_button = Gtk.Template.Child()
|
||||
root_label = Gtk.Template.Child()
|
||||
root_button = Gtk.Template.Child()
|
||||
desktop_label = Gtk.Template.Child()
|
||||
desktop_button = Gtk.Template.Child()
|
||||
partition_label = Gtk.Template.Child()
|
||||
partition_button = Gtk.Template.Child()
|
||||
uefi_label = Gtk.Template.Child()
|
||||
ipv_label = Gtk.Template.Child()
|
||||
ipv_button = Gtk.Template.Child()
|
||||
timeshift_label = Gtk.Template.Child()
|
||||
timeshift_button = Gtk.Template.Child()
|
||||
zramd_label = Gtk.Template.Child()
|
||||
zramd_button = Gtk.Template.Child()
|
||||
added_locales = []
|
||||
# unakite_label = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
|
||||
self.set_valid(True)
|
||||
|
||||
self.locale_button = Gtk.Button(
|
||||
icon_name="document-edit-symbolic",
|
||||
halign="center",
|
||||
valign="center"
|
||||
)
|
||||
self.locales.add_action(self.locale_button)
|
||||
|
||||
self.timezone_button.connect(
|
||||
"clicked", self.window.show_page, self.window.timezone_screen
|
||||
)
|
||||
self.locale_button.connect(
|
||||
"clicked", self.window.show_page, self.window.locale_screen
|
||||
)
|
||||
self.keyboard_button.connect(
|
||||
"clicked", self.window.show_page, self.window.keyboard_screen
|
||||
)
|
||||
self.username_button.connect(
|
||||
"clicked", self.window.show_page, self.window.user_screen
|
||||
)
|
||||
self.sudo_button.connect(
|
||||
"clicked", self.window.show_page, self.window.user_screen
|
||||
)
|
||||
self.root_button.connect(
|
||||
"clicked", self.window.show_page, self.window.user_screen
|
||||
)
|
||||
self.desktop_button.connect(
|
||||
"clicked", self.window.show_page, self.window.desktop_screen
|
||||
)
|
||||
self.partition_button.connect(
|
||||
"clicked", self.window.show_page, self.window.partition_screen
|
||||
)
|
||||
self.ipv_button.connect(
|
||||
"clicked", self.window.show_page, self.window.misc_screen
|
||||
)
|
||||
self.timeshift_button.connect(
|
||||
"clicked", self.window.show_page, self.window.misc_screen
|
||||
)
|
||||
self.zramd_button.connect(
|
||||
"clicked", self.window.show_page, self.window.misc_screen
|
||||
)
|
||||
|
||||
def on_show(self):
|
||||
self.timezone_label.set_title(
|
||||
self.window.timezone_screen.chosen_timezone.region
|
||||
+ "/"
|
||||
+ self.window.timezone_screen.chosen_timezone.location
|
||||
)
|
||||
for i in self.window.locale_screen.chosen_locales:
|
||||
if i not in self.added_locales:
|
||||
self.locales.add_row(
|
||||
Adw.ActionRow(
|
||||
title=i,
|
||||
activatable=False,
|
||||
selectable=False,
|
||||
subtitle="Main locale" if i == self.window.locale_screen.chosen_locales[0] else ""
|
||||
)
|
||||
)
|
||||
self.added_locales.append(i)
|
||||
if len(self.window.locale_screen.chosen_locales) >= 5:
|
||||
self.locales.set_expanded(False)
|
||||
else:
|
||||
self.locales.set_expanded(True)
|
||||
|
||||
self.keyboard_label.set_title(self.window.keyboard_screen.variant.country)
|
||||
self.keyboard_label.set_subtitle(self.window.keyboard_screen.variant.variant)
|
||||
|
||||
self.username_label.set_title(self.window.user_screen.username)
|
||||
self.sudo_label.set_title(
|
||||
"sudo enabled" if self.window.user_screen.sudo_enabled else "sudo disabled"
|
||||
)
|
||||
self.root_label.set_title(
|
||||
"root enabled" if self.window.user_screen.root_enabled else "root disabled"
|
||||
)
|
||||
|
||||
self.desktop_label.set_title(self.window.desktop_screen.chosen_desktop)
|
||||
|
||||
if self.window.partition_mode == "Manual":
|
||||
self.partition_label.set_title("Manual partitioning selected")
|
||||
self.partition_label.set_subtitle("")
|
||||
else:
|
||||
self.partition_label.set_title(
|
||||
self.window.partition_screen.selected_partition.disk
|
||||
)
|
||||
self.partition_label.set_subtitle(
|
||||
self.window.partition_screen.selected_partition.disk_size
|
||||
)
|
||||
self.uefi_label.set_title("UEFI" if disks.get_uefi() else "Legacy BIOS")
|
||||
|
||||
self.ipv_label.set_title(
|
||||
"ipv6 enabled" if self.window.misc_screen.ipv_enabled else "ipv6 disabled"
|
||||
)
|
||||
self.timeshift_label.set_title(
|
||||
"timeshift enabled"
|
||||
if self.window.misc_screen.timeshift_enabled
|
||||
else "timeshift disabled"
|
||||
)
|
||||
self.zramd_label.set_title(
|
||||
"zramd enabled"
|
||||
if self.window.misc_screen.zramd_enabled
|
||||
else "zramd disabled"
|
||||
)
|
||||
# self.unakite_label.set_title("Unakite enabled "+"enabled" if self.window.misc_screen.)
|
||||
|
||||
partitions = []
|
||||
for i in range(0, len(self.window.available_partitions)):
|
||||
partition = self.window.partition_screen.partition_list.get_row_at_index(
|
||||
i
|
||||
).partition
|
||||
partitions.append(partition.generate_jade_entry())
|
||||
|
||||
self.installprefs = InstallPrefs(
|
||||
timezone=self.window.timezone_screen.chosen_timezone,
|
||||
locale=self.window.locale_screen.chosen_locales,
|
||||
layout=self.window.keyboard_screen.variant,
|
||||
variant=self.window.keyboard_screen.variant,
|
||||
username=self.window.user_screen.username,
|
||||
password=self.window.user_screen.password,
|
||||
enable_sudo=self.window.user_screen.sudo_enabled,
|
||||
disk=self.window.partition_screen.selected_partition,
|
||||
hostname=self.window.misc_screen.hostname,
|
||||
ipv_enabled=self.window.misc_screen.ipv_enabled,
|
||||
timeshift_enabled=self.window.misc_screen.timeshift_enabled,
|
||||
zramd_enabled=self.window.misc_screen.zramd_enabled,
|
||||
desktop=self.window.desktop_screen.chosen_desktop,
|
||||
partition_mode=self.window.partition_mode,
|
||||
partitions=partitions,
|
||||
)
|
||||
print(self.installprefs.generate_json())
|
@ -0,0 +1,123 @@
|
||||
# user_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
from gi.repository import Gtk, Adw
|
||||
from gettext import gettext as _
|
||||
import re, subprocess, shutil
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/user_screen.ui")
|
||||
class UserScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "UserScreen"
|
||||
|
||||
username_entry = Gtk.Template.Child()
|
||||
password_entry = Gtk.Template.Child()
|
||||
password_confirmation = Gtk.Template.Child()
|
||||
enable_sudo_switch = Gtk.Template.Child()
|
||||
enable_root_switch = Gtk.Template.Child()
|
||||
|
||||
username = ""
|
||||
sudo_enabled = True
|
||||
root_enabled = True
|
||||
username_filled = False
|
||||
password_filled = False
|
||||
move_to_summary = False
|
||||
|
||||
def __init__(self, window, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
self.sudo_enabled = True
|
||||
self.root_enabled = True
|
||||
self.enable_root_switch.set_active(self.root_enabled)
|
||||
self.enable_sudo_switch.set_active(self.sudo_enabled)
|
||||
self.username_entry.connect("changed", self.username_passes_regex)
|
||||
self.enable_root_switch.connect("state-set", self.enable_root_user)
|
||||
self.enable_sudo_switch.connect("state-set", self.enable_sudo)
|
||||
self.password_entry.connect("changed", self.verify_password)
|
||||
self.password_confirmation.connect("changed", self.verify_password)
|
||||
|
||||
def username_passes_regex(self, widget):
|
||||
input = self.username_entry.get_text()
|
||||
print(input)
|
||||
if not re.search("^[a-z_]([a-z0-9_-]{0,31}|[a-z0-9_-]{0,30}\$)$", input):
|
||||
print("Invalid username!")
|
||||
self.username_entry.add_css_class("error")
|
||||
self.username_filled = False
|
||||
self.verify_continue()
|
||||
else:
|
||||
print("Valid username!")
|
||||
self.username_entry.remove_css_class("error")
|
||||
self.username_filled = True
|
||||
self.verify_continue()
|
||||
self.username = input
|
||||
|
||||
def enable_root_user(self, widget, switch_state):
|
||||
print("root")
|
||||
print(self.root_enabled)
|
||||
print(switch_state)
|
||||
if switch_state == False and not self.sudo_enabled:
|
||||
self.root_enabled = switch_state
|
||||
self.sudo_enabled = not switch_state
|
||||
self.enable_sudo_switch.set_active(not switch_state)
|
||||
else:
|
||||
self.root_enabled = switch_state
|
||||
|
||||
def enable_sudo(self, widget, switch_state):
|
||||
print("sudo")
|
||||
print(self.root_enabled)
|
||||
print(switch_state)
|
||||
if switch_state == False and not self.root_enabled:
|
||||
self.sudo_enabled = switch_state
|
||||
self.root_enabled = not switch_state
|
||||
self.enable_root_switch.set_active(not switch_state)
|
||||
else:
|
||||
self.sudo_enabled = switch_state
|
||||
|
||||
def verify_password(self, widget):
|
||||
if (
|
||||
self.password_entry.get_text() == self.password_confirmation.get_text()
|
||||
and self.password_entry.get_text().strip()
|
||||
):
|
||||
self.password_filled = True
|
||||
self.verify_continue()
|
||||
self.password_confirmation.remove_css_class("error")
|
||||
self.password = self.encrypt_password(self.password_entry.get_text())
|
||||
self.password = (
|
||||
"'" + self.encrypt_password(self.password_entry.get_text()) + "'"
|
||||
)
|
||||
else:
|
||||
self.password_filled = False
|
||||
self.verify_continue()
|
||||
self.password_confirmation.add_css_class("error")
|
||||
|
||||
def verify_continue(self):
|
||||
self.set_valid(self.password_filled and self.username_filled)
|
||||
|
||||
def encrypt_password(self, password):
|
||||
command = subprocess.run(
|
||||
[shutil.which("openssl"), "passwd", "-6", password], capture_output=True
|
||||
)
|
||||
password_encrypted = command.stdout.decode("utf-8").strip("\n")
|
||||
return password_encrypted
|
||||
|
||||
def carousel_next_summary(self, widget):
|
||||
self.next_page.move_to_summary = True
|
||||
self.carousel.scroll_to(self.next_page, True)
|
@ -0,0 +1,64 @@
|
||||
# welcome_screen.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import time
|
||||
import urllib.request
|
||||
from gi.repository import Gtk, GLib, Adw
|
||||
from gettext import gettext as _
|
||||
from jade_gui.classes.jade_screen import JadeScreen
|
||||
|
||||
|
||||
@Gtk.Template(resource_path="/al/getcryst/jadegui/pages/welcome_screen.ui")
|
||||
class WelcomeScreen(JadeScreen, Adw.Bin):
|
||||
__gtype_name__ = "WelcomeScreen"
|
||||
|
||||
next_button = Gtk.Template.Child()
|
||||
no_internet = Gtk.Template.Child()
|
||||
|
||||
def __init__(self, window, next_page, online, application, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.window = window
|
||||
self.next_page = next_page
|
||||
self.online = online
|
||||
|
||||
self.set_valid(True)
|
||||
|
||||
self.next_button.connect("clicked", next_page)
|
||||
|
||||
self.do_check_internet = True
|
||||
|
||||
def check_internet(self):
|
||||
while self.do_check_internet:
|
||||
try:
|
||||
urllib.request.urlopen("https://getcryst.al", timeout=1)
|
||||
self.online()
|
||||
if not self.next_button.get_sensitive():
|
||||
GLib.idle_add(self.allow_continue, True)
|
||||
|
||||
self.do_check_internet = False
|
||||
print("internet!")
|
||||
except:
|
||||
GLib.idle_add(self.allow_continue, False)
|
||||
print("no internet!")
|
||||
time.sleep(1)
|
||||
|
||||
def allow_continue(self, allow: bool):
|
||||
self.set_valid(allow)
|
||||
self.next_button.set_sensitive(allow)
|
||||
self.no_internet.set_visible(not allow)
|
@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkShortcutsWindow" id="help_overlay">
|
||||
<property name="modal">true</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsSection">
|
||||
<property name="section-name">shortcuts</property>
|
||||
<property name="max-height">10</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true"
|
||||
context="shortcut window">General</property>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true"
|
||||
context="shortcut window">Show Shortcuts</property>
|
||||
<property name="action-name">win.show-help-overlay</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkShortcutsShortcut">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true"
|
||||
context="shortcut window">Quit</property>
|
||||
<property name="action-name">app.quit</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@ -0,0 +1,41 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/al/getcryst/jadegui">
|
||||
<file>window.ui</file>
|
||||
<file>about.ui</file>
|
||||
<file>widgets/timezone.ui</file>
|
||||
<file>widgets/layout.ui</file>
|
||||
<file>widgets/variant.ui</file>
|
||||
<file>widgets/desktop.ui</file>
|
||||
<file>widgets/disk.ui</file>
|
||||
<file>widgets/partition.ui</file>
|
||||
<file>widgets/locale.ui</file>
|
||||
<file>widgets/selected_locale.ui</file>
|
||||
<file>pages/desktop_screen.ui</file>
|
||||
<file>pages/finished_screen.ui</file>
|
||||
<file>pages/install_screen.ui</file>
|
||||
<file>pages/keyboard/keyboard_screen.ui</file>
|
||||
<file>pages/keyboard/keyboard_dialog.ui</file>
|
||||
<file>pages/misc_screen.ui</file>
|
||||
<file>pages/partition_screen.ui</file>
|
||||
<file>pages/summary_screen.ui</file>
|
||||
<file>pages/timezone/timezone_screen.ui</file>
|
||||
<file>pages/user_screen.ui</file>
|
||||
<file>pages/welcome_screen.ui</file>
|
||||
<file>pages/timezone/timezone_dialog.ui</file>
|
||||
<file>pages/locale/locale_dialog.ui</file>
|
||||
<file>pages/locale/locale_screen.ui</file>
|
||||
<file>gtk/help-overlay.ui</file>
|
||||
<file>crystal-logo-minimal.png</file>
|
||||
<file>style.css</file>
|
||||
</gresource>
|
||||
<gresource prefix="/al/getcryst/jadegui/icons/scalable/actions">
|
||||
<file
|
||||
alias="padlock2-symbolic.svg">../data/icons/padlock2-symbolic.svg</file>
|
||||
<file alias="right-symbolic.svg">../data/icons/right-symbolic.svg</file>
|
||||
<file alias="left-symbolic.svg">../data/icons/left-symbolic.svg</file>
|
||||
<file alias="loupe-symbolic.svg">../data/icons/loupe-symbolic.svg</file>
|
||||
<file
|
||||
alias="clock-alt-symbolic.svg">../data/icons/clock-alt-symbolic.svg</file>
|
||||
</gresource>
|
||||
</gresources>
|
@ -0,0 +1,46 @@
|
||||
#!@PYTHON@
|
||||
|
||||
# jade_gui.in
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import locale
|
||||
import gettext
|
||||
|
||||
VERSION = '@VERSION@'
|
||||
pkgdatadir = '@pkgdatadir@'
|
||||
localedir = '@localedir@'
|
||||
|
||||
sys.path.insert(1, pkgdatadir)
|
||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||
locale.bindtextdomain('jade_gui', localedir)
|
||||
locale.textdomain('jade_gui')
|
||||
gettext.install('jade_gui', localedir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import gi
|
||||
|
||||
from gi.repository import Gio
|
||||
resource = Gio.Resource.load(os.path.join(pkgdatadir, 'jade_gui.gresource'))
|
||||
resource._register()
|
||||
|
||||
from jade_gui import main
|
||||
sys.exit(main.main(VERSION))
|
@ -0,0 +1,269 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
africa = [
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Abidjan",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Accra",
|
||||
locales="en_GH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Addis_Ababa",
|
||||
locales="en_ET.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Algiers",
|
||||
locales="ar_DZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Asmara",
|
||||
locales="en_ER.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Bamako",
|
||||
locales="fr_ML.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Bangui",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Banjul",
|
||||
locales="en_GM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Bissau",
|
||||
locales="pt_GW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Blantyre",
|
||||
locales="en_MW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Brazzaville",
|
||||
locales="fr_CD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Bujumbura",
|
||||
locales="fr_BI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Cairo",
|
||||
locales="ar_EG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Casablanca",
|
||||
locales="ar_MA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Ceuta",
|
||||
locales="es_ES.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Conakry",
|
||||
locales="fr_GN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Dakar",
|
||||
locales="fr_SN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Dar_es_Salaam",
|
||||
locales="en_TZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Djibouti",
|
||||
locales="fr_DJ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Douala",
|
||||
locales="fr_CM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="El_Aaiun",
|
||||
locales="ar_EH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Freetown",
|
||||
locales="en_SL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Gaborone",
|
||||
locales="en_BW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Harare",
|
||||
locales="en_ZW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Johannesburg",
|
||||
locales="en_ZA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Juba",
|
||||
locales="en_SS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Kampala",
|
||||
locales="en_UG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Khartoum",
|
||||
locales="",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Kigali",
|
||||
locales="en_RW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Kinshasa",
|
||||
locales="fr_CD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Lagos",
|
||||
locales="en_NG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Libreville",
|
||||
locales="fr_GA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Lome",
|
||||
locales="fr_TG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Luanda",
|
||||
locales="pt_AO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Lubumbashi",
|
||||
locales="fr_CD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Lusaka",
|
||||
locales="en_ZM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Malabo",
|
||||
locales="fr_GQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Maputo",
|
||||
locales="en_MZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Maseru",
|
||||
locales="en_LS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Mbabane",
|
||||
locales="en_SZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Mogadishu",
|
||||
locales="en_SO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Monrovia",
|
||||
locales="en_LR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Nairobi",
|
||||
locales="en_KE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Ndjamena",
|
||||
locales="fr_TD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Niamey",
|
||||
locales="fr_NE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Nouakchott",
|
||||
locales="ar_MR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Ouagadougou",
|
||||
locales="fr_BF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Porto-Novo",
|
||||
locales="fr_BJ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Sao_Tome",
|
||||
locales="pt_ST.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Timbuktu",
|
||||
locales="fr_ML.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Tripoli",
|
||||
locales="ar_LY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Tunis",
|
||||
locales="fr_TN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Africa",
|
||||
location="Windhoek",
|
||||
locales="en_NA.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,776 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
america = [
|
||||
locale(
|
||||
region="America",
|
||||
location="Adak",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Anchorage",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Antigua",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Araguaina",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Buenos_Aires",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Catamarca",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/ComodRivadavia",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Cordoba",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Jujuy",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/La_Rioja",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Mendoza",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Rio_Gallegos",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Salta",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/San_Juan",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/San_Luis",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Tucuman",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Argentina/Ushuaia",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Aruba",
|
||||
locales="nl_NL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Asuncion",
|
||||
locales="es_PY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Atikokan",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Atka",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Bahia",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Bahia_Banderas",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Barbados",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Belem",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Belize",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Blanc-Sablon",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Boa_Vista",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Bogota",
|
||||
locales="es_CO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Boise",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Buenos_Aires",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cambridge_Bay",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Campo_Grande",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cancun",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Caracas",
|
||||
locales="es_VE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Catamarca",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cayenne",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cayman",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Chicago",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Chihuahua",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Coral_Harbour",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cordoba",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Costa_Rica",
|
||||
locales="es_ES.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Creston",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Cuiaba",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Curacao",
|
||||
locales="nl_NL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Danmarkshavn",
|
||||
locales="da_DK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Dawson",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Dawson_Creek",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Denver",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Detroit",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Dominica",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Edmonton",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Eirunepe",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="El_Salvador",
|
||||
locales="es_SV.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Ensenada",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Fort_Nelson",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Fort_Wayne",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Fortaleza",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Glace_Bay",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Godthab",
|
||||
locales="da_DK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Goose_Bay",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Grand_Turk",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Grenada",
|
||||
locales="en_GD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Guadeloupe",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Guatemala",
|
||||
locales="es_GT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Guayaquil",
|
||||
locales="es_EC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Guyana",
|
||||
locales="en_GY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Halifax",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Havana",
|
||||
locales="es_CU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Hermosillo",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Indianapolis",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Inuvik",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Iqaluit",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Jamaica",
|
||||
locales="en_JM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Jujuy",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Juneau",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America", location="Kentucky/Louisville", locales="en_US.UTF.8 UTF-8"
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Knox_IN",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Kralendijk",
|
||||
locales="nl_NL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="La_Paz",
|
||||
locales="es_BO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Lima",
|
||||
locales="es_PE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Los_Angeles",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Lower_Princes",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Maceio",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Managua",
|
||||
locales="es_NI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Manaus",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Marigot",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Martinique",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Matamoros",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Mazatlan",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Mendoza",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Menominee",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Merida",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Metlakatla",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Mexico_City",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Miquelon",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Moncton",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Monterrey",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Montevideo",
|
||||
locales="es_UY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Montreal",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Montserrat",
|
||||
locales="en_MS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Nassau",
|
||||
locales="en_BS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="New_York",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Nipigon",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Nome",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Noronha",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America", location="North_Dakota/Beulah", locales="en_US.UTF-8 UTF-8"
|
||||
),
|
||||
locale(
|
||||
region="America", location="North_Dakota/Center", locales="en_US.UTF-8 UTF-8"
|
||||
),
|
||||
locale(
|
||||
region="America", location="North_Dakota/New_Salem", locales="en_US.UTF-8 UTF-8"
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Nuuk",
|
||||
locales="en_GL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Ojinaga",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Panama",
|
||||
locales="es_PA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Pangnirtung",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Paramaribo",
|
||||
locales="nl_SR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Phoenix",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Port-au-Prince",
|
||||
locales="fr_HT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Porto_Acre",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Port_of_Spain",
|
||||
locales="en_TT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Porto_Velho",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Puerto_Rico",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Punta_Arenas",
|
||||
locales="es_CL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Rainy_River",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Rankin_Inlet",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Recife",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Regina",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Resolute",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Rio_Branco",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Rosario",
|
||||
locales="es_AR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Santa_Isabel",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Santarem",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Santiago",
|
||||
locales="es_CL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Santo_Domingo",
|
||||
locales="es_DO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Sao_Paulo",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Scoresbysund",
|
||||
locales="da_DK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Shiprock",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Sitka",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Barthelemy",
|
||||
locales="fr_BL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Johns",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Kitts",
|
||||
locales="en_KN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Lucia",
|
||||
locales="en_LC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Thomas",
|
||||
locales="en_VI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="St_Vincent",
|
||||
locales="en_VC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Swift_Current",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Tegucigalpa",
|
||||
locales="es_HN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Thule",
|
||||
locales="en_GL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Thunder_Bay",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Tijuana",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Toronto",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Tortola",
|
||||
locales="en_VG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Vancouver",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Virgin",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Whitehorse",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Winnipeg",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Yakutat",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="America",
|
||||
location="Yellowknife",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,64 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
antarctica = [
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Casey",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Davis",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="DumontDurville",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Macquarie",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Mawson",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="McMurdo",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Palmer",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Rothera",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="South_Pole",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Syowa",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Troll",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Antarctica",
|
||||
location="Vostok",
|
||||
locales="en_AQ.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,9 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
arctic = [
|
||||
locale(
|
||||
region="Arctic",
|
||||
location="Longyearbyen",
|
||||
locales="no_NO.UTF-8 UTF-8",
|
||||
)
|
||||
]
|
@ -0,0 +1,494 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
asia = [
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Aden",
|
||||
locales="ar_SA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Almaty",
|
||||
locales="kk_KZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Amman",
|
||||
locales="ar_JO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Anadyr",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Aqtau",
|
||||
locales="kk_KZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Aqtobe",
|
||||
locales="kk_KZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ashgabat",
|
||||
locales="tk_TM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ashkhabad",
|
||||
locales="tk_TM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Atyrau",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Baghdad",
|
||||
locales="ar_IQ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Bahrain",
|
||||
locales="ar_BH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Baku",
|
||||
locales="az_AZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Bangkok",
|
||||
locales="th_TH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Barnaul",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Beirut",
|
||||
locales="ar_LB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Bishkek",
|
||||
locales="ky_KG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Brunei",
|
||||
locales="ms_BN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Chita",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Choibalsan",
|
||||
locales="mn_MN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Chongqing",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Chungking",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Colombo",
|
||||
locales="si_LK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Dacca",
|
||||
locales="bn_BD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Damascus",
|
||||
locales="ar_SY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Dhaka",
|
||||
locales="bn_BD.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Dili",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Dubai",
|
||||
locales="ar_AE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Dushanbe",
|
||||
locales="tg_TJ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Famagusta",
|
||||
locales="tr_TR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Gaza",
|
||||
locales="ar_PS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Harbin",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Hebron",
|
||||
locales="ar_PS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ho_Chi_Minh",
|
||||
locales="vi_VN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Hong_Kong",
|
||||
locales="zh_HK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Hovd",
|
||||
locales="mn_MN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Irkutsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Istanbul",
|
||||
locales="tr_TR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Jakarta",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Jayapura",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Jerusalem",
|
||||
locales="he_IL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kabul",
|
||||
locales="fa_AF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kamchatka",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Karachi",
|
||||
locales="ur_PK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kashgar",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kathmandu",
|
||||
locales="ne_NP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Katmandu",
|
||||
locales="ne_NP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Khandyga",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kolkata",
|
||||
locales="hi_IN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Krasnoyarsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kuala_Lumpur",
|
||||
locales="ms_MY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kuching",
|
||||
locales="ms_MY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Kuwait",
|
||||
locales="ar_KW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Macao",
|
||||
locales="zh_MO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Macau",
|
||||
locales="zh_MO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Magadan",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Makassar",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Manila",
|
||||
locales="tl_PH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Muscat",
|
||||
locales="ar_OM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Nicosia",
|
||||
locales="el_CY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Novokuznetsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Novosibirsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Omsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Oral",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Phnom_Penh",
|
||||
locales="kh_KH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Pontianak",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Pyongyang",
|
||||
locales="ko_KP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Qatar",
|
||||
locales="ar_QA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Qostanay",
|
||||
locales="kk_KZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Qyzylorda",
|
||||
locales="kk_KZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Rangoon",
|
||||
locales="my_MM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Riyadh",
|
||||
locales="ar_SA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Saigon",
|
||||
locales="vi_VN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Sakhalin",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Samarkand",
|
||||
locales="uz_UZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Seoul",
|
||||
locales="ko_KR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Shanghai",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Singapore",
|
||||
locales="en_SG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Srednekolymsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Taipei",
|
||||
locales="zh_TW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tashkent",
|
||||
locales="uz_UZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tbilisi",
|
||||
locales="ka_GE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tehran",
|
||||
locales="fa_IR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tel_Aviv",
|
||||
locales="he_IL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Thimbu",
|
||||
locales="ne_NP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Thimphu",
|
||||
locales="ne_NP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tokyo",
|
||||
locales="ja_JP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Tomsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ujung_Pandang",
|
||||
locales="id_ID.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ulaanbaatar",
|
||||
locales="mn_MN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ulan_Bator",
|
||||
locales="mn_MN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Urumqi",
|
||||
locales="zh_CN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Ust-Nera",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Vientiane",
|
||||
locales="vi_VN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Vladivostok",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Yakutsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Yangon",
|
||||
locales="my_MM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Yekaterinburg",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Asia",
|
||||
location="Yerevan",
|
||||
locales="hy_AM.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,64 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
atlantic = [
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Azores",
|
||||
locales="pt_PT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Bermuda",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Canary",
|
||||
locales="es_ES.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Cape_Verde",
|
||||
locales="pt_PT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Faeroe",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Faroe",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Jan_Mayen",
|
||||
locales="nb_NO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Madeira",
|
||||
locales="pt_PT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Reykjavik",
|
||||
locales="is_IS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="South_Georgia",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="Stanley",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="atlantic",
|
||||
location="St_Helena",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,89 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
australia = [
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Adelaide",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Brisbane",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Broken_Hill",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Canberra",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Currie",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Darwin",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Eucla",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Hobart",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Lindeman",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Lord_Howe",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Melbourne",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Perth",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Queensland",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Sydney",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Tasmania",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Victoria",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Australia",
|
||||
location="Yancowinna",
|
||||
locales="en_AU.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
brazil = [
|
||||
locale(
|
||||
region="Brazil",
|
||||
location="Acre",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Brazil",
|
||||
location="DeNoronha",
|
||||
locales="pt_BR.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,39 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
canada = [
|
||||
locale(
|
||||
region="canada",
|
||||
location="Atlantic",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Central",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Eastern",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Mountain",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Newfoundland",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Pacific",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="canada",
|
||||
location="Yukon",
|
||||
locales="en_CA.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,14 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
chile = [
|
||||
locale(
|
||||
region="Chile",
|
||||
location="Continental",
|
||||
locales="es_CL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Chile",
|
||||
location="EasterIsland",
|
||||
locales="es_CL.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,314 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
europe = [
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Amsterdam",
|
||||
locales="nl_NL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Andorra",
|
||||
locales="ca_ES.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Athens",
|
||||
locales="el_GR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Belfast",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Belgrade",
|
||||
locales="sr_RS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Berlin",
|
||||
locales="de_DE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Bratislava",
|
||||
locales="sk_SK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Brussels",
|
||||
locales="nl_BE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Bucharest",
|
||||
locales="ro_RO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Budapest",
|
||||
locales="hu_HU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Busingen",
|
||||
locales="de_DE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Chisinau",
|
||||
locales="ro_RO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Copenhagen",
|
||||
locales="da_DK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Dublin",
|
||||
locales="en_IE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Gibraltar",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Guernsey",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Helsinki",
|
||||
locales="fi_FI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Isle_of_Man",
|
||||
locales="en_IM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Istanbul",
|
||||
locales="tr_TR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Jersey",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Kaliningrad",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Kiev",
|
||||
locales="uk_UA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Kirov",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Lisbon",
|
||||
locales="pt_PT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Ljubljana",
|
||||
locales="sl_SI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="London",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Luxembourg",
|
||||
locales="fr_LU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Madrid",
|
||||
locales="es_ES.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Malta",
|
||||
locales="en_GB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Mariehamn",
|
||||
locales="sv_SE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Minsk",
|
||||
locales="be_BY.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Monaco",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Moscow",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Nicosia",
|
||||
locales="el_GR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Oslo",
|
||||
locales="no_NO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Paris",
|
||||
locales="fr_FR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Podgorica",
|
||||
locales="sr_RS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Prague",
|
||||
locales="cs_CZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Riga",
|
||||
locales="lv_LV.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Rome",
|
||||
locales="it_IT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Samara",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="San_Marino",
|
||||
locales="it_IT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Sarajevo",
|
||||
locales="bs_BA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Saratov",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Simferopol",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Skopje",
|
||||
locales="mk_MK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Sofia",
|
||||
locales="bg_BG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Stockholm",
|
||||
locales="sv_SE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Tallinn",
|
||||
locales="et_EE.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Tirane",
|
||||
locales="sq_AL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Tiraspol",
|
||||
locales="ro_RO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Ulyanovsk",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Uzhgorod",
|
||||
locales="uk_UA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Vaduz",
|
||||
locales="de_AT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Vatican",
|
||||
locales="it_IT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Vienna",
|
||||
locales="de_AT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Vilnius",
|
||||
locales="lt_LT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Volgograd",
|
||||
locales="ru_RU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Warsaw",
|
||||
locales="pl_PL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Zagreb",
|
||||
locales="hr_HR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Zaporozhye",
|
||||
locales="uk_UA.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Europe",
|
||||
location="Zurich",
|
||||
locales="de_CH.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,59 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
indian = [
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Antananarivo",
|
||||
locales="fr_MG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Chagos",
|
||||
locales="en_IO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Christmas",
|
||||
locales="en_CX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Cocos",
|
||||
locales="en_CC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Comoro",
|
||||
locales="fr_KM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Kerguelen",
|
||||
locales="fr_TF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Mahe",
|
||||
locales="en_SC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Maldives",
|
||||
locales="en_MV.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Mauritius",
|
||||
locales="en_MU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Mayotte",
|
||||
locales="fr_YT.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Indian",
|
||||
location="Reunion",
|
||||
locales="fr_RE.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,49 @@
|
||||
# locales.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License only.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from jade_gui.locales.africa import africa
|
||||
from jade_gui.locales.america import america
|
||||
from jade_gui.locales.antarctica import antarctica
|
||||
from jade_gui.locales.arctic import arctic
|
||||
from jade_gui.locales.asia import asia
|
||||
from jade_gui.locales.atlantic import atlantic
|
||||
from jade_gui.locales.australia import australia
|
||||
from jade_gui.locales.brazil import brazil
|
||||
from jade_gui.locales.canada import canada
|
||||
from jade_gui.locales.chile import chile
|
||||
from jade_gui.locales.europe import europe
|
||||
from jade_gui.locales.indian import indian
|
||||
from jade_gui.locales.mexico import mexico
|
||||
from jade_gui.locales.pacific import pacific
|
||||
|
||||
locations = [
|
||||
africa,
|
||||
america,
|
||||
antarctica,
|
||||
arctic,
|
||||
asia,
|
||||
atlantic,
|
||||
australia,
|
||||
brazil,
|
||||
canada,
|
||||
chile,
|
||||
europe,
|
||||
indian,
|
||||
mexico,
|
||||
pacific,
|
||||
]
|
@ -0,0 +1,22 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
localesdir = join_paths(pkgdatadir, 'jade_gui/locales')
|
||||
|
||||
jade_gui_sources = [
|
||||
'__init__.py',
|
||||
'africa.py',
|
||||
'america.py',
|
||||
'antarctica.py',
|
||||
'arctic.py',
|
||||
'asia.py',
|
||||
'atlantic.py',
|
||||
'australia.py',
|
||||
'brazil.py',
|
||||
'canada.py',
|
||||
'chile.py',
|
||||
'europe.py',
|
||||
'indian.py',
|
||||
'mexico.py',
|
||||
'pacific.py',
|
||||
'locales_list.py',
|
||||
]
|
||||
install_data(jade_gui_sources, install_dir: localesdir)
|
@ -0,0 +1,19 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
mexico = [
|
||||
locale(
|
||||
region="Mexico",
|
||||
location="BajaNorte",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Mexico",
|
||||
location="BajaSur",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Mexico",
|
||||
location="General",
|
||||
locales="es_MX.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,219 @@
|
||||
from jade_gui.classes.locale import locale
|
||||
|
||||
pacific = [
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Apia",
|
||||
locales="en_WS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Auckland",
|
||||
locales="en_NZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Bougainville",
|
||||
locales="en_PG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Chatham",
|
||||
locales="en_NZ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Chuuk",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Easter",
|
||||
locales="en_CL.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Efate",
|
||||
locales="en_VU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Enderbury",
|
||||
locales="en_KI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Fakaofo",
|
||||
locales="en_TK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Fiji",
|
||||
locales="en_FJ.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Funafuti",
|
||||
locales="en_TV.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Galapagos",
|
||||
locales="en_EC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Gambier",
|
||||
locales="en_PF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Guadalcanal",
|
||||
locales="en_SB.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Guam",
|
||||
locales="en_GU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Honolulu",
|
||||
locales="en_US.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Johnston",
|
||||
locales="en_UM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Kiritimati",
|
||||
locales="en_KI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Kosrae",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Kwajalein",
|
||||
locales="en_MH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Majuro",
|
||||
locales="en_MH.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Marquesas",
|
||||
locales="en_PF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Midway",
|
||||
locales="en_UM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Nauru",
|
||||
locales="en_NR.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Niue",
|
||||
locales="en_NU.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Norfolk",
|
||||
locales="en_NF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Noumea",
|
||||
locales="en_NC.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Pago_Pago",
|
||||
locales="en_AS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Palau",
|
||||
locales="en_PW.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Pitcairn",
|
||||
locales="en_PN.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Pohnpei",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Ponape",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Port_Moresby",
|
||||
locales="en_PG.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Rarotonga",
|
||||
locales="en_CK.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Saipan",
|
||||
locales="en_MP.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Samoa",
|
||||
locales="en_AS.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Tahiti",
|
||||
locales="en_PF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Tarawa",
|
||||
locales="en_KI.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Tongatapu",
|
||||
locales="en_TO.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Truk",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Wake",
|
||||
locales="en_UM.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Wallis",
|
||||
locales="en_WF.UTF-8 UTF-8",
|
||||
),
|
||||
locale(
|
||||
region="Pacific",
|
||||
location="Yap",
|
||||
locales="en_FM.UTF-8 UTF-8",
|
||||
),
|
||||
]
|
@ -0,0 +1,82 @@
|
||||
# main.py
|
||||
|
||||
#
|
||||
# Copyright 2022 user
|
||||
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import sys
|
||||
import gi
|
||||
|
||||
gi.require_version("Gtk", "4.0")
|
||||
gi.require_version("Adw", "1")
|
||||
gi.require_version("GtkSource", "5")
|
||||
gi.require_version("Vte", "3.91")
|
||||
|
||||
|
||||
from gi.repository import Gtk, Gio, Adw
|
||||
from jade_gui.window import JadeGuiWindow
|
||||
|
||||
|
||||
class Jade_guiApplication(Adw.Application):
|
||||
"""The main application singleton class."""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(
|
||||
application_id="al.getcryst.jadegui", flags=Gio.ApplicationFlags.FLAGS_NONE
|
||||
)
|
||||
self.create_action("quit", self.quit, ["<primary>q"])
|
||||
self.create_action("about", self.on_about_action)
|
||||
self.create_action("preferences", self.on_preferences_action)
|
||||
|
||||
def do_activate(self):
|
||||
"""Called when the application is activated.
|
||||
|
||||
We raise the application's main window, creating it if
|
||||
necessary.
|
||||
"""
|
||||
win = self.props.active_window
|
||||
if not win:
|
||||
win = JadeGuiWindow(application=self)
|
||||
win.present()
|
||||
|
||||
def on_about_action(self, widget, _):
|
||||
"""Callback for the app.about action."""
|
||||
about = AboutDialog(self.props.active_window)
|
||||
about.present()
|
||||
|
||||
def on_preferences_action(self, widget, _):
|
||||
"""Callback for the app.preferences action."""
|
||||
print("app.preferences action activated")
|
||||
|
||||
def create_action(self, name, callback, shortcuts=None):
|
||||
"""Add an application action.
|
||||
|
||||
Args:
|
||||
name: the name of the action
|
||||
callback: the function to be called when the action is activated
|
||||
shortcuts: an optional list of accelerators
|
||||
"""
|
||||
action = Gio.SimpleAction.new(name, None)
|
||||
action.connect("activate", callback)
|
||||
self.add_action(action)
|
||||
if shortcuts:
|
||||
self.set_accels_for_action(f"app.{name}", shortcuts)
|
||||
|
||||
|
||||
def main(version):
|
||||
"""The application's entry point."""
|
||||
app = Jade_guiApplication()
|
||||
return app.run(sys.argv)
|
@ -0,0 +1,27 @@
|
||||
filesystems = [
|
||||
"don't format",
|
||||
"bfs",
|
||||
"cramfs",
|
||||
"ext3",
|
||||
"fat",
|
||||
"msdos",
|
||||
"xfs",
|
||||
"btrfs",
|
||||
"ext2",
|
||||
"ext4",
|
||||
"minix",
|
||||
"vfat",
|
||||
"f2fs",
|
||||
]
|
||||
|
||||
mountpoints = [
|
||||
"none",
|
||||
"/",
|
||||
"/boot",
|
||||
"/boot/efi",
|
||||
"/home",
|
||||
"/opt",
|
||||
"/tmp",
|
||||
"/usr",
|
||||
"/var",
|
||||
]
|
@ -0,0 +1,44 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
moduledir = join_paths(pkgdatadir, 'jade_gui')
|
||||
gnome = import('gnome')
|
||||
|
||||
gnome.compile_resources('jade_gui',
|
||||
'jade_gui.gresource.xml',
|
||||
gresource_bundle: true,
|
||||
install: true,
|
||||
install_dir: pkgdatadir,
|
||||
)
|
||||
|
||||
python = import('python')
|
||||
|
||||
conf = configuration_data()
|
||||
conf.set('PYTHON', python.find_installation('python3').full_path())
|
||||
conf.set('VERSION', meson.project_version())
|
||||
conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
|
||||
conf.set('pkgdatadir', pkgdatadir)
|
||||
|
||||
configure_file(
|
||||
input: 'jade_gui.in',
|
||||
output: 'jade-gui',
|
||||
configuration: conf,
|
||||
install: true,
|
||||
install_dir: get_option('bindir')
|
||||
)
|
||||
|
||||
subdir('widgets')
|
||||
subdir('functions')
|
||||
subdir('classes')
|
||||
subdir('locales')
|
||||
subdir('utils')
|
||||
subdir('scripts')
|
||||
|
||||
jade_gui_sources = [
|
||||
'__init__.py',
|
||||
'main.py',
|
||||
'window.py',
|
||||
'keymaps.py',
|
||||
'desktops.py',
|
||||
'manualpartitioning.py'
|
||||
]
|
||||
|
||||
install_data(jade_gui_sources, install_dir: moduledir)
|
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="DesktopScreen" parent="AdwBin">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage"> <property
|
||||
name="title"
|
||||
translatable="true">Select Desktop</property> <property
|
||||
name="description"
|
||||
translatable="true">You can install more desktops later.</property>
|
||||
<property name="css-classes">jade_compact_desktop</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkListBox" id="list_desktops">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="FinishedScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Installation Completed!</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">Reboot the device to start using Crystal Linux!</property>
|
||||
<property name="icon-name">al.getcryst.jadegui</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">horizontal</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="output_button">
|
||||
<property name="margin-start">12</property>
|
||||
<property
|
||||
name="label"
|
||||
translatable="true">Show Output</property>
|
||||
<style>
|
||||
<class name="pill"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="reboot_button">
|
||||
<property name="margin-start">12</property>
|
||||
<property name="label" translatable="true">Reboot</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
<class name="pill"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="InstallScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Installing Crystal</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">This may take some time.</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-end">50</property>
|
||||
<property name="margin-start">50</property>
|
||||
<style>
|
||||
<class name="card"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkBox" id="log_box">
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">fill</property>
|
||||
<property name="margin-bottom">60</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkDialog" id="search_dialog">
|
||||
<property name="default-height">600</property>
|
||||
<property name="default-width">570</property>
|
||||
<property name="title">Search Timezones</property>
|
||||
<property name="hide-on-close">true</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="vexpand">true</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox" id="keyboard_search">
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="keyboard_entry_search">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="margin-end">30</property>
|
||||
<property name="margin-bottom">5</property>
|
||||
<property name="margin-start">30</property>
|
||||
<property name="margin-top">30</property>
|
||||
<property
|
||||
name="placeholder-text"
|
||||
translatable="true">Search for a keyboard layout</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkListBox" id="layout_list">
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkButton" id="select_variant_button">
|
||||
<property name="label">Select</property>
|
||||
<property name="margin-top">15</property>
|
||||
<property name="margin-bottom">15</property>
|
||||
<property name="margin-end">15</property>
|
||||
<property name="margin-start">15</property>
|
||||
<property name="valign">GTK_ALIGN_END</property>
|
||||
<property name="vexpand">true</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@ -0,0 +1,90 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="KeyboardScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select Keyboard Layout</property>
|
||||
<property name="description">You can add additional layouts later.</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="margin-bottom">70</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="header-suffix">
|
||||
<object class="GtkButton" id="keyboard_search_button">
|
||||
<property
|
||||
name="tooltip-text"
|
||||
translatable="true">Search for your layout</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
<property name="child">
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">loupe-symbolic</property>
|
||||
<property name="label" translatable="yes">_Search</property>
|
||||
<property name="use-underline">True</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwComboRow">
|
||||
<property name="title" translatable="yes">Country</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="country_preview_list">
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwComboRow" id="variant_preview">
|
||||
<property name="title" translatable="yes">Variant</property>
|
||||
<property name="visible">false</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="variant_preview_list">
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup" id="preview">
|
||||
<property name="title">Preview</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwEntryRow">
|
||||
<property name="title">Test your Keyboard</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,99 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="LanguageScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select additional locales</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">Select additional locales to enable</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="language_search">
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="language_entry_search">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="margin-end">30</property>
|
||||
<property name="margin-start">30</property>
|
||||
<property
|
||||
name="placeholder-text">Search for a locale</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkListBox" id="list_locales">
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-start">20</property>
|
||||
<property name="margin-end">20</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property name="homogeneous">true</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkButton" id="back_button">
|
||||
<property name="icon-name">left-symbolic</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">start</property>
|
||||
<property
|
||||
name="tooltip-text"
|
||||
translatable="true">Move to previous page</property>
|
||||
<style>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkButton" id="next_page_button">
|
||||
<property name="icon-name">right-symbolic</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">end</property>
|
||||
<property
|
||||
name="tooltip-text"
|
||||
translatable="true">Move to next page</property>
|
||||
<property name="sensitive">False</property>
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
<class name="circular"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkDialog" id="search_dialog">
|
||||
<property name="default-height">600</property>
|
||||
<property name="default-width">570</property>
|
||||
<property name="title">Search Locales</property>
|
||||
<property name="hide-on-close">true</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox" id="locale_search">
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="locale_entry_search">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="margin-end">30</property>
|
||||
<property name="margin-bottom">5</property>
|
||||
<property name="margin-start">30</property>
|
||||
<property name="margin-top">30</property>
|
||||
<property
|
||||
name="placeholder-text"
|
||||
translatable="true">Search for a locale</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkListBox" id="locale_list">
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@ -0,0 +1,112 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="LocaleScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage" id="status_page">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select Locale</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="margin-bottom">70</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="header-suffix">
|
||||
<object class="GtkButton" id="locale_search_button">
|
||||
<property
|
||||
name="tooltip-text"
|
||||
translatable="true">Search for your locale</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
<property name="child">
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">loupe-symbolic</property>
|
||||
<property name="label" translatable="yes">_Search</property>
|
||||
<property name="use-underline">True</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwComboRow">
|
||||
<property name="title" translatable="yes">Main Locale</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="main_locale_list">
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwExpanderRow" id="other_locale_list">
|
||||
<property name="title" translatable="yes">Additional Locales</property>
|
||||
<property name="subtitle" translatable="yes">Additional locales that will be installed</property>
|
||||
<property name="expanded">true</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="empty_locales">
|
||||
<property name="subtitle">No additional locales selected</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="emptyLocales"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="visible">true</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="date_preview">
|
||||
<property name="title">Date and time</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="datespreview">
|
||||
<property name="label">timehere</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="number_preview">
|
||||
<property name="title">Numbers and currency</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="numberpreview">
|
||||
<property name="label">numberhere - currencyhere</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,100 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="MiscScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="title" translatable="true">Miscellaneous</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="AdwEntryRow" id="hostname_entry">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Custom Hostname</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="margin-top">7</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="activatable">false</property>
|
||||
<property name="selectable">false</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">IPv6 loopback</property>
|
||||
<property
|
||||
name="subtitle"
|
||||
translatable="true">This can fix IPv6 connectivity issues with some ISPs.</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="ipv_switch">
|
||||
<property name="valign">center</property>
|
||||
<property name="state">false</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="activatable">false</property>
|
||||
<property name="selectable">false</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Timeshift</property>
|
||||
<property
|
||||
name="subtitle"
|
||||
translatable="true">Support snapshots as a means to roll back to earlier states of the system.</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="timeshift_switch">
|
||||
<property name="valign">center</property>
|
||||
<property name="state">true</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="activatable">false</property>
|
||||
<property name="selectable">false</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Zramd</property>
|
||||
<property
|
||||
name="subtitle"
|
||||
translatable="true">Creates a compressed area of Swap in RAM.</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="zramd_switch">
|
||||
<property name="valign">center</property>
|
||||
<property name="state">true</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkButton" id="reload_partitions">
|
||||
<property name="icon-name">view-refresh-symbolic</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
</object>
|
||||
<template class="PartitionScreen" parent="AdwBin">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="valign">fill</property>
|
||||
<property name="halign">fill</property>
|
||||
<child>
|
||||
<object class="GtkBox" id="manual_partitioning_page">
|
||||
<property name="visible">False</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">fill</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select partitions to install to</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">Make sure to have at least one root partition.</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Quick Actions</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property
|
||||
name="orientation">horizontal</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="spacing">10</property>
|
||||
<child>
|
||||
<object
|
||||
class="GtkButton"
|
||||
id="automatic_partitioning">
|
||||
<property
|
||||
name="label"
|
||||
translatable="true">Automatic Partitioning</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="open_gparted">
|
||||
<property
|
||||
name="label"
|
||||
translatable="true">Open GParted</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="open_bash">
|
||||
<property
|
||||
name="label"
|
||||
translatable="true">Open terminal</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwClamp">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Available partitions</property>
|
||||
<property
|
||||
name="header-suffix">reload_partitions</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="partition_list">
|
||||
<property name="margin-bottom">95</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox" id="automatic_partitioning_page">
|
||||
<property name="visible">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select Installation Disk</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">Select the disk you want to install Crystal Linux on. This will wipe the entire disk you selected.</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkButton" id="manual_partitioning">
|
||||
<property name="margin-start">70</property>
|
||||
<property name="margin-end">70</property>
|
||||
<property name="margin-bottom">20</property>
|
||||
<property
|
||||
name="label"
|
||||
translatable="true">Switch to manual partitioning</property>
|
||||
<style>
|
||||
<class name="pill"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBox" id="disk_list">
|
||||
<property
|
||||
name="activate-on-single-click">true</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,285 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="SummaryScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="title" translatable="true">Summary</property>
|
||||
<property
|
||||
name="description">Last chance to verify everything.</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="margin-bottom">70</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Timezone and Locale</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="timezone_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="timezone_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">region/location</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="timezone_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwExpanderRow" id="locales">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Locales</property>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Keyboard Layout</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="keyboard_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="keyboard_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">layout</property>
|
||||
<property name="subtitle">keymap</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="keyboard_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">User Settings</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="user_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="username_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">username</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="username_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="sudo_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">sudo enabled/disabled</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="sudo_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="root_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">root enabled/disabled</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="root_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Desktop</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="desktop_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="desktop_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">desktop</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="desktop_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Partition Settings</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="partition_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="partition_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">selected install partition</property>
|
||||
<property name="subtitle">Disk size</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="partition_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="uefi_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">legacy bios/uefi</property>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Miscellaneous Settings</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="misc_listbox">
|
||||
<property name="selection-mode">none</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="ipv_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">ipv6 enabled/disabled</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="ipv_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="timeshift_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">timeshift enabled/disabled</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="timeshift_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="zramd_label">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">zramd enabled/disabled</property>
|
||||
<child>
|
||||
<object class="GtkButton" id="zramd_button">
|
||||
<property name="valign">center</property>
|
||||
<property name="halign">center</property>
|
||||
<property
|
||||
name="icon-name">document-edit-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<object class="GtkDialog" id="search_dialog">
|
||||
<property name="default-height">600</property>
|
||||
<property name="default-width">570</property>
|
||||
<property name="title">Search Timezones</property>
|
||||
<property name="hide-on-close">true</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox" id="timezone_search">
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="timezone_entry_search">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="margin-end">30</property>
|
||||
<property name="margin-bottom">5</property>
|
||||
<property name="margin-start">30</property>
|
||||
<property name="margin-top">30</property>
|
||||
<property
|
||||
name="placeholder-text"
|
||||
translatable="true">Search for a timezone</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="GtkListBox" id="timezone_list">
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</interface>
|
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="TimezoneScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage" id="status_page">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Select Timezone</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<property name="margin-bottom">70</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="header-suffix">
|
||||
<object class="GtkButton" id="timezone_search_button">
|
||||
<property
|
||||
name="tooltip-text"
|
||||
translatable="true">Search for your timezone</property>
|
||||
<style>
|
||||
<class name="flat"/>
|
||||
</style>
|
||||
<property name="child">
|
||||
<object class="AdwButtonContent">
|
||||
<property name="icon-name">loupe-symbolic</property>
|
||||
<property name="label" translatable="yes">_Search</property>
|
||||
<property name="use-underline">True</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
|
||||
<child>
|
||||
<object class="AdwComboRow">
|
||||
<property name="title" translatable="yes">Region</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="region_preview_list">
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwComboRow">
|
||||
<property name="title" translatable="yes">Zone</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="location_preview_list">
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup" id="preview">
|
||||
<property name="visible">false</property>
|
||||
<child>
|
||||
<object class="AdwActionRow" id="preview_row">
|
||||
<property name="icon-name">clock-alt-symbolic</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="UserScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="vexpand">true</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="title" translatable="true">Create User</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="true">You can add additional users later.</property>
|
||||
<property name="css-classes">jade_compact</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<child>
|
||||
<object class="AdwEntryRow" id="username_entry">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Username</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPasswordEntryRow" id="password_entry">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Password</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object
|
||||
class="AdwPasswordEntryRow"
|
||||
id="password_confirmation">
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Confirm Password</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBox">
|
||||
<property name="margin-top">7</property>
|
||||
<style>
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="activatable">false</property>
|
||||
<property name="selectable">false</property>
|
||||
<property
|
||||
name="title"
|
||||
translatable="true">Adminstrator</property>
|
||||
<property
|
||||
name="subtitle">Allows access to system settings, users, and sudo</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable_sudo_switch">
|
||||
<property name="valign">center</property>
|
||||
<property name="state">true</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title">System</property>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title" translatable="true">Enable Superuser Account</property>
|
||||
<property name="subtitle">Allow logging into the root account</property>
|
||||
<child>
|
||||
<object class="GtkSwitch" id="enable_root_switch">
|
||||
<property name="valign">center</property>
|
||||
<property name="state">false</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<template class="WelcomeScreen" parent="AdwBin">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="hexpand">true</property>
|
||||
<property name="vexpand">true</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="orientation">vertical</property>
|
||||
|
||||
<child>
|
||||
<object class="GtkImage" id="crystal-logo">
|
||||
<property
|
||||
name="resource">/al/getcryst/jadegui/crystal-logo-minimal.png</property>
|
||||
<property name="pixel-size">200</property>
|
||||
<property name="margin-start">200</property>
|
||||
<property name="margin-end">200</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="title" translatable="yes">Welcome to Crystal Linux</property>
|
||||
<property
|
||||
name="description"
|
||||
translatable="yes">Press Start to start installing Crystal Linux!</property>
|
||||
</object>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="hexpand">true</property>
|
||||
<property name="spacing">5</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="no_internet">
|
||||
<property name="label">Please connect to the internet first!</property>
|
||||
<property name="visible">false</property>
|
||||
<style>
|
||||
<class name="error"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton" id="next_button">
|
||||
<property name="label">Start</property>
|
||||
<!-- <property name="sensitive">False</property> -->
|
||||
<style>
|
||||
<class name="suggested-action"/>
|
||||
<class name="pill"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host lsblk -pdbo MODEL $1 | grep -v MODEL
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host lsblk -pdbo SIZE $1 | grep -v SIZE
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host lsblk -d -o rota $1 | grep -v ROTA
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host lsblk -pdo name | grep -v zram | grep -v NAME | grep -v loop | grep -v sr
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host blkid -o device | grep -v zram | grep -v loop | grep -v sr
|
@ -0,0 +1,4 @@
|
||||
#!/usr/bin/bash
|
||||
echo "Running reflector to sort for fastest mirrors" | tee -a /tmp/jade-gui-output.txt
|
||||
pkexec reflector --latest 5 --sort rate --save /etc/pacman.d/mirrorlist | tee -a /tmp/jade-gui-output.txt
|
||||
pkexec crystal-jade config ~/.config/jade.json | tee -a /tmp/jade-gui-output.txt
|
@ -0,0 +1,17 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
scriptsdir = join_paths(pkgdatadir, 'jade_gui/scripts')
|
||||
|
||||
jade_gui_sources = [
|
||||
'getDisks.sh',
|
||||
'getDiskSize.sh',
|
||||
'checkEFI.sh',
|
||||
'install.sh',
|
||||
'savePrefs.sh',
|
||||
'getDiskType.sh',
|
||||
'getDiskName.sh',
|
||||
'getPartitions.sh',
|
||||
'reboot.sh',
|
||||
'openBash.sh',
|
||||
'openGparted.sh',
|
||||
]
|
||||
install_data(jade_gui_sources, install_dir: scriptsdir)
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host gnome-terminal -- bash
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host pkexec gparted
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host gnome-session-quit --reboot
|
@ -0,0 +1,2 @@
|
||||
#!/usr/bin/bash
|
||||
flatpak-spawn --host echo $1 > /tmp/jade.json
|
@ -0,0 +1,8 @@
|
||||
statuspage.jade_compact {
|
||||
margin-bottom: -100px;
|
||||
}
|
||||
|
||||
statuspage.jade_compact_desktop {
|
||||
margin-bottom: -100px;
|
||||
margin-top: -50px;
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
class CommandUtils:
|
||||
@staticmethod
|
||||
def run_command(
|
||||
command: list,
|
||||
flatpak_spawn: bool = None,
|
||||
output: bool = False,
|
||||
decode: bool = True,
|
||||
):
|
||||
"""
|
||||
Keep flatpak_spawn as None to automatically assume its value based on
|
||||
whether the app is running in a flatpak or not. Set it to True or False
|
||||
to override this behavior.
|
||||
"""
|
||||
if flatpak_spawn is None and "FLATPAK_ID" in os.environ:
|
||||
flatpak_spawn = True
|
||||
|
||||
if flatpak_spawn:
|
||||
command = ["flatpak-spawn", "--host"] + command
|
||||
|
||||
if output:
|
||||
res = subprocess.check_output(command)
|
||||
if decode:
|
||||
res = res.decode("utf-8").strip()
|
||||
return res
|
||||
|
||||
return subprocess.Popen(command, stdout=subprocess.PIPE)
|
||||
|
||||
@staticmethod
|
||||
def check_output(command: list, flatpak_spawn: bool = None, decode: bool = True):
|
||||
"""Just a wrapper for convenience"""
|
||||
return CommandUtils.run_command(
|
||||
command, flatpak_spawn, output=True, decode=decode
|
||||
)
|