From 41cbb8cb6b0fbd1885e636a754226444c557bd79 Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Sat, 18 Jun 2022 17:20:19 +0200 Subject: [PATCH] Initial commit --- COPYING | 674 ++++++++++++++++++++++++++++ Makefile | 118 +++++ VERSION | 1 + mambareport/GenerateReportPage.ui | 144 ++++++ mambareport/WelcomePage.ui | 180 ++++++++ mambareport/mambareport | 2 + mambareport/mambareport-128x128.png | Bin 0 -> 12127 bytes mambareport/mambareport-16x16.png | Bin 0 -> 859 bytes mambareport/mambareport-22x22.png | Bin 0 -> 1296 bytes mambareport/mambareport-32x32.png | Bin 0 -> 2138 bytes mambareport/mambareport-48x48.png | Bin 0 -> 3819 bytes mambareport/mambareport-64x64.png | Bin 0 -> 5308 bytes mambareport/mambareport.desktop | 13 + mambareport/mambareport.png | Bin 0 -> 12127 bytes mambareport/mambareport.py | 121 +++++ mambareport/mambareport_it.ts | 43 ++ mambareport/openmamba.png | Bin 0 -> 6492 bytes mambareport/po/it.po | 30 ++ mambareport/po/messages.pot | 30 ++ mambareport/update-translations.sh | 4 + 20 files changed, 1360 insertions(+) create mode 100644 COPYING create mode 100644 Makefile create mode 100644 VERSION create mode 100644 mambareport/GenerateReportPage.ui create mode 100644 mambareport/WelcomePage.ui create mode 100755 mambareport/mambareport create mode 100644 mambareport/mambareport-128x128.png create mode 100644 mambareport/mambareport-16x16.png create mode 100644 mambareport/mambareport-22x22.png create mode 100644 mambareport/mambareport-32x32.png create mode 100644 mambareport/mambareport-48x48.png create mode 100644 mambareport/mambareport-64x64.png create mode 100644 mambareport/mambareport.desktop create mode 100644 mambareport/mambareport.png create mode 100755 mambareport/mambareport.py create mode 100644 mambareport/mambareport_it.ts create mode 100644 mambareport/openmamba.png create mode 100644 mambareport/po/it.po create mode 100644 mambareport/po/messages.pot create mode 100755 mambareport/update-translations.sh diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/COPYING @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. + + + Copyright (C) + + 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 . + +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: + + Copyright (C) + 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 +. + + 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 +. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..305cac6 --- /dev/null +++ b/Makefile @@ -0,0 +1,118 @@ +# Makefile for mambareport package +# Copyright (C) 2022 by Silvan Calarco + +include VERSION + +ARCH:=`uname -i` + +PACKAGE = mambareport +DISTROID = openmamba + +RPM_VENDOR = openmamba +RPM_DISTRIBUTION = openmamba +RPM_DISTROEXT = mamba + +SYSCONFIGFILE = netsrpminstall + +DISTROid = $(shell echo $(DISTROID) | tr A-Z a-z) +DISTROICON = $(DISTROid) + +DESTDIR = + +prefix = /usr +exec_prefix = ${prefix} +sysconfdir = /etc +sbindir = ${exec_prefix}/sbin +bindir = ${exec_prefix}/bin +datadir = ${prefix}/share +ifeq ($(ARCH), x86_64) +libexecdir = ${prefix}/libexec64 +else +libexecdir = ${prefix}/libexec +endif +mandir = ${prefix}/usr/share/man +sysconfigdir= ${sysconfdir}/sysconfig +profiledir = ${sysconfdir}/profile.d +mambareportdatadir = ${datadir}/mambareport +iconsdir = ${datadir}/icons/hicolor +localesdir = ${datadir}/locale +xdg_appsdir = ${datadir}/applications +xdg_directorydir = ${datadir}/desktop-directories +xdg_menudir = ${sysconfdir}/xdg/menus +xdg_mergedmenudir = $(xdg_menudir)/applications-merged + +distrorootdir = ${datadir}/$(DISTROid) +distrobindir = ${distrorootdir}/bin +distrosrpmsdir = ${distrorootdir}/SRPMS +distrodesktopdir = ${distrorootdir}/desktop +srcdir = . + +INSTALL = /usr/bin/install +INSTALL_PROGRAM = ${INSTALL} -m 755 +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_DIR = ${INSTALL} -d -m 755 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} + +distdir = $(PACKAGE)-$(VERSION) +dist_archive = $(distdir).tar.bz2 + +pck_catalogs := $(wildcard mambareport/po/*.po) + +.SUFFIXES: +.SUFFIXES: .po .mo +all: locales + +.po.mo:; msgfmt $< -o $@ + +locales: $(pck_catalogs:.po=.mo) + +install-locales: locales + @for f in $(pck_catalogs); do\ + lang=`echo $$f | sed 's,.*/\(.*\)\.po,\1,'`;\ + echo "installing i18n file for language \`$$lang'...";\ + dir="$(DESTDIR)$(datadir)/locale/$$lang/LC_MESSAGES";\ + $(INSTALL_DIR) $$dir;\ + $(INSTALL_DATA) $${f/.po/.mo} $$dir/mambareport.mo;\ + done + @lrelease-qt5 mambareport/mambareport_it.ts -qm $(DESTDIR)$(datadir)/locale/it/LC_MESSAGES/mambareport.qm + +install-icons: + @for i in 16x16 22x22 32x32 48x48 64x64 128x128; do \ + $(INSTALL_DIR) $(DESTDIR)$(iconsdir)/$$i/apps/; \ + $(INSTALL_DATA) mambareport/mambareport-$$i.png $(DESTDIR)$(iconsdir)/$$i/apps/mambareport.png; \ + done + +install-mambareport: + @$(INSTALL_DIR) $(DESTDIR)$(bindir) + @$(INSTALL_DIR) $(DESTDIR)$(mambareportdatadir) + @$(INSTALL_DIR) $(DESTDIR)$(xdg_appsdir) + $(INSTALL_SCRIPT) mambareport/mambareport $(DESTDIR)$(bindir)/mambareport + $(INSTALL_SCRIPT) mambareport/mambareport.py $(DESTDIR)$(mambareportdatadir) + $(INSTALL_DATA) mambareport/mambareport.desktop $(DESTDIR)$(xdg_appsdir) + $(INSTALL_DATA) mambareport/openmamba.png $(DESTDIR)$(mambareportdatadir) + $(INSTALL_DATA) mambareport/mambareport.png $(DESTDIR)$(mambareportdatadir) + cp mambareport/*.ui $(DESTDIR)$(mambareportdatadir) + +install: $(pck_infiles:.in=) \ + install-mambareport \ + install-locales \ + install-icons + +dist: clean + @mkdir /tmp/$(distdir) + @cp -a * /tmp/$(distdir)/ + @rm -f $(dist_archive);\ + tar cf - -C /tmp $(distdir) | bzip2 -9 -c > $(dist_archive) + @rm -rf /tmp/$(distdir) + @echo "file \`$(dist_archive)' created" + +dist-rpm: dist + @rpm_sourcedir=`rpm --eval=%{_sourcedir}`;\ + mv -f $(dist_archive) $$rpm_sourcedir;\ + echo "and saved as \`$$rpm_sourcedir/$(dist_archive)'" + +clean: + rm -f $(dist_archive) + rm -f $(patsubst %.in,%,$(pck_infiles)) + rm -f $(pck_catalogs:.po=.mo) + rm -f $(pck_catalogs1:.po=.mo) diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..341988c --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +VERSION = 1.0 diff --git a/mambareport/GenerateReportPage.ui b/mambareport/GenerateReportPage.ui new file mode 100644 index 0000000..968b7c9 --- /dev/null +++ b/mambareport/GenerateReportPage.ui @@ -0,0 +1,144 @@ + + + Form + + + + 0 + 0 + 552 + 392 + + + + + 0 + 0 + + + + Form + + + + + 0 + 0 + 551 + 391 + + + + + + + + 0 + 0 + + + + background-color: rgb(239, 240, 241); +background-color: rgb(255, 255, 255); + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 10 + 521 + 31 + + + + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:600;">Generating report...</span></p></body></html> + + + true + + + + + + 20 + 50 + 511 + 41 + + + + 0 + + + + + + 20 + 90 + 511 + 21 + + + + + + + + + + 20 + 130 + 511 + 241 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 20 + 491 + 201 + + + + + + + false + + + + + + 10 + 10 + 481 + 20 + + + + <html><head/><body><p><span style=" font-weight:600;">Report generation output:</span></p></body></html> + + + + + + + + + + + diff --git a/mambareport/WelcomePage.ui b/mambareport/WelcomePage.ui new file mode 100644 index 0000000..0328af5 --- /dev/null +++ b/mambareport/WelcomePage.ui @@ -0,0 +1,180 @@ + + + Form + + + + 0 + 0 + 552 + 380 + + + + + 0 + 0 + + + + Form + + + + + 0 + 0 + 551 + 381 + + + + + + + + 0 + 0 + + + + + 0 + 160 + + + + background-color: rgb(255, 255, 255); + + + QFrame::Box + + + QFrame::Raised + + + + + 20 + 10 + 491 + 61 + + + + + 0 + 0 + + + + + + + openmamba.png + + + Qt::AlignCenter + + + + + + 10 + 80 + 531 + 72 + + + + + + + <html><head/><body><p><span style=" font-style:italic;">mambareport - Copyright (c) 2022 by Silvan Calarco<br/>Released under the terms of the GNU GPL v3 license</span></p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + + <html><head/><body><p><a href="https://openmamba.org"><span style=" text-decoration: underline; color:#2980b9;">openmamba.org</span></a></p></body></html> + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + + 0 + 0 + + + + background-color: rgb(239, 240, 241); + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + 10 + 10 + 511 + 16 + + + + <html><head/><body><p>Please enter a description of the reason why you are generating a diagnostic report:</p></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + + + + 10 + 180 + 531 + 20 + + + + <html><head/><body><p><br/></p></body></html> + + + + + + 10 + 40 + 531 + 29 + + + + + + + + + + + diff --git a/mambareport/mambareport b/mambareport/mambareport new file mode 100755 index 0000000..6e905de --- /dev/null +++ b/mambareport/mambareport @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/bin/python3 /usr/share/mambareport/mambareport.py diff --git a/mambareport/mambareport-128x128.png b/mambareport/mambareport-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..7951ee3c747bcf27fe15231ea93d80fa5556cd7a GIT binary patch literal 12127 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 Vv1V5KfX)B_002ovPDHLkV1gVgD4+lU literal 0 HcmV?d00001 diff --git a/mambareport/mambareport-16x16.png b/mambareport/mambareport-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..9b66b490b8228ac56bd3c670bdb621838d80cee0 GIT binary patch literal 859 zcmV-h1ElPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iFS` z3pgB8QHY5E00P@dL_t(I%Z-ywY*b|whM(`=nS1A_cRIJNE!Z~LYH4)>L|U{GV`CGL zSkQ$MD6k-IG$t+tV+f`(ELhZ}ab*+NT2_tN(8So3%3o=5gaR}C)|N^;9j4Co z_WsQ00+|3x!m~N&BV`KLrR5g`-T)w#7ICcRd~YU`(7C?|Zzhd97mTAOzSN z1mzt8nFm+mx>NThSH0VOdje-_{PvGAFI^L@k1bQpYS4lZ5a0`N``oM?+#mm?yXQv7 zaEj#JB>sn*DE{BxulO_( literal 0 HcmV?d00001 diff --git a/mambareport/mambareport-22x22.png b/mambareport/mambareport-22x22.png new file mode 100644 index 0000000000000000000000000000000000000000..6aee5180cf5058dd4c8ec4e672d4b9b4be768272 GIT binary patch literal 1296 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 Q%>V!Z07*qoM6N<$f~IN_pa1{> literal 0 HcmV?d00001 diff --git a/mambareport/mambareport-48x48.png b/mambareport/mambareport-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..787b10f01b8aa8e23233dd8c8b8980a43affdad7 GIT binary patch literal 3819 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 Vv1V5KfX)B_002ovPDHLkV1gVgD4+lU literal 0 HcmV?d00001 diff --git a/mambareport/mambareport.py b/mambareport/mambareport.py new file mode 100755 index 0000000..dd34f9f --- /dev/null +++ b/mambareport/mambareport.py @@ -0,0 +1,121 @@ +#!/usr/bin/env python3 +# Copyright (c) 2022 by Silvan Calarco +# Release under the terms of the GPL version 3 license + +from PyQt5 import QtGui, QtCore, QtWidgets, uic +from PyQt5.QtCore import pyqtProperty +from PyQt5.QtCore import QLocale, QTranslator +from pathlib import Path +import gettext +import subprocess +import os + +import gi +gi.require_version('PackageKitGlib', '1.0') +from gi.repository import PackageKitGlib as packagekit + +DATADIR = os.path.dirname(os.path.realpath((__file__))) + "/" + + +class MambareportWizard(QtWidgets.QWizard): + def __init__(self, parent=None): + super(MambareportWizard, self).__init__(parent) + self.welcomePage = WelcomePage(self) + self.addPage(self.welcomePage) + self.generateReportPage = GenerateReportPage(self) + self.addPage(self.generateReportPage) + self.setWindowTitle(_("Diagnostic report tool") + + " - openmamba.org") + self.setFixedSize(571,465) + self.currentIdChanged.connect(self.currentIdChangedSlot) + self.generateReportThread = GenerateReportThread(self) + + def currentIdChangedSlot(self, currentId): + if currentId == 1: + self.generateReportThread.start() + + +class GenerateReportThread(QtCore.QThread): + parent = None + doneSignal = QtCore.pyqtSignal() + updateProgressSignal = QtCore.pyqtSignal(dict) + + def __init__(self, parent=None): + super(GenerateReportThread, self).__init__(parent) + self.parent = parent + self.doneSignal.connect(parent.generateReportPage.completeChanged) + self.updateProgressSignal.connect( + parent.generateReportPage.updateProgressSlot) + + def run(self): + # Update packages list + reportFile = os.path.expanduser("~") + '/openmamba-report.txt' + self.updateProgressSignal.emit({ 'value': 5, + 'label': _("Generating report...")}) + result = subprocess.run(['pkexec', 'openmamba-makereport', + '\'' + self.parent.welcomePage.reasonLineEdit.displayText() + '\'', + reportFile ], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) + if result.returncode == 0: + if result.stdout: + self.updateProgressSignal.emit({ + 'details': result.stdout.decode('UTF-8').replace('\n', '
')}) + else: + if result.stderr: + self.updateProgressSignal.emit({ + 'details': result.stderr.decode('UTF-8').replace('\n', '
')}) + self.updateProgressSignal.emit({ 'value': 100, + 'label': _("Done. Report saved as {}.").format(reportFile)}) + # Enable back and next buttons + self.parent.generateReportPage.done = True + self.doneSignal.emit() + + +class WelcomePage(QtWidgets.QWizardPage): + done = False + + def __init__(self, parent=None): + super(WelcomePage, self).__init__(parent) + uic.loadUi(DATADIR + "WelcomePage.ui", self) + self.registerField("reasons*", self.reasonLineEdit) + self.show() + + +class GenerateReportPage(QtWidgets.QWizardPage): + done = False + + def __init__(self, parent=None): + super(GenerateReportPage, self).__init__(parent) + uic.loadUi(DATADIR + "GenerateReportPage.ui", self) + self.show() + + def isComplete(self): + return self.done + + @QtCore.pyqtSlot(dict) + def updateProgressSlot(self, dict): + if 'value' in dict: + self.progressBar.setValue(dict['value']) + if 'label' in dict: + self.progressLabel.setText(dict['label']) + if 'details' in dict: + self.reportOutput.append("
" + dict['details']) + + +if __name__ == '__main__': + import sys + app = QtWidgets.QApplication(sys.argv) + app.setWindowIcon(QtGui.QIcon(DATADIR + "mambareport.png")) + # UI translations + locale = QLocale.system().name() + language = locale[0:2] + qtTranslator = QTranslator() + if qtTranslator.load("mambareport", "/usr/share/locale/" + locale + "/LC_MESSAGES/"): + app.installTranslator(qtTranslator) + elif qtTranslator.load("mambareport", "/usr/share/locale/" + language + "/LC_MESSAGES/"): + app.installTranslator(qtTranslator) + # PY translations + gettext.install('mambareport', '/usr/share/locale') + wizard = MambareportWizard() + wizard.show() + sys.exit(app.exec_()) diff --git a/mambareport/mambareport_it.ts b/mambareport/mambareport_it.ts new file mode 100644 index 0000000..66813a2 --- /dev/null +++ b/mambareport/mambareport_it.ts @@ -0,0 +1,43 @@ + + + + + Form + + + + Form + + + + + <html><head/><body><p align="center"><span style=" font-size:14pt; font-weight:600;">Generating report...</span></p></body></html> + + + + + <html><head/><body><p><span style=" font-weight:600;">Report generation output:</span></p></body></html> + + + + + <html><head/><body><p><span style=" font-style:italic;">mambareport - Copyright (c) 2022 by Silvan Calarco<br/>Released under the terms of the GNU GPL v3 license</span></p></body></html> + + + + + <html><head/><body><p><a href="https://openmamba.org"><span style=" text-decoration: underline; color:#2980b9;">openmamba.org</span></a></p></body></html> + + + + + <html><head/><body><p>Please enter a description of the reason why you are generating a diagnostic report:</p></body></html> + + + + + <html><head/><body><p><br/></p></body></html> + + + + diff --git a/mambareport/openmamba.png b/mambareport/openmamba.png new file mode 100644 index 0000000000000000000000000000000000000000..ff941ba1b3f0b76849ae5751769cf1b4b1b1862a GIT binary patch literal 6492 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 +# This file is distributed under the same license as the mambareport package. +# Silvan Calarco , 2022. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-18 16:58+0200\n" +"Last-Translator: Silvan Calarco \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: mambareport.py:27 +msgid "Diagnostic report tool" +msgstr "Generazione di un report diagnostico" + +#: mambareport.py:68 +msgid "Done. Report saved as {}." +msgstr "Fatto. Report salvato in {}." + +#: mambareport.py:54 +msgid "Generating report..." +msgstr "Generazione del report..." + diff --git a/mambareport/po/messages.pot b/mambareport/po/messages.pot new file mode 100644 index 0000000..c31dae4 --- /dev/null +++ b/mambareport/po/messages.pot @@ -0,0 +1,30 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-06-18 16:58+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: mambareport.py:27 +msgid "Diagnostic report tool" +msgstr "" + +#: mambareport.py:68 +msgid "Done. Report saved as {}." +msgstr "" + +#: mambareport.py:54 +msgid "Generating report..." +msgstr "" diff --git a/mambareport/update-translations.sh b/mambareport/update-translations.sh new file mode 100755 index 0000000..c38eb13 --- /dev/null +++ b/mambareport/update-translations.sh @@ -0,0 +1,4 @@ +#!/bin/bash +xgettext -s -o - mambareport.py --output=po/messages.pot +msgmerge --update --no-fuzzy-matching --backup=off po/it.po po/messages.pot +lupdate-qt5 *.ui -ts mambareport_it.ts \ No newline at end of file