diff --git a/.gitignore b/.gitignore index 04b7a50..a3667d6 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ Makefile* #QtCtreator Qml *.qmlproject.user *.qmlproject.user.* +/build/ diff --git a/3rdparty/zint-2.4.4/COPYING b/3rdparty/zint-2.4.4/COPYING new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/3rdparty/zint-2.4.4/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/3rdparty/zint-2.4.4/backend/aztec.c b/3rdparty/zint-2.4.4/backend/aztec.c index 6675ee4..a93eba7 100644 --- a/3rdparty/zint-2.4.4/backend/aztec.c +++ b/3rdparty/zint-2.4.4/backend/aztec.c @@ -658,9 +658,11 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length) int comp_loop = 4; #ifndef _MSC_VER - unsigned char local_source[length + 1]; + unsigned char local_source[length + 1]; #else - unsigned char* local_source = (unsigned char*)_alloca(length + 1); + unsigned int* data_part; + unsigned int* ecc_part; + unsigned char* local_source = (unsigned char*)_alloca(length + 1); #endif memset(binary_string,0,20000); @@ -996,8 +998,8 @@ int aztec(struct zint_symbol *symbol, unsigned char source[], int length) #ifndef _MSC_VER unsigned int data_part[data_blocks + 3], ecc_part[ecc_blocks + 3]; #else - unsigned int* data_part = (unsigned int*)_alloca((data_blocks + 3) * sizeof(unsigned int)); - unsigned int* ecc_part = (unsigned int*)_alloca((ecc_blocks + 3) * sizeof(unsigned int)); + data_part = (unsigned int*)_alloca((data_blocks + 3) * sizeof(unsigned int)); + ecc_part = (unsigned int*)_alloca((ecc_blocks + 3) * sizeof(unsigned int)); #endif /* Copy across data into separate integers */ memset(data_part,0,(data_blocks + 2)*sizeof(int)); diff --git a/3rdparty/zint-2.4.4/backend/gridmtx.c b/3rdparty/zint-2.4.4/backend/gridmtx.c index 8622817..47f904d 100644 --- a/3rdparty/zint-2.4.4/backend/gridmtx.c +++ b/3rdparty/zint-2.4.4/backend/gridmtx.c @@ -920,6 +920,7 @@ int grid_matrix(struct zint_symbol *symbol, unsigned char source[], int length) #else int* utfdata = (int *)_alloca((length + 1) * sizeof(int)); int* gbdata = (int *)_alloca((length + 1) * sizeof(int)); + char* grid; #endif for(i = 0; i < 1460; i++) { @@ -1041,7 +1042,7 @@ int grid_matrix(struct zint_symbol *symbol, unsigned char source[], int length) #ifndef _MSC_VER char grid[size * size]; #else - char* grid = (char *)_alloca((size * size) * sizeof(char)); + grid = (char *)_alloca((size * size) * sizeof(char)); #endif for(x = 0; x < size; x++) { diff --git a/3rdparty/zint-2.4.4/backend/library.c b/3rdparty/zint-2.4.4/backend/library.c index dd173a1..f769a46 100644 --- a/3rdparty/zint-2.4.4/backend/library.c +++ b/3rdparty/zint-2.4.4/backend/library.c @@ -578,7 +578,10 @@ int reduced_charset(struct zint_symbol *symbol, unsigned char *source, int lengt int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source, int length) { - int error_number, error_buffer, i; +#ifdef _MSC_VER + unsigned char* local_source; +#endif + int error_number, error_buffer, i; error_number = 0; if(length == 0) { @@ -596,7 +599,7 @@ int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source, int lengt #ifndef _MSC_VER unsigned char local_source[length + 1]; #else - unsigned char* local_source = (unsigned char*)_alloca(length + 1); + local_source = (unsigned char*)_alloca(length + 1); #endif /* First check the symbology field */ diff --git a/3rdparty/zint-2.4.4/backend/qr.c b/3rdparty/zint-2.4.4/backend/qr.c index bfe0f13..23b4743 100644 --- a/3rdparty/zint-2.4.4/backend/qr.c +++ b/3rdparty/zint-2.4.4/backend/qr.c @@ -1004,6 +1004,9 @@ int qr_code(struct zint_symbol *symbol, unsigned char source[], int length) int jisdata[length + 1]; char mode[length + 1]; #else + int* datastream; + int* fullstream; + unsigned char* grid; int* utfdata = (int *)_alloca((length + 1) * sizeof(int)); int* jisdata = (int *)_alloca((length + 1) * sizeof(int)); char* mode = (char *)_alloca(length + 1); @@ -1115,8 +1118,8 @@ int qr_code(struct zint_symbol *symbol, unsigned char source[], int length) int datastream[target_binlen + 1]; int fullstream[qr_total_codewords[version - 1] + 1]; #else - int* datastream = (int *)_alloca((target_binlen + 1) * sizeof(int)); - int* fullstream = (int *)_alloca((qr_total_codewords[version - 1] + 1) * sizeof(int)); + datastream = (int *)_alloca((target_binlen + 1) * sizeof(int)); + fullstream = (int *)_alloca((qr_total_codewords[version - 1] + 1) * sizeof(int)); #endif qr_binary(datastream, version, target_binlen, mode, jisdata, length, gs1, est_binlen); @@ -1126,7 +1129,7 @@ int qr_code(struct zint_symbol *symbol, unsigned char source[], int length) #ifndef _MSC_VER unsigned char grid[size * size]; #else - unsigned char* grid = (unsigned char *)_alloca((size * size) * sizeof(unsigned char)); + grid = (unsigned char *)_alloca((size * size) * sizeof(unsigned char)); #endif for(i = 0; i < size; i++) { @@ -1999,7 +2002,11 @@ int microqr(struct zint_symbol *symbol, unsigned char source[], int length) int binary_count[4]; int ecc_level, autoversion, version; int n_count, a_count, bitmask, format, format_full; - + +#ifdef _MSC_VER + unsigned char* grid; +#endif + if(length > 35) { strcpy(symbol->errtxt, "Input data too long"); return ERROR_TOO_LONG; @@ -2169,7 +2176,7 @@ int microqr(struct zint_symbol *symbol, unsigned char source[], int length) #ifndef _MSC_VER unsigned char grid[size * size]; #else - unsigned char* grid = (unsigned char *)_alloca((size * size) * sizeof(unsigned char)); + grid = (unsigned char *)_alloca((size * size) * sizeof(unsigned char)); #endif for(i = 0; i < size; i++) { diff --git a/common.pri b/common.pri new file mode 100644 index 0000000..2e7bf18 --- /dev/null +++ b/common.pri @@ -0,0 +1,31 @@ +#CONFIG += build_translations +CONFIG += zint +ZINT_PATH = $$PWD/3rdparty/zint-2.4.4 + +LIMEREPORT_VERSION_MAJOR = 1 +LIMEREPORT_VERSION_MINOR = 3 +LIMEREPORT_VERSION_RELEASE = 10 + +LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"' +DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\" +DEFINES += LIMEREPORT_VERSION=$${LIMEREPORT_VERSION} + +QT += script xml sql +REPORT_PATH = $$PWD/limereport +TRANSLATIONS_PATH = $$PWD/translations + +greaterThan(QT_MAJOR_VERSION, 4) { + DEFINES+=HAVE_QT5 + QT+= printsupport widgets + contains(QT,uitools){ + message(uitools) + DEFINES += HAVE_UI_LOADER + } +} + +lessThan(QT_MAJOR_VERSION, 5){ + CONFIG(uitools){ + message(uitools) + DEFINES += HAVE_UI_LOADER + } +} diff --git a/demo_r1/demo_r1.pro b/demo_r1/demo_r1.pro index 779fb55..cd2029d 100644 --- a/demo_r1/demo_r1.pro +++ b/demo_r1/demo_r1.pro @@ -1,4 +1,6 @@ -QT += core gui script sql +include(../common.pri) +QT += core gui + greaterThan(QT_MAJOR_VERSION, 4){ QT += widgets printsupport DEFINES += HAVE_QT5 @@ -20,7 +22,6 @@ DEPENDPATH += $$PWD/../include RESOURCES += \ r1.qrc - EXTRA_DIR += $$PWD/demo_reports/* CONFIG(release, debug|release){ @@ -33,7 +34,8 @@ CONFIG(release, debug|release){ unix{ UNIX_DIR = $$PWD/../build/unix - DEST_DIR = $${UNIX_DIR}/$${BUILD_TYPE}/demo_reports + DEST_DIR = $${UNIX_DIR}/$${BUILD_TYPE}/demo + REPORTS_DIR = $${DEST_DIR}/demo_reports MOC_DIR = $${OUT_PWD}/moc UI_DIR = $${OUT_PWD}//ui UI_HEADERS_DIR = $${OUT_PWD}//ui @@ -42,8 +44,11 @@ unix{ RCC_DIR = $${OUT_PWD}//rcc LIBS += -L$$PWD/../build/unix/$${BUILD_TYPE}/lib -llimereport +contains(CONFIG,zint){ + LIBS += -L$$PWD/../build/unix/$${BUILD_TYPE}/lib -lQtZint +} DESTDIR = $$DEST_DIR - QMAKE_POST_LINK += mkdir -p $$quote($$DESTDIR) | $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$DESTDIR) $$escape_expand(\n\t) + QMAKE_POST_LINK += mkdir -p $$quote($$REPORTS_DIR) | $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\n\t) QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/../lib @@ -54,9 +59,11 @@ unix{ win32 { WIN32_DIR = $$PWD/../build/win32 EXTRA_DIR ~= s,/,\\,g - - DEST_DIR = $${WIN32_DIR}/$${BUILD_TYPE}/demo_reports/ + DEST_DIR = $${WIN32_DIR}/$${BUILD_TYPE}/demo DEST_DIR ~= s,/,\\,g + REPORTS_DIR = $${DEST_DIR}/demo_reports + REPORTS_DIR ~= s,/,\\,g + MOC_DIR = $${OUT_PWD}/moc UI_DIR = $${OUT_PWD}/ui UI_HEADERS_DIR = $${OUT_PWD}/ui @@ -67,8 +74,10 @@ win32 { DESTDIR = $$DEST_DIR RC_FILE += mainicon.rc - QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$DESTDIR) $$escape_expand(\\n\\t) + QMAKE_POST_LINK += $$QMAKE_COPY_DIR $$quote($$EXTRA_DIR) $$quote($$REPORTS_DIR) $$escape_expand(\\n\\t) LIBS += -L$$PWD/../build/win32/$${BUILD_TYPE}/lib -llimereport } -INSTALLS = target +unix{ + INSTALLS = target +} diff --git a/demo_r1/demo_reports/categories.lrxml b/demo_r1/demo_reports/categories.lrxml new file mode 100644 index 0000000..165a91e --- /dev/null +++ b/demo_r1/demo_reports/categories.lrxml @@ -0,0 +1,170 @@ + + + + + + page1 + + + + + + + + ReportPage1 + + + + DataBand1 + + + + ImageItem1 + + + + + DataBand1 + + + + + + category + Picture + + + + + + ReportPage1 + + + + + + + category + + + + + + + SubDetailBand1 + + + + TextItem1 + + + + + SubDetailBand1 + + + $D{products.ProductName} + + + + + + + + + + + + + + + TextItem2 + + + + + SubDetailBand1 + + + $D{products.UnitPrice} + + + + + + + + + + + + + + + + + ReportPage1 + + + + DataBand1 + + + products + + + + + + + + + + + + + + + + + datasources + + + + northwind + QSQLITE + ./demo_reports/northwind.db + + + + + + + + + + category + Select * from categories + northwind + + + + + + products + Select * from products where CategoryID = $D{category.CategoryID} + northwind + category + + + + + + + TestName + TestValue + + + + + diff --git a/demo_r1/demo_reports/change_item_from_script.lrxml b/demo_r1/demo_reports/change_item_from_script.lrxml new file mode 100644 index 0000000..156eece --- /dev/null +++ b/demo_r1/demo_reports/change_item_from_script.lrxml @@ -0,0 +1,221 @@ + + + + + + + page1 + + + + + + + + ReportPage1 + + + + DataBand1 + + + + TextItem2 + + + + + DataBand1 + + + + + $S{ + +var selectedItemBegin = '<span style="background:black; color:red; font-weight:bold ">'; +var selectedItemEnd = '</span>' + +var customer = ""; + +if ($D{customers.CustomerID}=="ANTON"){ + customer = selectedItemBegin+$D{customers.CustomerID}+selectedItemEnd; +} else { + customer = $D{customers.CustomerID}; +} +'<span>Customer: </span>'+customer; + +} + + + + + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + customers + + + + + + + + + ReportHeader1 + + + + TextItem1 + + + + + ReportHeader1 + + + + + $S{ +var color = new QColor('#DEB887'); +var font = new QFont('Times New Roman',26,false,true); +THIS.backgroundColor = color; +THIS.fontColor = QColor('red'); +THIS.font = font; + +'Test'} + + + + + + + + + + + + + + + + + + + TextItem3 + + + + + ReportHeader1 + + + + + <p> <span>test1</span> <span style="background:red">test</span> </p> + + + + + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + + + + + + + + + + + + + + + + + + + datasources + + + + test + QSQLITE + E:/LimeReportGit/lib/report/demo/r1/demo_reports/northwind.db + + + + + + + + + + customers + Select * from customers limit 5 + test + + + + + + + + TestName + TestValue + + + + + + + + + + diff --git a/demo_r1/demo_reports/demoReport1_report_header_group_subdetail.lrxml b/demo_r1/demo_reports/demoReport1_report_header_group_subdetail.lrxml new file mode 100644 index 0000000..e036b0e --- /dev/null +++ b/demo_r1/demo_reports/demoReport1_report_header_group_subdetail.lrxml @@ -0,0 +1,632 @@ + + + + + + page1 + + + + + + + + ReportPage1 + + + + ReportHeader1 + + + + TextItem1 + + + + + ReportHeader1 + + + Lime +Report + + + + + + + + + + + + + + + ImageItem1 + + + + + ReportHeader1 + + + 89504e470d0a1a0a0000000d494844520000006400000071080600000023f9067c000000097048597300000dd700000dd70142289b780000119c49444154789ced9d79701cd59dc73feff55cba46b7c18eed8d84c1b6c02c4636b58ea928d8c609b0bb64c3429104ca5420b001c292cd3ae50d7120091bbb300e570a0c2609391c0889b99c1828b0036c42488c8d8d1cf9968c25d91aeb1849a3397afa78fb47cf48e383b2248f3c9a91be5553d3d3afbbe7757ffbbddfeffd8ef704a780dfef07104208745d17a73a7e1c83871002c330304d13c00638e503deb871a36bf1e2c5771886e1374d5328a546ba9e630642086f2010f8d3b469d35ec7e1c2729deaa44020e002beee72b9ced6340da5d4782b49135c2e577e28145a0b6c077a80e82909e9eaea12b66d8b6834aaaf5cb9f2059fcf67bb5c2e4388715e868b4824622e58b060e6a5975eba2810084c00a602fb180421a2b7b7570098a669ad58b1621b70180802d688d63ab711abadadfdbc94b2ce344d17e00524c0295b4812524a05f402078056c0601032681c274001d1d9b367cf9152da899e46e13c4b31684212308128104e6c8f6378b04b4b4b63272b182a2149a894cf38860129e5c9f79fe17a8ce31418276494619c905186e1ca9013a094e2b8b1c9b806360c199b36428410ac59b3068fc7a3b5b5b5b9bababa4428143a9ea49c47d23ed5d8d8686fdebcd92461a31a2cd24608c0c2850b7d555555cb84105f554a598ccd56226ddb8eb6b4b43c595d5dfd108e5818f41021ad843cf0c003f1bababab57bf6ec79aba9a9a9c2300c4f3aaf9f0d104208cbb2ac8f3efa28004c04dac904215eaf97b56bd7aab56bd776242a509cb8fe586b25c9f1591c88e0989804839427692344d7f56465e240178ef5722c43e190613104e19e36426ebdf5569e7aeaa964454cc64d2b082150437420a58d90a79e7a0aa514efbfff3eab57af1e6bddd431b02c8bbd7bf7aa1d3b760cf9dcb40af59e9e1e317dfaf4090f3ffc70795f5f9fb42c6b4c12a394b21b1b1b3bafbcf2ca761cb5f7cc7759008140c05b5555f5359fcf779bdfef5763d1bb2884909665450dc3580bfc08a7eb36067b7eda0859b06001d3a74fd78195c033c0598087b1a76541c2e721a5acb46d3b309413d346c8e6cd9b939b16d08df356b8187b26faa48a6bd8b6ddc710959bb476590c6858a1c4672cb68e54d864ca7492625c5443ad44aec2e7f3118b9dd431f8b148ab71f1b5d75ea3a4a4c4130c06dddddddda2afaf6fccb590847151eddab5cb7cf4d147e389dd99d1b2ce39e79c7ee3a26ddb63dab8d8dadafae4a38f3efa50625f668c8bf7dd775fbcaeae6ecdae5dbbde3874e85085aeeb1e31d6ecef806ddb564b4b4b07703699322e161414b06edd3ab56eddba2e1c197214d0d275fd2c4252cbd2851091841b62d0481b21e1709844450c9c40ba1ec6669705098baf52ca66880185692364f7eeddcc98312359199381e0afb186fefbcecfcf27128964c6b83863c60c945284c361d78e1d3bdcb66dd3d1d131e644881002d33469686830972f5f9e941d99d1b2745d777b3c9e2f5e72c9255799a6698f455b168e96a55f78e1851b962f5fbe9e449ac1604f4e2b211b366c50b5b5b507dadbdbff1608048ae2f1b89b2178cb720022d1428cfafa7a1ba8648881e9692364e6cc995c7bedb516b0056804ca0177baae9f6550802ea554b66d674686ecdab52b591113c7853bd66d59966ddb0619362e82330689e3a8bf63a5ab3a1ec96e3a738172c761ac47c60ffbdec7637b4719c60919651895849c247226db9403c731348c14f2919221a7052104adadad1228080402aeaeae2e2984c80a992484108661a88686065d08116588f274541202e0f7fb27e4e7e7ff72c284093312ba7c56b49244d449a4babafac96f7ce31b8f3030141814462d21f7dd775fd7942953beb67dfbf6a99d9d9d2596656585295f08816559768a3fe428d94ec8d2a54b59b56a958993131f05f271e45d56b4129cb19821840867cc1f924eac5ab50a9c9b8ae1bc6182ec21230995202373093b23802185618e420cb9eea352edede93926934165eb2767d4dee2e26294526cd9b2456cd8b0411ac6a04363338e8450a7bebe5e2554f5cc587bd38d7038ecaea9a939b7aaaaaa3012896493fc10b66d5b4d4d4d6dafbefaea61ce60f4fb097fb264c9127efef39f9fc62507609a66797e7efe8352ca595eaf17b247a80bdbb663c160f027c0c33856ef918d7eafacaca4a1a1a1f0e8d1a3de482422a2d1a8d075ddb8fcf2cbfb18620ad7c9b06cd9324a4a4a8e02d700938032b22b705b0171b7db5d6e18c6d1a19c382c42962d5be6292d2d5d5b565676594272d9e170f843e0cb38898e3aa7f1f056ae5c090331c2dd89eb659b2bd8300c23c299705099a629955213344d3b0b48469b848099c01e1c07d5e93ebc64026932c62b9bc848be3c4356db874548381c3e7e324c158bc5bc38ddcb41d2d7df67f33450c3aaf3b0083959ac956ddb9263f3d2d3d9c5642321c3c2a81c188e658c1332ca907142dc19afc1e8c219893ab9f762b4da4a64811b615a1034503fdc86f56117b691620bfde3bfc0c2dfc3d042cb720be924a49f849716e3bdb01caf5be2366c8a8a3d7c420a2a04e4d90a6528621797d3da1aa1cd52e85183d89fdb885eb681380965604609ecee4e63edb204e9214408a46dca7228bc773ee72d9acc055e8d85122e9282a9273b65820fa6158361531f3579775a31af4d29e2fd8e183df7be4f647777d69bde8785d327c48c23224151d9f466d95faee1bfce2d67e6604f15804732cbe36156b187dbaafd341f8ef0649ec66fdf0d70f8a583843501961a3bc40c8b903e7c0acb8058103e781136de4f61a0a5e0dc0a669ecea3f348a67cb290fbefba80db3f33891fe8162fbfda4c72fead3141ca500951000b8ffcc6cf960945bcf1001cdae34ca0e1e1844766296c4b61db0a4b2994022500211002a426909ac475fc30d3ab31694e254f3c5dc7e2a5efb1fcd7fb69c4b167e57cfefb500991f75ccc9485d6f65bdcbfbc792e0a671af914580a3b6e61e8367a632f47767773784f0f6d2d7d043b6284f35c70561ebe73fd949d5fc6e4e9c55495fba870493c9a18a88f0026e5f36f3f9ecf3fe4bbb8f3e9ddd4e3182e739a945313229cf80261c5e51dd3a8f9ce6c7ee4d198e894258e51604b4df5e956744f0fcdcfede783c71bd819b368c3310c8670e68bd719485e71013ea0e8a6f39875fbf95c3eab8c4bbc927c2106c647255e2e5e71098fb784f9da6bcdd47b35a2ba95bba47c2c21791a442de8a140a18744c18edff91fa9e3db9a9692eaac004d424105ed65b37aae7a70d3b35b8334006d4000e8c021248663b94d9dfb2369fbf23eb397bf3fb397376e3a8fb9df9bc36d930b982585f33f0228f372e1e397f2fdea67f9ba6e71c82389c67394928f1d27479df7585dd3fc44a1f6c62abf6bdd1d9e63c800c82b82e90b50776f523d37fc2ab4354883807ae03d9c55630ee01013c46921111c726289ed10d029042dc0ee67f6f2d2dc17b9635b07eb554ad72405727201f35ff92cb70065713b7733b34e2024d5aa1eb811ff25a2f1dbf20f2bca8f6f4b76e104c5d5f7c3dd6fc0e40bd08c3e05f42868c621a10fa755243d8827d39214602b852520ecd1683f1ae5c36bdfe47b1f74f08bd403dd92fc4bcfe6ba697e2e000a4f56f75cc03137a5be95101940eb0d1496f9f88e4772776abbb015ea48dc133cfa8535dd2cb82b71627fe86dd27f3cd4d5779402e21696df4de4608803dfdfca836d11de4af5ace4bba87c643ed703a5621407689c0efa09e9b909c403cef681ebc99b90c77fba044b530fb614f6fe5e5a17bfee59d75531abfd24d74bfa4086eda0ea359c94b8973fe2c0abcdacb0ed810001af46de45657c0a98a29cf0d26c097c18342440e3f550fc8cb3a3fd465c530ab9c125b83ff54025a4aaefe4e0dc17f84553c4b3bdd45fd03782f55240ac3bcedfdb63fcb67faf80420f155f9ac66c72b4db9200d5cf393f1e9c8328f430df2d5973ec511a91c973f58b5fe0b95e83bf9f555eb2c3eff78747ba72af7c446720ca2bfd3b14b804de4f4fe47cc04f0ea65d1ff386dd7201555e8d678fd92f04d6d4b976f8a6e7a2ca11d6fb6a6a6a9add6ef7888713be759858b74e8352031a9726707fa280b3812272508ef43ff8835fa2a0c8cd1382c4a02f8180eeea0e7ee99988f015291ccda9bba6a62636d273987812352bf512b31447fa2b2c90856efc3832243709d9f4cfb826e673b3142c4e2dec3388def5176da3955fa14bd11f9663e7e7e78fb8a12f39f0f3695808e2294502671e2e37d995333228c8b995f08fe54c724b7e985a60d8988fede4ede79bb46d3e8fcb48040e9b30bc64c6e122cf8526a134f9db56d8e178ff1a8a39450680acef4274c570f519fc9f61130147c5792fc0be6f6f6153698167afdbed8e4b29873ce5693a90a7512a0525c9df96c26a8dd08333d6c939038a8c5970de6f38e4ff194bde3ec29a884947678c8eeb37f112d0545c5cbc4fd3b4e440ef8cbe910dd7915fe0667eff0ee1b4dcad1d1ce1582b40ce2019c06c037d97ff8187be3283f74b3cd41c8e500fecaeaeaeeef8b84510471a93f229714bae4edd173589bdd8c4411cdb58b2ebca1952925a8a8d935c19f8e96e5e07b624eef2e8f9e79f7f467ddbea1e10ff0bcf2f427a24b334415db2ccb4b0f7f570b83dc61101bd2a073d89a96aa3c279e3ba8170e22ecdcaca4aef89a78d0c9abee89001f0d9c94cf46afc777fa180b049f48583ec0082ca592839e756ac3e991e6fe338920084659d997b5ebf18aa9e75b68fde88cfe7e26a2958942c570a5ac31c7db89ead3899b97de4a250cf7405001efb147ce133cef6772f42f83dccf7481e4c3da6374ef8a77b780f382c1c07987ec2857200191fe96ebe0a2efb0a886b9cdfff53cb451ec9e3405ef2184b616fefa471f587bc0bb42867c6ba9cebae20c3841cb81ece790ef883f33b7233177a246b85e0bcd4e39afb68bff3cfbc0e1cc27180252775c939648c90e012284de487beb808f9d9a9d47a258f4b416dea711d317a57ed60d3ce2e3e948203b6a2931c5e012e2384bc77f500192d5fc65deea3ce2bf989382eecb4374ee4378dfcf5f106de96827db6a2951c951d496484907f7ad9f90e2ec15be0e6f36ec9d3380ea77ef4c689ac6f62cb9d7fe26501fb6c45234e5044ce6956a9c8a896a5e02c4df018c79111b731df6c65e757dee645609f721249735690a722a3843cbd9b8e8321965bea5899a09c94858826e800f625be739e0cc82021f7d6c2b7fe4aecfa4dbcb4a79b27535526af86fbdfab98f7bbcb9907484b41d919b31764161923e47b5ba1cc8bdad24ed757dfe1a1963e7e9f5aae09bc574d65c9cfeaf857a0b44b47cb73e59effe37864b4cbead2513e17e6bb015a96fd8de55d3a5b53cbdd92c2ebce61d9f7e7b008288e9ae3848c3862a6e31afef57ef63e5ccfd2b0c947a9e5f92e26fc470df7947999468ec662a522e38424a080d80fb6b1f5b9fd2cd52d82c9c71e36d11b82f49678f82403b158394b4ada08494e4283f37087e3c9b381de5bde61d3a666be6b9a447b747a9fdfcf9f3eb3815f3586083010a6aa12ff99aeea8f1aa46d60a8699a3671e2c4e22baeb8a2fcf6db6f374a4b4b6ddb1eda184e0ac1ae964ef9c10b4fbc531cfae3d3cda1f8d45bf7f9dfa9ad2d6a9f397346f7e73ef739dfecd9b32bdd6eb77df0e0c1981022428ed9b4d24288104254545414af5fbffebaaaaaaa3abfdf1f95520eeb414d9c34894fd7fe58b6f7463cdece4eb14dc517959496868a8b8bfbdc6eb795b23cf66660238e5d2b67c628696b2145454545f3e6cd5b98b6eb1516503da9f2a4658661d8dddddd79c0361c67558c1c6929a345a80f099665c50f1f3e5c8a331d949b1c2103864948228c3463537f0b215c96657971727f732a606e585d56281452baae1f8c46a3d5baaebb1273659d11082144341a8d0583c120391e753268ac5ebd5a5fbd7af5ddc00ca00a279bf64cc2064252ca1edbb6738a94614d1c80f34022c07ee00867befb528069db762f39e6b01aae9625185884385373f62413496db24f86a88f1ba39d9290840017524af737bff9cd0be6cd9be79b3367ceb9050505166476b42c84c8bad1ba10826834aa0b216a841027f42ca724c4344d9452bacbe572af58b1e21edbb693339266db5b396a5058580810370c43eaba6e92129f7c4a429a9b9bed8e8e8e8d6d6d6de78442a1024065cb7a50a31cc2e5727976eedcd9c4406ac5a05673d670a698a9022ac8d2c1e42886e976bb038661b400d1c11022189828c633a2551b9b48ae241407aca1ca81f1d6917e1c33edc8ff0311504d2a89d602380000000049454e44ae426082 + + + + + + + + ShapeItem1 + + + + + ReportHeader1 + + + + + + + + + + + + ShapeItem2 + + + + + ReportHeader1 + + + + + + + + + + + + TextItem9 + + + + + ReportHeader1 + + + REPORT + + + + + + + + + + + + + + + TextItem10 + + + + + ReportHeader1 + + + HEADER + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + + + + DataBand1 + + + + TextItem3 + + + + + DataBand1 + + + $D{orders.OrderDate} + + + + + + + + + + + + + + + TextItem4 + + + + + DataBand1 + + + $D{orders.OrderID} + + + + + + + + + + + + + + + TextItem12 + + + + + DataBand1 + + + DATA BAND + + + + + + + + + + + + + + + TextItem16 + + + + + DataBand1 + + + OrderID + + + + + + + + + + + + + + + TextItem17 + + + + + DataBand1 + + + Order Date + + + + + + + + + + + + + + + + + ReportPage1 + + + + + + + orders + + + + + + + GroupBandHeader1 + + + + TextItem2 + + + + + GroupBandHeader1 + + + $D{orders.CompanyName} + + + + + + + + + + + + + + + ShapeItem3 + + + + + GroupBandHeader1 + + + + + + + + + + + + TextItem11 + + + + + GroupBandHeader1 + + + GROUP HEADER + + + + + + + + + + + + + + + + + ReportPage1 + + + + DataBand1 + + + CompanyName + + + + + SubDetailBand1 + + + + TextItem5 + + + + + SubDetailBand1 + + + $D{orderitems.ProductName} + + + + + + + + + + + + + + + TextItem6 + + + + + SubDetailBand1 + + + $D{orderitems.Quantity} + + + + + + + + + + + + + + + TextItem7 + + + + + SubDetailBand1 + + + $S{line("SubDetailBand1")} + + + + + + + + + + + + + + + TextItem13 + + + + + SubDetailBand1 + + + SUBDETAIL BAND + + + + + + + + + + + + + + + + + ReportPage1 + + + + DataBand1 + + + orderitems + + + + SubDetailFooterBand1 + + + + TextItem8 + + + + + SubDetailFooterBand1 + + + $S{SUM($D{orderitems.Quantity},"SubDetailBand1")} + + + + + + + + + + + + + + + TextItem14 + + + + + SubDetailFooterBand1 + + + SUBDETAIL FOOTER + + + + + + + + + + + + + + + TextItem15 + + + + + SubDetailFooterBand1 + + + Total + + + + + + + + + + + + + + + ShapeItem4 + + + + + SubDetailFooterBand1 + + + + + + + + + + + + + + ReportPage1 + + + + SubDetailBand1 + + + + + + + + + + + + + + + + + + + datasources + + + + northwind + QSQLITE + ./demo_reports/northwind.db + + + + + + + + + + orders + Select * from orders +inner join customers on customers.customerid = orders.customerid order by companyname +limit 50 + northwind + + + + + + orderitems + Select * from orderitems + inner join products on products.productid = orderitems.productid +where orderid = $D{orders.orderid} + northwind + orders + + + + + + + diff --git a/demo_r1/demo_reports/northwind.db b/demo_r1/demo_reports/northwind.db new file mode 100644 index 0000000..42a4ef6 Binary files /dev/null and b/demo_r1/demo_reports/northwind.db differ diff --git a/demo_r1/mainicon.rc b/demo_r1/mainicon.rc new file mode 100644 index 0000000..83c0128 --- /dev/null +++ b/demo_r1/mainicon.rc @@ -0,0 +1 @@ +DI_ICON1 ICON "main.ico" diff --git a/limereport.pro b/limereport.pro index 319e7e8..9ec2517 100644 --- a/limereport.pro +++ b/limereport.pro @@ -1,5 +1,5 @@ TEMPLATE = subdirs -CONFIG += zint +include(common.pri) contains(CONFIG, zint){ SUBDIRS += 3rdparty } diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index 21094fd..a2b558b 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -101,11 +101,11 @@ void TextItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* style, Q case Angle90: hOffset = width()-fakeMarginSize(); vOffset = fakeMarginSize(); - if ((tmpSize.width()>0) && (m_alignment & Qt::AlignVCenter)){ + if (m_alignment & Qt::AlignVCenter){ hOffset = (width()-m_text->size().height())/2+m_text->size().height(); } - if ((tmpSize.height()>0) && (m_alignment & Qt::AlignBottom)){ + if (m_alignment & Qt::AlignBottom){ hOffset = (m_text->size().height()); } painter->translate(hOffset,vOffset); @@ -126,11 +126,11 @@ void TextItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* style, Q case Angle270: hOffset = fakeMarginSize(); vOffset = height()-fakeMarginSize(); - if ((tmpSize.width()>0) && (m_alignment & Qt::AlignVCenter)){ + if (m_alignment & Qt::AlignVCenter){ hOffset = (width()-m_text->size().height())/2; } - if ((tmpSize.height()>0) && (m_alignment & Qt::AlignBottom)){ + if (m_alignment & Qt::AlignBottom){ hOffset = (width()-m_text->size().height()); } painter->translate(hOffset,vOffset); diff --git a/limereport/limereport.pri b/limereport/limereport.pri new file mode 100644 index 0000000..e47b1c9 --- /dev/null +++ b/limereport/limereport.pri @@ -0,0 +1,203 @@ +include(../common.pri) + +DEFINES += INSPECT_BASEDESIGN + +INCLUDEPATH += \ + $$REPORT_PATH/ \ + $$REPORT_PATH/items \ + $$REPORT_PATH/bands \ + $$REPORT_PATH/base \ + $$REPORT_PATH/objectinspector \ + $$REPORT_PATH/databrowser + +SOURCES += \ + $$REPORT_PATH/items/lrtextitem.cpp \ + $$REPORT_PATH/bands/lrpageheader.cpp \ + $$REPORT_PATH/bands/lrpagefooter.cpp \ + $$REPORT_PATH/bands/lrreportheader.cpp \ + $$REPORT_PATH/bands/lrreportfooter.cpp \ + $$REPORT_PATH/bands/lrdataband.cpp \ + $$REPORT_PATH/bands/lrgroupbands.cpp \ + $$REPORT_PATH/bands/lrsubdetailband.cpp \ + $$REPORT_PATH/objectinspector/lrobjectinspectorwidget.cpp \ + $$REPORT_PATH/objectinspector/lrobjectitemmodel.cpp \ + $$REPORT_PATH/objectinspector/lrobjectpropitem.cpp \ + $$REPORT_PATH/objectinspector/lrpropertydelegate.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrstringpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrrectproptem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrintpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrenumpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrboolpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrflagspropitem.cpp \ + $$REPORT_PATH/objectinspector/editors/lrtextitempropertyeditor.cpp \ + $$REPORT_PATH/objectinspector/editors/lrcomboboxeditor.cpp \ + $$REPORT_PATH/objectinspector/editors/lrcheckboxeditor.cpp \ + $$REPORT_PATH/objectinspector/editors/lrbuttonlineeditor.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrfontpropitem.cpp \ + $$REPORT_PATH/objectinspector/editors/lrfonteditor.cpp \ + $$REPORT_PATH/objectinspector/editors/lrimageeditor.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrimagepropitem.cpp \ + $$REPORT_PATH/objectinspector/lrbasedesignobjectmodel.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrqrealpropitem.cpp \ + $$REPORT_PATH/objectinspector/editors/lrcoloreditor.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrcolorpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrdatasourcepropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrgroupfieldpropitem.cpp \ + $$REPORT_PATH/objectinspector/propertyItems/lrcontentpropitem.cpp \ + $$REPORT_PATH/objectsbrowser/lrobjectbrowser.cpp \ + $$REPORT_PATH/databrowser/lrdatabrowser.cpp \ + $$REPORT_PATH/databrowser/lrsqleditdialog.cpp \ + $$REPORT_PATH/databrowser/lrconnectiondialog.cpp \ + $$REPORT_PATH/databrowser/lrvariabledialog.cpp \ + $$REPORT_PATH/databrowser/lrdatabrowsertree.cpp \ + $$REPORT_PATH/serializators/lrxmlqrectserializator.cpp \ + $$REPORT_PATH/serializators/lrxmlbasetypesserializators.cpp \ + $$REPORT_PATH/serializators/lrxmlreader.cpp \ + $$REPORT_PATH/serializators/lrxmlwriter.cpp \ + $$REPORT_PATH/items/lrsubitemparentpropitem.cpp \ + $$REPORT_PATH/items/lralignpropitem.cpp \ + $$REPORT_PATH/items/lrhorizontallayout.cpp \ + $$REPORT_PATH/items/editors/lritemeditorwidget.cpp \ + $$REPORT_PATH/items/editors/lrfonteditorwidget.cpp \ + $$REPORT_PATH/items/editors/lrtextalignmenteditorwidget.cpp \ + $$REPORT_PATH/items/editors/lritemsaligneditorwidget.cpp \ + $$REPORT_PATH/items/editors/lritemsborderseditorwidget.cpp \ + $$REPORT_PATH/items/lrsimpletagparser.cpp \ + $$REPORT_PATH/items/lrimageitem.cpp \ + $$REPORT_PATH/items/lrtextitemeditor.cpp \ + $$REPORT_PATH/items/lrshapeitem.cpp \ + $$REPORT_PATH/lrbanddesignintf.cpp \ + $$REPORT_PATH/lrpageitemdesignintf.cpp \ + $$REPORT_PATH/lrpagedesignintf.cpp \ + $$REPORT_PATH/lrbandsmanager.cpp \ + $$REPORT_PATH/lrglobal.cpp \ + $$REPORT_PATH/lritemdesignintf.cpp \ + $$REPORT_PATH/lrdatadesignintf.cpp \ + $$REPORT_PATH/lrreportdesignwidget.cpp \ + $$REPORT_PATH/lrbasedesignintf.cpp \ + $$REPORT_PATH/lrreportengine.cpp \ + $$REPORT_PATH/lrdatasourcemanager.cpp \ + $$REPORT_PATH/lrreportdesignwindow.cpp \ + $$REPORT_PATH/lrreportrender.cpp \ + $$REPORT_PATH/lrscriptenginemanager.cpp \ + $$REPORT_PATH/lrpreviewreportwindow.cpp \ + $$REPORT_PATH/lrvariablesholder.cpp \ + $$REPORT_PATH/lrgroupfunctions.cpp \ + $$REPORT_PATH/lrsimplecrypt.cpp \ + $$REPORT_PATH/lraboutdialog.cpp \ + $$REPORT_PATH/lrsettingdialog.cpp + +contains(CONFIG, zint){ + SOURCES += $$REPORT_PATH/items/lrbarcodeitem.cpp +} + +HEADERS += \ + $$REPORT_PATH/base/lrsingleton.h \ + $$REPORT_PATH/bands/lrpageheader.h \ + $$REPORT_PATH/bands/lrpagefooter.h \ + $$REPORT_PATH/bands/lrreportheader.h \ + $$REPORT_PATH/bands/lrreportfooter.h \ + $$REPORT_PATH/bands/lrdataband.h \ + $$REPORT_PATH/objectinspector/lrobjectinspectorwidget.h \ + $$REPORT_PATH/objectinspector/lrobjectitemmodel.h \ + $$REPORT_PATH/objectinspector/lrobjectpropitem.h \ + $$REPORT_PATH/objectinspector/lrpropertydelegate.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrstringpropitem.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrrectproptem.h \ + $$REPORT_PATH/databrowser/lrdatabrowser.h \ + $$REPORT_PATH/databrowser/lrsqleditdialog.h \ + $$REPORT_PATH/databrowser/lrconnectiondialog.h \ + $$REPORT_PATH/databrowser/lrvariabledialog.h \ + $$REPORT_PATH/databrowser/lrdatabrowsertree.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrdatasourcepropitem.h \ + $$REPORT_PATH/lrbanddesignintf.h \ + $$REPORT_PATH/lrpageitemdesignintf.h \ + $$REPORT_PATH/lrbandsmanager.h \ + $$REPORT_PATH/lrglobal.h \ + $$REPORT_PATH/base/lrsimpleabstractfactory.h \ + $$REPORT_PATH/base/lrattribsabstractfactory.h \ + $$REPORT_PATH/serializators/lrserializatorintf.h \ + $$REPORT_PATH/serializators/lrstorageintf.h \ + $$REPORT_PATH/serializators/lrxmlqrectserializator.h \ + $$REPORT_PATH/serializators/lrxmlserializatorsfactory.h \ + $$REPORT_PATH/serializators/lrxmlbasetypesserializators.h \ + $$REPORT_PATH/serializators/lrxmlreader.h \ + $$REPORT_PATH/serializators/lrxmlwriter.h \ + $$REPORT_PATH/lrbasedesignintf.h \ + $$REPORT_PATH/lritemdesignintf.h \ + $$REPORT_PATH/lrdesignelementsfactory.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrintpropitem.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrenumpropitem.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrboolpropitem.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrflagspropitem.h \ + $$REPORT_PATH/objectinspector/editors/lrtextitempropertyeditor.h \ + $$REPORT_PATH/objectinspector/editors/lrcomboboxeditor.h \ + $$REPORT_PATH/objectinspector/editors/lrcheckboxeditor.h \ + $$REPORT_PATH/objectinspector/editors/lrbuttonlineeditor.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrgroupfieldpropitem.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrcontentpropitem.h \ + $$REPORT_PATH/objectsbrowser/lrobjectbrowser.h \ + $$REPORT_PATH/items/lrtextitem.h \ + $$REPORT_PATH/items/lrsubitemparentpropitem.h \ + $$REPORT_PATH/items/lralignpropitem.h \ + $$REPORT_PATH/items/lrhorizontallayout.h \ + $$REPORT_PATH/items/editors/lritemeditorwidget.h \ + $$REPORT_PATH/items/editors/lrfonteditorwidget.h \ + $$REPORT_PATH/items/editors/lrtextalignmenteditorwidget.h \ + $$REPORT_PATH/items/editors/lritemsaligneditorwidget.h \ + $$REPORT_PATH/items/editors/lritemsborderseditorwidget.h \ + $$REPORT_PATH/lrdatadesignintf.h \ + $$REPORT_PATH/lrcollection.h \ + $$REPORT_PATH/lrpagedesignintf.h \ + $$REPORT_PATH/lrreportdesignwidget.h \ + $$REPORT_PATH/lrreportengine_p.h \ + $$REPORT_PATH/lrdatasourcemanager.h \ + $$REPORT_PATH/lrreportdesignwindow.h \ + $$REPORT_PATH/items/lrsimpletagparser.h \ + $$REPORT_PATH/bands/lrsubdetailband.h \ + $$REPORT_PATH/lrreportrender.h \ + $$REPORT_PATH/lrpreviewreportwindow.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrfontpropitem.h \ + $$REPORT_PATH/objectinspector/editors/lrfonteditor.h \ + $$REPORT_PATH/items/lrimageitem.h \ + $$REPORT_PATH/objectinspector/editors/lrimageeditor.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrimagepropitem.h \ + $$REPORT_PATH/items/lrtextitemeditor.h \ + $$REPORT_PATH/objectinspector/lrbasedesignobjectmodel.h \ + $$REPORT_PATH/lrscriptenginemanager.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrqrealpropitem.h \ + $$REPORT_PATH/items/lrshapeitem.h \ + $$REPORT_PATH/objectinspector/editors/lrcoloreditor.h \ + $$REPORT_PATH/objectinspector/propertyItems/lrcolorpropitem.h \ + $$REPORT_PATH/bands/lrgroupbands.h \ + $$REPORT_PATH/lrvariablesholder.h \ + $$REPORT_PATH/lrgroupfunctions.h \ + $$REPORT_PATH/lrreportengine.h \ + $$REPORT_PATH/lrdatasourcemanagerintf.h \ + $$REPORT_PATH/lrscriptenginemanagerintf.h \ + $$REPORT_PATH/lrsimplecrypt.h \ + $$REPORT_PATH/lraboutdialog.h \ + $$REPORT_PATH/lrcallbackdatasourceintf.h \ + $$REPORT_PATH/lrsettingdialog.h + +contains(CONFIG,zint){ + HEADERS += $$REPORT_PATH/items/lrbarcodeitem.h +} + +FORMS += \ + $$REPORT_PATH/databrowser/lrsqleditdialog.ui \ + $$REPORT_PATH/databrowser/lrconnectiondialog.ui \ + $$REPORT_PATH/databrowser/lrdatabrowser.ui \ + $$REPORT_PATH/databrowser/lrvariabledialog.ui \ + $$REPORT_PATH/objectinspector/editors/ltextitempropertyeditor.ui \ + $$REPORT_PATH/lrpreviewreportwindow.ui \ + $$REPORT_PATH/items/lrtextitemeditor.ui \ + $$REPORT_PATH/lraboutdialog.ui \ + $$REPORT_PATH/lrsettingdialog.ui + +RESOURCES += \ + $$REPORT_PATH/objectinspector/lobjectinspector.qrc \ + $$REPORT_PATH/databrowser/lrdatabrowser.qrc \ + $$REPORT_PATH/report.qrc \ + $$REPORT_PATH/items/items.qrc + diff --git a/limereport/limereport.pro b/limereport/limereport.pro index 6a2af27..c422868 100644 --- a/limereport/limereport.pro +++ b/limereport/limereport.pro @@ -1,21 +1,5 @@ TARGET = limereport TEMPLATE = lib -QT += script xml sql -greaterThan(QT_MAJOR_VERSION, 4) { - DEFINES+=HAVE_QT5 - QT+= printsupport widgets - contains(QT,uitools){ - message(uitools) - DEFINES += HAVE_UI_LOADER - } -} - -lessThan(QT_MAJOR_VERSION, 5){ - CONFIG(uitools){ - message(uitools) - DEFINES += HAVE_UI_LOADER - } -} CONFIG(release, debug|release){ message(Release) @@ -24,24 +8,15 @@ CONFIG(release, debug|release){ message(Debug) BUILD_TYPE = debug } + CONFIG += lib CONFIG += dll CONFIG += create_prl CONFIG += link_prl CONFIG -= app_bundle -LIMEREPORT_VERSION_MAJOR = 1 -LIMEREPORT_VERSION_MINOR = 3 -LIMEREPORT_VERSION_RELEASE = 10 -LIMEREPORT_VERSION = '\\"$${LIMEREPORT_VERSION_MAJOR}.$${LIMEREPORT_VERSION_MINOR}.$${LIMEREPORT_VERSION_RELEASE}\\"' - -DEFINES += LIMEREPORT_VERSION_STR=\"$${LIMEREPORT_VERSION}\" -DEFINES += LIMEREPORT_VERSION=$${LIMEREPORT_VERSION} - -DEFINES += INSPECT_BASEDESIGN DEFINES += LIMEREPORT_EXPORTS -REPORT_PATH = $$PWD EXTRA_FILES += \ $$PWD/lrglobal.cpp \ $$PWD/lrglobal.h \ @@ -66,7 +41,6 @@ unix { for(FILE,EXTRA_FILES){ QMAKE_POST_LINK += mkdir -p $$quote($${DESTDIR}/include) | $$QMAKE_COPY $$quote($$FILE) $$quote($$DESTDIR/include/) $$escape_expand(\\n\\t) } - } win32 { @@ -82,239 +56,47 @@ win32 { OBJECTS_DIR = $${OUT_PWD}/win32/$${BUILD_TYPE}/obj RCC_DIR = $${OUT_PWD}/win32/$${BUILD_TYPE}/rcc DESTDIR = $$PWD/../build/win32/$${BUILD_TYPE}/lib - } -DEPENDPATH += report report/bands report/base report/databrowser report/items report/objectinspector -INCLUDEPATH += report report/bands report/base report/databrowser report/items report/objectinspector +include(limereport.pri) contains(CONFIG,zint){ - LIBS += -L$${DEST_DIR} -lQtZint + message(zint) + INCLUDEPATH += $$ZINT_PATH/backend $$ZINT_PATH/backend_qt4 + DEPENDPATH += $$ZINT_PATH/backend $$ZINT_PATH/backend_qt4 + LIBS += -L$${DESTDIR} -lQtZint } - -INCLUDEPATH += \ - $$REPORT_PATH/ \ - $$REPORT_PATH/items \ - $$REPORT_PATH/bands \ - $$REPORT_PATH/base \ - $$REPORT_PATH/objectinspector \ - $$REPORT_PATH/databrowser - -SOURCES += \ - $$REPORT_PATH/items/lrtextitem.cpp \ - $$REPORT_PATH/bands/lrpageheader.cpp \ - $$REPORT_PATH/bands/lrpagefooter.cpp \ - $$REPORT_PATH/bands/lrreportheader.cpp \ - $$REPORT_PATH/bands/lrreportfooter.cpp \ - $$REPORT_PATH/bands/lrdataband.cpp \ - $$REPORT_PATH/bands/lrgroupbands.cpp \ - $$REPORT_PATH/bands/lrsubdetailband.cpp \ - $$REPORT_PATH/objectinspector/lrobjectinspectorwidget.cpp \ - $$REPORT_PATH/objectinspector/lrobjectitemmodel.cpp \ - $$REPORT_PATH/objectinspector/lrobjectpropitem.cpp \ - $$REPORT_PATH/objectinspector/lrpropertydelegate.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrstringpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrrectproptem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrintpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrenumpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrboolpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrflagspropitem.cpp \ - $$REPORT_PATH/objectinspector/editors/lrtextitempropertyeditor.cpp \ - $$REPORT_PATH/objectinspector/editors/lrcomboboxeditor.cpp \ - $$REPORT_PATH/objectinspector/editors/lrcheckboxeditor.cpp \ - $$REPORT_PATH/objectinspector/editors/lrbuttonlineeditor.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrfontpropitem.cpp \ - $$REPORT_PATH/objectinspector/editors/lrfonteditor.cpp \ - $$REPORT_PATH/objectinspector/editors/lrimageeditor.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrimagepropitem.cpp \ - $$REPORT_PATH/objectinspector/lrbasedesignobjectmodel.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrqrealpropitem.cpp \ - $$REPORT_PATH/objectinspector/editors/lrcoloreditor.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrcolorpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrdatasourcepropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrgroupfieldpropitem.cpp \ - $$REPORT_PATH/objectinspector/propertyItems/lrcontentpropitem.cpp \ - $$REPORT_PATH/objectsbrowser/lrobjectbrowser.cpp \ - $$REPORT_PATH/databrowser/lrdatabrowser.cpp \ - $$REPORT_PATH/databrowser/lrsqleditdialog.cpp \ - $$REPORT_PATH/databrowser/lrconnectiondialog.cpp \ - $$REPORT_PATH/databrowser/lrvariabledialog.cpp \ - $$REPORT_PATH/databrowser/lrdatabrowsertree.cpp \ - $$REPORT_PATH/serializators/lrxmlqrectserializator.cpp \ - $$REPORT_PATH/serializators/lrxmlbasetypesserializators.cpp \ - $$REPORT_PATH/serializators/lrxmlreader.cpp \ - $$REPORT_PATH/serializators/lrxmlwriter.cpp \ - $$REPORT_PATH/items/lrsubitemparentpropitem.cpp \ - $$REPORT_PATH/items/lralignpropitem.cpp \ - $$REPORT_PATH/items/lrhorizontallayout.cpp \ - $$REPORT_PATH/items/editors/lritemeditorwidget.cpp \ - $$REPORT_PATH/items/editors/lrfonteditorwidget.cpp \ - $$REPORT_PATH/items/editors/lrtextalignmenteditorwidget.cpp \ - $$REPORT_PATH/items/editors/lritemsaligneditorwidget.cpp \ - $$REPORT_PATH/items/editors/lritemsborderseditorwidget.cpp \ - $$REPORT_PATH/items/lrsimpletagparser.cpp \ - $$REPORT_PATH/items/lrimageitem.cpp \ - $$REPORT_PATH/items/lrtextitemeditor.cpp \ - $$REPORT_PATH/items/lrshapeitem.cpp \ - $$REPORT_PATH/lrbanddesignintf.cpp \ - $$REPORT_PATH/lrpageitemdesignintf.cpp \ - $$REPORT_PATH/lrpagedesignintf.cpp \ - $$REPORT_PATH/lrbandsmanager.cpp \ - $$REPORT_PATH/lrglobal.cpp \ - $$REPORT_PATH/lritemdesignintf.cpp \ - $$REPORT_PATH/lrdatadesignintf.cpp \ - $$REPORT_PATH/lrreportdesignwidget.cpp \ - $$REPORT_PATH/lrbasedesignintf.cpp \ - $$REPORT_PATH/lrreportengine.cpp \ - $$REPORT_PATH/lrdatasourcemanager.cpp \ - $$REPORT_PATH/lrreportdesignwindow.cpp \ - $$REPORT_PATH/lrreportrender.cpp \ - $$REPORT_PATH/lrscriptenginemanager.cpp \ - $$REPORT_PATH/lrpreviewreportwindow.cpp \ - $$REPORT_PATH/lrvariablesholder.cpp \ - $$REPORT_PATH/lrgroupfunctions.cpp \ - $$REPORT_PATH/lrsimplecrypt.cpp \ - $$REPORT_PATH/lraboutdialog.cpp \ - $$REPORT_PATH/lrsettingdialog.cpp - -contains(CONFIG, zint){ - SOURCES += $$REPORT_PATH/items/lrbarcodeitem.cpp -} - -HEADERS += \ - $$REPORT_PATH/base/lrsingleton.h \ - $$REPORT_PATH/bands/lrpageheader.h \ - $$REPORT_PATH/bands/lrpagefooter.h \ - $$REPORT_PATH/bands/lrreportheader.h \ - $$REPORT_PATH/bands/lrreportfooter.h \ - $$REPORT_PATH/bands/lrdataband.h \ - $$REPORT_PATH/objectinspector/lrobjectinspectorwidget.h \ - $$REPORT_PATH/objectinspector/lrobjectitemmodel.h \ - $$REPORT_PATH/objectinspector/lrobjectpropitem.h \ - $$REPORT_PATH/objectinspector/lrpropertydelegate.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrstringpropitem.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrrectproptem.h \ - $$REPORT_PATH/databrowser/lrdatabrowser.h \ - $$REPORT_PATH/databrowser/lrsqleditdialog.h \ - $$REPORT_PATH/databrowser/lrconnectiondialog.h \ - $$REPORT_PATH/databrowser/lrvariabledialog.h \ - $$REPORT_PATH/databrowser/lrdatabrowsertree.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrdatasourcepropitem.h \ - $$REPORT_PATH/lrbanddesignintf.h \ - $$REPORT_PATH/lrpageitemdesignintf.h \ - $$REPORT_PATH/lrbandsmanager.h \ - $$REPORT_PATH/lrglobal.h \ - $$REPORT_PATH/base/lrsimpleabstractfactory.h \ - $$REPORT_PATH/base/lrattribsabstractfactory.h \ - $$REPORT_PATH/serializators/lrserializatorintf.h \ - $$REPORT_PATH/serializators/lrstorageintf.h \ - $$REPORT_PATH/serializators/lrxmlqrectserializator.h \ - $$REPORT_PATH/serializators/lrxmlserializatorsfactory.h \ - $$REPORT_PATH/serializators/lrxmlbasetypesserializators.h \ - $$REPORT_PATH/serializators/lrxmlreader.h \ - $$REPORT_PATH/serializators/lrxmlwriter.h \ - $$REPORT_PATH/lrbasedesignintf.h \ - $$REPORT_PATH/lritemdesignintf.h \ - $$REPORT_PATH/lrdesignelementsfactory.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrintpropitem.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrenumpropitem.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrboolpropitem.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrflagspropitem.h \ - $$REPORT_PATH/objectinspector/editors/lrtextitempropertyeditor.h \ - $$REPORT_PATH/objectinspector/editors/lrcomboboxeditor.h \ - $$REPORT_PATH/objectinspector/editors/lrcheckboxeditor.h \ - $$REPORT_PATH/objectinspector/editors/lrbuttonlineeditor.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrgroupfieldpropitem.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrcontentpropitem.h \ - $$REPORT_PATH/objectsbrowser/lrobjectbrowser.h \ - $$REPORT_PATH/items/lrtextitem.h \ - $$REPORT_PATH/items/lrsubitemparentpropitem.h \ - $$REPORT_PATH/items/lralignpropitem.h \ - $$REPORT_PATH/items/lrhorizontallayout.h \ - $$REPORT_PATH/items/editors/lritemeditorwidget.h \ - $$REPORT_PATH/items/editors/lrfonteditorwidget.h \ - $$REPORT_PATH/items/editors/lrtextalignmenteditorwidget.h \ - $$REPORT_PATH/items/editors/lritemsaligneditorwidget.h \ - $$REPORT_PATH/items/editors/lritemsborderseditorwidget.h \ - $$REPORT_PATH/lrdatadesignintf.h \ - $$REPORT_PATH/lrcollection.h \ - $$REPORT_PATH/lrpagedesignintf.h \ - $$REPORT_PATH/lrreportdesignwidget.h \ - $$REPORT_PATH/lrreportengine_p.h \ - $$REPORT_PATH/lrdatasourcemanager.h \ - $$REPORT_PATH/lrreportdesignwindow.h \ - $$REPORT_PATH/items/lrsimpletagparser.h \ - $$REPORT_PATH/bands/lrsubdetailband.h \ - $$REPORT_PATH/lrreportrender.h \ - $$REPORT_PATH/lrpreviewreportwindow.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrfontpropitem.h \ - $$REPORT_PATH/objectinspector/editors/lrfonteditor.h \ - $$REPORT_PATH/items/lrimageitem.h \ - $$REPORT_PATH/objectinspector/editors/lrimageeditor.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrimagepropitem.h \ - $$REPORT_PATH/items/lrtextitemeditor.h \ - $$REPORT_PATH/objectinspector/lrbasedesignobjectmodel.h \ - $$REPORT_PATH/lrscriptenginemanager.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrqrealpropitem.h \ - $$REPORT_PATH/items/lrshapeitem.h \ - $$REPORT_PATH/objectinspector/editors/lrcoloreditor.h \ - $$REPORT_PATH/objectinspector/propertyItems/lrcolorpropitem.h \ - $$REPORT_PATH/bands/lrgroupbands.h \ - $$REPORT_PATH/lrvariablesholder.h \ - $$REPORT_PATH/lrgroupfunctions.h \ - $$REPORT_PATH/lrreportengine.h \ - $$REPORT_PATH/lrdatasourcemanagerintf.h \ - $$REPORT_PATH/lrscriptenginemanagerintf.h \ - $$REPORT_PATH/lrsimplecrypt.h \ - $$REPORT_PATH/lraboutdialog.h \ - $$REPORT_PATH/lrcallbackdatasourceintf.h \ - $$REPORT_PATH/lrsettingdialog.h - -contains(CONFIG,zint){ - HEADERS += $$REPORT_PATH/items/lrbarcodeitem.h -} - -FORMS += \ - $$REPORT_PATH/databrowser/lrsqleditdialog.ui \ - $$REPORT_PATH/databrowser/lrconnectiondialog.ui \ - $$REPORT_PATH/databrowser/lrdatabrowser.ui \ - $$REPORT_PATH/databrowser/lrvariabledialog.ui \ - $$REPORT_PATH/objectinspector/editors/ltextitempropertyeditor.ui \ - $$REPORT_PATH/lrpreviewreportwindow.ui \ - $$REPORT_PATH/items/lrtextitemeditor.ui \ - $$REPORT_PATH/lraboutdialog.ui \ - $$REPORT_PATH/lrsettingdialog.ui - -RESOURCES += \ - $$REPORT_PATH/objectinspector/lobjectinspector.qrc \ - $$REPORT_PATH/databrowser/lrdatabrowser.qrc \ - $$REPORT_PATH/report.qrc \ - $$REPORT_PATH/items/items.qrc - - - - ####### ####Automatically build required translation files (*.qm) -TRANSLATIONS_PATH = $$PWD/../translations -TRANSLATIONS += $$TRANSLATIONS_PATH/limereport_ru.ts \ - $$TRANSLATIONS_PATH/limereport_es_ES.ts -OTHER_FILES += $$TRANSLATIONS +contains(CONFIG,build_translations){ + LANGUAGES = ru es_ES -all.depends = locale + defineReplace(prependAll) { + for(a,$$1):result += $$2$${a}$$3 + return($$result) + } -TRANSLATIONS_TARGETS = $$replace(TRANSLATIONS, "\.ts", ".qm") -locale.depends = $$TRANSLATIONS_TARGETS -QMAKE_EXTRA_TARGETS += locale + TRANSLATIONS = $$prependAll(LANGUAGES, $$TRANSLATIONS_PATH/limereport_,.ts) + qtPrepareTool(LUPDATE, lupdate) + ts.commands = $$LUPDATE $$PWD -ts $$TRANSLATIONS -"%.qm".commands = lrelease -qm $@ $< -"%.qm".depends = "%.ts" -QMAKE_EXTRA_TARGETS += "%.qm" + TRANSLATIONS_FILES = + qtPrepareTool(LRELEASE, lrelease) + for(tsfile, TRANSLATIONS) { + qmfile = $$tsfile + qmfile ~= s,.ts$,.qm, + qm.commands += $$LRELEASE -removeidentical $$tsfile -qm $$qmfile $$escape_expand(\\n\\t) + tmp_command = $$LRELEASE -removeidentical $$tsfile -qm $$qmfile $$escape_expand(\\n\\t) + TRANSLATIONS_FILES += $$qmfile + } + qm.depends = ts -PRE_TARGETDEPS += locale + QMAKE_EXTRA_TARGETS += qm ts + POST_TARGETDEPS += qm +} #### EN AUTOMATIC TRANSLATIONS -#INSTALLS += target + diff --git a/limereport/lrdatadesignintf.h b/limereport/lrdatadesignintf.h index 82a3bc1..d19ac5c 100644 --- a/limereport/lrdatadesignintf.h +++ b/limereport/lrdatadesignintf.h @@ -284,6 +284,7 @@ private: }; class MasterDetailProxyModel : public QSortFilterProxyModel{ + Q_OBJECT public: MasterDetailProxyModel(DataSourceManager* dataManager):m_maps(0),m_dataManager(dataManager){} void setMaster(QString name); diff --git a/limereport/lrpageitemdesignintf.cpp b/limereport/lrpageitemdesignintf.cpp index e15c953..1109e45 100644 --- a/limereport/lrpageitemdesignintf.cpp +++ b/limereport/lrpageitemdesignintf.cpp @@ -369,40 +369,56 @@ BandDesignIntf *PageItemDesignIntf::dataBandAt(int index) void PageItemDesignIntf::setTopMargin(int value) { if (m_topMargin!=value){ + m_sizeChainging = true; int oldValue = m_topMargin; m_topMargin=value; - updateMarginRect(); - notify("topMargin",oldValue,value); + if (!isLoading()){ + updateMarginRect(); + notify("topMargin",oldValue,value);; + } + m_sizeChainging = false; } } void PageItemDesignIntf::setBottomMargin(int value) { if (m_bottomMargin!=value){ + m_sizeChainging = true; int oldValue = m_bottomMargin; m_bottomMargin=value; - updateMarginRect(); - notify("bottomMargin",oldValue,value); + if (!isLoading()){ + updateMarginRect(); + notify("bottomMargin",oldValue,value); + } + m_sizeChainging = false; } } void PageItemDesignIntf::setLeftMargin(int value) { if (m_leftMargin!=value){ + m_sizeChainging = true; int oldValue = m_leftMargin; m_leftMargin=value; - updateMarginRect(); - notify("leftMargin",oldValue,value); + if (!isLoading()){ + updateMarginRect(); + notify("leftMargin",oldValue,value); + } + m_sizeChainging = false; } } void PageItemDesignIntf::setRightMargin(int value) { if (m_rightMargin!=value){ + m_sizeChainging = true; int oldValue = m_rightMargin; m_rightMargin=value; - updateMarginRect(); - notify("rightMargin",oldValue,value); + if (!isLoading()){ + updateMarginRect(); + notify("rightMargin",oldValue,value); + } + m_sizeChainging = false; } } @@ -410,11 +426,13 @@ void PageItemDesignIntf::setPageOrientation(PageItemDesignIntf::Orientation valu { if (!m_sizeChainging && m_pageOrientaion!=value){ m_sizeChainging = true; + PageItemDesignIntf::Orientation oldValue = m_pageOrientaion; m_pageOrientaion = value; if (!isLoading()){ qreal tmpWidth = width(); setWidth(height()); setHeight(tmpWidth); + notify("pageOrientation",oldValue,value); } m_sizeChainging = false; } @@ -497,7 +515,7 @@ void PageItemDesignIntf::updateMarginRect() m_pageRect.adjust(m_leftMargin*mmFactor(),m_topMargin*mmFactor(), -m_rightMargin*mmFactor(),-m_bottomMargin*mmFactor()); foreach(BandDesignIntf* band,m_bands){ - band->setWidth(pageRect().width()); + band->setWidth(pageRect().width()/band->columnsCount()); relocateBands(); } foreach (BaseDesignIntf* item, childBaseItems()) { @@ -551,6 +569,12 @@ int PageItemDesignIntf::gridStep() else return 2; } +void PageItemDesignIntf::objectLoadFinished() +{ + BaseDesignIntf::objectLoadFinished(); + updateMarginRect(); +} + PageItemDesignIntf::Ptr PageItemDesignIntf::create(QObject *owner) { return PageItemDesignIntf::Ptr(new PageItemDesignIntf(owner)); diff --git a/limereport/lrpageitemdesignintf.h b/limereport/lrpageitemdesignintf.h index 56d90c5..d6afc3f 100644 --- a/limereport/lrpageitemdesignintf.h +++ b/limereport/lrpageitemdesignintf.h @@ -103,6 +103,7 @@ public: QList& bands(); void setGridStep(int value); int gridStep(); + void objectLoadFinished(); protected slots: void bandDeleted(QObject* band); void bandGeometryChanged(QObject* /*object*/, QRectF newGeometry, QRectF oldGeometry); diff --git a/limereport/lrreportdesignwidget.cpp b/limereport/lrreportdesignwidget.cpp index e41fcaa..9e29e31 100644 --- a/limereport/lrreportdesignwidget.cpp +++ b/limereport/lrreportdesignwidget.cpp @@ -291,10 +291,11 @@ bool ReportDesignWidget::save() } } -void ReportDesignWidget::loadFromFile(const QString &fileName) +bool ReportDesignWidget::loadFromFile(const QString &fileName) { - m_report->loadFromFile(fileName); + if (!m_report->loadFromFile(fileName)) return false; setActivePage(m_report->pageAt(0)); + return true; } void ReportDesignWidget::scale(qreal sx, qreal sy) diff --git a/limereport/lrreportdesignwidget.h b/limereport/lrreportdesignwidget.h index 5829d30..185b956 100644 --- a/limereport/lrreportdesignwidget.h +++ b/limereport/lrreportdesignwidget.h @@ -105,7 +105,7 @@ public: public slots: void saveToFile(const QString&); bool save(); - void loadFromFile(const QString&); + bool loadFromFile(const QString&); void deleteSelectedItems(); void setActivePage(PageDesignIntf* page); void undo(); diff --git a/limereport/lrreportdesignwindow.cpp b/limereport/lrreportdesignwindow.cpp index d35ba86..b90c5f9 100644 --- a/limereport/lrreportdesignwindow.cpp +++ b/limereport/lrreportdesignwindow.cpp @@ -541,14 +541,58 @@ void ReportDesignWindow::createRecentFilesMenu() { if (m_recentFilesMenu){ m_recentFilesMenu->clear(); + removeNotExistedRecentFiles(); foreach(QString fileName, m_recentFiles.keys()){ QAction* tmpAction = new QAction(QIcon(":/report/images/newReport"),fileName,this); connect(tmpAction,SIGNAL(triggered()), m_recentFilesSignalMap, SLOT(map())); m_recentFilesSignalMap->setMapping(tmpAction,fileName); m_recentFilesMenu->addAction(tmpAction); } + m_recentFilesMenu->setDisabled(m_recentFiles.isEmpty()); } - m_recentFilesMenu->setDisabled(m_recentFiles.isEmpty()); +} + +void ReportDesignWindow::removeNotExistedRecentFiles() +{ + QMap::iterator it = m_recentFiles.begin(); + while (it!=m_recentFiles.end()){ + if (!QFile::exists(it.key())){ + it = m_recentFiles.erase(it); + } else { + ++it; + } + } +} + +void ReportDesignWindow::removeNotExistedRecentFilesFromMenu(const QString &fileName) +{ + if (m_recentFilesMenu){ + foreach(QAction* action, m_recentFilesMenu->actions()){ + if (action->text().compare(fileName)==0){ + m_recentFilesMenu->removeAction(action); + break; + } + } + } +} + +void ReportDesignWindow::addRecentFile(const QString &fileName) +{ + if (!m_recentFiles.contains(fileName)){ + if (m_recentFiles.count()==10){ + QMap::const_iterator it = m_recentFiles.constBegin(); + QDateTime minDate = QDateTime::currentDateTime(); + while (it != m_recentFiles.constEnd()) { + if (minDate>it.value()) minDate = it.value(); + ++it; + } + m_recentFiles.remove(m_recentFiles.key(minDate)); + } + m_recentFiles.insert(fileName,QDateTime::currentDateTime()); + } else { + m_recentFiles[fileName] = QDateTime::currentDateTime(); + } + createRecentFilesMenu(); } void ReportDesignWindow::restoreSetting() @@ -802,6 +846,7 @@ void ReportDesignWindow::slotSaveReport() { m_reportDesignWidget->save(); m_lblReportName->setText(m_reportDesignWidget->reportFileName()); + if (!m_reportDesignWidget->reportFileName().isEmpty()) addRecentFile(m_reportDesignWidget->reportFileName()); } void ReportDesignWindow::slotSaveReportAs() @@ -810,6 +855,7 @@ void ReportDesignWindow::slotSaveReportAs() if (!fileName.isEmpty()){ m_reportDesignWidget->saveToFile(fileName); m_lblReportName->setText(m_reportDesignWidget->reportFileName()); + addRecentFile(fileName); } } @@ -832,21 +878,7 @@ void ReportDesignWindow::slotLoadReport() updateRedoUndo(); unsetCursor(); setWindowTitle(m_reportDesignWidget->report()->reportName() + " - Lime Report Designer"); - if (!m_recentFiles.contains(fileName)){ - if (m_recentFiles.count()==10){ - QMap::const_iterator it = m_recentFiles.constBegin(); - QDateTime minDate = QDateTime::currentDateTime(); - while (it != m_recentFiles.constEnd()) { - if (minDate>it.value()) minDate = it.value(); - ++it; - } - m_recentFiles.remove(m_recentFiles.key(minDate)); - } - m_recentFiles.insert(fileName,QDateTime::currentDateTime()); - } else { - m_recentFiles[fileName] = QDateTime::currentDateTime(); - } - createRecentFilesMenu(); + addRecentFile(fileName); } } @@ -1054,15 +1086,21 @@ void ReportDesignWindow::slotLoadRecentFile(const QString fileName) { if (checkNeedToSave()){ QApplication::processEvents(); - setCursor(Qt::WaitCursor); - m_reportDesignWidget->clear(); - m_reportDesignWidget->loadFromFile(fileName); - m_lblReportName->setText(fileName); - m_propertyModel->setObject(0); - updateRedoUndo(); - unsetCursor(); - setWindowTitle(m_reportDesignWidget->report()->reportName() + " - Lime Report Designer"); - m_recentFiles[fileName] = QDateTime::currentDateTime(); + if (QFile::exists(fileName)){ + setCursor(Qt::WaitCursor); + m_reportDesignWidget->clear(); + m_reportDesignWidget->loadFromFile(fileName); + m_lblReportName->setText(fileName); + m_propertyModel->setObject(0); + updateRedoUndo(); + unsetCursor(); + setWindowTitle(m_reportDesignWidget->report()->reportName() + " - Lime Report Designer"); + m_recentFiles[fileName] = QDateTime::currentDateTime(); + } else { + m_recentFiles.remove(fileName); + removeNotExistedRecentFilesFromMenu(fileName); + QMessageBox::information(this,tr("Warning"),tr("File \"%1\" not found!").arg(fileName)); + } } } diff --git a/limereport/lrreportdesignwindow.h b/limereport/lrreportdesignwindow.h index b04ba90..d70f4a9 100644 --- a/limereport/lrreportdesignwindow.h +++ b/limereport/lrreportdesignwindow.h @@ -135,7 +135,9 @@ private: void writePosition(); void writeState(); void createRecentFilesMenu(); - + void removeNotExistedRecentFiles(); + void removeNotExistedRecentFilesFromMenu(const QString& fileName); + void addRecentFile(const QString& fileName); private: static ReportDesignWindow* m_instance; QStatusBar* m_statusBar; diff --git a/limereport/lrreportengine.cpp b/limereport/lrreportengine.cpp index b9a9a00..1985b16 100644 --- a/limereport/lrreportengine.cpp +++ b/limereport/lrreportengine.cpp @@ -403,6 +403,8 @@ QSettings*ReportEnginePrivate::settings() bool ReportEnginePrivate::loadFromFile(const QString &fileName) { + if (!QFile::exists(fileName)) return false; + clearReport(); ItemsReaderIntf::Ptr reader = FileXMLReader::create(fileName); diff --git a/translations/limereport_es_ES.qm b/translations/limereport_es_ES.qm new file mode 100644 index 0000000..5e99f05 Binary files /dev/null and b/translations/limereport_es_ES.qm differ diff --git a/translations/limereport_es_ES.ts b/translations/limereport_es_ES.ts index 364cea3..c951782 100644 --- a/translations/limereport_es_ES.ts +++ b/translations/limereport_es_ES.ts @@ -4,27 +4,22 @@ LRVariableDialog - Variable Variable - Name Nombre - Value Valor - Type Tipo - Attention Atención @@ -32,22 +27,14 @@ LimeReport::AVariablesHolder - - - - variable with name variable con el nombre - already exists !! ya existe !! - - - does not exists !! no existe !! @@ -55,17 +42,26 @@ LimeReport::AboutDialog - About Acerca de - - Lime Report - + Author + Autor + + + License + Licencia + + + Close + Cerrar + + + Lime Report + - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -82,12 +78,6 @@ p, li { white-space: pre-wrap; } - - Author - Autor - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -97,12 +87,6 @@ p, li { white-space: pre-wrap; } - - License - Licencia - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -220,56 +204,41 @@ p, li { white-space: pre-wrap; } - - Close - Cerrar - - - Version 1.1.1 - + LimeReport::AlignmentPropItem - Left Izquierda - Right Derecha - - Center Centro - Justify Justificado - Top Arriba - Botom Abajo - horizontal horizontal - vertical vertical @@ -277,7 +246,6 @@ p, li { white-space: pre-wrap; } LimeReport::BandDesignIntf - connected to conectado a @@ -285,89 +253,70 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDialog - - Connection Conexión - Connection Name Nombre de conexión - - Driver - - - - Server Servidor - User Usuario - Password Contraseña - Database Base de Datos - - ... - - - - Auto connect Auto conectar - Check connection Probar conexión - Cancel Cancelar - - Ok - - - - - - Error - - - - Connection succsesfully established! Conexión establecida satisfactoriamente! - Connection Name is empty El Nombre de la conexión esta vacía - + Driver + + + + ... + + + + Ok + + + + Error + + + Connection with name - already exists @@ -375,7 +324,6 @@ p, li { white-space: pre-wrap; } LimeReport::ContentItemDesignIntf - Variable %1 not found @@ -383,7 +331,6 @@ p, li { white-space: pre-wrap; } LimeReport::DataBand - Data @@ -391,113 +338,78 @@ p, li { white-space: pre-wrap; } LimeReport::DataBrowser - - - + Attention + Atención + + Datasources - Add database connection - - - - - - - - - - - - ... - Add new datasource - View data - Change datasource - Delete datasource - Show error - Variables - Add new variable - Edit variable - Delete variable - - - - - Attention - - - - Do you really want to delete "%1" connection ? - User variables - System variables - Do you really want to delete "%1" datasource ? - Do you really want to delete variable "%1" ? - Error @@ -505,7 +417,6 @@ p, li { white-space: pre-wrap; } LimeReport::DataFooterBand - DataFooter @@ -513,7 +424,6 @@ p, li { white-space: pre-wrap; } LimeReport::DataHeaderBand - DataHeader @@ -521,36 +431,26 @@ p, li { white-space: pre-wrap; } LimeReport::DataSourceManager - Connection "%1" is not open - Variable "%1" not found! - - Datasource "%1" not found ! - connection with name "%1" already exists ! - - - - datasource with name "%1" already exists ! - invalid connection @@ -558,12 +458,10 @@ p, li { white-space: pre-wrap; } LimeReport::DataSourceModel - Datasources - Variables @@ -571,17 +469,14 @@ p, li { white-space: pre-wrap; } LimeReport::FontEditorWidget - Font bold - Font Italic - Font Underline @@ -589,27 +484,22 @@ p, li { white-space: pre-wrap; } LimeReport::FontPropItem - bold - italic - underline - size - family @@ -617,7 +507,6 @@ p, li { white-space: pre-wrap; } LimeReport::GroupBandFooter - GroupFooter @@ -625,7 +514,6 @@ p, li { white-space: pre-wrap; } LimeReport::GroupBandHeader - GroupHeader @@ -633,17 +521,14 @@ p, li { white-space: pre-wrap; } LimeReport::GroupFunction - Field "%1" not found - Variable "%1" not found - Item "%1" not found @@ -651,7 +536,6 @@ p, li { white-space: pre-wrap; } LimeReport::ImageItem - Image @@ -659,52 +543,42 @@ p, li { white-space: pre-wrap; } LimeReport::ItemsAlignmentEditorWidget - Bring to top - Send to back - Align to left - Align to right - Align to vertical center - Align to top - Align to bottom - Align to horizontal center - Set same height - Set same width @@ -712,32 +586,26 @@ p, li { white-space: pre-wrap; } LimeReport::ItemsBordersEditorWidget - Top line - Bottom line - Left line - Right line - No borders - All borders @@ -745,12 +613,10 @@ p, li { white-space: pre-wrap; } LimeReport::MasterDetailProxyModel - Field: "%1" not found in "%2" child datasource - Field: "%1" not found in "%2" master datasource @@ -758,7 +624,6 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - model is destroyed @@ -766,7 +631,6 @@ p, li { white-space: pre-wrap; } LimeReport::ObjectBrowser - Objects @@ -774,7 +638,6 @@ p, li { white-space: pre-wrap; } LimeReport::PageFooter - Page Footer @@ -782,7 +645,6 @@ p, li { white-space: pre-wrap; } LimeReport::PageHeader - Page Header @@ -790,118 +652,90 @@ p, li { white-space: pre-wrap; } LimeReport::PreviewReportWindow - Preview - View - Report - toolBar - Print - Ctrl+P - Zoom In - Zoom Out - - Prior Page - - Next Page - - Close Preview - Edit Mode - - Save to file - - Show errors - First Page - First page - - Last Page - Print To PDF - Page: - of %1 - Report file name - PDF file name @@ -909,7 +743,6 @@ p, li { white-space: pre-wrap; } LimeReport::ProxyHolder - Datasource has been invalidated @@ -917,247 +750,198 @@ p, li { white-space: pre-wrap; } LimeReport::QObjectPropertyModel - leftMargin - rightMargin - topMargin - bottomMargin - objectName - borders - geometry - itemAlign - pageOrientation - pageSize - TopLine - BottomLine - LeftLine - RightLine - reprintOnEachPage - borderLineSize - autoHeight - backgroundColor - columnCount - columnsFillDirection - datasource - keepBottomSpace - keepFooterTogether - keepSubdetailTogether - printIfEmpty - sliceLastRow - splittable - alignment - angle - autoWidth - backgroundMode - backgroundOpacity - content - font - fontColor - foregroundOpacity - itemLocation - margin - stretchToMaxHeight - trimValue - lineWidth - opacity - penStyle - shape - shapeBrush - shapeBrushColor - Property Name - Property value - Warning @@ -1165,16 +949,10 @@ p, li { white-space: pre-wrap; } LimeReport::RectMMPropItem - - - width - - - height @@ -1182,12 +960,10 @@ p, li { white-space: pre-wrap; } LimeReport::RectPropItem - width - height @@ -1195,7 +971,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWidget - Report file name @@ -1203,281 +978,233 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWindow - + About + Acerca de + + New Report - Edit Mode - Undo - Redo - Copy - Paste - Cut - Settings - Use grid - Use magnet - Text Item - Save Report - Save Report As - Load Report - Delete item - Zoom In - Zoom Out - Render Report - Edit layouts mode - Horizontal layout - - About - - - - Hide left panel - Hide right panel - Report Tools - Main Tools - Font - Text alignment - Items alignment - Borders - Report bands - Report Header - Report Footer - Page Header - Page Footer - Data - Data Header - Data Footer - SubDetail - SubDetailHeader - SubDetailFooter - GroupHeader - GroupFooter - File - Edit - Info - Recent Files - Object Inspector - Report structure - Data Browser - Report has been modified ! Do you want save the report ? - - Report file name - Rendering report - Abort - page rendered + + Warning + + + + File "%1" not found! + + LimeReport::ReportEnginePrivate - Error @@ -1485,7 +1212,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportFooter - Report Footer @@ -1493,7 +1219,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportHeader - Report Header @@ -1501,17 +1226,14 @@ p, li { white-space: pre-wrap; } LimeReport::ReportRender - Error - Databand "%1" not found - Wrong using function %1 @@ -1519,125 +1241,98 @@ p, li { white-space: pre-wrap; } LimeReport::SQLEditDialog - + Connection + Conexión + + + Cancel + Cancelar + + + Attention + Atención + + Datasource - - Connection - - - - Datasource Name - Subdetail - Master datasource - Subquery mode - Filter mode - SQL - - Preview - Hide Preview - Child datasource - Fields map - - ... - Data preview - - Cancel - - - - Ok - Error - Datasource Name is empty ! - SQL is empty ! - Datasource with name: "%1" already exists ! - Datasource with name %1 already exist - - - Attention - - - - Connection is not specified - Refresh @@ -1645,39 +1340,26 @@ p, li { white-space: pre-wrap; } LimeReport::ScriptEngineManager - + Value + Valor + + FieldName - - BandName - - - - - Value - - - - - - - Format - Precision - Locale @@ -1685,27 +1367,22 @@ p, li { white-space: pre-wrap; } LimeReport::SettingDialog - Designer setting - Default font - Grid - Vertical grid step - Horizontal grid step @@ -1713,7 +1390,6 @@ p, li { white-space: pre-wrap; } LimeReport::SubDetailBand - SubDetail @@ -1721,7 +1397,6 @@ p, li { white-space: pre-wrap; } LimeReport::SubDetailHeaderBand - SubDetailHeader @@ -1729,33 +1404,26 @@ p, li { white-space: pre-wrap; } LimeReport::TextAlignmentEditorWidget - Text align left - - Text align center - Text align right - Text align justify - Text align top - Text align bottom @@ -1763,57 +1431,46 @@ p, li { white-space: pre-wrap; } LimeReport::TextItemEditor - + Cancel + Cancelar + + Text Item Editor - Content - Data - Functions - Editor settings - Editor font - ... - Ok - Ctrl+Return - - Cancel - - - - Esc @@ -1821,252 +1478,194 @@ p, li { white-space: pre-wrap; } QObject - - Data - DataHeader - DataFooter - GroupHeader - GroupFooter - - Page Footer - - Page Header - - Report Footer - - Report Header - - SubDetail - SubDetailHeader - SubDetailFooter - alignment - Barcode Item - HLayout - Image Item - Shape Item - itemLocation - Text Item - - Invalid connection! %1 - Master datasource "%1" not found!!! - Master datasouce "%1" not found! - Child - and child - datasouce "%1" not found! - Attention! - Selected elements have different parent containers - Object with name %1 already exists - Function %1 not found or have wrong arguments - bool - QColor - content - - datasource - - field - enum - flags - QFont - QImage - int - - qreal - QRect - QRectF - geometry - mm - QString - File %1 not opened - Content string is empty - Content is empty diff --git a/translations/limereport_ru.qm b/translations/limereport_ru.qm index 7960869..1f378b9 100644 Binary files a/translations/limereport_ru.qm and b/translations/limereport_ru.qm differ diff --git a/translations/limereport_ru.ts b/translations/limereport_ru.ts index 14f6c92..31ecc0a 100644 --- a/translations/limereport_ru.ts +++ b/translations/limereport_ru.ts @@ -137,27 +137,22 @@ LRVariableDialog - Variable Переменная - Name Имя переменной - Value Значение - Type Тип - Attention Внимание @@ -165,22 +160,14 @@ LimeReport::AVariablesHolder - - - - variable with name переменная - already exists !! уже существует !! - - - does not exists !! не существует !! @@ -188,17 +175,30 @@ LimeReport::AboutDialog - About О программе - + Author + Автор + + + License + Лицензия + + + Close + Закрыть + + + Version 1.1.1 + Версия + + Lime Report - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -215,12 +215,6 @@ p, li { white-space: pre-wrap; } - - Author - Автор - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -230,12 +224,6 @@ p, li { white-space: pre-wrap; } - - License - Лицензия - - - <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } @@ -352,57 +340,38 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:19px; margin-bottom:19px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; background-color:#ffffff;"><span style=" font-family:'sans-serif'; color:#000000; background-color:#ffffff;">That's all there is to it!</span></p></body></html> - - - Close - Закрыть - - - - Version 1.1.1 - Версия - LimeReport::AlignmentPropItem - Left По левому краю - Right По правому краю - - Center По центру - Justify По ширине - Top Прижать к верхнему краю - Botom Прижать к нижнему краю - horizontal горизонтально - vertical вертикально @@ -410,7 +379,6 @@ p, li { white-space: pre-wrap; } LimeReport::BandDesignIntf - connected to соединён с @@ -418,97 +386,77 @@ p, li { white-space: pre-wrap; } LimeReport::ConnectionDialog - - Connection Соединение - Connection Name Название - Driver Драйвер - Server Сервер - User Пользователь - Password Пароль - Database База данных - - ... - - - - Auto connect Автоматическое соединение - Check connection Проверить соединение - Cancel Отмена - - Ok - - - - - Error Ошибка - Connection succsesfully established! Соединение успешно установлено! - Connection Name is empty Наименование соединения не указано - Connection with name Соединение - already exists уже существует + + ... + + + + Ok + + LimeReport::ContentItemDesignIntf - Variable %1 not found Переменная %1 не найдена @@ -516,7 +464,6 @@ p, li { white-space: pre-wrap; } LimeReport::DataBand - Data Данные @@ -524,127 +471,91 @@ p, li { white-space: pre-wrap; } LimeReport::DataBrowser - - - Datasources Источники данных - Add database connection Добавить соединение с базой - - - - - - - - - - - - - ... - - - - Add new datasource Добавить новый источник данных - View data Просмотр данных в источнике - Change datasource Изменить источник данных - Delete datasource Удалить источник данных - Show error Показать ошибки - Variables Переменные - Add new variable Добавить новую переменную - Edit variable Редактировать переменную - Delete variable Удалить переменную - - - - Attention Внимание - Do you really want to delete "%1" connection ? Do you really want delete "%1" connection ? Вы действительно хотите удалить "%1" соединение ? - User variables Пользовательские переменные - System variables Системные переменные - Do you really want to delete "%1" datasource ? Do you really want delete "%1" datasource ? Вы действительно хотите удалить источник данных "%1" ? - - - Do you really want to delete variable "%1" ? - - Do you really want delete variable "%1" ? Вы действительно хотите удалить переменную "%1" ? - Error Ошибка + + ... + + + + Do you really want to delete variable "%1" ? + + LimeReport::DataFooterBand - DataFooter Подвал данных @@ -652,7 +563,6 @@ p, li { white-space: pre-wrap; } LimeReport::DataHeaderBand - DataHeader Заголовок данных @@ -660,50 +570,38 @@ p, li { white-space: pre-wrap; } LimeReport::DataSourceManager - Connection "%1" is not open Соединение "%1" не открыто - - Variable "%1" not found! - - - - - Datasource "%1" not found ! Источник данных "%1" не найден ! - connection with name "%1" already exists ! соединение "%1" уже существует ! - - - - datasource with name "%1" already exists ! data source with name "%1" already exists !! источник данных "%1" уже существует ! - invalid connection нет соединения + + Variable "%1" not found! + + LimeReport::DataSourceModel - Datasources Источники данных - Variables Переменные @@ -711,17 +609,14 @@ p, li { white-space: pre-wrap; } LimeReport::FontEditorWidget - Font bold Жирный - Font Italic Курсив - Font Underline Подчеркнутый @@ -729,27 +624,22 @@ p, li { white-space: pre-wrap; } LimeReport::FontPropItem - bold жирный - italic курсив - underline подчеркнутый - size размер - family название @@ -757,7 +647,6 @@ p, li { white-space: pre-wrap; } LimeReport::GroupBandFooter - GroupFooter Подвал группы @@ -765,7 +654,6 @@ p, li { white-space: pre-wrap; } LimeReport::GroupBandHeader - GroupHeader Заголовок группы @@ -773,17 +661,14 @@ p, li { white-space: pre-wrap; } LimeReport::GroupFunction - Field "%1" not found Поле "%1" не найдено - Variable "%1" not found Переменная "%1" не найдена - Item "%1" not found Элемент "%1" не найден @@ -791,7 +676,6 @@ p, li { white-space: pre-wrap; } LimeReport::ImageItem - Image Изображение @@ -799,52 +683,42 @@ p, li { white-space: pre-wrap; } LimeReport::ItemsAlignmentEditorWidget - Bring to top На передний план - Send to back На задний план - Align to left Выровнять по левому краю - Align to right Выровнять по правому краю - Align to vertical center Центрировать вертикально - Align to top Выровнять по верхнему краю - Align to bottom Выровнять по нижнему краю - Align to horizontal center Центрировать горизонтально - Set same height Одинаковая высота - Set same width Одинаковая ширина @@ -852,32 +726,26 @@ p, li { white-space: pre-wrap; } LimeReport::ItemsBordersEditorWidget - Top line Верхняя граница - Bottom line Нижняя граница - Left line Левая граница - Right line Правая граница - No borders Удалить границы - All borders Внешние границы @@ -885,12 +753,10 @@ p, li { white-space: pre-wrap; } LimeReport::MasterDetailProxyModel - Field: "%1" not found in "%2" child datasource Поле: "%1" не найдено в подчиненном источнике данных "%2" - Field: "%1" not found in "%2" master datasource Поле: "%1" не найдено в главном источнике данных "%2" @@ -898,7 +764,6 @@ p, li { white-space: pre-wrap; } LimeReport::ModelToDataSource - model is destroyed модель уничтожена @@ -906,7 +771,6 @@ p, li { white-space: pre-wrap; } LimeReport::ObjectBrowser - Objects Объекты @@ -925,7 +789,6 @@ p, li { white-space: pre-wrap; } LimeReport::PageFooter - Page Footer Нижний колонтитул @@ -933,7 +796,6 @@ p, li { white-space: pre-wrap; } LimeReport::PageHeader - Page Header Верхний колонтитул @@ -941,126 +803,97 @@ p, li { white-space: pre-wrap; } LimeReport::PreviewReportWindow - - Preview - - - - View Просмотр - Report Отчет - toolBar Панель инструментов - Print Печать - - Ctrl+P - - - - Zoom In Увеличить - Zoom Out Уменьшить - - Prior Page Предыдущая страница - - Next Page Следующая страница - - Close Preview Закрыть - Edit Mode Режим редактирования - - Save to file Записать в файл - - Show errors Показать ошибки - First Page Первая страница - First page Первая страница - - Last Page Последняя страница - Print To PDF Печать в PDF - Page: Страница: - of %1 из %1 - Report file name Файл отчета - PDF file name Имя PDF файла + + Preview + + + + Ctrl+P + + LimeReport::ProxyHolder - Datasource has been invalidated Источник данных находится в недействительном состоянии @@ -1068,264 +901,209 @@ p, li { white-space: pre-wrap; } LimeReport::QObjectPropertyModel - Property Name Свойство - Property value Значение - leftMargin Отступ левый - rightMargin Отступ правый - topMargin Отступ верхний - bottomMargin Отступ нижний - objectName Имя объекта - borders Границы - geometry Геометрия - itemAlign Расположение объекта - pageOrientation Ориентация страницы - pageSize Размер страницы - TopLine Верхняя граница - BottomLine Нижняя граница - LeftLine Левая граница - RightLine Правая граница - - reprintOnEachPage - - - - - borderLineSize - - - - - autoHeight - - - - - backgroundColor - - - - - columnCount - - - - - columnsFillDirection - - - - datasource источник данных - - keepBottomSpace - - - - - keepFooterTogether - - - - - keepSubdetailTogether - - - - - printIfEmpty - - - - - sliceLastRow - - - - - splittable - - - - alignment расположение - - angle - - - - - autoWidth - - - - - backgroundMode - - - - - backgroundOpacity - - - - content содержимое - - font - - - - - fontColor - - - - - foregroundOpacity - - - - itemLocation Расположение объекта - + Warning + Предупреждение + + + reprintOnEachPage + + + + borderLineSize + + + + autoHeight + + + + backgroundColor + + + + columnCount + + + + columnsFillDirection + + + + keepBottomSpace + + + + keepFooterTogether + + + + keepSubdetailTogether + + + + printIfEmpty + + + + sliceLastRow + + + + splittable + + + + angle + + + + autoWidth + + + + backgroundMode + + + + backgroundOpacity + + + + font + + + + fontColor + + + + foregroundOpacity + + + margin - stretchToMaxHeight - trimValue - lineWidth - opacity - penStyle - shape - shapeBrush - shapeBrushColor - - - Warning - Предупреждение - LimeReport::RectMMPropItem - - - width ширина - - - height высота @@ -1333,12 +1111,10 @@ p, li { white-space: pre-wrap; } LimeReport::RectPropItem - width ширина - height высота @@ -1346,7 +1122,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWidget - Report file name Файл отчета @@ -1354,281 +1129,233 @@ p, li { white-space: pre-wrap; } LimeReport::ReportDesignWindow - New Report Новый отчет - Edit Mode Режим редактирования - Undo Отменить действие - Redo Повторить действие - Copy Копировать - Paste Вставить - Cut Вырезать - Settings Настройки - Use grid Использовать сетку - - Use magnet - - - - Text Item Текстовый элемент - Save Report Сохранить отчет - Save Report As Сохранить отчет как - Load Report Загрузить отчет - Delete item Удалить элемент - Zoom In Увеличить - Zoom Out Уменьшить - Render Report Сгенерировать отчет - Edit layouts mode Режим редактирования группировок - Horizontal layout Горизонтальная группировка - About О программе - Hide left panel Спрятать левую панель - Hide right panel Спрятать правую панель - Report Tools Элементы отчета - Main Tools Основные инструменты - Font Шрифт - Text alignment Выравнивание текста - Items alignment Выравнивание объектов - Borders Границы - Report bands Банды - Report Header Заголовок отчета - Report Footer Завершение отчета - Page Header Верхний колонтитул - Page Footer Нижний колонтитул - Data Данные - Data Header Заголовок данных - Data Footer Завершение данных - SubDetail Подчиненные данные - SubDetailHeader Заголовок подчиненных данных - SubDetailFooter Завершение подчиненных данных - GroupHeader Заголовок группы - GroupFooter Завершение группы - File Файл - Edit Правка - Info Информация - - Recent Files - - - - Object Inspector Инспектор объектов - Report structure Структура отчета - Data Browser Инспектор данных - Report has been modified ! Do you want save the report ? Отчет был изменен ! Хотите его записать ? - - Report file name Файл отчета - Rendering report Создается отчет - Abort О генераторе - page rendered создается страница + + Warning + Предупреждение + + + Use magnet + + + + Recent Files + + + + File "%1" not found! + + LimeReport::ReportEnginePrivate - Error Ошибка @@ -1636,7 +1363,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportFooter - Report Footer Завершение отчета @@ -1644,7 +1370,6 @@ p, li { white-space: pre-wrap; } LimeReport::ReportHeader - Report Header Заголовок отчета @@ -1652,17 +1377,14 @@ p, li { white-space: pre-wrap; } LimeReport::ReportRender - Error Ошибка - Databand "%1" not found Банд "%1" не найден - Wrong using function %1 Не правильное использование функции %1 @@ -1670,165 +1392,125 @@ p, li { white-space: pre-wrap; } LimeReport::SQLEditDialog - Datasource Источник данных - Connection Соединение - Datasource Name Имя источника - Subdetail Подчиненный - Master datasource Главный источник - Subquery mode Режим подзапроса - Filter mode Режим фильтрации - SQL SQL запрос - - - Preview - - - - Hide Preview Скрыть - Child datasource Подчиненный источник - Fields map Поля для связи источников - - - ... - - - - Data preview Данные - Cancel Отмена - - Ok - - - - Error Ошибка - Datasource Name is empty ! Имя источника данных не заполнено ! - SQL is empty ! SQL запрос пустой ! - Datasource with name: "%1" already exists ! Источник данных с именем: "%1" уже существует ! - Datasource with name %1 already exist Источник данных с именем: "%1" уже существует - - Attention Внимание - Connection is not specified Соединение не указано - Refresh Обновить + + Preview + + + + ... + + + + Ok + + LimeReport::ScriptEngineManager - FieldName Имя поля - - BandName Имя банда - - - - Value Значение - - - - Format Формат - Precision Точность - Locale @@ -1836,27 +1518,22 @@ p, li { white-space: pre-wrap; } LimeReport::SettingDialog - Designer setting Настройки дизайнера - Default font Шрифт по умолчанию - Grid Сетка - Vertical grid step Вертикальный шаг - Horizontal grid step Горизонтальный шаг @@ -1864,7 +1541,6 @@ p, li { white-space: pre-wrap; } LimeReport::SubDetailBand - SubDetail Подчиненные данные @@ -1872,7 +1548,6 @@ p, li { white-space: pre-wrap; } LimeReport::SubDetailHeaderBand - SubDetailHeader Заголовок подчиненных данных @@ -1880,33 +1555,26 @@ p, li { white-space: pre-wrap; } LimeReport::TextAlignmentEditorWidget - Text align left По левому краю - - Text align center По центру - Text align right По правому краю - Text align justify По ширине - Text align top Прижать к верхнему краю - Text align bottom Прижать к нижнему краю @@ -1914,57 +1582,46 @@ p, li { white-space: pre-wrap; } LimeReport::TextItemEditor - Text Item Editor Редактор текстового элемента - Content Содержимое - - Data - - - - Functions Функции - Editor settings Настройки - Editor font Шрифт редактора - - ... - - - - - Ok - - - - - Ctrl+Return - - - - Cancel Отмена - + Data + + + + ... + + + + Ok + + + + Ctrl+Return + + + Esc @@ -2059,109 +1716,82 @@ p, li { white-space: pre-wrap; } QObject - - Data Данные - DataHeader Заголовок данных - DataFooter Завершение данных - GroupHeader Заголовок группы - GroupFooter Завершение группы - - Page Footer Нижний колонтитул - - Page Header Верхний колонтитул - - Report Footer Завершение отчета - - Report Header Заголовок отчета - - SubDetail Подчиненные данные - SubDetailHeader Заголовок подчиненных данных - SubDetailFooter Завершение подчиненных данных - alignment расположение - Barcode Item Элемент штрих код - HLayout Горизонтальная компоновка - Image Item Элемент изображение - Shape Item Элемент фигура - itemLocation Расположение объекта - Text Item Текстовый элемент - - Invalid connection! %1 Неверное соединение %1 @@ -2170,143 +1800,61 @@ p, li { white-space: pre-wrap; } Главный источник данных "%1" не найден! - - Master datasource "%1" not found!!! - - - - - Master datasouce "%1" not found! - - - - Child Подчиненный - and child и подчиненный - datasouce "%1" not found! источник данных "%1" не найден ! - Attention! Внимание! - Selected elements have different parent containers Выделенные элементы имеют различные родительские контейнеры - Object with name %1 already exists Объект с именем %1 уже существует - Function %1 not found or have wrong arguments Функция %1 не найдена или вызвана с неверными аргументами - - bool - - - - - QColor - - - - - datasource источник данных - - field Поле - enum Перечисление - flags Флаги - - QFont - - - - - QImage - - - - - int - - - - - - qreal - - - - - QRect - - - - - QRectF - - - - geometry Геометрия - mm мм - - QString - - - - File %1 not opened Файл %1 не открыт - - - Content string is empty - - - - - Content is empty - - TopLine Верхняя граница @@ -2324,10 +1872,61 @@ p, li { white-space: pre-wrap; } Правая граница - content содержимое + + Master datasource "%1" not found!!! + + + + Master datasouce "%1" not found! + + + + bool + + + + QColor + + + + QFont + + + + QImage + + + + int + + + + qreal + + + + QRect + + + + QRectF + + + + QString + + + + Content string is empty + + + + Content is empty + + SQLEditDialog