pax_global_header00006660000000000000000000000064126074463040014520gustar00rootroot0000000000000052 comment=9a416417872d6f95fc8003b1ba1556b3fa0d5565 gnome-todo-3.18.1/000077500000000000000000000000001260744630400136625ustar00rootroot00000000000000gnome-todo-3.18.1/.gitignore000066400000000000000000000011431260744630400156510ustar00rootroot00000000000000*.bak *.o *.orig *.rej *.tab.c *~ .*.sw[nop] .deps .dirstamp .gitignore GPATH GRTAGS GSYMS GTAGS ID INSTALL Makefile Makefile.in TAGS aclocal.m4 autom4te.cache build build-aux config config.cache config.h config.h.in config.log config.lt config.status config.status.lineno configure configure.lineno intltool-extract intltool-extract.in intltool-merge intltool-merge.in intltool-update intltool-update.in libtool m4 po/*.gmo po/*.mo po/.intltool-merge-cache po/Makefile po/Makefile.in po/Makefile.in.in po/POTFILES po/gnome-todo.pot po/stamp-it so_locations src/.deps src/Makefile src/Makefile.in stamp-h1 tags gnome-todo-3.18.1/AUTHORS000066400000000000000000000001631260744630400147320ustar00rootroot00000000000000# Generated by Makefile. Do not edit. Christian Hergert Emmanuele Bassi Georges Basile Stavracas Neto Piotr Drąg gnome-todo-3.18.1/COPYING000066400000000000000000001045141260744630400147220ustar00rootroot00000000000000 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 . gnome-todo-3.18.1/Makefile.am000066400000000000000000000027041260744630400157210ustar00rootroot00000000000000ACLOCAL_AMFLAGS = --install -I m4 ${ACLOCAL_FLAGS} SUBDIRS = src data po DIST_SUBDIRS = src data po INTLTOOL_FILES = \ intltool-extract.in \ intltool-merge.in \ intltool-update.in EXTRA_DIST = \ $(INTLTOOL_FILES) \ README \ COPYING \ AUTHORS \ NEWS DISTCLEANFILES = \ intltool-extract \ intltool-merge \ intltool-update \ po/.intltool-merge-cache DISTCHECK_CONFIGURE_FLAGS = \ --enable-appstream-util # Remove doc directory on uninstall uninstall-local: -rm -r $(docdir) GITIGNOREFILES = \ INSTALL \ aclocal.m4 \ build \ build-aux \ config \ config.h.in \ m4 \ src/.deps \ src/Makefile \ src/Makefile.in \ $(NULL) AUTHORS: @if test -d "$(srcdir)/.git"; \ then \ echo Creating $@ && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ git log --no-merges --pretty=format:"%an" src \ | sort | uniq ) > $@.tmp \ && mv -f $@.tmp $@ \ || ( rm -f $@.tmp ; \ echo Failed to generate $@ >&2 ); \ fi dist-hook: @if test -d "$(srcdir)/.git"; \ then \ echo Creating ChangeLog && \ ( cd "$(top_srcdir)" && \ echo '# Generated by Makefile. Do not edit.'; echo; \ $(top_srcdir)/missing --run git log --stat ) > ChangeLog.tmp \ && mv -f ChangeLog.tmp $(top_distdir)/ChangeLog \ || ( rm -f ChangeLog.tmp ; \ echo Failed to generate ChangeLog >&2 ); \ else \ echo A git clone is required to generate a ChangeLog >&2; \ fi .PHONY: AUTHORS -include $(top_srcdir)/git.mk gnome-todo-3.18.1/NEWS000066400000000000000000000072741260744630400143730ustar00rootroot00000000000000============== Version 3.18.1 ============== Project: * Fix 256x256 icons being installed as 512x512 (Jakub Steiner) * Add a symbolic variant (Jakub Steiner) * Install a DBus service file (David King) * Wrap notes text (Felipe Borges) Translations: * Arabic (Khaled Hosny) * Basque (Inaki Larranaga Murgoitio) * Esperanto (Kristjan Schmidt) * Friulan (Fabio Tomat) * Italian (Claudio Arseni) * Serbian (Милош Поповић) * Vietnamese (Trần Ngọc Quân) ============== Version 3.18.0 ============== Translations: * Brazilian Portuguese (Georges Basile Stavracas Neto, Rafael Fontenelle) * Chinese (Taiwan) (Cheng-Chia Tseng) * Czech (Marek Černocký) * Danish (Ask Hjorth Larsen) * Indonesian (Ade Malsasa Akbar) * Korean (Seong-ho Cho) * Persian (Arash Mousavi) * Norwegan bokmål (Kjartan Maraas) * Swedish (Anders Jonsson) ================ Version 3.17.92 ================ Translations: * Catalan (Jordi Mas) * Finnish (Jiri Grönroos) * French (Alexandre Franke) * Galician (Fran Dieguez) * German (Christian Kirbach) * Greek (Tom Tryfonidis) * Hungarian (Balázs Úr) * Kazakh (Baurzhan Muftakhidinov) * Korean (Seong-ho Cho) * Lithianian (Aurimas Černius) * Norwegian bokmål (Kjartan Maraas) * Polish (Piotr Drąg) * Portuguese (Pedro Albuquerque) * Slovak (Dušan Kazik) * Spanish (Daniel Mustieles) * Turkish (Muhammet Kara) ================ Version 3.17.91 ================ Project: * Add selection mode, which allows renaming and removing lists * Add a "Clear completed tasks..." item in gear menu * Update build system (Emmanuele Bassi) * Lots of bugfixes and cleanups Translations: * Catalan (Jordi Mas) * Esperanto (Kristjan Schmidt) * Galician (Fran Dieguez) * Greek (Dimitris Spingos) * Hebrew (Yosef Or Boczko) * Hungarian (Balázs Meskó) * Lithuanian (Aurimas Černius) * Norwegian bokmal (Kjartan Maraas) * Portuguese (Pedro Albuquerque) * Polish (Pedro Albuquerque) * Punjabi (A S Alam) * Spanish (Daniel Mustieles) * Slovak (Dušan Kazik) * Turkish (Muhammet Kara) ================ Version 3.17.4 ================ Project: * Fix wrong name throughout the application * Better represent visually task priorities by changing the row's color * Make edit panel resizable * Add "Today" and "Scheduled" custom lists * Improve notification system * Initial support for search over list names Translations: * Greek (Dimitris Spingos) * Hebrew (Yosef Or Boczko) * Polish (Piotr Drag) * Spanish (Daniel Mustieles) * Slovak (Dušan Kazik) * Slovenian (Matej Urbančič) ================ Version 3.17.3.1 ================ Project: * Show 'Today' and 'Scheduled' task lists * Use colors to represent priorities * Fixed some very annoying bugs Translations: * Polish (Piotr Drag) * Slovak (Dušan Kazik) ============== Version 3.17.3 ============== Project: * Many improvements on the Evolution-Data-Server backend * Ability to create new tasklists * Much better thumbnails for tasklists * Initial setup dialog * Task fields update is now possible ============== Version 3.17.2 ============== Project: * Initial release * Simple and unfinished task management * Evolution-Data-Server as data backend gnome-todo-3.18.1/README000066400000000000000000000002621260744630400145420ustar00rootroot00000000000000GNOME To Do GNOME To Do is a small application to manage your personal tasks. It uses GNOME technologies, and so it has complete integration with the GNOME desktop environment. gnome-todo-3.18.1/autogen.sh000077500000000000000000000016701260744630400156670ustar00rootroot00000000000000#!/bin/sh test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. olddir=`pwd` cd $srcdir (test -f configure.ac) || { echo "*** ERROR: Directory '$srcdir' does not look like the top-level directory of the project ***" exit 1 } PKG_NAME=`autoconf --trace 'AC_INIT:$1' configure.ac` if [ "$#" = 0 -a "x$NOCONFIGURE" = "x" ]; then echo "*** WARNING: I am going to run \`configure' with no arguments." >&2 echo "If you wish to pass any to it, please specify them on the" >&2 echo \`$0\'" command line. ***" >&2 echo "" >&2 fi set -x aclocal --install || exit $? glib-gettextize --force --copy || exit $? intltoolize --force --copy --automake || exit $? autoreconf --verbose --force --install -Wno-portability || exit $? cd $olddir if [ "x$NOCONFIGURE" = x ]; then $srcdir/configure "$@" || exit $? else echo "Skipping configure process." fi { set +x; } 2>/dev/null gnome-todo-3.18.1/configure.ac000066400000000000000000000053531260744630400161560ustar00rootroot00000000000000dnl -*- mode: m4 -*- AC_PREREQ([2.69]) AC_INIT([gnome-todo],[3.18.1],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-todo],[gnome-todo]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_SRCDIR([src/main.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) AM_INIT_AUTOMAKE([1.11.1 foreign -Wno-portability dist-xz no-dist-gzip tar-ustar subdir-objects]) AM_MAINTAINER_MODE([enable]) AM_SILENT_RULES([yes]) # Releases do not have git directories AX_IS_RELEASE([git-directory]) ## don't rerun to this point if we abort AC_CACHE_SAVE # We require additional macros later on AX_REQUIRE_DEFINED([APPSTREAM_XML]) AX_REQUIRE_DEFINED([IT_PROG_INTLTOOL]) # Add debug symbol AX_CHECK_ENABLE_DEBUG([yes], [GNOME_TODO_ENABLE_DEBUG]) # Enable compiler warnings AX_COMPILER_FLAGS([GNOME_TODO_WARN_CFLAGS], [GNOME_TODO_WARN_LDFLAGS]) AC_PROG_CC_C_O AC_PROG_INSTALL AC_PROG_SED # enable libtool LT_PREREQ([2.2.6]) LT_INIT([disable-static]) ## don't rerun to this point if we abort AC_CACHE_SAVE PKG_PROG_PKG_CONFIG GLIB_GSETTINGS AM_GLIB_GNU_GETTEXT dnl *************************************************************************** dnl Internationalization dnl *************************************************************************** IT_PROG_INTLTOOL([0.40.6]) GETTEXT_PACKAGE=AC_PACKAGE_TARNAME AC_SUBST(GETTEXT_PACKAGE) AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) dnl ================================================================ dnl Misc dnl ================================================================ AC_PATH_PROG(GLIB_MKENUMS, glib-mkenums) GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` AC_SUBST([GLIB_COMPILE_RESOURCES]) PKG_CHECK_MODULES(GNOME_TODO, gmodule-export-2.0 gio-2.0 >= 2.43.4 glib-2.0 >= 2.43.4 goa-1.0 >= 3.2.0 gtk+-3.0 >= 3.16.0 libecal-1.2 >= 3.13.90 libedataserver-1.2 >= 3.17.1 libedataserverui-1.2 >= 3.17.1 libical >= 0.43) APPSTREAM_XML AC_CONFIG_FILES([ Makefile src/Makefile data/Makefile data/icons/Makefile data/org.gnome.Todo.desktop.in po/Makefile.in ]) AC_OUTPUT dnl ========================================================================== echo " gnome-todo $VERSION ================== source at: ${srcdir} prefix: ${prefix} compiler: ${CC} global flags: ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} project flags: ${GNOME_TODO_CFLAGS} ${GNOME_TODO_LIBS} ${LIBS} warning flags: ${GNOME_TODO_WARN_CFLAGS} ${GNOME_TODO_WARN_LDFLAGS} release: ${ax_is_release} Now type 'make' to build $PACKAGE " gnome-todo-3.18.1/data/000077500000000000000000000000001260744630400145735ustar00rootroot00000000000000gnome-todo-3.18.1/data/Makefile.am000066400000000000000000000027141260744630400166330ustar00rootroot00000000000000SUBDIRS = icons desktopdir = $(datadir)/applications desktop_in_files = org.gnome.Todo.desktop.in desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) %.ini: %.ini.in LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ @INTLTOOL_XML_RULE@ appdatadir = $(datadir)/appdata appdata_DATA = $(appdata_in_files:.xml.in=.xml) appdata_in_files = $(srcdir)/appdata/org.gnome.Todo.appdata.xml.in @INTLTOOL_DESKTOP_RULE@ gsettings_SCHEMAS = org.gnome.todo.gschema.xml @GSETTINGS_RULES@ %.service: %.service.in $(AM_V_GEN)$(SED) -e "s|[@]bindir[@]|$(bindir)|" $< > $@ servicedir = $(datadir)/dbus-1/services service_DATA = $(service_in_files:.service.in=.service) service_in_files = org.gnome.Todo.service.in EXTRA_DIST= \ appdata/org.gnome.Todo.appdata.xml \ org.gnome.Todo.desktop \ todo.gresource.xml \ gtk/menus.ui \ ui/edit-pane.ui \ ui/initial-setup.ui \ ui/list-view.ui \ ui/notification.ui \ ui/storage-dialog.ui \ ui/storage-popover.ui \ ui/storage-row.ui \ ui/storage-selector.ui \ ui/task-list-item.ui \ ui/task-row.ui \ ui/window.ui \ theme/Adwaita.css \ theme/bg.png \ theme/bg.svg \ $(appdata_in_files) \ $(desktop_in_files) \ $(gsettings_SCHEMAS) \ $(service_in_files) CLEANFILES = \ $(service_DATA) \ $(desktop_DATA) \ $(searchprovider_DATA) \ $(appdata_DATA) -include $(top_srcdir)/git.mk gnome-todo-3.18.1/data/appdata/000077500000000000000000000000001260744630400162055ustar00rootroot00000000000000gnome-todo-3.18.1/data/appdata/org.gnome.Todo.appdata.xml.in000066400000000000000000000013731260744630400235500ustar00rootroot00000000000000 org.gnome.Todo.desktop CC0 GPL-3.0+ <_name>Todo <_summary>Todo manager for GNOME <_p> GNOME Todo is a simple task management application designed to integrate with GNOME. https://github.com/GeorgesStavracas/gnome-todo https://github.com/GeorgesStavracas/gnome-todo/issues GNOME georges.stavracas@gmail.com. gnome-todo-3.18.1/data/gtk/000077500000000000000000000000001260744630400153605ustar00rootroot00000000000000gnome-todo-3.18.1/data/gtk/menus.ui000066400000000000000000000023041260744630400170450ustar00rootroot00000000000000
New List… win.new-list <Primary>n
_About app.about _Quit app.quit <Primary>q
Clear completed task… list.clear-completed-tasks
gnome-todo-3.18.1/data/icons/000077500000000000000000000000001260744630400157065ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/Makefile.am000066400000000000000000000030121260744630400177360ustar00rootroot00000000000000NULL = hicolor_icon16dir = $(datadir)/icons/hicolor/16x16/apps hicolor_icon16_DATA = hicolor/16x16/apps/gnome-todo.png hicolor_icon22dir = $(datadir)/icons/hicolor/22x22/apps hicolor_icon22_DATA = hicolor/22x22/apps/gnome-todo.png hicolor_icon32dir = $(datadir)/icons/hicolor/32x32/apps hicolor_icon32_DATA = hicolor/32x32/apps/gnome-todo.png hicolor_icon48dir = $(datadir)/icons/hicolor/48x48/apps hicolor_icon48_DATA = hicolor/48x48/apps/gnome-todo.png hicolor_icon256dir = $(datadir)/icons/hicolor/256x256/apps hicolor_icon256_DATA = hicolor/256x256/apps/gnome-todo.png hicolor_icon512dir = $(datadir)/icons/hicolor/512x512/apps hicolor_icon512_DATA = hicolor/512x512/apps/gnome-todo.png hicolor_iconsymbolicdir = $(datadir)/icons/hicolor/symbolic/apps hicolor_iconsymbolic_DATA = hicolor/symbolic/apps/gnome-todo-symbolic.svg hicolor_icon_files = \ $(hicolor_icon16_DATA) \ $(hicolor_icon22_DATA) \ $(hicolor_icon32_DATA) \ $(hicolor_icon48_DATA) \ $(hicolor_icon256_DATA) \ $(hicolor_icon512_DATA) \ $(hicolor_iconsymbolic_DATA) \ hicolor/gnome-todo.svg gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor install-data-hook: update-icon-cache uninstall-hook: update-icon-cache update-icon-cache: @-if test -z "$(DESTDIR)"; then \ echo "Updating Gtk icon cache."; \ $(gtk_update_icon_cache); \ else \ echo "*** Icon cache not updated. After (un)install, run this:"; \ echo "*** $(gtk_update_icon_cache)"; \ fi EXTRA_DIST = \ $(hicolor_icon_files) \ $(NULL) -include $(top_srcdir)/git.mk gnome-todo-3.18.1/data/icons/hicolor/000077500000000000000000000000001260744630400173455ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/16x16/000077500000000000000000000000001260744630400201325ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/16x16/apps/000077500000000000000000000000001260744630400210755ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/16x16/apps/gnome-todo.png000066400000000000000000000014501260744630400236530ustar00rootroot00000000000000PNG  IHDRasBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< tEXtTitleOPML*UtEXtAuthorJakub Steiner/!tEXtSourcehttp://jimmac.musichall.czif^BIDAT8OHTA?]]]upM-r[Et.AF<A%[QPBEQ"TtԲ,C]w7f%Qs3c1v؁,-Y2ZkWe sc9ańe.t՛T:>m Q-|Si XVXR*\6 77a~Yl\)MOW2 ps -TWD( eڴI39\J)?8?#^R)là*TeZW$gh,ɛw L|bz Ppҕdlh+ٜRΦ>DT$7SVpY.Cѕ̐lgm;O&_pJ=gmpd_=WOy6<ǭ ; /5˵{tmZ4v\ BV: Pڤgv706&g](m(t&ʎ Zj \\xgF^jOE&f Z<7T#WOIENDB`gnome-todo-3.18.1/data/icons/hicolor/22x22/000077500000000000000000000000001260744630400201245ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/22x22/apps/000077500000000000000000000000001260744630400210675ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/22x22/apps/gnome-todo.png000066400000000000000000000021341260744630400236450ustar00rootroot00000000000000PNG  IHDRĴl;sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< tEXtTitleOPML*UtEXtAuthorJakub Steiner/!tEXtSourcehttp://jimmac.musichall.czif^vIDAT8k\esܓ0$& ((An UQQDHj)TY 5%6N2M&\̘4$`Z |Cɽ^M9/UD[҅xR_'rڑhՋxVb譧=9o;vqۂjcR;y`;HKYE X̻=;<|ÃDLiv*2X*eG\ZRmAwGH;b[VX&lc B(BҫTmMX˫T: N`RTuFĻQQ-ŪoNJiT}TlXOBj~N4PH;ڴmPHm˕xi?fIoVhn/26cs%#قADJE>Wb^y_kIY..DchcvEfQȰn ^+JMsx$II2W~unKEc1s[BJT8˕ o|Y8&yP:~~L(T@n:8!897u2벑"e41[/zFg{ a~,հlŭ b A(B"jaa)˭+ \)$29R(|mㇻk\IobYDk ?;NC߸Τ݉co}1Z-h@aBǞ(J9G'xWod߀ Tmhn.IENDB`gnome-todo-3.18.1/data/icons/hicolor/24x24/000077500000000000000000000000001260744630400201305ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/24x24/apps/000077500000000000000000000000001260744630400210735ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/24x24/apps/gnome-todo.png000066400000000000000000000022351260744630400236530ustar00rootroot00000000000000PNG  IHDRw=sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< tEXtTitleOPML*UtEXtAuthorJakub Steiner/!tEXtSourcehttp://jimmac.musichall.czif^IDATHMhu;;;IJjB$Vj =hŃRKQP ҋVL."^Вb{FMcC>&~?N 6e+ /<< {sV$\x };Z4.?r q;B#_DxԈZO. ؁-N M3b _aF &F_:t{ݘᇋ!}gK7u sEFc0Q\IRgz9L*@)MoGdg"+yՐ*b4۟gP|WSSsNq1JyoC34ux)J)TMM.baa ՊҚmjk" \6U3J)f 7TQq kyl '4Y-[ /e ?/2? ssGҗ?b]'JqJLu11-ǣ(Yέ2Fb +iU6rU(<%Ry?;[2*'Hup$?X"Q_;CCxB"(@*Mk}TR-#?tzn㨤Jn_=pG>ѾQI%b9}TR-#?wCon۝gj4;ЩK7 ~~V;.o{g؀*ˣ;TA1I?RToӷ0~淾/?l:YzCstC$>o^k&^G$KG%wn~˫o>>!o})}+xb&k-=Iח?ylqۚpySϕ+=3fbffVMaP1JXa Y^&\r?vb?OϦ}ԫ>y~K lorH<}ڼ쫝G9ԓ:lj0Lqp.\;E##)Dr1Y A0úgvAAeց<ÀAAzܬ[@Y.`b=C0HAE bd 2b6o d$ˋ,"x@Y!'t.uϤ r=A 21=3F'8zm:؎K{xOpnypA C3 1a·!>  {$.Af3ԛ ,4!¥oW Gn Mkڧsjϴ?7ƍ,+z"_~CGØރZv{cv*sgtsF岲B% 1 Rї(t~ek7Jĺ2C@ug2h(mA)<((zzA`'} *98r M1PkI1u.3ˠ13XA_;S!3{>3a*]XzY iN8̨83gI׿7>|U)7 /\ĞL\kfw# 䎱{rǙ K[gp(XćXNe1]£,m,{T[q߬ϵ-35| %c,J/=k皣Tb RCH =z Wgfے_l+_~5C|{v,۶ozxgϽʡc'0;f]j=W:tz5hVO!-T7Izlt.[f_7@Աl-?<: eሐX1Twu޽ʁÏ=PGao}=cir>8%ѭtmbDVVz,YGq|rkK+] ԝ9~nmUQNW3X $1-&fgfhicsJ~'Zk?^oVxK12͘`xvnz讬cBUG{*}G זsc0p쎒*qGITi#@H !K,ATwmua ϴs?l&dZbvyrK>$73QCZpH.g,:,,{%w AgN"MRd:?s=k=|&:5kb,7ՍI gk:&lJ*A"-e[ jqwYZX>kXfxSz{^FIsϷoԱ{20ݞ?oA_ɝ$I(g` it!ho3{ M~hkWGw"a@b``{tsF?/1*d7ʖO7*?hʫ~VKHkˉryZg׳{zd&PTdX?2BtxĞ֪tY8K7@E_+~>\Y-ɀ;lbpfa%i縳/3B<6Yh<.:wzm@4+[+[}y~1 @؈Ҙ:2Y"2 x"̞򔳅!GHѧ"7E>r[Tv] |WvV7t ;PJFJvZU@#7C=2<]94ZJO>Ɵ2)ȑl{O^<Ƃy@[G 8PJ ]bf#?wZ^/>ijЄSJnp7*%_Y6%] )Hp馬]-< f00 +`c)!"I1q<%<\p5DýƳ}G&]Ƕ+dB?Xw5T#OE?l{Y=k_JߣH<.qNx}5_oBb zbd3lAA'k3'c<%H䄤i M4Td4{OYY/,mRN0 qV&@%;%Q~`C_w'*˜ Xu s8700F0 X r9Ln d#bXrm翵 ҹ'þl3ܵ\ &#ӢUV(?5_ QlIkOfԩƒβdaȀLB&aÜSA X0<'9; d"]XfMal^҉52 "L^~7SKc|q]`>ǟn 6?<jmķZ Js r 2yOdؑ rɸMh4}|`Xbџ_bwie ~T 3d  ;ؐ% l&yޓGC}r,L `b$'g?վO襝\*08W 5!Sv^9j} PAT#{O0۔1:` ,C`ˍD=ĩOXZPGL龜_}ˏ4j_|%܄LXr+%}:5odBhk22&(g\un1JaE$0$ԟ$ 褭Ɠ![" bo DijpʀF K~n?ٯkϞC_śب* P z2퇀>&N.$R2pb&ЪY<~J45ZQy4BcRQh@xCl``Ѓ F<~!7D1֣HBq8MJ9#g" D6{G!9,VW;o۟5?'u'EJ6zO/B{F̀`[eF3UK{j`M (0wA1 cȳ'{20 8 VeIrk˵>d?>w3wT& T`7Vb8S=q Jr)_N@ c!V4AB; YJ`Ñ#v# { 7GOG_%\-qP HHļ:beV >O,j%5H ̶R1vű34c`L'O Ϟ"Kl {d<&)P~㹇WvO@PMW֐-~*(cJaC&1^u50,fl`f/UJ$>Iܓυjx \s#ۿ#npYnJ&W !Rl"Vc@%[-܀[MF ]-c41HX N!礖u i#a&&?䌁'x=`'g?r՘,& Q +-I>~-5CSJauf ?T#M,keh"eZ(='!vI$!-XX /~߱f?CLj5}*d+?6ɧ<̐*%_F^"Kv )J>c!K6 :1Vճ&YO,Gf .&]zgOVN^& Bd`_ P4&g?>kHN@1g(_7FC'0ڍha I%c4@~Z7Z&, @̉?6n@ac+f^z{O{75{wH&}%$5zC:oYWo0SML72$4P=0CBLY4 "3*`Oq2tiϫg.}mw{q˚{a@TRIYv eK#Z }Ro$# .>@2/z7΁ g_|;~?~tOp}U*p%%2/.~ !ᦈčq>t#c'Zh7$Xj}`TG_ 0ٳoΟ=ww?yq[2pSJTK6Tv Pc#Wh!y(l~5t+hJ$G⮃AhB0"㰟"0`수ac =i W<|[?wی}QL!bDJ&,i~qiW'0;UûO0Lim<,*9OpK.^~>ɟ3ti3 gG72y \`2Γ Yl/?49ًfڙ:Ri$Hފ1.@xJcSTxiG1_@z~qn{k?7] e^\Z`/^`pGߖL&8$>0=@5eB_*j,|e #Oa#|@{g2)=2-u33/\4Ώ‹͟Zt 91V,M&_xk-AkP (l"Qm_Kx kw :<=N,-_"0Sfi?/`Xg0B}%{hᗦI z{0k:1k`f?GP p pװ<#p30c\6, 8r$;. @TNܬÏR4`8_~j} IDAT` ~xXC%'i B:òW( CU}= E//K|%v: >wW- |amcp~"S si6~2T`f^d'4( :Eo&X>#}K)0VS*?.tw|N7^}3s9^y睆5؉v 6N="seI('^n{(=?Ȅ x'@kVE~6_X+Wf$UdfBRU&wlƴf)h}MU[T+CVː% ؄K DFvT:pGat(v];$Ń灚J̞9f64dR/>SRy* t`7+ȝs!4yVԿ tܞhC:6c2ƱqRvNi~>!}A?i-dZMA.@w,ڿ=KOƎ=޵ӾϬ~u &ysba@Γpa@_{y儘bSOE:WcK~~B}ӪSI:4(Kӎ,{ ?rd#@L*0d>shJS%wLQ!zJfo"cn5ΟX¾68T4MVf%H /<%)jQƾN+ޅ ~9Y'c@ppGS3`Re\F.Jvl5?TQVK^P/e +9m㉓3jPRԲazo guĚSf3) ׻x|GB}Y@{=?a8׻;/+(TӃߡ)dǒ][AÔeXɗ4RY|OA]G KS'l4NEVmyNԱ~3D !@-a~~F]'m /^+8Ɓ.}'_}ϭ*?֗Y^޽>rz?@fg&ݛL-` wlJi+h?kگ)AA5Wm<~j3d4=(Lvupy( +}'@#>RǀԿ+ GFRb#knDSC&r2㛲鲷ߪ/G/%쟟bI>LÅkqq~*Fh Q )_yώ?)~1d?b ScX9ב0TT$`W \{ 8~,~\buS>x$xB'^_h?Z8]Kz` 3KL5mYPp܆o{bQR*^ᒳl$OR$$o^~은op` mI> g#q>?~W^+KG>_ce8SwkebN@F`FJvlw k_l+Xc`I#;ŁiZ44~9ԇxab?bR/ VU{'N> _8ux"^88u&Jv@6*7ckXޔo O فxv"gY&Hkss>(`?/q_:KW/Hѿ0QENS *.p%G6 ~\I1LHZ 񸂿`3+L"<~T7(gƗtt{X8Gh/~B HfqL/\u Il$IBPpG6hF&gXBjh-ojp`~?&4EY+;iXv.HgP+tt9s?8TBp0lkQ<*Zu6h?֣Vogj YQ>Gy4188?'tYi'sxlqgE]H+tU?Gdž>Q*/R9v"< b#>] ~`( p{QQAoA~SO {stV;Cfă{1nVKҽ(&/QO 5/Ua3xnRr^_ƀEߦELv%INp<4TreSڿuoF=Wo^3hf`cuu`//=ijaN#G(pG=沷d󯞾)J+;rfΣS?t ӈ>~`J8 E6\ JK _3^h,5xX^PTz ib`muE?L/W3J\XA;@BrObk~>ױy xn?0T`o"m%Oխ7CD@ rJ?Y*=ұYhք~KB$}ٶJ߫'&d@G^8vxfgxc|L/Os1V:y0B[!t@crN@rIbB6eTk!S[q6C~AϔhaRs*%wx ^̶2$MG`6pFJ/w#y^yYY"DVVʀap#mUWUőxiQO7} ~< bvNN?γ/Jy1;4W{9.Cw!I3͌,A󍀸m <`S?珴~VF뒦^'F`A`zX!K=0+ :8 ~Ph Ğ~Ed_:Nz̀}9cquP~# lJ=] ~`QPp+scMlmMVoD4)6,i~+?մ`#?rpO<4F2)dEP.?-{9M#XhvY ߐ] I6ѧz8|ǯ8nir+2p߿ KX0L`aai6'@~X&V 1^z޾p=0J k#ZO6| FG`;#Fs$w+ ~5{Fi?~tE_,ڋ>s͘kҾKM+L= BE3XOD8H/at+U^jAw0Q0"ە D9., $K+ۋJ?>[`ymEKǞ5s~\W'M)D:A2Jm!s@K`Y^N>apws/13!!F B};<hW`<ڢQR|}@iQ 7Hq5s7qLI=*72luyQ_?But} 1LgJ>GAPKS}h/(kʌ=  Pob~F9U!tJ_sX1NaI@9\ޓ^ޏҺ а0N簍Њl3}vmkL(pPx#;<֬#D X>헒^O5hFYN7R=? {)9t8i1xIzo=CD]4nb#cG s/upuvNa=z&?ܓao_5|1p2`mRtP~| mJ:dn,b gᓳy ~_ )x~-k ~;~7|}:G}왩w~Ҷ 2%)OXB Cify_JYX%qHD.֜(MڱwZ^G&8vx/>L72$te:E7ڳ qa,?^j?Ҫ=5Z{ڰY:o>_cd7?)ZnL?p`;U4a#`[nQ-mB:)7H2cV'`RM1!I2- k>%]c._^Sc~Q[tm%}50?aL f*޸&8~x{dLȐ(xB'fP7{ͯ̈"@Er ϼW/柟:\\!Ηvz{)>FU ޒ#v0rpK:j'm F)wNa[P Rv@=PO-t9q r&<&j"IeՎr<[Oʃ@Alui?B u򱆰a~&s9x 3j5oۏvF*M8_`aeA=>*^Xܫ] ].LYo~Q7FFl4]!txP6W5y8΅"r.u'1`֌NX'RlЂͬ w~A8/ ZO}ŧx\;i r, 7{~̴Ƈ~N>o~?cĄT{}q^\DǾ䞱8qb dr㛍KwLHܖ Ox\RhH$ T"-$pT>!%~30Z+=S)N_k0`Գڇ'> {LjaxN4);BC8 pLu <> ^Ngs5X#jܛu/?(f;4PSaSyI#OJCj,0Uejےs9 $ \89_25'/<0{fe#PK7LI?ƄAm7 )-ZY|-]~^[i;BZ ļ Qp`O=i5W~6wL 2&^ ZEo QHJ5=) L9.rS&;6s?Í g暑p ldӰc-.„8j*?Ãh}S$s ݲi%˱+W >ٙh?Gf&~NQ 9_ET?g xEh&^@cw7 ,͓er@|vk9q5&GdBm)%ղzf&9ciI&LȠj{wFqh( g]A߃ 8#UMIȗOIǨ& :wi1Ӱ`Jo+ IDAT.,@hj~!SL IEtn(! Kzjjm^ẅٌw0Ln8.7RC{塳$R`cS-r~hR$ !d5#=#ѨaF}.&ð/q ShgǢˠfQ|}dϘP|([ F+ A` Nݏ'9R_nQ,)3!,-*8׀ߗ5?>(_-M1vF )MG`iCyp̸zrX4-w|?>h6S$aYܵ{eEA/ $xȋwCF[gccN᠃C/0Paf@i1U'xGg)Nݏ2TiM= 0hn/ 8KbA]]˫_|m- h MHF>BɘއPZؓ!VXp7:yk Z:N߇  YS0s)7orę,T{8`B klC"dnktVWp}~sj 6!P|K7 IBn /4`΍j~/m InG?&ء`apx%O9꓃}R [+ N=[ (Vq|0$!9_y!W x0yդfjlQj䐹 Lx>F|Bd@k7 jvq}qYLzSGbFyؔ"O)4,/u~н.Iȥ΍j~Opn |wL6 PITBgۨ2Mx"MA7B^}w?zV*5l9 /5Ip N3_e&zݎئ~: Yu Z|il^7װZb bX\\1@䱃x򑃘n!%~͓l]_ o~ei$jjgǂ{??$Xg㖁_nN ^o3bTbfuB%z>zӭd}YJ F4Ov|6v^zR\XOΏ }A+#|^gK]4k)N;'9&j&1E3ؙL~.(x"z9Ԓ: qjg/V4r n]4>g{ 9v~Dj&2 -u0DS8:Z70b{C&V;F )84)0.^NW,j6k/h3Ҹp\D0P lbH.C#ɧ z=Éc#17D<}Y!Z_yIx8Qǯnϕ<.\앵6 !2<9~ HːCgY ִK=v!diGĞL(?^hqҜDpl`|nƆ̼'πs0.\ծ 0X\L@bAʀ2__().Ok2tWҕF So?i{vʌ]46F(nS-p)3]^]no'2Gn"'@sL6)3cPKeNa;!B8vt>1$Uҵ}Ny4X N5g@p:ݮշPH64q0 ("Pd*POvڕ F ;b' UvKoAA.?P8a՞ß?]àljSV>{yuNa0@~ T?'15t ؜40`]z|>@EgeE7A^?w ~_h8f'H_B^;3owL)d Rʅ~! M8l-IeClDBZ~3ź DqYEhۃg]>kM#U+.K[4q-2`GEۅ5zSwtifۯCZq/#K& l(WFp 61 p;~1mk[Ȳ1e2=zgMlJQ?QpI;@0z}o PAxB<#;0V 6 |.cەd'NL}lx]Vb$YH. <N?'0fj-H/FFﵡ0$[L\eq:>NՂWϯծ;EflWo̟Hɬ9ǂX=ys%)S"pЎO֯?oE#BÖeY"mRdPA쒻#]=Y`!SU]GVu}_T|(g pqsC~獾Ѝײ^6/x?櫼z}IPks CGP';P,M޳?FXa5TàSq-~2Ih/xUT ~ \Y]ea)?"@# _Ɵ_qLw^x6K9uC?i'gfs:OM/ XP1 ר`]s%zy嗸ryף($=$bոEMoDB"S)!ntͯs*ygyoVjgYx݄fnd(%u1hio ~Kgd8Ӑըy>&YX3XVH y#HRFxjzPhM5hxx_4aiIz%\ZPl i 2ߒA#1 ܾˣJ ~$'Ǚ}N xa l_b:ask엞|zh ۵A&3cPU=Vf[@;];MY[{@+ XYPj7/ȕ+zmg~|0v,8PmUC\$7wY}o1.>ikOc ~ 4SpbO[W7ʓ 2h{)[Xßߥl<}9zE8*{.dNH-է@aޡ9 fǻo_YykQ#q# x^3 Eb%MVL#v ǯ*.И7w{_^3;lLxvJGٖ9u>2aـi`v"!牖@Z0G_$[=K!J~{*?{9YtқeȊLɨ EA0Y}S׃GeGI"BkǟK*m5A6?>9~Q3ެ:BjG3mQ ԍp.;5λC 9s7g$Ǻ>kI< N,nk`8[k*ǿ \Y q lb 02d/+48a!Xŝ+o*(a# `eqy7_~y.]Z72wq|F25 g XOiÆ*K B|n?3XB-,mP)Hc!1FM13ZgknyBL:I?% :uY!fa_yY0P oPU#>{KKGأ>6BIcPӠVHUg{ڋ xϭwk3 g~% #=KgftҿF ,,A/WD%J',/,-ԕn 8e=ާ˥9^u6C;˚eC]}h)l eV_y6XxOz 'mOSuB5yu;vqL$I[Cq 7j٧eֲ;vf;i\oQ5JUUV, =wm_}_~2`2 ưLZ.i(F}E{`w߼1K=-N -SA>h`XQ4İ|N2fkбo[ܹMS*u;{l9 -c:OGAt2PS{1}gLF4ph RGY^QV8?4~%!߇tƚ1`SZQ. 8 So=˕gxE -Ԁ 8ǎ_hAHezT1 Bb.{ ߿͝ Wnf?eg~9?R94@Ӹ |۱lO@.X+F,U#0ge`X9??w J7?{5ĩ4Οm@V,^81BKEyXz]iOB:֩*9wT0Ipws+%/XAPמew Ep?fD"izO bCo.T b9²yfղcT96WU?,NLL > 'KeǀIDEPCV AN'˜DV7I:˘E*ib+7V@=eo؄ z>9IB-6ͮ@3 I3[w;cʥu[+ƽG)Bgoc,/_D8k,xJәz{ 6$ljZn20kaY w$.>ګm?2^/]_A*G.&K=:?&`=Yo@ $XhRM$c1^hggP1+K6D {Ê_:mۙI :l(cb |xՉ_~JdL [80fDI6׷/!x* ?l.HƜ)49meժA ;傪24γ?oP֞?PF,ބyߠuCp>T_$:9صތlO|+CV(61vތ=vbivp7Y{C]UP˅~}UnԀ&UviqnEOqFXq6^GCO/ިagаЇ p>Xoz r#`;odo ѿN9^L4EYHImmn9=y[Û[mlQׯ.""isz}%Y_obIs.Aul!j:zAl 5 zAn0,Uܽڣׇjx:U\狯^ smX Pz& Dq%:4Q5ǍM(=}*u|^1 vk~-7vʊ4Q6cTƛNz:pgHQ8/efs}:fԬ<}!U+h`m+x$4(űL*ܽɏ0=eL<]or $A,1NS ?JHRCЭۇ5?]ʪjs|poQ= >9S 2gL>ȧL ^L(iR, 62"RlB:a{JłԨ6㛟~* 1H;֭&!$VWQb}"DN͏~ͣ=JAㅲn0?T!\h˜q]wrI\-Jע+f! E()AhXA_rłQ%gT{sX(lǩ[Cdzr$ŗߨѐ"w}[02Xۮ[llRSk)k?~9 /؟*$Ϯ(h%"HftȐ7f>,'BaL0lESdw +K~r4^X)kϷp^f1D> 1$HfLU9jh*+7lοhjG4YP5M ~ y<}Vb5#X8g\4n1$U nOLL;!`S8+ @gyID <ڧ÷>,WWz!Lji%-wg˦0˾Gǔ m](G }CxʪOݜs=U(0aIa@nJL*PL+Xb w>y,-46 GƋW3ն(qB*Eڣ(#Zm]wUEajOY{8/C IW #_boy}N)ۛ0'~ݰ8LzsI IVCA k?l3F~;RAn"_{*oXIc1ИdC"3k HMڡkG[?yO?0FjϨjp@2iBlō97778_J@*2%-hL@PJj6$"7G yHxQ&3°xat|K߂3 2\7VQ N4PK'6oe8,OU;Fcѐǀ?3)LD  \ؒ`! ,B.1ƆF Nc8Z Pz8 3NY{Ldd4AF{Q , ~?ڪoU*x7F4y^i'::#ȃ BQE0kUB="4t{Bx펀M 0o}@h !d2E˜0f1pgЈSIDATckgkJ)Kֈq|-C?t z8x4T8PWS6h,oi@ΐZCڅ&ja3³sߺb_KxiY/Rp£W62mDa+/h쳵p0j1nU4-9~?U՘Y=8kt# H&܄Bkw1Z/ӋE 8+X[x-@4X =j/si ^$ &#7ɺgBAdݍ3`ggdQ*U b.8Vˍ=gf[Ov 0&^# և!yx14S,8 ` M#<-q}K hqc}dbcX }{t kv2 ?r3 ٳ{\,(r33 E&c2;V5F)Poj| 3{Yl!Af$a}k:ߋΫWxB>V7-0^&7Fܼ +֎lj@)w,g6b:?l9lROwlئFB 5MjKE\s^kФCU+vMI$! wu_?W19fk9BlLhErFp,@RŽ3t78N@rF=!^Bj1&Dju Z=xך;j0>fb_[Gll1l jʺagƾTWt D~B?g+}X bJ !ϊ +ў=81"Xxi+qiAP&`aoFln2xϠT;U78$ Z?+8cY{&c0:BoB0 h z;ƚthT+Z ַGG]r ?x*"4gWC{0bc{OlA}iSx;;r 9Oip2ͼ=Y'iy2-$B- R`hpіeȕnnO޺b1&!p![{ |~Caz%U"&"0|?Aj1paMKݷI<Ͷ m%0#MՇ1x WC!ڣP%U7m%./[c` }J6q>sDx? ;RAԔc?RO=@.Xxs߈! Ă=>M /8ʐ["AB5Z8WVq5 s=ck{l J1|f#rd;Snm' <QQX@(~* bm0.WW3\xTހv-gTk",;h@dQeS"A,mCda0Uۅ!Pf{h>_~D` n/^{;<ƒA7m6*\jj~DΟD}$|"IKg1 (> d:| j7 M ND!Xț EFq)0${C~/q`o\ek{!lhgib!3R$5Wpma.B{ϖڊm rnCeD\E݁|.DǬJ E#a8Ѣ;^7S5w6Yྲྀ+VF%J Z[Ʌ}ms,R,pCi@v(ǍL BـXPZWc qW†WhX_O?vxqDO123?*yBܰ)c IBl(W Gh(4@GJw{:>:Y8# kϧ?C)u>XA(pV1Eqxgb=$# Aƫ'X=Qf2P^̄_:ilI c3>9J*Y܀$4xq0VוHR! Ɍ!U&=HC~xڇ/I4m(S4 L7P $Q_Z](טtUTdsr~TG:9r+: /..DnW !'E< ےA0s"Qd}ŐuhBz~<:$'=@bBjs㳾d+FF "Qُ35<Ϗ{|CAdta68\[X Bo K'utc@])C(_2s:lvӴ1ȁint@"ЕG}]->)?{zeo7xI8q)@7tOy1LΑ ?鑴ɹfdD(2io7ӌs1+HҀ;NHG=bDH!-A86C1L^0/DFp;~2Sr ~Y.gDdًvh9bRT` {:iPܭ2 430/gG[SwKU]d*# sa a)-""cq&pR@tu|"`},ծAj~a0 H"<^n0Jۡd6[>,Bn-8,qJW}_U 􊂺T~Ns($qJjWi~ ,XQ&e \Mȁ~^+_za/ )=}B2**0C!$%U9»_@7.C å'\̏B,om.yBS1 [-8@Q3mo-\*9M'"#XV[}_=F ˫BX\04U9=uIG>~Dd\oh݁Sdd/tm*sڻ/? z) =Ez=5m;Q…~?YɄ,c9'K'&< +v`;}QUy3+p'7uN4 ^v'z?󯍗gu gh~ `k 6vb5vX+ƀzq_¾&o¾i=c-SklY` b^jHѧZM'Ë[]33]vx.kNǦ nJzH3W؉L \t@"Q'O_<ΟӁ\{y/)z=,t98}PЖQYbO&&*5N֕7&1p_-HH@s]3Ig?p>eρ~2dpc|<..G`*È1bD@ }tzf|~3g't`;g1DבZF0b4Bw|]~#Zlt}A z]$Z{{oWY*p 5|,u["EC0 9\)@ 5.7n?Vl;>L j.g 2I?@4Q +尼[Γ;sNs:uE 8D2m9K+08z ru;'I*@"Z'_oMRs:8?g?~ y$ di˖q3o=츳~p/lv&̤֞DqbgHLKgiwxͶ1!7Ljnjr\N(ntz"rc[V:/xz9;!s[ݷf"67Pš/~Vw]?5Fauœ{>āj*Ĉ@'0 XMqJё3! GuQMEQz5A9 0> {t2۸IENDB`gnome-todo-3.18.1/data/icons/hicolor/48x48/000077500000000000000000000000001260744630400201445ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/48x48/apps/000077500000000000000000000000001260744630400211075ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/48x48/apps/gnome-todo.png000066400000000000000000000042051260744630400236660ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< tEXtTitleOPML*UtEXtAuthorJakub Steiner/!tEXtSourcehttp://jimmac.musichall.czif^IDATh[lTsl ؁@#'iԐRڪj%mP4(EP)DJĦ(njSjԨ" i"P$vz/LkMl">3s|73nn}亱tx[@$>A?rrEԛ^gx9}$5Wݱ>lxX痪q3[z/e ,oln#} /M+mO}BWM۾N(%0"Hx=d?=s.ȠK DV}_ l|qb:b*Im_ޜ; ."ALhӚaXF^8P6?o}5z]~tw/LCvmCNK_ԡ)ava]z]4X|-\<JBߐ=wah[w|㈫r?N"[6vZ6]]b?9z-YF@*05 IO:[ 6BF+L)/w}wGEkQbX4Lēԭ\#2´4FMh!TN}a_EX hu lYiF36r99Wg3 F.rF·sjC%nW~ݖk*\}FF'/[ X^.zֆg*՜zwt&H\Dcc |V#Rid~#šJW?Gy/J)"qp>Jj.5iM#? y%r:oO=35\*ghSB6*8R.xMē:O_686E6Ƨqc 0f,;kx&`{Wy+Wۉ32'$u &'S,_Rn>۲5B<JT>MJ$;NLUH05[AwG},U!T&&lڲ|ۖ8~vI&%&I^8ҡyMBwI\nq7/Pf 1}(0RiR=ij;QR)yVRzz!SԤd뚢3 X{?J2 _cJZ)Ta ౧_@GP4, 4Ju/ҕ 6hM8JS$߼=#Wwv!J}O`H5|-DkSܷ#4`exdz^8Ǫ:B{Gk9e2y43#][3dU\.eۆF2wgIܥ!R2/pxsPy:] /K`iL6_ 0?F2~SYBfPZg ndDU0P'sѡFˍqD| !_adh@i'Pd\OaA(S04y~oy=œ3R$bz7xu&ʛQ;ScK/$6}fc.]dNfC^{IT?h$B&}JYXh B(΃!I\d[g! v[?|`ǡ(( 1 oV{(oܰnǡ(( }we}EQ޷Lnyۯ EQEy1ݴq)(t~ׇ6W\kR ( ![ګNk,AQEQیUFr90Ѩ(( grKٓ[ /pY?r5((iݿBK88Y,gPEQU컣_s̮'s]?^>((gW驫r?t(79{n\{.oTߪ((*׮9}x+udd_C(Ÿ~{wkO9s+_sĦu0vĊ]S=}]33+g.l.Z,MY( k)ZB>L?\7_[<[I'Yz^u/l86J]hS.Y|?sO95Zf0D|^( D,,VJZBv[~19_y^~ԙ=;3m+Yʹl~'^}{ZÙAY^1Zf&9.TEy,["j(E–E鍗m~^77zũxeҟ}w׿W;{n=ۿ ;H9rIZvP~.~N:'5h41>Ra1f}f ze0ƀ?ԗ(G""-KX+(F{iLL/¹s8{aӭ)nGm8ڗ>{7㗾y 3\wOFs 46Q4h5:pbʒC?"_Su9y?_έtrԋXD6X5"6ÀsfzO I~cvM5cvIs$@1U;_;k,nG<^~,ɹ'KP=3v Sp9s:Sgϣ՞س7s'W:/|[[}7=wvbߎ]_سpa*VS?zg 4[~O9]mjԚX5q9@@-ad~ (3PEvt Nl߹;K#Kq Jݭ$̦TľbmQQ¶z>zxտCR%ɏMD(c'ۮsmx-?`)NJ^S 73% Ala,jyZZVǹz ٹ T: S6zwnWos}-~owӅ3ۮb?L8)D_@G%\A09';r g75jMCv Glެ#Gd*2X;bn,Ú#yȒ-iAܶd!9%`׮=`PPDc<}@w1 }mt ]r8jyrloxL _x?ޛZ)~Ix26I ]8ꐩj(a T 3U݋$<辯8`2 (ᅽ U!ɩ">r]f՞Spȍ^w)'axy*Nk"U8JVql;"}w+q$uVcm72qR]6omFUCw>R=?O?";>`UO{CV`aa&3l Li`!37+38k ƭeԹ?uLN^53oϟ|׮M_۾kIA8̣Rƪ'0vV DZU}sb ?ϋ1qe e k b 6 .f` uS'Ƿ}?pB;Ot.=e_ݾgs¼GQRn?'{GZu]3|t ׎cdd SG9/Ya&֎*KiJ ³L6_4#Z++m~v5AQpO'|* T5p*k!Z$~/$iF<ԨRv:UpM.nq̝=~SgoQ{PTIL-WAJ`AQ֝Вدx>t j{3HIŸ@ʯک TCx^Kl'1(H;aW.s׬Jsr^cdCWcjqup#1'yRd6n>q T¸hT~c~ӗ);N>ҭBϚn[!( rPɠ?\Bx?ާ_aw|[yùS[Ml][\ah[nRv/~szcxl :˿Ѩ#Ÿ19k2@Һ/\QSY/Wi2TUӱSX%yQZJ=z<m-y`ćAo;}8G gb2D3M*m¶.}j=G};@"tr!qPp]|A3B0VjG|O}i+6w'As%)3!/%`}}ܵڴ1* +JC};]Yp5J6o|}wmw>@h$mu0}t[m7K!wDk !V ȸRpʖh 4ZeM}3[q~[+ǿ랻sv͝;=?r%֌4AccHl51̸xRҢ(RP_Z2$A-jt+׿}{QHݲ\®=Vα~νSz/>g^v? _jL32~\%2c;<0g?܃~uZoQ:y}\jSw|1tUZi. LàUXuCraar'[-i͠h7pM7(f}zf\vg\BK׈g- RuI΋g|7P LVB9& [53ll S-?Ͽ;?oO#:=/:V~ܚnor\9qiuLToI ZP(7YC[322*9:z3Cv(6oJR `e1SZm #EE_Pَͧgh`-ʼnVz O(s dQg+a,uQv}֬Zx}^HDlۤIJֹ3C]2gI9LFKA@sd3Ө. o0u_8>܎?OQ|ʀO7ケ55a-߾򊉣 qH"+C/gF5ԛu4 4jyMc#شB0LK̴,ۂVh.Z]^Aj;KE^ǒ\ËQ0\ oʎ⒣s_+}sʀߺ{z-䞽{w,j.i!rZ eS l)#Zzi֑MghZ湧O^!6s$ͪg7e 20jeϴ-[.?Ls*(,ݿ~Ro#E.K0sG9!L!;b03=uroR@7{fȆjGL@|Oq9Y{qx33#L 0!ж/]*EQMտZH5ڥT^`<gNV@k5\c?ۥk֬;G!;Rr[ ݴmB(-.JL3B|Q(`\:KZd\٨yJíC &(,iuݿ{`Y Y/s ~EQܱy> 36)/ L\u]K\{i{;lԏ_{g?[v2@:.ff`>:kfN[E\ZATPE_X,-MZþ۟+@a=[o>tmeY##_{}d&( ¬<;0T h]0¿q,EQK,>mJҢps=f Н=/rSdF5캟_7zmz;¥(:Z=K(Vg%ؒ  -(2BR 2T+̇B6 >>u̲k&'8=_yӓ?,FykgZgYbk@ilQta!?pŗ[ BV{t(CR M}p?Dt=0k ,~A>CGzeVo߿z-/j7,Xm^EQ`-tZ10~I=?_/ϽEʂkj. UlO 1p@c SWE n9,.~>D~`ΛbApn;=mbk箹zYJ >TTrRx?t’̝TEIVj졏9Sh}Q`%ۑGh~+>w}7^?wջgy;ȶ$e,CQE ˲hMa^fr3qa  }bO!P5O(#8J\:wN?;ipc`PK~s IDAT@eǏ~}MB^˦]Vk϶$k:tMn_ L "p@P]#bbp|[("CC(җ7?OÉAz_2wOǯ =PJϾ\eso f[..U ^w^ARo5<`- $+ W?>UEyp¿Yb}bH BG}?PX$AH.rA"??7L_yFcJ@qfMY!zsV <^[99t)18TEQo -x?SWO:~b䗌@'z≪koij dGZ\M}ou)$KU[dju1y]ZcX;9kGhϛ>_M^޳9!tʇ( &J/*G5Y" .vqisz//$]"dO='0ཿ;[aKdY>}ջo3i," P#"JA1Y.#ˌ ^Ph'jK7?wG"ҽ'Lt*E@ſ(/jtٕ,C .L}w5@kK',L'A/;q cӺb Pa+^ 腩$b&*E&,0 AU lj:dn>W(ʋ]&.|ǒ ~rs״ ׂaP2V1p g_RykĖSP€KLAح1e)1:]L PL҅pK'ov/{o?plV_Ś8G( 錑ϋ{OO!HN7àK S HIs'8Η]??qf(Lsǖ׌]_! C@ 0EY_ 00 #i4VRsrOՎ_#s;|I"y׿*Y.ߕeg*yK$N& RWڴA i&Lj5ÿgdݳsmX{`-d6(i2Mo Y1œ #Ciy0 |O>dA'ko>ѿ9?0PHT+\OH-m{=M5$\Tao  o?͟<}karϧ b#aX[N0Pժ3U#%H2) 4>&vUy`OL6o=׿|* |F,$@H (/ _Kϖ?(?xAB^xl~% >R.Xք,"[azu=em[;z΢-da#@ 1@J TƲL ٸd>"AЉK3My3`@fi[|]yCD֢0IxBw|'KN(ovv'QC=ulP. Q^2a /|9jjvvucJ+baPX10FPZKD% %2?Df# " ە@17q [&j秷>EU+@dY-M/蜻iW|Ap O| ;/D=./>~,}Y 7]$ 0 8,J cI` f`Qa%c Z0`5w#ޟg1f.<7梅?0DFJ BT3P兄,OL_zKJUcf~Hnz_7(.xOS͢ BY/  $q}z i0H )-(L("LR "m Q 0.uֺ bq LgBњ&%zOX3if3}_{CyR ,(r鐬7oiw$xQYy_S'#%, )$"5iO|03 KI *|t$ f5li[ W+toܿ3=/fZJ].CC%0*ɧVg*eG_Z)+??~pB>"3 G^ASPDą 3nSwR:Ņ @d &C!7gJ &@KIF*kH0@Zc[>lwmF)aCH rEJda \` -1e HlNEYMZ^CY^Ll5} kw\w$0 KHjWa-J~1R AS4QwH\"^L󿅪+p}&NÕ5L0x>޻3pw7!RXCWH,:`\X4K%0nWUR5EbYbr1Y.& z8}]߸m} `@_ӂ&(C'*,zWs+ t}w8M}>?PX? 7dx:2i$*+gx>z$j AA%D/^-6@p}m,ȝ217f&@cj%?/lP! uٕWuoqID`W7z08bf8؅%'ȒȺ@o}%@pePB JsRS(`L&db [^{K?i9qE@'s(VE~EQACEUCy] @2$@ P _Ȇme!zWݏ1(rJ r|x`/ Ŗd qE(c@%n+0hdK( YYh?'կ>xS-=_?X5 އ*A%ߊ(*eW*Ӧ' 4ُ$$:D()FJ]_kc7\ V$ _p)n~BPrX,e6CaDV\,tXPe¦-ܼcǟnk_u* `CCR-ŏ(p1dYU_paT!Vo,[ cadž ȝ0<b=]DJ"ؐh_*؋~C~?SxK/~:`($  r76b֏SGO|ސ^uֿm \d2}UEYyP:?u 91 Φ(`@  m#x` c؞O~٭RL#,Hx8o0P>ϖȜ׀OdO3KK&KD,0%%pax˳7dn34@ |Ȱ `\0(4+\?lGw8_yC!c0JPˏVs_kg 5JJ ?lN9 H8BҾKTZ&0b> bKnDܴ?w&TD5fےjI=C=~cs[_o>wma<"B5F%(Cϖ˿[wXjS;k u IA 'AmKe0c Q_g1s7{Ҟ=^f, 2 g kɥ ݒK} 6D瘟|g}'^_{UC'!(W,lEQ#̗"Oi'PbŸ y[!>"@Z ЍZa` w:#$I_f_''2`O`'U2x?yGC0ȅ{ )ɺ%FI \Jqwm> 3- !Sʒҵ3scأ9rݕW * >ZJ=&_0{V}[ njtq(A|PO"[^~ ;99>˷\Tš>+d3Ҽk@ eH\MF$"2,]$U?7Z":z/o'7<ȑW7÷|g?P* #*ap"Sg{-bj U?Н.ux΅c}sSY[AVe۠4@SE8V$Fh=`R,a@A<eIv,mK%aHi:cP@\= 3M.-GأO^?2^?|ݫ.o*>V-(*2dY?GQ3) !~ ^K c /ȝ7W4o$(+΄q+XpS >'7;$M@,K!fFl X) sP$B`% 4]Vho<Oblȡwʿzzb@\ǫqZPe% gE{gPDZc_HR SHL|H=Bv=r&`0>˶qjS( q ևW`ʃ\&h2B BD l`H-[Le[[f{o{g_::<_}C/aTߊВEYaD6F"ΪhWV6hþ/ `j/ Ns.`~N pxov K"[ZK,qǶJvq *O32ݧC>^3>R{?ߵBQP(,Bcy(ʒDi'?h{녿Ń.[ϗ ǹd ܕkFGn+9!fIrQWw<8bXEOAy{q}D*? jl'g`&xÙ/(@Gsޛ  Ëw"2w IDATQPl31۲qJ[rV `|e#D [|}ϝ8cxȏ'~d%'a4?P_Qe/L#Z a_D Ϳ'a~nɌK#oJUbu?_(*ɴ@S1 1sUv1E[$nV)p[~]#ڱ?]: m*B}N(ʒ/daؗe@(6Hon XY`o4ؿAUAz7/b^P)qd!@ X'hw?, }%>s[kG}MɷN|3 @[EmW@Q&YbzMKJ7/Lc_)xׯW 0 *\tk="dyf`?YaAX% Ci!p_fX?UFX>: b % r JQHRIOd- ?sxwwad{EQ^ҷ#]iPg?۽rB]*.c\mkAMc&ᆰ%~J^؋u$\\"In t1LQ `,r>DgyCi`!O*|#.lk6z?C}/=P ĺeY(Ԭļt `%|a?~l,30%1!*{b]k$S AC aC䄼eX Ʌ1_l.k/=~ld͓?Ɨ~W0?0I^Ϫ(D\Aȧ@Xd+r!y00oڭ. !a?.B> z#Oz{HA3 זNA,O;~cƶ{yمGƏoO`?0t-,sH X¼%9>"?_¢>\TE!fVH1?Lo!}XwܱX>bXF]wYa_6*va9K÷b+J=}CgFGM/۷lٻD%͐)~eIELQ@QJf,h'[im`/~'%_ * 3ab}gPgG'pmK=w/ _0~IPX|eY܍bWĺ–aID4C dK"LOM׾#1>>rGO|E(\ Z?: @QE=~>^Y b_-ә-ЧUc~KtWZn}ckNU,x[Wí*{b6&a_0:?_Npq0% UUO1%M>~h͑fvݧnb⌵t//n*J5UM~EQ. BdDo̿ ¿W~r~%VL%q:|$s1õ7>V#qʔ T 00> `]$x9=Ê0I?s-eAiN߀b]Y.їLF׌擷^9q't׀!T@z($S}ZC/E:X OU?E-3Ȍ r.?{T^'t Fg?QNv읯>^TzeAya 145Xŕ4 PQ9'$>/Y98E0IssR'** όokU$Yd?,FqS$y%w0]ۮ/ uǕҔ vlfA!DFό?+-ix7\78yE$\Hp-qtN@( `wzl: L ® 0q6 CTKBJ,r(/.ϱNr E%[Db9Y̫ڏa!@sd@옉o~Woݗ>L7Ɖ~r~~g@);bDh %gw;餓N_Gmj簢] bTx A? Iː99PڛbIB!(kcS Olv?!0\Ccs|>yFۿLڜ("1ONp8xK?)|pTZ :/@'tF-\7/ &˿7{_$wY,;=isMqLm$YQ)1\A!zQ#AB87x0_~0E3A#d{|>F{^2gyF` t=K&< C-$ ImkJ2HkCMYLay lQvAwzC8dwō%ml"z$ns\)%}mQN! u#''gLTG/l93q`8 >~38ʴҟ4Ucxf,N! 0:ҼN7:qa1I@Op{?O>|y<& I<+p<`* |e!4Ӥ>^](Nw nhh3]؇\Lӊk-jpa'aP `\FF*c3%USޗ1pѰww_7SS0%p>;1S2o 웤u sc{cr7W=Bj`Qg/ 30y051 @@NG5U҂F)`%e ;餓;*/wíC-I'i)_J| P寵^'ۛo?%=U˿ v@ ^X߹dEkC}~;Wzj=_"2?Kz#+&g_x|ݟ?9x a3gt2d:d\\9΀}I;`1!!?p*@)֡N*TkoybZןJ^;e\ - -i8{g0`pStP} xbCcOC~R[U҂Xɡ\gtk{B%ט#w'  ɩ]0139z$) +Äp\ʹPks9]WecC&x}|l.K33{,)O'SY?1{|op|PxgxiQmV)r%)(V~2 u@'ITFS ͢ Є?SDX͈p)KkHutfN37? !𧌢۞ y}NT} 6o'XWU=\ @u}J.=ں*3LS&ޞ)3M5$g8=kHC~>x>xOאa>nPZXĸYMe)utɕ`o:~ ?W,M|:9!p ? ͍oNn ބ>c> t4꣗g!> ?rPFH!8 r/whmYd;lVP8֢dG#PS?n ;/XyXO΁133`c"4gOOO>| #<~, ァwp["RP#_uI'_N?~zl/%m $/{P%̙ߩaqH٢>ʌ '"*+)e|y?"=_hYϷs<=Z9F)=0O1t9!իG~ ^iJU@Z];\&-S4?4f{N:sdßϺ`@6Zr:2Yq+ _Z/Wbd㦾3auתbE %lQ5J?R~:铠@@<Ąt_.'FV@doa j+hϙY7o0gӧOW7muKs-7;餓[+5n#ٙoKZP:-uC5T3d@9i iRw)?qWl} _6 WޑGC")by`U_<#Bɬ/ x0̘j &hߜ`__Ǐ^?Ӎ\[vZ9 P4ǠC\L*I'XRo*B%=FHT9CS<3,?yi.󉤺q?Ɍ̸JW$ɷ| Πn)8} B2&k .oL_ x0 31gN-@M =xUQ8?dȱZoK#~!]'-Os֑Z#NnT,cn%n*u'Ggߑ÷Ko_!s8\\׮UN_KsDSOޛ}/3?ɥϥnj_03 z9lQxS,*:PG?1.& Ι ُƞKҿӒ&_pku @-ui'sQr֕[*?ķS3ozyerR\eW$nmldy 9BHX-_.0(4!$r]{f>]ǡX$}~%m/gԞ@"Qwf}S:K_\> ?j&..N V49e'ExOSe⊫nզ-ƨ9!l4mG _8_ }bt&)*g/I,=0Ŕ`4Q)sttK ֿJ~[ D(wj%TWv$uI'-׊49_]-? ,mKЄ?ے4O3$;͜7Z zYK`x{.b `4wݑ =;׿jD.y}-j*RkBk'x(1<#f$RfJ87Xx20t3deDVE Z0 @rd >ob/O?OhW?>?u:h[--Q1HtI;[.C5[U;ei* x8,?wXYt{ȩ[\JU˔R5e -XxqΏ'⏯M(<4IS+C+@BlH=HYڿLx`.ģuOﭕv(?KdrN:5gNGa-۟uf<' uQX|z9,lt cAgLe2= aI>' P(%}OoI_6E0{ y5|@anBohJA,=3F#x3)9%?Pw@[Dbm nN:餝6˟*oaeqX_i+Eg" Q}O%'z\vtLw$oDloofxrt.Iv\̲ց =p )罓_j7[۴`* "7%ozNsCo*ÿ[H@/zVُ"ɼd:n_Q)?te1FF}h,l=7/%ﵐgCV.Lx<<<{\\ L{w,+\2<^Im?Z@luI'oI:k͵o/Ήۿ{2/f^S no89QTK$J󻇰v"!{}5ӣ&YHc6By hΆ G#ϣg>cpS7`>::t޿_G`:8j-n<z=>i9tɍI~WX)A UHs*d?g[(M 8qiƺ{/4"NWb<7{|Hc.{K*tV \/Eյ 5ևm?[;z.i@j?5'uTKx BރT1O@:0x?瓘ǯ!?|~B}YR)>]Տߖ`gn줓{"v(io3? t^zC,&eu؇ÀN]r뤍OUldw͊ގB3);ZDo[9V+Wky؏T]~W`+{rVZo=AJsX !tNnv?RNmu#'ly1_֜%$۟c%_Ҽ w׌|Ɵ#wD?X&PyAL ŸϫO٦dcBW|z EkCPv!~} Egp! pg?~{d4'gސw%LZUj:餓.O,Gc?W<rWK8 l2Gk |(;_=do \Lg(| SE!ZecrP0X<ў9\qU՚O;Kp)ZRN:y*F4ßYy\ RDTYڄOͭn\xU8x)?¡gV"_ML~$߀ٜP0qre`/Jcӕ]~M m[քWLI)t5 wU4ONŸLKDQ,K#/%i4#Gaep!ˢQ  WʳxpSY;bߚؒZW|c2>YҌR<Zض ;,~5:F?Pw@ hx邏N"mR'??G#Y@O[m='paj{Zeտkߕn[jfVxsh׼ ›!) Ĭ?|o^C];C1O}0':餓k^u$ٱi la,%?k.O?pm e<"%y$5׽4%5q>? d*x _<'C3MeU,#I`#g:`y&;?Ÿ_ oxH)O Og(|fRЧ76ϧYNN@;C./-ߗvK+߅a 6>TN:&d\*F) 0k_>D]mƙr!Vڣx9.xÒO\uU?&FC9G,ebֿsvb{IdSGe_er w?dbMv(|Т@|̏˒ {Ŷ7* 0b£I'\(=_u&nMh7??ZOgP?DˑyϜ : BVH2W?"}%91[Ȗ3~O8+sJ7@C`k90k_m9e!t @5:MuI'6Ĵ_ w1$VveqN6+HoJ, 4寎Ls!s{뼼&V;CR#ie/R'ks%O /&xqRbE~(*{0 * ؑMcvE5" 19IrOJS 4ƿCg7(RT,N:dgr ,-J௖xO _?T?Gze~۟wIuZ$Y*Y4_gTE,Y-&c!AкDv Uxn9ӧX,\yzGeTI@:m'[7[?#d=tE?g&tÿRO?Vk Pr ͵D`a%߆ohn_' j8빊°,㿡 imQ3V:0SN:R n2_gʙ;߀Hz@@(IJNF =`heUN:Y[4{9$ :K/ F's0??g9́!29'(Xj onZ\MW? |8:+pv>]I -1tg{42cW>o񿵄t[.S$c+mQ|pp wNi͎2`e N4E@ d`8.4_  x$na4N\@Ε4D)`)v^(Y|r+nL 0?$%J:(ßluJARGO~Si] >SI'o[(6 _fѐ9B:c83PJa!{ȝe.`I5o.e?Ln,?=#Na6vO{u=tV¸" @*\x,NÉaOٓ=|zlʟXt%*re׾K~cC]W/z85l6>8["kГor w] .䴴$tj1n{q? BwU$`0wjCؗy_5L$p7=|Ps!iN=$)Xx'z)l 8ů #_[)/s߼ %KYsAH.}Sߕ*-PR'9wTۦN:Y*WR4&tI' .5&9Oc}Lc'!i3 yfqaS_,X,r "Y>>} uI??ډHW,c{Z`EXo1c6KH$`oa?Ƨ?R ;,CyA8ngK|#}ik5 4e'&Y`?*k T8ŢR{N': IDATP9\ u'OKP ^_*@flN:$ח.}( WWOþY/il&nV?dyL,`WFc?EC7} 60?CB%."X%Q00_,+7o&op#^czyz i`@!N¿09#,T`O?RfgtY_YDExVGc$4>D¿nspvLE@3\<!EXK3DZ?|^A7WRs?yPaeN:ob7ֲf?S$PvAa^/1=9P͐ۿ(կ`zO ЂE mb&O''') y&$zQ.%9z|Nj$ FV{Q- ˞N7WIfo 9쿷w+\bzr rgPpb"5j[Ÿ *y"} 8@:o2a3%G5 B(`<$ݮ/7_V+ aF3"v-Σ7`yyj_m^_R~VH*C#&ˠNpɵ#KnW mA=q &KE#2ƪ1Si} a qɁgZ0O;6q>lBtY5$pt* 1DSnzI'oWGIK f&ӹVs8a8(BqIː*. ¸y}x5?^y~Of_?_,y a5_kԤeD: ϑOOw:Gr?d->$?j7??Ȝ%*W k?|b,_6q6"?gs7oRNMd"^佝ߌ2~Nn![#_2rUۘpDf_w@J49>C?0, B?Kf0˿)m:P3cj["2 2߶]O׵l5Dߎ KU 6ў^)'wwY)ד/e; ᡟ!۟s 3{]/4?p/Y?G۟ z.^"1}_ꗴXiGbTM 9 0gG*`)}p{/. d77^^I}TPOMǖb++?wDrf~)AS3ំPⒾ6OGe?U fG8erˤu"נ93]ŷMo 3@q$γ}5۟TgT+Ij'(0R^G.&Z%&g|hG{_x D& #>?LmNsu`:xә2t('>?7ßSE~Oj7?UHULcthBZ@і3@Ljkjm[]Bp JN?8KN+q|| .nϲYF38uH mI_^*EVJ]?xF_,t}b7Ÿ|O ˏf:~tK:&wy?巠Dov%x``lB|.&S/N>>}|$. tpv=3N ٗGiW}_Q^IlΛ8E_o+Kk`3dV>QlI*;n9J~56lt*;:2in?9kdpWjHY:q?o1jZ?O/z*< \V(V?$^ӱ/ruF0俖K)z*Ɋj~SFM ܬO̺z^/t[!`p_Ԃ Y_<'f>?Gg3dfF_7 1?|,T*?n@ Y' {XrZzmfA;F/-Q8s̐(1w%0h}@MC~fאMR(}l.+?BN# 2x3XEm_'YO㸭D'v<Z^H2ɏ|QB<34OƪXᏰߕ#q~?J-JOf)%?l_(ح}EB+7.,P~6,;˝g ;(Q,qHz}wb/idӦwX:z2;@7 =F8  iyKoO-??ý3 Y ::DpOgɾs99hmxOGJ-:sS*2f)fi0 ߜ.0<&cd:~b뽔hL^MOޒC6ںn1x Tf _S\Lw8ĥqhn ]p-%9M#M ~xfᆄ??Fxp?g^/Nr~N? ϖr^?iE!-+.MJaXFDҾDQ*?'b7?ŗ$ o?H(rw\;-Jm R(2[6^_þK_սP79h-o*8ZE6 Vc@p`{A YCT#?Q' 6`i7BބcTjsƒnC>1`d5MooHyNtvZk79u 2sVn}g/O1t5?9W)򳏽$}z/.zf)0VP QVo8|* u߃^%i' ުNN٢fعEC Ku$D ǶV|.SQZ |A_nj(Lg.c?GOBLg r408y/ E;) k*l( p?`:>M  @f4%pm#[=TU4m 7U=q5x5(6qL]]s2dpYfov.ى{y*"ifm<(8ϟq- ^Hc:s!/JeC=?,/^;oY/(K$ Brc#R>Pi/wxt !g8b6͖Q?;?;O}n2mH 8RLډJ;5-ݴE61 L?eF}87 FI1H^z!e_?n]β)(B.39_З8kE׶|"fa 1n |DUPX=zZGeOxXqPcl G˳ AF#e<(x~R7_^`^( #M+؇Nj3L=fM+Yߓ}n?s_RIwiP.qsV$\65]]rWNhmVLub-?n\e(0li1~Y4]gH`gnx/J?V)ާL'X:d?ИA=boonB8CgdU?rqY_unnon|r)o+-qX N =G}9M[q{\>lیwr:@xRnKƽX~,yi)7웶s֛Zlk.T1L( ׬]&qnn A\4ߪP¿!S;_Az_9{P΋砝kv> z`'Pe5w7!SmP-Y٤@*dDZtw zhxfE7WSn9ߩYEy!sZoT1gE| ? ͗X4A?΁_0~x=kNsP'Ki >|w%oOxy& _ %бmjV3j1ڠeMr7@+*z{JrƫFNq=b?=[^Xҷ;x?y/ wD> L6lv'{: @+)MqUY  C-;E t@A dw +<[\nYDakJ eWNCۉp%(<#73j6tF!? o@ә.~N+_뉦E3,(X_5O#''?t+P8߳CE1-@\H{Ko1, ʸ{yFa= 5y~9QFN`x R]9+y?_ %Kۆɮ.k_5*/:^n^/7|^}}KzIl`%7nnfV!(_mС:ΑL\'\=D˴A)6h}$oA2Nj ~)\<,m7_YfkcOKkQN{gwf<{wlj/监ã2䙃˝I9dOi*5ߞ]LFRU?qttL?e2sǩủU6e uf@hJҩ/~AاkobKo'yqg ud;rȿ Њ7zYRznTJ9&K N޸$LrDr1}o0L:,QtwI!gr'j E&XiɅ .T?g5ee(BPzX,G)9?qq?A nO %s;z,~{lmJsx'}y/?*&J,Z?6#i-gjT/A? Ժg㻗,  FG{}mEsq `kv*?~'ei IoZ[sh#BŤ;0B5sjSK+Jɏ (Z}>X-5';g@YȖ*ROJ5J-~;,R%?U,Zb?;zzX4_V{PO!rMsrZD!瓸f)Bnz| ss؇)E(&9[ |O#yw'-U8ZowDub K\0 SSЪma/xu6QYF/ی-iJȀƬd&Eh{NeeUo)3nM"9WkW&I|o}|2bgXd'{Oki IDAT (ro2gEn OY?xv<ᄐ-w"6(<{9[HOw+T#y֕h0"(J`D&Y<>$ {dzJKDBbPwpZ.Nw"zBq O%, HI"Jh2k oxQO[}\;7k֧_mYq8*&J>{3HI_gX*ؑz5=_);>S=kgWVrx.ixo}IRTS$+ۦsIσY~djA?I2 Ѱ, ?QH.GlhbQ~ Qxѫ0ǻ:OΖiPܴ\JQ4K5 9qjmZl%G{ ym``ijRT:תk:,X`. Ӣ,UV v9Z|Ы&d&r]mܠ*! ɽNf~(IyBcR2£U˜?@YDZ W gS?oloǯR s7ٲ&X$Vÿ&뤅 n:=./ska2)x9GẽXyE|aʃ@ gɄ: )Qt/B^cBTC@ӧt}'f^vJ#g  9A=G<eYFډ~)d;@gxPzۘrSRf,?%WgGo*8l+_ߕ࿬wN]]d2@<-g2ѳ Y( {~E P\G6N)8fe{Js}@QjjxHT hvgh> 1 .8q -XPo jvsiVŲΑ Jg+ޗ-z!<f7XR˲{Ÿd8Ce5pcS}_i\ k\#Ɵ}Ÿ?K֘;`d 7ᯏ~{/IkwU} H%4Qj;fgWӱҎF"APK$̌p#2nHH pWl44w|mnn4,#/' vl eAd9 ES'lcmU}r0 % AW)FZP ^C+5X(彦K{4`6`Chsk@lX?jVI͕S``0W"&#@ꯛgucm}DpWʲTaÁr׮+}'/%@1Y4ljX68<<T{gFWzE'oah\mFL+gOYٚ|lLy0 D {1 -˅yks#y7\_V"Oɷ}”="), ~XIE9Ƹ 0MTN0V _ `/ڷPj&O.L1%OhHu5Rԅ)3IǍ{5^jkK֗$7 b0qa?s =6oRWx-8*x5Ab68jok_Id̚+'Xӏ;{G+-=|XS (Xe?f/ -um>C_FoB=HժHhVb X]na/bŪpʲ;ó1ֈaee.G{GsU5 TBZ&h$20dC\468L ګf|xjǩ b %ڼYj&j&ճ:(6h F`qՌG#>>۫xEhzϏ < Gg [+&jɰ§f~$cYlh/OK[y*+|/RMʟ)fi!%-ЌN[.ZEP3/8\DDEIk}K.Vh-}ݑJ2{o7] ~@c6F5]k͊*,&5@3Lƹibט'$I&4=T͟ՁUI|G(1|eYq=  W3 ,R4?,E5>&u`|T! o_;q:Ƀ3T?pzv44_d[\ Nr'ɧ'bf&)n+/bY;-͕V\t6HL'8/99Y{6ח* \[nz ?~wC5_-h) F,߶@1h7-9 tA0@sb[sg TyQE!{ ,Ovc,;u j2fdar fii?|Q'Ͳ0 ߙD*,N>8CU@k>brMҗA_6s׮Ro>Bŕd̄ڝ6|.2g?yς=1 {9NXqv^΄拂?Ǔ+kthWJOc-f7ŅgFMR;؂5Ծ u;\WO ngwyzG*LyN?=͙oc ƤoKI_BQMV<7l6'j1b/w}A89U cU}3#dY]#EsuGl^9d<ᾌ%4/~ \b4c{e(UwRo0⻷Wu;-C bc6eri?n a[?f?22iC3wח lutB"CJܽw4'Ԣ'4( j!;`sKڗx{]I\/>jR.ڐA/Aʨڦ-{ tI@Č* (9m5t?&n_ll;ppA-K CU,I׫dyr;M=H(uP6Yfټyi@e;KSŸiHU+=/0ۀ?{biЍfFp(|_8 (\`Kcc?=4L4vgw>?࿱\`s玙"N_2%D .}4'[Т]e[KbMbXIBBDE=Y56"ggU[`VnomlC)g)"DN({D77Wl>r!J`r!t gIGM hHedoB-dŹ2(YqX@gT?&XyD)#<=FUU_Ρ( 8P#u_-L%f0e|pwpa:t \ $Oύ32_nɓ-YzOJ%cX_,@% "lt0{NF89-&2XkZǫ@!*#Ã[@{^Ïَ]=QE2@0Z `jDR}fzpZ22m"3˂ҚXj4hǿG8Q%Ae_`EQ3 G##TU # K_+Zߡh HOAz8alȾy?SA}>x8ckߝA#|B= (LL91 _|4m,^TK_܋ɇ/=s`z{\ӏzopr@RU$ݥeS46V.prVdl 4ܼ.p}k N{/hU8? 6>IQZ%t7w{{G6Aa<|+!{J2=Dud.lG?K7/$np+%A`_`}Y xt5'GD󿶎^?5%x`x9.oyL O#༃oXt߿666VPx' >JZ Q.1\31WbĐ4-Aws6דΒGsxlNr߾s?e{a) x;-[| :$2@)*RDXWOw5!He_zYϝ_W[\[OV\gh7RU?q~=yY[LvȔB;rX ? ZՎ,\&hJ;.pXa`hxܸ^/I 剧25D@a|R?z~ {U53(ۖZIPL^*d9@D.@Ǥ9C*I_IrJH8Ĺd gJqC|w!(JKSef;x@_(o!)Ĉ7 _ߋ0!CV= /pjr) O@ˣj R@>֒$N+;oa+($s1i_|/A"hsGK~D;xp.9x'.%5@`,Zko^Ǐ}C=W 80kB UMp˾2f-:⠬WF9P]oINrIV>LH"F yv:1B2=~G}qpSpн VyoLSGQgR^Y9?R`yrd_'ۘ3 .V3*Akh_g6^FH^ rQ^4ޱ^_ٯ^,U9xfϟ| hԱLstNᰵU>V9U _x\ߒ b 0:4Эn$p& rǁEy O޸~vQ1!B$ 2r`Və %TXx llK" j7?QZDYdZ' dҼ;`1xٟq'ڇ!_Ҡカo5_) '6A5bȁKU?G2 ɀ4{g@7:\k1ouͿ ={KKBu,ڕrَ?s.~PS6hEGa k!jIRAϩt(}/9#jTRZt1CCh_{6_i]L'tGJ~ ɐф?? *'^6|8F`ƍ.6k9h{#|}VdW؟ ^YI4W&wNP8m>/Vpў͕h"Fڿj ~R@)JpJ ީ6Җ@@U1f&dur(ckc K.%|5AZnؖzd㙅"0 jP W%0};seXǤHSS'G+BXRe5fuueέمR5N?ǪeS_ \TqpAסry <3 WDӒH<9EX⊓>5ep IDAT/ lF=ܘu'sNn7=ǀs>-hUV^&LjB;籶\Qh;GRR# @@akc+]|%|wֵ/T{ = Qw[b{ MyՆ+ Bե.~k_ljoeW_&̢-D>yf QKcz&4{,_^ʅe,kA?1AIpc"?R[};-Z-x祿spބܕ!2[Gei>_fKgv{e{ϧM۝Rgw_mFi {ڮ!$rŮ{ 2[xxG`D@;x"x@bvD\[ss wbJT-DW37ƹ.A4]. -K'yWA62(pm|{  K (sVk|-piAd35@I`N `U<- t4ZنG vD=(0t|F'"WEeO>[ݮDKjZp=X\Ҡ^[VрW-0l;eg@E,SP]nhߏ#񘄿 t3~tj@3jDŽ?_h_\3 _u; 0e<9_Sͬ_723b*KLW-Ht!GF˒.rkz?:<)>Z" .nY-A_#* VG\$\DonDqQv$)i6!6lJM'z#Y$.IH`p`Q28)ds*F#C#}[\`ۯ]Cg+WYkw#ɹ?G}@ɛ49zX_?DvίN(y {^T!x0Oml|iqՋ _ 2-ny:^@ p6I9,acs_{\*3GpE|{&92ˎ+TZu+a K\2ٽ?*p; ˋKVuַ4!3 86YL`Q&K:6\ ǧ;-=EK)w ʲ$MxBs:TuG |mՖ_:'gۄi?h_ Z  e9r) *^ۣ" ɻVcNN%VVZ}oo;@#š[ l.&mcAl(Hhg"_*y~m?  vQzj`TkMi-?!&Z'Q CZV$2V3̥)Vw4ɩ"9-lnM*[^7eIх!Y,uq0KeFo1= ,ƈggx 03R瓇wYsf|F3<3~/`GQ:eE]jS:kɒg#&)wu񟾳'dC` 3S i,Y-Qo0Pw0̫85sZ70{p-+ dyAi`7/N&hktz3KlQ@i/~Ÿ9H="xp,Kh{78"1Qc,0H8EOfp! JG7(qŸ/E7FfMF,g/|[ӂLLȴ# B YpTs#Boxiy"G޾u⬟ \!b4nES)g(q+6oxT &`q|IӗūO.]+啀NۣS _p48 Xkx@4B4I7Zb WOe FGbמ&I3޽{_?6bxPq>1?΄RtO>뎼Pm!M^,ړ&ۜO]P &P HNIpSRqz&FKRW^?;X9R /"]@4FNl^)/eͤf9Be8S@· 9+Zykmo߻^[@朋.;&(;ؑ@ e|,RGbWl1 5i,98p7aow@P$oou1VEhHLs$2Hn] e ]q!1͏10!%wE*s_+rc EE/Գiфo-? @4 sծp ?~?*z ??3>V@%*o>?ޡ5 zn T?aTB*(ퟍYFMH73@fM]NuTЃk, p (Qv]P-l-uo_C.+1^Cb sM{*eLm7 UfuA?(B ^: XBO~%KP\ݣH&x-嘫FDH:.w@D+WͿ1f8MU(*=|O}EQ]1jQZ>۪ω/#>z<{S̊0 qanq c" MoArY_VD6W@(–4OnFZĹh܁NHsr Y BS7nl5"tѥE-*iJYr@DQ vPdM YkjHcDT|E£[Kg!b`I%\e"W+\QR9-Rl̦2;eGFBW%ƣR:DWxlnay[o_m2gBVJ,>E?-v"l$?6͟p' ;LU`#/K3ch`}oeuA_[G_Z{XZR5Qv54f$c ,__?%xZ^7qN|D iH,D13e >JŸpf+K(¿ w܀?ς.?p}i1O;i (\&܊S22]r/Xrau3뉦XF)#LK:h7p¸ۅ' 3R d((f?8&0{A~e03}eB!iB$b`&l|+AƥDBH+h(G"Y?DIJh" R߄Ƌ5~+4'T/>kX[G ZڍkѮ͹hfTU@; ry} }p /WG U7OEՙQ[? h΁|'WiMLppK"32!`!{ĘHKJER, R ٍKd&+v$TS0"cc࿵>z}l~o9|aG,Уd'y -}1Ӝ<>y*3[L_??wp_&[RD| L{UmU^VV"Z55T9Ě[uS[3;Y-,sg],1.fFbFPM;DoHrZmxy ཻe}ALzBR*e$0 XVHQKVM#rr$8}')򳵹AoPZhuFiۇ83 ßQV|*Z Qh_g2_^ɵiў͍ TҞuZ\_"`l@``(Ob~sl⹉Iu :-cV#muIۖTAYp-HϱMP8dd;A|tK+}8GPBm_D`PF7%rI74"/{Th?)D/ z @ޙW' a "[T&)B* t(Ѵj>Ѩ?Oφ;zX9E@d9 Jhh@V746b4}hms#--\/^{J);jf|`Uaon[_(946Eڗm޴*ZRtIw4>`3vɒaPr'TPxZ*>,. qAv>"$VzP2ukR: .B u zR/ PPA'scfy>GYE_,bk0u W?sk~+@rxCGc&ciLL3_os)=uLaѕ33z"PAlm-q{71N[K@v؆01Q]pvMSnh:-}4E6*l0I6KM̼N!!^Uh|K{'`~ `XRAOS7"Tz^{K'>8X޺֝ R0^%B$-oa{GX^?Q)_k @1@P+DUWJ~sc ikIp^wӭ/]IA癭3ց3hLŹmv L?Ǜ+;/ 3QˏqrXk͇M*n§*yĴҢXݜ) - lppt'ÀMYZC0Q&3X(?첓i5ȻdjmكI\Q 8[սM #Pȧu0=8ʪ!DgFPt? QJkN76ֱ,_n~kI` V&A+&&^NP,uܜڌ@H&Uc?2bg?ĸsk K]TLߣq/?9Y(#bq?v_DOche+Bx|uUcUɎ@iDhAI Q}_~R߼~IPXV.ioQVസuji?-<05Ӽ"!HZjYT^޼GXYY`UU,cǕ2~l1u:RʠᄊmI_cdZ8RH5alDŽ~bdv M _**=Z?B1 ?CT ; IDATˀ, $EXHe gnZ΅m1TOܣYjQyJx1--QHhM>tw_reM:) < IП `Hk7qϙ_|ت1k C ^̓W_'Mhvセ-naey5E <98+h>~J`' FȉENSV}VB- $.hzl<\7ٜ 0 @w|$}O`0c8|es 9͂ hWPwp7`ly ČPrk]\Ѹ'bg'qhO-({E2l"$-Ѵl0lT4'?8ʶ6vR <£*ƝujayUP@lL+]UOP79"xQKZv- $pXΉe~dF/s\ y ?p ;0R%Yq>>F?1KkEݞ lb U9_9W<|eźT#eUiu??^K.{/QDR_3E,imtk.8B!z,s `{@(֝MvLvQ<¤<,q\ᱱl{k/f>l6(Uer- \8}У,SB}weߎe΃MY|?.9@c _l;*K} u k'on黀7掀 pm-@\]nvoڗ TX0dGGƨBfNeZyQ{pxtmCl,@)ϯL5k =|2OȩHhT#;HT .p8N%ki_pۯZ6\WKygcAӀ?G=| ( ^<OVpi50 Gß߳[5mFSQO$_N[ߕq Oجp.ڕ9`Rc?~[Ң2״gZ_u[);*R1(He{Qo' 5rǪ7[xGXڎǬ Ο5G@G<)y".I HN&{w6lXB(H{ed =6W1wuhoj1tE]L[*%E0kK>VFDZ&dg^~]qj'@OpVnK.8LJ9  pc?,?m:bz\OC䳜?i+|kৱ 5#Fe@_.bZ%Jr}c'1?e uTW{Ƙzh4.q}=S-#Wy;LtG? `$)`Fo c ???-l`븹_RYքT +"EI(t b)B61 dqTWG ^P3/NHз@W!4']dg6fE{6׮EqL.0*qK*ﺢGMP)p>RMHx*X?:ZK/Z`rk@WW_b3-I7Y M:Xb*! )03!F,9j%u{?pGgXYw8?*ב l-WpcC-/XHp%} ű X5Kbj*~A20W8}t,JX]uKjuWٜ\庻hRxrcE K}lhQXR_k}p憰Cf&&q˟ocn]q(l4hm pvtQ3.A?ۙaQz[wppv&EN ~yWIy2 (,B%W!Oo|ƂI#Uڮ~>aSϙ0z1P1} Aܾ9@pb8;/W ؼi|Cmg*O>[ȞK:6uD 4z3s09/NaOQlTcTSbK~Fe(_B+zdE89?>蟼Y7(ǛЄz%Yn O{$8C7zM\&@ Tw@Qxt޺AN++KXZD{4/VQTHJ ζ`[:? rN dc'r#fpk hgt_~|qU*~?]󟀿1\hsr]U;@FfjOӷ{|{t1Kq+T$hYcNnD GZU,:tx* yN-22 ^_첃xY>YCTo? Jty̸'p}S!P1>_mg w۳wL <_~)O;ݔ?~3)gR}M$ߊ~ĠߒdvF40}2clT᏾gbB Yx̤0f5=!bf8?Ds/ΌFs߻aZ9V+~)Y܂X.nϦD>1v_DDV0 h&?q9zv!Qao>Eg y`>_m1_TC os>}pNi@,j~qV0b.΃+8И1* vBvvPU;??~kVfD񈊥% ^V)߹` lp 9vd`ڜDwE?nףk'~Q j0AEtF SzzWb7Kcj¿>WvXAB0('(φzE8,*|^6zqJL7@[h*gF\i( ya)+vNE70t'xsGdX"+Y$վPzW1XJgWI#I\VsY d/  DK1bADDY_6TIܩ_Cßj5B¿l_GB; d??i4!şK_nX/|&,'߿hOբM5cŢ=]K @\0uG.ӞȞ;c5+납+`@`9?YSQx+Ts\SpzV{C򛍋-DT+YqQS#EB#b⡰('\byh^À86d'z-BmKdwBC3?8Y{"g2_}gW 7ע]M OZE 0Mk^5|jH/@' G!` 7;U"\*u>ooou5zMY B֟r]&,PZtc|<ɐ\ pK.>Sٰ(͟o$fs@=o Y!ҹTfA~$AЄ|q_%3CRLC@C+3OFSs@&oyV"DARKŸ'm罉 oKm.-㧥4 ϒuӍnSL}*`qZ V elDX7!-F ?}=Nv!\isdpsTA%\dCn]z, DHXeE w6Ƃzg @G. )qBL i)]7bx pe ;3B?Nfg??Y5g '|ߢ-ڳjs(4t>^b S#)~/7S*-q"Z Y*ĸ {96#Y ۆ`fZ z5lO s'5X5_,"N#!k%e`'wxw4Æp_] kk_~בR7kn24obCc=l_x|z'X^Pc Vdo9?7GrѮe>_mN\i2%wqԺB& ~[`Ņ3h5>?(x l%TX T!9+C]ܼò:|ȇ:Z3  z`ELvZ}P]-DVF9X=(fJy)S,-%soEJW3X!w-D04?w\=puKu #|UfQ2! 07s@UvOQ\m(E{6@ƨ6=>=Vf/WAY-8jXnޛ=Iwb?Ȭ$qAj)ju.5Ӛd&^]z $]$Vm!`0ue]yEzpܿȫ27]nW޿ 9|J"LԠXKTd./+jFUl᫣3e^`z?_~O ^QjbRB3{ ,蓹_|a|.ry4#,-[`A6e_A@'pɯy bs#E䟎@~<Б3Ox@8gS|q4tĜȟ-A.ԓQ4BT kb ]@K'ewqBTYlzw?)ė2E/ g_rcA:NB` ʬ CW( V <*' x~|5s"3OO'@?@pF'lXCC'R78kB'^LV % X)lXь-S! b #D=ڴR9̿X;3l[}4Na,A\';TļRbTѴ.  3.LDH AaA>c*s/h]ONleﻘR| c.5Imq>4s\Е7xAp_V ? #ʳe7kކ7F(ΡG6h/k pyU1e-5r'O04'j0qY"WB(vo#1qOeK# P"YƉEAm^pp^ٟ[;g$#<+?A51Zb/iXQȿ`--l3# Y"v˜2 0X# 7¡`&٬H!nbnAp0I-*\^Ma~a8i8?ݯ[y^$I+B9!'Y7np'wp`moW(x$ql&8neR  [@J!?8ŨAN o~"69?OM+Ldrw*Ijw彴{m[тR\f4ʝ X%tIZ[L0i-(M-G:RδJW)\\5x_Ai`_c

/p=Gz1^0B@uZRBP'dLXW`5H `o w/f'$?6\d|Ck"O3ox=֫ƥZKalO/8< 4R? #5?=Ud [3 Hkq~K! lkM,@w+X=hsX5wh T͒?JZ L >I>>/7I/T0r -; rOP8d`>Uhp!ml馭`V`g$0sZ7 :jJ\? IDAT)J`Wɹ3@-ͿkFs+ b_m"6/ hKiP` "%kM!s:% .B|1 ~?~|X_G_xK@A1 u-{!0*=<[E&Vp!c}?,\ q߱DgR[.J)z›c px0ӱ{ phYcl{Il@ⳛϽ[|+)yh-! }^uQ _ ^5d%4'gp0;ŸHp#Àu~@7ܓq(ڣᖪ]aH Jf,"AOO10qRw|6٤Et3G^!ɟ \{wk!kq|6`z#u@?}Bĝ2Z/|] rA~v9NBP )m,j3[@i)J M s U=' XxG;?ޫx=06*L DPJ9AzuMv8ߋ"!Tm*Z? Gİjqmѫ\6@=XOqz>Z9Fy}J3})Gw; oQ@r+܂ck9U(1~C m!,l(l`h4~Yv5QԺ/< * өAc8+Xc/N+7d&/)ABϖBLTlzFܧc GnQwW]a&A$~ %1SϑR8<>FU)bڴ?l *w# Xgڭk&pxA `snBw-  Lk](\ZNKĢO䗭 Ԉq Xˑ }~10SCbo GLݷJ@y k&Sl%?%5ȟUɟ9g;[Xv`SR@h_AXm_[BVjΑ@Gv)dIKF@~Im1O!pܑ ? iGЂ#vw {eg0 -&,ҡ$>yY^Rk!|0P@SIiOO/ g |V ,@Q@E^f Ir$n:%\j4{=5PrYIm041Lkx$ʡ] (౐U%Td!m|<(  ?^B{_N ~)KhXW)dZ˅~,8bXO/xhA˭  J #oDZo&_͎}޵scЀYie-ma-ZXDX&h+>{=Q H)|xUAU<ثK@1KqPb1.gW b@ȁI0l AlIV"Y—R7oY?@]p/>a4iE1.FM0;% s#'Ed,! Gre, o7X{ۀS/ /h/2m%"kx+m\ǜ9z(heAJ@#ua>zF1uI P_o o=kx{dTmk`Ю5~|'*){ę^w8e?Ѳ݃6ɟ;#h= מ-Upt|i$q4 Ƹ6yϒUJR#G1 /jfto[r\"!̰rnsH˚ϴovfG}}_F>y 1V V 1 9j쏧 cqx|%S]N5`p%3. SG4ܕ C}Q33QۀᏩ"#050ֹh<=U)ܦB7FgX 6Q;d7KXf~eҼ-Q@&׀%6fr8A\N0ޞ^6֙8>;"~ZLZ91RG=ߎIJcXRb;]+z{ "7x4tpt4J Q .|X2ԭ=1')\u ,ɿキ+Ay "坞}YZ Vٗ"b d(i6 @踼 VXc1{ 55|pzZo>>LJ_^bh(GA [mb 測0+r{ΜEJ .\T}_ V8>j8Џq+|ͿcgM翫Ϝp7" 1j^&x,/V@DAE $W"7\0)(e@)<(y ]^x;0m, UU4.G]k @#4DM #TԸm6lGdo 3V %hia&CJp_^y.TZC)xU@;$cH$ ?]. sӺ: %u [,c p/YK@K/% p'A> B,<)( ĕ(/B!d trZ+>q`4(E?i\Xxyڂ[D6@؀ _t]n-Q:"0Vȑ9zZC)54k4Ok#-GKL/h,bw|& woH^wυ$Y3Ua>B@\9 5V*صiM>'r絟G r }y8flF+XXc]" ue'g[?Ɵ~5W J 9EGaES&uv_+|Fy r+лZXB[J?K<9pRS5z=|c6)N.Ǝ$&xjlԶ oGa s:zF>X+˥ .-x Gnp{619^TֺY`umqt6Dm,'8|:@[SL珐a{%! (#-%l(p^ zz 9D,cqz>AP,r'K)}J__p__E$6DSn r+!@Q%'6V!|B@ʺAT0*(IiUׁ&Ŵ!<=WBM.7XHpL\0%.vSPe 8f_4 k| t5p857BcS+KopFOoO,f Vp؟Sn-(m@Z#8`j "CvK@hgg6ڠ6 ӺA~ gu2uM!jx7%]n'h+X)ˀ8<iK3!]:?(1$!?7e_k!9 [9l4 @| rtXifEf 9-yV _Xg+,A`I18<:dRSO`4}1g xL-N"Mpr=u{%z4A_khM8<~\jK8nd̄'q[L oNaHi/vK NVpo{s!}@j.O+ Y[qpdVD֙4Pڹ\!|!^xx%m Qäv!@E! Flf s6C14Ya! Íxrz ή?չ?Sƒ ʶe`vٍ Ǘ5~N0NPU ZmMfW$5U:Xa;Y@l1W#\BX0u"@.ܚH(09eS%t0/>^ ^:_k/Qnbc!\\ծ-8!Ay/A4^B ^xaB@yׂ<HVd^佁\ '3L v#Ӌ AF|a @n\̂S8հq*byb]i"|vt10]{c .Přq8;?,nD>23* ]=ĝfoRw3>;61`\eavnح GN4{WWA` pr1+/`2qtz{U9w^[/2)9?~ϙO0M~uژ@Z\Lc0L"&bR L&wML<ޞ% *X/|ql}ӊk`=KW8M]+av:pA A㧖Kژ@\&ZLk'O6 | :_78xF),'W+gW2%,QDI}'KNjL7`_3o[a݌W. "h+ >Xi<Ѯ6CpGB!ւ 0մx~A IDATa| <0Xo}eqB[o{x!Gh%w? _OgW\m [O\`Rp ñ iA't *{ϒBWc:7o=1~(Pa+-(TXFJKsG%@Et#` h*6KI<yKD-.kChp'GSs_PE%~9Ϯѫ*,'/1 9֍1|_SfX_7PP?ٿ`[ _{F+7{3؈!M"H#j &!@̸Pŏv ZȔȆrX_ P7\jJa0/a I$Ϯ} W_a45΂aN#]Ls?\AOGQȿ`@Of›`CVdpm!Y!M8ϟ5CL"#X*Pp/ _k| 'W8;Rq77dzs1 8>:x /1Xr~kp^\'9 D?kgE&i(_}p3N4"%̺nV,j$c3uZx_ Q7{je2Hh\xG OU<ܯU<ܤOO/0>?ä&Xxj.^b'@(hTȿNtD.ȨpFuk9 6 Ϛvl u!g]YdI6@#A">#fO 6x  ~O>`08ïQi\`4y3_7hlZe]?[%l {&^,it4-8oa@[s/5(7)_+gxbrZ h(x%֗UN;'v;P!Kpo|N aLz<$N0S{|z '84o2z?9;/Dl9T' 3*(_,$W[ lYA & \ӞIYBp`h DGVlCIr"rn|+`E@؇ǟb408|zk{ŧ_M'#T޲qt:hJ> c㩍 9y,buAAAБ(?w<gaI/Xhy6-Pre:Y5%{?? [,# nrϑBm } _pXk7޷^ë0 <<|{=|t8FPJ;?hcgMjȠE0yR8'   s~Tc?O&b+n+S湈iX B+މo yQpK`{B|P"B`&|(#O= {XiQ؝\N}koNo7^zX|u8|}OP0O0OAjcñ\:B;'V {m?0Kar?Y/YAZstNRWf]k$"m080D"59k(8}Fy+${Yl 4xc\ .Aɗ*%Mq/8(Rg#d1n l¥\Mql)l-Ywu ,+ rFK`Q@(mfTǙ +qO/qxzĪT/aK2\Bpxhw` F&J'ok bdU派,_Q!?r{ʸ{wZw.,V--z.AV+_&pVWY\ $q syyo? A)mHwMw[ Hm`KIQ+kܦ !ql-8hOX;n}ʙ AEc y"ˆ#\a_{I\?y ms Ik_Mϧh; Mc_m[ չ֮L`dŚ=hB@ xkᲰxQd/6\ !s`DMpukm/Um`rB3_mD njf L*|US6B<@$rw4yRC | 2/ߵsu X%~1v1oLjt\^PY,cf+X['8VcBgn\DKs+SAB~s<0P2м8*hkyΤcs̆uOfv  >ܲt[|_b pz(!i j yBOMp7/ǚ]-~ds!L vwu-xKqB\=`AmdП׾Syˀ|\`=AcDaI#\["~:6؋LɆB jpswmױ@XiWS3 @hRowV/ p[3 J:O, g/}>$s/Z郒1Ka.L@!g-N++w~m-DvY{HWJ.6cx-$鷞T㇟}΅ !J"&u-7{9An1?EWbO!f[|׳m㦹o$PI63 rx!YXtzN߹o!݄Ju>ǝ 9)'-=lFp=-&  [ց۪ie@Y!bYfoN@!> !n=b H7LiW}җ gU05߻$e[lP7 Vn.dAU@'40ݲ>F._M _y.7漲I,Cm n*yKmX*F (^N)m +2,Օv/߮Çn,[)ձ_R{V ^D{+"Dʙt-)`sB%^#w~r~Â#i K"oXEěa>g<삭 ]. KF  ,6uHa}KDqF3I-`@>cCրm 6F(3aX,Y6"!ms ^ ] ^FnHn V8t R^⑾IOfM7VQ#9cG&~~,+lrGV~ӛ0 Q79۞鬘 vK$C F``7Mw;hC~_Ob]_=`dn{S`7pg,:zX=N>ZYXj\%y=A -|m)qW_n#T1L ˳[Pp3rhTSMb" q`]Yː{/)kANWʯ_ @4cYds@΅lNJ!7p7!Í%驔+7 WJi70NކuH!TיmGwlJ)KDdA` Z Jk Ȃuđ,Bf|&uV-Blm\]:`Q!eɿօm) 6@@@RN7p8MbHJ7pF${I )HɾJ|'ta눾 @TYm'O>5vς`0 =wĘl D~R8 Kd1 XJ̠I `~gi![^TR5̋d ,= 3i6} "K# KT=?Ї o ]&[E]uRːix`?UP7{ 5H#+*]llbON 2`l `o,%/w ,+`\_KmjgFRџAi!XӀ*ɴƾA)NdWa+@AAA0i@fzpGl ˒SE}v D,/,ˋ#/ЪjUAUB8Sr =k`ɠij tNA{/{[̷bK)e`9WXg[A@EȻR_cVOsExuSWZ=L=P,)M /o 줆Ah0DW>mO ?2o9ˊmZll=d2H-]9&`oX4*hg4Q*`-`KV@AAA=y_6hzxx磧?jPÞOݜ0Zd30RקB^/?{/lcB_k,PU֫@-% |/Gx=;5ԓң?$ smNtaU%0s.+@˩`Oh$(Tj4ArufB$+n45Am&ƧLjQi2.V,lI߮.O-R?>|G'*oI@)4ZC 4,*hE+K`WgW0Acث' l]?qu.ߵ sY?I2 C{}ݫ._G6 fj vgϟ6EM3^3 `~"I+$n0sZBg@+p ``_\N!R((A`Aʟ CPU F]@جDPPPP=`)5 e```tzZd P_<>KDoIJu2^]ub vɀ"ϵY0sT;?^=@Pk9MaeIDa@+#ЛsV 2r,}yaavĦ^Co|x~?]VSkeNR׾LwN.ݯ6h1S)@'mH9`sXH?,Rakc_$ۺ?mhׂUg/?!(_YL,*ՇVfҠz bwst] g_r{lH(N!X(8vA)DF"(W?TR/I3}/ڊS-K89Af) =*%I>yG A V|Tp'MwXmt7 ͈( Qn$DkvXA]$MKhR/CII %XI߭ Bm_$6Y2n.Ǚ9vkY;cǚ0>,lж 5߳A? 5hf K5T{ wy<յmBN \ YZʭOjGW|/^aU'}k`zЃUЕFc+(]C5@UUPUj g9HnMx-Jmqy۶3DZ@u4Zǁ/s-A3 +G608[%.>0m"U ~TDRm֤-}@`N.I| IDATSPp |ZN\5.P4ui 45W|ft;,m*"uQU2˩E 9?@|&z_oRTa_Aի0B׃"]yVX}˓|>KmM]%'4k9gl9c>Os/9(tCB,%Nu)QnT{mowa<\KCEXg>+BƺPc@h0݌05:ccF`3Xr+#]*HG庮>% ֥a#yn;Fί;ǮsBup?}! _jy簈V  uC%-R]eޥ/n^];"%eHnmw~ˮ/((((w 0~gGƫ]$t퓶Yt%b^Lv]D /slS, ˵wS" ,uc4o6b jȺe1XB[/nzn[EL0ᢾ_PPP|cK} [wvwEXb{W?|ü>!EfeoZ ݲگ"d,XPPPPpJ?X=um dUۮcαpPPPP[(Eq7gm˦vN&o _b c6i)B.eݳW/]PPPPM ygVmQPPPPP {Gwm꿭 l5K image/svg+xml Jakub Steiner http://jimmac.musichall.cz OPML opml xml feed agregated image/svg+xml gnome-todo-3.18.1/data/icons/hicolor/symbolic/000077500000000000000000000000001260744630400211665ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/symbolic/apps/000077500000000000000000000000001260744630400221315ustar00rootroot00000000000000gnome-todo-3.18.1/data/icons/hicolor/symbolic/apps/gnome-todo-symbolic.svg000066400000000000000000000053121260744630400265420ustar00rootroot00000000000000 image/svg+xml Gnome Symbolic Icon Theme Gnome Symbolic Icon Theme gnome-todo-3.18.1/data/org.gnome.Todo.desktop.in.in000066400000000000000000000003641260744630400220020ustar00rootroot00000000000000[Desktop Entry] _Name=Todo _Comment=Manage your personal tasks Exec=gnome-todo Icon=gnome-todo Terminal=false Type=Application StartupNotify=true OnlyShowIn=GNOME; Categories=GNOME;GTK;Utility; _Keywords=Task;Productivity; DBusActivatable=true gnome-todo-3.18.1/data/org.gnome.Todo.service.in000066400000000000000000000001241260744630400213560ustar00rootroot00000000000000[D-BUS Service] Name=org.gnome.Todo Exec=@bindir@/gnome-todo --gapplication-service gnome-todo-3.18.1/data/org.gnome.todo.gschema.xml000066400000000000000000000024771260744630400215740ustar00rootroot00000000000000 true

Window maximized Window maximized state [768, 600] Window size Window size (width and height). [] Window position Window position (x and y). true First run of GNOME To Do Whether it's the first run of GNOME To Do (to run the initial setup) or not "local" Default location to add new lists to The identifier of the default location to add new lists to gnome-todo-3.18.1/data/theme/000077500000000000000000000000001260744630400156755ustar00rootroot00000000000000gnome-todo-3.18.1/data/theme/Adwaita.css000066400000000000000000000026771260744630400177750ustar00rootroot00000000000000.transparent { background-color: transparent; } GtdTaskRow { border-bottom: 1px solid alpha(@borders, 0.4); } GtdTaskListItem.thumbnail { margin-left: 10px; margin-right: 10px; margin-top: 8px; margin-bottom: 10px; font-size: 9px; } GtdTaskListItem { background-color: transparent; } GtdTaskListItem, GtdTaskListView GtdTaskRow { color: #000003; } GtdTaskListView GtdTaskRow:hover { background-color: alpha(#ededed, 0.4); } GtdTaskListItem.dark, GtdTaskListView.dark GtdTaskRow { color: #eeeeec; } GtdTaskListView.dark GtdTaskRow:hover { background-color: alpha(#393f3f, 0.4); } GtdArrowFrame { border-bottom-width: 0px; border-top-width: 0px; background-color: @theme_bg_color; border-color: @borders; } GtdArrowFrame:dir(ltr) { border-right-width: 0px; } GtdArrowFrame:dir(rtl) { border-left-width: 0px; } GtkLabel.main-title { font-size: 28px; } /* priority icons */ GtdTaskRow { background-color: @transparent; } GtdTaskRow.priority-low { background-color: alpha(#3465a4, 0.2); } GtdTaskRow.priority-low:hover { background-color: alpha(#3465a4, 0.4); } GtdTaskRow.priority-medium { background-color: alpha(#f57900, 0.2); } GtdTaskRow.priority-medium:hover { background-color: alpha(#f57900, 0.4); } GtdTaskRow.priority-hight { background-color: alpha(#cc0000, 0.2); } GtdTaskRow.priority-hight:hover { background-color: alpha(#cc0000, 0.4); } gnome-todo-3.18.1/data/theme/bg.png000066400000000000000000000025661260744630400170040ustar00rootroot00000000000000PNG  IHDRRlsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<$tEXtAuthorGeorges Basile Stavracas NetoaLtEXtCreation TimeApril 29, 2015~6DtEXtCopyrightCC Attribution http://creativecommons.org/licenses/by/3.0/KIDATxQnFKK)]|Rg%]+}Hx@6"q!Ou\GC6ð8F ܯ'1pS:mn_O.z[;oIvہ{χ9:P8v|e{VL)T^O㟛6=|^{e/>ٻ\nznOpg>kRޭЇCrϿ;Pu{Fz|ip߿?WEׁȶgO}-s~-+@nWv% ې+{ga0 ,`(MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@4MD@̃xCg`Ts~VaDs6[DWhj `H=^_ٖ9X.\6+j%yΧ@ t1u>u;Uc={65}-ϥއf¨`gk z|nfr݆#Z?Y~ ~Xߧnno-Cmz{0#`^߷퐷Ab԰=ϰ}.b>>0Ž7C㿿ZIENDB`gnome-todo-3.18.1/data/theme/bg.svg000066400000000000000000000116421260744630400170120ustar00rootroot00000000000000 image/svg+xml April 29, 2015 Georges Basile Stavracas Neto Copyleft gnome-todo-3.18.1/data/todo.gresource.xml000066400000000000000000000023141260744630400202570ustar00rootroot00000000000000 gtk/menus.ui ui/edit-pane.ui ui/initial-setup.ui ui/list-view.ui ui/notification.ui ui/storage-dialog.ui ui/storage-popover.ui ui/storage-row.ui ui/storage-selector.ui ui/task-list-item.ui ui/task-row.ui ui/window.ui theme/Adwaita.css theme/bg.png theme/bg.svg gnome-todo-3.18.1/data/ui/000077500000000000000000000000001260744630400152105ustar00rootroot00000000000000gnome-todo-3.18.1/data/ui/edit-pane.ui000066400000000000000000000357551260744630400174340ustar00rootroot00000000000000 False 12 bottom True False vertical 12 True True True False True 0 None True True False False True 1 gnome-todo-3.18.1/data/ui/initial-setup.ui000066400000000000000000000101761260744630400203430ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/list-view.ui000066400000000000000000000255031260744630400174770ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/notification.ui000066400000000000000000000110511260744630400202330ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/storage-dialog.ui000066400000000000000000000040601260744630400204500ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/storage-popover.ui000066400000000000000000000210631260744630400207050ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/storage-row.ui000066400000000000000000000057741260744630400200350ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/storage-selector.ui000066400000000000000000000202311260744630400210270ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/task-list-item.ui000066400000000000000000000105761260744630400204270ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/task-row.ui000066400000000000000000000304471260744630400173260ustar00rootroot00000000000000 gnome-todo-3.18.1/data/ui/window.ui000066400000000000000000000434001260744630400170570ustar00rootroot00000000000000 False bottom False True GtdWindow False 12 True False 12 12 True False Name of the task list 0 0 0 2 True True 0 1 Rename True True True 1 1 gnome-todo-3.18.1/git.mk000066400000000000000000000215011260744630400147750ustar00rootroot00000000000000# git.mk # # Copyright 2009, Red Hat, Inc. # Copyright 2010,2011,2012,2013 Behdad Esfahbod # Written by Behdad Esfahbod # # Copying and distribution of this file, with or without modification, # is permitted in any medium without royalty provided the copyright # notice and this notice are preserved. # # The latest version of this file can be downloaded from: # https://raw.github.com/behdad/git.mk/master/git.mk # Bugs, etc, should be reported upstream at: # https://github.com/behdad/git.mk # # To use in your project, import this file in your git repo's toplevel, # then do "make -f git.mk". This modifies all Makefile.am files in # your project to -include git.mk. Remember to add that line to new # Makefile.am files you create in your project, or just rerun the # "make -f git.mk". # # This enables automatic .gitignore generation. If you need to ignore # more files, add them to the GITIGNOREFILES variable in your Makefile.am. # But think twice before doing that. If a file has to be in .gitignore, # chances are very high that it's a generated file and should be in one # of MOSTLYCLEANFILES, CLEANFILES, DISTCLEANFILES, or MAINTAINERCLEANFILES. # # The only case that you need to manually add a file to GITIGNOREFILES is # when remove files in one of mostlyclean-local, clean-local, distclean-local, # or maintainer-clean-local make targets. # # Note that for files like editor backup, etc, there are better places to # ignore them. See "man gitignore". # # If "make maintainer-clean" removes the files but they are not recognized # by this script (that is, if "git status" shows untracked files still), send # me the output of "git status" as well as your Makefile.am and Makefile for # the directories involved and I'll diagnose. # # For a list of toplevel files that should be in MAINTAINERCLEANFILES, see # Makefile.am.sample in the git.mk git repo. # # Don't EXTRA_DIST this file. It is supposed to only live in git clones, # not tarballs. It serves no useful purpose in tarballs and clutters the # build dir. # # This file knows how to handle autoconf, automake, libtool, gtk-doc, # gnome-doc-utils, yelp.m4, mallard, intltool, gsettings, dejagnu. # # This makefile provides the following targets: # # - all: "make all" will build all gitignore files. # - gitignore: makes all gitignore files in the current dir and subdirs. # - .gitignore: make gitignore file for the current dir. # - gitignore-recurse: makes all gitignore files in the subdirs. # # KNOWN ISSUES: # # - Recursive configure doesn't work as $(top_srcdir)/git.mk inside the # submodule doesn't find us. If you have configure.{in,ac} files in # subdirs, add a proxy git.mk file in those dirs that simply does: # "include $(top_srcdir)/../git.mk". Add more ..'s to your taste. # And add those files to git. See vte/gnome-pty-helper/git.mk for # example. # ############################################################################### # Variables user modules may want to add to toplevel MAINTAINERCLEANFILES: ############################################################################### # # Most autotools-using modules should be fine including this variable in their # toplevel MAINTAINERCLEANFILES: GITIGNORE_MAINTAINERCLEANFILES_TOPLEVEL = \ $(srcdir)/aclocal.m4 \ $(srcdir)/ar-lib \ $(srcdir)/autoscan.log \ $(srcdir)/compile \ $(srcdir)/config.guess \ $(srcdir)/config.h.in \ $(srcdir)/config.sub \ $(srcdir)/configure.scan \ $(srcdir)/depcomp \ $(srcdir)/install-sh \ $(srcdir)/ltmain.sh \ $(srcdir)/missing \ $(srcdir)/mkinstalldirs # # All modules should also be fine including the following variable, which # removes automake-generated Makefile.in files: GITIGNORE_MAINTAINERCLEANFILES_MAKEFILE_IN = \ `$(AUTOCONF) --trace 'AC_CONFIG_FILES:$$1' $(srcdir)/configure.ac | \ while read f; do \ case $$f in Makefile|*/Makefile) \ test -f "$(srcdir)/$$f.am" && echo "$(srcdir)/$$f.in";; esac; \ done` # # Modules that use libtool /and/ use AC_CONFIG_MACRO_DIR([m4]) may also # include this: GITIGNORE_MAINTAINERCLEANFILES_M4_LIBTOOL = \ $(srcdir)/m4/libtool.m4 \ $(srcdir)/m4/ltoptions.m4 \ $(srcdir)/m4/ltsugar.m4 \ $(srcdir)/m4/ltversion.m4 \ $(srcdir)/m4/lt~obsolete.m4 ############################################################################### # Default rule is to install ourselves in all Makefile.am files: ############################################################################### git-all: git-mk-install git-mk-install: @echo "Installing git makefile" @any_failed=; \ find "`test -z "$(top_srcdir)" && echo . || echo "$(top_srcdir)"`" -name Makefile.am | while read x; do \ if grep 'include .*/git.mk' $$x >/dev/null; then \ echo "$$x already includes git.mk"; \ else \ failed=; \ echo "Updating $$x"; \ { cat $$x; \ echo ''; \ echo '-include $$(top_srcdir)/git.mk'; \ } > $$x.tmp || failed=1; \ if test x$$failed = x; then \ mv $$x.tmp $$x || failed=1; \ fi; \ if test x$$failed = x; then : else \ echo "Failed updating $$x"; >&2 \ any_failed=1; \ fi; \ fi; done; test -z "$$any_failed" .PHONY: git-all git-mk-install ############################################################################### # Actual .gitignore generation: ############################################################################### $(srcdir)/.gitignore: Makefile.am $(top_srcdir)/git.mk @echo "git.mk: Generating $@" @{ \ if test "x$(DOC_MODULE)" = x -o "x$(DOC_MAIN_SGML_FILE)" = x; then :; else \ for x in \ $(DOC_MODULE)-decl-list.txt \ $(DOC_MODULE)-decl.txt \ tmpl/$(DOC_MODULE)-unused.sgml \ "tmpl/*.bak" \ xml html \ ; do echo "/$$x"; done; \ fi; \ if test "x$(DOC_MODULE)$(DOC_ID)" = x -o "x$(DOC_LINGUAS)" = x; then :; else \ for lc in $(DOC_LINGUAS); do \ for x in \ $(if $(DOC_MODULE),$(DOC_MODULE).xml) \ $(DOC_PAGES) \ $(DOC_INCLUDES) \ ; do echo "/$$lc/$$x"; done; \ done; \ for x in \ $(_DOC_OMF_ALL) \ $(_DOC_DSK_ALL) \ $(_DOC_HTML_ALL) \ $(_DOC_MOFILES) \ $(DOC_H_FILE) \ "*/.xml2po.mo" \ "*/*.omf.out" \ ; do echo /$$x; done; \ fi; \ if test "x$(HELP_ID)" = x -o "x$(HELP_LINGUAS)" = x; then :; else \ for lc in $(HELP_LINGUAS); do \ for x in \ $(HELP_FILES) \ "$$lc.stamp" \ "$$lc.mo" \ ; do echo "/$$lc/$$x"; done; \ done; \ fi; \ if test "x$(gsettings_SCHEMAS)" = x; then :; else \ for x in \ $(gsettings_SCHEMAS:.xml=.valid) \ $(gsettings__enum_file) \ ; do echo "/$$x"; done; \ fi; \ if test -f $(srcdir)/po/Makefile.in.in; then \ for x in \ po/Makefile.in.in \ po/Makefile.in \ po/Makefile \ po/POTFILES \ po/stamp-it \ po/.intltool-merge-cache \ "po/*.gmo" \ "po/*.mo" \ po/$(GETTEXT_PACKAGE).pot \ intltool-extract.in \ intltool-merge.in \ intltool-update.in \ ; do echo "/$$x"; done; \ fi; \ if test -f $(srcdir)/configure; then \ for x in \ autom4te.cache \ configure \ config.h \ stamp-h1 \ libtool \ config.lt \ ; do echo "/$$x"; done; \ fi; \ if test "x$(DEJATOOL)" = x; then :; else \ for x in \ $(DEJATOOL) \ ; do echo "/$$x.sum"; echo "/$$x.log"; done; \ echo /site.exp; \ fi; \ if test "x$(am__dirstamp)" = x; then :; else \ echo "$(am__dirstamp)"; \ fi; \ if test "x$(LTCOMPILE)" = x; then :; else \ for x in \ "*.lo" \ ".libs" "_libs" \ ; do echo "$$x"; done; \ fi; \ for x in \ .gitignore \ $(GITIGNOREFILES) \ $(CLEANFILES) \ $(PROGRAMS) $(check_PROGRAMS) $(EXTRA_PROGRAMS) \ $(LIBRARIES) $(check_LIBRARIES) $(EXTRA_LIBRARIES) \ $(LTLIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LTLIBRARIES) \ so_locations \ $(MOSTLYCLEANFILES) \ "*.$(OBJEXT)" \ $(DISTCLEANFILES) \ $(am__CONFIG_DISTCLEAN_FILES) \ $(CONFIG_CLEAN_FILES) \ TAGS ID GTAGS GRTAGS GSYMS GPATH tags \ "*.tab.c" \ $(MAINTAINERCLEANFILES) \ $(BUILT_SOURCES) \ $(DEPDIR) \ Makefile \ Makefile.in \ "*.orig" \ "*.rej" \ "*.bak" \ "*~" \ ".*.sw[nop]" \ ".dirstamp" \ ; do echo "/$$x"; done; \ } | \ sed "s@^/`echo "$(srcdir)" | sed 's/\(.\)/[\1]/g'`/@/@" | \ sed 's@/[.]/@/@g' | \ LC_ALL=C sort | uniq > $@.tmp && \ mv $@.tmp $@; all: $(srcdir)/.gitignore gitignore-recurse-maybe gitignore: $(srcdir)/.gitignore gitignore-recurse gitignore-recurse-maybe: @for subdir in $(DIST_SUBDIRS); do \ case " $(SUBDIRS) " in \ *" $$subdir "*) :;; \ *) test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse-maybe || echo "Skipping $$subdir");; \ esac; \ done gitignore-recurse: @for subdir in $(DIST_SUBDIRS); do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) .gitignore gitignore-recurse || echo "Skipping $$subdir"); \ done maintainer-clean: gitignore-clean gitignore-clean: -rm -f $(srcdir)/.gitignore .PHONY: gitignore-clean gitignore gitignore-recurse gitignore-recurse-maybe gnome-todo-3.18.1/gnome-todo.doap000066400000000000000000000020401260744630400165730ustar00rootroot00000000000000 GNOME To Do Task manager for GNOME Personal task manager for GNOME C Georges Basile Stavracas Neto gbsneto gnome-todo-3.18.1/po/000077500000000000000000000000001260744630400143005ustar00rootroot00000000000000gnome-todo-3.18.1/po/ChangeLog000066400000000000000000000000001260744630400160400ustar00rootroot00000000000000gnome-todo-3.18.1/po/LINGUAS000066400000000000000000000002431260744630400153240ustar00rootroot00000000000000# please keep this list sorted alphabetically # ar ca cs da de el eo es eu fa fi fr fur gl he hu id it kk ko lt nb pa pl pt pt_BR sk sl sr sr@latin sv tr vi zh_TW gnome-todo-3.18.1/po/POTFILES.in000066400000000000000000000022421260744630400160550ustar00rootroot00000000000000# List of source files containing translatable strings. data/appdata/org.gnome.Todo.appdata.xml.in [type: gettext/glade]data/gtk/menus.ui data/org.gnome.Todo.desktop.in.in data/org.gnome.todo.gschema.xml [type: gettext/glade]data/ui/edit-pane.ui [type: gettext/glade]data/ui/initial-setup.ui [type: gettext/glade]data/ui/list-view.ui [type: gettext/glade]data/ui/storage-dialog.ui [type: gettext/glade]data/ui/storage-popover.ui [type: gettext/glade]data/ui/storage-row.ui [type: gettext/glade]data/ui/storage-selector.ui [type: gettext/glade]data/ui/task-row.ui [type: gettext/glade]data/ui/window.ui [type: gettext/glade]data/ui/notification.ui src/gtd-application.c src/gtd-edit-pane.c src/gtd-initial-setup-window.c src/gtd-manager.c src/gtd-object.c src/gtd-task.c src/gtd-task-list.c src/gtd-task-list-item.c src/gtd-task-list-view.c src/gtd-task-row.c src/gtd-window.c src/main.c src/storage/gtd-storage.c src/storage/gtd-storage-dialog.c src/storage/gtd-storage-goa.c src/storage/gtd-storage-local.c src/storage/gtd-storage-popover.c src/storage/gtd-storage-row.c src/storage/gtd-storage-selector.c src/notification/gtd-notification.c src/notification/gtd-notification-widget.c gnome-todo-3.18.1/po/POTFILES.skip000066400000000000000000000001021260744630400164060ustar00rootroot00000000000000sub/data/org.gnome.Todo.desktop.in data/org.gnome.Todo.desktop.in gnome-todo-3.18.1/po/ar.po000066400000000000000000000267231260744630400152540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Khaled Hosny , 2015. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-23 22:35+0200\n" "PO-Revision-Date: 2015-09-23 22:34+0200\n" "Last-Translator: Khaled Hosny \n" "Language-Team: Arabic \n" "Language: ar\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" "X-Generator: Virtaal 0.7.1\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "المهام" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "مدير مهام لجنوم" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "مدير مهام جنوم هو تطبيق بسيط مصمم للتكامل مع جنوم" #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "قائمة جديدة…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "غيّر مكان الحفظ المبدئي…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_عن" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "أ_نهِ" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "امسح المهام المُنجزة…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "أدر مهامك الشخصية" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;Productivity;مهمة;مهام;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "النافذة مُكبّرة" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "حالة تكبير النافذة" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "حجم النافذة" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "حجم النافذة (العرض و الارتفاع)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "موضع النافذة" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "موضع النافذة (س و ص)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "أول تشغيل لمهام جنوم" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "ما إذا كان هذا أول تشغيل لهام جنوم (لتشغيل الإعداد الأولي)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "المكان المبدئي لإضافة القوائم الجديدة" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "معرّف المكان المبدئي لإضافة القوائم الجديدة" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "التفاصيل" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "ملاحظات" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "الموعد" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "الأولويّة" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "بلا أولوية" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "منخفضة" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "متوسطة" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "مرتفعة" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "احذف" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "مرحبًا" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "لِج إلى حسابات الإنترنت للوصول إلى مهامك" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "ألغِ" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "تمّ" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "لم يعثر على أي مهام" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "يمكنك إضافة مهام إلى القوائم في منظور القوائم" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "أظهر أو أخفِ المهام المنجزة" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "اختر مكان الحفظ المبدئي لإنشاء المهام:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "مكان الحفظ المبدئي" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "أنشئ" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "اسم القائمة" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "اختر مكان الحفظ" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "معطل" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "انقر لإضافة حساب جوجل جديد" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "جوجل" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "انقر لإضافة حساب ownCloud جديد" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "انقر لإضافة حساب ميكروسوفت إكستشينج جديد" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "ميكروسوفت إكستشينج" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "أو يمكنك حفظ المهام على هذا الحاسوب" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "مهمة جديدة…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "القوائم" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "اليوم" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "مُجدوَل" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "غيّر الاسم" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "قائمة جديدة" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "اسم قائمة المهام" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "حقوق النشر © %Id لمؤلفي «المهام»" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "حقوق النشر © %Id–%Id لمؤلفي «المهام»" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "المهام" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "فريق عربآيز للترجمة http://www.arabeyes.org:\n" "خالد حسني " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "عُطل في تحميل ملف الطرز المتراصة" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "لم يحدد أي تاريخ" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "عُطل في تحميل حسابات إنترنت جنوم" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "عُطل في حفظ قائمة المهام" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "عُطل في حذف قائمة المهام" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "عُطل في إنشاء قائمة المهام" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "عُطل في إنشاء المهمة" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "عُطل في حذف المهمة" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "عُطل في تحديث المهمة" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "فشل السؤال عن الاعتماديات" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "فشل السؤال عن اعتماديات" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "فشل في الاستيثاق" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "عُطل في جلب المهام من القائمة" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "تم توصيل قائمة المهام بنجاح" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "فشل الاتصال بمصدر قائمة المهام" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "تخطى قائمة مهام سبق تحميلها" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "عطل في تحميل مدير المهام" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "لا مهام" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "أزيلت المهمة %s" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "تراجع" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "غدًا" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "أمس" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "أأحذف قوائم المهام المُحددة؟" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "بمجرد إزالة قوائم المهام لن يمكن استعادتها." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "أزل قوائم المهام" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "يحدد لونًا جديدًا لقائمة المهام" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "يحمل قائمة مهامك…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "انقر على قائمة مهام لاختيارها" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "عُطل في إنشاء قائمة مهام جديدة" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "على هذا الحاسوب" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "محليًا" gnome-todo-3.18.1/po/ca.po000066400000000000000000000520241260744630400152260ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Jordi Mas i Hernàndez , 2015 # # To Do -> Per fer # Backend -> dorsal # msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-09 07:21+0200\n" "PO-Revision-Date: 2015-07-26 15:08+0100\n" "Last-Translator: Jordi Mas \n" "Language-Team: \n" "Language: ca\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.7.5\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Per fer" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Un gestor de tasques per fer per al GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "El GNOME Per fer és una aplicació de gestió de tasques simple dissenyada per " "a integrar-se amb el GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Llista nova…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Canvia la ubicació per defecte de l'emmagatzematge…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Quant a" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Surt" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Neteja les tasques completades..." #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gestioneu les tasques personals" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tasques;Productivitat;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Finestra maximitzada" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Estat de la finestra maximitzada" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Mida de la finestra" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Mida de la finestra (amplada i alçada)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posició de la finestra" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posició de la finestra (x i y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Primera execució del GNOME Per fer" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Si és el primer cop que s'executa el GNOME Per fer (per a executar la " "configuració inicial) o no" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Ubicació per defecte a afegir a les llistes noves" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "L'identificador de la ubicació per defecte on s'han d'afegir les llistes " "noves" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detalls" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notes" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Data de venciment" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritat" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Cap" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baixa" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Mitjà" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Suprimeix" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Benvinguts" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Entreu als comptes en línia per accedir a les tasques" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Cancel·la" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Fet" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "No s'han trobat tasques" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Podeu afegir tasques a les llistes en la vista Llistes" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostra o amaga les tasques completades" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Seleccioneu la ubicació de l'emmagatzematge per defecte per crear llistes de " "tasques:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Ubicació d'emmagatzematge per defecte" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Crea" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nom de la llista" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Seleccioneu una ubicació de l'emmagatzematge" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Desactiva" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Feu clic per afegir un nou compte de Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Feu clic per afegir un compte nou de l'ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Feu clic per a afegir un compte nou del Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "O podeu simplement emmagatzemar les tasques en aquest PC" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Tasca nova…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Llistes" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Avui" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planificat" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Canvia el nom" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Llista nova" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nom de la llista de tasques" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d els autors del Per fer" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d els autors del Per fer" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Per fer" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Jordi Mas i Hernàndez , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "S'ha produït un error carregant el CSS des del recurs" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "No s'ha establert cap data" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "S'ha produït un error carregant els comptes en línia del GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "S'ha produït un error desant la llista de tasques" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "S'ha produït un error en suprimir la llista de tasques" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "S'ha produït un error en crear una llista de tasques" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "S'ha produït un error en crear la tasca" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "S'ha produït un error en suprimir la tasca" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "S'ha produït un error en actualitzar la tasca" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "S'ha produït un error en demanar les credencials" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "S'ha produït un error en demanar les credencials per" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Ha fallat l'autenticació" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "S'ha produït un error en recuperar les tasques de la llista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "S'ha connectat la font de la llista de tasques" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "S'ha produït un error en connectar a la font de la llista de tasques" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "S'està ometent la llista de tasques ja carregada " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "S'ha produït un error en carregar el gestor de tasques" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Sense tasques" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "S'ha suprimit la tasca %s" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Desfés" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Demà" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Ahir" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Voleu suprimir les llistes de tasques seleccionades?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Un cop suprimides, les llistes de tasques no es poden recuperar." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Suprimeix la llista de tasques" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "S'està establint el nou color per la llista de tasques" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "S'està carregat la llista de tasques…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Fes clic a la tasca per seleccionar-la" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "S'ha produït un error en crear una llista nova de tasques" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "En aquest ordinador" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "El gestor d'aquesta aplicació" #~ msgid "The manager of the application" #~ msgstr "El gestor de l'aplicació" #~ msgid "Task being edited" #~ msgstr "La tasca que s'està editant" #~ msgid "The task that is actually being edited" #~ msgstr "La tasca que s'està editant ara mateix" #~ msgid "Manager of the task" #~ msgstr "El gestor de la tasca" #~ msgid "The singleton manager instance of the task" #~ msgstr "La instància única del gestor de la tasca" #~ msgid "The online accounts client of the manager" #~ msgstr "El client de comptes en línia del gestor" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "El client de comptes en línia del GNOME de només de lectura carregat i " #~ "propietat del gestor" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Si el client de comptes en línia està preparat" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Si el client de comptes en línia del GNOME de només de lectura està " #~ "carregat" #~ msgid "The source registry of the manager" #~ msgstr "El registre de la font del gestor" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "El registre de la font de només lectura carregat i propietat del gestor" #~ msgid "Unique identifier of the object" #~ msgstr "L'identificador únic de l'objecte" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "L'identificador únic de l'objecte definit pel dorsal" #~ msgid "Ready state of the object" #~ msgstr "Estat preparat de l'objecte" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Si l'objecte està marcat com preparat o no" #~ msgid "Whether the task is completed or not" #~ msgstr "Si la tasca està completada o no" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Si la tasca està marcada com a completada per l'usuari" #~ msgid "Component of the task" #~ msgstr "Component de la tasca" #~ msgid "The #ECalComponent this task handles." #~ msgstr "El #ECalComponent gestionat per aquesta tasca." #~ msgid "Description of the task" #~ msgstr "Descripció de la tasca" #~ msgid "Optional string describing the task" #~ msgstr "Comentari descriptiu opcional de la tasca" #~ msgid "End date of the task" #~ msgstr "Data de finalització de la tasca" #~ msgid "The day the task is supposed to be completed" #~ msgstr "El dia que se suposa que la tasca estarà completada" #~ msgid "List of the task" #~ msgstr "Llista de la tasca" #~ msgid "The list that owns this task" #~ msgstr "Llista a la qual pertany aquesta tasca" #~ msgid "Priority of the task" #~ msgstr "Prioritat de la tasca" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "La prioritat de la tasca. 0 vol dir que no s'ha establert cap prioritat i " #~ "que les tasques s'ordenaran alfabèticament." #~ msgid "Title of the task" #~ msgstr "Títol de la tasca" #~ msgid "The title of the task" #~ msgstr "El títol de la tasca" #~ msgid "Color of the list" #~ msgstr "Color de la llista" #~ msgid "The color of the list" #~ msgstr "El color de la llista" #~ msgid "Whether the task list is removable" #~ msgstr "Si aquesta llista de tasques es pot suprimir" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Si aquesta llista de tasques es pot suprimir del sistema" #~ msgid "Name of the list" #~ msgstr "Nom de la llista" #~ msgid "The name of the list" #~ msgstr "El nom de la llista" #~ msgid "Data origin of the list" #~ msgstr "Origen de les dades de la llista" #~ msgid "The data origin location of the list" #~ msgstr "La ubicació d'origen de les dades de la llista" #~ msgid "Source of the list" #~ msgstr "Font de la llista" #~ msgid "The parent source that handles the list" #~ msgstr "La font pare que gestiona la llista" #~ msgid "Mode of this item" #~ msgstr "Mode d'aquest element" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "El mode d'aquest element, heretat del mode del pare" #~ msgid "Whether the task list is selected" #~ msgstr "Si la tasca de tasques està seleccionada" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Si la llista de tasques està seleccionada en mode de selecció" #~ msgid "Task list of the item" #~ msgstr "La llista de tasques de l'element" #~ msgid "The task list associated with this item" #~ msgstr "La llista de tasques associada amb aquest element" #~ msgid "Manager of this window's application" #~ msgstr "Gestor de la finestra d'aquesta aplicació" #~ msgid "The manager of the window's application" #~ msgstr "El gestor de la finestra d'aquesta aplicació" #~ msgid "Whether the list is readonly" #~ msgstr "Si aquesta llista és de només lectura" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Si la llista és només de lectura, és a dir, si es mostra o no la fila de " #~ "la tasca nova" #~ msgid "Whether task rows show the list name" #~ msgstr "Si les files de la tasca mostren el nom de la llista" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Si les files de la tasca mostren el nom de la llista al final de la fila" #~ msgid "Whether completed tasks are shown" #~ msgstr "Si les tasques completades es mostren" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Si les tasques completades són visibles o no" #~ msgid "If the row is used to add a new task" #~ msgstr "Si s'utilitza la fila per afegir una tasca nova" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Indica si s'utilitza la fila per afegir una tasca nova" #~ msgid "Task of the row" #~ msgstr "Tasca de la fila" #~ msgid "The task that this row represents" #~ msgstr "La tasca que aquesta fila representa" #~ msgid "Mode of this window" #~ msgstr "Mode d'aquesta finestra" #~ msgid "The interaction mode of the window" #~ msgstr "Mode d'interacció de la finestra" #~ msgid "Whether the storage is enabled" #~ msgstr "Si l'emmagatzematge està activat" #~ msgid "Whether the storage is available to be used." #~ msgstr "Si l'emmagatzematge està disponible per a ser utilitzat." #~ msgid "Icon of the storage" #~ msgstr "Icona de l'emmagatzematge" #~ msgid "The icon representing the storage location." #~ msgstr "La icona representant la ubicació de l'emmagatzematge." #~ msgid "Identifier of the storage" #~ msgstr "Identificador de l'emmagatzematge" #~ msgid "The unique identifier of the storage location." #~ msgstr "L'identificador únic de la ubicació de l'emmagatzematge." #~ msgid "Whether the storage is the default" #~ msgstr "Si l'emmagatzematge és per defecte" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Si l'emmagatzematge és la ubicació d'emmagatzematge per defecte a " #~ "utilitzar." #~ msgid "Name of the storage" #~ msgstr "Nom de l'emmagatzematge" #~ msgid "The user-visible name of the storage location." #~ msgstr "Nom visible per l'usuari de la ubicació de l'emmagatzematge." #~ msgid "Name of the data provider of the storage" #~ msgstr "Nom del proveïdor de dades de l'emmagatzematge." #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "El nom del proveïdor de la ubicació de l'emmagatzematge." #~ msgid "Account of the storage" #~ msgstr "Compte de l'emmagatzematge" #~ msgid "The account of the storage location." #~ msgstr "Compte de la ubicació de l'emmagatzematge." #~ msgid "Parent of the storage" #~ msgstr "Pare de l'emmagatzematge" #~ msgid "The parent source identifier of the storage location." #~ msgstr "L'identificador font del pare de la ubicació de l'emmagatzematge." #~ msgid "Storage of the row" #~ msgstr "Emmagatzematge de la fila" #~ msgid "The storage that this row holds" #~ msgstr "L'emmagatzematge que conté aquesta fila" #~ msgid "Show local storage row" #~ msgstr "Mostra la fila de l'emmagatzematge local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Si s'ha de mostrar una fila de l'emmagatzematge local en comptes d'una " #~ "casella de selecció" #~ msgid "Show stub rows" #~ msgstr "Mostra les files auxiliars" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "Si s'han de mostrar les files auxiliars per comptes no afegits" #~ msgid "Selects default storage row" #~ msgstr "Selecciona fila de l'emmagatzematge per defecte" #~ msgid "Whether should select the default storage row" #~ msgstr "Si s'ha de seleccionar la fila de l'emmagatzematge per defecte" #~ msgid "Whether the notification has a primary action" #~ msgstr "Si la notificació té una acció primària" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Si la notificació té una acció primària, activada en esgotar-se el temps " #~ "o descartada" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Si la notificació té una acció secundària" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "Si la notificació té una acció secundària, activada per l'usuari" #~ msgid "Text of the secondary action button" #~ msgstr "Text del botó d'acció secundària" #~ msgid "The text of the secondary action button" #~ msgstr "El text del botó d'acció secundària" #~ msgid "Notification message" #~ msgstr "Missatge de notificació" #~ msgid "The main message of the notification" #~ msgstr "El missatge principal de la notificació" #~ msgid "Notification timeout" #~ msgstr "Temps d'espera de la notificació" #~ msgid "The time the notification is displayed" #~ msgstr "Temps durant el qual es mostra la notificació" #~ msgid "Provider type of the storage" #~ msgstr "Proveïdor del tipus d'emmagatzematge" #~ msgid "Provider name of the storage" #~ msgstr "Nom del proveïdor de l'emmagatzematge" gnome-todo-3.18.1/po/cs.po000066400000000000000000000346351260744630400152600ustar00rootroot00000000000000# Czech translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Zdeněk Hataš , 2015. # Marek Černocký , 2015. # Petr Kovar , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-21 14:43+0000\n" "PO-Revision-Date: 2015-09-21 19:45+0200\n" "Last-Translator: Petr Kovar \n" "Language-Team: Czech \n" "Language: cs\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Úkoly" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Správce úkolů pro GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Úkoly GNOME je jednoduchá aplikace pro správu úkolů navržená tak, aby se " "zapadla do GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nový seznam…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Změnit výchozí místo uložení…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_O programu" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "U_končit" #: ../data/gtk/menus.ui.h:5 #| msgid "Show or hide completed tasks" msgid "Clear completed task…" msgstr "Vymazat splněný úkol…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Spravujte své osobní úkoly" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "úkoly;úkolníček;produktivita;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Maximalizované okno" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Stav maximalizovaného okna" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Velikost okna" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Velikost okna (šířka a výška)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Umístění okna" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Umístění okna (x a y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "První spuštění Úkolů GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Zda se jedná o první spuštění Úkolů GNOME (spustí se počáteční nastavení) " "nebo ne" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Výchozí umístění pro přidávání nových seznamů" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Identifikátor výchozího umístění pro přidávání nových seznamů" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Podrobnosti" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Poznámky" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Datum splnění" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorita" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Žádná" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Nízká" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Střední" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Vysoká" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Odstranit" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Vítejte" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Přihlášení k účtům on-line pro přístup k vašim úkolům" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Zrušit" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Hotovo" #: ../data/ui/list-view.ui.h:1 #| msgid "No tasks" msgid "No tasks found" msgstr "Žádné úkoly nenalezeny" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Úkoly do těchto seznamů je možné přidat v zobrazení Seznamy" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Zobrazit nebo skrýt splněné úkoly" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Vybrat umístění výchozího úložiště pro vytváření seznamů úkolů:" #: ../data/ui/storage-dialog.ui.h:2 #| msgid "Select a storage location" msgid "Default storage location" msgstr "Umístění výchozího úložiště" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Vytvořit" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Název seznamu" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Vyberte místo uložení" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Vyp" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Kliknutím přidáte účet Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Kliknutím přidáte účet ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Kliknutím přidáte účet Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Nebo můžete své úkoly jednoduše ukládat na tomto počítači." #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nový úkol..." #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Seznamy" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Dnes" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Naplánováno" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Přejmenovat" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nový seznam" #: ../data/ui/window.ui.h:8 #| msgid "Name of the list" msgid "Name of the task list" msgstr "Název seznamu úkolů" #: ../src/gtd-application.c:91 #, c-format #| msgid "Copyright © %Id The Todo authors" msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d autoři programu Úkoly" #: ../src/gtd-application.c:96 #, c-format #| msgid "Copyright © %Id–%Id The Todo authors" msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d – %d autoři programu Úkoly" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Úkoly" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Zdeněk Hataš " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Chyba při načítání CSS ze zdroje" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nebylo nastaveno datum" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Chyba při nahrávání GNOME Online Accounts" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Chyba při ukládání seznamu úkolů" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Chyba při odstraňování seznamu úkolů" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 #| msgid "Error creating new task list" msgid "Error creating task list" msgstr "Chyba při vytváření seznamu úkolů" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Chyba při vytváření úkolu" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Chyba při odstraňování úkolu" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Chyba při aktualizaci úkolu" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Selhal dotaz na přihlašovací údaje" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Selhal dotaz na přihlašovací údaje pro" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Ověření selhalo" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Chyba při získávání úkolů ze seznamu" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Zdroj seznamu úkolů úspěšně připojen" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Připojení ke zdroji seznamu úkolů selhalo" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Přeskakuje se dříve nahraný seznam úkolů" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Chyba při načítaní správce úkolů" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Žádné úkoly" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Úkol %s byl odstraněn" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Zpět" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Zítra" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Včera" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Odstranit vybrané seznamy úkolů?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Jakmile seznamy úkolů odstraníte, již je nelze obnovit." #: ../src/gtd-window.c:322 #| msgid "Error removing task list" msgid "Remove task lists" msgstr "Odstranit seznamy úkolů" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Nastavování nové barvy pro seznam úkolů" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Vaše seznamy úkolů jsou nahrávány…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Kliknutím vyberte seznam úkolů" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Chyba při vytváření nového seznamu úkolů" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Na tomto počítači" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Místní" #~ msgid "Manager of this application" #~ msgstr "Správce této aplikace" #~ msgid "The manager of the application" #~ msgstr "Správce dané aplikace" #~ msgid "Task being edited" #~ msgstr "Právě upravovaný úkol" #~ msgid "Manager of the task" #~ msgstr "Správce tohoto úkolu" #~ msgid "Manager of this window's application" #~ msgstr "Správce aplikace tohoto okna" #~ msgid "The manager of the window's application" #~ msgstr "Správce aplikace daného okna" #~ msgid "Whether the list is readonly" #~ msgstr "Zda je daný seznam pouze pro čtení" #~ msgid "Whether completed tasks are shown" #~ msgstr "Zda jsou zobrazeny splněné úkoly." #~ msgid "The online accounts client of the manager" #~ msgstr "Online účet klienta daného správce" #~ msgid "Unique identifier of the object" #~ msgstr "Unikátní identifikátor daného objektu" #~ msgid "Whether the storage is enabled" #~ msgstr "Zda je dané úložiště aktivní" #~ msgid "Icon of the storage" #~ msgstr "Ikona úložiště" #~ msgid "The icon representing the storage location." #~ msgstr "Ikona reprezentující místo uložení." #~ msgid "Identifier of the storage" #~ msgstr "Identifikátor úložiště" #~ msgid "The unique identifier of the storage location." #~ msgstr "Unikátní identifikátor místa uložení." #~ msgid "Whether the storage is the default" #~ msgstr "Zda je dané úložiště výchozí" #~ msgid "Name of the storage" #~ msgstr "Název daného úložiště" #~ msgid "Provider type of the storage" #~ msgstr "Typ poskytovatele daného úložiště" #~ msgid "The provider type of the storage location." #~ msgstr "Typ poskytovatele daného místa uložení." #~ msgid "Provider name of the storage" #~ msgstr "Název poskytovatele daného úložiště" #~ msgid "The name of the provider of the storage location." #~ msgstr "Název poskytovatele daného místa uložení." #~ msgid "Description of the task" #~ msgstr "Popis úkolu" #~ msgid "End date of the task" #~ msgstr "Datum ukončení úkolu" #~ msgid "List of the task" #~ msgstr "Seznam úkolu" #~ msgid "Priority of the task" #~ msgstr "Priorita úkolu" #~ msgid "Title of the task" #~ msgstr "Titulek úkolu" #~ msgid "The title of the task" #~ msgstr "Titulek daného úkolu" #~ msgid "Color of the list" #~ msgstr "Barva seznamu" #~ msgid "The color of the list" #~ msgstr "Barva daného seznamu" #~ msgid "The name of the list" #~ msgstr "Název daného seznamu" #~ msgid "Data origin of the list" #~ msgstr "Zdroj dat tohoto seznamu" #~ msgid "The data origin location of the list" #~ msgstr "Zdroj dat daného seznamu" #~ msgid "Source of the list" #~ msgstr "Zdroj seznamu" #~ msgid "Mode of this item" #~ msgstr "Režim této položky" #~ msgid "Task list of the item" #~ msgstr "Seznam úkolů položky" #~ msgid "The task list associated with this item" #~ msgstr "Seznam úkolů spojený s touto položkou" #~ msgid "If the row is used to add a new task" #~ msgstr "Jestli je řádek použit pro přidání nového úkolu" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Zda je řádek použit pro přidání nového úkolu" #~ msgid "Task of the row" #~ msgstr "Úkol daného řádku" gnome-todo-3.18.1/po/da.po000066400000000000000000000472131260744630400152330ustar00rootroot00000000000000# Danish translation for gnome-todo. # Copyright (C) 2015 gnome-todo's developers # This file is distributed under the same license as the gnome-todo package. # # Ask Hjorth Larsen , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-20 20:28+0200\n" "PO-Revision-Date: 2015-09-20 18:41+0200\n" "Last-Translator: Ask Hjorth Larsen \n" "Language-Team: Danish \n" "Language: da\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Todo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Todo-håndtering til GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Todo er et simpelt program til opgavehåndtering, designet integreret " "med GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Ny liste…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Ændr standardplacering af lager…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Om" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Afslut" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Ryd færdiggjort opgave…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Håndtér dine personlige opgaver" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Opgave;Produktivitet;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Vindue maksimeret" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Maksimeret tilstand for vindue" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Vinduesstørrelse" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Vinduesstørrelse (bredde og højde)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Vinduesposition" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Vinduesposition (x og y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Først kørsel af GNOME To Do" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Om det er første kørsel af GNOME To Do (så startkonfigurationen skal køres) " "eller ikke" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Standardplacering for tilføjelse af nye lister" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Identifikation på standardplaceringen for tilføjelse af nye lister" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detaljer" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Noter" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Forfaldsdato" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritet" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ingen" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Lav" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Middel" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Høj" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Slet" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Velkommen" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Log ind på onlinekonti og tilgå dine opgaver" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Annullér" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Færdig" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Ingen opgaver fundet" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Du kan føje opgaver til lister i oversigten Lister" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Vis eller skjul færdiggjorte opgaver" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Vælg standardplaceringen for oprettelse af opgavelister:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Standardlagerplacering" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Opret" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listenavn" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Vælg en lagerplacering" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Slået fra" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Klik for at tilføje en ny Google-konto" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Klik for at tilføje en ny ownCloud-konto" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klik for at tilføje en ny Microsoft Exchange-konto" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Eller du kan blot gemme dine opgaver på denne computer" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Ny opgave…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Lister" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "I dag" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planlagt" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Omdøb" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Ny liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Navnet på opgavelisten" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Ophavsret © %d Forfatterne af To Do" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Ophavsret © %d–%d Forfatterne af To Do" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Ask Hjorth Larsen\n" "\n" "Dansk-gruppen \n" "Mere info: http://www.dansk-gruppen.dk" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Fejl ved indlæsning af CSS fra ressource" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Ingen dato angivet" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Fejl ved indlæsning af GNOME Onlinekonti" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Fejl ved gemning af opgaveliste" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Fejl ved fjernelse af opgaveliste" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Fejl ved oprettelse af opgaveliste" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Fejl ved oprettelse af opgave" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Fejl ved fjernelse af opgave" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Fejl ved opdatering af opgave" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Kunne ikke forespørge om akkreditiver" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Kunne ikke forespørge om akkreditiver for" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Fejl ved autentifikation" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Fejl ved hentning af opgaver fra liste" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Opgavelistekilde tilsluttet" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Kunne ikke forbinde til opgavelistekilde" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Overspringer allerede indlæst opgaveliste " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Fejl ved indlæsning af opgavehåndtering" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Ingen opgaver" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Opgaven %s fjernet" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Fortryd" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "I morgen" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "I går" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Fjern de valgte opgavelister?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Når de er fjernet, kan de ikke gendannes." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Fjern opgavelister" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Sætter ny farve for opgavelisten" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Indlæser dine opgavelister…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Klik på en opgaveliste for at markere" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Fejl ved oprettelse af ny opgaveliste" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "På denne computer" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokal" #~ msgid "Manager of this application" #~ msgstr "Håndtering for dette program" #~ msgid "The manager of the application" #~ msgstr "Håndteringen for dette program" #~ msgid "Task being edited" #~ msgstr "Opgaven som redigeres" #~ msgid "The task that is actually being edited" #~ msgstr "Opgaven som i øjeblikket redigeres" #~ msgid "Manager of the task" #~ msgstr "Håndtering for opgaven" #~ msgid "The singleton manager instance of the task" #~ msgstr "Singleton-håndteringsinstansen for opgaven" #~ msgid "The online accounts client of the manager" #~ msgstr "Onlinekonti-klienten for håndteringen" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Den skrivebeskyttede GNOME Onlinekonti-klient som er indlæst og ejes af " #~ "håndteringen" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Om GNOME Onlinekonti-klienten er klar" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "Om den skrivebeskyttede GNOME Onlinekonti-klient er indlæst" #~ msgid "The source registry of the manager" #~ msgstr "Kilderegistret for håndteringen" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "Det skrivebeskyttede kilderegister som er indlæst og ejes af håndteringen" #~ msgid "Unique identifier of the object" #~ msgstr "Unik identifikation af objektet" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "Den unikke identifikation af objektet defineret af motoren" #~ msgid "Ready state of the object" #~ msgstr "Klarhedstilstanden for objektet" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Om objektet er markeret som klart eller ikke" #~ msgid "Whether the task is completed or not" #~ msgstr "Om opgaven er færdig eller ikke" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Om opgaven er markeret som færdiggjort af brugeren" #~ msgid "Component of the task" #~ msgstr "Komponent af opgaven" #~ msgid "The #ECalComponent this task handles." #~ msgstr "Den #ECalComponent, som denne opgave håndterer." #~ msgid "Description of the task" #~ msgstr "Beskrivelse af opgaven" #~ msgid "Optional string describing the task" #~ msgstr "Valgfri streng som beskriver opgaven" #~ msgid "End date of the task" #~ msgstr "Slutdato for opgaven" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Dagen, hvorpå opgaven bør være færdiggjort" #~ msgid "List of the task" #~ msgstr "Opgavens liste" #~ msgid "The list that owns this task" #~ msgstr "Listen, som ejer denne opgave" #~ msgid "Priority of the task" #~ msgstr "Prioritet for opgaven" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "Opgavens prioritet. 0 betyder ingen prioritet givet, og opgaver sorteres " #~ "alfabetisk." #~ msgid "Title of the task" #~ msgstr "Opgavens titel" #~ msgid "The title of the task" #~ msgstr "Opgavens titel" #~ msgid "Color of the list" #~ msgstr "Listens farve" #~ msgid "The color of the list" #~ msgstr "Listens farve" #~ msgid "Whether the task list is removable" #~ msgstr "Om opgavelisten kan fjernes" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Om opgavelisten kan fjernes fra systemet" #~ msgid "Name of the list" #~ msgstr "Listens navn" #~ msgid "The name of the list" #~ msgstr "Listens navn" #~ msgid "Data origin of the list" #~ msgstr "Dataophavssted for listen" #~ msgid "The data origin location of the list" #~ msgstr "Ophavsstedet for listens data" #~ msgid "Source of the list" #~ msgstr "Listens kilde" #~ msgid "The parent source that handles the list" #~ msgstr "Ophavskilden, som håndterer listen" #~ msgid "Mode of this item" #~ msgstr "Tilstand for dette punkt" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "" #~ "Tilstanden for dette punkt, som nedarves fra ophavspunktets tilstand" #~ msgid "Whether the task list is selected" #~ msgstr "Om opgavelisten er markeret" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Om opgavelisten er markeret i markeringstilstand" #~ msgid "Task list of the item" #~ msgstr "Opgaveliste for punktet" #~ msgid "The task list associated with this item" #~ msgstr "Opgavelisten tilknyttet dette punkt" #~ msgid "Manager of this window's application" #~ msgstr "Håndtering af dette vindues program" #~ msgid "The manager of the window's application" #~ msgstr "Håndteringen for dette vindues program" #~ msgid "Whether the list is readonly" #~ msgstr "Om listen er skrivebeskyttet" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Om listen er skrivebeskyttet eller ikke, dvs. om den viser Ny opgave-" #~ "rækken" #~ msgid "Whether task rows show the list name" #~ msgstr "Om opgaverækker viser listenavnet" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "Om opgaverækker viser listenavnet sidst i rækken" #~ msgid "Whether completed tasks are shown" #~ msgstr "Om færdiggjorte opgaver vises" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Om færdiggjorte opgaver er synlige eller ikke" #~ msgid "If the row is used to add a new task" #~ msgstr "Om rækken bruges til at tilføje en ny opgave" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Om rækken bruges til at tilføje en ny opgave" #~ msgid "Task of the row" #~ msgstr "Opgave for rækken" #~ msgid "The task that this row represents" #~ msgstr "Opgaven, som denne række repræsenterer" #~ msgid "Mode of this window" #~ msgstr "Tilstand for dette vindue" #~ msgid "The interaction mode of the window" #~ msgstr "Interaktionstilstanden for vinduet" #~ msgid "Whether the storage is enabled" #~ msgstr "Om lageret er slået til" #~ msgid "Whether the storage is available to be used." #~ msgstr "Om lageret er tilgængeligt til brug." #~ msgid "Icon of the storage" #~ msgstr "Ikon for lageret" #~ msgid "The icon representing the storage location." #~ msgstr "Ikonet som repræsenterer lagerstedet." #~ msgid "Identifier of the storage" #~ msgstr "Identifikation af lageret" #~ msgid "The unique identifier of the storage location." #~ msgstr "Den unikke identifikation af lagerstedet." #~ msgid "Whether the storage is the default" #~ msgstr "Om lageret er standardlagerstedet" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "Om lageret er standardlagerstedet." #~ msgid "Name of the storage" #~ msgstr "Navn på lageret" #~ msgid "The user-visible name of the storage location." #~ msgstr "Det for brugeren synlige navn på lagerstedet." #~ msgid "Parent of the storage" #~ msgstr "Ophav for lageret" #~ msgid "The parent source identifier of the storage location." #~ msgstr "Identifikation af ophavskilde for lagerstedet." #~ msgid "Provider type of the storage" #~ msgstr "Udbydertype for lageret" #~ msgid "The provider type of the storage location." #~ msgstr "Udbydertype for lagerstedet." #~ msgid "Provider name of the storage" #~ msgstr "Udbydernavn for lageret" #~ msgid "The name of the provider of the storage location." #~ msgstr "Navnet på udbyderen for lagerstedet." #~ msgid "Storage of the row" #~ msgstr "Lagring af rækken" #~ msgid "The storage that this row holds" #~ msgstr "Lageret, som denne række indeholder" #~ msgid "Show local storage row" #~ msgstr "Vis række for lokalt lager" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "Om der skal vises række for lokalt lager frem for afkrydsningsfelt" #~ msgid "Show stub rows" #~ msgstr "Vis rækker med stubbe" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "Om der skal vises rækker med stubbe for ikke-tilføjede konti" #~ msgid "Selects default storage row" #~ msgstr "Vælger standardlagerrækken" #~ msgid "Whether should select the default storage row" #~ msgstr "Om standardlagerrækken skal vælges" #~ msgid "Whether the notification has a primary action" #~ msgstr "Om påmindelsen af en primær handling" # Jeg tror 'dismiss' er når man lukker påmindelsesvinduet #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Om påmindelsen har den primære handling, som aktiveres ved tidsudløb " #~ "eller lukning" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Om påmindelsen har en sekundær handling" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "Om påmindelsen har en sekundær handling, som aktiveres af brugeren" #~ msgid "Text of the secondary action button" #~ msgstr "Teksten for den sekundære handlingsknap" #~ msgid "The text of the secondary action button" #~ msgstr "Teksten for den sekundære handlingsknap" #~ msgid "Notification message" #~ msgstr "Påmindelsesmeddelelse" #~ msgid "The main message of the notification" #~ msgstr "Hovedmeddelelsen for påmindelsen" #~ msgid "Notification timeout" #~ msgstr "Tidsudløb for påmindelse" #~ msgid "The time the notification is displayed" #~ msgstr "Varighed for visning af påmindelsen" gnome-todo-3.18.1/po/de.po000066400000000000000000000260761260744630400152430ustar00rootroot00000000000000# German translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Friedrich Herbst , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-03 20:27+0000\n" "PO-Revision-Date: 2015-09-07 20:43+0200\n" "Last-Translator: Bernd Homuth \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Aufgaben" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Aufgabenverwaltung für GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Aufgaben ist eine einfache Aufgabenverwaltungsanwendung mit guter " "Integration in GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Neue Liste …" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Standardspeicherort ändern …" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Info" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Beenden" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Abgeschlossene Aufgabe entfernen …" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Verwalten von persönlichen Aufgaben" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Aufgaben;Produktivität;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Fenster maximiert" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Fenstermaximierungszustand" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Fenstergröße" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Fenstergröße (Breite und Höhe)" #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Fensterposition" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Fensterposition (x und y)" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Erster Start von GNOME Aufgaben" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Gibt an, ob es der erste Start von GNOME Aufgaben ist oder nicht (für die " "Ersteinrichtung)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Standardort zum Hinzufügen neuer Listen" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Der Ort, an dem neue Listen hinzugefügt werden" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Details" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notizen" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Frist" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorität" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Keine" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Niedrig" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Mittel" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Hoch" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Löschen" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Willkommen" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Melden Sie sich bei den Online-Konten für Zugriff auf Ihre Aufgaben an" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Abbrechen" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Fertig" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Keine Aufgaben gefunden" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Sie können in der Listenansicht Aufgaben hinzufügen" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Abgeschlossene Aufgaben zeigen oder verbergen" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Wählen Sie den Standardort, an dem die Aufgabenlisten erstellt werden:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Standardspeicherort" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Erstellen" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listenname" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Wählen Sie einen Speicherort" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Aus" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Klicken Sie, um ein neues Google-Konto hinzuzufügen" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Klicken Sie, um ein neues ownCloud-Konto hinzuzufügen" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klicken Sie, um ein neues Microsoft-Exchange-Konto hinzuzufügen" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Sie können Ihre Aufgaben auch einfach auf diesem Rechner speichern" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Neue Aufgabe …" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listen" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Heute" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Geplant" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Umbenennen" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Neue Liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Name der Aufgabenliste" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Die Aufgaben-Autoren" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d-%d Die Aufgaben-Autoren" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Aufgaben" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Friedrich Herbst , 2015\n" "Christian Kirbach , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Fehler beim Laden des CSS aus der Resource" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Kein Datum festgelegt" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Fehler beim Laden der GNOME-Online-Konten" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Fehler beim Speichern der Aufgabenliste" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Fehler beim Entfernen der Aufgabenliste" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Fehler beim Anlegen einer Aufgabenliste" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Fehler beim Erstellen einer Aufgabe" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Fehler beim Entfernen der Aufgabe" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Fehler beim Aktualisieren der Aufgabe" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Fehler beim Erfragen von Anmeldedaten" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Fehler beim Erfragen von Anmeldedaten für" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Legitimierung ist gescheitert" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Fehler beim Abrufen von Aufgaben aus der Liste" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Aufgabenlisten-Quelle erfolgreich verbunden" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Fehler beim Verbinden mit der Aufgabenlisten-Quelle" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Bereits geladene Aufgabenliste wird übersprungen " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Fehler beim Laden der Aufgabenverwaltung" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Keine Aufgaben" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Aufgabe %s entfernt" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Rückgängig" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Morgen" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Gestern" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Soll die gewählte Aufgabenliste entfernt werden?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Gelöschte Aufgabenlisten können nicht wiederhergestellt werden." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Aufgabenlisten löschen" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Neue Farbe für die Aufgabenliste einstellen" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Laden Ihrer Aufgabenlisten …" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Klicken Sie auf eine Aufgabenliste, um sie auszuwählen" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Fehler beim Anlegen der neuen Aufgabenliste" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Auf diesem Rechner" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokal" #~ msgid "New List…" #~ msgstr "Neue Liste" #~ msgid "Copyright © %d–%d The To Do authors" #~ msgstr "Copyright © %d–%d Die Aufgaben-Autoren" gnome-todo-3.18.1/po/el.po000066400000000000000000000670561260744630400152560ustar00rootroot00000000000000# Greek translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Dimitris Spingos , 2015. # Dimitris Spingos (Δημήτρης Σπίγγος) , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-04 16:51+0300\n" "Last-Translator: Tom Tryfonidis \n" "Language-Team: www.gnome.gr\n" "Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.4\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Εργασίες" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Διαχειριστής εργασιών για το GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Η Εργασίες GNOME είναι μια απλή εφαρμογή διαχείρισης εργασιών που " "σχεδιάστηκε να ενσωματώνεται στο GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Νέα λίστα…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Αλλαγή της προεπιλεγμένης θέσης αποθήκευσης…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Περί" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "Έ_ξοδος" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Εκκαθάριση ολοκληρωμένων εργασιών…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Διαχειριστείτε τις προσωπικές σας εργασίες" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Εργασίες;Παραγωγικότητα;Task;Productivity;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Μεγιστοποιημένο παράθυρο" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Κατάσταση μεγιστοποιημένου παραθύρου" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Μέγεθος παραθύρου" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Μέγεθος παραθύρου (πλάτος και ύψος)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Θέση παραθύρου" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Θέση παραθύρου (x και y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Πρώτη εκτέλεση του Εργασίες GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Εάν είναι η πρώτη εκτέλεση του Εργασίες GNOME (να εκτελεστεί η αρχική " "διαμόρφωση) ή όχι" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Προεπιλεγμένη θέση για προσθήκη νέων λιστών" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Το αναγνωριστικό της προεπιλεγμένης θέσης για προσθήκη νέων λιστών" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Λεπτομέρειες" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Σημειώσεις" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Ημερομηνία λήξης" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Προτεραιότητα" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Kαμία" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Χαμηλή" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Μεσαία" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Υψηλή" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Διαγραφή" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Καλώς ήλθατε" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "" "Συνδεθείτε με διαδικτυακούς λογαριασμούς για να έχετε πρόσβαση στις εργασίες " "σας" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Άκυρο" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Έτοιμο" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Δεν βρέθηκαν εργασίες" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Μπορείτε να προσθέσετε εργασίες στις λίστες στην προβολή Λίστες" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Εμφάνιση ή απόκρυψη ολοκληρωμένων εργασιών" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Επιλογή της προεπιλεγμένης θέσης αποθήκευσης για τη δημιουργία λιστών " "εργασιών:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Προεπιλεγμένη θέση αποθήκευσης" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Δημιουργία" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Όνομα καταλόγου" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Επιλογή θέσης αποθήκευσης" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Ανενεργό" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Κάντε κλικ για προσθήκη ενός νέου λογαριασμού Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Κάντε κλικ για προσθήκη ενός νέου λογαριασμού ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Κάντε κλικ για προσθήκη ενός νέου λογαριασμού Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "" "Ή μπορείτε απλώς να αποθηκεύσετε τις εργασίες σας σε αυτόν τον υπολογιστή" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Νέα εργασία…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Λίστες" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Σήμερα" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Προγραμματισμένο" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Μετονομασία" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Νέα λίστα" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Όνομα της λίστας εργασιών" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Πνευματικά δικαιώματα © %d Οι συγγραφείς του Εργασίες" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Πνευματικά δικαιώματα © %d–%d Οι συγγραφείς του Εργασίες" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Εργασίες" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Ελληνική μεταφραστική ομάδα του GNOME\n" " Δημήτρης Σπίγγος , 2015\n" " Θάνος Τρυφωνίδης , 2015\n" "\n" "Για περισσότερες πληροφορίες, επισκεφθείτε τη σελίδα\n" "http://gnome.gr/" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Σφάλμα κατά τη φόρτωση CSS από την πηγή" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Δεν ορίστηκε ημερομηνία" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Σφάλμα κατά τη φόρτωση των διαδικτυακών λογαριασμών του GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Σφάλμα κατά την αποθήκευση της λίστας εργασιών" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Σφάλμα κατά την αφαίρεση της λίστας εργασιών" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Σφάλμα κατά τη δημιουργία λίστας εργασιών" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Σφάλμα κατά τη δημιουργία εργασίας" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Σφάλμα κατά την αφαίρεση εργασίας" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Σφάλμα κατά την ενημέρωση εργασίας" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Αποτυχία προτροπής για διαπιστευτήρια" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Αποτυχία προτροπής για διαπιστευτήρια για" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Αποτυχία πιστοποίησης" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Σφάλμα κατά την προσκόμιση εργασιών από την λίστα" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Η λίστα εργασιών συνδέθηκε με επιτυχία" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Αποτυχία σύνδεσης με την πηγή της λίστας εργασιών" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Παράλειψη της ήδη φορτωμένης λίστας εργασιών " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Σφάλμα κατά τη φόρτωση του διαχειριστή εργασιών" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Χωρίς εργασίες" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Η εργασία %s αφαιρέθηκε" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Αναίρεση" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Αύριο" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Χθές" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Αφαίρεση των επιλεγμένων εργασιών;" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Όταν αφαιρεθεί, οι λίστες εργασιών δεν μπορούν να ανακτηθούν." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Αφαίρεση λιστών εργασιών" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Ρύθμιση νέου χρώματος για την λίστα εργασιών" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Φορτώνονται οι λίστες εργασιών…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Κάντε κλικ σε μια λίστα εργασιών για να την επιλέξετε" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Σφάλμα κατά τη δημιουργία νέας λίστας εργασιών" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Σε αυτό τον υπολογιστή" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Τοπικά" #~ msgid "Manager of this application" #~ msgstr "Διαχειριστής αυτής της εφαρμογής" #~ msgid "The manager of the application" #~ msgstr "Ο διαχειριστής της εφαρμογής" #~ msgid "Task being edited" #~ msgstr "Η εργασία προστέθηκε" #~ msgid "The task that is actually being edited" #~ msgstr "Η εργασία που επεξεργάστηκε στην πραγματικότητα" #~ msgid "Manager of the task" #~ msgstr "Ο διαχειριστής της εργασίας" #~ msgid "The singleton manager instance of the task" #~ msgstr "Το μοναδικό στιγμιότυπο διαχειριστή της εργασίας" #~ msgid "The online accounts client of the manager" #~ msgstr "Ο πελάτης διαδικτυακών λογαριασμών για τον διαχειριστή" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Ο μόνο για ανάγνωση πελάτης διαδικτυακών λογαριασμών του GNOME φορτώθηκε " #~ "και κατέχεται από τον διαχειριστή" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Αν είναι έτοιμος ο πελάτης διαδικτυακών λογαριασμών του GNOME" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Αν ο μόνο για ανάγνωση πελάτης διαδικτυακών λογαριασμών του GNOME είναι " #~ "φορτωμένος" #~ msgid "The source registry of the manager" #~ msgstr "Το μητρώο προέλευσης του διαχειριστή" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "Το μητρώο προέλευσης μόνο για ανάγνωση φορτώθηκε και κατέχεται από τον " #~ "διαχειριστή" #~ msgid "Unique identifier of the object" #~ msgstr "Μοναδικό αναγνωριστικό του αντικειμένου" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "" #~ "Το μοναδικό αναγνωριστικό του αντικειμένου, ορίστηκε από το σύστημα " #~ "υποστήριξης" #~ msgid "Ready state of the object" #~ msgstr "Κατάσταση ετοιμότητας του αντικειμένου" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Αν το αντικείμενο είναι σημειωμένο ως έτοιμο ή όχι" #~ msgid "Whether the task is completed or not" #~ msgstr "Αν η εργασία είναι ολοκληρωμένη ή όχι" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Αν η εργασία είναι σημειωμένη ως ολοκληρωμένη από τον χρήστη" #~ msgid "Component of the task" #~ msgstr "Συστατικό στοιχείο της εργασίας" #~ msgid "The #ECalComponent this task handles." #~ msgstr "Το #ECalComponent που χειρίζεται αυτή η εργασία." #~ msgid "Description of the task" #~ msgstr "Περιγραφή της εργασίας" #~ msgid "Optional string describing the task" #~ msgstr "Προαιρετική συμβολοσειρά που περιγράφει την εργασία" #~ msgid "End date of the task" #~ msgstr "Τελευταία ημερομηνία της εργασίας" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Η ημέρα που υποτίθεται ότι η εργασία θα ολοκληρωθεί" #~ msgid "List of the task" #~ msgstr "Λίστα των εργασιών" #~ msgid "The list that owns this task" #~ msgstr "Η λίστα που περιλαμβάνει αυτήν την εργασία" #~ msgid "Priority of the task" #~ msgstr "Προτεραιότητα της εργασίας" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "Η προτεραιότητα της εργασίας. 0 σημαίνει χωρίς ορισμένη προτεραιότητα και " #~ "οι εργασίες θα ταξινομηθούν αλφαβητικά." #~ msgid "Title of the task" #~ msgstr "Τίτλος της εργασίας" #~ msgid "The title of the task" #~ msgstr "Ο τίτλος της εργασίας" #~ msgid "Color of the list" #~ msgstr "Χρώμα της λίστας" #~ msgid "The color of the list" #~ msgstr "Το χρώμα της λίστας" #~ msgid "Whether the task list is removable" #~ msgstr "Αν η λίστα εργασιών είναι αφαιρούμενη" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Αν η λίστα εργασιών μπορεί να αφαιρεθεί από το σύστημα" #~ msgid "Name of the list" #~ msgstr "Όνομα της λίστας" #~ msgid "The name of the list" #~ msgstr "Το όνομα της λίστας" #~ msgid "Data origin of the list" #~ msgstr "Τα αρχικά δεδομένα της λίστας" #~ msgid "The data origin location of the list" #~ msgstr "Η θέση των αρχικών δεδομένων της λίστας" #~ msgid "Source of the list" #~ msgstr "Η προέλευση της λίστας" #~ msgid "The parent source that handles the list" #~ msgstr "Η γονική προέλευση που διαχειρίζεται την λίστα" #~ msgid "Mode of this item" #~ msgstr "Κατάσταση αυτού του στοιχείου" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "" #~ "Η κατάσταση αυτού του στοιχείου, που κληρονομήθηκε από την γονική " #~ "κατάσταση" #~ msgid "Whether the task list is selected" #~ msgstr "Αν η λίστα εργασιών είναι επιλεγμένη" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Αν η λίστα εργασιών είναι επιλεγμένη στην λειτουργία επιλογής" #~ msgid "Task list of the item" #~ msgstr "Η λίστα εργασιών αυτού του αντικειμένου" #~ msgid "The task list associated with this item" #~ msgstr "Η λίστα εργασιών που συσχετίζεται με αυτό το αντικείμενο" #~ msgid "Manager of this window's application" #~ msgstr "Ο διαχειριστής αυτής της εφαρμογής του παραθύρου" #~ msgid "The manager of the window's application" #~ msgstr "Ο διαχειριστής της εφαρμογής του παραθύρου" #~ msgid "Whether the list is readonly" #~ msgstr "Αν η λίστα είναι μόνο για ανάγνωση" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Αν η λίστα είναι μόνο για ανάγνωση, π.χ. δεν εμφανίζεται στη νέα σειρά " #~ "εργασιών, ή όχι" #~ msgid "Whether task rows show the list name" #~ msgstr "Εάν οι σειρές εργασιών εμφανίζουν το όνομα της λίστας" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Αν οι σειρές εργασιών εμφανίζουν το όνομα της λίστας στο τέλος της σειράς" #~ msgid "Whether completed tasks are shown" #~ msgstr "Αν θα εμφανίζονται οι ολοκληρωμένες εργασίες" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Αν οι ολοκληρωμένες εργασίες είναι ορατές ή όχι" #~ msgid "If the row is used to add a new task" #~ msgstr "Αν η σειρά χρησιμοποιείται για την προσθήκη μιας νέας εργασίας" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Αν η σειρά χρησιμοποιείται για την προσθήκη μιας νέας εργασίας" #~ msgid "Task of the row" #~ msgstr "Εργασία της σειράς" #~ msgid "The task that this row represents" #~ msgstr "Η εργασία που αυτή η σειρά απεικονίζει" #~ msgid "Mode of this window" #~ msgstr "Κατάσταση αυτού του παραθύρου" #~ msgid "The interaction mode of the window" #~ msgstr "Η λειτουργία αλληλεπίδρασης του παραθύρου" #~ msgid "Whether the storage is enabled" #~ msgstr "Αν η αποθήκευση είναι ενεργή" #~ msgid "Whether the storage is available to be used." #~ msgstr "Αν η αποθήκευση είναι διαθέσιμη να χρησιμοποιηθεί." #~ msgid "Icon of the storage" #~ msgstr "Το εικονίδιο της αποθήκευσης" #~ msgid "The icon representing the storage location." #~ msgstr "Το εικονίδιο αναπαριστά τη θέση αποθήκευσης." #~ msgid "Identifier of the storage" #~ msgstr "Το αναγνωριστικό της αποθήκευσης" #~ msgid "The unique identifier of the storage location." #~ msgstr "Το μοναδικό αναγνωριστικό της θέσης αποθήκευσης." #~ msgid "Whether the storage is the default" #~ msgstr "Αν η αποθήκευση είναι η προεπιλογή" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Αν η αποθήκευση είναι στην προεπιλεγμένη θέση αποθήκευσης που θα " #~ "χρησιμοποιηθεί." #~ msgid "Name of the storage" #~ msgstr "Όνομα της αποθήκευσης" #~ msgid "The user-visible name of the storage location." #~ msgstr "Το όνομα που είναι ορατό από τον χρήστη της θέσης αποθήκευσης." #~ msgid "Name of the data provider of the storage" #~ msgstr "Το όνομα του παρόχου δεδομένων της αποθήκευσης" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "Το εμφανές όνομα του παρόχου δεδομένων της θέσης αποθήκευσης." #~| msgid "Parent of the storage" #~ msgid "GoaObject of the storage" #~ msgstr "GoaObject της αποθήκευσης" #~| msgid "The provider type of the storage location." #~ msgid "The GoaObject this storage location represents." #~ msgstr "Το GoaObject που αντιπροσωπεύει αυτή η θέση αποθήκευσης." #~ msgid "Parent of the storage" #~ msgstr "Γονικό της αποθήκευσης" #~ msgid "The parent source identifier of the storage location." #~ msgstr "Το γονικό αναγνωριστικό πηγής της θέσης αποθήκευσης." #~ msgid "Storage of the row" #~ msgstr "Αποθήκευση της σειράς" #~ msgid "The storage that this row holds" #~ msgstr "Η αποθήκευση που κρατά αυτή η σειρά" #~ msgid "Show local storage row" #~ msgstr "Εμφάνιση της τοπικής σειράς αποθήκευσης" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Αν θα πρέπει να εμφανιστεί μια σειρά τοπικής αποθήκευσης αντί για ένα " #~ "πλαίσιο επιλογής" #~ msgid "Show stub rows" #~ msgstr "Εμφάνιση σειρών στελέχους" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "" #~ "Αν θα πρέπει να εμφανιστούν οι σειρές στελέχους για λογαριασμούς που δεν " #~ "προστέθηκαν" #~ msgid "Selects default storage row" #~ msgstr "Επιλέγει την προεπιλεγμένη σειρά αποθήκευσης" #~ msgid "Whether should select the default storage row" #~ msgstr "Αν θα πρέπει να επιλέξει την προεπιλεγμένη σειρά αποθήκευσης" #~ msgid "Whether the notification has a primary action" #~ msgstr "Αν η ειδοποίηση έχει μια πρωτεύουσα ενέργεια" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Αν η ειδοποίηση έχει την πρωτεύουσα ενέργεια, ενεργοποιημένη στο όριο " #~ "χρόνου ή απόρριψη" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Αν η ειδοποίηση έχει μια δευτερεύουσα ενέργεια" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "" #~ "Αν η ειδοποίηση έχει τη δευτερεύουσα ενέργεια, ενεργοποιημένη από τον " #~ "χρήστη" #~ msgid "Text of the secondary action button" #~ msgstr "Κείμενο του κουμπιού της δευτερεύουσας ενέργειας" #~ msgid "The text of the secondary action button" #~ msgstr "Το κείμενο του κουμπιού της δευτερεύουσας ενέργειας" #~ msgid "Notification message" #~ msgstr "Μήνυμα ειδοποίησης" #~ msgid "The main message of the notification" #~ msgstr "Το κύριο μήνυμα της ειδοποίησης" #~ msgid "Notification timeout" #~ msgstr "Το όριο χρόνου της ειδοποίησης" #~ msgid "The time the notification is displayed" #~ msgstr "Ο χρόνος που εμφανίζεται η ειδοποίηση" #~ msgid "Provider type of the storage" #~ msgstr "Ο τύπος παρόχου της αποθήκευσης" #~ msgid "Provider name of the storage" #~ msgstr "Το όνομα παρόχου της αποθήκευσης" gnome-todo-3.18.1/po/eo.po000066400000000000000000000234731260744630400152540ustar00rootroot00000000000000# Esperanto translation for gnome-todo. # Copyright (C) 2015 Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-todo package. # Kristjan SCHMIDT , 2015. # Daniel PUENTES , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-25 09:03+0000\n" "PO-Revision-Date: 2015-10-04 00:54+0200\n" "Last-Translator: Kristjan SCHMIDT \n" "Language-Team: Esperanto \n" "Language: eo\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Taskolisto" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Administrilo de taskolistoj por GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nova listo…" #: ../data/gtk/menus.ui.h:2 #, fuzzy msgid "Change default storage location…" msgstr "Ŝanĝi la defaŭltan konservadan lokon…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Pri" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "Ĉ_esi" #: ../data/gtk/menus.ui.h:5 #| msgid "Show or hide completed tasks" msgid "Clear completed task…" msgstr "Forigi plenumitajn taskojn…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Mastrumi viajn konservitajn serĉojn" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tasko;Produktiveco;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Maksimumigita fenestro" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Maksimumigita stato de fenestro" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Fenestra grando" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Fenestra grando (larĝo kaj alto)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Fenestra pozicio" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Fenestra pozicio (x kaj y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Unua starto de GNOME Taskolisto" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detaloj" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notoj" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Limdato" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritato" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Neniu" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Malalte" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Meze" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alte" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Forigi" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Bonvenon" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Nuligi" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Farite" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Ne trovis taskojn" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Montri aŭ kaŝi plenumitajn taskojn" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Krei" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listnomo" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Elŝaltite" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Alklaku por aldoni novan Google-konton" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klaku por aldoni novan Microsoft-Exchange-konton" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nova tasko…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listoj" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hodiaŭ" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planitaj" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Alinomi" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nova listo" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nomo de la taskolisto" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Kopirajto © %Id La aŭtoroj de Taskolisto" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Kopirajto © %d–%d La aŭtoroj de Taskolisto" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Taskoj" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Kristjan SCHMIDT, Daniel PUENTES" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Eraro dum konservado de taskolisto" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Eraro dum forigo de taskolisto" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Eraro dum kreado de taskolisto" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Eraro dum kreado de tasko" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Eraro dum forigo de tasko" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Eraro dum ĝisdatigo de tasko" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Malsukcesis aŭtentigo" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Malsukcesis konekti al fonto de taskolisto" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Eraro dum ŝarĝado de administrilo de taskolistoj" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Neniu tasko" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Taskolisto %s forigita" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Malfari" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Morgaŭ" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Hieraŭ" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Ĉu forigi la elektatajn taskolistojn?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "" #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Forigi taskolistojn" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Ŝarĝante viajn taskolistojn…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Alklaku elektotan taskoliston" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Eraro dum kreado de nova taskolisto" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "En ĉi tiu komputilo" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Loke" gnome-todo-3.18.1/po/es.po000066400000000000000000000530411260744630400152520ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # # Daniel Mustieles , 2015. , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo.master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-02 18:44+0200\n" "Last-Translator: Daniel Mustieles \n" "Language-Team: Español; Castellano \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Tareas pendientes" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Gestor de tareas pendientes para GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Tareas pendientes de GNOME es un sencillo gestor de tareas diseñado para " "integrarse con GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nueva lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Cambiar la ubicación predeterminada del almacenamiento…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Acerca de" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Salir" #: ../data/gtk/menus.ui.h:5 #| msgid "Show or hide completed tasks" msgid "Clear completed task…" msgstr "Limpiar las tareas completadas…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gestionar sus tareas personales" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tarea;Productividad;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Ventana maximizada" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Estado maximizado de la ventana" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Tamaño de la ventana" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Tamaño de la ventana (anchura y altura)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posición de la ventana" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posición de la ventana (x e y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Primera ejecución de Tareas pendientes de GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Indica si es la primera vez que se ejecuta Tareas pendientes de GNOME (para " "ejecutar la configuración inicial)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Ubicación predeterminada en la que añadir las listas nuevas" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "El identificador de la ubicación predeterminada en la que añadir las listas " "nuevas" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detalles" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notas" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Fecha límite" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioridad" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ninguna" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baja" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Media" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Eliminar" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Bienvenido/a" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Inicie sesión en sus cuentas en línea para acceder a sus tareas" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Cancelar" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Hecho" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "No se han encontrado tareas" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Puede añadir tareas a las listas en la vista de Listas" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostrar u ocultar las tareas completadas" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Seleccionar la ubicación predeterminada para crear listas de tareas:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Ubicación predeterminada del almacenamiento" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Crear" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nombre de la lista" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Seleccionar una ubicación del almacenamiento" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Apagado" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Pulsar para añadir una cuenta de Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Pulsar para añadir una cuenta de ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Pulsar para añadir una cuenta nueva de Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "O simplemente puede guardar las tareas en este equipo" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nueva tarea…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listas" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hoy" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Programadas" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Renombrar" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nueva lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nombre de la lista de tareas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d los autores de Tareas pendientes" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d los autores de Tareas pendientes" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Tareas pendientes" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Daniel Mustieles , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Error al cargar la CSS desde el recurso" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "No hay fecha establecida" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Error al cargar las cuentas en línea de GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Error al guardar la lista de tareas" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Error al eliminar la lista de tareas" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Error al crear la lista de tareas" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Error al crear la tarea" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Error al eliminar la tarea" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Error al actualizar la tarea" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Falló al solicitar las credenciales" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Falló al solicitar las credenciales para" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Fallo de autenticación" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Error al obtener las tareas de la lista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Fuente de lista de tareas conectada correctamente" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Falló al conectar a la fuente de lista de tareas" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Omitiendo la lista de tareas la cargada" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Error al cargar el gestor de tareas" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "No hay tareas" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Tarea %s eliminada" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Deshacer" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Mañana" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Ayer" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "¿Eliminar las listas de tareas seleccionadas?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Una vez eliminada, la lista de tareas no se podrá recuperar." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Eliminar lista de tareas" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Configurar un colo nuevo para la lista de tareas" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Cargando su lista de tareas…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Pulse sobre una tarea para seleccionarla" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Error al crear la nueva lista de tareas" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "En este equipo" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "Gestor de esta aplicación" #~ msgid "The manager of the application" #~ msgstr "El gestor de esta aplicación" #~ msgid "Task being edited" #~ msgstr "Tarea que se está editando" #~ msgid "The task that is actually being edited" #~ msgstr "La tarea que se está editando actualmente" #~ msgid "Manager of the task" #~ msgstr "Gestor de la tarea" #~ msgid "The singleton manager instance of the task" #~ msgstr "La instancia del gestor del singleton de la tarea" #~ msgid "The online accounts client of the manager" #~ msgstr "El cliente de las cuentas en línea del gestor" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "El cliente de las cuentas en línea de GNOME cargado y propiedad del gestor" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "" #~ "Indica si el cliente de las cuentas en línea de GNOME está preparado" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Indica si el cliente de las cuentas en línea de GNOME de solo lectura " #~ "está cargado" #~ msgid "The source registry of the manager" #~ msgstr "El registro de la fuente del gestor" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "El registro de la fuente de sólo lectura cargado y propiedad del gestor" #~ msgid "Unique identifier of the object" #~ msgstr "Identificador único del objeto" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "El identificador único del objeto, definido por el «backend»" #~ msgid "Ready state of the object" #~ msgstr "Estado preparado del objeto" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Indica si el objeto está marcado como preparado o no" #~ msgid "Whether the task is completed or not" #~ msgstr "Indica si la tarea se ha completado o no" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Indica is la tarea está marcada como completada por el usuario" #~ msgid "Component of the task" #~ msgstr "Componente de la tarea" #~ msgid "The #ECalComponent this task handles." #~ msgstr "El #ECalComponent que gestiona esta tarea." #~ msgid "Description of the task" #~ msgstr "Descripción de la tarea" #~ msgid "Optional string describing the task" #~ msgstr "Cadena opcional que describe la tarea" #~ msgid "End date of the task" #~ msgstr "Fecha de fin de la tarea" #~ msgid "The day the task is supposed to be completed" #~ msgstr "El día previsto de finalización de la tarea" #~ msgid "List of the task" #~ msgstr "Lista de la tarea" #~ msgid "The list that owns this task" #~ msgstr "La lista a la que pertenece esta tarea" #~ msgid "Priority of the task" #~ msgstr "Prioridad de la tarea" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "La prioridad de la tarea. 0 significa que no se ha establecido prioridad, " #~ "y las tareas se ordenarán alfabéticamente." #~ msgid "Title of the task" #~ msgstr "Título de la tarea" #~ msgid "The title of the task" #~ msgstr "El título de la tarea" #~ msgid "Color of the list" #~ msgstr "Color de la lista" #~ msgid "The color of the list" #~ msgstr "El color de la lista" #~ msgid "Whether the task list is removable" #~ msgstr "Indica si se puede eliminar la lista de tareas" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Indica si se puede eliminar la lista de tareas del sistema" #~ msgid "Name of the list" #~ msgstr "Nombre de la lista" #~ msgid "The name of the list" #~ msgstr "El nombre de la lista" #~ msgid "Data origin of the list" #~ msgstr "Origen de datos de la lista" #~ msgid "The data origin location of the list" #~ msgstr "La ubicación del origen de datos de la lista" #~ msgid "Source of the list" #~ msgstr "Fuente de la lista" #~ msgid "The parent source that handles the list" #~ msgstr "La fuente padre que maneja la lista" #~ msgid "Mode of this item" #~ msgstr "Modo de este elemento" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "El modo de este elemento, heredado del modo del padre" #~ msgid "Whether the task list is selected" #~ msgstr "Indica si la lista de tareas se ha seleccionado" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "" #~ "Indica si la lista de tareas está seleccionada al estar en el modo de " #~ "selección" #~ msgid "Task list of the item" #~ msgstr "Lista de tareas del elemento" #~ msgid "The task list associated with this item" #~ msgstr "La lista de tareas asociada a este elemento" #~ msgid "Manager of this window's application" #~ msgstr "Gestor de la ventana de esta aplicación" #~ msgid "The manager of the window's application" #~ msgstr "El gestor de la ventana de la aplicación" #~ msgid "Whether the list is readonly" #~ msgstr "Indica si la lista es de solo lectura" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Indica si la lista es de solo lectura, es decir, si se muestra o no la " #~ "fila de Tarea nueva" #~ msgid "Whether task rows show the list name" #~ msgstr "Indica si las filas de la tarea muestran el nombre de la lista" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Indica si las filas de la lista muestran el nombre de la lista al final " #~ "de la fila" #~ msgid "Whether completed tasks are shown" #~ msgstr "Indica si se muestran las tareas completadas" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Indica si las tareas completadas son visibles o no" #~ msgid "If the row is used to add a new task" #~ msgstr "Si se ua la fila para añadir una tarea nueva" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Indica si la fila se usa para añadir una tarea nueva" #~ msgid "Task of the row" #~ msgstr "Tarea de la fila" #~ msgid "The task that this row represents" #~ msgstr "La tarea que esta fila representa" #~ msgid "Mode of this window" #~ msgstr "Modo de esta ventana" #~ msgid "The interaction mode of the window" #~ msgstr "El modo de interacción de la ventana" #~ msgid "Whether the storage is enabled" #~ msgstr "Indica si el almacenamiento está activado" #~ msgid "Whether the storage is available to be used." #~ msgstr "Indica si el almacenamiento está disponibles para usarse." #~ msgid "Icon of the storage" #~ msgstr "Icono del almacenamiento" #~ msgid "The icon representing the storage location." #~ msgstr "El icono que representa la ubicación del almacenamiento." #~ msgid "Identifier of the storage" #~ msgstr "Identificador del almacenamiento" #~ msgid "The unique identifier of the storage location." #~ msgstr "El identificador único de la ubicación del almacenamiento." #~ msgid "Whether the storage is the default" #~ msgstr "Indica si el almacenamiento es el predeterminado" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Indica si el almacenamiento es la ubicación del almacenamiento " #~ "predeterminado que usar." #~ msgid "Name of the storage" #~ msgstr "Nombre del almacenamiento" #~ msgid "The user-visible name of the storage location." #~ msgstr "" #~ "El nombre de la ubicación del almacenamiento visible por el usuario." #~ msgid "Name of the data provider of the storage" #~ msgstr "Nombre del proveedor de la ubicación del almacenamiento" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "El nombre visible del proveedor de la ubicación del almacenamiento." #~| msgid "Parent of the storage" #~ msgid "GoaObject of the storage" #~ msgstr "GoaObject del almacenamiento" #~| msgid "The account of the storage location." #~ msgid "The GoaObject this storage location represents." #~ msgstr "El GoaObject que esta ubicación del almacenamiento representa." #~ msgid "Parent of the storage" #~ msgstr "Padre del almacenamiento" #~ msgid "The parent source identifier of the storage location." #~ msgstr "" #~ "El identificador de la fuente padre de la ubicación del almacenamiento." #~ msgid "Storage of the row" #~ msgstr "Almacenamiento de la fila" #~ msgid "The storage that this row holds" #~ msgstr "El almacenamiento que esta fila contiene" #~ msgid "Show local storage row" #~ msgstr "Mostrar la fila de almacenamiento local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Indica si se debe mostrar una fila del almacenamiento local en lugar de " #~ "una casilla" #~ msgid "Show stub rows" #~ msgstr "Mostrar las filas auxiliares" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "" #~ "Indica si se deben mostrar las filas auxiliares para las cuentas no " #~ "añadidas" #~ msgid "Selects default storage row" #~ msgstr "Selecciona la fila de almacenamiento predeterminada" #~ msgid "Whether should select the default storage row" #~ msgstr "" #~ "Indica si se debe seleccionar la fila del almacenamiento predeterminado" #~ msgid "Whether the notification has a primary action" #~ msgstr "Indica si la notificación tiene una acción primaria" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Indica si la notificación tiene la acción primaria, activada al expirar o " #~ "al descartarla" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Indica si la notificación tiene una acción secundaria" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "" #~ "Indica si la notificación tiene la acción secundaria, activada por el " #~ "usuario" #~ msgid "Text of the secondary action button" #~ msgstr "Texto del botón de acción secundaria" #~ msgid "The text of the secondary action button" #~ msgstr "El texto del botón de acción secundaria" #~ msgid "Notification message" #~ msgstr "Mensaje de notificación" #~ msgid "The main message of the notification" #~ msgstr "El mensaje principal de la notificación" #~ msgid "Notification timeout" #~ msgstr "Tiempo de expiración de la notificación" #~ msgid "The time the notification is displayed" #~ msgstr "El tiempo que se muestra la notificación" #~| msgid "Icon of the storage" #~ msgid "Account of the storage" #~ msgstr "Cuenta del almacenamiento" #~ msgid "Provider type of the storage" #~ msgstr "Tipo de proveedor del almacenamiento" #~ msgid "Provider name of the storage" #~ msgstr "Nombre del proveedor del almacenamiento" gnome-todo-3.18.1/po/eu.po000066400000000000000000000255711260744630400152630ustar00rootroot00000000000000# Basque translation for gnome-todo. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Iñaki Larrañaga Murgoitio , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo gnome-3-18\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-10-14 12:30+0200\n" "PO-Revision-Date: 2015-10-13 22:57+0200\n" "Last-Translator: Iñaki Larrañaga Murgoitio \n" "Language-Team: Basque >\n" "Language: eu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.5\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Egitekoak" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Egitekoen kudeatzailea GNOMErako" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOMEren Egitekoak zereginak kudeatzeko aplikazio xume bat da GNOMErekin " "bateratzeko diseinatuta." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Zerrenda berria…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Aldatu biltegi lehenetsiaren kokalekua…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "Honi _buruz" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "I_rten" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Garbitu burututako zeregina…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Kudeatu zure zeregin pertsonalak" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "zeregina;eraginkortasuna;produktibitatea;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Leihoa maximizatua" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Maximizatutako leihoaren egoera" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Leiho-tamaina" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Leihoaren tamaina (zabalera eta altuera)" #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Leihoaren posizioa" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Leihoaren posizioa (x eta y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "GNOMEren Egitekoak aplikazioaren aurreneko exekuzioa" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Hasierako konfigurazioa lantzeko GNOMEren Egitekoak aplikazioaren aurreneko " "exekuzioa den edo ez." #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Kokaleku lehenetsia horra zerrenda berriak gehitzeko" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "Kokaleku lehenetsiaren identifikatzailea horri zerrenda berriak gehitzeko" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Xehetasunak" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Oharrak" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Mugaeguna" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Lehentasuna" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Bat ere ez" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baxua" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Ertaina" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Altua" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Ezabatu" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Ongi etorri" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Hasi saioa lineako kontuetan zure zereginak atzitzeko" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Utzi" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Eginda" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Ez da zereginik aurkitu" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Zereginak gehi diezaiekezu zerrendei Zerrendak ikuspegian" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Erakutsi edo ezkutatu burututako zereginak" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Hautatu biltegi lehenetsiaren kokalekua zereginen zerrendak sortzeko:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Biltegi lehenetsiaren kokalekua" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Sortu" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Zerrenda-izena" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Hautatu biltegi baten kokalekua" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Desaktibatu" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Egin klik Google-eko kontu berri bat gehitzeko" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Egin klik ownCloud-eko kontu berri bat gehitzeko" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Egin klik 'Microsoft Exchange'-ko kontu berri bat gehitzeko" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Edo zure zereginak ordenagailu honetan gorde ditzakezu" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Zeregin berria…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Zerrendak" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Gaur" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planifikatua" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Aldatu izena" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Zerrenda berria" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Zereginen zerrendaren izena" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright-a © %d 'To Do'-ko (Egitekoak) egileak" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright-a © %d-%d 'To Do'-ko (Egitekoak) egileak" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Egitekoak" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Iñaki Larrañaga Murgoitio " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Errorea CSS iturburutik kargatzean" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Data ezarri gabe" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Errorea GNOMEren Lineako Kontuak kargatzean" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Errorea zereginen zerrenda gordetzean" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Errorea zereginen zerrenda kentzean" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Errorea zereginen zerrenda sortzean" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Errorea zeregina sortzean" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Errorea zeregina kentzean" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Errorea zeregina eguneratzean" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Huts egin du kredentzialak eskatzean" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Huts egin du honen kredentzialak eskatzean:" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Autentifikazioak huts egin du" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Errorea zereginak zerrendatik eskuratzean" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Zereginen zerrendaren iturburura ongi konektatuta" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Huts egin du zereginen zerrenden iturburuarekin konektatzean" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Jadanik kargatutako zereginen zerrenda saltatzen " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Errorea zereginen kudeatzailea kargatzean" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Zereginik ez" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "%s zeregina kenduta" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Desegin" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Bihar" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Atzo" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Kendu hautatutako zereginen zerrendak?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Behin kendutakoan, zereginen zerrendak ezin izango dira berreskuratu." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Kendu zereginen zerrendak" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Zereginen zerrendaren kolore berriaren ezarpena" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Zure zereginen zerrenda kargatzen…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Egin klik zereginen zerrendan hautatzeko" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Errorea zereginen zerrenda berria sortzean" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Ordenagailu honetan" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokala" gnome-todo-3.18.1/po/fa.po000066400000000000000000000303551260744630400152340ustar00rootroot00000000000000# Persian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Arash Mousavi , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-11 08:38+0000\n" "PO-Revision-Date: 2015-09-15 23:58+0430\n" "Language-Team: Persian \n" "Language: fa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Last-Translator: Arash Mousavi \n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "فعالیت‌ها" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "مدیریت فعالیت‌ها برای گنوم" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "«فعالیت‌های گنوم» یک برنامه مدیریت وظایف است که برای یکپارچگی با گنوم طراحی " "شده است." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "فهرست جدید..." #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "تغییر محل ذخیره پیش‌فرض..." #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_درباره" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_خروج" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "پاک کردن فعالیت تکمیل شده..." #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "فعالیت‌های شخصی خود را مدیریت کنید" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;Productivity;فعالیت;کارایی;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "پنجره بیشینه شد" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "وضعیت بیشینه‌ی پنجره" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "اندازه پنجره" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "اندازه پنجره (عرض و ارتفاع)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "مکان پنجره" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "مکان پنجره (x و y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "اولین اجرای «فعالیت‌های گنوم»" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "اینکه آیا این اولین اجرای برنامه‌ی فعالیت‌هام گنوم است ( برای اجرای تنظیمات " "اولیه) یا خیر" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "مکان پیش‌فرض برای اضافه کردن فهرست‌ها" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "شناسه مکان پیش‌فرض برای اضافه کردن فهرست‌های جدید" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "جزئیات" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "نوشته‌ها" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "تاریخ پایان" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "الویت" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "هیچکدام" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "پایین" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "متوسط" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "بالا" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "حذف" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "خوش آمدید" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "ورود به حساب‌های برخط برای دسترسی به فعالیت‌ها خود" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "لغو" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "اعمال" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "هیچ فعالیتی پیدا نشد" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" "شما می‌توانید فعالیت‌ها را به فهرست‌ها از طریق نمای فهرست‌ها اضافه کنید" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "نمایش یا مخفی کردن فعالیت‌های تکمیل شده" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "مکان پیش‌فرض برای ساخت فهرست فعالیت‌ها:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "مکان پیش‌فرض ذخیره" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "ساخت" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "نام فهرست" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "انتخاب یک مکان ذخیره" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "خاموش" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "برای اضافه کردن یک حساب گوگل جدید کلیک کنید" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "گوگل" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "برای اضافه کردن یک حساب جدید ownCloud کلیک کنید" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "برای اضافه کردن یک حسال جدید مایکروسافت Exchange کلیک کنید" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "مایکروسافت Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "یا اینکه می‌توانید فعالیت‌های خود را روی همین رایانه ذخیره کنید" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "فعالیت جدید..." #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "فهرست‌ها" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "امروز" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "برنامه‌ریزی شده" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "تغییر نام" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "فهرست جدید" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "نام فهرست فعالیت‌ها" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "حق رونوشت © %Id توسعه‌دهندگان فعالیت‌ها" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "حق رونوشت © %Id-%Id توسعه‌دهندگان فعالیت‌ها" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "فعالیت" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "آرش موسوی " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "خطا در بارگیری CSS از منبع" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "هیچ تاریخی ثبت نشده" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "خطا در هنگام بارگیری حساب‌های برخط گنوم" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "خطا در ذخیره فهرست فعالیت‌ها" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "خطا در حذف فهرست فعالیت‌ها" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "خطا در حذف فهرست فعالیت‌ها" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "خطا در هنگام ساخت فعالیت" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "خطا در هنگام حذف فعالیت" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "خطا در بروزرسانی فعالیت" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "درخواست برای اطلاعات گذرواژه شکست خورد" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "درخواست برای اطلاعات گذرواژه شکست خورد:" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "تصدیق هویت شکست خورد" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "خطا در هنگام گرفتن فعالیت‌ها از فهرست" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "منبع فهرست فعالیت‌ها بطور موفقیت‌آمیزی متصل شد" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "اتصال به منبع فهرست فعالیت‌ها شکست خورد" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "رد شدن از فهرست فعالیتی که پیشتر بارگیری شده" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "خطا در هنگام بارگیری مدیر فعالیت‌ها" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "بدون فعالیت" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "فعالیت %s حذف شد" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "برگردان" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "فردا" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "دیروز" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "حذف فهرست‌های فعالیت انتخاب شده؟" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "بعد از حذف کردن، دیگر امکان برگرداندن فهرست فعالیت‌ها نیست." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "حذف فهرست فعالیت" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "انتخاب رنگ جدید برای فهرست فعالیت" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "بارگیری فهرست‌های فعالیت شما..." #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "برای انتخاب روی یک فهرست فعالیت کلیک کنید" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "خطا در هنگام ساخت یک فهرست فعالیت" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "بر روی این رایانه" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "محلی" gnome-todo-3.18.1/po/fi.po000066400000000000000000000255121260744630400152430ustar00rootroot00000000000000# Finnish translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # FIRST AUTHOR , YEAR. # Jiri Grönroos , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-05 08:33+0000\n" "PO-Revision-Date: 2015-09-06 13:58+0300\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: suomi \n" "Language: fi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Tehtävälista" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Tehtävien hallinta Gnomelle" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Gnomen tehtäväsovellus on helppokäyttöinen työkalu tehtävien hallintaan." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Uusi lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Muuta tallennustilan oletussijaintia…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Tietoja" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Lopeta" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Tyhjennä valmistunut tehtävä…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Hallitse omia tehtäviäsi" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;Productivity;tehtävä;tuottavuus;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Ikkuna suurennettu" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Ikkunan suurennettu tila" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Ikkunan koko" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Ikkunan koko (leveys ja korkeus)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Ikkunan sijainti" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Ikkunan sijainti (x ja y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Gnomen tehtävien ensimmäinen käynnistyskerta" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Käynnistetäänkö Gnomen tehtäväsovellus ensimmäistä kertaa vai ei (eli " "käynnistetäänkö ensikerran toimenpiteet)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Oletussijainti, johon uudet listat lisätään" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Tunniste oletussijainnille, johon uudet listat lisätään" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Tiedot" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Huomautukset" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Eräpäivä" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioriteetti" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ei mitään" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Matala" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Normaali" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Korkea" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Poista" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Tervetuloa" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Kirjaudu verkkotileihisi käyttääksesi tehtävälistoja" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Peru" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Valmis" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Tehtäviä ei löytynyt" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Voit lisätä tehtäviä listoihin Listat-näkymässä" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Näytä tai piilota valmistuneet tehtävät" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Valitse tallennustilan oletussijainti luodaksesi tehtävälistoja:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Tallennustilan oletussijainti" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Luo" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listan nimi" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Valitse tallennustilan sijainti" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Pois" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Napsauta lisätäksesi Google-tilin" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Napsauta lisätäksesi ownCloud-tilin" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Napsauta lisätäksesi Microsoft Exchange -tilin" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Tai halutessasi voit tallettaa tehtäväsi tälle tietokoneelle" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Uusi tehtävä…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listat" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Tänään" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Ajastetut" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Nimeä uudelleen" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Uusi lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Tehtävälistan nimi" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Tekijänoikeus © %d The To Do -sovelluksen tekijät" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Tekijänoikeus © %d–%d The To Do -sovelluksen tekijät" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Tehtävät" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Jiri Grönroos" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Virhe ladatessa CSS:ää resurssista" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Päivää ei ole asetettu" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Virhe ladatessa Gnomen verkkotilejä" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Virhe tehtävälistaa tallennettaessa" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Virhe tehtävälistaa poistaessa" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Virhe tehtävälistaa luotaessa" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Virhe tehtävää luotaessa" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Virhe tehtävää poistaessa" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Virhe tehtävää päivittäessä" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Käyttäjätunnuksen kysely epäonnistui" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Käyttäjätunnuksen kysely epäonnistui käyttäjälle" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Tunnistautumisvirhe" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Virhe hakiessa tehtäviä listalta" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Tehtävälistan lähde yhdistetty onnistuneesti" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Yhteys tehtävälistan lähteeseen epäonnistui" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Ohitetaan jo ladattu tehtävälista" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Virhe tehtävähallintaa ladatessa" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Ei tehtäviä" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Tehtävä %s poistettu" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Kumoa" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Huomenna" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Eilen" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Poistetaanko valitut tehtävälistat?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Kun tehtävälistat on poistettu, niitä ei voi palauttaa." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Poista tehtävälistat" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Asetetaan uusi väri tehtävälistalle" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Ladataan tehtävälistoja…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Napsauta tehtävälistaa valitaksesi" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Virhe luotaessa uutta tehtävälistaa" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Tällä tietokoneella" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Paikallinen" gnome-todo-3.18.1/po/fr.po000066400000000000000000000533371260744630400152620ustar00rootroot00000000000000# French translation of gnome-todo. # Copyright (C) 1998-2012 Free Software Foundation, Inc. # This file is under the same license as the gnome-todo package. # # Erwan Georget , 2015. # Alain Lojewski , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo HEAD\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 12:40+0000\n" "PO-Revision-Date: 2015-09-07 16:29+0200\n" "Last-Translator: Alain Lojewski \n" "Language-Team: français \n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.4\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Tâches" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Le gestionnaire de tâches de GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Tâches est un simple gestionnaire de tâches destiné à être intégré dans " "GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nouvelle Liste..." #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Modification de l'emplacement de stockage par défaut..." #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "À _propos" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Quitter" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Effacer les tâches terminées…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gérer vos tâches personnelles" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tâche;Productivité;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Fenêtre maximisée" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "État de maximisation de la fenêtre" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Taille de la fenêtre" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Taille de la fenêtre (largeur et hauteur)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Position de la fenêtre" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Position de la fenêtre (x et y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Premier lancement de GNOME To Do" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Indique s'il s'agit du premier lancement de GNOME To Do (pour lancer la " "configuration initiale)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Emplacement par défaut pour l'ajout de nouvelles listes" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "L'identifiant de l'emplacement par défaut pour l'ajout de nouvelles listes" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Détails" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notes" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Date d'échéance" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorité" # En considérant qu'il s'agit bien de chaine en rapport avec la priorité #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Aucune" # En considérant qu'il s'agit bien de chaine en rapport avec la priorité #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Basse" # En considérant qu'il s'agit bien de chaine en rapport avec la priorité #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Moyenne" # En considérant qu'il s'agit bien de chaine en rapport avec la priorité #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Haute" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Supprimer" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Bienvenue" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "S’authentifier à des comptes en ligne pour accéder à vos tâches" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Annuler" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Terminé" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Aucune tâche trouvée" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Vous pouvez ajouter des tâches dans la vue en Liste" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Afficher ou masquer les tâches terminées" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Sélectionner l'emplacement par défaut où créer des listes de tâches :" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Emplacement de stockage par défaut" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Créer" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nom de la liste" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Sélectionner un emplacement de stockage" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Désactiver" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Cliquer pour ajouter un nouveau compte Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Cliquer pour ajouter un nouveau compte ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Cliquer pour ajouter un nouveau compte Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Sinon vous pouvez juste enregistrer vos tâches sur cet ordinateur" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nouvelle tâche..." #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listes" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Aujourd'hui" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Prévu pour" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Renommer" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nouvelle liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nom de la liste de tâches" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Les auteurs de To Do" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d-%d Les auteurs de To Do" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Erwan Georget \n" "Alain Lojewski " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Erreur de chargement du CSS depuis les sources" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Aucune date définie" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Erreur de chargement des Comptes en ligne GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Erreur d'enregistrement de la tâche" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Erreur de suppression de la liste de tâches" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Erreur lors de la création de la liste de tâches" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Erreur de création de la tâche" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Erreur de suppression de la tâche" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Erreur de mise à jour de la tâche" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Échec de demande d'identification" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Échec de demande d'identification pour" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Échec d'authentification" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Erreur de récupération de la tâche en provenance de la liste" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Source de la liste de tâches connectée avec succès" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Échec de connexion avec la source de la liste de tâches" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Liste de tâches ignorée car déjà chargée" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Erreur de chargement du gestionnaire de tâches" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Aucune tâche" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Tâche %s supprimée" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Annuler" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Demain" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Hier" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Supprimer la liste de tâches sélectionnée ?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Une fois supprimée, la liste de tâches est perdue définitivement." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Supprimer la liste de tâches" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Définition d'une nouvelle couleur pour la liste de tâches" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Chargement de votre liste de tâches..." #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Cliquez sur une liste de tâches pour la sélectionner" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Erreur lors de la création de la nouvelle liste de tâches" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Sur cet ordinateur" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "Gestionnaire de cette application" #~ msgid "The manager of the application" #~ msgstr "Le gestionnaire de l'application" #~ msgid "Task being edited" #~ msgstr "Tâche en cours de modification" #~ msgid "The task that is actually being edited" #~ msgstr "La tâche actuellement en cours de modification" #~ msgid "Manager of the task" #~ msgstr "Gestionnaire de la tâche" #~ msgid "The singleton manager instance of the task" #~ msgstr "L'unique instance du gestionnaire de la tâche " #~ msgid "The online accounts client of the manager" #~ msgstr "Le client des comptes en ligne du gestionnaire" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Le client des comptes en ligne GNOME chargé en lecture seule et propriété " #~ "du gestionnaire" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Indique si le client des Comptes en ligne GNOME est prêt" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Indique si le client des Comptes en ligne GNOME en lecture seule est " #~ "chargé" #~ msgid "The source registry of the manager" #~ msgstr "Le registre des sources du gestionnaire" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "Le registre des sources est chargé en lecture seule et détenu par le " #~ "gestionnaire" #~ msgid "Unique identifier of the object" #~ msgstr "Identifiant unique de l'objet" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "L'identifiant unique de l'objet, défini par le moteur de recherches" #~ msgid "Ready state of the object" #~ msgstr "L'objet est marqué prêt" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Indique si l'objet est marqué comme prêt ou non" #~ msgid "Whether the task is completed or not" #~ msgstr "Indique si la tâche est terminée ou non" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Indique si la tâche est marquée comme terminée par l'utilisateur" #~ msgid "Component of the task" #~ msgstr "Composition de la tâche" #~ msgid "The #ECalComponent this task handles." #~ msgstr "Le #ECalComponent que cette tâche gère." #~ msgid "Description of the task" #~ msgstr "Description de la tâche" #~ msgid "Optional string describing the task" #~ msgstr "Chaîne optionnelle décrivant la tâche" #~ msgid "End date of the task" #~ msgstr "Date de fin de la tâche" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Le jour où la tâche est sensée être terminée" #~ msgid "List of the task" #~ msgstr "Liste de la tâche" #~ msgid "The list that owns this task" #~ msgstr "La liste propriétaire de cette tâche" #~ msgid "Priority of the task" #~ msgstr "Priorité de la tâche" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "La priorité de la tâche. 0 signifie qu'il n'y a pas de priorité définie " #~ "et que les tâches seront triées dans l'ordre alphabétique." #~ msgid "Title of the task" #~ msgstr "Titre de la tâche" #~ msgid "The title of the task" #~ msgstr "Le titre de la tâche" #~ msgid "Color of the list" #~ msgstr "Couleur de la liste" #~ msgid "The color of the list" #~ msgstr "La couleur de la liste" #~ msgid "Whether the task list is removable" #~ msgstr "Indique si la tâche est supprimable " #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Indique si la liste de tâches peut être supprimée du système" #~ msgid "Name of the list" #~ msgstr "Nom de la liste" #~ msgid "The name of the list" #~ msgstr "Le nom de la liste" #~ msgid "Data origin of the list" #~ msgstr "Provenance des données de la liste" #~ msgid "The data origin location of the list" #~ msgstr "La provenance des données de la liste" #~ msgid "Source of the list" #~ msgstr "Source de la liste" #~ msgid "The parent source that handles the list" #~ msgstr "La source parente qui gère la liste" #~ msgid "Mode of this item" #~ msgstr "Mode de cet élément" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "Le mode de cet élément, hérité du mode du parent" #~ msgid "Whether the task list is selected" #~ msgstr "Indique si la liste de tâches est sélectionnée" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "" #~ "Indique si la liste de tâches est sélectionnée lorsqu'elle est en mode " #~ "sélection" #~ msgid "Task list of the item" #~ msgstr "Liste de tâches de cet élément" #~ msgid "The task list associated with this item" #~ msgstr "La liste de tâches associée à cet élément" #~ msgid "Manager of this window's application" #~ msgstr "Gestionnaire de la fenêtre de cette application" #~ msgid "The manager of the window's application" #~ msgstr "Les gestionnaire de la fenêtre de cette application" #~ msgid "Whether the list is readonly" #~ msgstr "Indique si cette liste est en lecture seule" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Indique si cette liste est en lecture seule, c.à.d. affiche ou non la " #~ "ligne Nouvelle Tâche" #~ msgid "Whether task rows show the list name" #~ msgstr "Indique si les lignes de tâches affichent le nom de la liste" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Indique si les lignes de tâches affichent le nom de la liste à la fin de " #~ "chaque ligne" #~ msgid "Whether completed tasks are shown" #~ msgstr "Indique si les tâches terminées doivent être affichées" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Indique si les tâches terminées doivent être visibles" #~ msgid "If the row is used to add a new task" #~ msgstr "Si cette ligne est utilisée pour ajouter une nouvelle tâche" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Indique si cette ligne est utilisée pour ajouter une nouvelle tâche" #~ msgid "Task of the row" #~ msgstr "Tâche de la ligne" #~ msgid "The task that this row represents" #~ msgstr "La tâche que cette ligne représente" #~ msgid "Mode of this window" #~ msgstr "Mode de cette fenêtre" #~ msgid "The interaction mode of the window" #~ msgstr "Le mode d’interaction de la fenêtre" #~ msgid "Whether the storage is enabled" #~ msgstr "Indique si le stockage est activé" #~ msgid "Whether the storage is available to be used." #~ msgstr "Indique si le stockage est prêt à être utilisé." #~ msgid "Icon of the storage" #~ msgstr "Icône du support de stockage" #~ msgid "The icon representing the storage location." #~ msgstr "L'icône indiquant l'emplacement du stockage." #~ msgid "Identifier of the storage" #~ msgstr "Identifiant du stockage" #~ msgid "The unique identifier of the storage location." #~ msgstr "L'identifiant unique de l'emplacement de stockage." #~ msgid "Whether the storage is the default" #~ msgstr "Indique si le support de stockage est celui par défaut" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Indique si le support de stockage est l'emplacement par défaut à utiliser." #~ msgid "Name of the storage" #~ msgstr "Nom du support de stockage" #~ msgid "The user-visible name of the storage location." #~ msgstr "Le nom visible à l'utilisateur de l'emplacement de stockage." #~ msgid "Name of the data provider of the storage" #~ msgstr "Nom du fournisseur de données du support de stockage" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "" #~ "Le nom visible à l'utilisateur du fournisseur de données de l'emplacement " #~ "de stockage." #~ msgid "GoaObject of the storage" #~ msgstr "GoaObject du support de stockage" #~ msgid "The GoaObject this storage location represents." #~ msgstr "Le GoaObject que cet emplacement de stockage représente." #~ msgid "Parent of the storage" #~ msgstr "Parent du support de stockage" #~ msgid "The parent source identifier of the storage location." #~ msgstr "L'identifiant de source parente de l'emplacement de stockage." #~ msgid "Storage of the row" #~ msgstr "Stockage de la ligne" #~ msgid "The storage that this row holds" #~ msgstr "Le stockage que contient cette ligne" #~ msgid "Show local storage row" #~ msgstr "Afficher la ligne du stockage local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Indique s'il faut afficher une ligne de stockage local à la place d'une " #~ "case à cocher" #~ msgid "Show stub rows" #~ msgstr "Afficher les lignes incomplètes" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "" #~ "Indique s'il faut afficher les lignes incomplètes de comptes n'ayant pas " #~ "été ajoutés" #~ msgid "Selects default storage row" #~ msgstr "Sélectionne la ligne de stockage par défaut" #~ msgid "Whether should select the default storage row" #~ msgstr "Indique s'il faut sélectionner la ligne de stockage par défaut" #~ msgid "Whether the notification has a primary action" #~ msgstr "Indique si la notification a une action principale" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Indique si la notification a une action principale, activée par " #~ "dépassement de sa durée de vie ou par rejet" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Indique si la notification a une action secondaire" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "" #~ "Indique si la notification a une action secondaire, activée par " #~ "l'utilisateur" #~ msgid "Text of the secondary action button" #~ msgstr "Texte du bouton de l'action secondaire" #~ msgid "The text of the secondary action button" #~ msgstr "Le texte du bouton de l'action secondaire" #~ msgid "Notification message" #~ msgstr "Message de notification" #~ msgid "The main message of the notification" #~ msgstr "Le message principal de la notification" #~ msgid "Notification timeout" #~ msgstr "Temps d'affichage de la notification" #~ msgid "The time the notification is displayed" #~ msgstr "Affiche le temps d'affichage de la notification" #~ msgid "Account of the storage" #~ msgstr "Compte du support de stockage" gnome-todo-3.18.1/po/fur.po000066400000000000000000000252751260744630400154470ustar00rootroot00000000000000# Friulian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Fabio Tomat , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo gnome-3-18\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-10-06 09:06+0000\n" "PO-Revision-Date: 2015-10-12 09:18+0200\n" "Language-Team: Friulian \n" "Language: fur\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Last-Translator: Fabio Tomat \n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "ToDo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Gjestôr des robis di fâ par GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME ToDo a je une semplice aplicazion di gjestion des ativitâts progjetade " "par integrâsi cul ambient GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Gnove liste..." #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Modifiche posizion di archiviazion predefinide..." #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Informazions" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Jes" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Plate ativitâts completadis..." #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gjestion des propriis ativitâts" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Ativitât;Produtivitât;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Barcon slargjât" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Stât dal barcon slargjât" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Dimension barcon" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Dimension barcon (largjece e altece)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posizion barcon" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posizion barcon (x e y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Prime esecuzion di GNOME ToDo" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Indiche se a je la prime volte che al ven inviât GNOME ToDo (par eseguî la " "configurazion iniziâl)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Posizion predefinide pe zonte des gnovis listis" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detais" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notis" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Date di scjadence" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritât" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nissune" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Basse" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Medie" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alte" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Elimine" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Benvignût" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Acedi ai account online par ministrâ las tôs ativitâts" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Anule" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Fat" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nissune ativitât cjatade" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Tu puedis zontâ ativitâts tes listis inte visualizazion Listis" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostre o plate lis ativitâts completadis" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Selezione la posizion di archiviazion predefinide par creâ lis listis di " "ativitâts:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Posizion di archiviazion predefinide" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Cree" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Non liste" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Selezione une posizion di archiviazion" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Studât" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Fâs clic par zontâ un gnûf account Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Fâs clic par zontâ un gnûf account ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Fâs clic par zontâ un gnûf account Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "O archiviâ lis ativitâts su chest computer" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Gnove ativitât..." #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listis" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Vuê" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planificât" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Cambie non" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Gnove liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Non de liste di ativitâts" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d i autôrs di To Do" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d i autôrs di To Do" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Fabio Tomat " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Erôr tal cjariâ il CSS de sorzint" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nissune date impostade" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Erôr tal cjariâ i account online GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Erôr tal salvâ la liste ativitâts" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Erôr tal gjavâ la liste ativitâts" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Erôr tal creâ la liste ativitâts" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Erôr tal creâ l'ativitât" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Erôr tal gjavâ l'ativitât" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Erôr tal inzornâ l'ativitât" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Autenticazion falide" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Erôr tal recuperâ lis ativitâts de liste" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Conession ae sorzint des listis di ativitâts lade a bon fin" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Conession ae sorzint des listis di ativitâts falide" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Saltât liste di ativitât za cjariade " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Erôr tal cjariâ il gjestôr ativitâts" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nissune ativitât" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Ativitât %s gjavade" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Anule" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Doman" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Îr" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Gjavâ lis listis di ativitâts selezionadis?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "" "Une volte gjavadis, lis listis di ativitâts no podaran jessi plui " "recuperadis." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Gjave listis di ativitâts" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Impostazion gnûf colôr pe liste ativitâts" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Daûr a cjariâ listis di ativitâts..." #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Fâs clic suntune liste di ativitâts par selezionâle" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Erôr tal creâ une gnove liste di ativitâts" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Su chest computer" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Locâl" gnome-todo-3.18.1/po/gl.po000066400000000000000000000517611260744630400152540ustar00rootroot00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # Fran Dieguez , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-toto 3.18\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-14 17:02+0200\n" "PO-Revision-Date: 2015-09-14 17:03+0200\n" "Last-Translator: Fran Dieguez \n" "Language-Team: gnome-l10n-gl@gnome.org\n" "Language: gl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Lista de tarefas" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Xestor de tarefas para GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Lista de tarefas de GNOME é un aplicativo de xestión de tarefas deseñado " "para integrarse con GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nova lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Cambiar a localización de almacenamento por omisión…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Sobre" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Saír" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Limpar as tarefas completadas…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Xestione as súas tarefas persoais" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tarefas;Productividade;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Xanela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Estado da xanela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Tamaño da xanela" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Tamaño da xanela (ancho e alto)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posición da xanela" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posición da xanela (x e y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Primeira execución da Lista de tarefas de GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Indica se é a primeira vez que se executa Lista de tarefas de GNOME (para " "iniciar a configuración inicial) ou non" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Localización por omisión onde engadir novas listas" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "O identificador da localización por omisión onde engadir novas listas" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detalles" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notas" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Data de vencemento" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioridade" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ningunha" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baixa" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Media" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Eliminar" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Benvido/a" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Iniciar sesión en contas en liña para acceder ás súas tarefas" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Cancelar" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Feito" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Non se atoparon tarefas" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Pode engadir tarefas para mostralas na vista de Listas" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostrar ou ocultar as tarefas completadas" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Seleccione a localización de almacenamento por omisión ao crear listas de " "tarefas:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Localización do almacenamento por omisión" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Crear" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nome da lista" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Seleccione a localización do almacenamento" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Desactivado" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Prema para engadir unha conta de Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Prema para engadir unha conta de ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Prema para engadir unha conta de Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Ou tamén pode almacenar as súas tarefas neste computador" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Novas tarefas…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listas" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hoxe" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planificada" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Renomear" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nova lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nome da lista de tarefas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Os autores da Lista de tarefas" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d-%d Os autores da Lista de tarefas" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Lista de tarefas" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Fran Diéguez , 2015." #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Prouciuse un erro ao cargar o CSS desde o recurso" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Non se estabeleceu unha data" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Produciuse un erro ao cargar as Contas en liña de GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Produciuse un erro ao gardar a lista de tarefas" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Produciuse un erro ao eliminar a lista de tarefas" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Produciuse un erro ao crear a lista de tarefas" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Produciuse un erro ao crear a tarefa" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Produciuse un erro ao eliminar a tarefa" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Produciuse un erro ao actualizar a tarefa" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Produciuse un fallo ao solicitar as credenciais" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Produciuse un fallo ao solicitar as credenciais para" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Fallo de autenticación" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Produciuse un erro ao obter as tarefas da lista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Conexión con éxito á orixe da lista de tarefas" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Produciuse un fallo ao conectarse á orixe da lista de tarefas" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Omitindo a lista de tarefas xa cargadas" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Produciuse un erro ao cargar o xestor de tarefas" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Non hai tarefas" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Tarefa %s eliminada" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Desfacer" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Mañán" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Hoxe" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Desexa eliminar as listas de tarefas seleccionadas?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Logo de eliminalas, as listas de tarefas non se poden recuperar." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Eliminar as listas de tarefas" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Estabelecendo nova cor para a lista de tarefas" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Cargando a lista de tarefas…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Prema unha lista de tarefas para seleccionala" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Produciuse un erro ao crear a nova lista de tarefas" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Neste computador" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "O xestor deste aplicativo" #~ msgid "The manager of the application" #~ msgstr "O xestor deste aplicativo" #~ msgid "Task being edited" #~ msgstr "Tarefa editándose" #~ msgid "The task that is actually being edited" #~ msgstr "A tarefa está actualmente editándose" #~ msgid "Manager of the task" #~ msgstr "Xestor da tarefa" #~ msgid "The singleton manager instance of the task" #~ msgstr "Unha instancia de xestión singleton da tarefa" #~ msgid "The online accounts client of the manager" #~ msgstr "O cliente das contas en liña do xestor" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Cliente de contas en liña de GNOME xa cargado e que pertence ao xestor" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Indica se o cliente de Contas en liña de GNOME está listo" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Indica se o cliente de só lectura de contas en liña de GNOME está cargado" #~ msgid "The source registry of the manager" #~ msgstr "O rexistro de orixe do xestor" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "Rexistro de orixe de só lectura cargado e que pertence ao xestor" #~ msgid "Unique identifier of the object" #~ msgstr "Identificador único do obxecto" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "O identificador único do boxecto, difinido polo backend" #~ msgid "Ready state of the object" #~ msgstr "Estado de preparación do obxecto" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Indica se o obxecto está marcado como listo ou non" #~ msgid "Whether the task is completed or not" #~ msgstr "Indica se a tarefa está completada ou non" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Indica se a tarefa está marcada como completada polo usuario" #~ msgid "Component of the task" #~ msgstr "Compoñente da tarefa" #~ msgid "The #ECalComponent this task handles." #~ msgstr "#ECalComponent que xestiona esta tarefa." #~ msgid "Description of the task" #~ msgstr "Descrición da tarefa" #~ msgid "Optional string describing the task" #~ msgstr "Cade de texto opcional que describe a tarefa" #~ msgid "End date of the task" #~ msgstr "Data de final da tarefa" #~ msgid "The day the task is supposed to be completed" #~ msgstr "O día que a tarefa se supón que debe estar completada" #~ msgid "List of the task" #~ msgstr "Lista da tarefa" #~ msgid "The list that owns this task" #~ msgstr "A lista á que pertence esta tarefa" #~ msgid "Priority of the task" #~ msgstr "Prioridade da tarefa" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "A prioridade da tarefa. 0 significa que non ten prioridade, e polo tanto " #~ "as tarefas ordenaranse de forma alfabética." #~ msgid "Title of the task" #~ msgstr "Título da tarefa" #~ msgid "The title of the task" #~ msgstr "O título da tarefa" #~ msgid "Color of the list" #~ msgstr "Cor da lista" #~ msgid "The color of the list" #~ msgstr "A cor da lista" #~ msgid "Whether the task list is removable" #~ msgstr "Indica se a lista de tarefas é de só lectura" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Indica se a lista de tarefas pode eliminarse do sistema" #~ msgid "Name of the list" #~ msgstr "Nome da lista" #~ msgid "The name of the list" #~ msgstr "O nome da lista" #~ msgid "Data origin of the list" #~ msgstr "Datos de orixe da lista" #~ msgid "The data origin location of the list" #~ msgstr "Os datos de localización de orixe da lista" #~ msgid "Source of the list" #~ msgstr "Orixe da lista" #~ msgid "The parent source that handles the list" #~ msgstr "O orixe do pai que xestiona a lista" #~ msgid "Mode of this item" #~ msgstr "Modo deste elemento" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "O modo deste elemento, herdado do modo do pai" #~ msgid "Whether the task list is selected" #~ msgstr "Indica se a lista de tarefas está completada" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "" #~ "Indica se a lista de tarefas está seleccionada cando está en modo de " #~ "selección" #~ msgid "Task list of the item" #~ msgstr "A lista de tarefas do elemento" #~ msgid "The task list associated with this item" #~ msgstr "A lista de tareas asociada a este elemento" #~ msgid "Manager of this window's application" #~ msgstr "Xestor do aplicativo de xanelas" #~ msgid "The manager of the window's application" #~ msgstr "O xestor do aplicativo de xanelas" #~ msgid "Whether the list is readonly" #~ msgstr "Indica se a lista é de só lectura" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Indica se a lista é de só lectura, p.ex. non se mostra a fila Nova " #~ "tarefa, ou non" #~ msgid "Whether task rows show the list name" #~ msgstr "Indica se a lista de tarefas mostra o nome da lista" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Indica se as filas de tarefas mostran o nome da lista ao final da fila" #~ msgid "Whether completed tasks are shown" #~ msgstr "Indica se se mostran as tarefas completadas" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Indica se se mostran as tarefas completadas están visíbeis ou non" #~ msgid "If the row is used to add a new task" #~ msgstr "Se a fila se usa para engadir unha nova tarefa" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Indica se a fila se usa para engadir unha nova tarefa" #~ msgid "Task of the row" #~ msgstr "Tarefa da fila" #~ msgid "The task that this row represents" #~ msgstr "A tarefa que esta fila representa" #~ msgid "Mode of this window" #~ msgstr "Modo desta xanela" #~ msgid "The interaction mode of the window" #~ msgstr "O modo de interacción desta xanela" #~ msgid "Whether the storage is enabled" #~ msgstr "Indica se o almacenamento está activado" #~ msgid "Whether the storage is available to be used." #~ msgstr "Indica se o almacenamento está dispoñíbel para usarse." #~ msgid "Icon of the storage" #~ msgstr "Icona do almacenamento" #~ msgid "The icon representing the storage location." #~ msgstr "A icona que representa a localización do almacenamento." #~ msgid "Identifier of the storage" #~ msgstr "Identificador do almacenamento" #~ msgid "The unique identifier of the storage location." #~ msgstr "Un identificador único da localización do almacenamento." #~ msgid "Whether the storage is the default" #~ msgstr "Indica se o almacenamento está o predefinido" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Indica se o almacenamento é a localización de almacenamento predefinido " #~ "para usarse." #~ msgid "Name of the storage" #~ msgstr "Nome do almacenamento" #~ msgid "The user-visible name of the storage location." #~ msgstr "O nome visíbel polo usuario da localización de almacenamento." #~ msgid "Name of the data provider of the storage" #~ msgstr "Nome do fornecedor de datos do almacenamento" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "" #~ "O nome visible polo usuario do fornecedor dde datos da localización do " #~ "almacenamento." #~ msgid "Account of the storage" #~ msgstr "Conta do almacenamento" #~ msgid "The account of the storage location." #~ msgstr "A conta da localización de almacenamento." #~ msgid "Parent of the storage" #~ msgstr "Pai do almacenamento" #~ msgid "The parent source identifier of the storage location." #~ msgstr "O identificador de orixe pai da localización do almacenamento." #~ msgid "Storage of the row" #~ msgstr "Almacenamento da fila" #~ msgid "The storage that this row holds" #~ msgstr "O almacenamento no que está esta fila" #~ msgid "Show local storage row" #~ msgstr "Mostrar a fila de almacenamento local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Indica se se debería mostrar unha fila de almacenamento local dunha caixa " #~ "de verificacion" #~ msgid "Show stub rows" #~ msgstr "Mostrar filas auxiliares" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "" #~ "Indica se se deberían mostrar filas de código auxiliar para as contas non " #~ "engadidas" #~ msgid "Selects default storage row" #~ msgstr "Seleccione a fila de almacenamento por omisión" #~ msgid "Whether should select the default storage row" #~ msgstr "" #~ "Indica se se debería seleccionar a fila de almacenamento por omisión" #~ msgid "Whether the notification has a primary action" #~ msgstr "Indica se a notificación ten unha acción primaria" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Indica se a notificación ten unha acción primaria, activada con tempo de " #~ "espera ou omitida" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Indica se a notificación ten unha acción secundaria" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "" #~ "Indica se a notificación ten unha acción secundaria, activada polo usuario" #~ msgid "Text of the secondary action button" #~ msgstr "O texto do botón de acción secundario" #~ msgid "The text of the secondary action button" #~ msgstr "O texto do botón de acción secundario" #~ msgid "Notification message" #~ msgstr "Mensaxe de notificación" #~ msgid "The main message of the notification" #~ msgstr "O mensaxe principal da notificación" #~ msgid "Notification timeout" #~ msgstr "Tempo de espera da notificación" #~ msgid "The time the notification is displayed" #~ msgstr "O tempo que se mostra a notificación" #~ msgid "Provider type of the storage" #~ msgstr "Tipo de fornecedor do almacenamento" #~ msgid "Provider name of the storage" #~ msgstr "Nome do fornecedor do almacenamento" gnome-todo-3.18.1/po/he.po000066400000000000000000000562361260744630400152500ustar00rootroot00000000000000# Hebrew translations for gnome-todo package. # Copyright (C) 2015 THE gnome-todo'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # יוֹסֵף אוֹר בּוֹצְ׳קוֹ , 2015. # Yosef Or Boczko , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo 3.17.3\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-08-30 01:03+0300\n" "PO-Revision-Date: 2015-08-30 01:09+0300\n" "Last-Translator: Yosef Or Boczko \n" "Language-Team: עברית <>\n" "Language: he\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural= (n!=1);\n" "X-Generator: Gtranslator 2.91.7\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "משימות" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "מנהל משימות עבור GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "משימות GNOME הוא יישום ניהול משימות פשוט המעוצב להשתלב עם GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "רשימה חדשה…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "שינוי מיקום אחסון ברירת המחדל…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "על _אודות" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "י_ציאה" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "ניהול המשימות האישיות שלך" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "משימות;משימה;פריון;מטלה;מטלות;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Window maximized" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Window maximized state" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Window size" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Window size (width and height)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Window position" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Window position (x and y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "First run of GNOME To Do" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Default location to add new lists to" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "The identifier of the default location to add new lists to" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:812 msgid "Details" msgstr "פרטים" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "הערות" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "תאריך יעד" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "עדיפות" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "ללא" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "נמוך" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "בינוני" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "גבוה" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "מחיקה" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "ברוכים הבאים" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "התחברות לחשבונות מקוונים לגישה למשימות שלך" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:313 msgid "Cancel" msgstr "ביטול" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:288 msgid "Done" msgstr "בוצע" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "לא נמצאו משימות" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "ניתן להוסיף משימות לרשימות בתצוגת הרשימות" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "הצגה או הסתרת משימות שהושלמו זה מכבר" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "בחירת מיקום אחסון לברירת מחדל ליצירת רשימת משימות:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "מיקום אחסון בברירת מחדל" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "יצירה" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "שם רשימה" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "בחירת מיקום האחסון" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "כבוי" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "יש ללחוץ להוספת חשבון Google חדש" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "יש ללחוץ להוספת חשבון ownCloud חדש" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "יש ללחות להוספת חשבון Microsoft Exchange חדש" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "או באפשרותך רק לאחסן את המשימות שלך על מחשב זה" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "משימה חדשה…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "רשימות" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:516 #: ../src/gtd-window.c:521 msgid "Today" msgstr "היום" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:516 ../src/gtd-window.c:521 msgid "Scheduled" msgstr "לוח זמנים" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "שינוי שם" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "רשימה חדשה" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "שם רשימת המשימות" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "כל הזכויות שמורות © %d מחברי משימות" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "כל הזכויות שמורות © %d–%d מחברי המשימות" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:693 ../src/gtd-window.c:1260 msgid "To Do" msgstr "משימות" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "יוסף אור בוצ׳קו " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Error loading CSS from resource" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "לא נקבע תאריך" #: ../src/gtd-edit-pane.c:263 msgid "Manager of this application" msgstr "Manager of this application" #: ../src/gtd-edit-pane.c:264 msgid "The manager of the application" msgstr "The manager of the application" #: ../src/gtd-edit-pane.c:277 msgid "Task being edited" msgstr "Task being edited" #: ../src/gtd-edit-pane.c:278 msgid "The task that is actually being edited" msgstr "The task that is actually being edited" #: ../src/gtd-initial-setup-window.c:213 msgid "Manager of the task" msgstr "Manager of the task" #: ../src/gtd-initial-setup-window.c:214 msgid "The singleton manager instance of the task" msgstr "The singleton manager instance of the task" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Error loading GNOME Online Accounts" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Error saving task list" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Error removing task list" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Error creating task list" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Error creating task" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Error removing task" #: ../src/gtd-manager.c:657 ../src/gtd-manager.c:661 msgid "Error updating task" msgstr "Error updating task" #: ../src/gtd-manager.c:690 msgid "Failed to prompt for credentials" msgstr "Failed to prompt for credentials" #: ../src/gtd-manager.c:713 msgid "Failed to prompt for credentials for" msgstr "Failed to prompt for credentials for" #: ../src/gtd-manager.c:765 msgid "Authentication failure" msgstr "Authentication failure" #: ../src/gtd-manager.c:829 ../src/gtd-manager.c:833 msgid "Error fetching tasks from list" msgstr "Error fetching tasks from list" #: ../src/gtd-manager.c:899 msgid "Task list source successfully connected" msgstr "Task list source successfully connected" #: ../src/gtd-manager.c:906 ../src/gtd-manager.c:911 msgid "Failed to connect to task list source" msgstr "Failed to connect to task list source" #: ../src/gtd-manager.c:940 msgid "Skipping already loaded task list " msgstr "Skipping already loaded task list " #: ../src/gtd-manager.c:978 msgid "Error loading task manager" msgstr "Error loading task manager" #: ../src/gtd-manager.c:1139 msgid "The online accounts client of the manager" msgstr "The online accounts client of the manager" #: ../src/gtd-manager.c:1140 msgid "" "The read-only GNOME online accounts client loaded and owned by the manager" msgstr "" "The read-only GNOME online accounts client loaded and owned by the manager" #: ../src/gtd-manager.c:1153 msgid "Whether GNOME Online Accounts client is ready" msgstr "Whether GNOME Online Accounts client is ready" #: ../src/gtd-manager.c:1154 msgid "Whether the read-only GNOME online accounts client is loaded" msgstr "Whether the read-only GNOME online accounts client is loaded" #: ../src/gtd-manager.c:1167 msgid "The source registry of the manager" msgstr "The source registry of the manager" #: ../src/gtd-manager.c:1168 msgid "The read-only source registry loaded and owned by the manager" msgstr "The read-only source registry loaded and owned by the manager" #: ../src/gtd-object.c:152 msgid "Unique identifier of the object" msgstr "Unique identifier of the object" #: ../src/gtd-object.c:153 msgid "The unique identifier of the object, defined by the backend" msgstr "The unique identifier of the object, defined by the backend" #: ../src/gtd-object.c:166 msgid "Ready state of the object" msgstr "Ready state of the object" #: ../src/gtd-object.c:167 msgid "Whether the object is marked as ready or not" msgstr "Whether the object is marked as ready or not" #: ../src/gtd-task.c:254 msgid "Whether the task is completed or not" msgstr "Whether the task is completed or not" #: ../src/gtd-task.c:255 msgid "Whether the task is marked as completed by the user" msgstr "Whether the task is marked as completed by the user" #: ../src/gtd-task.c:268 msgid "Component of the task" msgstr "Component of the task" #: ../src/gtd-task.c:269 msgid "The #ECalComponent this task handles." msgstr "The #ECalComponent this task handles." #: ../src/gtd-task.c:282 msgid "Description of the task" msgstr "Description of the task" #: ../src/gtd-task.c:283 msgid "Optional string describing the task" msgstr "Optional string describing the task" #: ../src/gtd-task.c:297 msgid "End date of the task" msgstr "End date of the task" #: ../src/gtd-task.c:298 msgid "The day the task is supposed to be completed" msgstr "The day the task is supposed to be completed" #: ../src/gtd-task.c:311 msgid "List of the task" msgstr "List of the task" #: ../src/gtd-task.c:312 msgid "The list that owns this task" msgstr "The list that owns this task" #: ../src/gtd-task.c:325 msgid "Priority of the task" msgstr "Priority of the task" #: ../src/gtd-task.c:326 msgid "" "The priority of the task. 0 means no priority set, and tasks will be sorted " "alphabetically." msgstr "" "The priority of the task. 0 means no priority set, and tasks will be sorted " "alphabetically." #: ../src/gtd-task.c:341 msgid "Title of the task" msgstr "Title of the task" #: ../src/gtd-task.c:342 msgid "The title of the task" msgstr "The title of the task" #: ../src/gtd-task-list.c:264 msgid "Color of the list" msgstr "Color of the list" #: ../src/gtd-task-list.c:265 msgid "The color of the list" msgstr "The color of the list" #: ../src/gtd-task-list.c:278 msgid "Whether the task list is removable" msgstr "Whether the task list is removable" #: ../src/gtd-task-list.c:279 msgid "Whether the task list can be removed from the system" msgstr "Whether the task list can be removed from the system" #: ../src/gtd-task-list.c:292 msgid "Name of the list" msgstr "Name of the list" #: ../src/gtd-task-list.c:293 msgid "The name of the list" msgstr "The name of the list" #: ../src/gtd-task-list.c:306 msgid "Data origin of the list" msgstr "Data origin of the list" #: ../src/gtd-task-list.c:307 msgid "The data origin location of the list" msgstr "The data origin location of the list" #: ../src/gtd-task-list.c:320 msgid "Source of the list" msgstr "Source of the list" #: ../src/gtd-task-list.c:321 msgid "The parent source that handles the list" msgstr "The parent source that handles the list" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "אין משימות" #: ../src/gtd-task-list-item.c:486 msgid "Mode of this item" msgstr "Mode of this item" #: ../src/gtd-task-list-item.c:487 msgid "The mode of this item, inherited from the parent's mode" msgstr "The mode of this item, inherited from the parent's mode" #: ../src/gtd-task-list-item.c:501 msgid "Whether the task list is selected" msgstr "Whether the task list is selected" #: ../src/gtd-task-list-item.c:502 msgid "Whether the task list is selected when in selection mode" msgstr "Whether the task list is selected when in selection mode" #: ../src/gtd-task-list-item.c:515 msgid "Task list of the item" msgstr "Task list of the item" #: ../src/gtd-task-list-item.c:516 msgid "The task list associated with this item" msgstr "The task list associated with this item" #: ../src/gtd-task-list-view.c:201 #, c-format msgid "Task %s removed" msgstr "משימה %s הוסרה" #: ../src/gtd-task-list-view.c:221 msgid "Undo" msgstr "ביטול" #: ../src/gtd-task-list-view.c:656 ../src/gtd-window.c:1053 #: ../src/storage/gtd-storage-dialog.c:150 #: ../src/storage/gtd-storage-popover.c:288 #: ../src/storage/gtd-storage-selector.c:516 msgid "Manager of this window's application" msgstr "Manager of this window's application" #: ../src/gtd-task-list-view.c:657 ../src/gtd-window.c:1054 #: ../src/storage/gtd-storage-dialog.c:151 #: ../src/storage/gtd-storage-popover.c:289 #: ../src/storage/gtd-storage-selector.c:517 msgid "The manager of the window's application" msgstr "The manager of the window's application" #: ../src/gtd-task-list-view.c:670 msgid "Whether the list is readonly" msgstr "Whether the list is readonly" #: ../src/gtd-task-list-view.c:671 msgid "" "Whether the list is readonly, i.e. doesn't show the New Task row, or not" msgstr "" "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #: ../src/gtd-task-list-view.c:684 msgid "Whether task rows show the list name" msgstr "Whether task rows show the list name" #: ../src/gtd-task-list-view.c:685 msgid "Whether task rows show the list name at the end of the row" msgstr "Whether task rows show the list name at the end of the row" #: ../src/gtd-task-list-view.c:698 msgid "Whether completed tasks are shown" msgstr "Whether completed tasks are shown" #: ../src/gtd-task-list-view.c:699 msgid "Whether completed tasks are visible or not" msgstr "Whether completed tasks are visible or not" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "מחר" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "אתמול" #: ../src/gtd-task-row.c:372 msgid "If the row is used to add a new task" msgstr "If the row is used to add a new task" #: ../src/gtd-task-row.c:373 msgid "Whether the row is used to add a new task" msgstr "Whether the row is used to add a new task" #: ../src/gtd-task-row.c:386 msgid "Task of the row" msgstr "Task of the row" #: ../src/gtd-task-row.c:387 msgid "The task that this row represents" msgstr "The task that this row represents" #: ../src/gtd-window.c:306 msgid "Remove the selected task lists?" msgstr "למחוק את רשימות המשימות הנבחרות?" #: ../src/gtd-window.c:309 msgid "Once removed, the task lists cannot be recovered." msgstr "לאחר ביצוע מחיקה, רשימות המשימות לא ניתנות לאחזור." #: ../src/gtd-window.c:321 msgid "Remove task lists" msgstr "מחיקת רשימות משימות" #: ../src/gtd-window.c:577 msgid "Setting new color for task list" msgstr "Setting new color for task list" #: ../src/gtd-window.c:1067 msgid "Mode of this window" msgstr "Mode of this window" #: ../src/gtd-window.c:1068 msgid "The interaction mode of the window" msgstr "The interaction mode of the window" #: ../src/gtd-window.c:1119 msgid "Loading your task lists…" msgstr "רשימות המשימות שלך בטעינה…" #: ../src/gtd-window.c:1247 msgid "Click a task list to select" msgstr "יש ללחוץ על רשימת משימות לבחירה" #: ../src/storage/gtd-storage.c:153 msgid "Whether the storage is enabled" msgstr "Whether the storage is enabled" #: ../src/storage/gtd-storage.c:154 msgid "Whether the storage is available to be used." msgstr "Whether the storage is available to be used." #: ../src/storage/gtd-storage.c:167 msgid "Icon of the storage" msgstr "Icon of the storage" #: ../src/storage/gtd-storage.c:168 msgid "The icon representing the storage location." msgstr "The icon representing the storage location." #: ../src/storage/gtd-storage.c:181 msgid "Identifier of the storage" msgstr "Identifier of the storage" #: ../src/storage/gtd-storage.c:182 msgid "The unique identifier of the storage location." msgstr "The unique identifier of the storage location." #: ../src/storage/gtd-storage.c:195 msgid "Whether the storage is the default" msgstr "Whether the storage is the default" #: ../src/storage/gtd-storage.c:196 msgid "Whether the storage is the default storage location to be used." msgstr "Whether the storage is the default storage location to be used." #: ../src/storage/gtd-storage.c:209 msgid "Name of the storage" msgstr "Name of the storage" #: ../src/storage/gtd-storage.c:210 msgid "The user-visible name of the storage location." msgstr "The user-visible name of the storage location." #: ../src/storage/gtd-storage.c:223 msgid "Name of the data provider of the storage" msgstr "Name of the data provider of the storage" #: ../src/storage/gtd-storage.c:224 msgid "The user-visible name of the data provider of the storage location." msgstr "The user-visible name of the data provider of the storage location." #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Error creating new task list" #: ../src/storage/gtd-storage-goa.c:222 msgid "GoaObject of the storage" msgstr "GoaObject of the storage" #: ../src/storage/gtd-storage-goa.c:223 msgid "The GoaObject this storage location represents." msgstr "The GoaObject this storage location represents." #: ../src/storage/gtd-storage-goa.c:236 msgid "Parent of the storage" msgstr "Parent of the storage" #: ../src/storage/gtd-storage-goa.c:237 msgid "The parent source identifier of the storage location." msgstr "The parent source identifier of the storage location." #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "במחשב זה" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "מקומי" #: ../src/storage/gtd-storage-row.c:148 msgid "Storage of the row" msgstr "Storage of the row" #: ../src/storage/gtd-storage-row.c:149 msgid "The storage that this row holds" msgstr "The storage that this row holds" #: ../src/storage/gtd-storage-selector.c:530 msgid "Show local storage row" msgstr "Show local storage row" #: ../src/storage/gtd-storage-selector.c:531 msgid "Whether should show a local storage row instead of a checkbox" msgstr "Whether should show a local storage row instead of a checkbox" #: ../src/storage/gtd-storage-selector.c:544 msgid "Show stub rows" msgstr "Show stub rows" #: ../src/storage/gtd-storage-selector.c:545 msgid "Whether should show stub rows for non-added accounts" msgstr "Whether should show stub rows for non-added accounts" #: ../src/storage/gtd-storage-selector.c:558 msgid "Selects default storage row" msgstr "Selects default storage row" #: ../src/storage/gtd-storage-selector.c:559 msgid "Whether should select the default storage row" msgstr "Whether should select the default storage row" #: ../src/notification/gtd-notification.c:181 msgid "Whether the notification has a primary action" msgstr "Whether the notification has a primary action" #: ../src/notification/gtd-notification.c:182 msgid "" "Whether the notification has the primary action, activated on timeout or " "dismiss" msgstr "" "Whether the notification has the primary action, activated on timeout or " "dismiss" #: ../src/notification/gtd-notification.c:196 msgid "Whether the notification has a secondary action" msgstr "Whether the notification has a secondary action" #: ../src/notification/gtd-notification.c:197 msgid "" "Whether the notification has the secondary action, activated by the user" msgstr "" "Whether the notification has the secondary action, activated by the user" #: ../src/notification/gtd-notification.c:210 msgid "Text of the secondary action button" msgstr "Text of the secondary action button" #: ../src/notification/gtd-notification.c:211 msgid "The text of the secondary action button" msgstr "The text of the secondary action button" #: ../src/notification/gtd-notification.c:224 msgid "Notification message" msgstr "Notification message" #: ../src/notification/gtd-notification.c:225 msgid "The main message of the notification" msgstr "The main message of the notification" #: ../src/notification/gtd-notification.c:238 msgid "Notification timeout" msgstr "Notification timeout" #: ../src/notification/gtd-notification.c:239 msgid "The time the notification is displayed" msgstr "The time the notification is displayed" #~ msgid "Provider type of the storage" #~ msgstr "Provider type of the storage" #~ msgid "Provider name of the storage" #~ msgstr "Provider name of the storage" gnome-todo-3.18.1/po/hu.po000066400000000000000000000256671260744630400152740ustar00rootroot00000000000000# Hungarian translation for gnome-todo. # Copyright (C) 2015. Free Software Foundation, Inc. # This file is distributed under the same license as the gnome-todo package. # # Balázs Meskó , 2015. # Gabor Kelemen , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-02 08:19+0200\n" "Last-Translator: Balázs Úr \n" "Language-Team: Hungarian \n" "Language: hu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Lokalize 1.5\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Tennivalók" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Tennivaló-kezelő a GNOME-hoz" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "A GNOME Tennivalók egy egyszerű tennivaló-kezelő alkalmazás a GNOME-hoz." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Új lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Alapértelmezett tárhely módosítása…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Névjegy" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Kilépés" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Befejezett feladat törlése…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Személyes feladatok kezelése" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Feladat;Teendő;Tennivaló;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Ablak teljes méretű" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Az ablak maximalizált állapota" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Ablakméret" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Ablak mérete (szélesség és magasság)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Ablakpozíció" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Ablakpozíció (x és y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "A Tennivalók első indítása" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "Ez-e a Tennivalók első indítása (a kezdeti beállítás futtatása miatt)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Alapértelmezett hely, ahová az új listák kerülnek" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Az alapértelmezett hely azonosítója, ahová az új listák kerülnek" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Részletek" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Jegyzetek" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Esedékesség" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Fontosság" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nincs" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Alacsony" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Közepes" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Magas" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Törlés" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Üdvözöljük" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Jelentkezzen be online fiókokba a feladatai eléréséhez" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Mégse" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Kész" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nincsenek feladatok" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "A listákhoz feladatokat a Listák nézetben adhat hozzá." #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Befejezett feladatok megjelenítése vagy elrejtése" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Válassza ki az alapértelmezett helyet az új listákhoz:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Alapértelmezett tárhely" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Létrehozás" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listanév" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Válassza ki a tárolási helyet" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Ki" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Kattintson egy új Google fiók hozzáadásához" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Kattintson egy új ownCloud fiók hozzáadásához" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Kattintson egy új Microsoft Exchange fiók hozzáadásához" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Vagy tárolhatja a feladatait ezen a számítógépen" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Új feladat…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listák" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Ma" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Ütemezett" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Átnevezés" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Új lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Feladatlista neve" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d A Tennivalók szerzői" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d-%d A Tennivalók szerzői" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Tennivaló" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Meskó Balázs " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Hiba a CSS erőforrásból történő betöltése során" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nincs dátum beállítva" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Hiba a GNOME Online fiókok betöltése során" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Hiba a feladatlista mentésekor" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Hiba a feladatlista eltávolításakor" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Hiba a feladatlista létrehozásakor" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Hiba a feladat létrehozásakor" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Hiba a feladat eltávolításakor" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Hiba a feladat módosításakor" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Nem sikerült a hitelesítési adatok bekérése" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Nem sikerült a hitelesítési adatok bekérése a következőhöz:" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Hitelesítési hiba" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Nem sikerült a feladatok lekérése a listából" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Sikeres kapcsolódás a feladatlista-forráshoz" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Nem sikerült a kapcsolódás a feladatlista-forráshoz" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "A már betöltött feladatlista kihagyása " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Nem sikerült a feladatkezelő betöltése" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nincsenek feladatok" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "A feladat (%s) törölve" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Visszavonás" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Holnap" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Tegnap" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Törli a kiválasztott feladatlistákat?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "A törlés után a feladatlisták nem állíthatóak vissza." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Feladatlisták törlése" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Új szín beállítása a feladatlistához" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Feladatlisták betöltése…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Válasszon egy feladatlistát" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Hiba a feladatlista létrehozásakor" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Ezen a számítógépen" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Helyi" gnome-todo-3.18.1/po/id.po000066400000000000000000000377671260744630400152600ustar00rootroot00000000000000# Indonesian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Ade Malsasa Akbar , 2015. # Andika Triwidada , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 12:40+0000\n" "PO-Revision-Date: 2015-09-15 10:04+0700\n" "Last-Translator: Andika Triwidada \n" "Language-Team: Indonesian\n" "Language: id\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.8.4\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Todo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Manajer todo untuk GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Todo adalah aplikasi manajemen tugas sederhana yang didesain untuk " "berintegrasi dengan GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Daftar Baru…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Ubah lokasi penyimpanan baku" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "Tent_ang" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Keluar" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Bersihkan tugas yang telah selesai…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Kelola tugas pribadi Anda" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tugas;Produktivitas;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Jendela termaksimalkan" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Keadaan jendela termaksimalkan" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Ukuran jendela" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Ukuran jendela (panjang dan lebar)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posisi jendela" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posisi jendela (x dan y)" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Pertama kali menjalankan GNOME To Do" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Apakah ini pertama kalinya GNOME To Do dijalankan (untuk menjalankan " "pengaturan awal) atau bukan" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Lokasi baku untuk menambahkan daftar baru" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Tanda pengenal lokasi baku untuk menambahkan daftar baru" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Rincian" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Catatan" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Jatuh Tempo " #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritas" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nihil" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Rendah" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Menengah" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Tinggi" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Hapus" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Selamat Datang" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Login ke akun daring untuk mengakses tugas Anda" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Batal" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Berhasil" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Tidak ada tugas ditemukan" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Anda bisa menambahkan tugas pada daftar dalam tampilan Daftar" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Tampilkan atau sembunyikan tugas selesai" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Pilih lokasi penyimpanan baku untuk membuat daftar tugas:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Lokasi penyimpanan baku" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Buat" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nama Daftar" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Pilih lokasi penyimpanan" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Mati" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "klik untuk menambahkan Google account baru" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Klik untuk menambahkan akun ownCloud baru" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klik untuk menambahkan akun Microsoft Exchange baru" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Atau Anda bisa menyimpan tugas Anda pada komputer ini" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Tugas baru…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Daftar" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hari Ini" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Terjadwal" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Rename" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Daftar Baru" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nama untuk daftar tugas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Hak Cipta © %d The To Do authors" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Hak Cipta © %d–%d The To Do authors" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Ade Malsasa Akbar , 2015.\n" "Andika Triwidada , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Galat saat memuat CSS dari sumber" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Tidak ada tanggal ditentukan" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Galat saat memuat Akun Daring GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Galat menyimpan daftar tugas" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Galat menghapus daftar tugas" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Galat saat membuat daftar tugas" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Galat membuat tugas" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Galat menghapus tugas" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Galat memutakhirkan tugas" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Gagal meminta kredensial" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Gagal meminta kredensial untuk" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Otentikasi gagal" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Galat mengambil tugas dari daftar" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Berhasil terhubung dengan sumber daftar tugas" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Gagal terhubung ke sumber daftar tugas" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Melompati daftar tugas yang sudah dimuat" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Galat memuat pengelola tugas" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Tidak ada tugas" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Tugas %s dihapus" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Undo" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Besok" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Kemarin" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Hapus daftar tugas ini?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Jika dihapus, daftar tugas tidak bisa dikembalikan." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Hapus daftar tugas" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Mengatur warna baru untuk daftar tugas" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Memuat daftar tugas Anda…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Klik sebuah daftar tugas untuk memilih" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Galat membuat daftar tugas baru" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Pada Komputer Ini" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokal" #~ msgid "Manager of this application" #~ msgstr "Pengelola aplikasi ini" #~ msgid "The manager of the application" #~ msgstr "Pengelola aplikasi ini" #~ msgid "Task being edited" #~ msgstr "Tugas yang sedang disunting" #~ msgid "The task that is actually being edited" #~ msgstr "Tugas yang sedang disunting" #~ msgid "Manager of the task" #~ msgstr "Pengelola tugas" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Klien akun daring GNOME read-only telah dimuat dan dimiliki oleh pengelola" #~ msgid "The source registry of the manager" #~ msgstr "Sumber registry dari pengelola" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "Sumber registry read-only telah dimuat dan dimiliki oleh pengelola" #~ msgid "Unique identifier of the object" #~ msgstr "Tanda pengenal unik untuk objek" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "Tanda pengenal unik untuk objek, didefinisikan oleh backend" #~ msgid "Ready state of the object" #~ msgstr "Keadaan siap untuk objek" #~ msgid "Component of the task" #~ msgstr "Komponen dari tugas" #~ msgid "The #ECalComponent this task handles." #~ msgstr "#ECalComponent yang ditangani tugas ini." #~ msgid "Description of the task" #~ msgstr "Deskripsi dari tugas" #~ msgid "Optional string describing the task" #~ msgstr "String lain yang menggambarkan tugas" #~ msgid "End date of the task" #~ msgstr "Tanggal akhir dari tugas" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Hari tugas harus selesai" #~ msgid "List of the task" #~ msgstr "Daftar tugas" #~ msgid "The list that owns this task" #~ msgstr "Daftar yang memiliki tugas ini" #~ msgid "Priority of the task" #~ msgstr "Prioritas tugas" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "Prioritas tugas. 0 berarti tanpa prioritas, dan tugas akan diurutkan " #~ "secara alfabetis." #~ msgid "Title of the task" #~ msgstr "Judul tugas" #~ msgid "The title of the task" #~ msgstr "Judul dari tugas" #~ msgid "Color of the list" #~ msgstr "Warna daftar" #~ msgid "The color of the list" #~ msgstr "Warna dari daftar" #~ msgid "Name of the list" #~ msgstr "Nama daftar" #~ msgid "The name of the list" #~ msgstr "Nama dari daftar" #~ msgid "Data origin of the list" #~ msgstr "Sumber data dari daftar" #~ msgid "The data origin location of the list" #~ msgstr "Lokasi asal data untuk daftar" #~ msgid "Source of the list" #~ msgstr "Sumber daftar" #~ msgid "The parent source that handles the list" #~ msgstr "Sumber parent yang memiliki daftar ini" #~ msgid "Mode of this item" #~ msgstr "Mode dari item ini" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "Mode dari item ini, diwarisi dari mode parent-nya" #~ msgid "Task list of the item" #~ msgstr "Daftar tugas dari item" #~ msgid "The task list associated with this item" #~ msgstr "Daftar tugas yang berhubungan dengan item ini" #~ msgid "If the row is used to add a new task" #~ msgstr "Jika baris digunakan untuk menambahkan tugas baru" #~ msgid "Task of the row" #~ msgstr "Tugas baris" #~ msgid "The task that this row represents" #~ msgstr "Tugas yang ditayangkan baris ini" #~ msgid "Mode of this window" #~ msgstr "Mode untuk jendela ini" #~ msgid "The interaction mode of the window" #~ msgstr "Mode interaksi jendela" #~ msgid "Icon of the storage" #~ msgstr "Ikon penyimpanan" #~ msgid "The icon representing the storage location." #~ msgstr "Ikon yang menggambarkan lokasi penyimpanan." #~ msgid "Identifier of the storage" #~ msgstr "Tanda pengenal penyimpanan" #~ msgid "The unique identifier of the storage location." #~ msgstr "Tanda pengenal unik dari lokasi penyimpanan." #~ msgid "Name of the storage" #~ msgstr "Nama penyimpanan" #~ msgid "The user-visible name of the storage location." #~ msgstr "Nama yang user-visible untuk lokasi penyimpanan" #~ msgid "Parent of the storage" #~ msgstr "Parent dari penyimpanan" #~ msgid "The parent source identifier of the storage location." #~ msgstr "Tanda pengenal sumber parent dari lokasi penyimpanan." #~ msgid "Provider type of the storage" #~ msgstr "Jenis penyedia penyimpanan" #~ msgid "The provider type of the storage location." #~ msgstr "Jenis penyedia lokasi penyimpanan." #~ msgid "Provider name of the storage" #~ msgstr "Nama penyedia penyimpanan" #~ msgid "The name of the provider of the storage location." #~ msgstr "Nama dari penyedia lokasi penyimpanan." #, fuzzy #~ msgid "Storage of the row" #~ msgstr "Penyimpanan dari baris" #, fuzzy #~ msgid "The storage that this row holds" #~ msgstr "Penyimpanan yang dipegang baris ini" #~ msgid "Show local storage row" #~ msgstr "Tampilkan baris penyimpanan lokal" #~ msgid "Show stub rows" #~ msgstr "Tayangkan baris-baris rintisan" #~ msgid "Selects default storage row" #~ msgstr "Pilih baris penyimpanan baku" #~ msgid "Text of the secondary action button" #~ msgstr "Teks dari tombol aksi sekunder" #~ msgid "The text of the secondary action button" #~ msgstr "Teks dari tombol aksi sekunder" #~ msgid "Notification message" #~ msgstr "Pesan notifikasi" #~ msgid "The main message of the notification" #~ msgstr "Pesan utama notifikasi" #~ msgid "Notification timeout" #~ msgstr "Timeout notifikasi" #~ msgid "The time the notification is displayed" #~ msgstr "Seberapa lama notifikasi ditampilkan" gnome-todo-3.18.1/po/it.po000066400000000000000000000263551260744630400152670ustar00rootroot00000000000000# Italian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Claudio Arseni , 2015. # Claudio Arseni , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-30 08:59+0000\n" "PO-Revision-Date: 2015-09-30 11:58+0200\n" "Last-Translator: Claudio Arseni \n" "Language-Team: tp@lists.linux.it\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Virtaal 0.7.1\n" "X-Project-Style: gnome\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "ToDo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Gestore delle cose da fare per GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME ToDo è una semplice applicazione di gestione delle attività progettata " "per integrarsi con l'ambiente GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nuovo elenco…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Modifica posizione di archiviazione predefinita…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "I_nformazioni" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Esci" #: ../data/gtk/menus.ui.h:5 #| msgid "Clear completed tasks…" msgid "Clear completed task…" msgstr "Nascondi attività competate…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gestione delle proprie attività" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Attività;Produttività;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Finestra massimizzata" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Stato finestra massimizzata" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Dimensione finestra" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Dimensione della finestra (larghezza e altezza)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posizione finestra" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posizione della finestra (x e y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Prima esecuzione di GNOME ToDo" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Indica se è la prima volta che viene avviato GNOME ToDo (per eseguire la " "configurazione iniziale)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Posizione predefinita per l'aggiunta dei nuovi elenchi" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "L'identificatore della posizione predefinita per l'aggiunta dei nuovi elenchi" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Dettagli" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Note" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Data di scadenza" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorità" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nessuna" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Bassa" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Media" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Elimina" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Benvenuti" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Accedere agli account online per gestire le proprie attività" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Annulla" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Fatto" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nessuna attività trovata" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" "È possibile aggiungere attività agli elenchi nella visualizzazione " "Elenchi" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostra o nasconde le attività completate" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Selezionare la posizione predefinita di archiviazione per creare gli elenchi " "di attività:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Posizione di archiviazione predefinita" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Crea" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nome elenco" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Seleziona una posizione di archiviazione" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Spento" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Fare clic per aggiungere un nuovo account Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Fare clic per aggiungere un nuovo account ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Fare clic per aggiungere un nuovo account Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "O archiviare semplicemente la attività su questo computer" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nuova attività…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Elenchi" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Oggi" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Pianificate" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Rinomina" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nuovo elenco" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nome dell'elenco di attività" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d gli autori di ToDo" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d gli autori di ToDo" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "ToDo" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Claudio Arseni " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Errore nel caricamento del CSS dalla sorgente" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Data non impostata" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Errore nel caricamento di Account online GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Errore nel salvataggio dell'elenco attività" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Errore nella rimozione dell'elenco attività" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Errore nella creazione dell'elenco attività" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Errore nella creazione dell'attività" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Errore nella rimozione dell'attività" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Errore nell'aggiornamento dell'attività" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Richiesta delle credenziali non riuscita" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Richiesta non riuscita delle credenziali per" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Autenticazione non riuscita" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Errore nel recupero delle attività dall'elenco" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "" "Connessione alla sorgente degli elenchi di attività avvenuta con successo" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Connessione alla sorgente degli elenchi di attività non riuscita" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Saltato elenco di attività già caricato" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Errore nel caricamento del gestore attività" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nessuna attività" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Attività %s rimossa" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Annulla" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Domani" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Ieri" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Rimuovere gli elenchi di attività selezionati?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "" "Una volta rimossi, gli elenchi di attività non potranno essere recuperati." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Rimuovi elenchi di attività" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Impostazione nuovo colore per elenco attività" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Caricamento elenchi delle attività…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Fare clic su un elenco attività per selezionarlo" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Errore nella creazione del nuovo elenco di attività" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Su questo computer" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Locale" gnome-todo-3.18.1/po/kk.po000066400000000000000000000313671260744630400152570ustar00rootroot00000000000000# Kazakh translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Baurzhan Muftakhidinov , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-06 08:33+0000\n" "PO-Revision-Date: 2015-09-06 15:51+0500\n" "Language-Team: Kazakh \n" "Language: kk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Last-Translator: Baurzhan Muftakhidinov \n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Todo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "GNOME үшін тапсырмалар басқарушысы" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Todo - GNOME ішіне үйлесуге жасалған тапсырмаларды басқарудың " "қарапайым қолданбасы." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Жаңа тізім…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Үнсіз келісім бойынша сақтау жерін өзгерту…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "Осы тур_алы" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Шығу" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Аяқталған тапсырманы тазарту…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Жеке тапсырмаларыңызды басқару" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Тапсырма;Өнімділік;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Терезе максималды етілген" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Терезе максималды күйі" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Терезе өлшемі" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Терезе өлшемі (ені мен биіктігі)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Терезе орны" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Терезе орны (x және y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "GNOME To Do бірінші жөнелтілуі" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "GNOME To Do қолданбасының бірінші жөнелтілуі ме (бастапқы баптауды жасау " "үшін), әлде жоқ па" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Жаңа тізімдер үнсіз келісім бойынша сақталатын жері" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Жаңа тізімдер үнсіз келісім бойынша сақталатын жердің идентификаторы" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Ақпараты" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Естеліктер" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Мақсат күні" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Приоритеті" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ешнәрсе" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Төмен" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Орташа" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Жоғары" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Өшіру" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Қош келдіңіз" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Тапсырмаларыңызға қатынау үшін желілік тіркелгілерге кіріңіз" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Бас тарту" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Дайын" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Тапсырмалар табылмады" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Тапсырмаларды тізімдерге Тізімдер көрінісінде қоса аласыз" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Аяқталған тапсырмаларды көрсету не жасыру" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Тапсырмалар тізімдері үнсіз келісім бойынша жасалатын орналасуды таңдаңыз:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Үнсіз келісім бойынша сақтау жері" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Жасау" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Тізім атауы" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Сақтау жерін таңдаңыз" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Сөнд." #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Жаңа Google тіркелгісін қосу үшін шертіңіз" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Жаңа ownCloud тіркелгісін қосу үшін шертіңіз" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Жаңа Microsoft Exchange тіркелгісін қосу үшін шертіңіз" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Немесе, тапсырмаларды компьютеріңізде сақтай аласыз" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Жаңа тапсырма…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Тізімдер" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Бүгін" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Жоспарланған" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Атын өзгерту" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Жаңа тізім" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Тапсырмалар тізімінің атауы" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d To Do авторлары" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d To Do авторлары" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Baurzhan Muftakhidinov " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Ресурстан CSS-ты жүктеу қатесі" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Күні орнатылмаған" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Gnome желілік тіркелгілерін жүктеу қатесі" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 #: ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Тапсырмалар тізімін сақтау қатесі" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Тапсырмалар тізімін өшіру қатесі" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Тапсырмалар тізімін жасау қатесі" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Тапсырманы жасау қатесі" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Тапсырманы өшіру қатесі" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Тапсырманы жаңарту қатесі" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Тіркелу мәліметтерін сұрау қатесі" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Келесі үшін тіркелу мәліметтерін сұрау қатесі:" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Аутентификация қатесі" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Тізімнен тапсырмаларды алу қатесі" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Тапсырмалар тізімінің қайнар көзіне байланыс сәтті орнатылды" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Тапсырмалар тізімінің қайнар көзіне байланысты орнату сәтсіз" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Алдынан бері жүктелген тапсырмалар тізімін аттап кету " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Тапсырмалар басқарушысын жүктеу қатесі" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Тапсырмалар жоқ" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "%s тапсырмасы өшірілген" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Болдырмау" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Ертең" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Кеше" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Таңдалған тапсырмалар тізімдерін өшіру керек пе?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Өшірілсе, тапсырмалар тізімін қалпына келтіру мүмкін емес болады." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Тапсырмалар тізімдерін өшіру" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Тапсырмалар тізімін үшін жаңа түсті орнату" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Тапсырмалар тізімдерінізді жүктеу…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Таңдау үшін тапсырмалар тізімінің үстіне шертіңіз" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Жаңа тапсырмалар тізімін жасау кезінде қате кетті" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Бұл компьютерде" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Жергілікті" gnome-todo-3.18.1/po/ko.po000066400000000000000000000257301260744630400152600ustar00rootroot00000000000000# Korean translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Seong-ho Cho , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-14 08:42+0000\n" "PO-Revision-Date: 2015-09-14 21:01+0900\n" "Last-Translator: Seong-ho Cho \n" "Language-Team: Korean \n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Poedit 1.5.5\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "일정 관리" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "그놈용 일정 관리 프로그램" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "그놈 일정 관리는 그놈에 통합하도록 설계한 단순한 일정 관리 프로그램입니다." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "새 목록…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "기본 저장소 위치 바꾸기…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "정보(_A)" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "끝내기(_Q)" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "끝낸 일정 지우기…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "개인 일정을 관리합니다" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;일정;Productivity;생산성;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "창 최대화" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "창 최대화 상태" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "창 크기" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "창 크기(너비 및 높이)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "창 위치" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "창 위치(가로 및 세로)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "그놈 일정 관리 첫 실행" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "(초기 설정을 진행하려) 그놈 일정 관리를 처음으로 실행했는지 여부" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "새 목록을 추가할 기본 위치" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "새 목록을 추가할 기본 위치 식별자입니다" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "세부 내용" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "참고" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "기한" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "우선순위" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "없음" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "낮음" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "보통" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "높음" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "삭제" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "반갑습니다" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "일정 목록을 보려면 온라인 계정에 로그인하십시오" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "취소" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "완료" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "일정 없음" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "목록 보기에서 일정을 목록에 추가할 수 있습니다" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "완료 일정 표시하거나 숨기기" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "일정 목록을 만들 기본 저장소 위치를 선택하십시오:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "기본 저장소 위치" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "만들기" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "목록 이름" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "저장소 위치 선택" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "끔" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "새 구글 계정을 추가하려면 누르십시오" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "구글" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "새 ownCloud 계정을 추가하려면 누르십시오" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "새 마이크로소프트 익스체인지 계정을 추가하려면 누르십시오" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "마이크로소프트 익스체인지" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "또는 이 컴퓨터에 일정을 저장할 수 있습니다." #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "새 일정…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "목록" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "오늘" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "일정" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "이름 바꾸기" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "새 목록" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "일정 목록의 이름" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d 일정 관리 개발자" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d 일정 관리 개발자" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "일정 목록" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "조성호 " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "CSS 자원을 불러오는 중 오류 발생" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "날짜를 설정하지 않았습니다" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "그놈 온라인 계정을 불러오는 중 오류 발생" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "일정 목록 저장 중 오류 발생" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "일정 목록 제거 중 오류 발생" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "일정 목록 만드는 중 오류 발생" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "일정을 만드는 중 오류 발생" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "일정을 제거하는 중 오류 발생" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "일정을 업데이트하는 중 오류 발생" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "인증 질의 처리에 실패했습니다" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "인증 대상의 질의 처리에 실패했습니다" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "인증에 실패했습니다" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "목록에서 일정을 가져오는 중 오류 발생" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "일정 목록 원본에 성공적으로 연결했습니다" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "일정 목록 원본 연결에 실패했습니다" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "이미 불러온 일정 목록 건너뛰는 중" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "일정 관리자를 불러오는 중 오류 발생" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "일정 없음" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "%s 일정을 제거했습니다" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "실행 취소" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "내일" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "어제" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "선택한 일정 목록을 제거하시겠습니까?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "한 번 제거하면 일정 목록을 되살릴 수 없습니다." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "일정 목록 제거" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "일정 목록 색상 설정" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "일정 목록 불러오는 중…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "일정 목록을 선택하려면 누르십시오" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "새 일정 목록을 만드는 중 오류 발생" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "이 컴퓨터" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "로컬" gnome-todo-3.18.1/po/lt.po000066400000000000000000000503201260744630400152570ustar00rootroot00000000000000# Lithuanian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Aurimas Černius , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-07 14:25+0300\n" "Last-Translator: Aurimas Černius \n" "Language-Team: Lietuvių \n" "Language: lt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" "%100<10 || n%100>=20) ? 1 : 2);\n" "X-Generator: Gtranslator 2.91.7\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Darbai" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Neatliktų darbų programa GNOME aplinkai" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Darbai yra paprasta užduočių tvarkymo programa, sukurta integracijai " "su GNOME aplinka." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Naujas sąrašas…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Keisti numatytąją saugyklos vietą…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Apie" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Išeiti" #: ../data/gtk/menus.ui.h:5 #| msgid "Show or hide completed tasks" msgid "Clear completed task…" msgstr "Slėpti užbaigtą užduotį…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Tvarkykite savo asmenines užduotis" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Užduotis;Darbas;Produktyvumas;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Langas išdidintas" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Langas išdidinimo būsena" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Lango dydis" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Lango dydis (plotis ir aukštis)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Lango padėtis" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Lango padėtis (x ir y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Pirmas GNOME Darbų paleidimas" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Ar tai yra pirmas GNOME Darbų paleidimas (vykdyti pradinį nustatymą), ar ne" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Numatytoji vieta naujoms užduotims pridėti" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Numatytosios vietos naujiems sąrašams pridėti identifikatorius" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detali informacija" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Pastabos" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Atlikimo data" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritetas" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nėra" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Žemas" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Vidutinis" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Aukštas" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Ištrinti" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Sveiki" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Prisijunkite prie internetinių paskyrų savo užduotims pasiekti" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Atsisakyti" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Atlikta" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Užduočių nerasta" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Galite pridėti užduotis prie sąrašų Sąrašų vaizde" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Rodyti ar slėpti užbaigtas užduotis" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Pasirinkite numatytąją saugyklos vietą naujiems užduočių sąrašams sukurti:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Numatytoji saugyklos vieta" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Sukurti" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Sąrašo pavadinimas" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Pasirinkite saugyklos vietą" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Išjungta" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Spauskite naujai Google paskyrai pridėti" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Spauskite naujai ownCloud paskyrai pridėti" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Spauskite naujai Microsoft Exchange paskyrai pridėti" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Arba galite tiesiog saugoti užduotis šiame kompiuteryje" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Naujas užduotis…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Sąrašai" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Šiandien" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Suplanuota" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Pervadinti" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Naujas sąrašas" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Naujo užduočių sąrašo pavadinimas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Autorinės teisės © priklauso %d Darbų autoriams" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Autorinės teisės © priklauso %d-%d Darbų autoriams" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Darbai" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Išvertė:\n" "Aurimas Černius " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Klaida įkeliant CSS iš ištekliaus" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Data nenustatyta" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Klaida įkeliant GNOME internetines paskyras" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Klaida įrašant užduočių sąrašą" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Klaida pašalinant užduočių sąrašą" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Klaida kuriant užduočių sąrašą" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Klaida kuriant užduotį" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Klaida šalinant užduotį" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Klaida atnaujinant užduotį" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Nepavyko paprašyti įgaliojimų" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Nepavyko paprašyti įgaliojimų" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Tapatybės patvirtinimo klaida" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Klaida gaunant užduotis iš sąrašo" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Užduočių sąrašo šaltinis sėkmingai prijungtas" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Nepavyko prijungti užduočių sąrašo šaltinio" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Praleidžiamas jau įkeltas užduočių sąrašas" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Klaida įkeliant užduoties vadovą" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nėra užduočių" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Užduotis %s pašalinta" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Atšaukti" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Rytoj" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Vakar" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Pašalinti pažymėtus užduočių sąrašus?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Pašalinus, užduočių sąrašų nebebus galima atgauti." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Pašalinti užduočių sąrašus" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Nustatomas nauja spalva užduočių sąrašui" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Įkeliami jūsų užduočių sąrašai…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Spauskite ant užduoties jai pažymėti" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Klaida kuriant naują užduočių sąrašą" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Šiame kompiuteryje" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Vietinė" #~ msgid "Manager of this application" #~ msgstr "Šios programos vadovas" #~ msgid "The manager of the application" #~ msgstr "Šios programos vadovas" #~ msgid "Task being edited" #~ msgstr "Užduotis redaguojama" #~ msgid "The task that is actually being edited" #~ msgstr "Realiai redaguojama užduotis" #~ msgid "Manager of the task" #~ msgstr "Užduoties vadovas" #~ msgid "The singleton manager instance of the task" #~ msgstr "Vienintelis užduoties vadovas" #~ msgid "The online accounts client of the manager" #~ msgstr "Vadovo internetinių paskyrų klientas" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "GNOMW internetinių paskyrų klientas tik skaitymui įkeltas ir priklauso " #~ "vadovui" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Ar GNOME internetinių paskyrų klientas pasiruošęs" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "Ar įkeltas GNOME internetinių paskyrų klientas tik skaitymui" #~ msgid "The source registry of the manager" #~ msgstr "Vadovo šaltinių registras" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "Vadovui priklausanti įkeltų šaltinių registras tik skaitymui" #~ msgid "Unique identifier of the object" #~ msgstr "Unikalus objekto identifikatorius" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "Unikalus objekto identifikatorius, apibrėžtas realizacijos" #~ msgid "Ready state of the object" #~ msgstr "Objekto pasirengimo būsena" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Ar objektas yra pažymėtas tik skaitymui" #~ msgid "Whether the task is completed or not" #~ msgstr "Ar užduotis yra užbaigta" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Ar užduotis yra naudotojo pažymėta kaip baigta" #~ msgid "Component of the task" #~ msgstr "Užduoties komponentas" #~ msgid "The #ECalComponent this task handles." #~ msgstr "Šios užduoties apdorojama #ECalComponent." #~ msgid "Description of the task" #~ msgstr "Užduoties aprašymas" #~ msgid "Optional string describing the task" #~ msgstr "Nebūtina eilutės, aprašanti užduotį" #~ msgid "End date of the task" #~ msgstr "Užduoties pabaigos data" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Diena, kada užduotis turėtų būti baigta" #~ msgid "List of the task" #~ msgstr "Užduoties sąrašas" #~ msgid "The list that owns this task" #~ msgstr "Sąrašas, kuriam priklauso šį užduotis" #~ msgid "Priority of the task" #~ msgstr "Užduoties prioritetas" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "Užduoties prioritetas. 0 reiškia nenustatytą prioritetą ir užduotys bus r" #~ "\tikiuojamos abėcėlės tvarka." #~ msgid "Title of the task" #~ msgstr "Užduoties pavadinimas" #~ msgid "The title of the task" #~ msgstr "Užduoties pavadinimas" #~ msgid "Color of the list" #~ msgstr "Užduočių sąrašo spalva" #~ msgid "The color of the list" #~ msgstr "Užduočių sąrašo spalva" #~ msgid "Whether the task list is removable" #~ msgstr "Ar užduočių sąrašą galima pašalinti" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Ar užduočių sąrašą galima pašalinti iš sistemos" #~ msgid "Name of the list" #~ msgstr "Sąrašo pavadinimas" #~ msgid "The name of the list" #~ msgstr "Sąrašo pavadinimas" #~ msgid "Data origin of the list" #~ msgstr "Sąrašo kilmės duomenys" #~ msgid "The data origin location of the list" #~ msgstr "Sąrašo kilmės vietos duomenys" #~ msgid "Source of the list" #~ msgstr "Sąrašo šaltinis" #~ msgid "The parent source that handles the list" #~ msgstr "Sąrašą tvarkantis tėvinis šaltinis" #~ msgid "Mode of this item" #~ msgstr "Šio elemento veiksena" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "Šio elemento veiksena, paveldėta iš tėvo veiksenos" #~ msgid "Whether the task list is selected" #~ msgstr "Ar užduočių sąrašas yra pažymėtas" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Ar užduočių sąrašas yra pažymėtas žymėjimo veiksenoje" #~ msgid "Task list of the item" #~ msgstr "Elemento užduočių sąrašas" #~ msgid "The task list associated with this item" #~ msgstr "Su šiuo elementų susietas užduočių sąrašas" #~ msgid "Manager of this window's application" #~ msgstr "Šio lango programos vadovas" #~ msgid "The manager of the window's application" #~ msgstr "Lango programos vadovas" #~ msgid "Whether the list is readonly" #~ msgstr "Ar sąrašas yra tik skaitymui" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "Ar sąrašas yra tik skaitymui, pvz. nerodoma naujos užduoties eilutė" #~ msgid "Whether task rows show the list name" #~ msgstr "Ar užduoties eilutės rodo sąrašo pavadinimą" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "Ar užduočių eilutės rodo sąrašo pavadinimą eilutės pabaigoje" #~ msgid "Whether completed tasks are shown" #~ msgstr "Ar rodomos užbaigtos užduotys" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Ar rodomos užbaigtos užduotys" #~ msgid "If the row is used to add a new task" #~ msgstr "Ar eilutė yra naudojama naujai užduočiai pridėti" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Ar eilutė yra naudojama naujai užduočiai pridėti" #~ msgid "Task of the row" #~ msgstr "Eilutės užduotis" #~ msgid "The task that this row represents" #~ msgstr "Šios eilutės vaizduojama užduotis" #~ msgid "Mode of this window" #~ msgstr "Šio lango veiksena" #~ msgid "The interaction mode of the window" #~ msgstr "Darbo su langu veiksena" #~ msgid "Whether the storage is enabled" #~ msgstr "Ar saugykla yra įjungta" #~ msgid "Whether the storage is available to be used." #~ msgstr "Ar saugykla yra prieinama naudojimui." #~ msgid "Icon of the storage" #~ msgstr "Saugyklos piktograma" #~ msgid "The icon representing the storage location." #~ msgstr "Piktograma, pristatanti saugyklos vietą." #~ msgid "Identifier of the storage" #~ msgstr "Saugyklos identifikatorius" #~ msgid "The unique identifier of the storage location." #~ msgstr "Saugyklos vietos unikalus identifikatorius." #~ msgid "Whether the storage is the default" #~ msgstr "Ar saugykla yra numatytoji" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "Ar saugykla yra numatytoji saugojimo vieta." #~ msgid "Name of the storage" #~ msgstr "Saugyklos pavadinimas" #~ msgid "The user-visible name of the storage location." #~ msgstr "Naudotojo matoma numatytoji saugyklos vieta." #~ msgid "Name of the data provider of the storage" #~ msgstr "Saugyklos duomenų tiekėjo pavadinimas" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "Naudotojo matomas saugyklos vietos duomenų tiekėjos pavadinimas." #~ msgid "GoaObject of the storage" #~ msgstr "Saugyklos GoaObjet" #~ msgid "The GoaObject this storage location represents." #~ msgstr "Šios saugyklos vietos GoaObjet." #~ msgid "Parent of the storage" #~ msgstr "Saugyklos tėvas" #~ msgid "The parent source identifier of the storage location." #~ msgstr "Saugyklos vietos tėvinio šaltinio identifikatorius." #~ msgid "Storage of the row" #~ msgstr "Eilutės saugykla" #~ msgid "The storage that this row holds" #~ msgstr "Šios eilutės nusakoma saugykla" #~ msgid "Show local storage row" #~ msgstr "Rodyti vietinės saugyklos eilutę" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "Ar rodyti vietinės saugyklos eilutę vietoj žymimojo langelio" #~ msgid "Show stub rows" #~ msgstr "Rodyti nesamas eilutes" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "Ar rodyti eilutes nepridėtoms paskyroms" #~ msgid "Selects default storage row" #~ msgstr "Pažymi numatytąją saugyklos eilutę" #~ msgid "Whether should select the default storage row" #~ msgstr "Ar pažymėti numatytosios saugyklos eilutę" #~ msgid "Whether the notification has a primary action" #~ msgstr "Ar pranešimas turi pirminį veiksmą" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Ar pranešimas turi pirminį veiksmą, aktyvuojamą pasibaigus laikui ar " #~ "atmetus" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Ar pranešimas turi antrinį veiksmą" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "Ar pranešimas turi antrinį veiksmą, aktyvuojamą naudotojo" #~ msgid "Text of the secondary action button" #~ msgstr "Antrinio veiksmo mygtuko tekstas" #~ msgid "The text of the secondary action button" #~ msgstr "Antrinio veiksmo mygtuko tekstas" #~ msgid "Notification message" #~ msgstr "Pranešimo tekstas" #~ msgid "The main message of the notification" #~ msgstr "Pagrindinis pranešimo tekstas" #~ msgid "Notification timeout" #~ msgstr "Pranešimo laikas baigėsi" #~ msgid "The time the notification is displayed" #~ msgstr "Laikas, kada parodyti pranešimą" gnome-todo-3.18.1/po/nb.po000066400000000000000000000244221260744630400152430ustar00rootroot00000000000000# Norwegian bokmål translation of gnome-todo. # Copyright (C) 1998-2004, 2005 Free Software Foundation, Inc. # Kjartan Maraas , 1998-2015. # Terance Edward Sola , 2005. # Torstein Adolf Winterseth , 2010. # Alexander Strand msgid "" msgstr "" "Project-Id-Version: gnome-todo 3.17.x\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-20 12:31+0200\n" "PO-Revision-Date: 2015-09-20 12:36+0200\n" "Last-Translator: Kjartan Maraas \n" "Language-Team: Norwegian bokmål \n" "Language: Norsk bokmål\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Oppgaver" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Oppgaveliste for GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME oppgaver er et enkelt oppgavehåndteringsprogram som er integrert med " "GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Ny liste …" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Endre forvalgt lagringslokasjon …" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Om" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "A_vslutt" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Fjern fullført oppgave …" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Håndter dine personlige oppgaver" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Oppgaver;Produktivitet;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Vinduet er maksimert" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Vindustørrelse" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Vindusposisjon" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detaljer" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notater" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Ferdig-dato" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritet" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ingen" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Lav" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Middels" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Høy" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Slett" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Velkommen" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Logg inn i kontoer på nettet for å aksessere dine oppgaver" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Avbryt" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Ferdig" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Ingen oppgaver funnet" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Du kan legge til oppgaver i listene i visningen Lister" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Vis eller skjul fullførte oppgaver" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Velg forvalgt lagringslokasjon ved oppretting av oppgavelister:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Forvalgt lagringslokasjon" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Opprett" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listenavn" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Velg en lagringslokasjon" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Av" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Klikk for å legge til et notat" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Klikk for å legge til en ny ownCloud-konto" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klikk for å legge til en ny Microsoft Exchange-konto" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Eller du kan bare lagre dine oppgaver på denne datamaskinen" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Ny oppgave …" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Lister" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "I dag" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Planlagt" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Endre navn" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Ny liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Navn på oppgavelisten" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Opphavsrett © %d Oppgaveforfatterene" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Opphavsrett © %d-%d Oppgavelisteutviklerene" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Oppgaver" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Kjartan Maraas " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Feil ved lasting av CSS fra ressurs" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Ingen dato satt" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Feil ved lasting av kontoer på nettet" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Feil ved lagring av oppgaveliste" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Feil under fjerning av oppgaveliste" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Feil ved opretting oppgaveliste" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Feil ved oppretting av oppgave" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Feil under fjerning av oppgave" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Feil ved oppdatering av oppgave" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Klarte ikke å spørre etter påloggingsinformasjon" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Klarte ikke å spørre etter påloggingsinformasjon for" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Autentisering feilet" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Feil ved henting av oppgave fra liste" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 #, fuzzy msgid "Failed to connect to task list source" msgstr "Klarte ikke å koble til oppgaveliste «{0}»" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Hopper over oppgaveliste som allerede er lastet " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Feil ved lasting av oppgavehåndterer" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Ingen oppgaver" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Oppgave %s fjernet" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Angre" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "I morgen" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "I går" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Fjerne valgte oppgavelister?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Når oppgavelistne blir fjernet kan de ikke gjenopprettes." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Fjern oppgavelister" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Setter ny farge for oppgaveliste" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Laster dine oppgavelister …" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Klikk på en oppgaveliste for å velge den" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Feil ved opretting av ny oppgaveliste" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "På denne datamaskinen" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokal" gnome-todo-3.18.1/po/pa.po000066400000000000000000000535311260744630400152470ustar00rootroot00000000000000# Punjabi translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # # A S Alam , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-08-30 09:15+0000\n" "PO-Revision-Date: 2015-08-30 11:05UTC-0600\n" "Last-Translator: A S Alam \n" "Language-Team: Punjabi \n" "Language: pa\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 2.0\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "ਟੂ-ਡੂ" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "ਗਨੋਮ ਲਈ ਟੂ-ਡੂ ਮੈਨੇਜਰ" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "ਗਨੋਮ ਟੂ-ਡੂ ਗਨੋਮ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਰੂਪ ਵਿੱਚ ਡਿਵਾਇਨ ਕੀਤੀ ਸਰਲ ਕੰਮ ਪ੍ਰਬੰਧ ਐਪਲੀਕੇਸ਼ਨ ਹੈ।" #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "...ਨਵੀਂ ਲਿਸਟ" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "...ਡਿਫਾਲਟ ਸਟੋਰੇਜ਼ ਟਿਕਾਣਾ ਬਦਲੋ" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "ਇਸ ਬਾਰੇ(_A)" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "ਬੰਦ ਕਰੋ(_Q)" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "ਆਪਣੇ ਨਿੱਜੀ ਕੰਮਾਂ ਦਾ ਪਰਬੰਧ ਕਰੋ" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "ਕੰਮ;ਉਤਪਾਦਕ;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਕੀਤੀ" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "ਵਿੰਡੋ ਵੱਧੋ-ਵੱਧ ਆਕਾਰ ਸਥਿਤੀ" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "ਵਿੰਡੋ ਆਕਾਰ" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "ਵਿੰਡੋ ਆਕਾਰ (ਚੌੜਾਈ ਅਤੇ ਉਚਾਈ)।" #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "ਵਿੰਡੋ ਸਥਿਤੀ" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "ਵਿੰਡੋ ਸਥਿਤੀ (x ਤੇ y)।" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "ਗਨੋਮ ਟੂ ਡੂ ਨੂੰ ਪਹਿਲੀ ਵਾਰ ਚਲਾਉਣਾ" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "ਕੀ ਗਨੋਮ ਟੂ ਡੂ ਪਹਿਲੀ ਵਾਰ ਚਲਾਇਆ ਹੈ (ਸ਼ੁਰੂਆਤੀ ਸੈਟਅਪ ਪੂਰਾ ਕਰਨ ਲਈ) ਜਾਂ ਨਹੀਂ" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "ਨਵੀਆਂ ਲਿਸਟਾਂ ਜੋੜਨ ਲਈ ਡਿਫਾਲਟ ਟਿਕਾਣਾ" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "ਨਵੀਆਂ ਲਿਸਟਾਂ ਜੋੜਨ ਲਈ ਡਿਫਾਲਟ ਟਿਕਾਣੇ ਦਾ ਪਛਾਣਕਰਤਾ" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:812 msgid "Details" msgstr "ਵੇਰਵੇ" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "ਨੋਟਿਸ" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "ਪੂਰਾ ਕਰਨ ਮਿਤੀ" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "ਤਰਜੀਹ" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "ਕੋਈ ਨਹੀਂ" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "ਘੱਟ" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "ਮੱਧਮ" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "ਉੱਚ" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "ਹਟਾਓ" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "ਜੀ ਆਇਆਂ ਨੂੰ" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "ਆਪਣੇ ਕੰਮਾਂ ਲਈ ਪਹੁੰਚ ਵਾਸਤੇ ਆਨਲਾਈਨ ਅਕਾਊਂਟ ਲਈ ਲਾਗਇਨ ਕਰੋ" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:313 msgid "Cancel" msgstr "ਰੱਦ ਕਰੋ" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:288 msgid "Done" msgstr "ਮੁਕੰਮਲ" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "ਕੋਈ ਕੰਮ ਨਹੀਂ ਲੱਭਿਆ" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "ਤੁਸੀਂ ਲਿਸਟਾਂ ਝਲਕ ਵਿੱਚ ਲਿਸਟਾਂ ਵਿੱਚ ਕੰਮ ਜੋੜ ਸਕਦੇ ਹੋ" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "ਪੂਰੇ ਹੋਏ ਕੰਮ ਵੇਖਾਓ ਜਾਂ ਓਹਲੇ ਕਰੋ" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "ਮੂਲ ਸਟੋਰੇਜ਼ ਟਿਕਾਣਾ" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "ਬਣਾਓ" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "ਲਿਸਟ ਨਾਂ" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "ਸਟੋਰੇਜ਼ ਟਿਕਾਣਾ ਚੁਣੋ" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "ਬੰਦ" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "ਨਵਾਂ ਗੂਗਲ ਅਕਾਊਂਟ ਜੋੜਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "ਗੂਗਲ" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "ਨਵਾਂ ਮਾਈਕਰੋਸਾਫਟ ਐਕਸਚੇਜ਼ ਅਕਾਊਂਟ ਜੋੜਨ ਲਈ ਕਲਿੱਕ ਕਰੋ" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "ਮਾਈਕਰੋਸਾਫਟ ਐਕਸਚੇਜ਼" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "ਜਾਂ ਤੁਸੀਂ ਆਪਣੇ ਕੰਮਾਂ ਨੂੰ ਇਸ ਕੰਪਿਊਟਰ ਉੱਤੇ ਸੰਭਾਲ ਸਕਦੇ ਹੋ" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "...ਨਵਾਂ ਕੰਮ" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "ਲਿਸਟਾਂ" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:516 #: ../src/gtd-window.c:521 msgid "Today" msgstr "ਅੱਜ" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:516 ../src/gtd-window.c:521 msgid "Scheduled" msgstr "ਸੈਡਿਊਲ ਕੀਤੇ" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "ਨਾਂ-ਬਦਲੋ" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "ਨਵੀਂ ਲਿਸਟ" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "ਕੰਮ ਲਿਸਟ ਦਾ ਨਾਂ" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d To Do ਲੇਖਕ" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d ਟੂ ਡੂ ਲੇਖਕ" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:693 ../src/gtd-window.c:1260 msgid "To Do" msgstr "ਟੂ ਡੂ" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "ਅਮਨਪਰੀਤ ਸਿੰਘ ਆਲਮ\n" "ਪੰਜਾਬੀ ਓਪਨਸੋਰਸ ਟੀਮ (POST)" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "ਕੋਈ ਮਿਤੀ ਨਹੀਂ ਸੈਟ ਹੈ" #: ../src/gtd-edit-pane.c:263 msgid "Manager of this application" msgstr "ਇਹ ਐਪਲੀਕੇਸ਼ਨ ਦੇ ਮੈਨੇਜਰ" #: ../src/gtd-edit-pane.c:264 msgid "The manager of the application" msgstr "" #: ../src/gtd-edit-pane.c:277 msgid "Task being edited" msgstr "ਕੰਮ ਸੋਧਿਆ ਜਾ ਰਿਹਾ ਹੈ" #: ../src/gtd-edit-pane.c:278 msgid "The task that is actually being edited" msgstr "" #: ../src/gtd-initial-setup-window.c:213 msgid "Manager of the task" msgstr "ਕੰਮ ਦਾ ਮੈਨੇਜਰ" #: ../src/gtd-initial-setup-window.c:214 msgid "The singleton manager instance of the task" msgstr "" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "ਗਨੋਮ ਆਨਲਾਈਨ ਅਕਾਊਂਟ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "ਕੰਮ ਲਿਸਟ ਸੰਭਾਲਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "ਕੰਮ ਲਿਸਟ ਹਟਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "ਕੰਮ ਲਿਸਟ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "ਕੰਮ ਬਣਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "ਕੰਮ ਹਟਾਉਣ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:657 ../src/gtd-manager.c:661 msgid "Error updating task" msgstr "ਕੰਮ ਅੱਪਡੇਟ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:690 msgid "Failed to prompt for credentials" msgstr "" #: ../src/gtd-manager.c:713 msgid "Failed to prompt for credentials for" msgstr "" #: ../src/gtd-manager.c:765 msgid "Authentication failure" msgstr "ਪਰਮਾਣਕਿਤਾ ਫੇਲ੍ਹ ਹੈ" #: ../src/gtd-manager.c:829 ../src/gtd-manager.c:833 msgid "Error fetching tasks from list" msgstr "" #: ../src/gtd-manager.c:899 msgid "Task list source successfully connected" msgstr "ਕੰਮ ਸੂਚੀ ਸਰੋਤ ਕਾਮਯਾਬੀ ਨਾਲ ਕਨੈਕਟ ਹੈ" #: ../src/gtd-manager.c:906 ../src/gtd-manager.c:911 msgid "Failed to connect to task list source" msgstr "" #: ../src/gtd-manager.c:940 msgid "Skipping already loaded task list " msgstr "" #: ../src/gtd-manager.c:978 msgid "Error loading task manager" msgstr "ਕੰਮ ਮੈਨੇਜਰ ਲੋਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ" #: ../src/gtd-manager.c:1139 msgid "The online accounts client of the manager" msgstr "" #: ../src/gtd-manager.c:1140 msgid "" "The read-only GNOME online accounts client loaded and owned by the manager" msgstr "" #: ../src/gtd-manager.c:1153 msgid "Whether GNOME Online Accounts client is ready" msgstr "" #: ../src/gtd-manager.c:1154 msgid "Whether the read-only GNOME online accounts client is loaded" msgstr "" #: ../src/gtd-manager.c:1167 msgid "The source registry of the manager" msgstr "" #: ../src/gtd-manager.c:1168 msgid "The read-only source registry loaded and owned by the manager" msgstr "" #: ../src/gtd-object.c:152 msgid "Unique identifier of the object" msgstr "" #: ../src/gtd-object.c:153 msgid "The unique identifier of the object, defined by the backend" msgstr "" #: ../src/gtd-object.c:166 msgid "Ready state of the object" msgstr "" #: ../src/gtd-object.c:167 msgid "Whether the object is marked as ready or not" msgstr "" #: ../src/gtd-task.c:254 msgid "Whether the task is completed or not" msgstr "" #: ../src/gtd-task.c:255 msgid "Whether the task is marked as completed by the user" msgstr "" #: ../src/gtd-task.c:268 msgid "Component of the task" msgstr "ਕੰਮ ਦੇ ਭਾਗ" #: ../src/gtd-task.c:269 msgid "The #ECalComponent this task handles." msgstr "" #: ../src/gtd-task.c:282 msgid "Description of the task" msgstr "ਕੰਮ ਦਾ ਵੇਰਵਾ" #: ../src/gtd-task.c:283 msgid "Optional string describing the task" msgstr "" #: ../src/gtd-task.c:297 msgid "End date of the task" msgstr "ਕੰਮ ਦੇ ਖਤਮ ਕਰਨ ਦੀ ਮਿਤੀ" #: ../src/gtd-task.c:298 msgid "The day the task is supposed to be completed" msgstr "" #: ../src/gtd-task.c:311 msgid "List of the task" msgstr "ਕੰਮ ਦੀ ਲਿਸਟ" #: ../src/gtd-task.c:312 msgid "The list that owns this task" msgstr "" #: ../src/gtd-task.c:325 msgid "Priority of the task" msgstr "ਕੰਮ ਦੀ ਤਰਜੀਹ" #: ../src/gtd-task.c:326 msgid "" "The priority of the task. 0 means no priority set, and tasks will be sorted " "alphabetically." msgstr "" #: ../src/gtd-task.c:341 msgid "Title of the task" msgstr "ਕੰਮ ਦਾ ਨਾਂ" #: ../src/gtd-task.c:342 msgid "The title of the task" msgstr "ਕੰਮ ਦਾ ਨਾਂ" #: ../src/gtd-task-list.c:264 msgid "Color of the list" msgstr "ਲਿਸਟ ਦਾ ਰੰਗ" #: ../src/gtd-task-list.c:265 msgid "The color of the list" msgstr "ਲਿਸਟ ਦਾ ਰੰਗ" #: ../src/gtd-task-list.c:278 msgid "Whether the task list is removable" msgstr "ਕੀ ਕੰਮ ਲਿਸਟ ਹਟਾਉਣ ਯੋਗ ਹੈ" #: ../src/gtd-task-list.c:279 msgid "Whether the task list can be removed from the system" msgstr "" #: ../src/gtd-task-list.c:292 msgid "Name of the list" msgstr "ਲਿਸਟ ਦਾ ਨਾਂ" #: ../src/gtd-task-list.c:293 msgid "The name of the list" msgstr "ਲਿਸਟ ਦਾ ਨਾਂ ਹੈ" #: ../src/gtd-task-list.c:306 msgid "Data origin of the list" msgstr "" #: ../src/gtd-task-list.c:307 msgid "The data origin location of the list" msgstr "" #: ../src/gtd-task-list.c:320 msgid "Source of the list" msgstr "ਲਿਸਟ ਦਾ ਸਰੋਤ" #: ../src/gtd-task-list.c:321 msgid "The parent source that handles the list" msgstr "" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "ਕੋਈ ਕੰਮ ਨਹੀਂ" #: ../src/gtd-task-list-item.c:486 msgid "Mode of this item" msgstr "ਇਹ ਆਈਟਮ ਦਾ ਮੋਡ" #: ../src/gtd-task-list-item.c:487 msgid "The mode of this item, inherited from the parent's mode" msgstr "" #: ../src/gtd-task-list-item.c:501 msgid "Whether the task list is selected" msgstr "" #: ../src/gtd-task-list-item.c:502 msgid "Whether the task list is selected when in selection mode" msgstr "" #: ../src/gtd-task-list-item.c:515 msgid "Task list of the item" msgstr "ਆਈਟਮ ਦੀ ਕੰਮ ਲਿਸਟ" #: ../src/gtd-task-list-item.c:516 msgid "The task list associated with this item" msgstr "" #: ../src/gtd-task-list-view.c:201 #, c-format msgid "Task %s removed" msgstr "ਕੰਮ %s ਹਟਾਇਆ" #: ../src/gtd-task-list-view.c:221 msgid "Undo" msgstr "ਵਾਪਸ" #: ../src/gtd-task-list-view.c:656 ../src/gtd-window.c:1053 #: ../src/storage/gtd-storage-dialog.c:150 #: ../src/storage/gtd-storage-popover.c:288 #: ../src/storage/gtd-storage-selector.c:516 msgid "Manager of this window's application" msgstr "ਇਹ ਵਿੰਡੋ ਦੀ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਮੈਨੇਜਰ" #: ../src/gtd-task-list-view.c:657 ../src/gtd-window.c:1054 #: ../src/storage/gtd-storage-dialog.c:151 #: ../src/storage/gtd-storage-popover.c:289 #: ../src/storage/gtd-storage-selector.c:517 msgid "The manager of the window's application" msgstr "" #: ../src/gtd-task-list-view.c:670 msgid "Whether the list is readonly" msgstr "" #: ../src/gtd-task-list-view.c:671 msgid "" "Whether the list is readonly, i.e. doesn't show the New Task row, or not" msgstr "" #: ../src/gtd-task-list-view.c:684 msgid "Whether task rows show the list name" msgstr "" #: ../src/gtd-task-list-view.c:685 msgid "Whether task rows show the list name at the end of the row" msgstr "" #: ../src/gtd-task-list-view.c:698 msgid "Whether completed tasks are shown" msgstr "" #: ../src/gtd-task-list-view.c:699 msgid "Whether completed tasks are visible or not" msgstr "" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "ਭਲਕੇ" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "ਕੱਲ੍ਹ" #: ../src/gtd-task-row.c:372 msgid "If the row is used to add a new task" msgstr "" #: ../src/gtd-task-row.c:373 msgid "Whether the row is used to add a new task" msgstr "" #: ../src/gtd-task-row.c:386 msgid "Task of the row" msgstr "ਕਤਾਰ ਦਾ ਕੰਮ" #: ../src/gtd-task-row.c:387 msgid "The task that this row represents" msgstr "" #: ../src/gtd-window.c:306 msgid "Remove the selected task lists?" msgstr "ਕੀ ਚੁਣੀਆਂ ਲਿਸਟਾਂ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?" #: ../src/gtd-window.c:309 msgid "Once removed, the task lists cannot be recovered." msgstr "" #: ../src/gtd-window.c:321 msgid "Remove task lists" msgstr "ਕੰਮ ਲਿਸਟਾਂ ਹਟਾਓ" #: ../src/gtd-window.c:577 msgid "Setting new color for task list" msgstr "" #: ../src/gtd-window.c:1067 msgid "Mode of this window" msgstr "" #: ../src/gtd-window.c:1068 msgid "The interaction mode of the window" msgstr "" #: ../src/gtd-window.c:1119 msgid "Loading your task lists…" msgstr "" #: ../src/gtd-window.c:1247 msgid "Click a task list to select" msgstr "" #: ../src/storage/gtd-storage.c:153 msgid "Whether the storage is enabled" msgstr "" #: ../src/storage/gtd-storage.c:154 msgid "Whether the storage is available to be used." msgstr "" #: ../src/storage/gtd-storage.c:167 msgid "Icon of the storage" msgstr "ਸਟੋਰੇਜ਼ ਦਾ ਆਈਕਾਨ" #: ../src/storage/gtd-storage.c:168 msgid "The icon representing the storage location." msgstr "" #: ../src/storage/gtd-storage.c:181 msgid "Identifier of the storage" msgstr "ਸਟੋਰੇਜ਼ ਦਾ ਪਛਾਣਕਰਤਾ" #: ../src/storage/gtd-storage.c:182 msgid "The unique identifier of the storage location." msgstr "" #: ../src/storage/gtd-storage.c:195 msgid "Whether the storage is the default" msgstr "" #: ../src/storage/gtd-storage.c:196 msgid "Whether the storage is the default storage location to be used." msgstr "" #: ../src/storage/gtd-storage.c:209 msgid "Name of the storage" msgstr "ਸਟੋਰੇਜ਼ ਦਾ ਨਾਂ" #: ../src/storage/gtd-storage.c:210 msgid "The user-visible name of the storage location." msgstr "" #: ../src/storage/gtd-storage.c:223 msgid "Name of the data provider of the storage" msgstr "" #: ../src/storage/gtd-storage.c:224 msgid "The user-visible name of the data provider of the storage location." msgstr "" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "" #: ../src/storage/gtd-storage-goa.c:222 msgid "GoaObject of the storage" msgstr "" #: ../src/storage/gtd-storage-goa.c:223 msgid "The GoaObject this storage location represents." msgstr "" #: ../src/storage/gtd-storage-goa.c:236 msgid "Parent of the storage" msgstr "ਸਟੋਰੇਜ਼ ਦਾ ਮੂਲ" #: ../src/storage/gtd-storage-goa.c:237 msgid "The parent source identifier of the storage location." msgstr "" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "ਇਸ ਕੰਪਿਊਟਰ ਉੱਤੇ" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "ਲੋਕਲ" #: ../src/storage/gtd-storage-row.c:148 msgid "Storage of the row" msgstr "ਕਤਾਰ ਦਾ ਸਟੋਰੇਜ਼" #: ../src/storage/gtd-storage-row.c:149 msgid "The storage that this row holds" msgstr "" #: ../src/storage/gtd-storage-selector.c:530 msgid "Show local storage row" msgstr "ਲੋਕਲ ਸਟੋਰੇਜ਼ ਕਤਾਰ ਵੇਖਾਓ" #: ../src/storage/gtd-storage-selector.c:531 msgid "Whether should show a local storage row instead of a checkbox" msgstr "" #: ../src/storage/gtd-storage-selector.c:544 msgid "Show stub rows" msgstr "ਸਟਬ ਕਤਾਰ ਵੇਖੋ" #: ../src/storage/gtd-storage-selector.c:545 msgid "Whether should show stub rows for non-added accounts" msgstr "" #: ../src/storage/gtd-storage-selector.c:558 msgid "Selects default storage row" msgstr "" #: ../src/storage/gtd-storage-selector.c:559 msgid "Whether should select the default storage row" msgstr "" #: ../src/notification/gtd-notification.c:181 msgid "Whether the notification has a primary action" msgstr "" #: ../src/notification/gtd-notification.c:182 msgid "" "Whether the notification has the primary action, activated on timeout or " "dismiss" msgstr "" #: ../src/notification/gtd-notification.c:196 msgid "Whether the notification has a secondary action" msgstr "" #: ../src/notification/gtd-notification.c:197 msgid "" "Whether the notification has the secondary action, activated by the user" msgstr "" #: ../src/notification/gtd-notification.c:210 msgid "Text of the secondary action button" msgstr "" #: ../src/notification/gtd-notification.c:211 msgid "The text of the secondary action button" msgstr "" #: ../src/notification/gtd-notification.c:224 msgid "Notification message" msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸੁਨੇਹਾ" #: ../src/notification/gtd-notification.c:225 msgid "The main message of the notification" msgstr "" #: ../src/notification/gtd-notification.c:238 msgid "Notification timeout" msgstr "ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਮਾਂ-ਸਮਾਪਤੀ" #: ../src/notification/gtd-notification.c:239 msgid "The time the notification is displayed" msgstr "" gnome-todo-3.18.1/po/pl.po000066400000000000000000000257571260744630400152730ustar00rootroot00000000000000# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Aviary.pl # Jeśli masz jakiekolwiek uwagi odnoszące się do tłumaczenia lub chcesz # pomóc w jego rozwijaniu i pielęgnowaniu, napisz do nas: # gnomepl@aviary.pl # -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- # Piotr Drąg , 2015. # Aviary.pl , 2015. msgid "" msgstr "" "Project-Id-Version: gnome-todo\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-09-02 03:49+0200\n" "PO-Revision-Date: 2015-09-02 03:50+0200\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" "X-Poedit-Language: Polish\n" "X-Poedit-Country: Poland\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Zadania" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Menedżer zadań dla środowiska GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Menedżer zadań GNOME to prosty program do zarządzania zadaniami, " "zaprojektowany do integracji ze środowiskiem GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nowa lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Zmień domyślne położenie zadań…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_O programie" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "Za_kończ" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Wyczyść ukończone zadania…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Zarządzanie zadaniami" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Zadanie;Lista;Produktywność;Biuro;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Zmaksymalizowane okno" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Stan maksymalizacji okna" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Rozmiar okna" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Rozmiar okna (szerokość i wysokość)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Położenie okna" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Położenie okna (na osi X i Y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Pierwsze uruchomienie Menedżera zadań GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Czy jest to pierwsze uruchomienie Menedżera zadań GNOME (aby wykonać " "początkowe ustawienie)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Domyślne położenie, do którego dodawać nowe listy" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Identyfikator domyślnego położenia, do którego dodawać nowe listy" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Szczegóły" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Uwagi" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Termin" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorytet" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Brak" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Niski" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Średni" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Wysoki" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Usuń" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Witamy" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Zalogowanie do kont online umożliwi dostęp do zadań" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Anuluj" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Gotowe" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nie odnaleziono żadnych zadań" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Można dodawać zadania do listy w widoku Listy" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Wyświetla lub ukrywa ukończone zadania" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Proszę wybrać domyślne położenie zadań do tworzenia list:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Domyślne położenie zadań" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Utwórz" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nazwa listy" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Wybór położenia zadań" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Wyłącz" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Kliknięcie dodaje nowe konto Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Kliknięcie dodaje nowe konto ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Kliknięcie dodaje nowe konto Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Można też przechowywać zadania na tym komputerze" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nowe zadanie…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listy" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Dzisiaj" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Zaplanowane" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Zmień nazwę" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nowa lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nazwa listy zadań" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Autorzy Menedżera zadań" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d Autorzy Menedżera zadań" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Zadania" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Piotr Drąg , 2015\n" "Aviary.pl , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Błąd podczas wczytywania pliku CSS z zasobu" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nie ustawiono daty" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Błąd podczas wczytywania Kont online GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Błąd podczas zapisywania listy zadań" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Błąd podczas usuwania listy zadań" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Błąd podczas tworzenia listy zadań" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Błąd podczas tworzenia zadania" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Błąd podczas usuwania zadania" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Błąd podczas aktualizowania zadania" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Zapytanie o dane uwierzytelniające się nie powiodło" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Nie powiodło się zapytanie o dane uwierzytelniające dla" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Niepowodzenie uwierzytelnienia" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Błąd podczas pobierania zadań z listy" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Pomyślnie połączono ze źródłem listy zadań" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Połączenie ze źródłem listy zadań się nie powiodło" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Pomijanie już wczytanej listy zadań " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Błąd podczas wczytywania menedżera zadań" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Brak zadań" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Usunięto zadanie %s" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Cofnij" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Jutro" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Wczoraj" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Usunąć zaznaczone listy zadań?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Nie można będzie ich przywrócić po usunięciu." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Usuń listy zadań" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Ustawianie nowego koloru listy zadań" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Wczytywanie list zadań…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Kliknięcie listy zadań zaznacza ją" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Błąd podczas tworzenia nowej listy zadań" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Na tym komputerze" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokalne" gnome-todo-3.18.1/po/pt.po000066400000000000000000000510471260744630400152720ustar00rootroot00000000000000# Portuguese translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # FIRST AUTHOR , YEAR. # Pedro Albuquerque , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-02 07:45+0100\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Português \n" "Language: pt\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Gtranslator 2.91.6\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "A fazer" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Gestor de agenda para o GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "A fazer do GNOME é uma simples aplicação de gestão de tarefas desenhada para " "integração no GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nova lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Alterar armazenamento predefinido…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Sobre" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Sair" #: ../data/gtk/menus.ui.h:5 #| msgid "Show or hide completed tasks" msgid "Clear completed task…" msgstr "Limpar tarefa terminada…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gerir as suas tarefas pessoais" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tarefa;Produtividade;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Janela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Estado da janela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Tamanho da janela" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Tamanho da janela (largura e altura)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posição da janela" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posição da janela (x e y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Primeira execução do A fazer do GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Se é ou não a primeira execução do A fazer (para executar as configurações " "iniciais)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Localização predefinida onde adicionar as novas listas" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "O identificador da localização predefinida onde adicionar novas listas" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detalhes" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notas" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Prazo" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioridade" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nenhuma" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baixa" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Média" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Eliminar" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Boas vindas" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Inicie sessão nas suas contas online para aceder às suas tarefas" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Cancelar" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Terminado" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Sem tarefas" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Pode adicionar tarefas a listas na vista Listas" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostrar ou ocultar tarefas terminadas" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Selecione o armazenamento predefinido para criar listas de tarefas:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Armazenamento predefinido" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Criar" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nome da lista" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Selecione um local de armazenamento" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Desligado" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Clique para adicionar nova conta Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Clique para adicionar nova conta ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Clique para adicionar nova conta Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Ou pode só armazenar as tarefas neste computador" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nova tarefa…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listas" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hoje" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Agendadas" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Renomear" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nova lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nome da lista de tarefas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Os autores do A fazer" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d Os autores do A fazer" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "A fazer" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Pedro Albuquerque " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Erro ao carregar a CSS do recurso" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Sem data definida" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Erro ao carregar as Contas online do GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Erro ao gravar lista de tarefas" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Erro ao remover lista de tarefas" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Erro ao criar a lista de tarefas" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Erro ao criar tarefa" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Erro ao remover tarefa" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Erro ao atualizar tarefa" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Falha ao pedir as credenciais" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Falha ao pedir as credenciais para" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Falha de autenticação" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Erro ao obter tarefas da lista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Origem da lista de tarefas ligada com sucesso" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Falha ao ligar à origem da lista de tarefas" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "A saltar lista de tarefas já carregada " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Erro ao carregar gestor de tarefas" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Sem tarefas" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Tarefa %s removida" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Desfazer" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Amanhã" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Ontem" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Remover as listas de tarefas selecionadas?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Uma vez removidas, as listas de tarefas não podem ser recuperadas." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Remover listas de tarefas" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Definir nova cor para a lista de tarefas" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "A carregar a sua lista de tarefas…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Clique numa lista de tarefas para selecionar" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Erro ao criar a nova lista de tarefas" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Neste computador" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "Gestor desta aplicação" #~ msgid "The manager of the application" #~ msgstr "O gestor da aplicação" #~ msgid "Task being edited" #~ msgstr "Tarefa em edição" #~ msgid "The task that is actually being edited" #~ msgstr "A tarefa que está atualmente em edição" #~ msgid "Manager of the task" #~ msgstr "Gestor da tarefa" #~ msgid "The singleton manager instance of the task" #~ msgstr "O único gestor da tarefa" #~ msgid "The online accounts client of the manager" #~ msgstr "O cliente de contas online do gestor" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "O cliente só de leitura das contas online do GNOME, carregado e detido " #~ "pelo gestor" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Se o cliente de contas online do GNOME está pronto" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "Se o cliente só de leitura de contas online do GNOME está carregado" #~ msgid "The source registry of the manager" #~ msgstr "O registo origem do gestor" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "O registo origem só de leitura carregado e detido pelo gestor" #~ msgid "Unique identifier of the object" #~ msgstr "Identificador único do objeto" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "O identificador único do objeto, definido pelo motor" #~ msgid "Ready state of the object" #~ msgstr "Estado pronto do objeto" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Se o objeto está marcado como pronto ou não" #~ msgid "Whether the task is completed or not" #~ msgstr "Se a tarefa está terminada ou não" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Se a tarefa foi marcada como terminada pelo utilizador" #~ msgid "Component of the task" #~ msgstr "Componente da tarefa" #~ msgid "The #ECalComponent this task handles." #~ msgstr "O #ECalComponent que esta tarefa gere." #~ msgid "Description of the task" #~ msgstr "Descrição da tarefa" #~ msgid "Optional string describing the task" #~ msgstr "Cadeia opcional descrevendo a tarefa" #~ msgid "End date of the task" #~ msgstr "Data de fim da tarefa" #~ msgid "The day the task is supposed to be completed" #~ msgstr "O dia em que é suposto a tarefa estar terminada" #~ msgid "List of the task" #~ msgstr "Lista da tarefa" #~ msgid "The list that owns this task" #~ msgstr "A lista que detém esta tarefa" #~ msgid "Priority of the task" #~ msgstr "Prioridade da tarefa" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "A prioridade da tarefa: 0 significa sem prioridade definida, as tarefas " #~ "são ordenadas alfabeticamente." #~ msgid "Title of the task" #~ msgstr "Título da tarefa" #~ msgid "The title of the task" #~ msgstr "O título da tarefa" #~ msgid "Color of the list" #~ msgstr "Cor da lista" #~ msgid "The color of the list" #~ msgstr "A cor da lista" #~ msgid "Whether the task list is removable" #~ msgstr "Se a lista de tarefas é removível" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Se a lista de tarefas pode ser removida do sistema" #~ msgid "Name of the list" #~ msgstr "Nome da lista" #~ msgid "The name of the list" #~ msgstr "O nome da lista" #~ msgid "Data origin of the list" #~ msgstr "Origem de dados da lista" #~ msgid "The data origin location of the list" #~ msgstr "A localização da origem de dados da lista" #~ msgid "Source of the list" #~ msgstr "Origem da lista" #~ msgid "The parent source that handles the list" #~ msgstr "A origem-pai que gere a lista" #~ msgid "Mode of this item" #~ msgstr "Modo deste item" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "O modo deste item, herdado do modo do pai" #~ msgid "Whether the task list is selected" #~ msgstr "Se a lista de tarefas está selecionada" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Se a lista de tarefas está selecionada quando em modo de seleção" #~ msgid "Task list of the item" #~ msgstr "Lista de tarefas do item" #~ msgid "The task list associated with this item" #~ msgstr "A lista de tarefas associada a este item" #~ msgid "Manager of this window's application" #~ msgstr "Gestor da aplicação desta janela" #~ msgid "The manager of the window's application" #~ msgstr "O gestor da aplicação da janela" #~ msgid "Whether the list is readonly" #~ msgstr "Se a lista é só de leitura" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Se a lista é só de leitura, i.e. se mostra a linha Nova tarefa ou não" #~ msgid "Whether task rows show the list name" #~ msgstr "Se linhas de tarefas mostram o nome da lista" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "Se linhas de tarefas mostram o nome da lista no final de cada linha" #~ msgid "Whether completed tasks are shown" #~ msgstr "Se mostra tarefas terminadas" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Se tarefas terminadas são visíveis ou não" #~ msgid "If the row is used to add a new task" #~ msgstr "Se a linha é usada para adicionar uma nova tarefa" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Se a linha é usada para adicionar uma nova tarefa" #~ msgid "Task of the row" #~ msgstr "Tarefa da linha" #~ msgid "The task that this row represents" #~ msgstr "A tarefa que esta linha representa" #~ msgid "Mode of this window" #~ msgstr "Modo desta janela" #~ msgid "The interaction mode of the window" #~ msgstr "O modo de interação da janela" #~ msgid "Whether the storage is enabled" #~ msgstr "Se o armazenamento está ativo" #~ msgid "Whether the storage is available to be used." #~ msgstr "Se o armazenamento está disponível para ser usado." #~ msgid "Icon of the storage" #~ msgstr "Ícone do armazenamento" #~ msgid "The icon representing the storage location." #~ msgstr "O ícone representando a localização do armazenamento." #~ msgid "Identifier of the storage" #~ msgstr "Identificador do armazenamento" #~ msgid "The unique identifier of the storage location." #~ msgstr "O identificador único da localização do armazenamento." #~ msgid "Whether the storage is the default" #~ msgstr "Se o armazenamento é a predefinição" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "Se o armazenamento é a localização predefinida a ser usada." #~ msgid "Name of the storage" #~ msgstr "Nome do armazenamento" #~ msgid "The user-visible name of the storage location." #~ msgstr "O nome visível da localização do armazenamento." #~ msgid "Name of the data provider of the storage" #~ msgstr "O nome do fornecedor de dados do armazenamento" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "O nome visível do fornecedor de dados do local de armazenamento." #~| msgid "Parent of the storage" #~ msgid "GoaObject of the storage" #~ msgstr "GoaObject do armazenamento" #~| msgid "The account of the storage location." #~ msgid "The GoaObject this storage location represents." #~ msgstr "O GoaObject que esta localização de armazenamento representa." #~ msgid "Parent of the storage" #~ msgstr "Pai do armazenamento" #~ msgid "The parent source identifier of the storage location." #~ msgstr "O identificador origem da localização do armazenamento." #~ msgid "Storage of the row" #~ msgstr "Armazenamento da linha" #~ msgid "The storage that this row holds" #~ msgstr "O armazenamento que esta linha detém" #~ msgid "Show local storage row" #~ msgstr "Mostrar linha de armazenamento local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Se mostrar linha de armazenamento local em vez de uma caixa de verificação" #~ msgid "Show stub rows" #~ msgstr "Mostrar linhas registo" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "Se mostrar linhas para contas não adicionadas" #~ msgid "Selects default storage row" #~ msgstr "Seleciona linha predefinida de armazenamento" #~ msgid "Whether should select the default storage row" #~ msgstr "Se deve selecionar a linha predefinida de armazenamento" #~ msgid "Whether the notification has a primary action" #~ msgstr "Se a notificação tem uma ação primária" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Se a notificação tem uma ação primária, ativada na expiração ou descarte" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Se a notificação tem uma ação secundária" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "Se a notificação tem uma ação secundária, ativada pelo utilizador" #~ msgid "Text of the secondary action button" #~ msgstr "Texto do botão da ação secundária" #~ msgid "The text of the secondary action button" #~ msgstr "O texto do botão da ação secundária" #~ msgid "Notification message" #~ msgstr "Mensagem de notificação" #~ msgid "The main message of the notification" #~ msgstr "A mensagem principal de notificação" #~ msgid "Notification timeout" #~ msgstr "Expiração da notificação" #~ msgid "The time the notification is displayed" #~ msgstr "O tempo que a notificação é mostrada" #~| msgid "Icon of the storage" #~ msgid "Account of the storage" #~ msgstr "Conta do armazenamento" #~ msgid "Provider type of the storage" #~ msgstr "Tipo de fornecedor do armazenamento" #~ msgid "Provider name of the storage" #~ msgstr "Nome do fornecedor do armazenamento" #~ msgid "New List…" #~ msgstr "Nova lista..." gnome-todo-3.18.1/po/pt_BR.po000066400000000000000000000450131260744630400156510ustar00rootroot00000000000000# Brazilian Portuguese translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Georges Neto , 2015. # Georges Basile Stavracas Neto , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-19 21:30+0000\n" "PO-Revision-Date: 2015-09-19 18:39-0300\n" "Last-Translator: Georges Basile Stavracas Neto \n" "Language-Team: Português <>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.8.1\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Tarefas" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Gerenciador de tarefas para o GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Tarefas é um aplicativo simples de gerenciamento de tarefas projetado " "para integrar ao GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nova lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Mudar local de armazenamento padrão…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "S_obre" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Sair" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Limpar tarefas completadas…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Gerencie suas tarefas pessoais" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Tarefas;Produtividade;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Janela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Estado de janela maximizada" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Tamanho da janela" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Tamanho da janela (largura e altura)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Posição da janela" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Posição da janela (x e y)" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Primeira execução do GNOME Tarefas" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Caso seja a primeira execução do GNOME Tarefas (para exibir o configurador " "inicial) ou não" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Localização padrão para onde adicionar novas listas" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "O identificador da localização padrão para onde adicionar novas listas" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detalhes" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notas" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Data de conclusão" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioridade" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Nenhuma" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Baixa" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Média" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Alta" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Deletar" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Bem vindo" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Conecte-se às contas online para acessar suas tarefas" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Cancelar" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Concluído" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nenhuma tarefa encontrada" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Você pode adicionar tarefas para as listas na visão Listas" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Mostrar ou ocultar tarefas completadas" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Selecione o local padrão de armazenamento para criar listas de tarefas:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Localização de armazenamento padrão" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Criar" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Nome da lista" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Selecione um local de armazenamento" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Off" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Clique para adicionar uma nova conta Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Clique para adicionar uma nova conta ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Clique para adicionar uma nova conta Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Ou você pode apenas armazenar suas tarefas neste computador" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nova tarefa…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listas" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hoje" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Programado" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Renomear" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nova lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Nome da lista de tarefas" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %Id Os autores de Tarefas" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %Id–%Id Os autores de Tarefas" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Tarefas" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Georges Basile Stavracas Neto \n" ",\n" "Rafael Fontenelle " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Erro ao carregar CSS do recurso" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nenhuma data definida" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Erro ao carregar as contas online do GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Erro ao salvar lista de tarefas" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Erro ao remover lista de tarefas" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Erro ao criar uma lista de tarefas" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Erro ao carregar tarefa" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Erro ao remover tarefa" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Erro atualizando tarefa" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Falhou em solicitar credenciais" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Falhou em solicitar credenciais para" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Falha de autenticação" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Erro a obter tarefas da lista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Fonte da lista de tarefas conectada com sucesso" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Falha ao conectar com fonte da lista de tarefas" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Pulando lista de tarefas já carregada" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Erro ao carregar gerenciador de tarefas" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nenhuma tarefa" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Tarefa %s removida" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Desfazer" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Amanhã" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Ontem" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Remover as listas de tarefas selecionadas?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Uma vez removido, as listas de tarefa não podem ser recuperadas." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Remover lista de tarefas" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Configurando nova cor para a lista de tarefas" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Carregando suas listas de tarefas…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Clique para selecionar uma lista de tarefas" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Erro ao criar nova lista de tarefas" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Neste computador" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Local" #~ msgid "Manager of this application" #~ msgstr "Gerenciador deste aplicativo" #~ msgid "The manager of the application" #~ msgstr "O gerenciador do aplicativo" #~ msgid "Task being edited" #~ msgstr "Tarefa sendo editada" #~ msgid "The task that is actually being edited" #~ msgstr "A tarefa que está sendo editada atualmente" #~ msgid "Manager of the task" #~ msgstr "Gerenciador da tarefa" #~ msgid "The singleton manager instance of the task" #~ msgstr "A instância única do gerenciador da tarefa" #~ msgid "Manager of this window's application" #~ msgstr "Gerenciador do aplicativo desta janela" #~ msgid "The manager of the window's application" #~ msgstr "O gerenciador do aplicativo desta janela" #~ msgid "Whether the list is readonly" #~ msgstr "Se a lista é somente leitura" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Se a lista é somente leitura, i.e. não mostra a linha Nova Tarefa, ou não" #~ msgid "Whether task rows show the list name" #~ msgstr "Se as linhas de tarefas mostram o nome da lista" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "Se linhas de tarefas mostram o nome da lista no fim da linha" #~ msgid "Whether completed tasks are shown" #~ msgstr "Se tarefas completadas são exibidas" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Se tarefas completadas são exibidas ou não" #~ msgid "The online accounts client of the manager" #~ msgstr "O cliente de contas online do gerenciador" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "O cliente somente-leitura de contas online do GNOME carregado e em posse " #~ "do gerenciador" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Se o cliente de contas online do GNOME está pronto" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "Se o cliente somente-leitura de contas online do GNOME está pronto" #~ msgid "The source registry of the manager" #~ msgstr "O registro de fontes do gerenciador" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "" #~ "O registro somente-leitura de fontes carregado e em posse do gerenciador" #~ msgid "Unique identifier of the object" #~ msgstr "Identificador único do objeto" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "O identificador único do objeto, definido pelo backend" #~ msgid "Ready state of the object" #~ msgstr "Estado de pronto do objeto" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Se o objeto está marcado como pronto ou não" #~ msgid "Whether the storage is enabled" #~ msgstr "Se o armazenamento está ativado" #~ msgid "Whether the storage is available to be used." #~ msgstr "Se o armazenamento está disponível para ser usado." #~ msgid "Icon of the storage" #~ msgstr "Ícone do armazenamento" #~ msgid "The icon representing the storage location." #~ msgstr "O ícone representado o local de armazenamento." #~ msgid "Identifier of the storage" #~ msgstr "Identificador do armazenamento" #~ msgid "The unique identifier of the storage location." #~ msgstr "O identificador único do local de armazenamento." #~ msgid "Whether the storage is the default" #~ msgstr "Se o armazenamento é o padrão" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "" #~ "Se o armazenamento é o local padrão de armazenamento a ser utilizado." #~ msgid "Name of the storage" #~ msgstr "Nome do armazenamento" #~ msgid "The user-visible name of the storage location." #~ msgstr "O nome visível para o usuário do local de armazenamento." #~ msgid "Parent of the storage" #~ msgstr "Pai do armazenamento" #~ msgid "The parent source identifier of the storage location." #~ msgstr "O identificador da fonte pai do local de armazenamento." #~ msgid "Provider type of the storage" #~ msgstr "Tipo de provedor do armazenamento" #~ msgid "The provider type of the storage location." #~ msgstr "O tipo de provedor do local de armazenamento." #~ msgid "Provider name of the storage" #~ msgstr "Nome do provedor do armazenamento" #~ msgid "The name of the provider of the storage location." #~ msgstr "O nome de provedor do local de armazenamento." #~ msgid "Storage of the row" #~ msgstr "Armazenamento da linha" #~ msgid "The storage that this row holds" #~ msgstr "O armazenamento que esta linha contém" #~ msgid "Show local storage row" #~ msgstr "Mostrar linha de armazenamento local" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Se deve mostrar uma linha de armazenamento local ao invés de uma caixa de " #~ "seleçaõ" #~ msgid "Show stub rows" #~ msgstr "Mostrar linhas vazias" #~ msgid "Whether should show stub rows for non-added accounts" #~ msgstr "Se deve mostrar linhas vazias para contas não adicionadas" #~ msgid "Selects default storage row" #~ msgstr "Seleciona a linha de armazenamento padrão" #~ msgid "Whether should select the default storage row" #~ msgstr "Se deve selecionar a linha de armazenamento padrão" #~ msgid "Whether the task is completed or not" #~ msgstr "Se a tarefa está completa ou não" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Se a tarefa está marcada como completa pelo usuário" #~ msgid "Component of the task" #~ msgstr "Componente da tarefa" #~ msgid "The #ECalComponent this task handles." #~ msgstr "O #ECalComponent que esta tarefa carrega." #~ msgid "Description of the task" #~ msgstr "Descrição da tarefa" #~ msgid "Optional string describing the task" #~ msgstr "Texto opcional que descreve a tarefa" #~ msgid "End date of the task" #~ msgstr "Data final da tarefa" #~ msgid "The day the task is supposed to be completed" #~ msgstr "A data em que a tarefa é suposta estar completa" #~ msgid "List of the task" #~ msgstr "Lista da tarefa" #~ msgid "The list that owns this task" #~ msgstr "A lista que possui esta tarefa" #~ msgid "Priority of the task" #~ msgstr "Prioridade da tarefa" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alfabetically." #~ msgstr "" #~ "A prioridade da tarefa. 0 significa nenhuma prioridade, e as tarefas " #~ "serão ordenadas alfabeticamente." #~ msgid "Title of the task" #~ msgstr "Título da tarefa" #~ msgid "The title of the task" #~ msgstr "O título da tarefa" #~ msgid "Color of the list" #~ msgstr "Cor da lista" #~ msgid "The color of the list" #~ msgstr "A cor da lista" #~ msgid "The name of the list" #~ msgstr "O nome da lista" #~ msgid "Data origin of the list" #~ msgstr "Origem de dados da lista" #~ msgid "The data origin location of the list" #~ msgstr "O local de origem de dados da lista" #~ msgid "Source of the list" #~ msgstr "Fonte da lista" #~ msgid "The parent source that handles the list" #~ msgstr "A fonte pai que possui a lista" #~ msgid "Mode of this item" #~ msgstr "Modo do item" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "O modo do item, herdado do modo do pai" #~ msgid "Task list of the item" #~ msgstr "Lista de tarefas do item" #~ msgid "The task list associated with this item" #~ msgstr "A lista de tarefas associada a este item" #~ msgid "If the row is used to add a new task" #~ msgstr "Se a linha é usada para adicionar uma nova tarefa" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Se a linha é usada para adicionar uma nova tarefa" #~ msgid "Task of the row" #~ msgstr "Tarefa da linha" #~ msgid "The task that this row represents" #~ msgstr "A tarefa que esta linha representa" gnome-todo-3.18.1/po/sk.po000066400000000000000000000514511260744630400152630ustar00rootroot00000000000000# Slovak translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Dušan Kazik , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 00:19+0000\n" "PO-Revision-Date: 2015-09-02 07:41+0200\n" "Last-Translator: Dušan Kazik \n" "Language-Team: slovenčina <>\n" "Language: sk\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Úlohy" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Správca úloh prostredia GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Úlohy prostredia GNOME je jednoduchá aplikácia na správu úloh, integrovaná s " "prostredím GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nový zoznam…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Zmeniť predvolené umiestnenie úložiska…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_O programe" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Ukončiť" # tooltip #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Vymazať dokončené úlohy…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Spravujte vaše osobné úlohy" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "úloha;produktivita;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Maximalizované okno" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Maximalizovaný stav okna" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Veľkosť okna" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Veľkosť okna (šírka a výška)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Umiestnenie okna" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Pozícia okna (x a y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Prvé spustenie aplikácie Úlohy prostredia GNOME" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Určuje, či je prvé spustenie aplikácie Úlohy prostredia GNOME (kvôli " "spusteniu počiatočného nastavenia) alebo nie" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Predvolené umiestnenie, do ktorého sa majú pridávať nové zoznamy" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" "Identifikátor predvoleného umiestnenie, do ktorého sa majú pridávať nové " "zoznamy" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Podrobnosti" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Poznámky" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Termín" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Priorita" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Žiadna" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Nízka" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Stredná" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Vysoká" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Odstrániť" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Vitajte" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Prihlásením do účtov služieb získate prístup k vašim úlohám" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Zrušiť" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:340 msgid "Done" msgstr "Dokončiť" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nenašli sa žiadne úlohy" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" "Môžete pridať úlohy do zoznamov prostredníctvom zobrazenia Zoznamy" # tooltip #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Zobrazí alebo skryje dokončené úlohy" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" "Vyberte predvolené umiestnenie úložiska, v ktorom sa majú vytvoriť zoznamy " "úloh:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Predvolené umiestnenie úložiska" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Vytvoriť" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Názov zoznamu" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Vyberte umiestnenie úložiska" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Vypnuté" # tooltip #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Kliknutím pridáte nový účet Google" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" # tooltip #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Kliknutím pridáte nový účet ownCloud" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" # tooltip #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Kliknutím pridáte nový účet Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Alebo môžete ukladať vaše úlohy iba v tomto počítači" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Nová úloha…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Zoznamy" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Dnes" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Naplánované" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Premenovať" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nový zoznam" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Názov zoznamu úloh" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Autorské práva © %d Autori aplikácie Úlohy" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Autorské práva © %d–%d Autori aplikácie Úlohy" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Úlohy" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Dušan Kazik " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Chyba pri načítavaní CSS zo zdroja" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Žiadna sada údajov " #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Chyba pri načítavaní Účtov služieb prostredia GNOME" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Chyba pri ukladaní zoznamu úloh" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Chyba pri odstraňovaní zoznamu úloh" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Chyba pri vytváraní zoznamu úloh" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Chyba pri vytváraní zoznamu úloh" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Chyba pri odstraňovaní úlohy" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Chyba pri aktualizovaní úlohy" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Zlyhalo pýtanie poverení" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Zlyhalo pýtanie poverení pre" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Zlyhanie overenia totožnosti" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Chyba pri získavaní úloh zo zoznamu" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Zdroj zoznamu úloh bol úspešne pripojený" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Zlyhalo pripojenie k zdroju zoznamu úloh" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Vynecháva sa už načítaný zoznam úloh " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Chyba pri načítavaní správcu úloh" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Žiadne úlohy" #: ../src/gtd-task-list-view.c:251 #, c-format msgid "Task %s removed" msgstr "Úloha %s bola odstránená" #: ../src/gtd-task-list-view.c:271 msgid "Undo" msgstr "Vrátiť späť" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Zajtra" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Včera" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Odstrániť vybraté zoznamy úloh?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Po odstránení už nebude možné zoznamy úloh obnoviť." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Odstránenie zoznamov úloh" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Nastavuje sa nová farba zoznamu úloh" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Načítavanie vašich zoznamov úloh…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Kliknutím na zoznam úloh ho vyberiete" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Chyba pri vytváraní nového zoznamu úloh" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "V tomto počítači" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Miestny" #~ msgid "Manager of this application" #~ msgstr "Správca tejto aplikácie" #~ msgid "The manager of the application" #~ msgstr "Správca aplikácie" #~ msgid "Task being edited" #~ msgstr "Úloha, ktorá je práve upravovaná" #~ msgid "The task that is actually being edited" #~ msgstr "Úloha, ktorá sa aktuálne upravuje" #~ msgid "Manager of the task" #~ msgstr "Správca úlohy" #~ msgid "The singleton manager instance of the task" #~ msgstr "Jediná inštancia správcu úlohy" #~ msgid "The online accounts client of the manager" #~ msgstr "Klient účtov služieb správcu" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "" #~ "Klient účtov služieb prostredia GNOME iba na čítanie, ktorý je načítaný a " #~ "vlastnený správcom" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "Či je klient účtov služieb prostredia GNOME pripravený" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "" #~ "Určuje, či je načítaný klient účtov služieb prostredia GNOME iba na " #~ "čítanie" #~ msgid "The source registry of the manager" #~ msgstr "Zdrojový register správcu" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "Zdrojový registre iba na čítanie je načítaný a vlastnený správcom" #~ msgid "Unique identifier of the object" #~ msgstr "Jedinečný identifikátor objektu" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "Jedinečný identifikátor objektu, definovaný obslužným programom" #~ msgid "Ready state of the object" #~ msgstr "Stav pripravenosti objektu" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "Určuje, či je objekt označený ako pripravený alebo nie" #~ msgid "Whether the task is completed or not" #~ msgstr "Či je úloha dokončená alebo nie" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Určuje, či má byť úloha označená používateľom ako dokončená" #~ msgid "Component of the task" #~ msgstr "Súčasť úlohy" #~ msgid "The #ECalComponent this task handles." #~ msgstr "Súčasť #ECalComponent, ktorý spravuje táto úloha." #~ msgid "Description of the task" #~ msgstr "Popis úlohy" #~ msgid "Optional string describing the task" #~ msgstr "Voliteľný reťazec popisujúci úlohu" #~ msgid "End date of the task" #~ msgstr "Dátum konca tejto úlohy" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Predpokladaný deň dokončenia úlohy" #~ msgid "List of the task" #~ msgstr "Zoznam úlohy" #~ msgid "The list that owns this task" #~ msgstr "Zoznam, ktorý vlastní túto úlohu" #~ msgid "Priority of the task" #~ msgstr "Priorita úlohy" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "Priorita úlohy. 0 znamená, že nie je nastavená žiadna priorita a úlohy " #~ "budú usporiadané podľa abecedy." #~ msgid "Title of the task" #~ msgstr "Názov úlohy" #~ msgid "The title of the task" #~ msgstr "Názov úlohy" #~ msgid "Color of the list" #~ msgstr "Farba zoznamu" #~ msgid "The color of the list" #~ msgstr "Farba zoznamu" #~ msgid "Whether the task list is removable" #~ msgstr "Či je možné odstrániť zoznam úloh" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "Či je možné zoznam úloh odstrániť zo systému" #~ msgid "Name of the list" #~ msgstr "Názov zoznamu" #~ msgid "The name of the list" #~ msgstr "Názov zoznamu" #~ msgid "Data origin of the list" #~ msgstr "Pôvod údajov zoznamu" #~ msgid "The data origin location of the list" #~ msgstr "Umiestnenie pôvodu údajov zoznamu" #~ msgid "Source of the list" #~ msgstr "Zdroj zoznamu" #~ msgid "The parent source that handles the list" #~ msgstr "Rodičovský zdroj, ktorý spravuje tento zoznam" #~ msgid "Mode of this item" #~ msgstr "Režim tejto položky" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "Režim tejto položky, zdedený z režimu rodičov" #~ msgid "Whether the task list is selected" #~ msgstr "Či je zoznam úloh vybratý" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "Či je zoznam úloh vybratý počas režimu výberu" #~ msgid "Task list of the item" #~ msgstr "Zoznam úloh položky" #~ msgid "The task list associated with this item" #~ msgstr "Zoznam úloh priradený k tejto položke" #~ msgid "Manager of this window's application" #~ msgstr "Správca aplikácie pre toto okno" #~ msgid "The manager of the window's application" #~ msgstr "Správca aplikácie okna" #~ msgid "Whether the list is readonly" #~ msgstr "Či je zoznam iba na čítanie" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "" #~ "Určuje, či je zoznam iba na čítanie, t.j. zobrazí alebo nezobrazí sa " #~ "riadok Nová úloha" #~ msgid "Whether task rows show the list name" #~ msgstr "Či riadky s úlohami zobrazia názov zoznamu" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "" #~ "Určuje, či riadky s úlohami majú zobraziť názov zoznamu na konci riadku" #~ msgid "Whether completed tasks are shown" #~ msgstr "Či sa zobrazia dokončené úlohy" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Určuje, či sú viditeľné dokončené úlohy alebo nie" #~ msgid "If the row is used to add a new task" #~ msgstr "Ak je riadok použitý na pridanie novej úlohy" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Určuje, či je riadok použitý na pridanie novej úlohy" #~ msgid "Task of the row" #~ msgstr "Úloha riadku" #~ msgid "The task that this row represents" #~ msgstr "Úloha, ktorú reprezentuje tento riadok" #~ msgid "Mode of this window" #~ msgstr "Režim tohto okna" #~ msgid "The interaction mode of the window" #~ msgstr "Režim interakcie okna" #~ msgid "Whether the storage is enabled" #~ msgstr "Či je povolené úložisko" #~ msgid "Whether the storage is available to be used." #~ msgstr "Určuje, či je úložisko dostupné na použitie." #~ msgid "Icon of the storage" #~ msgstr "Ikona úložiska" #~ msgid "The icon representing the storage location." #~ msgstr "Ikona predstavujúca umiestnenie úložiska." #~ msgid "Identifier of the storage" #~ msgstr "Identifikátor úložiska" #~ msgid "The unique identifier of the storage location." #~ msgstr "Jedinečný identifikátor umiestnenia úložiska." #~ msgid "Whether the storage is the default" #~ msgstr "Či je úložisko predvolené" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "Určuje, či je úložisko predvoleným úložiskom, ktoré sa má použiť." #~ msgid "Name of the storage" #~ msgstr "Názov úložiska" #~ msgid "The user-visible name of the storage location." #~ msgstr "Názov umiestnenia úložiska viditeľný pre používateľa." #~ msgid "Name of the data provider of the storage" #~ msgstr "Názov poskytovateľa údajov umiestnenia úložiska" #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "" #~ "Názov poskytovateľa údajov umiestnenia úložiska viditeľný pre používateľa." #~| msgid "Parent of the storage" #~ msgid "GoaObject of the storage" #~ msgstr "Typ kontajneru GoaObject úložiska" #~| msgid "The account of the storage location." #~ msgid "The GoaObject this storage location represents." #~ msgstr "" #~ "Typ kontajneru GoaObject, ktorý reprezentuje toto umiestnenie úložiska." #~ msgid "Parent of the storage" #~ msgstr "Rodič úložiska" #~ msgid "The parent source identifier of the storage location." #~ msgstr "Identifikátor rodičovského zdroja umiestnenia úložiska." #~ msgid "Storage of the row" #~ msgstr "Úložisko riadku" #~ msgid "The storage that this row holds" #~ msgstr "Úložisko, ktoré drží tento riadok" #~ msgid "Show local storage row" #~ msgstr "Zobraziť riadok s miestnym úložiskom" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "" #~ "Určuje, či sa má zobraziť riadok s miestnym úložiskom namiesto " #~ "zaškrtávacieho poľa" #~ msgid "Selects default storage row" #~ msgstr "Vyberie riadok predvoleného úložiska" #~ msgid "Whether should select the default storage row" #~ msgstr "Určuje, či sa má vybrať riadok s predvoleným úložiskom" #~ msgid "Whether the notification has a primary action" #~ msgstr "Či oznámenie obsahuje hlavnú akciu" # desc #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "" #~ "Určuje, či oznámenie obsahuje hlavnú akciu, aktivovanú po vypršaní času, " #~ "alebo odmietnutí" #~ msgid "Whether the notification has a secondary action" #~ msgstr "Či oznámenie obsahuje vedľajšiu akciu" # desc #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "" #~ "Určuje, či oznámenie obsahuje vedľajšiu akciu, aktivovanú používateľom" #~ msgid "Text of the secondary action button" #~ msgstr "Text vedľajšieho akčného tlačidla" #~ msgid "The text of the secondary action button" #~ msgstr "Text vedľajšieho akčného tlačidla" #~ msgid "Notification message" #~ msgstr "Oznamovacia správa" #~ msgid "The main message of the notification" #~ msgstr "Hlavná správa oznámenia" #~ msgid "Notification timeout" #~ msgstr "Časový limit oznámenia" #~ msgid "The time the notification is displayed" #~ msgstr "Doba, počas ktorej je zobrazené oznámenie" #~| msgid "Icon of the storage" #~ msgid "Account of the storage" #~ msgstr "Účet úložiska" #~ msgid "Provider type of the storage" #~ msgstr "Typ poskytovateľa úložiska" #~ msgid "Provider name of the storage" #~ msgstr "Názov poskytovateľa úložiska" gnome-todo-3.18.1/po/sl.po000066400000000000000000000350421260744630400152620ustar00rootroot00000000000000# Slovenian translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # # Matej Urbančič , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-07-08 18:44+0000\n" "PO-Revision-Date: 2015-07-08 21:49+0100\n" "Last-Translator: Matej Urbančič \n" "Language-Team: Slovenian GNOME Translation Team \n" "Language: sl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || " "n%100==4 ? 3 : 0);\n" "X-Poedit-SourceCharset: utf-8\n" "X-Generator: Poedit 1.7.5\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Nov seznam ..." #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_O Programu" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Končaj" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "" #: ../data/org.gnome.todo.gschema.xml.in.h:1 msgid "Window maximized" msgstr "Razpeto okno" #: ../data/org.gnome.todo.gschema.xml.in.h:2 msgid "Window maximized state" msgstr "" #: ../data/org.gnome.todo.gschema.xml.in.h:3 msgid "Window size" msgstr "Velikost okna" #: ../data/org.gnome.todo.gschema.xml.in.h:4 msgid "Window size (width and height)." msgstr "Velikost okna (širina in višina)." #: ../data/org.gnome.todo.gschema.xml.in.h:5 msgid "Window position" msgstr "Položaj okna" #: ../data/org.gnome.todo.gschema.xml.in.h:6 msgid "Window position (x and y)." msgstr "Položaj okna (osi x in y)." #: ../data/org.gnome.todo.gschema.xml.in.h:7 msgid "First run of GNOME To Do" msgstr "" #: ../data/org.gnome.todo.gschema.xml.in.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" #: ../data/org.gnome.todo.gschema.xml.in.h:9 msgid "Default location to add new lists to" msgstr "" #: ../data/org.gnome.todo.gschema.xml.in.h:10 msgid "The identifier of the default location to add new lists to" msgstr "" #: ../data/ui/edit-pane.ui.h:1 msgid "Details" msgstr "Podrobnosti" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Opombe" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prednost" #: ../data/ui/edit-pane.ui.h:5 #, fuzzy msgid "None" msgstr "Brez obrobe" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Nizka" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Srednja" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Visoka" #: ../data/ui/edit-pane.ui.h:9 msgid "Delete" msgstr "Izbriši" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Dobrodošli" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 msgid "Cancel" msgstr "Prekliči" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:285 msgid "Done" msgstr "Končano" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Ustvari" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Ime seznama" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "" #: ../data/ui/storage-row.ui.h:1 #, fuzzy msgid "Off" msgstr "Nepovezano" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "" #: ../data/ui/window.ui.h:1 ../src/gtd-task-list-view.c:218 msgid "Undo" msgstr "Razveljavi" #: ../data/ui/window.ui.h:2 msgid "Lists" msgstr "Seznami" #: ../data/ui/window.ui.h:3 ../src/gtd-task-row.c:145 ../src/gtd-window.c:151 #: ../src/gtd-window.c:156 msgid "Today" msgstr "Danes" #: ../data/ui/window.ui.h:4 ../src/gtd-window.c:151 ../src/gtd-window.c:156 msgid "Scheduled" msgstr "" #: ../data/ui/window.ui.h:5 msgid "Rename" msgstr "Preimenuj" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Nov seznam" #: ../src/gtd-application.c:90 msgid "Copyright © %Id The Todo authors" msgstr "" #: ../src/gtd-application.c:95 msgid "Copyright © %Id–%Id The Todo authors" msgstr "" #: ../src/gtd-application.c:100 ../src/gtd-application.c:126 msgid "To Do" msgstr "" #: ../src/gtd-application.c:107 msgid "translator-credits" msgstr "Matej Urbančič " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "" #: ../src/gtd-edit-pane.c:136 ../src/gtd-task-row.c:175 msgid "No date set" msgstr "" #: ../src/gtd-edit-pane.c:251 msgid "Manager of this application" msgstr "" #: ../src/gtd-edit-pane.c:252 msgid "The manager of the application" msgstr "" #: ../src/gtd-edit-pane.c:265 msgid "Task being edited" msgstr "" #: ../src/gtd-edit-pane.c:266 msgid "The task that is actually being edited" msgstr "" #: ../src/gtd-initial-setup-window.c:216 msgid "Manager of the task" msgstr "" #: ../src/gtd-initial-setup-window.c:217 msgid "The singleton manager instance of the task" msgstr "" #: ../src/gtd-manager.c:376 msgid "Error loading GNOME Online Accounts" msgstr "" #: ../src/gtd-manager.c:405 msgid "Error saving task list" msgstr "" #: ../src/gtd-manager.c:432 msgid "Error removing task list" msgstr "" #: ../src/gtd-manager.c:467 msgid "Error creating task" msgstr "" #: ../src/gtd-manager.c:531 msgid "Error removing task" msgstr "" #: ../src/gtd-manager.c:584 msgid "Error updating task" msgstr "" #: ../src/gtd-manager.c:613 msgid "Failed to prompt for credentials" msgstr "" #: ../src/gtd-manager.c:636 msgid "Failed to prompt for credentials for" msgstr "" #: ../src/gtd-manager.c:688 msgid "Authentication failure" msgstr "" #: ../src/gtd-manager.c:755 msgid "Error fetching tasks from list" msgstr "" #: ../src/gtd-manager.c:821 msgid "Task list source successfully connected" msgstr "" #: ../src/gtd-manager.c:828 msgid "Failed to connect to task list source" msgstr "" #: ../src/gtd-manager.c:858 msgid "Skipping already loaded task list " msgstr "" #: ../src/gtd-manager.c:896 msgid "Error loading task manager" msgstr "" #: ../src/gtd-manager.c:1030 msgid "Local" msgstr "Krajevno" #: ../src/gtd-manager.c:1031 msgid "On This Computer" msgstr "" #: ../src/gtd-manager.c:1064 msgid "The online accounts client of the manager" msgstr "" #: ../src/gtd-manager.c:1065 msgid "" "The read-only GNOME online accounts client loaded and owned by the manager" msgstr "" #: ../src/gtd-manager.c:1078 msgid "Whether GNOME Online Accounts client is ready" msgstr "" #: ../src/gtd-manager.c:1079 msgid "Whether the read-only GNOME online accounts client is loaded" msgstr "" #: ../src/gtd-manager.c:1092 msgid "The source registry of the manager" msgstr "" #: ../src/gtd-manager.c:1093 msgid "The read-only source registry loaded and owned by the manager" msgstr "" #: ../src/gtd-object.c:152 msgid "Unique identifier of the object" msgstr "" #: ../src/gtd-object.c:153 msgid "The unique identifier of the object, defined by the backend" msgstr "" #: ../src/gtd-object.c:166 msgid "Ready state of the object" msgstr "" #: ../src/gtd-object.c:167 msgid "Whether the object is marked as ready or not" msgstr "" #: ../src/gtd-storage.c:189 msgid "Whether the storage is enabled" msgstr "" #: ../src/gtd-storage.c:190 msgid "Whether the storage is available to be used." msgstr "" #: ../src/gtd-storage.c:203 msgid "Icon of the storage" msgstr "" #: ../src/gtd-storage.c:204 msgid "The icon representing the storage location." msgstr "" #: ../src/gtd-storage.c:217 msgid "Identifier of the storage" msgstr "" #: ../src/gtd-storage.c:218 msgid "The unique identifier of the storage location." msgstr "" #: ../src/gtd-storage.c:231 msgid "Whether the storage is the default" msgstr "" #: ../src/gtd-storage.c:232 msgid "Whether the storage is the default storage location to be used." msgstr "" #: ../src/gtd-storage.c:245 msgid "Name of the storage" msgstr "" #: ../src/gtd-storage.c:246 msgid "The user-visible name of the storage location." msgstr "" #: ../src/gtd-storage.c:259 msgid "Parent of the storage" msgstr "" #: ../src/gtd-storage.c:260 msgid "The parent source identifier of the storage location." msgstr "" #: ../src/gtd-storage.c:273 msgid "Provider type of the storage" msgstr "" #: ../src/gtd-storage.c:274 msgid "The provider type of the storage location." msgstr "" #: ../src/gtd-storage.c:287 msgid "Provider name of the storage" msgstr "" #: ../src/gtd-storage.c:288 msgid "The name of the provider of the storage location." msgstr "" #: ../src/gtd-storage.c:680 msgid "Error creating new task list" msgstr "" #: ../src/gtd-storage-dialog.c:153 ../src/gtd-storage-popover.c:272 #: ../src/gtd-storage-selector.c:522 ../src/gtd-task-list-view.c:659 #: ../src/gtd-window.c:635 msgid "Manager of this window's application" msgstr "" #: ../src/gtd-storage-dialog.c:154 ../src/gtd-storage-popover.c:273 #: ../src/gtd-storage-selector.c:523 ../src/gtd-task-list-view.c:660 #: ../src/gtd-window.c:636 msgid "The manager of the window's application" msgstr "" #: ../src/gtd-storage-row.c:148 msgid "Storage of the row" msgstr "" #: ../src/gtd-storage-row.c:149 msgid "The storage that this row holds" msgstr "" #: ../src/gtd-storage-selector.c:536 msgid "Show local storage row" msgstr "" #: ../src/gtd-storage-selector.c:537 msgid "Whether should show a local storage row instead of a checkbox" msgstr "" #: ../src/gtd-storage-selector.c:550 msgid "Show stub rows" msgstr "" #: ../src/gtd-storage-selector.c:551 msgid "Whether should show stub rows for non-added accounts" msgstr "" #: ../src/gtd-storage-selector.c:564 msgid "Selects default storage row" msgstr "" #: ../src/gtd-storage-selector.c:565 msgid "Whether should select the default storage row" msgstr "" #: ../src/gtd-task.c:254 msgid "Whether the task is completed or not" msgstr "" #: ../src/gtd-task.c:255 msgid "Whether the task is marked as completed by the user" msgstr "" #: ../src/gtd-task.c:268 msgid "Component of the task" msgstr "" #: ../src/gtd-task.c:269 msgid "The #ECalComponent this task handles." msgstr "" #: ../src/gtd-task.c:282 msgid "Description of the task" msgstr "" #: ../src/gtd-task.c:283 msgid "Optional string describing the task" msgstr "" #: ../src/gtd-task.c:297 msgid "End date of the task" msgstr "" #: ../src/gtd-task.c:298 msgid "The day the task is supposed to be completed" msgstr "" #: ../src/gtd-task.c:311 msgid "List of the task" msgstr "" #: ../src/gtd-task.c:312 msgid "The list that owns this task" msgstr "" #: ../src/gtd-task.c:325 msgid "Priority of the task" msgstr "" #: ../src/gtd-task.c:326 msgid "" "The priority of the task. 0 means no priority set, and tasks will be sorted " "alfabetically." msgstr "" #: ../src/gtd-task.c:341 msgid "Title of the task" msgstr "" #: ../src/gtd-task.c:342 msgid "The title of the task" msgstr "" #: ../src/gtd-task-list.c:152 msgid "Color of the list" msgstr "" #: ../src/gtd-task-list.c:153 msgid "The color of the list" msgstr "" #: ../src/gtd-task-list.c:166 msgid "Name of the list" msgstr "" #: ../src/gtd-task-list.c:167 msgid "The name of the list" msgstr "" #: ../src/gtd-task-list.c:180 msgid "Data origin of the list" msgstr "" #: ../src/gtd-task-list.c:181 msgid "The data origin location of the list" msgstr "" #: ../src/gtd-task-list.c:194 msgid "Source of the list" msgstr "" #: ../src/gtd-task-list.c:195 msgid "The parent source that handles the list" msgstr "" #: ../src/gtd-task-list-item.c:231 msgid "No tasks" msgstr "Ni zabeleženih nalog" #: ../src/gtd-task-list-item.c:443 msgid "Mode of this item" msgstr "" #: ../src/gtd-task-list-item.c:444 msgid "The mode of this item, inherited from the parent's mode" msgstr "" #: ../src/gtd-task-list-item.c:459 msgid "Task list of the item" msgstr "" #: ../src/gtd-task-list-item.c:460 msgid "The task list associated with this item" msgstr "" #: ../src/gtd-task-list-view.c:202 #, c-format msgid "Task %s removed" msgstr "" #: ../src/gtd-task-list-view.c:673 msgid "Whether the list is readonly" msgstr "" #: ../src/gtd-task-list-view.c:674 msgid "" "Whether the list is readonly, i.e. doesn't show the New Task row, or not" msgstr "" #: ../src/gtd-task-list-view.c:687 msgid "Whether task rows show the list name" msgstr "" #: ../src/gtd-task-list-view.c:688 msgid "Whether task rows show the list name at the end of the row" msgstr "" #: ../src/gtd-task-list-view.c:701 msgid "Whether completed tasks are shown" msgstr "" #: ../src/gtd-task-list-view.c:702 msgid "Whether completed tasks are visible or not" msgstr "" #: ../src/gtd-task-row.c:149 msgid "Tomorrow" msgstr "Jutri" #: ../src/gtd-task-row.c:153 msgid "Yesterday" msgstr "Včeraj" #: ../src/gtd-task-row.c:375 msgid "If the row is used to add a new task" msgstr "" #: ../src/gtd-task-row.c:376 msgid "Whether the row is used to add a new task" msgstr "" #: ../src/gtd-task-row.c:389 msgid "Task of the row" msgstr "" #: ../src/gtd-task-row.c:390 msgid "The task that this row represents" msgstr "" #: ../src/gtd-window.c:294 msgid "Setting new color for task list" msgstr "" #: ../src/gtd-window.c:398 msgid "Loading your task lists…" msgstr "" gnome-todo-3.18.1/po/sr.po000066400000000000000000000324011260744630400152640ustar00rootroot00000000000000# Serbian translations for gnome-todo package # Преводи на српски језик за пакет „gnome-todo“. # Copyright (C) 2015 THE gnome-todo'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Марко М. Костић , 2015. # Марко М. Костић (Marko M. Kostić) , 2015. # Милош Поповић , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-22 09:02+0000\n" "PO-Revision-Date: 2015-09-22 12:58+0200\n" "Last-Translator: Милош Поповић \n" "Language-Team: српски \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.7\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Роковник" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Роковник за Гном" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Гномов роковник је једноставан програм за управљање задацима који је " "усклађен са Гномом." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Нови списак…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Промени путању подразумеваног складишта…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "О прогр_аму" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Изађи" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Очисти завршени задатак…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Управљај личним задацима" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Задаци;Продуктивност;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Повећан прозор" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Стање повећаног прозора" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Величина прозора" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Величина прозора (ширина и висина)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Положај прозора" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Положај прозора (x и y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Прво покретање Гномовог роковника" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Да ли је Гномов роковник први пут покренут или не (зарад покретања почетног " "подешавања)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Подразумевана путања за смештај нових спискова" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Идентификатор подразумеване путање за смештај нових спискова" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Појединости" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Белешке" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Крајњи рок" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Важност" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ништа" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Мала" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Средња" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Велика" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Обриши" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Добродошли" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Пријавите се на ваше налоге на мрежи зарад приступа вашим задацима" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Откажи" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Готово" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Нема задатака" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Можете додати нове задатке на списак у прегледу Спискови" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Прикажи или сакриј завршене задатке" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Изаберите подразумевану путању за прављење спискова са задацима:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Подразумевана путања складишта" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Направи" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Назив списка" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Изаберите место складишта" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Искључено" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Кликните да додате нови Гугл налог" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Гугл" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Кликните да додате нови налог могОблака (ownCloud)" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "мојОблак (ownCloud)" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Кликните да додате нови налог Мајкрософтове размене" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Мајкрософтова размена" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Или само чувајте ваше задатке на овом рачунару" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Нови задатак…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Спискови" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Данас" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Заказано" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Преименуј" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Нови списак" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Назив новог списка са задацима" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Право на умножавање © %d творци Гномовог роковника" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Право на уможавање © %d–%d творци Гномовог роковника" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Роковник" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Марко М. Костић (Marko M. Kostić) " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Грешка приликом учитавања ЦСС-а из ресурса" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Није постављен датум" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Грешка приликом учитавања Гномових налога на мрежи" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Грешка приликом чувања списка са задацима" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Грешка приликом уклањања списка са задацима" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Грешка приликом прављења списка са задацима" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Грешка приликом прављења задатка" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Грешка приликом уклањања задатка" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Грешка приликом ажурирања задатка" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Нисам успео да упитам за приступне параметре" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Нисам успео да упитам за приступне параметре за" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Неуспех приликом пријављивања" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Грешка приликом добављања задатака из списка" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Извор списка са задацима успешно повезан" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Грешка приликом повезивања на извор списка са задацима" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Прескачем већ учитан списак са задацима" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Грешка приликом учитавања управника задатака" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Нема задатака" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Задатак %s уклоњен" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Опозови" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Сутра" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Јуче" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Уклонити изабране спискове са задацима?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Након уклањања, списак са задацима не може да се поврати." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Уклони спискове са задацима" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Постављам нову боју списка са задацима" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Учитавам ваше спискове са задацима…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Кликните на списак са задацима да бисте га изабрали" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Грешка приликом прављења новог списка са задацима" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "На овом рачунару" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Локално" gnome-todo-3.18.1/po/sr@latin.po000066400000000000000000000262701260744630400164230ustar00rootroot00000000000000# Serbian translations for gnome-todo package # Prevodi na srpski jezik za paket „gnome-todo“. # Copyright (C) 2015 THE gnome-todo'S COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Marko M. Kostić , 2015. # Marko M. Kostić (Marko M. Kostić) , 2015. # Miloš Popović , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-22 09:02+0000\n" "PO-Revision-Date: 2015-09-22 12:58+0200\n" "Last-Translator: Miloš Popović \n" "Language-Team: srpski \n" "Language: sr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n" "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Gtranslator 2.91.7\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Rokovnik" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Rokovnik za Gnom" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "Gnomov rokovnik je jednostavan program za upravljanje zadacima koji je " "usklađen sa Gnomom." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Novi spisak…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Promeni putanju podrazumevanog skladišta…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "O progr_amu" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Izađi" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Očisti završeni zadatak…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Upravljaj ličnim zadacima" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Zadaci;Produktivnost;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Povećan prozor" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Stanje povećanog prozora" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Veličina prozora" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Veličina prozora (širina i visina)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Položaj prozora" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Položaj prozora (x i y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Prvo pokretanje Gnomovog rokovnika" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Da li je Gnomov rokovnik prvi put pokrenut ili ne (zarad pokretanja početnog " "podešavanja)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Podrazumevana putanja za smeštaj novih spiskova" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Identifikator podrazumevane putanje za smeštaj novih spiskova" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Pojedinosti" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Beleške" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Krajnji rok" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Važnost" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ništa" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Mala" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Srednja" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Velika" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Obriši" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Dobrodošli" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Prijavite se na vaše naloge na mreži zarad pristupa vašim zadacima" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Otkaži" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Gotovo" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Nema zadataka" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Možete dodati nove zadatke na spisak u pregledu Spiskovi" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Prikaži ili sakrij završene zadatke" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Izaberite podrazumevanu putanju za pravljenje spiskova sa zadacima:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Podrazumevana putanja skladišta" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Napravi" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Naziv spiska" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Izaberite mesto skladišta" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Isključeno" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Kliknite da dodate novi Gugl nalog" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Gugl" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Kliknite da dodate novi nalog mogOblaka (ownCloud)" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "mojOblak (ownCloud)" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Kliknite da dodate novi nalog Majkrosoftove razmene" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Majkrosoftova razmena" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Ili samo čuvajte vaše zadatke na ovom računaru" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Novi zadatak…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Spiskovi" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Danas" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Zakazano" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Preimenuj" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Novi spisak" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Naziv novog spiska sa zadacima" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Pravo na umnožavanje © %d tvorci Gnomovog rokovnika" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Pravo na umožavanje © %d–%d tvorci Gnomovog rokovnika" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Rokovnik" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Marko M. Kostić (Marko M. Kostić) " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Greška prilikom učitavanja CSS-a iz resursa" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Nije postavljen datum" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Greška prilikom učitavanja Gnomovih naloga na mreži" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Greška prilikom čuvanja spiska sa zadacima" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Greška prilikom uklanjanja spiska sa zadacima" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Greška prilikom pravljenja spiska sa zadacima" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Greška prilikom pravljenja zadatka" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Greška prilikom uklanjanja zadatka" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Greška prilikom ažuriranja zadatka" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Nisam uspeo da upitam za pristupne parametre" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Nisam uspeo da upitam za pristupne parametre za" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Neuspeh prilikom prijavljivanja" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Greška prilikom dobavljanja zadataka iz spiska" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Izvor spiska sa zadacima uspešno povezan" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Greška prilikom povezivanja na izvor spiska sa zadacima" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Preskačem već učitan spisak sa zadacima" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Greška prilikom učitavanja upravnika zadataka" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Nema zadataka" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Zadatak %s uklonjen" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Opozovi" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Sutra" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Juče" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Ukloniti izabrane spiskove sa zadacima?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Nakon uklanjanja, spisak sa zadacima ne može da se povrati." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Ukloni spiskove sa zadacima" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Postavljam novu boju spiska sa zadacima" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Učitavam vaše spiskove sa zadacima…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Kliknite na spisak sa zadacima da biste ga izabrali" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Greška prilikom pravljenja novog spiska sa zadacima" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Na ovom računaru" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokalno" gnome-todo-3.18.1/po/sv.po000066400000000000000000000346061260744630400153010ustar00rootroot00000000000000# Swedish translation for gnome-todo. # Copyright © 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Marcus Gisslen , 2015. # Anders Jonsson , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-09 20:38+0000\n" "PO-Revision-Date: 2015-09-16 22:43+0200\n" "Last-Translator: Anders Jonsson \n" "Language-Team: Swedish \n" "Language: sv\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Uppgifter" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Uppgiftshanterare för GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "GNOME Todo is a simple task management application designed to integrate with GNOME." msgstr "GNOME Uppgifter är en enkel ”att göra”-lista som är designad att integrera med GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Ny lista…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Ändra standardlagringsplats…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Om" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Avsluta" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Rensa utförd uppgift…" # Ändrat ordval eftersom "personliga uppgifter" låter integritetsrelaterat på svenska. #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Hantera dina uppgifter som ska göras" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Uppgift;Produktivitet;Effektivitet" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Fönster maximerat" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Fönster maximerat läge" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Fönsterstorlek" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Fönsterstorlek (bredd och höjd)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Fönsterposition" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Fönsterposition (x och y)" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Första körningen av GNOME Uppgifter" # initierande utformningen... Kanske 'grundinställningarna' låter bättre... #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "Huruvida det är den första körningen av GNOME Uppgifter (för att göra den initierande utformningen) eller inte" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Standardplats att lägga till nya listor till" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Identifieraren för standardplatsen att lägga till nya listor till" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Detaljer" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Anteckningar" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Slutdatum" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Prioritet" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Ingen" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Låg" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Mellan" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Hög" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Ta bort" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Välkommen" # Nätkonto (direkt från Empathy) #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Logga in på nätkonton för att komma åt dina uppgifter" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Ångra" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Färdig" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Inga uppgifter funna" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Du kan lägga till uppgifter till listor i vyn Listor" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Visa eller dölj utförda uppgifter" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Välj standardlagringsplats för att skapa uppgiftslistor:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Standardlagringsplats" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Skapa" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Listnamn" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Välj en lagringsplats" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Av" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Klicka för att lägga till ett nytt Google-konto" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Klicka för att lägga till ett nytt ownCloud-konto" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Klicka för att lägga till ett nytt Microsoft Exchange-konto" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Eller spara dina uppgifter på den här datorn" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Ny uppgift…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listor" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Today" msgstr "Idag" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Schemalagd" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Byt namn" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Ny lista" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Namn på uppgiftslistan" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Copyright © %d Uppgifter-upphovsmännen" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Copyright © %d–%d Uppgifter-upphovsmännen" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "Uppgifter" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "" "Marcus Gisslén \n" "Anders Jonsson \n" "\n" "Skicka synpunkter på översättningen till\n" "." #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Fel vid inläsning av CSS från resurs" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Inget datum angivet" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Fel vid inläsning av GNOME Nätkonton" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Fel vid sparning av uppgiftslista" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Fel vid borttagning av uppgiftslista" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Fel vid skapandet av uppgiftslista" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Fel vid skapandet av uppgift" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Fel vid borttagning av uppgift" # uppdatering/korrigering #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Fel vid uppdatering av uppgift" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Misslyckades med att fråga efter användaruppgifter" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Misslyckades med att fråga efter användaruppgifter för" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Kunde ej autentiseras" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Fel vid hämtning av uppgifter från lista" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Källa för uppgiftslistor ansluten" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Kunde ej ansluta till källa för uppgiftslistor" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Hoppar över redan inläst uppgiftslista " #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Fel vid läsning av uppgiftshanterare" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Inga uppgifter" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Uppgiften %s togs bort" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Ångra" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Imorgon" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Igår" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Ta bort de markerade uppgiftslistorna?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Då de väl tagits bort kan uppgiftslistorna inte återfås." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Ta bort uppgiftslistor" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Väljer ny färg för uppgiftslistan" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Läser in dina uppgiftslistor…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Klicka på en uppgiftslista för att markera" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Fel vid skapandet av en ny uppgiftslista" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "På den här datorn" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Lokal" #~ msgid "Task being edited" #~ msgstr "Uppgiften redigeras" #~ msgid "The task that is actually being edited" #~ msgstr "Uppgiften som just nu blir redigerad" #~ msgid "Whether the task is completed or not" #~ msgstr "Huruvida uppgiften är utförd eller inte" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "Huruvida uppgiften är markerad som utförd av användaren" #, fuzzy #~ msgid "Component of the task" #~ msgstr "Namnet på uppgiften" #~ msgid "Description of the task" #~ msgstr "Beskrivning av uppgiften" #~ msgid "Optional string describing the task" #~ msgstr "Valbar sträng som beskriver uppgiften" #~ msgid "End date of the task" #~ msgstr "Slutdatum för uppgiften" #~ msgid "The day the task is supposed to be completed" #~ msgstr "Dagen då uppgiften är tänkt att vara utförd" #~ msgid "List of the task" #~ msgstr "Uppgiftslista" #~ msgid "The list that owns this task" #~ msgstr "Listan som uppgiften tillhör" #~ msgid "Priority of the task" #~ msgstr "Prioritet" #~ msgid "The priority of the task. 0 means no priority set, and tasks will be sorted alphabetically." #~ msgstr "Uppgiftens prioritet. 0 betyder att ingen prioritet är satt och uppgifterna kommer sorteras i alfabetisk ordning." #~ msgid "Title of the task" #~ msgstr "Titel på uppgiften" #~ msgid "The title of the task" #~ msgstr "Namnet på uppgiften" #~ msgid "Color of the list" #~ msgstr "Färg på listan" #~ msgid "The color of the list" #~ msgstr "Färgen på listan" #~ msgid "The name of the list" #~ msgstr "Namnet på listan" #, fuzzy #~ msgid "The parent source that handles the list" #~ msgstr "Göromålskällan ansluten" #, fuzzy #~ msgid "Manager of this window's application" #~ msgstr "Fönster maximerat" #, fuzzy #~ msgid "The manager of the window's application" #~ msgstr "Fönster maximerat" #~ msgid "Whether the list is readonly" #~ msgstr "Huruvida listan endast läsbar" #~ msgid "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "Huruvida listan endast är läsbar, d.v.s. ska visa Ny Uppgift, eller inte" #~ msgid "Whether task rows show the list name" #~ msgstr "Huruvida uppgiftsrader ska visa listnamn" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "Huruvida uppgiftsrader ska visa listnamn vid slutet av raden" #~ msgid "Whether completed tasks are shown" #~ msgstr "Huruvida utförda uppgifter visas" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "Huruvida utförda uppgifter visas eller inte" #~ msgid "If the row is used to add a new task" #~ msgstr "Om raden används för att lägga till en ny uppgift" #~ msgid "Whether the row is used to add a new task" #~ msgstr "Huruvida raden används för att lägga till en ny uppgift" #~ msgid "Task of the row" #~ msgstr "Radens uppgift" #~ msgid "The task that this row represents" #~ msgstr "Uppgiften denna rad representerar" #, fuzzy #~ msgid "Identifier of the storage" #~ msgstr "Välj målmapp" #, fuzzy #~ msgid "Provider type of the storage" #~ msgstr "Skriv meddelande" #~ msgid "Notification message" #~ msgstr "Aviseringsmeddelande" #, fuzzy #~ msgid "Notification timeout" #~ msgstr "Aviseringsmeddelande" #~ msgid "The time the notification is displayed" #~ msgstr "Tiden som aviseringen visas" gnome-todo-3.18.1/po/tr.po000066400000000000000000000256561260744630400153030ustar00rootroot00000000000000# Turkish translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # Gökhan Gurbetoğlu , 2015. # Muhammet Kara , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-12 08:40+0000\n" "PO-Revision-Date: 2015-09-06 03:48+0000\n" "Last-Translator: Muhammet Kara \n" "Language-Team: Turkish \n" "Language: tr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Todo" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "GNOME için yapılacaklar listesi yöneticisi" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "GNOME Todo, GNOME ile bütünleşecek şekilde tasarlanmış basit bir görev yönetimi uygulamasıdır." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Yeni liste…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Öntanımlı depolama konumunu değiştir…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Hakkında" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Çıkış" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Tamamlanan görevi temizle…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Kişisel görevlerinizi yönetin" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Görev;Verimlilik;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Pemcere ekranı kapladı" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Pencere ekranı kaplamış durumda" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Pencere boyutu" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Pencere boyutu (genişlik ve yükseklik)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Pencere konumu" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Pencere konumu (x ve y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "GNOME To Do'nun ilk çalıştırılışı" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "GNOME To Do'nun (ilk kurulumun yapılması için) ilk kez çalıştırılıp çalıştırılmadığı" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Yeni listelerin ekleneceği öntanımlı konum" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Yeni listelerin ekleneceği öntanımlı konumu gösteren belirteç" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Ayrıntılar" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Notlar" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Bitiş Tarihi" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Öncelik" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Hiç" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Düşük" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Orta" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Yüksek" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Sil" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Hoş Geldiniz" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "Görevlerinize erişmek için çevrimiçi hesaplarda oturum açın" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "İptal" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Tamamlandı" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Hiçbir görev bulunamadı" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "Listeler görünümünden listelere görev ekleyebilirsiniz" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Tamamlanmış görevleri göster ya da gizle" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Yeni görev listelerinin oluşturulacağı öntanımlı depolama konumunu seçin:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Öntanımlı depolama konumu" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Oluştur" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Liste Adı" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Bir depolama konumu seçin" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Kapalı" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Yeni bir Google hesabı eklemek için tıklayın" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Yeni bir ownCloud hesabı eklemek için tıklayın" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Yeni bir Microsoft Exchange hesabı eklemek için tıklayın" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Ya da sadece görevlerinizi bu bilgisayarda depolayabilirsiniz" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Yeni görev…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Listeler" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Bugün" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Zamanlanmış" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Yeniden adlandır" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Yeni Liste" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Görev listesinin adı" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Telif Hakları © %d To Do Yazarları" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Telif Hakları © %d–%d To Do Yazarları" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Gökhan Gurbetoğlu \nMuhammet Kara " #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "CSS'yi kaynaktan yüklerken hata" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Bir tarih ayarlanmadı" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "GNOME Çevrimiçi Hesaplar'ı yüklerken hata" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Görev listesini kaydederken hata" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Görev listesini kaldırırken hata" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Görev listesi oluşturulurken hata" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Görev oluştururken hata" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Görev kaldırırken hata" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Görev güncellerken hata" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Kimlik bilgilerini isteme başarısız" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Şunun için kimlik bilgilerini isteme başarısız:" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Kimlik denetimi başarısız" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Listeden görevleri getirirken hata" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Görev listesi kaynağı başarıyla bağlandı" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Görev listesi kaynağına bağlanma başarısız oldu" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Zaten yüklenmiş görev listesi atlanıyor" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Görev yöneticisi yüklenirken hata" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Görev yok" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "%s görevi kaldırıldı" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Geri Al" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Yarın" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Dün" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Seçili görev listeleri kaldırılsın mı?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Görev listeleri bir kez kaldırıldığında tekrar geri getirilemez." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Görev listelerini kaldır" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Görev listesi için yeni renk ayarlanıyor" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Görev listeleriniz yükleniyor…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Seçmek için bir görev listesine tıklayın" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Yeni görev listesi oluşturulurken hata" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Bu Bilgisayarda" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Yerel" gnome-todo-3.18.1/po/vi.po000066400000000000000000000267501260744630400152700ustar00rootroot00000000000000# Vietnamese translations for gnome-todo package # Bản dịch Tiếng Việt dành cho gói gnome-todo. # This file is distributed under the same license as the gnome-todo package. # Trần Ngọc Quân , 2015. # msgid "" msgstr "" "Project-Id-Version: gnome-todo GNOME-3.18\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-23 21:03+0000\n" "PO-Revision-Date: 2015-09-24 14:20+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" "Language: vi\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Generator: Gtranslator 2.91.7\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "Cần làm" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "Ứng dụng quản lý các công việc cần làm cho môi trường GNOME" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "" "GNOME Todo là ứng dụng quản lý công việc đơn giản được thiết kế để hợp nhất " "với GNOME." #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "Danh sách mới…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "Đổi vị trí lưu trữ mặc định…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "_Giới thiệu" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "_Thoát" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "Xóa công việc đã hoàn tất…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "Quản lý các công việc cá nhân của bạn" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;Công việc;công tác;tác vụ;Productivity;năng suất;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "Cửa sổ phóng to" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "Cửa sổ ở trạng thái phóng to hết cỡ" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "Kích cỡ cửa sổ" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "Kích thước cửa sổ (rộng và cao)." #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "Vị trí cửa sổ" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "Vị trí cửa sổ (x và y)." #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "Lần đầu chạy GNOME To Do" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "" "Hoặc đây là lần đầu chạy GNOME To Do (để chạy cài đặt lần đầu) hoặc không" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "Vị trí mặc định để thêm các danh sách mới vào" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "Định danh của vị trí mặc định để thêm các danh sách mới vào" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "Chi tiết" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "Ghi chú" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "Ngày tới hạn" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "Độ ưu tiên" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "Không" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "Thấp" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "Trung bình" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "Cao" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "Xóa" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "Chào mừng" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "" "Đăng nhập vào các tài khoản trực tuyến để truy cập các công tác của bạn" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "Thôi" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "Xong" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "Không tìm thấy công việc nào" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "" "Bạn có thể thêm các công việc vào danh sách trong phần trình bày Danh " "sách" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "Hiện hay ẩn các công việc đã hoàn thành" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "Chọn vị trí lưu mặc định để tạo danh sách công việc:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "Vị trí lưu mặc định" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "Tạo" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "Tên danh sách" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "Chọn vị trí lưu trữ" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "Tắt" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "Bấm vào để thêm tài khoản Google mới" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "Bấm vào để thêm tài khoản ownCloud mới" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "Bấm vào để thêm tài khoản Microsoft Exchange mới" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "Hoặc là bạn chỉ lưu các công việc trên máy tính này" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "Công việc mới…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "Danh sách" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "Hôm nay" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "Lịch trình" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "Đổi tên" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "Danh sách mới" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "Tên của danh sách công việc" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "Tác quyền © %d Các tác giả To Do" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "Tác quyền © %d–%d Các tác giả To Do" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "To Do" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Nhóm Việt hóa GNOME" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "Có lỗi khi đang tải CSS từ nguồn" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "Chưa đặt ngày" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "Có lỗi khi tải GNOME Online Accounts" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "Có lỗi khi ghi danh sách công việc" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "Có lỗi khi gỡ bỏ danh sách công việc" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "Có lỗi khi tạo danh sách công việc" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "Có lỗi khi tạo công việc" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "Có lỗi khi xóa bỏ công việc" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "Có lỗi khi cập nhật công việc" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "Gặp lỗi khi hỏi đáp cho chứng thư" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "Gặp lỗi khi hỏi đáp cho chứng thư cho" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "Việc xác thực gặp lỗi nghiêm trọng" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "Gặp lỗi khi lấy các công việc từ danh sách" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "Việc kết nối nguồn danh sách công việc đã thành công" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "Gặp lỗi khi kết nối đến nguồn danh sách công việc" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "Bỏ qua danh sách công việc đã được tải" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "Có lỗi xảy ra khi đang tải bộ quản lý công việc" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "Không có công việc nào" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "Công việc %s đã bị xóa bỏ" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "Hoàn lại" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "Ngày mai" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "Hôm qua" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "Xóa bỏ các danh sách công việc đã chọn?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "Một khi đã xóa, danh sách công việc sẽ không thể phục hồi được." #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "Xóa bỏ danh sách công việc" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "Cài đặt màu mới cho danh sách công việc" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "Đang tải các danh sách công việc…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "Bấm vào danh sách công việc để chọn" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "Có lỗi xảy ra khi đang tạo danh sách công việc" #. Create task list #: ../src/storage/gtd-storage-local.c:86 ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "Trên máy này" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "Nội bộ" gnome-todo-3.18.1/po/zh_TW.po000066400000000000000000000464241260744630400157050ustar00rootroot00000000000000# Chinese (Taiwan) translation for gnome-todo. # Copyright (C) 2015 gnome-todo's COPYRIGHT HOLDER # This file is distributed under the same license as the gnome-todo package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: gnome-todo master\n" "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=gnome-" "todo&keywords=I18N+L10N&component=general\n" "POT-Creation-Date: 2015-09-02 12:40+0000\n" "PO-Revision-Date: 2015-09-19 23:48+0800\n" "Last-Translator: Cheng-Chia Tseng \n" "Language-Team: Chinese (Taiwan) \n" "Language: zh_TW\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 1.8.4\n" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:1 #: ../data/org.gnome.Todo.desktop.in.in.h:1 msgid "Todo" msgstr "待辦事項" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:2 msgid "Todo manager for GNOME" msgstr "GNOME 待辦事項管理員" #: ../data/appdata/org.gnome.Todo.appdata.xml.in.h:3 msgid "" "GNOME Todo is a simple task management application designed to integrate " "with GNOME." msgstr "GNOME《待辦事項》是一個整合 GNOME 的簡單工作管理應用程式。" #: ../data/gtk/menus.ui.h:1 msgid "New List…" msgstr "新增列表…" #: ../data/gtk/menus.ui.h:2 msgid "Change default storage location…" msgstr "改變預設儲存區位置…" #: ../data/gtk/menus.ui.h:3 msgid "_About" msgstr "關於(_A)" #: ../data/gtk/menus.ui.h:4 msgid "_Quit" msgstr "結束(_Q)" #: ../data/gtk/menus.ui.h:5 msgid "Clear completed task…" msgstr "清除已完成的工作…" #: ../data/org.gnome.Todo.desktop.in.in.h:2 msgid "Manage your personal tasks" msgstr "管理您的個人工作" #: ../data/org.gnome.Todo.desktop.in.in.h:3 msgid "Task;Productivity;" msgstr "Task;Productivity;工作;生產力;事項;" #: ../data/org.gnome.todo.gschema.xml.h:1 msgid "Window maximized" msgstr "視窗已最大化" #: ../data/org.gnome.todo.gschema.xml.h:2 msgid "Window maximized state" msgstr "視窗最大化狀態" #: ../data/org.gnome.todo.gschema.xml.h:3 msgid "Window size" msgstr "視窗尺寸" #: ../data/org.gnome.todo.gschema.xml.h:4 msgid "Window size (width and height)." msgstr "視窗大小 (寬度與高度)。" #: ../data/org.gnome.todo.gschema.xml.h:5 msgid "Window position" msgstr "視窗位置" #: ../data/org.gnome.todo.gschema.xml.h:6 msgid "Window position (x and y)." msgstr "視窗位置 (x 與 y)。" #: ../data/org.gnome.todo.gschema.xml.h:7 msgid "First run of GNOME To Do" msgstr "初次執行 GNOME 待辦事項" #: ../data/org.gnome.todo.gschema.xml.h:8 msgid "" "Whether it's the first run of GNOME To Do (to run the initial setup) or not" msgstr "這是不是第一次執行 GNOME 待辦事項 (執行初始化設定)" #: ../data/org.gnome.todo.gschema.xml.h:9 msgid "Default location to add new lists to" msgstr "要加入新列表的預設位置" #: ../data/org.gnome.todo.gschema.xml.h:10 msgid "The identifier of the default location to add new lists to" msgstr "要加入新列表的預設位置識別符" #: ../data/ui/edit-pane.ui.h:1 ../src/gtd-window.c:813 msgid "Details" msgstr "詳細資料" #: ../data/ui/edit-pane.ui.h:2 msgid "Notes" msgstr "備註" #: ../data/ui/edit-pane.ui.h:3 msgid "Due Date" msgstr "到期日" #: ../data/ui/edit-pane.ui.h:4 msgid "Priority" msgstr "優先等級" #: ../data/ui/edit-pane.ui.h:5 msgid "None" msgstr "無" #: ../data/ui/edit-pane.ui.h:6 msgid "Low" msgstr "低" #: ../data/ui/edit-pane.ui.h:7 msgid "Medium" msgstr "中" #: ../data/ui/edit-pane.ui.h:8 msgid "High" msgstr "高" #: ../data/ui/edit-pane.ui.h:9 ../data/ui/window.ui.h:5 msgid "Delete" msgstr "刪除" #: ../data/ui/initial-setup.ui.h:1 msgid "Welcome" msgstr "歡迎" #: ../data/ui/initial-setup.ui.h:2 msgid "Login to online accounts to access your tasks" msgstr "登入線上帳號以存取您的工作" #: ../data/ui/initial-setup.ui.h:3 ../data/ui/storage-popover.ui.h:2 #: ../data/ui/window.ui.h:7 ../src/gtd-window.c:314 msgid "Cancel" msgstr "取消" #: ../data/ui/initial-setup.ui.h:4 ../data/ui/list-view.ui.h:4 #: ../src/gtd-task-list-view.c:363 msgid "Done" msgstr "完成" #: ../data/ui/list-view.ui.h:1 msgid "No tasks found" msgstr "找不到工作" #: ../data/ui/list-view.ui.h:2 msgid "You can add tasks to lists in the Lists view" msgstr "您可以將工作加入到列表檢視中的列表" #: ../data/ui/list-view.ui.h:3 msgid "Show or hide completed tasks" msgstr "顯示或隱藏已完成的工作" #: ../data/ui/storage-dialog.ui.h:1 msgid "Select the default storage location to create task lists:" msgstr "選擇用來建立工作列表的預設儲存區位置:" #: ../data/ui/storage-dialog.ui.h:2 msgid "Default storage location" msgstr "預設儲存區位置" #: ../data/ui/storage-popover.ui.h:1 msgid "Create" msgstr "建立" #: ../data/ui/storage-popover.ui.h:3 msgid "List Name" msgstr "列表名稱" #: ../data/ui/storage-popover.ui.h:4 msgid "Select a storage location" msgstr "選擇一個儲存區位置" #: ../data/ui/storage-row.ui.h:1 msgid "Off" msgstr "關閉" #: ../data/ui/storage-selector.ui.h:1 msgid "Click to add a new Google account" msgstr "點選以加入新的 Google 帳號" #: ../data/ui/storage-selector.ui.h:2 msgid "Google" msgstr "Google" #: ../data/ui/storage-selector.ui.h:3 msgid "Click to add a new ownCloud account" msgstr "點選以加入新的 ownCloud 帳號" #: ../data/ui/storage-selector.ui.h:4 msgid "ownCloud" msgstr "ownCloud" #: ../data/ui/storage-selector.ui.h:5 msgid "Click to add a new Microsoft Exchange account" msgstr "點選以加入新的 Microsoft Exchange 帳號" #: ../data/ui/storage-selector.ui.h:6 msgid "Microsoft Exchange" msgstr "Microsoft Exchange" #: ../data/ui/storage-selector.ui.h:7 msgid "Or you can just store your tasks on this computer" msgstr "或者您可以只將工作儲存於這臺電腦" #: ../data/ui/task-row.ui.h:1 msgid "New task…" msgstr "新增工作…" #: ../data/ui/window.ui.h:1 msgid "Lists" msgstr "列表" #: ../data/ui/window.ui.h:2 ../src/gtd-task-row.c:140 ../src/gtd-window.c:517 #: ../src/gtd-window.c:522 msgid "Today" msgstr "今天" #: ../data/ui/window.ui.h:3 ../src/gtd-window.c:517 ../src/gtd-window.c:522 msgid "Scheduled" msgstr "已有行程" #: ../data/ui/window.ui.h:4 msgid "Rename" msgstr "重新命名" #: ../data/ui/window.ui.h:6 msgid "New List" msgstr "新增列表" #: ../data/ui/window.ui.h:8 msgid "Name of the task list" msgstr "工作列表名稱" #: ../src/gtd-application.c:91 #, c-format msgid "Copyright © %d The To Do authors" msgstr "版權所有 © %d To Do 開發團隊" #: ../src/gtd-application.c:96 #, c-format msgid "Copyright © %d–%d The To Do authors" msgstr "版權所有 © %d–%d To Do 開發團隊" #: ../src/gtd-application.c:101 ../src/gtd-application.c:127 #: ../src/gtd-window.c:694 ../src/gtd-window.c:1269 msgid "To Do" msgstr "待辦事項" #: ../src/gtd-application.c:108 msgid "translator-credits" msgstr "Chao-Hsiung Liao , 2015" #: ../src/gtd-application.c:215 msgid "Error loading CSS from resource" msgstr "從資源載入 CSS 時發生錯誤" #: ../src/gtd-edit-pane.c:151 ../src/gtd-task-row.c:170 msgid "No date set" msgstr "尚未設定日期" #: ../src/gtd-manager.c:386 ../src/gtd-manager.c:390 msgid "Error loading GNOME Online Accounts" msgstr "載入 GNOME Online Accounts 時發生錯誤" #: ../src/gtd-manager.c:418 ../src/gtd-manager.c:422 ../src/gtd-task-list.c:87 msgid "Error saving task list" msgstr "儲存工作列表時發生錯誤" #: ../src/gtd-manager.c:441 ../src/gtd-manager.c:445 msgid "Error removing task list" msgstr "移除工作列表時發生錯誤" #: ../src/gtd-manager.c:469 ../src/gtd-manager.c:473 msgid "Error creating task list" msgstr "建立工作列表時發生錯誤" #: ../src/gtd-manager.c:534 ../src/gtd-manager.c:538 msgid "Error creating task" msgstr "建立工作時發生錯誤" #: ../src/gtd-manager.c:601 ../src/gtd-manager.c:605 msgid "Error removing task" msgstr "移除工作時發生錯誤" #: ../src/gtd-manager.c:652 ../src/gtd-manager.c:656 msgid "Error updating task" msgstr "更新工作時發生錯誤" #: ../src/gtd-manager.c:689 msgid "Failed to prompt for credentials" msgstr "無法提示憑證" #: ../src/gtd-manager.c:712 msgid "Failed to prompt for credentials for" msgstr "無法提示憑證給" #: ../src/gtd-manager.c:764 msgid "Authentication failure" msgstr "核對失敗" #: ../src/gtd-manager.c:828 ../src/gtd-manager.c:832 msgid "Error fetching tasks from list" msgstr "從列表取得工作時發生錯誤" #: ../src/gtd-manager.c:898 msgid "Task list source successfully connected" msgstr "工作列表來源已成功連線" #: ../src/gtd-manager.c:905 ../src/gtd-manager.c:910 msgid "Failed to connect to task list source" msgstr "無法連線至工作列表來源" #: ../src/gtd-manager.c:939 msgid "Skipping already loaded task list " msgstr "略過已載入的工作列表" #: ../src/gtd-manager.c:977 msgid "Error loading task manager" msgstr "載入工作管理員時發生錯誤" #: ../src/gtd-task-list-item.c:233 msgid "No tasks" msgstr "沒有工作" #: ../src/gtd-task-list-view.c:263 #, c-format msgid "Task %s removed" msgstr "工作 %s 已被移除" #: ../src/gtd-task-list-view.c:294 msgid "Undo" msgstr "復原" #: ../src/gtd-task-row.c:144 msgid "Tomorrow" msgstr "明天" #: ../src/gtd-task-row.c:148 msgid "Yesterday" msgstr "昨天" #: ../src/gtd-window.c:307 msgid "Remove the selected task lists?" msgstr "是否移除選取的工作列表?" #: ../src/gtd-window.c:310 msgid "Once removed, the task lists cannot be recovered." msgstr "一旦移除,這些工作列表便無法再還原。" #: ../src/gtd-window.c:322 msgid "Remove task lists" msgstr "移除工作列表" #: ../src/gtd-window.c:578 msgid "Setting new color for task list" msgstr "設定工作列表的新顏色" #: ../src/gtd-window.c:1128 msgid "Loading your task lists…" msgstr "載入您的工作列表…" #: ../src/gtd-window.c:1256 msgid "Click a task list to select" msgstr "點選工作列表來選取" #: ../src/storage/gtd-storage-goa.c:77 ../src/storage/gtd-storage-local.c:69 msgid "Error creating new task list" msgstr "建立新工作列表時發生錯誤" #. Create task list #: ../src/storage/gtd-storage-local.c:86 #: ../src/storage/gtd-storage-local.c:134 msgid "On This Computer" msgstr "在這臺電腦" #: ../src/storage/gtd-storage-local.c:133 msgid "Local" msgstr "本地端" #~ msgid "Manager of this application" #~ msgstr "這個應用程式的管理員" #~ msgid "The manager of the application" #~ msgstr "這個應用程式的管理員" #~ msgid "Task being edited" #~ msgstr "工作已被編輯" #~ msgid "The task that is actually being edited" #~ msgstr "工作已確實被編輯" #~ msgid "Manager of the task" #~ msgstr "工作的管理員" #, fuzzy #~ msgid "The singleton manager instance of the task" #~ msgstr "裝置管理程式實體" #~ msgid "The online accounts client of the manager" #~ msgstr "管理員的線上帳號客戶端" #~ msgid "" #~ "The read-only GNOME online accounts client loaded and owned by the manager" #~ msgstr "載入唯讀的 GNOME 線上帳號客戶端,由管理員擁有" #~ msgid "Whether GNOME Online Accounts client is ready" #~ msgstr "GNOME Online Accounts 客戶端是否已準備完成" #~ msgid "Whether the read-only GNOME online accounts client is loaded" #~ msgstr "唯讀的 GNOME 線上帳號客戶端是否已載入" #~ msgid "The source registry of the manager" #~ msgstr "管理員的來源註冊表" #~ msgid "The read-only source registry loaded and owned by the manager" #~ msgstr "已載入唯讀的來源註冊表,由管理員擁有" #~ msgid "Unique identifier of the object" #~ msgstr "物件的唯一識別符" #~ msgid "The unique identifier of the object, defined by the backend" #~ msgstr "物件的唯一識別符,由後端定義" #~ msgid "Ready state of the object" #~ msgstr "物件的妥善狀態" #~ msgid "Whether the object is marked as ready or not" #~ msgstr "物件是否被標記為準備完成" #~ msgid "Whether the task is completed or not" #~ msgstr "這項工作是否被標記為已完成" #~ msgid "Whether the task is marked as completed by the user" #~ msgstr "這項工作是否由使用者標記為已完成" #~ msgid "Component of the task" #~ msgstr "這項工作的元件" #~ msgid "The #ECalComponent this task handles." #~ msgstr "這項工作處理的 #ECalComponent 。" #~ msgid "Description of the task" #~ msgstr "這項工作的描述" #~ msgid "Optional string describing the task" #~ msgstr "描述這項工作的額外字串" #~ msgid "End date of the task" #~ msgstr "這項工作的結束日期" #~ msgid "The day the task is supposed to be completed" #~ msgstr "這項工作的日期應為已完成" #~ msgid "List of the task" #~ msgstr "工作的列表" #~ msgid "The list that owns this task" #~ msgstr "擁有這項工作的列表" #~ msgid "Priority of the task" #~ msgstr "工作的優先等級" #~ msgid "" #~ "The priority of the task. 0 means no priority set, and tasks will be " #~ "sorted alphabetically." #~ msgstr "" #~ "這項工作的優先等級。0 表示沒有設定優先等級,而工作會以字母順序排列。" #~ msgid "Title of the task" #~ msgstr "工作標題" #~ msgid "The title of the task" #~ msgstr "這項工作的標題" #~ msgid "Color of the list" #~ msgstr "列表顏色" #~ msgid "The color of the list" #~ msgstr "列表的顏色" #~ msgid "Whether the task list is removable" #~ msgstr "工作列表是否可以移除" #~ msgid "Whether the task list can be removed from the system" #~ msgstr "工作列表是否可以從系統中移除" #~ msgid "Name of the list" #~ msgstr "列表名稱" #~ msgid "The name of the list" #~ msgstr "列表的名稱" #~ msgid "Data origin of the list" #~ msgstr "列表的資料來源" #~ msgid "The data origin location of the list" #~ msgstr "列表的資料來源位置" #~ msgid "Source of the list" #~ msgstr "列表來源" #~ msgid "The parent source that handles the list" #~ msgstr "處理此列表的母來源" #~ msgid "Mode of this item" #~ msgstr "這個項目的模式" #~ msgid "The mode of this item, inherited from the parent's mode" #~ msgstr "這個系統的模式,從母元件的模式繼承" #~ msgid "Whether the task list is selected" #~ msgstr "工作列表是否選取" #~ msgid "Whether the task list is selected when in selection mode" #~ msgstr "工作列表在選取模式下是否被選取" #~ msgid "Task list of the item" #~ msgstr "這個項目的工作列表" #~ msgid "The task list associated with this item" #~ msgstr "與此項目關聯的工作列表" #~ msgid "Manager of this window's application" #~ msgstr "這個視窗的應用程式管理員" #~ msgid "The manager of the window's application" #~ msgstr "這個視窗的應用程式管理員" #~ msgid "Whether the list is readonly" #~ msgstr "列表是否是唯讀" #~ msgid "" #~ "Whether the list is readonly, i.e. doesn't show the New Task row, or not" #~ msgstr "列表是否為唯讀,例如:不要顯示新增工作列位功能" #~ msgid "Whether task rows show the list name" #~ msgstr "工作列位是否顯示列表名稱" #~ msgid "Whether task rows show the list name at the end of the row" #~ msgstr "工作列位是否在列位結尾顯示列表名稱" #~ msgid "Whether completed tasks are shown" #~ msgstr "是否顯示已完成的工作" #~ msgid "Whether completed tasks are visible or not" #~ msgstr "已完成的工作是否為可視" #~ msgid "If the row is used to add a new task" #~ msgstr "該列位是否用來加入新工作" #~ msgid "Whether the row is used to add a new task" #~ msgstr "該列位是否用來加入新工作" #~ msgid "Task of the row" #~ msgstr "列位的工作" #~ msgid "The task that this row represents" #~ msgstr "這個列位代表的工作" #~ msgid "Mode of this window" #~ msgstr "這個視窗的模式" #~ msgid "The interaction mode of the window" #~ msgstr "視窗的互動模式" #~ msgid "Whether the storage is enabled" #~ msgstr "該儲存區是否啟用" #~ msgid "Whether the storage is available to be used." #~ msgstr "儲存區是否是可以使用。" #~ msgid "Icon of the storage" #~ msgstr "儲存區的圖示" #~ msgid "The icon representing the storage location." #~ msgstr "代表儲存區位置的圖示。" #~ msgid "Identifier of the storage" #~ msgstr "儲存區識別符" #~ msgid "The unique identifier of the storage location." #~ msgstr "儲存區位置的獨特識別符。" #~ msgid "Whether the storage is the default" #~ msgstr "該儲存區是否為預設" #~ msgid "Whether the storage is the default storage location to be used." #~ msgstr "儲存區是否是預設使用的儲存區位置。" #~ msgid "Name of the storage" #~ msgstr "儲存區的名稱" #~ msgid "The user-visible name of the storage location." #~ msgstr "使用者可見的儲存區位置名稱。" #, fuzzy #~ msgid "Name of the data provider of the storage" #~ msgstr "儲存區位置的資料提供者名稱" #, fuzzy #~| msgid "The name of the provider of the storage location." #~ msgid "The user-visible name of the data provider of the storage location." #~ msgstr "儲存區位置的提供者名稱、" #, fuzzy #~| msgid "Parent of the storage" #~ msgid "GoaObject of the storage" #~ msgstr "儲存區母元件" #, fuzzy #~| msgid "The provider type of the storage location." #~ msgid "The GoaObject this storage location represents." #~ msgstr "儲存區位置的提供者類型、" #~ msgid "Parent of the storage" #~ msgstr "儲存區母元件" #~ msgid "The parent source identifier of the storage location." #~ msgstr "儲存區位置的母來源識別符。" #~ msgid "Storage of the row" #~ msgstr "這個列位的儲存區" #~ msgid "The storage that this row holds" #~ msgstr "這個列位所保存的儲存區" #~ msgid "Show local storage row" #~ msgstr "顯示本地端儲存區列位" #~ msgid "Whether should show a local storage row instead of a checkbox" #~ msgstr "是否應顯示本地端儲存區列代替勾選盒" #, fuzzy #~ msgid "Show stub rows" #~ msgstr "存根" #~ msgid "Selects default storage row" #~ msgstr "選擇預設儲存區列位" #~ msgid "Whether should select the default storage row" #~ msgstr "是否應選擇預設儲存區列位" #~ msgid "Whether the notification has a primary action" #~ msgstr "通知是否有主要動作" #~ msgid "" #~ "Whether the notification has the primary action, activated on timeout or " #~ "dismiss" #~ msgstr "通知是否有主要動作,在逾時或解除時作用" #~ msgid "Whether the notification has a secondary action" #~ msgstr "通知是否有次要動作" #~ msgid "" #~ "Whether the notification has the secondary action, activated by the user" #~ msgstr "通知是否有次要動作,由使用者作用" #~ msgid "Text of the secondary action button" #~ msgstr "次要動作按鈕的文字" #~ msgid "The text of the secondary action button" #~ msgstr "次要動作按鈕的文字" #~ msgid "Notification message" #~ msgstr "通知訊息" #~ msgid "The main message of the notification" #~ msgstr "通知的主要訊息" #~ msgid "Notification timeout" #~ msgstr "通知逾時" #~ msgid "The time the notification is displayed" #~ msgstr "顯示通知的時間" #~ msgid "Provider type of the storage" #~ msgstr "儲存區的提供者類型" #~ msgid "Provider name of the storage" #~ msgstr "儲存區的提供者名稱" gnome-todo-3.18.1/src/000077500000000000000000000000001260744630400144515ustar00rootroot00000000000000gnome-todo-3.18.1/src/Makefile.am000066400000000000000000000055141260744630400165120ustar00rootroot00000000000000AM_CPPFLAGS = \ -DPACKAGE_LOCALE_DIR=\""$(localedir)"\" \ -DPACKAGE_SRC_DIR=\""$(srcdir)"\" \ -DPACKAGE_DATA_DIR=\""$(pkgdatadir)"\" \ -DUI_DATA_DIR=\""$(pkgdatadir)/style"\" \ -DGOA_API_IS_SUBJECT_TO_CHANGE \ -I$(srcdir)/storage \ -I$(srcdir)/notification bin_PROGRAMS = gnome-todo BUILT_SOURCES = \ gtd-resources.c \ gtd-resources.h \ gtd-enum-types.c \ gtd-enum-types.h ENUM_TYPES = \ gtd-enums.h gnome_todo_SOURCES = \ $(BUILT_SOURCES) \ notification/gtd-notification.c \ notification/gtd-notification.h \ notification/gtd-notification-widget.c \ notification/gtd-notification-widget.h \ storage/gtd-storage.c \ storage/gtd-storage.h \ storage/gtd-storage-dialog.c \ storage/gtd-storage-dialog.h \ storage/gtd-storage-goa.c \ storage/gtd-storage-goa.h \ storage/gtd-storage-local.c \ storage/gtd-storage-local.h \ storage/gtd-storage-popover.c \ storage/gtd-storage-popover.h \ storage/gtd-storage-row.c \ storage/gtd-storage-row.h \ storage/gtd-storage-selector.c \ storage/gtd-storage-selector.h \ gtd-application.c \ gtd-application.h \ gtd-arrow-frame.c \ gtd-arrow-frame.h \ gtd-edit-pane.c \ gtd-edit-pane.h \ gtd-enums.h \ gtd-initial-setup-window.c \ gtd-initial-setup-window.h \ gtd-manager.c \ gtd-manager.h \ gtd-object.c \ gtd-object.h \ gtd-task.c \ gtd-task.h \ gtd-task-list.c \ gtd-task-list.h \ gtd-task-list-item.c \ gtd-task-list-item.h \ gtd-task-list-view.c \ gtd-task-list-view.h \ gtd-task-row.c \ gtd-task-row.h \ gtd-types.h \ gtd-window.c \ gtd-window.h \ main.c gnome_todo_CFLAGS = \ $(GNOME_TODO_CFLAGS) \ $(GNOME_TODO_WARN_CFLAGS) gnome_todo_LDFLAGS = \ -Wl,--export-dynamic \ $(GNOME_TODO_WARN_LDFLAGS) gnome_todo_LDADD = \ $(GNOME_TODO_LIBS) # # Resources # resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(top_srcdir)/data --generate-dependencies $(top_srcdir)/data/todo.gresource.xml) gtd-resources.c: $(top_srcdir)/data/todo.gresource.xml $(resource_files) $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(top_srcdir)/data --generate-source --c-name todo $(top_srcdir)/data/todo.gresource.xml gtd-resources.h: $(top_srcdir)/data/todo.gresource.xml $(resource_files) $(AM_V_GEN)$(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(top_srcdir)/data --generate-header --c-name todo $(top_srcdir)/data/todo.gresource.xml # # Enums # gtd-enum-types.c: gtd-enum-types.c.template $(ENUM_TYPES) $(GLIB_MKENUMS) $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gtd-enum-types.c.template $(ENUM_TYPES)) > $@ gtd-enum-types.h: gtd-enum-types.h.template $(ENUM_TYPES) $(GLIB_MKENUMS) $(AM_V_GEN) (cd $(srcdir) && $(GLIB_MKENUMS) --template gtd-enum-types.h.template $(ENUM_TYPES)) > $@ CLEANFILES = \ $(BUILT_SOURCES) EXTRA_DIST = \ $(resource_files) \ gtd-enum-types.h.template \ gtd-enum-types.c.template -include $(top_srcdir)/git.mk gnome-todo-3.18.1/src/gtd-application.c000066400000000000000000000200631260744630400176750ustar00rootroot00000000000000/* gtd-application.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "gtd-application.h" #include "gtd-initial-setup-window.h" #include "gtd-manager.h" #include "gtd-window.h" #include #include #include #include typedef struct { GtkCssProvider *provider; GtdManager *manager; GtkWidget *window; GtkWidget *initial_setup; } GtdApplicationPrivate; struct _GtdApplication { GtkApplication application; /*< private >*/ GtdApplicationPrivate *priv; }; static void gtd_application_show_about (GSimpleAction *simple, GVariant *parameter, gpointer user_data); static void gtd_application_quit (GSimpleAction *simple, GVariant *parameter, gpointer user_data); G_DEFINE_TYPE_WITH_PRIVATE (GtdApplication, gtd_application, GTK_TYPE_APPLICATION) static const GActionEntry gtd_application_entries[] = { { "about", gtd_application_show_about }, { "quit", gtd_application_quit } }; static void gtd_application_show_about (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GtdApplicationPrivate *priv = GTD_APPLICATION (user_data)->priv; char *copyright; GDateTime *date; int created_year = 2015; static const gchar *authors[] = { "Georges Basile Stavracas Neto ", "Emmanuele Bassi ", NULL }; static const gchar *artists[] = { "Allan Day ", "Jakub Steiner ", NULL }; date = g_date_time_new_now_local (); if (g_date_time_get_year (date) == created_year) { copyright = g_strdup_printf (_("Copyright \xC2\xA9 %d " "The To Do authors"), created_year); } else { copyright = g_strdup_printf (_("Copyright \xC2\xA9 %d\xE2\x80\x93%d " "The To Do authors"), created_year, g_date_time_get_year (date)); } gtk_show_about_dialog (GTK_WINDOW (priv->window), "program-name", _("To Do"), "version", VERSION, "copyright", copyright, "license-type", GTK_LICENSE_GPL_3_0, "authors", authors, "artists", artists, "logo-icon-name", "gnome-todo", "translator-credits", _("translator-credits"), NULL); g_free (copyright); g_date_time_unref (date); } static void gtd_application_quit (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GtdApplicationPrivate *priv = GTD_APPLICATION (user_data)->priv; gtk_widget_destroy (priv->window); } GtdApplication * gtd_application_new (void) { g_set_application_name (_("To Do")); return g_object_new (GTD_TYPE_APPLICATION, "application-id", "org.gnome.Todo", "flags", G_APPLICATION_FLAGS_NONE, NULL); } static void run_window (GtdApplication *application) { GtdApplicationPrivate *priv; g_return_if_fail (GTD_IS_APPLICATION (application)); priv = application->priv; if (!priv->window) priv->window = gtd_window_new (GTD_APPLICATION (application)); gtk_widget_show (priv->window); } /* static void finish_initial_setup (GtdApplication *application) { g_return_if_fail (GTD_IS_APPLICATION (application)); run_window (application); gtd_manager_set_is_first_run (application->priv->manager, FALSE); g_clear_pointer (&application->priv->initial_setup, gtk_widget_destroy); } static void run_initial_setup (GtdApplication *application) { GtdApplicationPrivate *priv; g_return_if_fail (GTD_IS_APPLICATION (application)); priv = application->priv; if (!priv->initial_setup) { priv->initial_setup = gtd_initial_setup_window_new (application); g_signal_connect (priv->initial_setup, "cancel", G_CALLBACK (gtk_widget_destroy), application); g_signal_connect_swapped (priv->initial_setup, "done", G_CALLBACK (finish_initial_setup), application); } gtk_widget_show (priv->initial_setup); } */ static void gtd_application_activate (GApplication *application) { GtdApplicationPrivate *priv = GTD_APPLICATION (application)->priv; if (!priv->provider) { GError *error = NULL; GFile* css_file; priv->provider = gtk_css_provider_new (); gtk_style_context_add_provider_for_screen (gdk_screen_get_default (), GTK_STYLE_PROVIDER (priv->provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + 1); css_file = g_file_new_for_uri ("resource:///org/gnome/todo/theme/Adwaita.css"); gtk_css_provider_load_from_file (priv->provider, css_file, &error); if (error != NULL) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error loading CSS from resource"), error->message); g_error_free (error); } else { g_object_unref (css_file); } } /* FIXME: the initial setup is disabled for the 3.18 release because * we can't create tasklists on GOA accounts. */ run_window (GTD_APPLICATION (application)); } static void gtd_application_finalize (GObject *object) { G_OBJECT_CLASS (gtd_application_parent_class)->finalize (object); } static void gtd_application_startup (GApplication *application) { GtdApplicationPrivate *priv = GTD_APPLICATION (application)->priv; /* manager */ priv->manager = gtd_manager_new (); /* app menu */ g_application_set_resource_base_path (application, "/org/gnome/todo"); /* add actions */ g_action_map_add_action_entries (G_ACTION_MAP (application), gtd_application_entries, G_N_ELEMENTS (gtd_application_entries), application); G_APPLICATION_CLASS (gtd_application_parent_class)->startup (application); } static void gtd_application_class_init (GtdApplicationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GApplicationClass *application_class = G_APPLICATION_CLASS (klass); object_class->finalize = gtd_application_finalize; application_class->activate = gtd_application_activate; application_class->startup = gtd_application_startup; } static void gtd_application_init (GtdApplication *self) { GtdApplicationPrivate *priv = gtd_application_get_instance_private (self); self->priv = priv; } GtdManager* gtd_application_get_manager (GtdApplication *app) { g_return_val_if_fail (GTD_IS_APPLICATION (app), NULL); return app->priv->manager; } gnome-todo-3.18.1/src/gtd-application.h000066400000000000000000000023541260744630400177050ustar00rootroot00000000000000/* gtd-application.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_APPLICATION_H #define GTD_APPLICATION_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_APPLICATION (gtd_application_get_type()) G_DECLARE_FINAL_TYPE (GtdApplication, gtd_application, GTD, APPLICATION, GtkApplication) GtdApplication* gtd_application_new (void); GtdManager* gtd_application_get_manager (GtdApplication *application); G_END_DECLS #endif /* GTD_APPLICATION_H */ gnome-todo-3.18.1/src/gtd-arrow-frame.c000066400000000000000000000414261260744630400176220ustar00rootroot00000000000000/* gtd-arrow-frame.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-arrow-frame.h" #include "gtd-task-row.h" typedef struct { GtdTaskRow *row; GtkGesture *pan_gesture; GdkWindow *handle_window; gdouble offset; gint moving : 1; } GtdArrowFramePrivate; struct _GtdArrowFrame { GtkFrame parent; /**/ GtdArrowFramePrivate *priv; }; #define ARROW_HEIGHT 28 #define ARROW_WIDTH 8 #define HANDLE_GAP (ARROW_WIDTH + 5) G_DEFINE_TYPE_WITH_PRIVATE (GtdArrowFrame, gtd_arrow_frame, GTK_TYPE_FRAME) enum { PROP_0, PROP_TASK_ROW, LAST_PROP }; GtkWidget* gtd_arrow_frame_new (void) { return g_object_new (GTD_TYPE_ARROW_FRAME, NULL); } static void on_drag_begin_cb (GtdArrowFrame *frame, gdouble x, gdouble y, GtkGesturePan *gesture) { GtdArrowFramePrivate *priv = frame->priv; GdkEventSequence *sequence; const GdkEvent *event; sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); priv->moving = FALSE; if (event->any.window == priv->handle_window) gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); else gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_DENIED); } static void on_pan_cb (GtkWidget *widget, GtkPanDirection direction, gdouble offset, GtkGesturePan *pan) { GtdArrowFramePrivate *priv; GtkTextDirection dir; gdouble offset_x; priv = GTD_ARROW_FRAME (widget)->priv; dir = gtk_widget_get_direction (widget); priv->moving = TRUE; gtk_gesture_drag_get_offset (GTK_GESTURE_DRAG (pan), &offset_x, NULL); if (dir == GTK_TEXT_DIR_RTL) priv->offset = MAX (0, offset_x); else priv->offset = MAX (0, priv->offset + -1 * offset_x); gtk_widget_queue_resize (widget); } static void on_drag_end_cb (GtdArrowFrame *frame, gdouble x, gdouble y, GtkGesturePan *pan) { GtdArrowFramePrivate *priv = frame->priv; if (!priv->moving) gtk_gesture_set_state (GTK_GESTURE (pan), GTK_EVENT_SEQUENCE_DENIED); } static void gtd_arrow_frame_finalize (GObject *object) { GtdArrowFrame *self = (GtdArrowFrame *)object; GtdArrowFramePrivate *priv = gtd_arrow_frame_get_instance_private (self); g_clear_object (&priv->pan_gesture); G_OBJECT_CLASS (gtd_arrow_frame_parent_class)->finalize (object); } static void gtd_arrow_frame_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdArrowFrame *self = GTD_ARROW_FRAME (object); switch (prop_id) { case PROP_TASK_ROW: g_value_set_object (value, self->priv->row); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_arrow_frame_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdArrowFrame *self = GTD_ARROW_FRAME (object); switch (prop_id) { case PROP_TASK_ROW: gtd_arrow_frame_set_row (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_arrow_frame__row_destroyed (GtdArrowFrame *frame) { gtd_arrow_frame_set_row (frame, NULL); } static gint gtd_arrow_frame__get_row_y (GtdArrowFrame *frame) { GtkWidget *widget; GtkWidget *row; gint row_height; gint dest_y; widget = GTK_WIDGET (frame); if (!frame->priv->row) return gtk_widget_get_allocated_height (widget) / 2; row = GTK_WIDGET (frame->priv->row); row_height = gtk_widget_get_allocated_height (row); gtk_widget_translate_coordinates (row, widget, 0, row_height / 2, NULL, &dest_y); return CLAMP (dest_y, 0, gtk_widget_get_allocated_height (widget)); } static void gtd_arrow_frame__draw_arrow (GtdArrowFrame *frame, cairo_t *cr, GtkTextDirection dir) { GtkWidget *widget = GTK_WIDGET (frame); GtkStyleContext *context; GtkAllocation alloc; GtkStateFlags state; GtkBorder border; GdkRGBA border_color; gint border_width; gint start_x; gint start_y; gint tip_x; gint tip_y; gint end_x; gint end_y; context = gtk_widget_get_style_context (widget); state = gtk_widget_get_state_flags (widget); gtk_style_context_get_border (context, state, &border); gtk_style_context_get (context, state, GTK_STYLE_PROPERTY_BORDER_COLOR, &border_color, NULL); /* widget size */ gtk_widget_get_allocation (widget, &alloc); if (dir == GTK_TEXT_DIR_LTR) { start_x = ARROW_WIDTH + border.left; tip_x = 0; end_x = ARROW_WIDTH + border.left; border_width = border.left; } else { start_x = alloc.width - ARROW_WIDTH - border.right; tip_x = alloc.width; end_x = alloc.width - ARROW_WIDTH - border.right; border_width = border.right; } tip_y = gtd_arrow_frame__get_row_y (frame); start_y = tip_y - (ARROW_HEIGHT / 2); end_y = tip_y + (ARROW_HEIGHT / 2); /* draw arrow */ cairo_save (cr); cairo_set_line_width (cr, 1.0); cairo_move_to (cr, start_x, start_y); cairo_line_to (cr, tip_x, tip_y); cairo_line_to (cr, end_x, end_y); /* * Don't allow that gtk_render_background renders * anything out of (tip_x, start_y) (end_x, end_y). */ cairo_clip (cr); /* render the arrow background */ gtk_render_background (context, cr, 0, 0, alloc.width, alloc.height); /* draw the border */ if (border_width > 0) { G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_style_context_get_border_color (context, state, &border_color); G_GNUC_END_IGNORE_DEPRECATIONS gdk_cairo_set_source_rgba (cr, &border_color); cairo_set_line_width (cr, 1); cairo_move_to (cr, start_x, start_y); cairo_line_to (cr, tip_x, tip_y); cairo_line_to (cr, end_x, end_y); cairo_set_line_width (cr, border_width + 1); cairo_stroke (cr); } cairo_restore (cr); } static GtkGesture* gtd_arrow_frame__create_pan_gesture (GtdArrowFrame *frame) { GtkGesture *gesture; gesture = gtk_gesture_pan_new (GTK_WIDGET (frame), GTK_ORIENTATION_HORIZONTAL); gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (gesture), FALSE); gtk_event_controller_set_propagation_phase (GTK_EVENT_CONTROLLER (gesture), GTK_PHASE_CAPTURE); g_signal_connect_swapped (gesture, "drag-begin", G_CALLBACK (on_drag_begin_cb), frame); g_signal_connect_swapped (gesture, "pan", G_CALLBACK (on_pan_cb), frame); g_signal_connect_swapped (gesture, "drag-end", G_CALLBACK (on_drag_end_cb), frame); return gesture; } static void gtd_arrow_frame__draw_background (GtdArrowFrame *frame, cairo_t *cr, GtkTextDirection dir) { GtkWidget *widget = GTK_WIDGET (frame); GtkStyleContext *context; GtkAllocation alloc; GtkStateFlags state; GtkBorder margin; gint start_x; gint start_y; gint start_gap; gint end_x; gint end_y; gint end_gap; context = gtk_widget_get_style_context (widget); state = gtk_widget_get_state_flags (widget); /* widget size */ gtk_widget_get_allocation (widget, &alloc); /* margin */ gtk_style_context_get_margin (context, state, &margin); if (dir == GTK_TEXT_DIR_LTR) { start_x = ARROW_WIDTH + margin.left; end_x = alloc.width - margin.right; } else { start_x = margin.left; end_x = alloc.width - margin.right - ARROW_WIDTH; } start_y = margin.top; end_y = alloc.height - margin.bottom; start_gap = ((end_y - start_y - ARROW_HEIGHT) / 2); end_gap = ((end_y - start_y + ARROW_HEIGHT) / 2); gtk_render_background (context, cr, start_x, start_y, end_x, end_y); gtk_render_frame_gap (context, cr, start_x, start_y, end_x, end_y, dir == GTK_TEXT_DIR_LTR ? GTK_POS_LEFT : GTK_POS_RIGHT, start_gap, end_gap); } static gboolean gtd_arrow_frame_draw (GtkWidget *widget, cairo_t *cr) { GtdArrowFrame *frame = GTD_ARROW_FRAME (widget); GtkTextDirection direction; GtkWidget *child; direction = gtk_widget_get_direction (widget); gtd_arrow_frame__draw_background (frame, cr, direction); gtd_arrow_frame__draw_arrow (frame, cr, direction); child = gtk_bin_get_child (GTK_BIN (widget)); if (child) { gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr); } return TRUE; } static void gtd_arrow_frame_compute_child_allocation (GtkFrame *frame, GtkAllocation *allocation) { GTK_FRAME_CLASS (gtd_arrow_frame_parent_class)->compute_child_allocation (frame, allocation); allocation->width -= ARROW_WIDTH; if (gtk_widget_get_direction (GTK_WIDGET (frame)) != GTK_TEXT_DIR_RTL) { allocation->x += ARROW_WIDTH; } } static void gtd_arrow_frame_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width) { GtdArrowFramePrivate *priv; priv = GTD_ARROW_FRAME (widget)->priv; GTK_WIDGET_CLASS (gtd_arrow_frame_parent_class)->get_preferred_width (widget, minimum_width, natural_width); *minimum_width += ARROW_WIDTH; *natural_width += ARROW_WIDTH; *natural_width = MAX (*minimum_width, *natural_width + priv->offset); } static void gtd_arrow_frame_realize (GtkWidget *widget) { GtdArrowFramePrivate *priv; GtkTextDirection dir; GtkAllocation allocation; GdkWindowAttr attributes = { 0 }; GdkDisplay *display; GdkWindow *parent_window; gint attributes_mask; priv = GTD_ARROW_FRAME (widget)->priv; dir = gtk_widget_get_direction (widget); display = gtk_widget_get_display (widget); parent_window = gtk_widget_get_parent_window (widget); gtk_widget_set_realized (widget, TRUE); gtk_widget_set_window (widget, parent_window); g_object_ref (parent_window); gtk_widget_get_allocation (widget, &allocation); attributes.window_type = GDK_WINDOW_CHILD; attributes.wclass = GDK_INPUT_ONLY; attributes.x = dir == GTK_TEXT_DIR_LTR ? allocation.x : allocation.height - HANDLE_GAP; attributes.y = allocation.y; attributes.width = HANDLE_GAP; attributes.height = allocation.height; attributes.visual = gtk_widget_get_visual (widget); attributes.cursor = gdk_cursor_new_for_display (display, GDK_SB_H_DOUBLE_ARROW); attributes.event_mask = gtk_widget_get_events (widget); attributes.event_mask |= (GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK | GDK_POINTER_MOTION_MASK); attributes_mask = GDK_WA_CURSOR | GDK_WA_X | GDK_WA_Y; priv->handle_window = gdk_window_new (parent_window, &attributes, attributes_mask); gtk_widget_register_window (widget, priv->handle_window); g_clear_object (&attributes.cursor); } static void gtd_arrow_frame_unrealize (GtkWidget *widget) { GtdArrowFramePrivate *priv; priv = GTD_ARROW_FRAME (widget)->priv; if (priv->handle_window) { gdk_window_hide (priv->handle_window); gtk_widget_unregister_window (widget, priv->handle_window); g_clear_pointer (&priv->handle_window, gdk_window_destroy); } GTK_WIDGET_CLASS (gtd_arrow_frame_parent_class)->unrealize (widget); } static void gtd_arrow_frame_map (GtkWidget *widget) { GtdArrowFramePrivate *priv; priv = GTD_ARROW_FRAME (widget)->priv; if (priv->handle_window) gdk_window_show (priv->handle_window); GTK_WIDGET_CLASS (gtd_arrow_frame_parent_class)->map (widget); } static void gtd_arrow_frame_unmap (GtkWidget *widget) { GtdArrowFramePrivate *priv; priv = GTD_ARROW_FRAME (widget)->priv; if (priv->handle_window) gdk_window_hide (priv->handle_window); GTK_WIDGET_CLASS (gtd_arrow_frame_parent_class)->unmap (widget); } static void gtd_arrow_frame_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { GtdArrowFramePrivate *priv; GtkTextDirection dir; priv = GTD_ARROW_FRAME (widget)->priv; dir = gtk_widget_get_direction (widget); GTK_WIDGET_CLASS (gtd_arrow_frame_parent_class)->size_allocate (widget, allocation); gtk_widget_set_allocation (widget, allocation); if (gtk_widget_get_realized (widget)) { gdk_window_move_resize (priv->handle_window, dir == GTK_TEXT_DIR_RTL ? allocation->width - HANDLE_GAP : allocation->x, allocation->y, HANDLE_GAP, allocation->height); gdk_window_raise (priv->handle_window); } } static void gtd_arrow_frame_class_init (GtdArrowFrameClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkFrameClass *frame_class = GTK_FRAME_CLASS (klass); object_class->finalize = gtd_arrow_frame_finalize; object_class->get_property = gtd_arrow_frame_get_property; object_class->set_property = gtd_arrow_frame_set_property; widget_class->draw = gtd_arrow_frame_draw; widget_class->get_preferred_width = gtd_arrow_frame_get_preferred_width; widget_class->map = gtd_arrow_frame_map; widget_class->unmap = gtd_arrow_frame_unmap; widget_class->realize = gtd_arrow_frame_realize; widget_class->unrealize = gtd_arrow_frame_unrealize; widget_class->size_allocate = gtd_arrow_frame_size_allocate; frame_class->compute_child_allocation = gtd_arrow_frame_compute_child_allocation; } static void gtd_arrow_frame_init (GtdArrowFrame *self) { self->priv = gtd_arrow_frame_get_instance_private (self); self->priv->pan_gesture = gtd_arrow_frame__create_pan_gesture (self); } void gtd_arrow_frame_set_row (GtdArrowFrame *frame, GtdTaskRow *row) { g_return_if_fail (GTD_IS_ARROW_FRAME (frame)); if (frame->priv->row) { g_signal_handlers_disconnect_by_func (frame->priv->row, gtd_arrow_frame__row_destroyed, frame); } frame->priv->row = row; if (row) { g_signal_connect_swapped (row, "destroy", G_CALLBACK (gtd_arrow_frame__row_destroyed), frame); gtk_widget_queue_draw (GTK_WIDGET (frame)); } } gnome-todo-3.18.1/src/gtd-arrow-frame.h000066400000000000000000000024631260744630400176250ustar00rootroot00000000000000/* gtd-arrow-frame.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_ARROW_FRAME_H #define GTD_ARROW_FRAME_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_ARROW_FRAME (gtd_arrow_frame_get_type()) G_DECLARE_FINAL_TYPE (GtdArrowFrame, gtd_arrow_frame, GTD, ARROW_FRAME, GtkFrame) GtkWidget* gtd_arrow_frame_new (void); void gtd_arrow_frame_set_row (GtdArrowFrame *frame, GtdTaskRow *row); G_END_DECLS #endif /* GTD_ARROW_FRAME_H */ gnome-todo-3.18.1/src/gtd-edit-pane.c000066400000000000000000000317171260744630400172500ustar00rootroot00000000000000/* gtd-edit-pane.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-edit-pane.h" #include "gtd-manager.h" #include "gtd-task.h" #include "gtd-task-list.h" #include typedef struct { GtkCalendar *calendar; GtkLabel *date_label; GtkTextView *notes_textview; GtkComboBoxText *priority_combo; /* task bindings */ GBinding *notes_binding; GBinding *priority_binding; /* flags */ gint should_save_task : 1; GtdManager *manager; GtdTask *task; } GtdEditPanePrivate; struct _GtdEditPane { GtkGrid parent; /**/ GtdEditPanePrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdEditPane, gtd_edit_pane, GTK_TYPE_GRID) enum { PROP_0, PROP_MANAGER, PROP_TASK, LAST_PROP }; enum { EDIT_FINISHED, REMOVE_TASK, NUM_SIGNALS }; static guint signals[NUM_SIGNALS] = { 0, }; static void gtd_edit_pane__date_selected (GtkCalendar *calendar, gpointer user_data); static void gtd_edit_pane_update_date (GtdEditPane *pane); static void gtd_edit_pane__no_date_button_clicked (GtkButton *button, GtdEditPane *pane) { GtdEditPanePrivate *priv; priv = pane->priv; gtd_task_set_due_date (priv->task, NULL); gtk_calendar_clear_marks (GTK_CALENDAR (priv->calendar)); gtd_edit_pane_update_date (pane); } static void gtd_edit_pane__delete_button_clicked (GtkButton *button, gpointer user_data) { GtdEditPanePrivate *priv; g_return_if_fail (GTD_IS_EDIT_PANE (user_data)); priv = GTD_EDIT_PANE (user_data)->priv; g_signal_emit (user_data, signals[REMOVE_TASK], 0, priv->task); priv->should_save_task = FALSE; gtd_edit_pane_set_task (GTD_EDIT_PANE (user_data), NULL); } static void gtd_edit_pane__close_button_clicked (GtkButton *button, gpointer user_data) { GtdEditPanePrivate *priv; g_return_if_fail (GTD_IS_EDIT_PANE (user_data)); priv = GTD_EDIT_PANE (user_data)->priv; g_signal_emit (user_data, signals[EDIT_FINISHED], 0, priv->task); priv->should_save_task = TRUE; gtd_edit_pane_set_task (GTD_EDIT_PANE (user_data), NULL); } static void gtd_edit_pane_update_date (GtdEditPane *pane) { GtdEditPanePrivate *priv; GDateTime *dt; gchar *text; g_return_if_fail (GTD_IS_EDIT_PANE (pane)); priv = pane->priv; dt = priv->task ? gtd_task_get_due_date (priv->task) : NULL; text = dt ? g_date_time_format (dt, "%x") : NULL; if (dt) { g_signal_handlers_block_by_func (priv->calendar, gtd_edit_pane__date_selected, pane); gtk_calendar_select_month (priv->calendar, g_date_time_get_month (dt) - 1, g_date_time_get_year (dt)); gtk_calendar_select_day (priv->calendar, g_date_time_get_day_of_month (dt)); gtk_calendar_mark_day (priv->calendar, g_date_time_get_day_of_month (dt)); g_signal_handlers_unblock_by_func (priv->calendar, gtd_edit_pane__date_selected, pane); } gtk_label_set_label (priv->date_label, text ? text : _("No date set")); g_free (text); } static void gtd_edit_pane__date_selected (GtkCalendar *calendar, gpointer user_data) { GtdEditPanePrivate *priv; GDateTime *new_dt; gchar *text; guint year; guint month; guint day; g_return_if_fail (GTD_IS_EDIT_PANE (user_data)); priv = GTD_EDIT_PANE (user_data)->priv; gtk_calendar_get_date (calendar, &year, &month, &day); new_dt = g_date_time_new_local (year, month + 1, day, 0, 0, 0); text = g_date_time_format (new_dt, "%x"); gtd_task_set_due_date (priv->task, new_dt); gtk_label_set_label (priv->date_label, text); g_date_time_unref (new_dt); g_free (text); } static void gtd_edit_pane_finalize (GObject *object) { G_OBJECT_CLASS (gtd_edit_pane_parent_class)->finalize (object); } static void gtd_edit_pane_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdEditPane *self = GTD_EDIT_PANE (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; case PROP_TASK: g_value_set_object (value, self->priv->task); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_edit_pane_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdEditPane *self = GTD_EDIT_PANE (object); switch (prop_id) { case PROP_MANAGER: self->priv->manager = g_value_get_object (value); break; case PROP_TASK: self->priv->task = g_value_get_object (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_edit_pane_class_init (GtdEditPaneClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_edit_pane_finalize; object_class->get_property = gtd_edit_pane_get_property; object_class->set_property = gtd_edit_pane_set_property; /** * GtdEditPane::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this application", "The manager of the application", GTD_TYPE_MANAGER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * GtdEditPane::task: * * The task that is actually being edited. */ g_object_class_install_property ( object_class, PROP_TASK, g_param_spec_object ("task", "Task being edited", "The task that is actually being edited", GTD_TYPE_TASK, G_PARAM_READWRITE)); /** * GtdEditPane::edit-finished: * * Emitted when the the user finishes editing the task, i.e. the pane is closed. */ signals[EDIT_FINISHED] = g_signal_new ("edit-finished", GTD_TYPE_EDIT_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); /** * GtdEditPane::task-removed: * * Emitted when the the user finishes wants to remove the task. */ signals[REMOVE_TASK] = g_signal_new ("remove-task", GTD_TYPE_EDIT_PANE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); /* template class */ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/edit-pane.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdEditPane, calendar); gtk_widget_class_bind_template_child_private (widget_class, GtdEditPane, date_label); gtk_widget_class_bind_template_child_private (widget_class, GtdEditPane, notes_textview); gtk_widget_class_bind_template_child_private (widget_class, GtdEditPane, priority_combo); gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__close_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__date_selected); gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__delete_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__no_date_button_clicked); } static void gtd_edit_pane_init (GtdEditPane *self) { self->priv = gtd_edit_pane_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget* gtd_edit_pane_new (void) { return g_object_new (GTD_TYPE_EDIT_PANE, NULL); } /** * gtd_edit_pane_get_manager: * * Retrieves the #GtdManager of the application. * * Returns: (transfer none): the #GtdManager of @pane */ GtdManager* gtd_edit_pane_get_manager (GtdEditPane *pane) { g_return_val_if_fail (GTD_IS_EDIT_PANE (pane), NULL); return pane->priv->manager; } /** * gtd_edit_pane_set_manager: * @pane: a #GtdEditPane * @manager: the singleton #GtdManager * * Sets the #GtdManager of the application. * * Returns: */ void gtd_edit_pane_set_manager (GtdEditPane *pane, GtdManager *manager) { g_return_if_fail (GTD_IS_EDIT_PANE (pane)); g_return_if_fail (GTD_IS_MANAGER (manager)); if (pane->priv->manager != manager) { pane->priv->manager = manager; g_object_notify (G_OBJECT (pane), "manager"); } } /** * gtd_edit_pane_get_task: * @pane: a #GtdEditPane * * Retrieves the currently edited #GtdTask of %pane, or %NULL if none is set. * * Returns: (transfer none): the current #GtdTask being edited from %pane. */ GtdTask* gtd_edit_pane_get_task (GtdEditPane *pane) { g_return_val_if_fail (GTD_IS_EDIT_PANE (pane), NULL); return pane->priv->task; } /** * gtd_edit_pane_set_task: * @pane: a #GtdEditPane * @task: a #GtdTask or %NULL * * Sets %task as the currently editing task of %pane. * * Returns: */ void gtd_edit_pane_set_task (GtdEditPane *pane, GtdTask *task) { GtdEditPanePrivate *priv; g_return_if_fail (GTD_IS_EDIT_PANE (pane)); priv = pane->priv; if (priv->task != task) { if (priv->task) { g_clear_pointer (&priv->notes_binding, g_binding_unbind); g_clear_pointer (&priv->priority_binding, g_binding_unbind); if (priv->should_save_task) g_signal_emit (pane, signals[EDIT_FINISHED], 0, priv->task); } priv->task = task; if (task) { /* due date */ gtd_edit_pane_update_date (pane); /* description */ gtk_text_buffer_set_text (gtk_text_view_get_buffer (priv->notes_textview), gtd_task_get_description (task), -1); priv->notes_binding = g_object_bind_property (gtk_text_view_get_buffer (priv->notes_textview), "text", task, "description", G_BINDING_BIDIRECTIONAL); /* priority */ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->priority_combo), CLAMP (gtd_task_get_priority (task), 0, 3)); priv->priority_binding = g_object_bind_property (task, "priority", priv->priority_combo, "active", G_BINDING_BIDIRECTIONAL); } g_object_notify (G_OBJECT (pane), "task"); } } gnome-todo-3.18.1/src/gtd-edit-pane.h000066400000000000000000000032121260744630400172420ustar00rootroot00000000000000/* gtd-edit-pane.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_EDIT_PANE_H #define GTD_EDIT_PANE_H #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_EDIT_PANE (gtd_edit_pane_get_type()) G_DECLARE_FINAL_TYPE (GtdEditPane, gtd_edit_pane, GTD, EDIT_PANE, GtkGrid) GtkWidget* gtd_edit_pane_new (void); GtdManager* gtd_edit_pane_get_manager (GtdEditPane *pane); void gtd_edit_pane_set_manager (GtdEditPane *pane, GtdManager *manager); GtdTask* gtd_edit_pane_get_task (GtdEditPane *pane); void gtd_edit_pane_set_task (GtdEditPane *pane, GtdTask *task); G_END_DECLS #endif /* GTD_EDIT_PANE_H */ gnome-todo-3.18.1/src/gtd-enum-types.c.template000066400000000000000000000013141260744630400213100ustar00rootroot00000000000000/*** BEGIN file-header ***/ #include "gtd-enum-types.h" /*** END file-header ***/ /*** BEGIN file-production ***/ /* enumerations from "@filename@" */ #include "@filename@" /*** END file-production ***/ /*** BEGIN value-header ***/ GType @enum_name@_get_type (void) { static GType the_type = 0; if (the_type == 0) { static const G@Type@Value values[] = { /*** END value-header ***/ /*** BEGIN value-production ***/ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, /*** END value-production ***/ /*** BEGIN value-tail ***/ { 0, NULL, NULL } }; the_type = g_@type@_register_static ( g_intern_static_string ("@EnumName@"), values); } return the_type; } /*** END value-tail ***/ gnome-todo-3.18.1/src/gtd-enum-types.h.template000066400000000000000000000010061260744630400213130ustar00rootroot00000000000000/*** BEGIN file-header ***/ #ifndef __GTD_ENUMS_H__ #define __GTD_ENUMS_H__ #include G_BEGIN_DECLS /*** END file-header ***/ /*** BEGIN file-production ***/ /* Enumerations from "@filename@" */ /*** END file-production ***/ /*** BEGIN enumeration-production ***/ #define GTD_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) GType @enum_name@_get_type (void) G_GNUC_CONST; /*** END enumeration-production ***/ /*** BEGIN file-tail ***/ G_END_DECLS #endif /* __GTD_ENUMS_H__ */ /*** END file-tail ***/ gnome-todo-3.18.1/src/gtd-enums.h000066400000000000000000000017011260744630400165240ustar00rootroot00000000000000/* gtd-enums.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_ENUMS_H #define GTD_ENUMS_H #include G_BEGIN_DECLS typedef enum { GTD_WINDOW_MODE_NORMAL, GTD_WINDOW_MODE_SELECTION } GtdWindowMode; G_END_DECLS #endif /* GTD_ENUMS_H */ gnome-todo-3.18.1/src/gtd-initial-setup-window.c000066400000000000000000000163271260744630400214760ustar00rootroot00000000000000/* gtd-initial-setup-window.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-application.h" #include "gtd-storage.h" #include "gtd-storage-selector.h" #include "gtd-initial-setup-window.h" #include "gtd-manager.h" #include typedef struct { GtkWidget *cancel_button; GtkWidget *done_button; GtkWidget *storage_selector; GtdManager *manager; } GtdInitialSetupWindowPrivate; struct _GtdInitialSetupWindow { GtkApplicationWindow parent; /**/ GtdInitialSetupWindowPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdInitialSetupWindow, gtd_initial_setup_window, GTK_TYPE_APPLICATION_WINDOW) enum { PROP_0, PROP_MANAGER, LAST_PROP }; enum { CANCEL, DONE, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0, }; static void gtd_initial_setup_window__location_selected (GtdInitialSetupWindow *window, GtdStorage *storage) { GtdInitialSetupWindowPrivate *priv; g_return_if_fail (GTD_IS_INITIAL_SETUP_WINDOW (window)); priv = window->priv; gtk_widget_set_sensitive (priv->done_button, storage != NULL); if (storage) gtd_manager_set_default_storage (priv->manager, storage); } static void gtd_initial_setup_window__button_clicked (GtdInitialSetupWindow *window, GtkWidget *button) { GtdInitialSetupWindowPrivate *priv; g_return_if_fail (GTD_IS_INITIAL_SETUP_WINDOW (window)); priv = window->priv; if (button == priv->cancel_button) { g_signal_emit (window, signals[CANCEL], 0); } else if (button == priv->done_button) { g_signal_emit (window, signals[DONE], 0); } } static void gtd_initial_setup_window_finalize (GObject *object) { G_OBJECT_CLASS (gtd_initial_setup_window_parent_class)->finalize (object); } static void gtd_initial_setup_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdInitialSetupWindow *self = GTD_INITIAL_SETUP_WINDOW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_initial_setup_window_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdInitialSetupWindow *self = GTD_INITIAL_SETUP_WINDOW (object); switch (prop_id) { case PROP_MANAGER: self->priv->manager = g_value_get_object (value); g_object_notify (object, "manager"); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_initial_setup_window_constructed (GObject *object) { GtdInitialSetupWindowPrivate *priv; G_OBJECT_CLASS (gtd_initial_setup_window_parent_class)->constructed (object); priv = GTD_INITIAL_SETUP_WINDOW (object)->priv; g_object_bind_property (object, "manager", priv->storage_selector, "manager", G_BINDING_DEFAULT); } static void gtd_initial_setup_window_class_init (GtdInitialSetupWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_initial_setup_window_finalize; object_class->constructed = gtd_initial_setup_window_constructed; object_class->get_property = gtd_initial_setup_window_get_property; object_class->set_property = gtd_initial_setup_window_set_property; /** * GtdInitialSetupWindow::cancel: * * Emitted when the Cancel button is clicked. Should quit the * application. */ signals[CANCEL] = g_signal_new ("cancel", GTD_TYPE_INITIAL_SETUP_WINDOW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * GtdInitialSetupWindow::done: * * Emitted when the Done button is clicked. Should start the * application. */ signals[DONE] = g_signal_new ("done", GTD_TYPE_INITIAL_SETUP_WINDOW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * GtdInitialSetupWindow::manager: * * Manager of the application. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of the task", "The singleton manager instance of the task", GTD_TYPE_MANAGER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/initial-setup.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdInitialSetupWindow, cancel_button); gtk_widget_class_bind_template_child_private (widget_class, GtdInitialSetupWindow, done_button); gtk_widget_class_bind_template_child_private (widget_class, GtdInitialSetupWindow, storage_selector); gtk_widget_class_bind_template_callback (widget_class, gtd_initial_setup_window__button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_initial_setup_window__location_selected); } static void gtd_initial_setup_window_init (GtdInitialSetupWindow *self) { self->priv = gtd_initial_setup_window_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget* gtd_initial_setup_window_new (GtdApplication *application) { g_return_val_if_fail (GTD_IS_APPLICATION (application), NULL); return g_object_new (GTD_TYPE_INITIAL_SETUP_WINDOW, "application", application, "manager", gtd_application_get_manager (application), NULL); } gnome-todo-3.18.1/src/gtd-initial-setup-window.h000066400000000000000000000023761260744630400215020ustar00rootroot00000000000000/* gtd-initial-setup-window.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_INITIAL_SETUP_WINDOW_H #define GTD_INITIAL_SETUP_WINDOW_H #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_INITIAL_SETUP_WINDOW (gtd_initial_setup_window_get_type()) G_DECLARE_FINAL_TYPE (GtdInitialSetupWindow, gtd_initial_setup_window, GTD, INITIAL_SETUP_WINDOW, GtkApplicationWindow) GtkWidget* gtd_initial_setup_window_new (GtdApplication *application); G_END_DECLS #endif /* GTD_INITIAL_SETUP_WINDOW_H */ gnome-todo-3.18.1/src/gtd-manager.c000066400000000000000000001464501260744630400170150ustar00rootroot00000000000000/* gtd-manager.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-manager.h" #include "gtd-storage-goa.h" #include "gtd-storage-local.h" #include "gtd-storage.h" #include "gtd-task.h" #include "gtd-task-list.h" #include #include #include typedef struct { GHashTable *clients; GList *task_lists; ECredentialsPrompter *credentials_prompter; ESourceRegistry *source_registry; /* * Today & Scheduled lists */ GtdTaskList *today_tasks_list; GtdTaskList *scheduled_tasks_list; /* Online accounts */ GoaClient *goa_client; gboolean goa_client_ready; GList *storage_locations; GSettings *settings; /* * Small flag that contains the number of sources * that still have to be loaded. When this number * reaches 0, all sources are loaded. */ gint load_sources; } GtdManagerPrivate; struct _GtdManager { GtdObject parent; /*< private >*/ GtdManagerPrivate *priv; }; /* Auxiliary struct for asyncronous task operations */ typedef struct _TaskData { GtdManager *manager; gpointer *data; } TaskData; G_DEFINE_TYPE_WITH_PRIVATE (GtdManager, gtd_manager, GTD_TYPE_OBJECT) const gchar *supported_providers[] = { "exchange", "google", "owncloud", NULL }; enum { DEFAULT_STORAGE_CHANGED, LIST_ADDED, LIST_CHANGED, LIST_REMOVED, SHOW_ERROR_MESSAGE, STORAGE_ADDED, STORAGE_CHANGED, STORAGE_REMOVED, NUM_SIGNALS }; enum { PROP_0, PROP_GOA_CLIENT, PROP_GOA_CLIENT_READY, PROP_SOURCE_REGISTRY, LAST_PROP }; static guint signals[NUM_SIGNALS] = { 0, }; static TaskData* task_data_new (GtdManager *manager, gpointer *data) { TaskData *tdata; tdata = g_new0 (TaskData, 1); tdata->manager = manager; tdata->data = data; return tdata; } static gboolean is_today (GDateTime *dt) { GDateTime *today; today = g_date_time_new_now_local (); if (g_date_time_get_year (dt) == g_date_time_get_year (today) && g_date_time_get_month (dt) == g_date_time_get_month (today) && g_date_time_get_day_of_month (dt) == g_date_time_get_day_of_month (today)) { return TRUE; } g_date_time_unref (today); return FALSE; } static void emit_show_error_message (GtdManager *manager, const gchar *primary_text, const gchar *secondary_text) { g_signal_emit (manager, signals[SHOW_ERROR_MESSAGE], 0, primary_text, secondary_text); } static void gtd_manager__setup_url (GtdManager *manager, GtdStorageGoa *storage) { GtdManagerPrivate *priv; GList *sources; GList *l; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_STORAGE (storage)); priv = manager->priv; if (!priv->source_registry) return; /* * Search for the ESource whose parent source has an ESourceGoa extension. * The ESourceGoa, then, must have the same account uid that of @storage. */ sources = e_source_registry_list_sources (priv->source_registry, E_SOURCE_EXTENSION_TASK_LIST); for (l = sources; l != NULL; l = l->next) { ESource *source; ESource *goa_source; source = l->data; goa_source = e_source_registry_find_extension (priv->source_registry, source, E_SOURCE_EXTENSION_GOA); if (goa_source) { ESourceGoa *goa_ext; goa_ext = e_source_get_extension (goa_source, E_SOURCE_EXTENSION_GOA); /* Found an ESourceGoa with the same uid of storage */ if (g_strcmp0 (e_source_goa_get_account_id (goa_ext), gtd_storage_get_id (GTD_STORAGE (storage))) == 0) { gtd_storage_goa_set_parent (storage, e_source_get_uid (goa_source)); break; } } g_clear_object (&goa_source); } g_list_free_full (sources, g_object_unref); } static void gtd_manager__goa_account_removed_cb (GoaClient *client, GoaObject *object, GtdManager *manager) { GtdManagerPrivate *priv; GoaAccount *account; g_return_if_fail (GTD_IS_MANAGER (manager)); priv = manager->priv; account = goa_object_get_account (object); if (g_strv_contains (supported_providers, goa_account_get_provider_type (account))) { GList *l; for (l = priv->storage_locations; l != NULL; l = l->next) { if (g_strcmp0 (goa_account_get_id (account), gtd_storage_get_id (l->data)) == 0) { GtdStorage *storage = l->data; if (gtd_storage_get_is_default (storage)) { g_settings_set_string (priv->settings, "storage-location", "local"); } priv->storage_locations = g_list_remove (priv->storage_locations, storage); g_object_unref (storage); g_signal_emit (manager, signals[STORAGE_REMOVED], 0, storage); break; } } } } static void gtd_manager__goa_account_changed_cb (GoaClient *client, GoaObject *object, GtdManager *manager) { GtdManagerPrivate *priv; GoaAccount *account; g_return_if_fail (GTD_IS_MANAGER (manager)); priv = manager->priv; account = goa_object_get_account (object); if (g_strv_contains (supported_providers, goa_account_get_provider_type (account))) { GList *l; for (l = priv->storage_locations; l != NULL; l = l->next) { if (g_strcmp0 (goa_account_get_id (account), gtd_storage_get_id (l->data)) == 0) { g_signal_emit (manager, signals[STORAGE_CHANGED], 0, l->data); break; } } } } static void gtd_manager__goa_account_added_cb (GoaClient *client, GoaObject *object, GtdManager *manager) { GtdManagerPrivate *priv; GoaAccount *account; g_return_if_fail (GTD_IS_MANAGER (manager)); priv = manager->priv; account = goa_object_get_account (object); if (g_strv_contains (supported_providers, goa_account_get_provider_type (account))) { GtdStorage *storage; gchar *default_location; default_location = g_settings_get_string (priv->settings, "storage-location"); storage = gtd_storage_goa_new (object); gtd_storage_set_enabled (storage, !goa_account_get_calendar_disabled (account)); gtd_storage_set_is_default (storage, g_strcmp0 (gtd_storage_get_id (storage), default_location) == 0); gtd_manager__setup_url (manager, GTD_STORAGE_GOA (storage)); priv->storage_locations = g_list_insert_sorted (priv->storage_locations, storage, (GCompareFunc) gtd_storage_compare); g_signal_emit (manager, signals[STORAGE_ADDED], 0, storage); g_free (default_location); } } static void gtd_manager__goa_client_finish_cb (GObject *client, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv; GError *error; g_return_if_fail (GTD_IS_MANAGER (user_data)); priv = GTD_MANAGER (user_data)->priv; error = NULL; priv->goa_client_ready = TRUE; priv->goa_client = goa_client_new_finish (result, &error); if (!error) { GList *accounts; GList *l; gchar *default_location; /* Load each supported GoaAccount into a GtdStorage */ accounts = goa_client_get_accounts (priv->goa_client); default_location = g_settings_get_string (priv->settings, "storage-location"); for (l = accounts; l != NULL; l = l->next) { GoaObject *object; GoaAccount *account; object = l->data; account = goa_object_peek_account (object); if (g_strv_contains (supported_providers, goa_account_get_provider_type (account))) { GtdStorage *storage; /* Create the new GOA storage */ storage = gtd_storage_goa_new (object); gtd_storage_set_enabled (storage, !goa_account_get_calendar_disabled (account)); gtd_storage_set_is_default (storage, g_strcmp0 (gtd_storage_get_id (storage), default_location) == 0); g_assert (gtd_storage_goa_get_account (GTD_STORAGE_GOA (storage)) == account); gtd_manager__setup_url (GTD_MANAGER (user_data), GTD_STORAGE_GOA (storage)); priv->storage_locations = g_list_insert_sorted (priv->storage_locations, storage, (GCompareFunc) gtd_storage_compare); g_signal_emit (user_data, signals[STORAGE_ADDED], 0, storage); } } /* Connect GoaClient signals */ g_signal_connect (priv->goa_client, "account-added", G_CALLBACK (gtd_manager__goa_account_added_cb), user_data); g_signal_connect (priv->goa_client, "account-changed", G_CALLBACK (gtd_manager__goa_account_changed_cb), user_data); g_signal_connect (priv->goa_client, "account-removed", G_CALLBACK (gtd_manager__goa_account_removed_cb), user_data); g_list_free_full (accounts, g_object_unref); g_free (default_location); } else { g_warning ("%s: %s: %s", G_STRFUNC, _("Error loading GNOME Online Accounts"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error loading GNOME Online Accounts"), error->message); g_clear_error (&error); } g_object_notify (user_data, "goa-client-ready"); g_object_notify (user_data, "goa-client"); } static void gtd_manager__commit_source_finished (GObject *registry, GAsyncResult *result, gpointer user_data) { GError *error = NULL; g_return_if_fail (GTD_IS_MANAGER (user_data)); gtd_object_set_ready (GTD_OBJECT (user_data), TRUE); e_source_registry_commit_source_finish (E_SOURCE_REGISTRY (registry), result, &error); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error saving task list"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error saving task list"), error->message); g_error_free (error); return; } } static void task_list_removal_finished (GtdManager *manager, ESource *source, GError **error) { gtd_object_set_ready (GTD_OBJECT (manager), TRUE); if (*error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error removing task list"), (*error)->message); emit_show_error_message (manager, _("Error removing task list"), (*error)->message); g_clear_error (error); } } static void gtd_manager__remote_create_source_finished (GObject *source, GAsyncResult *result, gpointer user_data) { GError *error; error = NULL; e_source_remote_create_finish (E_SOURCE (source), result, &error); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error creating task list"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error creating task list"), error->message); g_clear_error (&error); } } static void gtd_manager__remote_delete_finished (GObject *source, GAsyncResult *result, gpointer user_data) { GError *error = NULL; e_source_remote_delete_finish (E_SOURCE (source), result, &error); task_list_removal_finished (GTD_MANAGER (user_data), E_SOURCE (source), &error); } static void gtd_manager__remove_source_finished (GObject *source, GAsyncResult *result, gpointer user_data) { GError *error = NULL; e_source_remove_finish (E_SOURCE (source), result, &error); task_list_removal_finished (GTD_MANAGER (user_data), E_SOURCE (source), &error); } static void gtd_manager__create_task_finished (GObject *client, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv; TaskData *data = user_data; gchar *new_uid = NULL; GError *error = NULL; priv = data->manager->priv; e_cal_client_create_object_finish (E_CAL_CLIENT (client), result, &new_uid, &error); gtd_object_set_ready (GTD_OBJECT (data->data), TRUE); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error creating task"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error creating task"), error->message); g_error_free (error); g_free (data); return; } else { GDateTime *dt; /* * Add in 'Today' and/or 'Scheduled' lists. */ dt = gtd_task_get_due_date (GTD_TASK (data->data)); if (dt) gtd_task_list_save_task (priv->scheduled_tasks_list, (GtdTask*) data->data); if (dt && is_today (dt)) gtd_task_list_save_task (priv->today_tasks_list, (GtdTask*) data->data); /* * In the case the task UID changes because of creation proccess, * reapply it to the task. */ if (new_uid) { gtd_object_set_uid (GTD_OBJECT (data->data), new_uid); g_free (new_uid); } g_free (data); } } static void gtd_manager__remove_task_finished (GObject *client, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv; TaskData *data = user_data; GError *error = NULL; priv = data->manager->priv; e_cal_client_remove_object_finish (E_CAL_CLIENT (client), result, &error); gtd_object_set_ready (GTD_OBJECT (data->data), TRUE); /* Remove from 'Today' or 'Scheduled' as needed */ gtd_task_list_remove_task (priv->scheduled_tasks_list, (GtdTask*) data->data); gtd_task_list_remove_task (priv->today_tasks_list, (GtdTask*) data->data); g_object_unref ((GtdTask*) data->data); g_free (data); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error removing task"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error removing task"), error->message); g_error_free (error); return; } } static void gtd_manager__update_task_finished (GObject *client, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv; GDateTime *dt; TaskData *data = user_data; GtdTask *task; GError *error = NULL; priv = data->manager->priv; task = GTD_TASK (data->data); e_cal_client_modify_object_finish (E_CAL_CLIENT (client), result, &error); /* Check if the task still fits internal lists */ dt = gtd_task_get_due_date (task); if (dt) { gtd_task_list_save_task (priv->scheduled_tasks_list, task); if (is_today (dt)) gtd_task_list_save_task (priv->today_tasks_list, task); else gtd_task_list_remove_task (priv->today_tasks_list, task); } else { gtd_task_list_remove_task (priv->scheduled_tasks_list, task); gtd_task_list_remove_task (priv->today_tasks_list, task); } if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error updating task"), error->message); emit_show_error_message (data->manager, _("Error updating task"), error->message); g_error_free (error); } g_clear_pointer (&dt, g_date_time_unref); g_free (data); gtd_object_set_ready (GTD_OBJECT (data->data), TRUE); } static void gtd_manager__invoke_authentication (GObject *source_object, GAsyncResult *result, gpointer user_data) { ESource *source = E_SOURCE (source_object); GError *error = NULL; gboolean canceled; e_source_invoke_authenticate_finish (source, result, &error); canceled = g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED); if (!canceled) { g_warning ("%s: %s (%s): %s", G_STRFUNC, _("Failed to prompt for credentials"), e_source_get_uid (source), error->message); } g_clear_error (&error); } static void gtd_manager__credentials_prompt_done (GObject *source_object, GAsyncResult *result, gpointer user_data) { ETrustPromptResponse response = E_TRUST_PROMPT_RESPONSE_UNKNOWN; ESource *source = E_SOURCE (source_object); GError *error = NULL; e_trust_prompt_run_for_source_finish (source, result, &response, &error); if (error) { g_warning ("%s: %s '%s': %s", G_STRFUNC, _("Failed to prompt for credentials for"), e_source_get_display_name (source), error->message); } else if (response == E_TRUST_PROMPT_RESPONSE_ACCEPT || response == E_TRUST_PROMPT_RESPONSE_ACCEPT_TEMPORARILY) { /* Use NULL credentials to reuse those from the last time. */ e_source_invoke_authenticate (source, NULL, NULL /* cancellable */, gtd_manager__invoke_authentication, NULL); } g_clear_error (&error); } static void gtd_manager__credentials_required (ESourceRegistry *registry, ESource *source, ESourceCredentialsReason reason, const gchar *certificate_pem, GTlsCertificateFlags certificate_errors, const GError *error, gpointer user_data) { GtdManagerPrivate *priv; g_return_if_fail (GTD_IS_MANAGER (user_data)); priv = GTD_MANAGER (user_data)->priv; if (e_credentials_prompter_get_auto_prompt_disabled_for (priv->credentials_prompter, source)) return; if (reason == E_SOURCE_CREDENTIALS_REASON_SSL_FAILED) { e_trust_prompt_run_for_source (e_credentials_prompter_get_dialog_parent (priv->credentials_prompter), source, certificate_pem, certificate_errors, error ? error->message : NULL, TRUE, // allow saving sources NULL, // we won't cancel the operation gtd_manager__credentials_prompt_done, NULL); } else if (error && reason == E_SOURCE_CREDENTIALS_REASON_ERROR) { g_warning ("%s: %s '%s': %s", G_STRFUNC, _("Authentication failure"), e_source_get_display_name (source), error->message); } } static void gtd_manager__fill_task_list (GObject *client, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv; GtdTaskList *list; TaskData *data = user_data; GSList *component_list; GError *error = NULL; g_return_if_fail (GTD_IS_MANAGER (data->manager)); priv = data->manager->priv; list = GTD_TASK_LIST (data->data); e_cal_client_get_object_list_as_comps_finish (E_CAL_CLIENT (client), result, &component_list, &error); gtd_object_set_ready (GTD_OBJECT (data->data), TRUE); g_free (data); if (!error) { GSList *l; for (l = component_list; l != NULL; l = l->next) { GDateTime *dt; GtdTask *task; task = gtd_task_new (l->data); gtd_task_set_list (task, list); gtd_task_list_save_task (list, task); /* * Add in 'Today' and/or 'Scheduled' lists. */ dt = gtd_task_get_due_date (task); if (dt) gtd_task_list_save_task (priv->scheduled_tasks_list, task); if (dt && is_today (dt)) gtd_task_list_save_task (priv->today_tasks_list, task); g_clear_pointer (&dt, g_date_time_unref); } e_cal_client_free_ecalcomp_slist (component_list); } else { g_warning ("%s: %s: %s", G_STRFUNC, _("Error fetching tasks from list"), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Error fetching tasks from list"), error->message); g_error_free (error); return; } } static void gtd_manager__on_client_connected (GObject *source_object, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv = GTD_MANAGER (user_data)->priv; ECalClient *client; ESource *source; GError *error = NULL; source = e_client_get_source (E_CLIENT (source_object)); client = E_CAL_CLIENT (e_cal_client_connect_finish (result, &error)); /* Update ready flag */ priv->load_sources--; gtd_object_set_ready (GTD_OBJECT (user_data), priv->load_sources <= 0); if (!error) { GtdTaskList *list; TaskData *data; ESource *parent; /* parent source's display name is list's origin */ parent = e_source_registry_ref_source (priv->source_registry, e_source_get_parent (source)); /* creates a new task list */ list = gtd_task_list_new (source, e_source_get_display_name (parent)); /* it's not ready until we fetch the list of tasks from client */ gtd_object_set_ready (GTD_OBJECT (list), FALSE); /* async data */ data = task_data_new (user_data, (gpointer) list); /* asyncronously fetch the task list */ e_cal_client_get_object_list_as_comps (client, "contains? \"any\" \"\"", NULL, (GAsyncReadyCallback) gtd_manager__fill_task_list, data); priv->task_lists = g_list_append (priv->task_lists, list); g_object_set_data (G_OBJECT (source), "task-list", list); g_hash_table_insert (priv->clients, source, client); g_signal_emit (user_data, signals[LIST_ADDED], 0, list); g_object_unref (parent); g_debug ("%s: %s (%s)", G_STRFUNC, _("Task list source successfully connected"), e_source_get_display_name (source)); } else { g_debug ("%s: %s (%s): %s", G_STRFUNC, _("Failed to connect to task list source"), e_source_get_uid (source), error->message); emit_show_error_message (GTD_MANAGER (user_data), _("Failed to connect to task list source"), error->message); g_error_free (error); return; } } static void gtd_manager__load__source (GtdManager *manager, ESource *source) { GtdManagerPrivate *priv = manager->priv; if (e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST) && !g_hash_table_lookup (priv->clients, source)) { e_cal_client_connect (source, E_CAL_CLIENT_SOURCE_TYPE_TASKS, 5, /* seconds to wait */ NULL, gtd_manager__on_client_connected, manager); } else { g_warning ("%s: %s %s (%s)", G_STRFUNC, _("Skipping already loaded task list "), e_source_get_display_name (source), e_source_get_uid (source)); } } static void gtd_manager__remove_source (GtdManager *manager, ESource *source) { GtdManagerPrivate *priv = manager->priv; GtdTaskList *list; list = g_object_get_data (G_OBJECT (source), "task-list"); g_hash_table_remove (priv->clients, source); g_signal_emit (manager, signals[LIST_REMOVED], 0, list); } static void gtd_manager__source_registry_finish_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { GtdManagerPrivate *priv = GTD_MANAGER (user_data)->priv; GList *l; GList *sources; GError *error = NULL; priv->source_registry = e_source_registry_new_finish (result, &error); priv->credentials_prompter = e_credentials_prompter_new (priv->source_registry); if (error != NULL) { g_warning ("%s: %s", _("Error loading task manager"), error->message); g_error_free (error); return; } /* First of all, disable authentication dialog for non-tasklists sources */ sources = e_source_registry_list_sources (priv->source_registry, NULL); for (l = sources; l != NULL; l = g_list_next (l)) { ESource *source = E_SOURCE (l->data); /* Mark for skip also currently disabled sources */ e_credentials_prompter_set_auto_prompt_disabled_for (priv->credentials_prompter, source, !e_source_has_extension (source, E_SOURCE_EXTENSION_TASK_LIST)); } g_list_free_full (sources, g_object_unref); /* Load task list sources */ sources = e_source_registry_list_sources (priv->source_registry, E_SOURCE_EXTENSION_TASK_LIST); /* While load_sources > 0, GtdManager::ready = FALSE */ priv->load_sources = g_list_length (sources); /* * When ESourceRegistry is loaded, it enabled loading the GtdStorage::url properties. * Load them now. */ for (l = priv->storage_locations; l != NULL; l = l->next) gtd_manager__setup_url (GTD_MANAGER (user_data), l->data); g_debug ("%s: number of sources to load: %d", G_STRFUNC, priv->load_sources); gtd_object_set_ready (GTD_OBJECT (user_data), priv->load_sources == 0); for (l = sources; l != NULL; l = l->next) gtd_manager__load__source (GTD_MANAGER (user_data), l->data); g_list_free_full (sources, g_object_unref); /* listen to the signals, so new sources don't slip by */ g_signal_connect_swapped (priv->source_registry, "source-added", G_CALLBACK (gtd_manager__load__source), user_data); g_signal_connect_swapped (priv->source_registry, "source-removed", G_CALLBACK (gtd_manager__remove_source), user_data); g_signal_connect (priv->source_registry, "credentials-required", G_CALLBACK (gtd_manager__credentials_required), user_data); e_credentials_prompter_process_awaiting_credentials (priv->credentials_prompter); } static void gtd_manager_finalize (GObject *object) { GtdManager *self = (GtdManager *)object; g_clear_object (&self->priv->goa_client); g_clear_object (&self->priv->scheduled_tasks_list); g_clear_object (&self->priv->today_tasks_list); G_OBJECT_CLASS (gtd_manager_parent_class)->finalize (object); } static void gtd_manager_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { switch (prop_id) { default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_manager_constructed (GObject *object) { GtdManagerPrivate *priv = GTD_MANAGER (object)->priv; GtdStorage *local_storage; gchar *default_location; G_OBJECT_CLASS (gtd_manager_parent_class)->constructed (object); default_location = g_settings_get_string (priv->settings, "storage-location"); /* hash table */ priv->clients = g_hash_table_new_full ((GHashFunc) e_source_hash, (GEqualFunc) e_source_equal, g_object_unref, g_object_unref); /* load the source registry */ e_source_registry_new (NULL, (GAsyncReadyCallback) gtd_manager__source_registry_finish_cb, object); /* local storage location */ local_storage = gtd_storage_local_new (); gtd_storage_set_enabled (local_storage, TRUE); gtd_storage_set_is_default (local_storage, g_strcmp0 (default_location, "local") == 0); priv->storage_locations = g_list_append (priv->storage_locations, local_storage); /* online accounts */ goa_client_new (NULL, (GAsyncReadyCallback) gtd_manager__goa_client_finish_cb, object); g_free (default_location); } static void gtd_manager_class_init (GtdManagerClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_manager_finalize; object_class->get_property = gtd_manager_get_property; object_class->set_property = gtd_manager_set_property; object_class->constructed = gtd_manager_constructed; /** * GtdManager::goa-client: * * The #GoaClient asyncronously loaded. */ g_object_class_install_property ( object_class, PROP_GOA_CLIENT, g_param_spec_object ("goa-client", "The online accounts client of the manager", "The read-only GNOME online accounts client loaded and owned by the manager", GOA_TYPE_CLIENT, G_PARAM_READABLE)); /** * GtdManager::goa-client-ready: * * Whether the GNOME Online Accounts client is loaded. */ g_object_class_install_property ( object_class, PROP_GOA_CLIENT_READY, g_param_spec_boolean ("goa-client-ready", "Whether GNOME Online Accounts client is ready", "Whether the read-only GNOME online accounts client is loaded", FALSE, G_PARAM_READABLE)); /** * GtdManager::source-registry: * * The #ESourceRegistry asyncronously loaded. */ g_object_class_install_property ( object_class, PROP_SOURCE_REGISTRY, g_param_spec_object ("source-registry", "The source registry of the manager", "The read-only source registry loaded and owned by the manager", E_TYPE_SOURCE_REGISTRY, G_PARAM_READABLE)); /** * GtdManager::default-storage-changed: * * The ::default-storage-changed signal is emmited when a new #GtdStorage * is set as default. */ signals[DEFAULT_STORAGE_CHANGED] = g_signal_new ("default-storage-changed", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 2, GTD_TYPE_STORAGE, GTD_TYPE_STORAGE); /** * GtdManager::list-added: * * The ::list-added signal is emmited after a #GtdTaskList * is connected. */ signals[LIST_ADDED] = g_signal_new ("list-added", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK_LIST); /** * GtdManager::list-changed: * * The ::list-changed signal is emmited after a #GtdTaskList * has any of it's properties changed. */ signals[LIST_CHANGED] = g_signal_new ("list-changed", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK_LIST); /** * GtdManager::list-removed: * * The ::list-removed signal is emmited after a #GtdTaskList * is disconnected. */ signals[LIST_REMOVED] = g_signal_new ("list-removed", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK_LIST); /** * GtdManager::show-error-message: * * Notifies about errors, and sends the error message for widgets * to display. * */ signals[SHOW_ERROR_MESSAGE] = g_signal_new ("show-error-message", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); /** * GtdManager::storage-added: * * The ::storage-added signal is emmited after a #GtdStorage * is added. */ signals[STORAGE_ADDED] = g_signal_new ("storage-added", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_STORAGE); /** * GtdManager::storage-changed: * * The ::storage-changed signal is emmited after a #GtdStorage * is changed. */ signals[STORAGE_CHANGED] = g_signal_new ("storage-changed", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_STORAGE); /** * GtdManager::storage-removed: * * The ::storage-removed signal is emmited after a #GtdStorage * is removed from the list. */ signals[STORAGE_REMOVED] = g_signal_new ("storage-removed", GTD_TYPE_MANAGER, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_STORAGE); } static void gtd_manager_init (GtdManager *self) { self->priv = gtd_manager_get_instance_private (self); self->priv->settings = g_settings_new ("org.gnome.todo"); /* fixed task lists */ self->priv->scheduled_tasks_list = g_object_new (GTD_TYPE_TASK_LIST, NULL); self->priv->today_tasks_list = g_object_new (GTD_TYPE_TASK_LIST, NULL); } GtdManager* gtd_manager_new (void) { return g_object_new (GTD_TYPE_MANAGER, NULL); } /** * gtd_manager_create_task: * @manager: a #GtdManager * @task: a #GtdTask * * Ask for @task's parent list source to create @task. * * Returns: */ void gtd_manager_create_task (GtdManager *manager, GtdTask *task) { GtdManagerPrivate *priv = GTD_MANAGER (manager)->priv; ECalComponent *component; ECalClient *client; TaskData *data; ESource *source; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK (task)); source = gtd_task_list_get_source (gtd_task_get_list (task)); client = g_hash_table_lookup (priv->clients, source); component = gtd_task_get_component (task); /* Temporary data for async operation */ data = task_data_new (manager, (gpointer) task); /* The task is not ready until we finish the operation */ gtd_object_set_ready (GTD_OBJECT (task), FALSE); e_cal_client_create_object (client, e_cal_component_get_icalcomponent (component), NULL, // We won't cancel the operation (GAsyncReadyCallback) gtd_manager__create_task_finished, data); } /** * gtd_manager_remove_task: * @manager: a #GtdManager * @task: a #GtdTask * * Ask for @task's parent list source to remove @task. * * Returns: */ void gtd_manager_remove_task (GtdManager *manager, GtdTask *task) { GtdManagerPrivate *priv = GTD_MANAGER (manager)->priv; ECalComponent *component; ECalComponentId *id; ECalClient *client; TaskData *data; ESource *source; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK (task)); source = gtd_task_list_get_source (gtd_task_get_list (task)); client = g_hash_table_lookup (priv->clients, source); component = gtd_task_get_component (task); id = e_cal_component_get_id (component); /* Temporary data for async operation */ data = task_data_new (manager, (gpointer) task); /* The task is not ready until we finish the operation */ gtd_object_set_ready (GTD_OBJECT (task), FALSE); e_cal_client_remove_object (client, id->uid, id->rid, E_CAL_OBJ_MOD_THIS, NULL, // We won't cancel the operation (GAsyncReadyCallback) gtd_manager__remove_task_finished, data); e_cal_component_free_id (id); } /** * gtd_manager_update_task: * @manager: a #GtdManager * @task: a #GtdTask * * Ask for @task's parent list source to update @task. * * Returns: */ void gtd_manager_update_task (GtdManager *manager, GtdTask *task) { GtdManagerPrivate *priv = GTD_MANAGER (manager)->priv; ECalComponent *component; ECalClient *client; TaskData *data; ESource *source; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK (task)); source = gtd_task_list_get_source (gtd_task_get_list (task)); client = g_hash_table_lookup (priv->clients, source); component = gtd_task_get_component (task); /* Temporary data for async operation */ data = task_data_new (manager, (gpointer) task); /* The task is not ready until we finish the operation */ gtd_object_set_ready (GTD_OBJECT (task), FALSE); e_cal_client_modify_object (client, e_cal_component_get_icalcomponent (component), E_CAL_OBJ_MOD_THIS, NULL, // We won't cancel the operation (GAsyncReadyCallback) gtd_manager__update_task_finished, data); } /** * gtd_manager_create_task_list: * * * Creates a new task list at the given source. * * Returns: */ void gtd_manager_create_task_list (GtdManager *manager, GtdTaskList *list) { GtdManagerPrivate *priv; ESource *source; ESource *parent; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK_LIST (list)); g_return_if_fail (gtd_task_list_get_source (list)); priv = manager->priv; source = gtd_task_list_get_source (list); parent = e_source_registry_ref_source (priv->source_registry, e_source_get_parent (source)); e_source_remote_create (parent, source, NULL, (GAsyncReadyCallback) gtd_manager__remote_create_source_finished, manager); g_object_unref (parent); } /** * gtd_manager_remove_task_list: * @manager: a #GtdManager * @list: a #GtdTaskList * * Deletes @list from the registry. * * Returns: */ void gtd_manager_remove_task_list (GtdManager *manager, GtdTaskList *list) { ESource *source; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK_LIST (list)); g_return_if_fail (gtd_task_list_get_source (list)); source = gtd_task_list_get_source (list); gtd_object_set_ready (GTD_OBJECT (manager), FALSE); if (e_source_get_remote_deletable (source)) { e_source_remote_delete (source, NULL, (GAsyncReadyCallback) gtd_manager__remote_delete_finished, manager); } else { e_source_remove (source, NULL, (GAsyncReadyCallback) gtd_manager__remove_source_finished, manager); } g_signal_emit (manager, signals[LIST_REMOVED], 0, list); } /** * gtd_manager_save_task_list: * @manager: a #GtdManager * @list: a #GtdTaskList * * Save or create @list. * * Returns: */ void gtd_manager_save_task_list (GtdManager *manager, GtdTaskList *list) { ESource *source; g_return_if_fail (GTD_IS_MANAGER (manager)); g_return_if_fail (GTD_IS_TASK_LIST (list)); g_return_if_fail (gtd_task_list_get_source (list)); source = gtd_task_list_get_source (list); gtd_object_set_ready (GTD_OBJECT (manager), FALSE); e_source_registry_commit_source (manager->priv->source_registry, source, NULL, (GAsyncReadyCallback) gtd_manager__commit_source_finished, manager); } /** * gtd_manager_get_goa_client: * @manager: a #GtdManager * * Retrieves the internal @GoaClient from @manager. %NULL doesn't mean * that the client is not ready, use @gtd_manager_is_goa_client_ready to * check that. * * Returns: (transfer none): the internal #GoaClient of @manager */ GoaClient* gtd_manager_get_goa_client (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return manager->priv->goa_client; } /** * gtd_manager_is_goa_client_ready: * * Checks whether @manager's internal #GoaClient is ready. Note that, * in the case of failure, it'll return %TRUE and @gtd_manager_get_goa_client * will return %NULL. * * Returns: %TRUE if @manager's internal #GoaClient is already * loaded, %FALSE otherwise. */ gboolean gtd_manager_is_goa_client_ready (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), FALSE); return manager->priv->goa_client_ready; } /** * gtd_manager_get_task_lists: * @manager: a #GtdManager * * Retrieves the list of #GtdTaskList already loaded. * * Returns: (transfer full): a newly allocated list of #GtdTaskList, or %NULL if none. */ GList* gtd_manager_get_task_lists (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return g_list_copy (manager->priv->task_lists); } /** * gtd_manager_get_storage_locations: * * Retrieves the list of available #GtdStorage. * * Returns: (transfer full): (type #GtdStorage): a newly allocated #GList of * #GtdStorage. Free with @g_list_free after use. */ GList* gtd_manager_get_storage_locations (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return g_list_copy (manager->priv->storage_locations); } /** * gtd_manager_get_default_storage: * @manager: a #GtdManager * * Retrieves the default storage location. Default is "local". * * Returns: (transfer none): the default storage. */ GtdStorage* gtd_manager_get_default_storage (GtdManager *manager) { GtdManagerPrivate *priv; GtdStorage *storage; gchar *storage_id; g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); priv = manager->priv; storage = NULL; storage_id = g_settings_get_string (priv->settings, "storage-location"); g_free (storage_id); return storage; } /** * gtd_manager_set_default_storage: * @manager: a #GtdManager * @default_storage: the default storage location. * * Sets the default storage location id. * * Returns: */ void gtd_manager_set_default_storage (GtdManager *manager, GtdStorage *default_storage) { g_return_if_fail (GTD_IS_MANAGER (manager)); if (!gtd_storage_get_is_default (default_storage)) { GtdStorage *previus_default = NULL; GList *l; g_settings_set_string (manager->priv->settings, "storage-location", gtd_storage_get_id (default_storage)); for (l = manager->priv->storage_locations; l != NULL; l = l->next) { if (gtd_storage_get_is_default (l->data)) previus_default = l->data; gtd_storage_set_is_default (l->data, l->data == default_storage); } g_signal_emit (manager, signals[DEFAULT_STORAGE_CHANGED], 0, default_storage, previus_default); } } /** * gtd_manager_get_settings: * @manager: a #GtdManager * * Retrieves the internal #GSettings from @manager. * * Returns: (transfer none): the internal #GSettings of @manager */ GSettings* gtd_manager_get_settings (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return manager->priv->settings; } /** * gtd_manager_get_is_first_run: * @manager: a #GtdManager * * Retrieves the 'first-run' setting. * * Returns: %TRUE if GNOME To Do was never run before, %FALSE otherwise. */ gboolean gtd_manager_get_is_first_run (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), FALSE); return g_settings_get_boolean (manager->priv->settings, "first-run"); } /** * gtd_manager_set_is_first_run: * @manager: a #GtdManager * @is_first_run: %TRUE to make it first run, %FALSE otherwise. * * Sets the 'first-run' setting. * * Returns: */ void gtd_manager_set_is_first_run (GtdManager *manager, gboolean is_first_run) { g_return_if_fail (GTD_IS_MANAGER (manager)); g_settings_set_boolean (manager->priv->settings, "first-run", is_first_run); } /** * gtd_manager_get_scheduled_list: * @manager: a #GtdManager * * Retrieves the internal #GtdTaskList that holds scheduled tasks. * * Returns: (transfer none): the internal #GtdTaskList with scheduled * tasks */ GtdTaskList* gtd_manager_get_scheduled_list (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return manager->priv->scheduled_tasks_list; } /** * gtd_manager_get_today_list: * @manager: a #GtdManager * * Retrieves the internal #GtdTaskList that holds tasks for today. * * Returns: (transfer none): the internal #GtdTaskList with today's * tasks */ GtdTaskList* gtd_manager_get_today_list (GtdManager *manager) { g_return_val_if_fail (GTD_IS_MANAGER (manager), NULL); return manager->priv->today_tasks_list; } gnome-todo-3.18.1/src/gtd-manager.h000066400000000000000000000070551260744630400170170ustar00rootroot00000000000000/* gtd-manager.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_MANAGER_H #define GTD_MANAGER_H #include #include "gtd-object.h" #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_MANAGER (gtd_manager_get_type()) G_DECLARE_FINAL_TYPE (GtdManager, gtd_manager, GTD, MANAGER, GtdObject) GtdManager* gtd_manager_new (void); ESourceRegistry* gtd_manager_get_source_registry (GtdManager *manager); GList* gtd_manager_get_task_lists (GtdManager *manager); GList* gtd_manager_get_storage_locations (GtdManager *manager); /* Task lists */ void gtd_manager_create_task_list (GtdManager *manager, GtdTaskList *list); void gtd_manager_remove_task_list (GtdManager *manager, GtdTaskList *list); void gtd_manager_save_task_list (GtdManager *manager, GtdTaskList *list); /* Tasks */ void gtd_manager_create_task (GtdManager *manager, GtdTask *task); void gtd_manager_remove_task (GtdManager *manager, GtdTask *task); void gtd_manager_update_task (GtdManager *manager, GtdTask *task); /* Special lists */ GtdTaskList* gtd_manager_get_scheduled_list (GtdManager *manager); GtdTaskList* gtd_manager_get_today_list (GtdManager *manager); /* Online accounts */ GoaClient* gtd_manager_get_goa_client (GtdManager *manager); gboolean gtd_manager_is_goa_client_ready (GtdManager *manager); /* Settings */ GtdStorage* gtd_manager_get_default_storage (GtdManager *manager); void gtd_manager_set_default_storage (GtdManager *manager, GtdStorage *default_storage); GSettings* gtd_manager_get_settings (GtdManager *manager); gboolean gtd_manager_get_is_first_run (GtdManager *manager); void gtd_manager_set_is_first_run (GtdManager *manager, gboolean is_first_run); G_END_DECLS #endif /* GTD_MANAGER_H */ gnome-todo-3.18.1/src/gtd-object.c000066400000000000000000000143651260744630400166500ustar00rootroot00000000000000/* gtd-object.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-object.h" #include typedef struct { gboolean ready; gchar *uid; } GtdObjectPrivate; G_DEFINE_TYPE_WITH_PRIVATE (GtdObject, gtd_object, G_TYPE_OBJECT) enum { PROP_0, PROP_READY, PROP_UID, LAST_PROP }; static const gchar* gtd_object_real_get_uid (GtdObject *object) { GtdObjectPrivate *priv; g_return_val_if_fail (GTD_IS_OBJECT (object), NULL); priv = gtd_object_get_instance_private (object); return priv->uid; } static void gtd_object_real_set_uid (GtdObject *object, const gchar *uid) { GtdObjectPrivate *priv; g_assert (GTD_IS_OBJECT (object)); priv = gtd_object_get_instance_private (object); if (g_strcmp0 (priv->uid, uid) != 0) { if (priv->uid) g_free (priv->uid); priv->uid = g_strdup (uid); g_object_notify (G_OBJECT (object), "uid"); } } static void gtd_object_finalize (GObject *object) { GtdObject *self = GTD_OBJECT (object); GtdObjectPrivate *priv = gtd_object_get_instance_private (self); if (priv->uid) g_free (priv->uid); G_OBJECT_CLASS (gtd_object_parent_class)->finalize (object); } static void gtd_object_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdObject *self = GTD_OBJECT (object); GtdObjectPrivate *priv = gtd_object_get_instance_private (self); switch (prop_id) { case PROP_READY: g_value_set_boolean (value, priv->ready); break; case PROP_UID: g_value_set_string (value, GTD_OBJECT_GET_CLASS (self)->get_uid (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_object_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdObject *self = GTD_OBJECT (object); switch (prop_id) { case PROP_READY: gtd_object_set_ready (self, g_value_get_boolean (value)); break; case PROP_UID: GTD_OBJECT_GET_CLASS (self)->set_uid (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_object_class_init (GtdObjectClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); klass->get_uid = gtd_object_real_get_uid; klass->set_uid = gtd_object_real_set_uid; object_class->finalize = gtd_object_finalize; object_class->get_property = gtd_object_get_property; object_class->set_property = gtd_object_set_property; /** * GtdObject::uid: * * The unique identified of the object, set by the backend. */ g_object_class_install_property ( object_class, PROP_UID, g_param_spec_string ("uid", "Unique identifier of the object", "The unique identifier of the object, defined by the backend", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * GtdObject::ready: * * Whether the object is ready or not. */ g_object_class_install_property ( object_class, PROP_READY, g_param_spec_boolean ("ready", "Ready state of the object", "Whether the object is marked as ready or not", TRUE, G_PARAM_READWRITE)); } static void gtd_object_init (GtdObject *self) { GtdObjectPrivate *priv = gtd_object_get_instance_private (self); priv->ready = TRUE; } /** * gtd_object_new: * @uid: unique identifier of the object * * Creates a new #GtdObject object. * * Returns: (transfer full): a new #GtdObject */ GtdObject* gtd_object_new (const gchar *uid) { return g_object_new (GTD_TYPE_OBJECT, "uid", uid, NULL); } /** * gtd_object_get_uid: * @object: a #GtdObject * * Retrieves the internal unique identifier of @object. * * Returns: (transfer none): the unique identifier of @object. Do * not free after usage. */ const gchar* gtd_object_get_uid (GtdObject *object) { GtdObjectClass *class; g_return_val_if_fail (GTD_IS_OBJECT (object), NULL); class = GTD_OBJECT_GET_CLASS (object); g_assert (class); return class->get_uid (object); } /** * gtd_object_set_uid: * * Sets the unique identifier of @object to @uid. Only * a #GtdBackend should do it. * * Returns: */ void gtd_object_set_uid (GtdObject *object, const gchar *uid) { GtdObjectClass *class; g_return_if_fail (GTD_IS_OBJECT (object)); class = GTD_OBJECT_GET_CLASS (object); g_assert (class); class->set_uid (object, uid); } /** * gtd_object_get_ready: * @object: a #GtdObject * * Whether @object is ready. * * Returns: %TRUE if @object is ready, %FALSE otherwise. */ gboolean gtd_object_get_ready (GtdObject *object) { GtdObjectPrivate *priv; g_return_val_if_fail (GTD_IS_OBJECT (object), FALSE); priv = gtd_object_get_instance_private (object); return priv->ready; } /** * gtd_object_set_ready: * * Sets the GtdObject::ready property to @ready. * * Returns: */ void gtd_object_set_ready (GtdObject *object, gboolean ready) { GtdObjectPrivate *priv; g_assert (GTD_IS_OBJECT (object)); priv = gtd_object_get_instance_private (object); if (priv->ready != ready) { priv->ready = ready; g_object_notify (G_OBJECT (object), "ready"); } } gnome-todo-3.18.1/src/gtd-object.h000066400000000000000000000035541260744630400166530ustar00rootroot00000000000000/* gtd-object.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_OBJECT_H #define GTD_OBJECT_H #include #include "gtd-types.h" G_BEGIN_DECLS #define GTD_TYPE_OBJECT (gtd_object_get_type()) G_DECLARE_DERIVABLE_TYPE (GtdObject, gtd_object, GTD, OBJECT, GObject) struct _GtdObjectClass { GObjectClass parent; /* public */ const gchar* (* get_uid) (GtdObject *object); void (* set_uid) (GtdObject *object, const gchar *uid); }; GtdObject* gtd_object_new (const gchar *uid); const gchar* gtd_object_get_uid (GtdObject *object); void gtd_object_set_uid (GtdObject *object, const gchar *uid); gboolean gtd_object_get_ready (GtdObject *object); void gtd_object_set_ready (GtdObject *object, gboolean ready); G_END_DECLS #endif /* GTD_OBJECT_H */ gnome-todo-3.18.1/src/gtd-task-list-item.c000066400000000000000000000422301260744630400202410ustar00rootroot00000000000000/* gtd-task-list-item.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-enum-types.h" #include "gtd-task.h" #include "gtd-task-list.h" #include "gtd-task-list-item.h" #include typedef struct { GtkImage *icon_image; GtkLabel *subtitle_label; GtkLabel *title_label; GtkSpinner *spinner; /* data */ GtdTaskList *list; GtdWindowMode mode; /* flags */ gint selected : 1; } GtdTaskListItemPrivate; struct _GtdTaskListItem { GtkFlowBoxChild parent; /**/ GtdTaskListItemPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdTaskListItem, gtd_task_list_item, GTK_TYPE_FLOW_BOX_CHILD) #define LUMINANCE(c) (0.299 * c->red + 0.587 * c->green + 0.114 * c->blue) #define THUMBNAIL_SIZE 192 #define CHECK_SIZE 40 enum { PROP_0, PROP_MODE, PROP_SELECTED, PROP_TASK_LIST, LAST_PROP }; static cairo_surface_t* gtd_task_list_item__render_thumbnail (GtdTaskListItem *item) { PangoFontDescription *font_desc; GtkStyleContext *context; cairo_surface_t *surface; GtkStateFlags state; PangoLayout *layout; GtdTaskList *list; GdkPixbuf *thumbnail; GtkBorder margin; GtkBorder padding; GdkRGBA *color; cairo_t *cr; GError *error = NULL; GList *tasks; /* TODO: review size here, maybe not hardcoded */ list = item->priv->list; surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, THUMBNAIL_SIZE, THUMBNAIL_SIZE); cr = cairo_create (surface); /* * We'll draw the task names according to the font size, margin & padding * specified by the .thumbnail class. With that, it can be adapted to any * other themes. */ context = gtk_widget_get_style_context (GTK_WIDGET (item)); state = gtk_widget_get_state_flags (GTK_WIDGET (item)); gtk_style_context_save (context); gtk_style_context_add_class (context, "thumbnail"); /* Draw the thumbnail image */ thumbnail = gdk_pixbuf_new_from_resource ("/org/gnome/todo/theme/bg.svg", &error); if (error) { g_warning ("Error loading thumbnail: %s", error->message); g_error_free (error); goto out; } gtk_render_icon (context, cr, thumbnail, 0.0, 0.0); /* Draw the list's background color */ color = gtd_task_list_get_color (list); gdk_cairo_set_source_rgba (cr, color); cairo_rectangle (cr, 33.0, 9.0, 126.0, 174.0); cairo_fill (cr); /* Draw the first tasks from the list */ gtk_style_context_get (context, state, "font", &font_desc, NULL); gtk_style_context_get_margin (context, state, &margin); gtk_style_context_get_padding (context, state, &padding); layout = pango_cairo_create_layout (cr); tasks = gtd_task_list_get_tasks (list); /* * If the list color is way too dark, we draw the task names in a light * font color. */ if (LUMINANCE (color) < 0.5) gtk_style_context_add_class (context, "dark"); /* * Sort the list, so that the first tasks are similar to what * the user will see when selecting the list. */ tasks = g_list_sort (tasks, (GCompareFunc) gtd_task_compare); pango_layout_set_font_description (layout, font_desc); pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); pango_layout_set_width (layout, (126 - margin.left - margin.right) * PANGO_SCALE); /* * If the list exists and it's first element is a completed task, * we know for sure (since the list is already sorted) that there's * no undone tasks here. */ if (tasks && !gtd_task_get_complete (tasks->data)) { /* Draw the task name for each selected row. */ gdouble x, y; GList *l; x = 33.0 + margin.left; y = 9.0 + margin.top; for (l = tasks; l != NULL; l = l->next) { gint font_height; /* Don't render completed tasks */ if (gtd_task_get_complete (l->data)) continue; y += padding.top; pango_layout_set_text (layout, gtd_task_get_title (l->data), -1); pango_layout_get_pixel_size (layout, NULL, &font_height); /* * If we reach the last visible row, it should draw a * "…" mark and stop drawing anything else */ if (y + (padding.top + font_height + padding.bottom) + margin.bottom > 174) { pango_layout_set_text (layout, "…", -1); gtk_render_layout (context, cr, x, y, layout); break; } gtk_render_layout (context, cr, x, y, layout); y += font_height + padding.bottom; } g_list_free (tasks); } else { /* * If there's no task available, draw a "No tasks" string at * the middle of the list thumbnail. */ gdouble y; gint font_height; pango_layout_set_text (layout, _("No tasks"), -1); pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER); pango_layout_get_pixel_size (layout, NULL, &font_height); y = (THUMBNAIL_SIZE - font_height) / 2.0; gtk_render_layout (context, cr, 33.0 + margin.left, y, layout); } pango_font_description_free (font_desc); g_object_unref (layout); /* Draws the selection checkbox */ if (item->priv->mode == GTD_WINDOW_MODE_SELECTION) { gtk_style_context_add_class (context, GTK_STYLE_CLASS_CHECK); if (item->priv->selected) gtk_style_context_set_state (context, GTK_STATE_FLAG_CHECKED); gtk_render_check (context, cr, THUMBNAIL_SIZE - CHECK_SIZE * 1.5, THUMBNAIL_SIZE - CHECK_SIZE, CHECK_SIZE, CHECK_SIZE); } gdk_rgba_free (color); out: gtk_style_context_restore (context); cairo_destroy (cr); return surface; } static void gtd_task_list_item__update_thumbnail (GtdTaskListItem *item) { GtdTaskListItemPrivate *priv; cairo_surface_t *surface; priv = item->priv; surface = gtd_task_list_item__render_thumbnail (item); gtk_image_set_from_surface (GTK_IMAGE (priv->icon_image), surface); cairo_surface_destroy (surface); } static void gtd_task_list_item__task_changed (GtdTaskList *list, GtdTask *task, gpointer user_data) { g_return_if_fail (GTD_IS_TASK_LIST_ITEM (user_data)); if (!gtd_task_get_complete (task)) gtd_task_list_item__update_thumbnail (GTD_TASK_LIST_ITEM (user_data)); } static void gtd_task_list_item__notify_ready (GtdTaskListItem *item, GParamSpec *pspec, gpointer user_data) { gtd_task_list_item__update_thumbnail (item); } GtkWidget* gtd_task_list_item_new (GtdTaskList *list) { return g_object_new (GTD_TYPE_TASK_LIST_ITEM, "task-list", list, NULL); } static gboolean gtd_task_list_item__button_press_event_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data) { GtdTaskListItemPrivate *priv; GdkEventButton *button_ev; button_ev = (GdkEventButton*) event; priv = GTD_TASK_LIST_ITEM (user_data)->priv; if (button_ev->button == 3) { if (priv->mode == GTD_WINDOW_MODE_NORMAL) { g_object_set (user_data, "mode", GTD_WINDOW_MODE_SELECTION, "selected", TRUE, NULL); } else { gtd_task_list_item_set_selected (GTD_TASK_LIST_ITEM (user_data), !priv->selected); } return GDK_EVENT_STOP; } return GDK_EVENT_PROPAGATE; } static void gtd_task_list_item_state_flags_changed (GtkWidget *item, GtkStateFlags flags) { if (GTK_WIDGET_CLASS (gtd_task_list_item_parent_class)->state_flags_changed) GTK_WIDGET_CLASS (gtd_task_list_item_parent_class)->state_flags_changed (item, flags); gtd_task_list_item__update_thumbnail (GTD_TASK_LIST_ITEM (item)); } static void gtd_task_list_item_finalize (GObject *object) { G_OBJECT_CLASS (gtd_task_list_item_parent_class)->finalize (object); } static void gtd_task_list_item_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdTaskListItem *self = GTD_TASK_LIST_ITEM (object); switch (prop_id) { case PROP_MODE: g_value_set_enum (value, self->priv->mode); break; case PROP_SELECTED: g_value_set_boolean (value, self->priv->selected); break; case PROP_TASK_LIST: g_value_set_object (value, self->priv->list); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_item_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdTaskListItem *self = GTD_TASK_LIST_ITEM (object); GtdTaskListItemPrivate *priv = self->priv; switch (prop_id) { case PROP_MODE: priv->mode = g_value_get_enum (value); gtd_task_list_item__update_thumbnail (self); g_object_notify (object, "mode"); break; case PROP_SELECTED: gtd_task_list_item_set_selected (self, g_value_get_boolean (value)); break; case PROP_TASK_LIST: priv->list = g_value_get_object (value); g_object_bind_property (priv->list, "name", priv->title_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (priv->list, "origin", priv->subtitle_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (priv->list, "ready", priv->spinner, "visible", G_BINDING_DEFAULT | G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE); g_object_bind_property (priv->list, "ready", priv->spinner, "active", G_BINDING_DEFAULT | G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE); g_signal_connect_swapped (priv->list, "notify::ready", G_CALLBACK (gtd_task_list_item__notify_ready), self); g_signal_connect_swapped (priv->list, "notify::color", G_CALLBACK (gtd_task_list_item__update_thumbnail), self); g_signal_connect (priv->list, "task-added", G_CALLBACK (gtd_task_list_item__task_changed), self); g_signal_connect (priv->list, "task-removed", G_CALLBACK (gtd_task_list_item__task_changed), self); g_signal_connect (priv->list, "task-updated", G_CALLBACK (gtd_task_list_item__task_changed), self); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_item_class_init (GtdTaskListItemClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_task_list_item_finalize; object_class->get_property = gtd_task_list_item_get_property; object_class->set_property = gtd_task_list_item_set_property; widget_class->state_flags_changed = gtd_task_list_item_state_flags_changed; /** * GtdTaskListItem::mode: * * The parent source of the list. */ g_object_class_install_property ( object_class, PROP_MODE, g_param_spec_enum ("mode", "Mode of this item", "The mode of this item, inherited from the parent's mode", GTD_TYPE_WINDOW_MODE, GTD_WINDOW_MODE_NORMAL, G_PARAM_READWRITE)); /** * GtdTaskListItem::selected: * * Whether this item is selected when in %GTD_WINDOW_MODE_SELECTION. */ g_object_class_install_property ( object_class, PROP_SELECTED, g_param_spec_boolean ("selected", "Whether the task list is selected", "Whether the task list is selected when in selection mode", FALSE, G_PARAM_READWRITE)); /** * GtdTaskListItem::task-list: * * The parent source of the list. */ g_object_class_install_property ( object_class, PROP_TASK_LIST, g_param_spec_object ("task-list", "Task list of the item", "The task list associated with this item", GTD_TYPE_TASK_LIST, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /* template class */ gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/task-list-item.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListItem, icon_image); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListItem, spinner); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListItem, subtitle_label); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListItem, title_label); gtk_widget_class_bind_template_callback (widget_class, gtd_task_list_item__button_press_event_cb); } static void gtd_task_list_item_init (GtdTaskListItem *self) { self->priv = gtd_task_list_item_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_task_list_item_get_list: * @item: a #GtdTaskListItem * * Retrieves the internal #GtdTaskList from @item. * * Returns: (transfer none): the internal #GtdTaskList from @item */ GtdTaskList* gtd_task_list_item_get_list (GtdTaskListItem *item) { g_return_val_if_fail (GTD_IS_TASK_LIST_ITEM (item), NULL); return item->priv->list; } /** * gtd_task_list_item_get_selected: * @item: a #GtdTaskListItem * * Retrieves whether @item is selected or not. * * Returns: %TRUE if @item is selected, %FALSE otherwise */ gboolean gtd_task_list_item_get_selected (GtdTaskListItem *item) { g_return_val_if_fail (GTD_IS_TASK_LIST_ITEM (item), FALSE); return item->priv->selected; } /** * gtd_task_list_item_set_selected: * @item: a #GtdTaskListItem * @selected: %TRUE if @item is selected, %FALSE otherwise * * Sets whether @item is selected or not. * * Returns: */ void gtd_task_list_item_set_selected (GtdTaskListItem *item, gboolean selected) { GtdTaskListItemPrivate *priv; g_return_if_fail (GTD_IS_TASK_LIST_ITEM (item)); priv = item->priv; if (priv->selected != selected) { priv->selected = selected; gtd_task_list_item__update_thumbnail (item); g_object_notify (G_OBJECT (item), "selected"); } } gnome-todo-3.18.1/src/gtd-task-list-item.h000066400000000000000000000030301260744630400202410ustar00rootroot00000000000000/* gtd-task-list-item.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TASK_LIST_ITEM_H #define GTD_TASK_LIST_ITEM_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_TASK_LIST_ITEM (gtd_task_list_item_get_type()) G_DECLARE_FINAL_TYPE (GtdTaskListItem, gtd_task_list_item, GTD, TASK_LIST_ITEM, GtkFlowBoxChild) GtkWidget* gtd_task_list_item_new (GtdTaskList *list); GtdTaskList* gtd_task_list_item_get_list (GtdTaskListItem *item); gboolean gtd_task_list_item_get_selected (GtdTaskListItem *item); void gtd_task_list_item_set_selected (GtdTaskListItem *item, gboolean selected); G_END_DECLS #endif /* GTD_TASK_LIST_ITEM_H */ gnome-todo-3.18.1/src/gtd-task-list-view.c000066400000000000000000001101241260744630400202530ustar00rootroot00000000000000/* gtd-task-list-view.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-arrow-frame.h" #include "gtd-edit-pane.h" #include "gtd-task-list-view.h" #include "gtd-manager.h" #include "gtd-notification.h" #include "gtd-task.h" #include "gtd-task-list.h" #include "gtd-task-row.h" #include "gtd-window.h" #include #include #include typedef struct { GtdArrowFrame *arrow_frame; GtdEditPane *edit_pane; GtkRevealer *edit_revealer; GtkListBox *listbox; GtdTaskRow *new_task_row; GtkRevealer *revealer; GtkImage *done_image; GtkLabel *done_label; GtkScrolledWindow *viewport; GtkStack *stack; /* internal */ gboolean can_toggle; gint complete_tasks; gboolean readonly; gboolean show_list_name; gboolean show_completed; GList *list; GtdTaskList *task_list; GtdManager *manager; /* color provider */ GtkCssProvider *color_provider; /* action */ GActionGroup *action_group; } GtdTaskListViewPrivate; struct _GtdTaskListView { GtkOverlay parent; /**/ GtdTaskListViewPrivate *priv; }; #define COLOR_TEMPLATE "GtkViewport {background-color: %s;}" #define LUMINANCE(c) (0.299 * c->red + 0.587 * c->green + 0.114 * c->blue) #define TASK_REMOVED_NOTIFICATION_ID "task-removed-id" /* prototypes */ static void gtd_task_list_view__clear_completed_tasks (GSimpleAction *simple, GVariant *parameter, gpointer user_data); static void gtd_task_list_view__remove_row_for_task (GtdTaskListView *view, GtdTask *task); static void gtd_task_list_view__remove_task (GtdTaskListView *view, GtdTask *task); static void gtd_task_list_view__task_completed (GObject *object, GParamSpec *spec, gpointer user_data); static void gtd_task_list_view__update_done_label (GtdTaskListView *view); G_DEFINE_TYPE_WITH_PRIVATE (GtdTaskListView, gtd_task_list_view, GTK_TYPE_OVERLAY) static const GActionEntry gtd_task_list_view_entries[] = { { "clear-completed-tasks", gtd_task_list_view__clear_completed_tasks }, }; typedef struct { GtdTaskListView *view; GtdTask *task; } RemoveTaskData; enum { PROP_0, PROP_MANAGER, PROP_READONLY, PROP_SHOW_COMPLETED, PROP_SHOW_LIST_NAME, LAST_PROP }; static void remove_task_action (GtdNotification *notification, gpointer user_data) { RemoveTaskData *data = user_data; gtd_manager_remove_task (data->view->priv->manager, data->task); g_free (data); } static void undo_remove_task_action (GtdNotification *notification, gpointer user_data) { GtdTaskListViewPrivate *priv; RemoveTaskData *data; GtdTaskList *list; data = user_data; priv = data->view->priv; list = gtd_task_get_list (data->task); /* * This will emit GtdTaskList::task-added and we'll readd * to the list. */ gtd_task_list_save_task (list, data->task); if (priv->task_list != list) gtd_task_list_save_task (priv->task_list, data->task); g_free (data); } static void update_font_color (GtdTaskListView *view) { GtdTaskListViewPrivate *priv; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); priv = view->priv; if (priv->task_list) { GtkStyleContext *context; GdkRGBA *color; context = gtk_widget_get_style_context (GTK_WIDGET (view)); color = gtd_task_list_get_color (priv->task_list); if (LUMINANCE (color) < 0.5) gtk_style_context_add_class (context, "dark"); else gtk_style_context_remove_class (context, "dark"); gdk_rgba_free (color); } } static void gtd_task_list_view__clear_completed_tasks (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GtdTaskListView *view; GList *tasks; GList *l; view = GTD_TASK_LIST_VIEW (user_data); tasks = gtd_task_list_view_get_list (view); for (l = tasks; l != NULL; l = l->next) { if (gtd_task_get_complete (l->data)) { GtdTaskList *list; list = gtd_task_get_list (l->data); gtd_task_list_remove_task (list, l->data); gtd_manager_remove_task (view->priv->manager, l->data); } } gtd_task_list_view__update_done_label (view); g_list_free (tasks); } static void gtd_task_list_view__update_empty_state (GtdTaskListView *view) { GtdTaskListViewPrivate *priv; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); priv = view->priv; /* * Here it explicitly check if it's readonly because we don't * want to show the empty state for lists that can be edited. If * we show the empty state there, the New Task row won't be show, * and the user will get stuck. * * The empty state is meant to be visible from Today & Schedule * task lists. */ if (priv->readonly) { gboolean is_empty; GList *tasks; GList *l; is_empty = TRUE; tasks = gtd_task_list_view_get_list (view); for (l = tasks; l != NULL; l = l->next) { if (!gtd_task_get_complete (l->data) || (priv->show_completed && gtd_task_get_complete (l->data))) { is_empty = FALSE; break; } } gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), is_empty ? "empty" : "list"); g_list_free (tasks); } } static void gtd_task_list_view__remove_task_cb (GtdEditPane *pane, GtdTask *task, gpointer user_data) { GtdTaskListViewPrivate *priv; GtdNotification *notification; RemoveTaskData *data; GtdTaskList *list; GtdWindow *window; gchar *text; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (user_data)); priv = GTD_TASK_LIST_VIEW (user_data)->priv; text = g_strdup_printf (_("Task %s removed"), gtd_task_get_title (task)); window = GTD_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (user_data))); list = gtd_task_get_list (task); data = g_new0 (RemoveTaskData, 1); data->view = user_data; data->task = task; /* Remove the task from the list */ gtd_task_list_remove_task (list, task); /* * When we're dealing with the special lists (Today & Scheduled), * the task's list is different from the current list. We want to * remove the task from ~both~ lists. */ if (priv->task_list != list) gtd_task_list_remove_task (priv->task_list, task); gtd_task_list_view__remove_row_for_task (GTD_TASK_LIST_VIEW (user_data), task); gtk_revealer_set_reveal_child (priv->edit_revealer, FALSE); /* Notify about the removal */ notification = gtd_notification_new (text, 7500.0); gtd_notification_set_primary_action (notification, (GtdNotificationActionFunc) remove_task_action, data); gtd_notification_set_secondary_action (notification, _("Undo"), (GtdNotificationActionFunc) undo_remove_task_action, data); gtd_window_notify (window, notification); g_free (text); } static void gtd_task_list_view__edit_task_finished (GtdEditPane *pane, GtdTask *task, gpointer user_data) { GtdTaskListViewPrivate *priv; g_return_if_fail (GTD_IS_TASK (task)); g_return_if_fail (GTD_IS_EDIT_PANE (pane)); g_return_if_fail (GTD_IS_TASK_LIST_VIEW (user_data)); priv = GTD_TASK_LIST_VIEW (user_data)->priv; gtk_revealer_set_reveal_child (priv->edit_revealer, FALSE); gtd_task_save (task); gtd_manager_update_task (priv->manager, task); gtd_task_list_save_task (priv->task_list, task); gtk_list_box_invalidate_sort (priv->listbox); } static void gtd_task_list_view__color_changed (GObject *object, GParamSpec *spec, gpointer user_data) { GtdTaskListViewPrivate *priv = GTD_TASK_LIST_VIEW (user_data)->priv; GdkRGBA *color; gchar *color_str; gchar *parsed_css; /* Add the color to provider */ color = gtd_task_list_get_color (GTD_TASK_LIST (object)); color_str = gdk_rgba_to_string (color); parsed_css = g_strdup_printf (COLOR_TEMPLATE, color_str); gtk_css_provider_load_from_data (priv->color_provider, parsed_css, -1, NULL); update_font_color (GTD_TASK_LIST_VIEW (user_data)); gdk_rgba_free (color); g_free (color_str); } static void gtd_task_list_view__update_done_label (GtdTaskListView *view) { gchar *new_label; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); gtk_revealer_set_reveal_child (GTK_REVEALER (view->priv->revealer), view->priv->complete_tasks > 0); new_label = g_strdup_printf ("%s (%d)", _("Done"), view->priv->complete_tasks); gtk_label_set_label (view->priv->done_label, new_label); g_free (new_label); } static gboolean can_toggle_show_completed (GtdTaskListView *view) { view->priv->can_toggle = TRUE; return G_SOURCE_REMOVE; } static void gtd_task_list_view__done_button_clicked (GtkButton *button, gpointer user_data) { GtdTaskListView *view = GTD_TASK_LIST_VIEW (user_data); gboolean show_completed; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); if (!view->priv->can_toggle) return; /* * The can_toggle bitfield is needed because the user * can click mindlessly the Done button, while the row * animations are not finished. While the animation is * running, we ignore other clicks. */ view->priv->can_toggle = FALSE; show_completed = view->priv->show_completed; gtd_task_list_view_set_show_completed (view, !show_completed); g_timeout_add (205, (GSourceFunc) can_toggle_show_completed, user_data); } static gint gtd_task_list_view__listbox_sort_func (GtdTaskRow *row1, GtdTaskRow *row2, gpointer user_data) { g_return_val_if_fail (GTD_IS_TASK_ROW (row1), 0); g_return_val_if_fail (GTD_IS_TASK_ROW (row2), 0); if (gtd_task_row_get_new_task_mode (row1)) return 1; else if (gtd_task_row_get_new_task_mode (row2)) return -1; else return gtd_task_compare (gtd_task_row_get_task (row1), gtd_task_row_get_task (row2)); } static void gtd_task_list_view__clear_list (GtdTaskListView *view) { GList *children; GList *l; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); view->priv->complete_tasks = 0; gtd_arrow_frame_set_row (view->priv->arrow_frame, NULL); children = gtk_container_get_children (GTK_CONTAINER (view->priv->listbox)); for (l = children; l != NULL; l = l->next) { if (l->data != view->priv->new_task_row) { g_signal_handlers_disconnect_by_func (gtd_task_row_get_task (l->data), gtd_task_list_view__task_completed, view); gtk_widget_destroy (l->data); } } gtk_revealer_set_reveal_child (view->priv->revealer, FALSE); gtk_revealer_set_reveal_child (view->priv->edit_revealer, FALSE); g_list_free (children); } static void gtd_task_list_view__row_activated (GtkListBox *listbox, GtdTaskRow *row, gpointer user_data) { GtdTaskListViewPrivate *priv = GTD_TASK_LIST_VIEW (user_data)->priv; if (row == priv->new_task_row) return; gtd_edit_pane_set_task (priv->edit_pane, gtd_task_row_get_task (row)); gtk_revealer_set_reveal_child (priv->edit_revealer, TRUE); gtd_arrow_frame_set_row (priv->arrow_frame, row); } static void gtd_task_list_view__add_task (GtdTaskListView *view, GtdTask *task) { GtdTaskListViewPrivate *priv = view->priv; GtkWidget *new_row; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); g_return_if_fail (GTD_IS_TASK (task)); new_row = gtd_task_row_new (task); gtd_task_row_set_list_name_visible (GTD_TASK_ROW (new_row), priv->show_list_name); if (!gtd_task_get_complete (task)) { gtk_list_box_insert (priv->listbox, new_row, 0); gtd_task_row_reveal (GTD_TASK_ROW (new_row)); } else { priv->complete_tasks++; gtd_task_list_view__update_done_label (view); if (!gtk_revealer_get_reveal_child (priv->revealer)) gtk_revealer_set_reveal_child (priv->revealer, TRUE); } /* Check if it should show the empty state */ gtd_task_list_view__update_empty_state (view); } static void gtd_task_list_view__remove_row_for_task (GtdTaskListView *view, GtdTask *task) { GtdTaskListViewPrivate *priv = view->priv; GList *children; GList *l; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); g_return_if_fail (GTD_IS_TASK (task)); children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { if (!gtd_task_row_get_new_task_mode (l->data) && gtd_task_row_get_task (l->data) == task) { gtd_task_row_destroy (l->data); } } g_list_free (children); } static void gtd_task_list_view__remove_task (GtdTaskListView *view, GtdTask *task) { /* Remove the correspondent row */ gtd_task_list_view__remove_row_for_task (view, task); /* Update the "Done" label */ if (gtd_task_get_complete (task)) { view->priv->complete_tasks--; gtd_task_list_view__update_done_label (view); } /* Check if it should show the empty state */ gtd_task_list_view__update_empty_state (view); } static void gtd_task_list_view__task_completed (GObject *object, GParamSpec *spec, gpointer user_data) { GtdTaskListViewPrivate *priv = GTD_TASK_LIST_VIEW (user_data)->priv; GtdTask *task = GTD_TASK (object); gboolean task_complete; g_return_if_fail (GTD_IS_TASK (object)); g_return_if_fail (GTD_IS_TASK_LIST_VIEW (user_data)); task_complete = gtd_task_get_complete (task); gtd_manager_update_task (priv->manager, task); gtd_task_list_save_task (gtd_task_get_list (task), task); if (task_complete) priv->complete_tasks++; else priv->complete_tasks--; /* * If we're editing the task and it get completed, hide the edit * pane and the task. */ if (task_complete && task == gtd_edit_pane_get_task (priv->edit_pane)) { gtk_revealer_set_reveal_child (priv->edit_revealer, FALSE); gtd_edit_pane_set_task (priv->edit_pane, NULL); } gtd_task_list_view__update_done_label (GTD_TASK_LIST_VIEW (user_data)); if (!priv->show_completed) { if (task_complete) gtd_task_list_view__remove_row_for_task (GTD_TASK_LIST_VIEW (user_data), task); else gtd_task_list_view__add_task (GTD_TASK_LIST_VIEW (user_data), task); } else { gtk_list_box_invalidate_sort (priv->listbox); } } static void gtd_task_list_view__task_added (GtdTaskList *list, GtdTask *task, gpointer user_data) { g_return_if_fail (GTD_IS_TASK_LIST_VIEW (user_data)); g_return_if_fail (GTD_IS_TASK_LIST (list)); g_return_if_fail (GTD_IS_TASK (task)); /* Add the new task to the list */ gtd_task_list_view__add_task (GTD_TASK_LIST_VIEW (user_data), task); g_signal_connect (task, "notify::complete", G_CALLBACK (gtd_task_list_view__task_completed), user_data); } static void gtd_task_list_view__create_task (GtdTaskRow *row, GtdTask *task, gpointer user_data) { GtdTaskListViewPrivate *priv = GTD_TASK_LIST_VIEW (user_data)->priv; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (user_data)); g_return_if_fail (GTD_IS_TASK_ROW (row)); g_return_if_fail (GTD_IS_TASK (task)); g_return_if_fail (!priv->readonly); g_return_if_fail (priv->task_list); /* * Newly created tasks are not aware of * their parent lists. */ gtd_task_set_list (task, priv->task_list); gtd_task_list_save_task (priv->task_list, task); gtd_manager_create_task (priv->manager, task); } static void gtd_task_list_view_finalize (GObject *object) { G_OBJECT_CLASS (gtd_task_list_view_parent_class)->finalize (object); } static void gtd_task_list_view_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdTaskListView *self = GTD_TASK_LIST_VIEW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; case PROP_SHOW_COMPLETED: g_value_set_boolean (value, self->priv->show_completed); break; case PROP_SHOW_LIST_NAME: g_value_set_boolean (value, self->priv->show_list_name); break; case PROP_READONLY: g_value_set_boolean (value, self->priv->readonly); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_view_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdTaskListView *self = GTD_TASK_LIST_VIEW (object); switch (prop_id) { case PROP_MANAGER: gtd_task_list_view_set_manager (self, g_value_get_object (value)); break; case PROP_SHOW_COMPLETED: gtd_task_list_view_set_show_completed (self, g_value_get_boolean (value)); break; case PROP_SHOW_LIST_NAME: gtd_task_list_view_set_show_list_name (self, g_value_get_boolean (value)); break; case PROP_READONLY: gtd_task_list_view_set_readonly (self, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_view_constructed (GObject *object) { GtdTaskListView *self = GTD_TASK_LIST_VIEW (object); G_OBJECT_CLASS (gtd_task_list_view_parent_class)->constructed (object); /* action_group */ self->priv->action_group = G_ACTION_GROUP (g_simple_action_group_new ()); g_action_map_add_action_entries (G_ACTION_MAP (self->priv->action_group), gtd_task_list_view_entries, G_N_ELEMENTS (gtd_task_list_view_entries), object); /* css provider */ self->priv->color_provider = gtk_css_provider_new (); gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET (self->priv->viewport)), GTK_STYLE_PROVIDER (self->priv->color_provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION + 2); /* show a nifty separator between lines */ gtk_list_box_set_sort_func (self->priv->listbox, (GtkListBoxSortFunc) gtd_task_list_view__listbox_sort_func, NULL, NULL); } static void gtd_task_list_view_map (GtkWidget *widget) { GtdTaskListViewPrivate *priv; GtkWidget *window; GTK_WIDGET_CLASS (gtd_task_list_view_parent_class)->map (widget); priv = GTD_TASK_LIST_VIEW (widget)->priv; window = gtk_widget_get_toplevel (widget); /* Clear previously added "list" actions */ gtk_widget_insert_action_group (window, "list", NULL); /* Add this instance's action group */ gtk_widget_insert_action_group (window, "list", priv->action_group); } static void gtd_task_list_view_class_init (GtdTaskListViewClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_task_list_view_finalize; object_class->constructed = gtd_task_list_view_constructed; object_class->get_property = gtd_task_list_view_get_property; object_class->set_property = gtd_task_list_view_set_property; widget_class->map = gtd_task_list_view_map; /** * GtdTaskListView::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this window's application", "The manager of the window's application", GTD_TYPE_MANAGER, G_PARAM_READWRITE)); /** * GtdTaskListView::readonly: * * Whether the list shows the "New Task" row or not. */ g_object_class_install_property ( object_class, PROP_READONLY, g_param_spec_boolean ("readonly", "Whether the list is readonly", "Whether the list is readonly, i.e. doesn't show the New Task row, or not", TRUE, G_PARAM_READWRITE)); /** * GtdTaskListView::show-list-name: * * Whether the task rows should show the list name. */ g_object_class_install_property ( object_class, PROP_SHOW_LIST_NAME, g_param_spec_boolean ("show-list-name", "Whether task rows show the list name", "Whether task rows show the list name at the end of the row", FALSE, G_PARAM_READWRITE)); /** * GtdTaskListView::show-completed: * * Whether completed tasks are shown. */ g_object_class_install_property ( object_class, PROP_SHOW_COMPLETED, g_param_spec_boolean ("show-completed", "Whether completed tasks are shown", "Whether completed tasks are visible or not", FALSE, G_PARAM_READWRITE)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/list-view.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, arrow_frame); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, edit_pane); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, edit_revealer); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, listbox); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, revealer); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, done_image); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, done_label); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, viewport); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskListView, stack); gtk_widget_class_bind_template_callback (widget_class, gtd_task_list_view__done_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_task_list_view__edit_task_finished); gtk_widget_class_bind_template_callback (widget_class, gtd_task_list_view__remove_task_cb); gtk_widget_class_bind_template_callback (widget_class, gtd_task_list_view__row_activated); } static void gtd_task_list_view_init (GtdTaskListView *self) { self->priv = gtd_task_list_view_get_instance_private (self); self->priv->readonly = TRUE; self->priv->can_toggle = TRUE; self->priv->new_task_row = GTD_TASK_ROW (gtd_task_row_new (NULL)); gtd_task_row_set_new_task_mode (self->priv->new_task_row, TRUE); g_signal_connect (self->priv->new_task_row, "create-task", G_CALLBACK (gtd_task_list_view__create_task), self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_task_list_view_new: * * Creates a new #GtdTaskListView * * Returns: a newly allocated #GtdTaskListView */ GtkWidget* gtd_task_list_view_new (void) { return g_object_new (GTD_TYPE_TASK_LIST_VIEW, NULL); } /** * gtd_task_list_view_get_list: * @view: a #GtdTaskListView * * Retrieves the list of tasks from @view. Note that, * if a #GtdTaskList is set, the #GtdTaskList's list * of task will be returned. * * Returns: (element-type GtdTaskList) (transfer full): the internal list of * tasks. Free with @g_list_free after use. */ GList* gtd_task_list_view_get_list (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), NULL); if (view->priv->task_list) return gtd_task_list_get_tasks (view->priv->task_list); else if (view->priv->list) return g_list_copy (view->priv->list); else return NULL; } /** * gtd_task_list_view_set_list: * @view: a #GtdTaskListView * * Copies the tasks from @list to @view. * * Returns: */ void gtd_task_list_view_set_list (GtdTaskListView *view, GList *list) { GList *l; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); if (view->priv->list) g_list_free (view->priv->list); /* clear previous tasks */ gtd_task_list_view__clear_list (view); view->priv->list = g_list_copy (list); for (l = view->priv->list; l != NULL; l = l->next) { gtd_task_list_view__add_task (view, l->data); g_signal_connect (l->data, "notify::complete", G_CALLBACK (gtd_task_list_view__task_completed), view); } /* Check if it should show the empty state */ gtd_task_list_view__update_empty_state (view); } /** * gtd_task_list_view_get_manager: * @view: a #GtdTaskListView * * Retrieves the #GtdManager from @view. * * Returns: (transfer none): the #GtdManager of @view */ GtdManager* gtd_task_list_view_get_manager (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), NULL); return view->priv->manager; } /** * gtd_task_list_view_set_manager: * @view: a #GtdTaskListView * @manager: a #GtdManager * * Sets the #GtdManager of @view. * * Returns: */ void gtd_task_list_view_set_manager (GtdTaskListView *view, GtdManager *manager) { g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); g_return_if_fail (GTD_IS_MANAGER (manager)); if (view->priv->manager != manager) { view->priv->manager = manager; gtd_edit_pane_set_manager (GTD_EDIT_PANE (view->priv->edit_pane), manager); g_object_notify (G_OBJECT (view), "manager"); } } /** * gtd_task_list_view_get_readonly: * @view: a #GtdTaskListView * * Gets the readonly state of @view. * * Returns: %TRUE if @view is readonly, %FALSE otherwise */ gboolean gtd_task_list_view_get_readonly (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), FALSE); return view->priv->readonly; } /** * gtd_task_list_view_set_readonly: * @view: a #GtdTaskListView * * Sets the GtdTaskListView::readonly property of @view. * * Returns: */ void gtd_task_list_view_set_readonly (GtdTaskListView *view, gboolean readonly) { g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); if (view->priv->readonly != readonly) { view->priv->readonly = readonly; /* Add/remove the new task row */ if (gtk_widget_get_parent (GTK_WIDGET (view->priv->new_task_row))) { if (readonly) { gtk_container_remove (GTK_CONTAINER (view->priv->listbox), GTK_WIDGET (view->priv->new_task_row)); gtk_widget_hide (GTK_WIDGET (view->priv->new_task_row)); } } else { if (!readonly) { gtk_list_box_insert (view->priv->listbox, GTK_WIDGET (view->priv->new_task_row), -1); gtk_widget_show (GTK_WIDGET (view->priv->new_task_row)); } } g_object_notify (G_OBJECT (view), "readonly"); } } /** * gtd_task_list_view_get_task_list: * @view: a #GtdTaskListView * * Retrieves the #GtdTaskList from @view, or %NULL if none was set. * * Returns: (transfer none): the @GtdTaskList of @view, or %NULL is * none was set. */ GtdTaskList* gtd_task_list_view_get_task_list (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), NULL); return view->priv->task_list; } /** * gtd_task_list_view_set_task_list: * @view: a #GtdTaskListView * @list: a #GtdTaskList * * Sets the internal #GtdTaskList of @view. * * Returns: */ void gtd_task_list_view_set_task_list (GtdTaskListView *view, GtdTaskList *list) { GtdTaskListViewPrivate *priv = view->priv; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); g_return_if_fail (GTD_IS_TASK_LIST (list)); if (priv->task_list != list) { GdkRGBA *color; gchar *color_str; gchar *parsed_css; GList *task_list; /* * Disconnect the old GtdTaskList signals. */ if (priv->task_list) { g_signal_handlers_disconnect_by_func (priv->task_list, gtd_task_list_view__task_added, view); g_signal_handlers_disconnect_by_func (priv->task_list, gtd_task_list_view__color_changed, view); } /* Add the color to provider */ color = gtd_task_list_get_color (list); color_str = gdk_rgba_to_string (color); parsed_css = g_strdup_printf (COLOR_TEMPLATE, color_str); g_debug ("setting style for provider: %s", parsed_css); gtk_css_provider_load_from_data (priv->color_provider, parsed_css, -1, NULL); gdk_rgba_free (color); g_free (color_str); /* Load task */ priv->task_list = list; update_font_color (view); /* Add the tasks from the list */ task_list = gtd_task_list_get_tasks (list); gtd_task_list_view_set_list (view, task_list); g_list_free (task_list); g_signal_connect (list, "task-added", G_CALLBACK (gtd_task_list_view__task_added), view); g_signal_connect_swapped (list, "task-removed", G_CALLBACK (gtd_task_list_view__remove_task), view); g_signal_connect (list, "notify::color", G_CALLBACK (gtd_task_list_view__color_changed), view); } } /** * gtd_task_list_view_get_show_list_name: * @view: a #GtdTaskListView * * Whether @view shows the tasks' list names. * * Returns: %TRUE if @view show the tasks' list names, %FALSE otherwise */ gboolean gtd_task_list_view_get_show_list_name (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), FALSE); return view->priv->show_list_name; } /** * gtd_task_list_view_set_show_list_name: * @view: a #GtdTaskListView * @show_list_name: %TRUE to show list names, %FALSE to hide it * * Whether @view should should it's tasks' list name. * * Returns: */ void gtd_task_list_view_set_show_list_name (GtdTaskListView *view, gboolean show_list_name) { g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); if (view->priv->show_list_name != show_list_name) { GList *children; GList *l; view->priv->show_list_name = show_list_name; /* update current children */ children = gtk_container_get_children (GTK_CONTAINER (view->priv->listbox)); for (l = children; l != NULL; l = l->next) gtd_task_row_set_list_name_visible (l->data, show_list_name); g_list_free (children); g_object_notify (G_OBJECT (view), "show-list-name"); } } /** * gtd_task_list_view_get)show_completed: * @view: a #GtdTaskListView * * Returns %TRUE if completed tasks are visible, %FALSE otherwise. * * Returns: %TRUE if completed tasks are visible, %FALSE if they are hidden */ gboolean gtd_task_list_view_get_show_completed (GtdTaskListView *view) { g_return_val_if_fail (GTD_IS_TASK_LIST_VIEW (view), FALSE); return view->priv->show_completed; } /** * gtd_task_list_view_set_show_completed: * @view: a #GtdTaskListView * @show_completed: %TRUE to show completed tasks, %FALSE to hide them * * Sets the ::show-completed property to @show_completed. * * Returns: */ void gtd_task_list_view_set_show_completed (GtdTaskListView *view, gboolean show_completed) { GtdTaskListViewPrivate *priv = view->priv; g_return_if_fail (GTD_IS_TASK_LIST_VIEW (view)); if (priv->show_completed != show_completed) { priv->show_completed = show_completed; gtk_image_set_from_icon_name (view->priv->done_image, show_completed ? "zoom-out-symbolic" : "zoom-in-symbolic", GTK_ICON_SIZE_BUTTON); /* insert or remove list rows */ if (show_completed) { GList *list_of_tasks; GList *l; list_of_tasks = gtd_task_list_view_get_list (view); for (l = list_of_tasks; l != NULL; l = l->next) { GtkWidget *new_row; if (!gtd_task_get_complete (l->data)) continue; new_row = gtd_task_row_new (l->data); gtd_task_row_set_list_name_visible (GTD_TASK_ROW (new_row), priv->show_list_name); gtk_list_box_insert (priv->listbox, new_row, 0); gtd_task_row_reveal (GTD_TASK_ROW (new_row)); } g_list_free (list_of_tasks); } else { GList *children; GList *l; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { if (!gtd_task_row_get_new_task_mode (l->data) && gtd_task_get_complete (gtd_task_row_get_task (l->data))) { gtd_task_row_destroy (l->data); } } g_list_free (children); } /* Check if it should show the empty state */ gtd_task_list_view__update_empty_state (view); g_object_notify (G_OBJECT (view), "show-completed"); } } gnome-todo-3.18.1/src/gtd-task-list-view.h000066400000000000000000000055621260744630400202710ustar00rootroot00000000000000/* gtd-task-list-view.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TASK_LIST_VIEW_H #define GTD_TASK_LIST_VIEW_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_TASK_LIST_VIEW (gtd_task_list_view_get_type()) G_DECLARE_FINAL_TYPE (GtdTaskListView, gtd_task_list_view, GTD, TASK_LIST_VIEW, GtkOverlay) GtkWidget* gtd_task_list_view_new (void); GList* gtd_task_list_view_get_list (GtdTaskListView *view); void gtd_task_list_view_set_list (GtdTaskListView *view, GList *list); GtdManager* gtd_task_list_view_get_manager (GtdTaskListView *view); void gtd_task_list_view_set_manager (GtdTaskListView *view, GtdManager *manager); gboolean gtd_task_list_view_get_readonly (GtdTaskListView *view); void gtd_task_list_view_set_readonly (GtdTaskListView *view, gboolean readonly); GtdTaskList* gtd_task_list_view_get_task_list (GtdTaskListView *view); void gtd_task_list_view_set_task_list (GtdTaskListView *view, GtdTaskList *list); gboolean gtd_task_list_view_get_show_list_name (GtdTaskListView *view); void gtd_task_list_view_set_show_list_name (GtdTaskListView *view, gboolean show_list_name); gboolean gtd_task_list_view_get_show_completed (GtdTaskListView *view); void gtd_task_list_view_set_show_completed (GtdTaskListView *view, gboolean show_completed); G_END_DECLS #endif /* GTD_TASK_LIST_VIEW_H */ gnome-todo-3.18.1/src/gtd-task-list.c000066400000000000000000000375751260744630400173250ustar00rootroot00000000000000/* gtd-task-list.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-task.h" #include "gtd-task-list.h" #include #include typedef struct { GList *tasks; ESource *source; gchar *origin; /* ongoing operations */ GCancellable *cancellable; } GtdTaskListPrivate; struct _GtdTaskList { GtdObject parent; /**/ GtdTaskListPrivate *priv; }; enum { TASK_ADDED, TASK_REMOVED, TASK_UPDATED, NUM_SIGNALS }; G_DEFINE_TYPE_WITH_PRIVATE (GtdTaskList, gtd_task_list, GTD_TYPE_OBJECT) static guint signals[NUM_SIGNALS] = { 0, }; enum { PROP_0, PROP_COLOR, PROP_IS_REMOVABLE, PROP_NAME, PROP_ORIGIN, PROP_SOURCE, LAST_PROP }; static void save_task_list_finished_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtdTaskList *list; GError *error; list = user_data; error = NULL; gtd_object_set_ready (GTD_OBJECT (list), TRUE); e_source_write_finish (E_SOURCE (source), result, &error); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error saving task list"), error->message); g_clear_error (&error); } } static void save_task_list (GtdTaskList *list) { GtdTaskListPrivate *priv; ESource *source; priv = list->priv; source = gtd_task_list_get_source (list); if (!priv->cancellable) priv->cancellable = g_cancellable_new (); gtd_object_set_ready (GTD_OBJECT (list), FALSE); e_source_write (source, priv->cancellable, save_task_list_finished_cb, list); } static gboolean color_to_string (GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data) { GdkRGBA *color; gchar *color_str; color = g_value_get_boxed (from_value); color_str = gdk_rgba_to_string (color); g_value_set_string (to_value, color_str); g_free (color_str); return TRUE; } static gboolean string_to_color (GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data) { GdkRGBA color; if (!gdk_rgba_parse (&color, g_value_get_string (from_value))) gdk_rgba_parse (&color, "#ffffff"); /* calendar default colour */ g_value_set_boxed (to_value, &color); return TRUE; } static void gtd_task_list_finalize (GObject *object) { GtdTaskList *self = (GtdTaskList*) object; g_cancellable_cancel (self->priv->cancellable); g_clear_object (&self->priv->cancellable); g_clear_object (&self->priv->source); g_clear_pointer (&self->priv->origin, g_free); G_OBJECT_CLASS (gtd_task_list_parent_class)->finalize (object); } static void gtd_task_list_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdTaskList *self = GTD_TASK_LIST (object); switch (prop_id) { case PROP_COLOR: g_value_set_boxed (value, gtd_task_list_get_color (self)); break; case PROP_IS_REMOVABLE: g_value_set_boolean (value, gtd_task_list_is_removable (self)); break; case PROP_NAME: g_value_set_string (value, e_source_get_display_name (self->priv->source)); break; case PROP_ORIGIN: g_value_set_string (value, self->priv->origin); break; case PROP_SOURCE: g_value_set_object (value, self->priv->source); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdTaskList *self = GTD_TASK_LIST (object); switch (prop_id) { case PROP_COLOR: gtd_task_list_set_color (self, g_value_get_boxed (value)); break; case PROP_NAME: gtd_task_list_set_name (self, g_value_get_string (value)); break; case PROP_ORIGIN: self->priv->origin = g_strdup (g_value_get_string (value)); break; case PROP_SOURCE: g_set_object (&self->priv->source, g_value_get_object (value)); if (self->priv->source) { ESourceSelectable *selectable; selectable = E_SOURCE_SELECTABLE (e_source_get_extension (self->priv->source, E_SOURCE_EXTENSION_TASK_LIST)); g_object_bind_property_full (object, "color", selectable, "color", G_BINDING_BIDIRECTIONAL, color_to_string, string_to_color, object, NULL); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_list_class_init (GtdTaskListClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_task_list_finalize; object_class->get_property = gtd_task_list_get_property; object_class->set_property = gtd_task_list_set_property; /** * GtdTaskList::color: * * The color of the list. */ g_object_class_install_property ( object_class, PROP_COLOR, g_param_spec_boxed ("color", "Color of the list", "The color of the list", GDK_TYPE_RGBA, G_PARAM_READWRITE)); /** * GtdTaskList::is-removable: * * Whether the task list can be removed from the system. */ g_object_class_install_property ( object_class, PROP_IS_REMOVABLE, g_param_spec_boolean ("is-removable", "Whether the task list is removable", "Whether the task list can be removed from the system", TRUE, G_PARAM_READABLE)); /** * GtdTaskList::name: * * The display name of the list. */ g_object_class_install_property ( object_class, PROP_NAME, g_param_spec_string ("name", "Name of the list", "The name of the list", NULL, G_PARAM_READWRITE)); /** * GtdTaskList::name: * * The display name of the list. */ g_object_class_install_property ( object_class, PROP_ORIGIN, g_param_spec_string ("origin", "Data origin of the list", "The data origin location of the list", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtdTaskList::source: * * The parent source of the list. */ g_object_class_install_property ( object_class, PROP_SOURCE, g_param_spec_object ("source", "Source of the list", "The parent source that handles the list", E_TYPE_SOURCE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtdTaskList::task-added: * * The ::task-added signal is emmited after a #GtdTask * is added to the list. */ signals[TASK_ADDED] = g_signal_new ("task-added", GTD_TYPE_TASK_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); /** * GtdTaskList::task-removed: * * The ::task-removed signal is emmited after a #GtdTask * is removed from the list. */ signals[TASK_REMOVED] = g_signal_new ("task-removed", GTD_TYPE_TASK_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); /** * GtdTaskList::task-updated: * * The ::task-updated signal is emmited after a #GtdTask * in the list is updated. */ signals[TASK_UPDATED] = g_signal_new ("task-updated", GTD_TYPE_TASK_LIST, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); } static void gtd_task_list_init (GtdTaskList *self) { self->priv = gtd_task_list_get_instance_private (self); } /** * gtd_task_list_new: * @uid: the unique identifier of the list, usually set * by the backend * * Creates a new list. * * Returns: (transfer full): the new #GtdTaskList */ GtdTaskList * gtd_task_list_new (ESource *source, const gchar *origin) { return g_object_new (GTD_TYPE_TASK_LIST, "source", source, "uid", e_source_get_uid (source), "origin", origin, NULL); } /** * gtd_task_list_get_color: * @list: a #GtdTaskList * * Retrieves the color of %list. It is guarantee that it always returns a * color, given a valid #GtdTaskList. * * Returns: (transfer full): the color of %list. Free with %gdk_rgba_free after use. */ GdkRGBA* gtd_task_list_get_color (GtdTaskList *list) { GdkRGBA color; g_return_val_if_fail (GTD_IS_TASK_LIST (list), NULL); if (list->priv->source) { ESourceSelectable *selectable; selectable = E_SOURCE_SELECTABLE (e_source_get_extension (list->priv->source, E_SOURCE_EXTENSION_TASK_LIST)); if (!gdk_rgba_parse (&color, e_source_selectable_get_color (selectable))) gdk_rgba_parse (&color, "#ffffff"); /* calendar default colour */ } else { gdk_rgba_parse (&color, "#ffffff"); } return gdk_rgba_copy (&color); } /** * gtd_task_list_set_color: * * sets the color of @list. * * Returns: */ void gtd_task_list_set_color (GtdTaskList *list, const GdkRGBA *color) { GdkRGBA *current_color; g_return_if_fail (GTD_IS_TASK_LIST (list)); current_color = gtd_task_list_get_color (list); if (!gdk_rgba_equal (current_color, color)) { ESourceSelectable *selectable; gchar *color_str; selectable = E_SOURCE_SELECTABLE (e_source_get_extension (list->priv->source, E_SOURCE_EXTENSION_TASK_LIST)); color_str = gdk_rgba_to_string (color); e_source_selectable_set_color (selectable, color_str); save_task_list (list); g_free (color_str); g_object_notify (G_OBJECT (list), "color"); } gdk_rgba_free (current_color); } /** * gtd_task_list_get_name: * @list: a #GtdTaskList * * Retrieves the user-visible name of @list, or %NULL. * * Returns: (transfer none): the internal name of @list. Do not free * after use. */ const gchar* gtd_task_list_get_name (GtdTaskList *list) { g_return_val_if_fail (GTD_IS_TASK_LIST (list), NULL); return e_source_get_display_name (list->priv->source); } /** * gtd_task_list_set_name: * * Sets the @list name to @name. * * Returns: */ void gtd_task_list_set_name (GtdTaskList *list, const gchar *name) { g_assert (GTD_IS_TASK_LIST (list)); if (g_strcmp0 (e_source_get_display_name (list->priv->source), name) != 0) { e_source_set_display_name (list->priv->source, name); save_task_list (list); g_object_notify (G_OBJECT (list), "name"); } } /** * gtd_task_list_get_tasks: * @list: a #GtdTaskList * * Returns the list's tasks. * * Returns: (element-type GtdTask) (transfer container): a newly-allocated list of the list's tasks. */ GList* gtd_task_list_get_tasks (GtdTaskList *list) { g_return_val_if_fail (GTD_IS_TASK_LIST (list), NULL); return g_list_copy (list->priv->tasks); } /** * gtd_task_list_save_task: * @list: a #GtdTaskList * @task: a #GtdTask * * Adds or updates @task to @list if it's not already present. * * Returns: */ void gtd_task_list_save_task (GtdTaskList *list, GtdTask *task) { g_assert (GTD_IS_TASK_LIST (list)); g_assert (GTD_IS_TASK (task)); if (gtd_task_list_contains (list, task)) { g_signal_emit (list, signals[TASK_UPDATED], 0, task); } else { list->priv->tasks = g_list_append (list->priv->tasks, task); g_signal_emit (list, signals[TASK_ADDED], 0, task); } } /** * gtd_task_list_remove_task: * @list: a #GtdTaskList * @task: a #GtdTask * * Removes @task from @list if it's inside the list. * * Returns: */ void gtd_task_list_remove_task (GtdTaskList *list, GtdTask *task) { g_assert (GTD_IS_TASK_LIST (list)); g_assert (GTD_IS_TASK (task)); if (!gtd_task_list_contains (list, task)) return; list->priv->tasks = g_list_remove (list->priv->tasks, task); g_signal_emit (list, signals[TASK_REMOVED], 0, task); } /** * gtd_task_list_contains: * @list: a #GtdTaskList * @task: a #GtdTask * * Checks if @task is inside @list. * * Returns: %TRUE if @list contains @task, %FALSE otherwise */ gboolean gtd_task_list_contains (GtdTaskList *list, GtdTask *task) { g_assert (GTD_IS_TASK_LIST (list)); g_assert (GTD_IS_TASK (task)); return (g_list_find (list->priv->tasks, task) != NULL); } /** * gtd_task_list_get_source: * @list: a #GtdTaskList * * Retrieves the #ESource that handles @list. * * Returns: (transfer none): the internal #ESource of @list */ ESource* gtd_task_list_get_source (GtdTaskList *list) { g_return_val_if_fail (GTD_IS_TASK_LIST (list), NULL); return list->priv->source; } /** * gtd_task_list_get_origin: * @list: a @GtdTaskList * * Gets the origin (i.e. parent source display name) of @list. * * Returns: (transfer none): the origin of @list data. */ const gchar* gtd_task_list_get_origin (GtdTaskList *list) { g_return_val_if_fail (GTD_IS_TASK_LIST (list), NULL); return list->priv->origin; } /** * gtd_task_list_get_is_removable: * @list: a #GtdTaskList * * Retrieves whether @list can be removed or not. * * Returns: %TRUE if the @list can be removed, %FALSE otherwise */ gboolean gtd_task_list_is_removable (GtdTaskList *list) { g_return_val_if_fail (GTD_IS_TASK_LIST (list), FALSE); return e_source_get_removable (list->priv->source) || e_source_get_remote_deletable (list->priv->source); } gnome-todo-3.18.1/src/gtd-task-list.h000066400000000000000000000054261260744630400173200ustar00rootroot00000000000000/* gtd-task-list.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TASK_LIST_H #define GTD_TASK_LIST_H #include #include "gtd-object.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_TASK_LIST (gtd_task_list_get_type()) G_DECLARE_FINAL_TYPE (GtdTaskList, gtd_task_list, GTD, TASK_LIST, GtdObject) GtdTaskList* gtd_task_list_new (ESource *source, const gchar *origin); GdkRGBA* gtd_task_list_get_color (GtdTaskList *list); void gtd_task_list_set_color (GtdTaskList *list, const GdkRGBA *color); gboolean gtd_task_list_is_removable (GtdTaskList *list); const gchar* gtd_task_list_get_name (GtdTaskList *list); void gtd_task_list_set_name (GtdTaskList *list, const gchar *name); GList* gtd_task_list_get_tasks (GtdTaskList *list); void gtd_task_list_save_task (GtdTaskList *list, GtdTask *task); void gtd_task_list_remove_task (GtdTaskList *list, GtdTask *task); gboolean gtd_task_list_contains (GtdTaskList *list, GtdTask *task); ESource* gtd_task_list_get_source (GtdTaskList *list); const gchar* gtd_task_list_get_origin (GtdTaskList *list); G_END_DECLS #endif /* GTD_TASK_LIST_H */ gnome-todo-3.18.1/src/gtd-task-row.c000066400000000000000000000460211260744630400171430ustar00rootroot00000000000000/* gtd-task-row.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-task-row.h" #include "gtd-task.h" #include "gtd-task-list.h" #include #include typedef struct { GtkRevealer *revealer; GtkStack *stack; /* new task widgets */ GtkStack *done_check; GtkEntry *new_task_entry; GtkStack *new_task_stack; /* task widgets */ GtkEntry *title_entry; GtkLabel *task_date_label; GtkLabel *task_list_label; GtkStack *task_stack; GtkSpinner *task_loading_spinner; GtkLabel *title_label; /* data */ gboolean new_task_mode; GtdTask *task; } GtdTaskRowPrivate; struct _GtdTaskRow { GtkListBoxRow parent; /**/ GtdTaskRowPrivate *priv; }; #define PRIORITY_ICON_SIZE 8 G_DEFINE_TYPE_WITH_PRIVATE (GtdTaskRow, gtd_task_row, GTK_TYPE_LIST_BOX_ROW) enum { ENTER, EXIT, ACTIVATED, CREATE_TASK, NUM_SIGNALS }; enum { PROP_0, PROP_NEW_TASK_MODE, PROP_TASK, LAST_PROP }; static guint signals[NUM_SIGNALS] = { 0, }; static void gtd_task_row__priority_changed_cb (GtdTaskRow *row, GParamSpec *spec, GObject *object) { GtkStyleContext *context; gint priority; g_return_if_fail (GTD_IS_TASK_ROW (row)); context = gtk_widget_get_style_context (GTK_WIDGET (row)); priority = gtd_task_get_priority (GTD_TASK (object)); /* remove all styles */ gtk_style_context_remove_class (context, "priority-low"); gtk_style_context_remove_class (context, "priority-medium"); gtk_style_context_remove_class (context, "priority-hight"); switch (priority) { case 1: gtk_style_context_add_class (context, "priority-low"); break; case 2: gtk_style_context_add_class (context, "priority-medium"); break; case 3: gtk_style_context_add_class (context, "priority-hight"); break; default: break; } /* redraw background according to the new applied style */ gtk_widget_queue_draw (GTK_WIDGET (row)); } static gboolean gtd_task_row__date_changed_binding (GBinding *binding, const GValue *from_value, GValue *to_value, gpointer user_data) { GDateTime *dt; gchar *new_label = NULL; g_return_val_if_fail (GTD_IS_TASK_ROW (user_data), FALSE); dt = g_value_get_boxed (from_value); if (dt) { GDateTime *today = g_date_time_new_now_local (); if (g_date_time_get_year (dt) == g_date_time_get_year (today) && g_date_time_get_month (dt) == g_date_time_get_month (today)) { if (g_date_time_get_day_of_month (dt) == g_date_time_get_day_of_month (today)) { new_label = g_strdup (_("Today")); } else if (g_date_time_get_day_of_month (dt) == g_date_time_get_day_of_month (today) + 1) { new_label = g_strdup (_("Tomorrow")); } else if (g_date_time_get_day_of_month (dt) == g_date_time_get_day_of_month (today) - 1) { new_label = g_strdup (_("Yesterday")); } else if (g_date_time_get_day_of_year (dt) > g_date_time_get_day_of_month (today) && g_date_time_get_day_of_year (dt) < g_date_time_get_day_of_month (today) + 7) { new_label = g_date_time_format (dt, "%A"); } else { new_label = g_date_time_format (dt, "%x"); } } else { new_label = g_date_time_format (dt, "%x"); } g_date_time_unref (today); } else { new_label = g_strdup (_("No date set")); } g_value_set_string (to_value, new_label); g_free (new_label); return TRUE; } static GtdTask* gtd_task_row__create_task_for_name (const gchar *name) { GtdTask *task = gtd_task_new (NULL); gtd_task_set_title (task, name); gtd_task_save (task); return task; } GtkWidget* gtd_task_row_new (GtdTask *task) { return g_object_new (GTD_TYPE_TASK_ROW, "task", task, NULL); } static gboolean gtd_task_row__entry_focus_out (GtkWidget *widget, GdkEventFocus *event, gpointer user_data) { GtdTaskRowPrivate *priv = GTD_TASK_ROW (user_data)->priv; g_return_val_if_fail (GTD_IS_TASK_ROW (user_data), FALSE); if (priv->new_task_mode) gtk_stack_set_visible_child_name (priv->new_task_stack, "label"); else gtk_stack_set_visible_child_name (priv->task_stack, "label"); return FALSE; } static gboolean gtd_task_row__focus_in (GtkWidget *widget, GdkEventFocus *event) { GtdTaskRowPrivate *priv = GTD_TASK_ROW (widget)->priv; g_return_val_if_fail (GTD_IS_TASK_ROW (widget), FALSE); if (priv->new_task_mode) { gtk_stack_set_visible_child_name (priv->new_task_stack, "entry"); gtk_widget_grab_focus (GTK_WIDGET (priv->new_task_entry)); } else { gtk_stack_set_visible_child_name (priv->task_stack, "title"); gtk_widget_grab_focus (GTK_WIDGET (priv->title_entry)); } return FALSE; } static gboolean gtd_task_row__key_press_event (GtkWidget *row, GdkEventKey *event) { GtdTaskRowPrivate *priv = GTD_TASK_ROW (row)->priv; if (event->keyval == GDK_KEY_Escape && // Esc is pressed !(event->state & (GDK_SHIFT_MASK|GDK_CONTROL_MASK))) // No modifiers together { if (priv->new_task_mode) { gtk_stack_set_visible_child_name (priv->new_task_stack, "label"); gtk_entry_set_text (priv->new_task_entry, ""); return TRUE; } else { g_signal_emit (row, signals[EXIT], 0); } } return FALSE; } static void gtd_task_row__entry_activated (GtkEntry *entry, gpointer user_data) { GtdTaskRowPrivate *priv = GTD_TASK_ROW (user_data)->priv; g_return_if_fail (GTD_IS_TASK_ROW (user_data)); g_return_if_fail (GTK_IS_ENTRY (entry)); if (entry == priv->new_task_entry) { GtdTask *new_task; /* Cannot create empty tasks */ if (gtk_entry_get_text_length (priv->new_task_entry) == 0) return; new_task = gtd_task_row__create_task_for_name (gtk_entry_get_text (priv->new_task_entry)); g_signal_emit (user_data, signals[CREATE_TASK], 0, new_task); gtk_entry_set_text (priv->new_task_entry, ""); } } static void gtd_task_row_finalize (GObject *object) { G_OBJECT_CLASS (gtd_task_row_parent_class)->finalize (object); } static void gtd_task_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdTaskRow *self = GTD_TASK_ROW (object); switch (prop_id) { case PROP_NEW_TASK_MODE: g_value_set_boolean (value, self->priv->new_task_mode); break; case PROP_TASK: g_value_set_object (value, self->priv->task); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdTaskRow *self = GTD_TASK_ROW (object); switch (prop_id) { case PROP_NEW_TASK_MODE: gtd_task_row_set_new_task_mode (self, g_value_get_boolean (value)); break; case PROP_TASK: gtd_task_row_set_task (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_row_activate (GtkListBoxRow *row) { GTK_LIST_BOX_ROW_CLASS (gtd_task_row_parent_class)->activate (row); g_signal_emit (row, signals[ENTER], 0); } static void gtd_task_row_class_init (GtdTaskRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); GtkListBoxRowClass *row_class = GTK_LIST_BOX_ROW_CLASS (klass); object_class->finalize = gtd_task_row_finalize; object_class->get_property = gtd_task_row_get_property; object_class->set_property = gtd_task_row_set_property; widget_class->focus_in_event = gtd_task_row__focus_in; widget_class->key_press_event = gtd_task_row__key_press_event; row_class->activate = gtd_task_row_activate; /** * GtdTaskRow::new-task-mode: * * If the row is used to add new tasks. */ g_object_class_install_property ( object_class, PROP_NEW_TASK_MODE, g_param_spec_boolean ("new-task-mode", "If the row is used to add a new task", "Whether the row is used to add a new task", FALSE, G_PARAM_READWRITE)); /** * GtdTaskRow::task: * * The task that this row represents, or %NULL. */ g_object_class_install_property ( object_class, PROP_TASK, g_param_spec_object ("task", "Task of the row", "The task that this row represents", GTD_TYPE_TASK, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); /** * GtdTaskRow::enter: * * Emitted when the row is focused and in the editing state. */ signals[ENTER] = g_signal_new ("enter", GTD_TYPE_TASK_ROW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * GtdTaskRow::exit: * * Emitted when the row is unfocused and leaves the editing state. */ signals[EXIT] = g_signal_new ("exit", GTD_TYPE_TASK_ROW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * GtdTaskRow::activate: * * Emitted when the row wants to apply the changes. */ signals[ACTIVATED] = g_signal_new ("activated", GTD_TYPE_TASK_ROW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); /** * GtdTaskRow::create-task: * * Emitted when the row wants the parent widget to create a new task. */ signals[CREATE_TASK] = g_signal_new ("create-task", GTD_TYPE_TASK_ROW, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_TASK); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/task-row.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, done_check); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, stack); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, new_task_entry); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, new_task_stack); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, revealer); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_date_label); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_list_label); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_stack); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, task_loading_spinner); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, title_entry); gtk_widget_class_bind_template_child_private (widget_class, GtdTaskRow, title_label); gtk_widget_class_bind_template_callback (widget_class, gtd_task_row__entry_activated); gtk_widget_class_bind_template_callback (widget_class, gtd_task_row__entry_focus_out); } static void gtd_task_row_init (GtdTaskRow *self) { self->priv = gtd_task_row_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_task_row_get_new_task_mode: * @row: a #GtdTaskRow * * Whether @row is in new task mode. * * Returns: %TRUE if @row is in new task mode, %FALSE otherwise */ gboolean gtd_task_row_get_new_task_mode (GtdTaskRow *row) { g_return_val_if_fail (GTD_IS_TASK_ROW (row), FALSE); return row->priv->new_task_mode; } /** * gtd_task_row_set_new_task_mode: * @row: a #GtdTaskRow * @new_task_mode: %TRUE to set new task mode, %FALSE otherwise * * Sets @row new task mode to @new_task_mode. It is up to the caller * to set GtdTaskRow::task to %NULL. * * Returns: */ void gtd_task_row_set_new_task_mode (GtdTaskRow *row, gboolean new_task_mode) { g_return_if_fail (GTD_IS_TASK_ROW (row)); if (row->priv->new_task_mode != new_task_mode) { row->priv->new_task_mode = new_task_mode; if (new_task_mode) { gtk_stack_set_visible_child_name (GTK_STACK (row->priv->stack), "new"); gtd_task_row_reveal (row); } else { gtk_stack_set_visible_child_name (GTK_STACK (row->priv->stack), "task"); } g_object_notify (G_OBJECT (row), "new-task-mode"); } } /** * gtd_task_row_get_task: * @row: a #GtdTaskRow * * Retrieves the #GtdTask that @row manages, or %NULL if none * is set. * * Returns: (transfer none): the internal task of @row */ GtdTask* gtd_task_row_get_task (GtdTaskRow *row) { g_return_val_if_fail (GTD_IS_TASK_ROW (row), NULL); return row->priv->task; } /** * gtd_task_row_set_task: * @row: a #GtdTaskRow * @task: a #GtdTask * * Sets the internal #GtdTask of @row. The task must be set to %NULL * before setting GtdObject::new-task-mode to %TRUE. * * Returns: */ void gtd_task_row_set_task (GtdTaskRow *row, GtdTask *task) { GtdTaskRowPrivate *priv; g_return_if_fail (GTD_IS_TASK_ROW (row)); priv = row->priv; if (row->priv->task != task) { row->priv->task = task; if (task) { gtk_label_set_label (row->priv->task_list_label, gtd_task_list_get_name (gtd_task_get_list (task))); g_object_bind_property (task, "title", priv->title_entry, "text", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property (task, "title", priv->title_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (task, "complete", row->priv->done_check, "active", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); g_object_bind_property (task, "ready", priv->task_loading_spinner, "visible", G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE); g_object_bind_property_full (task, "due-date", priv->task_date_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE, gtd_task_row__date_changed_binding, NULL, row, NULL); /* * Here we generate a false callback call just to reuse the method to * sync the initial state of the priority icon. */ gtd_task_row__priority_changed_cb (row, NULL, G_OBJECT (task)); g_signal_connect_swapped (task, "notify::priority", G_CALLBACK (gtd_task_row__priority_changed_cb), row); } g_object_notify (G_OBJECT (row), "task"); } } /** * gtd_task_row_set_list_name_visible: * @row: a #GtdTaskRow * @show_list_name: %TRUE to show the list name, %FALSE to hide it * * Sets @row's list name label visibility to @show_list_name. * * Returns: */ void gtd_task_row_set_list_name_visible (GtdTaskRow *row, gboolean show_list_name) { g_return_if_fail (GTD_IS_TASK_ROW (row)); gtk_widget_set_visible (GTK_WIDGET (row->priv->task_list_label), show_list_name); } /** * gtd_task_row_reveal: * @row: a #GtdTaskRow * * Runs a nifty animation to reveal @row. * * Returns: */ void gtd_task_row_reveal (GtdTaskRow *row) { g_return_if_fail (GTD_IS_TASK_ROW (row)); gtk_revealer_set_reveal_child (row->priv->revealer, TRUE); } /** * gtd_task_row_destroy: * @row: a #GtdTaskRow * * Runs an animation and the destory @row. * * Returns: */ void gtd_task_row_destroy (GtdTaskRow *row) { g_return_if_fail (GTD_IS_TASK_ROW (row)); g_return_if_fail (gtk_revealer_get_child_revealed (row->priv->revealer)); g_signal_connect_swapped (row->priv->revealer, "notify::child-revealed", G_CALLBACK (gtk_widget_destroy), row); gtk_revealer_set_reveal_child (row->priv->revealer, FALSE); } gnome-todo-3.18.1/src/gtd-task-row.h000066400000000000000000000040671260744630400171540ustar00rootroot00000000000000/* gtd-task-row.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TASK_ROW_H #define GTD_TASK_ROW_H #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_TASK_ROW (gtd_task_row_get_type()) G_DECLARE_FINAL_TYPE (GtdTaskRow, gtd_task_row, GTD, TASK_ROW, GtkListBoxRow) GtkWidget* gtd_task_row_new (GtdTask *task); gboolean gtd_task_row_get_new_task_mode (GtdTaskRow *row); void gtd_task_row_set_new_task_mode (GtdTaskRow *row, gboolean new_task_mode); GtdTask* gtd_task_row_get_task (GtdTaskRow *row); void gtd_task_row_set_task (GtdTaskRow *row, GtdTask *task); void gtd_task_row_set_list_name_visible (GtdTaskRow *row, gboolean show_list_name); void gtd_task_row_reveal (GtdTaskRow *row); void gtd_task_row_destroy (GtdTaskRow *row); G_END_DECLS #endif /* GTD_TASK_ROW_H */ gnome-todo-3.18.1/src/gtd-task.c000066400000000000000000000514651260744630400163460ustar00rootroot00000000000000/* gtd-task.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-task.h" #include "gtd-task-list.h" #include #include #include #include typedef struct { gchar *description; GtdTaskList *list; ECalComponent *component; } GtdTaskPrivate; struct _GtdTask { GtdObject parent; /**/ GtdTaskPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdTask, gtd_task, GTD_TYPE_OBJECT) enum { PROP_0, PROP_COMPLETE, PROP_COMPONENT, PROP_DESCRIPTION, PROP_DUE_DATE, PROP_LIST, PROP_PRIORITY, PROP_TITLE, LAST_PROP }; static GDateTime* gtd_task__convert_icaltime (const icaltimetype *date) { GTimeZone *tz; GDateTime *dt; gboolean is_date; if (!date) return NULL; is_date = date->is_date ? TRUE : FALSE; tz = g_time_zone_new_utc (); dt = g_date_time_new (tz, date->year, date->month, date->day, is_date ? date->hour : 0, is_date ? date->minute : 0, is_date ? date->second : 0.0); return dt; } static void gtd_task_finalize (GObject *object) { GtdTask *self = (GtdTask*) object; if (self->priv->description) g_free (self->priv->description); if (self->priv->component) g_object_unref (self->priv->component); G_OBJECT_CLASS (gtd_task_parent_class)->finalize (object); } static const gchar* gtd_task__get_uid (GtdObject *object) { GtdTaskPrivate *priv = GTD_TASK (object)->priv; const gchar *uid; g_return_val_if_fail (GTD_IS_TASK (object), NULL); if (priv->component) e_cal_component_get_uid (priv->component, &uid); else uid = NULL; return uid; } static void gtd_task__set_uid (GtdObject *object, const gchar *uid) { GtdTaskPrivate *priv = GTD_TASK (object)->priv; const gchar *current_uid; g_return_if_fail (GTD_IS_TASK (object)); if (!priv->component) return; e_cal_component_get_uid (priv->component, ¤t_uid); if (g_strcmp0 (current_uid, uid) != 0) { e_cal_component_set_uid (priv->component, uid); g_object_notify (G_OBJECT (object), "uid"); } } static void gtd_task_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdTask *self = GTD_TASK (object); switch (prop_id) { case PROP_COMPLETE: g_value_set_boolean (value, gtd_task_get_complete (self)); break; case PROP_COMPONENT: g_value_set_object (value, self->priv->component); break; case PROP_DESCRIPTION: g_value_set_string (value, gtd_task_get_description (self)); break; case PROP_DUE_DATE: g_value_set_boxed (value, gtd_task_get_due_date (self)); break; case PROP_LIST: g_value_set_object (value, self->priv->list); break; case PROP_PRIORITY: g_value_set_int (value, gtd_task_get_priority (self)); break; case PROP_TITLE: g_value_set_string (value, gtd_task_get_title (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdTask *self = GTD_TASK (object); switch (prop_id) { case PROP_COMPLETE: gtd_task_set_complete (self, g_value_get_boolean (value)); break; case PROP_COMPONENT: self->priv->component = g_value_get_object (value); if (!self->priv->component) { self->priv->component = e_cal_component_new (); e_cal_component_set_new_vtype (self->priv->component, E_CAL_COMPONENT_TODO); } else { g_object_ref (self->priv->component); } break; case PROP_DESCRIPTION: gtd_task_set_description (self, g_value_get_string (value)); break; case PROP_DUE_DATE: gtd_task_set_due_date (self, g_value_get_boxed (value)); break; case PROP_LIST: gtd_task_set_list (self, g_value_get_object (value)); break; case PROP_PRIORITY: gtd_task_set_priority (self, g_value_get_int (value)); break; case PROP_TITLE: gtd_task_set_title (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_task_class_init (GtdTaskClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtdObjectClass *obj_class = GTD_OBJECT_CLASS (klass); object_class->finalize = gtd_task_finalize; object_class->get_property = gtd_task_get_property; object_class->set_property = gtd_task_set_property; obj_class->get_uid = gtd_task__get_uid; obj_class->set_uid = gtd_task__set_uid; /** * GtdTask::complete: * * @TRUE if the task is marked as complete or @FALSE otherwise. Usually * represented by a checkbox at user interfaces. */ g_object_class_install_property ( object_class, PROP_COMPLETE, g_param_spec_boolean ("complete", "Whether the task is completed or not", "Whether the task is marked as completed by the user", FALSE, G_PARAM_READWRITE)); /** * GtdTask::component: * * The #ECalComponent of the task. */ g_object_class_install_property ( object_class, PROP_COMPONENT, g_param_spec_object ("component", "Component of the task", "The #ECalComponent this task handles.", E_TYPE_CAL_COMPONENT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtdTask::description: * * Description of the task. */ g_object_class_install_property ( object_class, PROP_DESCRIPTION, g_param_spec_string ("description", "Description of the task", "Optional string describing the task", NULL, G_PARAM_READWRITE)); /** * GtdTask::due-date: * * The @GDateTime that represents the time in which the task should * be completed before. */ g_object_class_install_property ( object_class, PROP_DUE_DATE, g_param_spec_boxed ("due-date", "End date of the task", "The day the task is supposed to be completed", G_TYPE_DATE_TIME, G_PARAM_READWRITE)); /** * GtdTask::list: * * The @GtdTaskList that contains this task. */ g_object_class_install_property ( object_class, PROP_LIST, g_param_spec_object ("list", "List of the task", "The list that owns this task", GTD_TYPE_TASK_LIST, G_PARAM_READWRITE)); /** * GtdTask::priority: * * Priority of the task, 0 if not set. */ g_object_class_install_property ( object_class, PROP_PRIORITY, g_param_spec_int ("priority", "Priority of the task", "The priority of the task. 0 means no priority set, and tasks will be sorted alphabetically.", 0, G_MAXINT, 0, G_PARAM_READWRITE)); /** * GtdTask::title: * * The title of the task, usually the task name. */ g_object_class_install_property ( object_class, PROP_TITLE, g_param_spec_string ("title", "Title of the task", "The title of the task", NULL, G_PARAM_READWRITE)); } static void gtd_task_init (GtdTask *self) { self->priv = gtd_task_get_instance_private (self); } GtdTask * gtd_task_new (ECalComponent *component) { const gchar *uid; if (component) e_cal_component_get_uid (component, &uid); else uid = NULL; return g_object_new (GTD_TYPE_TASK, "component", component, NULL); } /** * gtd_task_get_complete: * @task: a #GtdTask * * Retrieves whether the task is complete or not. * * Returns: %TRUE if the task is complete, %FALSE otherwise */ gboolean gtd_task_get_complete (GtdTask *task) { icaltimetype *dt; gboolean completed; g_return_val_if_fail (GTD_IS_TASK (task), FALSE); e_cal_component_get_completed (task->priv->component, &dt); completed = (dt != NULL); if (dt) e_cal_component_free_icaltimetype (dt); return completed; } ECalComponent* gtd_task_get_component (GtdTask *task) { g_return_val_if_fail (GTD_IS_TASK (task), NULL); return task->priv->component; } /** * gtd_task_set_complete: * @task: a #GtdTask * @complete: the new value * * Updates the complete state of @task. * * Returns: */ void gtd_task_set_complete (GtdTask *task, gboolean complete) { g_assert (GTD_IS_TASK (task)); if (gtd_task_get_complete (task) != complete) { icaltimetype *dt; icalproperty_status status; gint percent; if (complete) { GDateTime *now = g_date_time_new_now_local (); percent = 100; status = ICAL_STATUS_COMPLETED; dt = g_new0 (icaltimetype, 1); dt->year = g_date_time_get_year (now); dt->month = g_date_time_get_month (now); dt->day = g_date_time_get_day_of_month (now); dt->hour = g_date_time_get_hour (now); dt->minute = g_date_time_get_minute (now); dt->second = g_date_time_get_seconds (now); dt->is_date = 0; dt->is_utc = 1; /* convert timezone * * FIXME: This does not do anything until we have an ical * timezone associated with the task */ icaltimezone_convert_time (dt, NULL, icaltimezone_get_utc_timezone ()); } else { dt = NULL; percent = 0; status = ICAL_STATUS_NEEDSACTION; } e_cal_component_set_percent_as_int (task->priv->component, percent); e_cal_component_set_status (task->priv->component, status); e_cal_component_set_completed (task->priv->component, dt); if (dt) e_cal_component_free_icaltimetype (dt); g_object_notify (G_OBJECT (task), "complete"); } } /** * gtd_task_get_description: * @task: a #GtdTask * * Retrieves the description of the task. * * Returns: (transfer none): the description of @task */ const gchar* gtd_task_get_description (GtdTask *task) { GSList *text_list; GSList *l; gchar *desc = NULL; g_return_val_if_fail (GTD_IS_TASK (task), NULL); /* concatenates the multiple descriptions a task may have */ e_cal_component_get_description_list (task->priv->component, &text_list); for (l = text_list; l != NULL; l = l->next) { if (l->data != NULL) { ECalComponentText *text; gchar *carrier; text = l->data; if (desc != NULL) { carrier = g_strconcat (desc, "\n", text->value, NULL); g_free (desc); desc = carrier; } else { desc = g_strdup (text->value); } } } if (g_strcmp0 (task->priv->description, desc) != 0) { g_clear_pointer (&task->priv->description, g_free); task->priv->description = g_strdup (desc); } g_free (desc); e_cal_component_free_text_list (text_list); return task->priv->description ? task->priv->description : ""; } /** * gtd_task_set_description: * @task: a #GtdTask * @description: the new description, or %NULL * * Updates the description of @task. The string is not stripped off of * spaces to preserve user data. * * Returns: */ void gtd_task_set_description (GtdTask *task, const gchar *description) { g_assert (GTD_IS_TASK (task)); g_assert (g_utf8_validate (description, -1, NULL)); if (g_strcmp0 (task->priv->description, description) != 0) { GSList note; ECalComponentText text; g_clear_pointer (&task->priv->description, g_free); task->priv->description = g_strdup (description); text.value = task->priv->description; text.altrep = NULL; note.data = &text; note.next = NULL; e_cal_component_set_description_list (task->priv->component, ¬e); g_object_notify (G_OBJECT (task), "description"); } } /** * gtd_task_get_due_date: * @task: a #GtdTask * * Returns the #GDateTime that represents the task's due date. * The value is referenced for thread safety. Returns %NULL if * no date is set. * * Returns: (transfer full): the internal #GDateTime referenced * for thread safety, or %NULL. Unreference it after use. */ GDateTime* gtd_task_get_due_date (GtdTask *task) { ECalComponentDateTime comp_dt; g_return_val_if_fail (GTD_IS_TASK (task), NULL); e_cal_component_get_due (task->priv->component, &comp_dt); return gtd_task__convert_icaltime (comp_dt.value); } /** * gtd_task_set_due_date: * @task: a #GtdTask * @dt: a #GDateTime * * Updates the internal @GtdTask::due-date property. * * Returns: */ void gtd_task_set_due_date (GtdTask *task, GDateTime *dt) { GDateTime *current_dt; g_assert (GTD_IS_TASK (task)); current_dt = gtd_task_get_due_date (task); if (dt != current_dt) { ECalComponentDateTime comp_dt; icaltimetype *idt; gboolean changed = FALSE; comp_dt.value = NULL; comp_dt.tzid = NULL; idt = NULL; if (!current_dt || (current_dt && dt && g_date_time_compare (current_dt, dt) != 0)) { idt = g_new0 (icaltimetype, 1); g_date_time_ref (dt); /* Copy the given dt */ idt->year = g_date_time_get_year (dt); idt->month = g_date_time_get_month (dt); idt->day = g_date_time_get_day_of_month (dt); idt->hour = g_date_time_get_hour (dt); idt->minute = g_date_time_get_minute (dt); idt->second = g_date_time_get_seconds (dt); idt->is_date = (idt->hour == 0 && idt->minute == 0 && idt->second == 0); comp_dt.tzid = g_strdup ("UTC"); comp_dt.value = idt; e_cal_component_set_due (task->priv->component, &comp_dt); e_cal_component_free_datetime (&comp_dt); g_date_time_unref (dt); changed = TRUE; } else if (!dt) { idt = NULL; comp_dt.tzid = NULL; e_cal_component_set_due (task->priv->component, NULL); changed = TRUE; } if (changed) g_object_notify (G_OBJECT (task), "due-date"); } if (current_dt) g_date_time_unref (current_dt); } /** * gtd_task_get_list: * * Returns a weak reference to the #GtdTaskList that * owns the given @task. * * Returns: (transfer none): a weak reference to the * #GtdTaskList that owns @task. Do not free after * usage. */ GtdTaskList* gtd_task_get_list (GtdTask *task) { g_return_val_if_fail (GTD_IS_TASK (task), NULL); return task->priv->list; } /** * gtd_task_set_list: * * Sets the parent #GtdTaskList of @task. * * Returns: */ void gtd_task_set_list (GtdTask *task, GtdTaskList *list) { g_assert (GTD_IS_TASK (task)); g_assert (GTD_IS_TASK_LIST (list)); if (task->priv->list != list) { task->priv->list = list; g_object_notify (G_OBJECT (task), "list"); } } /** * gtd_task_get_priority: * @task: a #GtdTask * * Returns the priority of @task inside the parent #GtdTaskList, * or -1 if not set. * * Returns: the priority of the task, or 0 */ gint gtd_task_get_priority (GtdTask *task) { gint *priority = NULL; gint p; g_assert (GTD_IS_TASK (task)); e_cal_component_get_priority (task->priv->component, &priority); if (!priority) return -1; p = *priority; g_free (priority); return p; } /** * gtd_task_set_priority: * @task: a #GtdTask * @priority: the priority of @task, or -1 * * Sets the @task priority inside the parent #GtdTaskList. It * is up to the interface to handle two or more #GtdTask with * the same priority value. * * Returns: */ void gtd_task_set_priority (GtdTask *task, gint priority) { gint current; g_assert (GTD_IS_TASK (task)); g_assert (priority >= -1); current = gtd_task_get_priority (task); if (priority != current) { e_cal_component_set_priority (task->priv->component, &priority); g_object_notify (G_OBJECT (task), "priority"); } } /** * gtd_task_get_title: * @task: a #GtdTask * * Retrieves the title of the task, or %NULL. * * Returns: (transfer none): the title of @task, or %NULL */ const gchar* gtd_task_get_title (GtdTask *task) { GtdTaskPrivate *priv = task->priv; ECalComponentText summary; g_return_val_if_fail (GTD_IS_TASK (task), NULL); g_return_val_if_fail (E_IS_CAL_COMPONENT (priv->component), NULL); e_cal_component_get_summary (task->priv->component, &summary); return summary.value ? summary.value : ""; } /** * gtd_task_set_title: * @task: a #GtdTask * @description: the new title, or %NULL * * Updates the title of @task. The string is stripped off of * leading spaces. * * Returns: */ void gtd_task_set_title (GtdTask *task, const gchar *title) { ECalComponentText summary; g_return_if_fail (GTD_IS_TASK (task)); g_return_if_fail (g_utf8_validate (title, -1, NULL)); e_cal_component_get_summary (task->priv->component, &summary); if (g_strcmp0 (summary.value, title) != 0) { ECalComponentText new_summary; new_summary.value = title; new_summary.altrep = NULL; e_cal_component_set_summary (task->priv->component, &new_summary); g_object_notify (G_OBJECT (task), "title"); } } /** * gtd_task_abort: * @task: a #GtdTask * * Cancels any editing made on @task after the latest * call of @gtd_task_save. * * Returns: */ void gtd_task_abort (GtdTask *task) { g_return_if_fail (GTD_IS_TASK (task)); g_return_if_fail (E_IS_CAL_COMPONENT (task->priv->component)); e_cal_component_abort_sequence (task->priv->component); } /** * gtd_task_save: * @task: a #GtdTask * * Save any changes made on @task. * * Returns: */ void gtd_task_save (GtdTask *task) { g_return_if_fail (GTD_IS_TASK (task)); g_return_if_fail (E_IS_CAL_COMPONENT (task->priv->component)); e_cal_component_commit_sequence (task->priv->component); } gint gtd_task_compare (GtdTask *t1, GtdTask *t2) { GDateTime *dt1; GDateTime *dt2; gboolean completed1; gboolean completed2; gint p1; gint p2; gint retval; if (!t1 && !t2) return 0; if (!t1) return 1; if (!t2) return -1; /* * First, compare by ::complete. */ completed1 = gtd_task_get_complete (t1); completed2 = gtd_task_get_complete (t2); retval = completed1 - completed2; if (retval != 0) return retval; /* * Second, compare by ::priority */ p1 = gtd_task_get_priority (t1); p2 = gtd_task_get_priority (t2); retval = p2 - p1; if (retval != 0) return retval; /* * Third, compare by ::due-date. */ dt1 = gtd_task_get_due_date (t1); dt2 = gtd_task_get_due_date (t2); if (!dt1 && !dt2) retval = 0; else if (!dt1) retval = 1; else if (!dt2) retval = -1; else retval = g_date_time_compare (dt1, dt2); if (dt1) g_date_time_unref (dt1); if (dt2) g_date_time_unref (dt2); if (retval != 0) return retval; /* * If they're equal up to now, compare by title. */ return g_strcmp0 (gtd_task_get_title (t1), gtd_task_get_title (t2)); } gnome-todo-3.18.1/src/gtd-task.h000066400000000000000000000060021260744630400163360ustar00rootroot00000000000000/* gtd-task.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TASK_H #define GTD_TASK_H #include "gtd-object.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_TASK (gtd_task_get_type()) G_DECLARE_FINAL_TYPE (GtdTask, gtd_task, GTD, TASK, GtdObject) GtdTask* gtd_task_new (ECalComponent *component); gboolean gtd_task_get_complete (GtdTask *task); void gtd_task_set_complete (GtdTask *task, gboolean complete); ECalComponent* gtd_task_get_component (GtdTask *task); const gchar* gtd_task_get_description (GtdTask *task); void gtd_task_set_description (GtdTask *task, const gchar *description); GDateTime* gtd_task_get_due_date (GtdTask *task); void gtd_task_set_due_date (GtdTask *task, GDateTime *dt); GtdTaskList* gtd_task_get_list (GtdTask *task); void gtd_task_set_list (GtdTask *task, GtdTaskList *list); gint gtd_task_get_priority (GtdTask *task); void gtd_task_set_priority (GtdTask *task, gint position); const gchar* gtd_task_get_title (GtdTask *task); void gtd_task_set_title (GtdTask *task, const gchar *title); void gtd_task_abort (GtdTask *task); void gtd_task_save (GtdTask *task); gint gtd_task_compare (GtdTask *t1, GtdTask *t2); G_END_DECLS #endif /* GTD_TASK_H */ gnome-todo-3.18.1/src/gtd-types.h000066400000000000000000000033661260744630400165520ustar00rootroot00000000000000/* gtd-types.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_TYPES_H #define GTD_TYPES_H #include #include "gtd-enums.h" G_BEGIN_DECLS typedef struct _GtdApplication GtdApplication; typedef struct _GtdInitialSetupWindow GtdInitialSetupWindow; typedef struct _GtdListView GtdListView; typedef struct _GtdManager GtdManager; typedef struct _GtdNotification GtdNotification; typedef struct _GtdNotificationWidget GtdNotificationWidget; typedef struct _GtdObject GtdObject; typedef struct _GtdStorage GtdStorage; typedef struct _GtdStoragePopover GtdStoragePopover; typedef struct _GtdStorageRow GtdStorageRow; typedef struct _GtdStorageSelector GtdStorageSelector; typedef struct _GtdTask GtdTask; typedef struct _GtdTaskList GtdTaskList; typedef struct _GtdTaskListItem GtdTaskListItem; typedef struct _GtdTaskRow GtdTaskRow; typedef struct _GtdWindow GtdWindow; G_END_DECLS #endif /* GTD_TYPES_H */ gnome-todo-3.18.1/src/gtd-window.c000066400000000000000000001201251260744630400167010ustar00rootroot00000000000000/* gtd-window.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-application.h" #include "gtd-enum-types.h" #include "gtd-task-list-view.h" #include "gtd-manager.h" #include "gtd-notification.h" #include "gtd-notification-widget.h" #include "gtd-storage-dialog.h" #include "gtd-task.h" #include "gtd-task-list.h" #include "gtd-task-list-item.h" #include "gtd-window.h" #include typedef struct { GtkWidget *action_bar; GtkButton *back_button; GtkWidget *cancel_selection_button; GtkColorButton *color_button; GtkWidget *gear_menu_button; GtkHeaderBar *headerbar; GtkFlowBox *lists_flowbox; GtkStack *main_stack; GtkWidget *new_list_button; GtkWidget *new_list_popover; GtdNotificationWidget *notification_widget; GtkWidget *remove_button; GtkWidget *rename_button; GtdTaskListView *scheduled_list_view; GtkSearchBar *search_bar; GtkToggleButton *search_button; GtkSearchEntry *search_entry; GtkWidget *select_button; GtkStack *stack; GtkStackSwitcher *stack_switcher; GtdStorageDialog *storage_dialog; GtdTaskListView *today_list_view; GtdTaskListView *list_view; /* rename popover */ GtkWidget *rename_entry; GtkWidget *rename_popover; GtkWidget *save_rename_button; /* mode */ GtdWindowMode mode; /* loading notification */ GtdNotification *loading_notification; guint save_geometry_timeout_id; GtdManager *manager; } GtdWindowPrivate; struct _GtdWindow { GtkApplicationWindow application; /*< private >*/ GtdWindowPrivate *priv; }; #define SAVE_GEOMETRY_ID_TIMEOUT 100 /* ms */ static void gtd_window__create_new_list (GSimpleAction *simple, GVariant *parameter, gpointer user_data); static void gtd_window__change_storage_action (GSimpleAction *simple, GVariant *parameter, gpointer user_data); G_DEFINE_TYPE_WITH_PRIVATE (GtdWindow, gtd_window, GTK_TYPE_APPLICATION_WINDOW) static const GActionEntry gtd_window_entries[] = { { "change-storage", gtd_window__change_storage_action }, { "new-list", gtd_window__create_new_list } }; enum { PROP_0, PROP_MANAGER, PROP_MODE, LAST_PROP }; /* GtdManager's error notifications */ typedef struct { GtdWindow *window; gchar *primary_text; gchar *secondary_text; } ErrorData; static void error_data_free (ErrorData *error_data) { g_free (error_data->primary_text); g_free (error_data->secondary_text); g_free (error_data); } static void error_message_notification_primary_action (GtdNotification *notification, gpointer user_data) { error_data_free (user_data); } static void error_message_notification_secondary_action (GtdNotification *notification, gpointer user_data) { GtkWidget *message_dialog; ErrorData *data; data = user_data; message_dialog = gtk_message_dialog_new (GTK_WINDOW (data->window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_CLOSE, "%s", data->primary_text); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (message_dialog), "%s", data->secondary_text); g_signal_connect (message_dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL); gtk_widget_show (message_dialog); error_data_free (data); } static void gtd_window__load_geometry (GtdWindow *window) { GSettings *settings; GVariant *variant; gboolean maximized; const gint32 *position; const gint32 *size; gsize n_elements; settings = gtd_manager_get_settings (window->priv->manager); /* load window settings: size */ variant = g_settings_get_value (settings, "window-size"); size = g_variant_get_fixed_array (variant, &n_elements, sizeof (gint32)); if (n_elements == 2) gtk_window_set_default_size (GTK_WINDOW (window), size[0], size[1]); g_variant_unref (variant); /* load window settings: position */ variant = g_settings_get_value (settings, "window-position"); position = g_variant_get_fixed_array (variant, &n_elements, sizeof (gint32)); if (n_elements == 2) gtk_window_move (GTK_WINDOW (window), position[0], position[1]); g_variant_unref (variant); /* load window settings: state */ maximized = g_settings_get_boolean (settings, "window-maximized"); if (maximized) gtk_window_maximize (GTK_WINDOW (window)); } static gboolean gtd_window__save_geometry (gpointer user_data) { GtdWindowPrivate *priv; GdkWindowState state; GdkWindow *window; GtkWindow *self; GSettings *settings; gboolean maximized; GVariant *variant; gint32 size[2]; gint32 position[2]; self = GTK_WINDOW (user_data); window = gtk_widget_get_window (GTK_WIDGET (self)); state = gdk_window_get_state (window); priv = GTD_WINDOW (self)->priv; settings = gtd_manager_get_settings (priv->manager); /* save window's state */ maximized = state & GDK_WINDOW_STATE_MAXIMIZED; g_settings_set_boolean (settings, "window-maximized", maximized); if (maximized) { priv->save_geometry_timeout_id = 0; return FALSE; } /* save window's size */ gtk_window_get_size (self, (gint *) &size[0], (gint *) &size[1]); variant = g_variant_new_fixed_array (G_VARIANT_TYPE_INT32, size, 2, sizeof (size[0])); g_settings_set_value (settings, "window-size", variant); /* save windows's position */ gtk_window_get_position (self, (gint *) &position[0], (gint *) &position[1]); variant = g_variant_new_fixed_array (G_VARIANT_TYPE_INT32, position, 2, sizeof (position[0])); g_settings_set_value (settings, "window-position", variant); priv->save_geometry_timeout_id = 0; return FALSE; } static GtdTaskListItem* get_selected_list (GtdWindow *window) { GtdWindowPrivate *priv; GtdTaskListItem *item; GList *children; GList *l; priv = window->priv; item = NULL; /* Retrieve the only selected task list */ children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox)); for (l = children; l != NULL; l = l->next) { if (gtd_task_list_item_get_selected (l->data)) { item = l->data; break; } } g_list_free (children); return item; } static void gtd_window__remove_button_clicked (GtdWindow *window) { GtdWindowPrivate *priv; GtkWidget *dialog; GtkWidget *button; GList *children; GList *l; gint response; priv = window->priv; dialog = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_USE_HEADER_BAR, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Remove the selected task lists?")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Once removed, the task lists cannot be recovered.")); /* Focus the Cancel button by default */ gtk_dialog_add_button (GTK_DIALOG (dialog), _("Cancel"), GTK_RESPONSE_CANCEL); button = gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL); gtk_widget_grab_focus (button); /* Make the Remove button visually destructive */ gtk_dialog_add_button (GTK_DIALOG (dialog), _("Remove task lists"), GTK_RESPONSE_ACCEPT); button = gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT); gtk_style_context_add_class (gtk_widget_get_style_context (button), "destructive-action"); response = gtk_dialog_run (GTK_DIALOG (dialog)); /* Remove selected lists */ if (response == GTK_RESPONSE_ACCEPT) { children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox)); for (l = children; l != NULL; l = l->next) { if (gtd_task_list_item_get_selected (l->data)) { GtdTaskList *list; list = gtd_task_list_item_get_list (l->data); if (gtd_task_list_is_removable (list)) gtd_manager_remove_task_list (priv->manager, list); } } g_list_free (children); } gtk_widget_destroy (dialog); /* After removing the lists, exit SELECTION mode */ gtd_window_set_mode (window, GTD_WINDOW_MODE_NORMAL); } static void gtd_window__rename_button_clicked (GtdWindow *window) { GtdWindowPrivate *priv; GtdTaskListItem *item; priv = window->priv; item = get_selected_list (window); if (item) { GtdTaskList *list; list = gtd_task_list_item_get_list (item); gtk_popover_set_relative_to (GTK_POPOVER (priv->rename_popover), GTK_WIDGET (item)); gtk_entry_set_text (GTK_ENTRY (priv->rename_entry), gtd_task_list_get_name (list)); gtk_widget_show (priv->rename_popover); gtk_widget_grab_focus (priv->rename_entry); } } static void gtd_window__rename_entry_text_changed (GObject *object, GParamSpec *pspec, GtdWindow *window) { gtk_widget_set_sensitive (window->priv->save_rename_button, gtk_entry_get_text_length (GTK_ENTRY (object)) > 0); } static void gtd_window__rename_task_list (GtdWindow *window) { GtdWindowPrivate *priv; GtdTaskListItem *item; priv = window->priv; /* * If the save_rename_button is insensitive, the list name is * empty and cannot be saved. */ if (!gtk_widget_get_sensitive (priv->save_rename_button)) return; item = get_selected_list (window); if (item) { GtdTaskList *list; list = gtd_task_list_item_get_list (item); gtd_task_list_set_name (list, gtk_entry_get_text (GTK_ENTRY (priv->rename_entry))); gtk_flow_box_invalidate_sort (GTK_FLOW_BOX (priv->lists_flowbox)); gtd_window_set_mode (window, GTD_WINDOW_MODE_NORMAL); gtk_widget_hide (priv->rename_popover); } } static void gtd_window__stack_visible_child_cb (GtdWindow *window) { GtdWindowPrivate *priv; gboolean is_list_view; priv = window->priv; is_list_view = g_strcmp0 (gtk_stack_get_visible_child_name (priv->main_stack), "overview") == 0 && g_strcmp0 (gtk_stack_get_visible_child_name (priv->stack), "lists") == 0; gtk_widget_set_visible (GTK_WIDGET (priv->search_button), is_list_view); gtk_widget_set_visible (GTK_WIDGET (priv->select_button), is_list_view); gtk_widget_set_visible (priv->gear_menu_button, !is_list_view); } static void update_action_bar_buttons (GtdWindow *window) { GtdWindowPrivate *priv; GList *children; GList *l; gboolean all_lists_removable; gint selected_lists; priv = window->priv; children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox)); selected_lists = 0; all_lists_removable = TRUE; for (l = children; l != NULL; l = l->next) { GtdTaskList *list; list = gtd_task_list_item_get_list (l->data); if (gtd_task_list_item_get_selected (l->data)) { selected_lists++; if (!gtd_task_list_is_removable (list)) all_lists_removable = FALSE; } } gtk_widget_set_sensitive (priv->remove_button, selected_lists > 0 && all_lists_removable); gtk_widget_set_sensitive (priv->rename_button, selected_lists == 1); } static void gtd_window__select_button_toggled (GtkToggleButton *button, GtdWindow *window) { gtd_window_set_mode (window, gtk_toggle_button_get_active (button) ? GTD_WINDOW_MODE_SELECTION : GTD_WINDOW_MODE_NORMAL); } static void gtd_window__cancel_selection_button_clicked (GtkWidget *button, GtdWindow *window) { gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (window->priv->select_button), FALSE); } static void gtd_window_update_list_counters (GtdTaskList *list, GtdTask *task, GtdWindow *window) { GtdWindowPrivate *priv; GtkWidget *container_child; gboolean is_today; GList *tasks; GList *l; gchar *new_title; gint counter; g_return_if_fail (GTD_IS_WINDOW (window)); g_return_if_fail (GTD_IS_TASK_LIST (list)); priv = window->priv; /* Count the number of incomplete tasks */ counter = 0; tasks = gtd_task_list_get_tasks (list); for (l = tasks; l != NULL; l = l->next) { if (!gtd_task_get_complete (l->data)) counter++; } /* Update the list title */ is_today = list == gtd_manager_get_today_list (priv->manager); container_child = is_today ? GTK_WIDGET (priv->today_list_view) : GTK_WIDGET (priv->scheduled_list_view); if (counter == 0) { new_title = g_strdup_printf ("%s", is_today ? _("Today") : _("Scheduled")); } else { new_title = g_strdup_printf ("%s (%d)", is_today ? _("Today") : _("Scheduled"), counter); } gtk_container_child_set (GTK_CONTAINER (priv->stack), container_child, "title", new_title, NULL); g_list_free (tasks); g_free (new_title); } static void gtd_window__create_new_list (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GtdWindowPrivate *priv; g_return_if_fail (GTD_IS_WINDOW (user_data)); priv = GTD_WINDOW (user_data)->priv; gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->new_list_button), TRUE); } static void gtd_window__change_storage_action (GSimpleAction *simple, GVariant *parameter, gpointer user_data) { GtdWindowPrivate *priv; g_return_if_fail (GTD_IS_WINDOW (user_data)); priv = GTD_WINDOW (user_data)->priv; gtk_dialog_run (GTK_DIALOG (priv->storage_dialog)); } static void gtd_window__list_color_set (GtkColorChooser *button, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; GtdTaskList *list; GdkRGBA new_color; g_return_if_fail (GTD_IS_WINDOW (user_data)); g_return_if_fail (gtd_task_list_view_get_task_list (priv->list_view)); list = gtd_task_list_view_get_task_list (priv->list_view); g_debug ("%s: %s: %s", G_STRFUNC, _("Setting new color for task list"), gtd_task_list_get_name (list)); gtk_color_chooser_get_rgba (button, &new_color); gtd_task_list_set_color (list, &new_color); gtd_manager_save_task_list (priv->manager, list); } static gboolean gtd_window__on_key_press_event (GtkWidget *widget, GdkEvent *event, GtkSearchBar *bar) { GtdWindowPrivate *priv; g_return_val_if_fail (GTD_IS_WINDOW (widget), TRUE); priv = GTD_WINDOW (widget)->priv; if (g_strcmp0 (gtk_stack_get_visible_child_name (GTK_STACK (priv->main_stack)), "overview") == 0 && g_strcmp0 (gtk_stack_get_visible_child_name (GTK_STACK (priv->stack)), "lists") == 0) { return gtk_search_bar_handle_event (bar, event); } return FALSE; } static gint gtd_window__flowbox_sort_func (GtdTaskListItem *a, GtdTaskListItem *b, gpointer user_data) { GtdTaskList *l1; GtdTaskList *l2; gint retval = 0; l1 = gtd_task_list_item_get_list (a); l2 = gtd_task_list_item_get_list (b); retval = g_strcmp0 (gtd_task_list_get_origin (l1), gtd_task_list_get_origin (l2)); if (retval != 0) return retval; return g_strcmp0 (gtd_task_list_get_name (l1), gtd_task_list_get_name (l2)); } static gboolean gtd_window__flowbox_filter_func (GtdTaskListItem *item, GtdWindow *window) { GtdWindowPrivate *priv; GtdTaskList *list; gboolean return_value; gchar *search_folded; gchar *list_name_folded; gchar *haystack; g_return_val_if_fail (GTD_IS_WINDOW (window), FALSE); priv = window->priv; list = gtd_task_list_item_get_list (item); haystack = NULL; search_folded = g_utf8_casefold (gtk_entry_get_text (GTK_ENTRY (priv->search_entry)), -1); list_name_folded = g_utf8_casefold (gtd_task_list_get_name (list), -1); if (!search_folded || search_folded[0] == '\0') { return_value = TRUE; goto out; } haystack = g_strstr_len (list_name_folded, -1, search_folded); return_value = (haystack != NULL); out: g_free (search_folded); g_free (list_name_folded); return return_value; } static void gtd_window__manager_ready_changed (GObject *source, GParamSpec *spec, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; g_return_if_fail (GTD_IS_WINDOW (user_data)); if (gtd_object_get_ready (GTD_OBJECT (source))) { gtd_notification_widget_cancel (priv->notification_widget, priv->loading_notification); } else { gtd_notification_widget_notify (priv->notification_widget, priv->loading_notification); } } static void gtd_window__back_button_clicked (GtkButton *button, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; g_return_if_fail (GTD_IS_WINDOW (user_data)); gtk_stack_set_visible_child_name (priv->main_stack, "overview"); gtk_header_bar_set_custom_title (priv->headerbar, GTK_WIDGET (priv->stack_switcher)); gtk_header_bar_set_title (priv->headerbar, _("To Do")); gtk_widget_hide (GTK_WIDGET (priv->back_button)); gtk_widget_hide (GTK_WIDGET (priv->color_button)); } static void gtd_window__list_selected (GtkFlowBox *flowbox, GtdTaskListItem *item, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; GtdTaskList *list; GdkRGBA *list_color; g_return_if_fail (GTD_IS_WINDOW (user_data)); g_return_if_fail (GTD_IS_TASK_LIST_ITEM (item)); switch (priv->mode) { case GTD_WINDOW_MODE_SELECTION: gtd_task_list_item_set_selected (item, !gtd_task_list_item_get_selected (item)); update_action_bar_buttons (GTD_WINDOW (user_data)); break; case GTD_WINDOW_MODE_NORMAL: list = gtd_task_list_item_get_list (item); list_color = gtd_task_list_get_color (list); g_signal_handlers_block_by_func (priv->color_button, gtd_window__list_color_set, user_data); gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (priv->color_button), list_color); gtk_stack_set_visible_child_name (priv->main_stack, "tasks"); gtk_header_bar_set_title (priv->headerbar, gtd_task_list_get_name (list)); gtk_header_bar_set_subtitle (priv->headerbar, gtd_task_list_get_origin (list)); gtk_header_bar_set_custom_title (priv->headerbar, NULL); gtk_search_bar_set_search_mode (priv->search_bar, FALSE); gtd_task_list_view_set_task_list (priv->list_view, list); gtd_task_list_view_set_show_completed (priv->list_view, FALSE); gtk_widget_show (GTK_WIDGET (priv->back_button)); gtk_widget_show (GTK_WIDGET (priv->color_button)); g_signal_handlers_unblock_by_func (priv->color_button, gtd_window__list_color_set, user_data); gdk_rgba_free (list_color); break; default: g_assert_not_reached (); } } static void gtd_window__list_added (GtdManager *manager, GtdTaskList *list, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; GtkWidget *item; item = gtd_task_list_item_new (list); g_object_bind_property (user_data, "mode", item, "mode", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE); gtk_widget_show (item); gtk_flow_box_insert (priv->lists_flowbox, item, -1); } static void gtd_window__list_removed (GtdManager *manager, GtdTaskList *list, gpointer user_data) { GtdWindowPrivate *priv = GTD_WINDOW (user_data)->priv; GList *children; GList *l; children = gtk_container_get_children (GTK_CONTAINER (priv->lists_flowbox)); for (l = children; l != NULL; l = l->next) { if (gtd_task_list_item_get_list (l->data) == list) gtk_widget_destroy (l->data); } g_list_free (children); } static void gtd_window__show_error_message (GtdManager *manager, const gchar *primary_text, const gchar *secondary_text, GtdWindow *window) { GtdNotification *notification; ErrorData *error_data; error_data = g_new0 (ErrorData, 1); notification = gtd_notification_new (primary_text, 7500); error_data->window = window; error_data->primary_text = g_strdup (primary_text); error_data->secondary_text = g_strdup (secondary_text); gtd_notification_set_primary_action (notification, error_message_notification_primary_action, error_data); gtd_notification_set_secondary_action (notification, _("Details"), error_message_notification_secondary_action, error_data); gtd_window_notify (window, notification); } static gboolean gtd_window_configure_event (GtkWidget *widget, GdkEventConfigure *event) { GtdWindowPrivate *priv; GtdWindow *window; gboolean retval; window = GTD_WINDOW (widget); priv = window->priv; if (priv->save_geometry_timeout_id != 0) { g_source_remove (priv->save_geometry_timeout_id); priv->save_geometry_timeout_id = 0; } priv->save_geometry_timeout_id = g_timeout_add (SAVE_GEOMETRY_ID_TIMEOUT, gtd_window__save_geometry, window); retval = GTK_WIDGET_CLASS (gtd_window_parent_class)->configure_event (widget, event); return retval; } static gboolean gtd_window_state_event (GtkWidget *widget, GdkEventWindowState *event) { GtdWindowPrivate *priv; GtdWindow *window; gboolean retval; window = GTD_WINDOW (widget); priv = window->priv; if (priv->save_geometry_timeout_id != 0) { g_source_remove (priv->save_geometry_timeout_id); priv->save_geometry_timeout_id = 0; } priv->save_geometry_timeout_id = g_timeout_add (SAVE_GEOMETRY_ID_TIMEOUT, gtd_window__save_geometry, window); retval = GTK_WIDGET_CLASS (gtd_window_parent_class)->window_state_event (widget, event); return retval; } static void gtd_window_constructed (GObject *object) { GtdWindowPrivate *priv = GTD_WINDOW (object)->priv; GtkApplication *app; GMenu *menu; G_OBJECT_CLASS (gtd_window_parent_class)->constructed (object); /* load stored size */ gtd_window__load_geometry (GTD_WINDOW (object)); /* gear menu */ app = GTK_APPLICATION (g_application_get_default ()); menu = gtk_application_get_menu_by_id (app, "gear-menu"); gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (priv->gear_menu_button), G_MENU_MODEL (menu)); gtk_flow_box_set_sort_func (priv->lists_flowbox, (GtkFlowBoxSortFunc) gtd_window__flowbox_sort_func, NULL, NULL); gtk_flow_box_set_filter_func (priv->lists_flowbox, (GtkFlowBoxFilterFunc) gtd_window__flowbox_filter_func, object, NULL); g_object_bind_property (object, "manager", priv->new_list_popover, "manager", G_BINDING_DEFAULT); g_object_bind_property (object, "manager", priv->storage_dialog, "manager", G_BINDING_DEFAULT); } GtkWidget* gtd_window_new (GtdApplication *application) { return g_object_new (GTD_TYPE_WINDOW, "application", application, "manager", gtd_application_get_manager (application), NULL); } static void gtd_window_finalize (GObject *object) { G_OBJECT_CLASS (gtd_window_parent_class)->finalize (object); } static void gtd_window_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdWindow *self = GTD_WINDOW (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; case PROP_MODE: g_value_set_enum (value, self->priv->mode); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_window_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdWindow *self = GTD_WINDOW (object); GList *lists; GList *l; switch (prop_id) { case PROP_MANAGER: self->priv->manager = g_value_get_object (value); gtd_task_list_view_set_manager (self->priv->list_view, self->priv->manager); gtd_task_list_view_set_manager (self->priv->today_list_view, self->priv->manager); gtd_task_list_view_set_manager (self->priv->scheduled_list_view, self->priv->manager); g_signal_connect (self->priv->manager, "notify::ready", G_CALLBACK (gtd_window__manager_ready_changed), self); g_signal_connect (self->priv->manager, "list-added", G_CALLBACK (gtd_window__list_added), self); g_signal_connect (self->priv->manager, "list-removed", G_CALLBACK (gtd_window__list_removed), self); g_signal_connect (self->priv->manager, "show-error-message", G_CALLBACK (gtd_window__show_error_message), self); /* Add already loaded lists */ lists = gtd_manager_get_task_lists (self->priv->manager); for (l = lists; l != NULL; l = l->next) { gtd_window__list_added (self->priv->manager, l->data, object); } g_list_free (lists); /* Setup 'Today' and 'Scheduled' lists */ gtd_task_list_view_set_task_list (self->priv->today_list_view, gtd_manager_get_today_list (self->priv->manager)); gtd_task_list_view_set_task_list (self->priv->scheduled_list_view, gtd_manager_get_scheduled_list (self->priv->manager)); g_signal_connect (gtd_manager_get_today_list (self->priv->manager), "task-added", G_CALLBACK (gtd_window_update_list_counters), self); g_signal_connect (gtd_manager_get_today_list (self->priv->manager), "task-updated", G_CALLBACK (gtd_window_update_list_counters), self); g_signal_connect (gtd_manager_get_today_list (self->priv->manager), "task-removed", G_CALLBACK (gtd_window_update_list_counters), self); g_signal_connect (gtd_manager_get_scheduled_list (self->priv->manager), "task-added", G_CALLBACK (gtd_window_update_list_counters), self); g_signal_connect (gtd_manager_get_scheduled_list (self->priv->manager), "task-updated", G_CALLBACK (gtd_window_update_list_counters), self); g_signal_connect (gtd_manager_get_scheduled_list (self->priv->manager), "task-removed", G_CALLBACK (gtd_window_update_list_counters), self); g_object_notify (object, "manager"); break; case PROP_MODE: gtd_window_set_mode (self, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_window_class_init (GtdWindowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_window_finalize; object_class->constructed = gtd_window_constructed; object_class->get_property = gtd_window_get_property; object_class->set_property = gtd_window_set_property; widget_class->configure_event = gtd_window_configure_event; widget_class->window_state_event = gtd_window_state_event; /** * GtdWindow::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this window's application", "The manager of the window's application", GTD_TYPE_MANAGER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtdWindow::mode: * * The current interaction mode of the window. */ g_object_class_install_property ( object_class, PROP_MODE, g_param_spec_enum ("mode", "Mode of this window", "The interaction mode of the window", GTD_TYPE_WINDOW_MODE, GTD_WINDOW_MODE_NORMAL, G_PARAM_READWRITE)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/window.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, action_bar); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, back_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, cancel_selection_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, color_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, gear_menu_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, headerbar); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, lists_flowbox); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, list_view); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, main_stack); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, new_list_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, new_list_popover); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, notification_widget); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, remove_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, rename_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, rename_entry); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, rename_popover); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, save_rename_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, scheduled_list_view); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, stack); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, search_bar); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, search_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, search_entry); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, select_button); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, stack_switcher); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, storage_dialog); gtk_widget_class_bind_template_child_private (widget_class, GtdWindow, today_list_view); gtk_widget_class_bind_template_callback (widget_class, gtd_window__back_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_window__cancel_selection_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_window__list_color_set); gtk_widget_class_bind_template_callback (widget_class, gtd_window__list_selected); gtk_widget_class_bind_template_callback (widget_class, gtd_window__on_key_press_event); gtk_widget_class_bind_template_callback (widget_class, gtd_window__remove_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_window__rename_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_window__rename_entry_text_changed); gtk_widget_class_bind_template_callback (widget_class, gtd_window__rename_task_list); gtk_widget_class_bind_template_callback (widget_class, gtd_window__select_button_toggled); gtk_widget_class_bind_template_callback (widget_class, gtd_window__stack_visible_child_cb); } static void gtd_window_init (GtdWindow *self) { self->priv = gtd_window_get_instance_private (self); self->priv->loading_notification = gtd_notification_new (_("Loading your task lists…"), 0); gtd_object_set_ready (GTD_OBJECT (self->priv->loading_notification), FALSE); /* add actions */ g_action_map_add_action_entries (G_ACTION_MAP (self), gtd_window_entries, G_N_ELEMENTS (gtd_window_entries), self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_window_get_manager: * @window: a #GtdWindow * * Retrieves a weak reference for the @window's #GtdManager. * * Returns: (transfer none): the #GtdManager of @window. */ GtdManager* gtd_window_get_manager (GtdWindow *window) { g_return_val_if_fail (GTD_IS_WINDOW (window), NULL); return window->priv->manager; } /** * gtd_window_notify: * @window: a #GtdWindow * @notification: a #GtdNotification * * Shows a notification on the top of the main window. * * Returns: */ void gtd_window_notify (GtdWindow *window, GtdNotification *notification) { GtdWindowPrivate *priv; g_return_if_fail (GTD_IS_WINDOW (window)); priv = window->priv; gtd_notification_widget_notify (priv->notification_widget, notification); } /** * gtd_window_cancel_notification: * @window: a #GtdManager * @notification: a #GtdNotification * * Cancels @notification. * * Returns: */ void gtd_window_cancel_notification (GtdWindow *window, GtdNotification *notification) { GtdWindowPrivate *priv; g_return_if_fail (GTD_IS_WINDOW (window)); priv = window->priv; gtd_notification_widget_cancel (priv->notification_widget, notification); } /** * gtd_window_get_mode: * @window: a #GtdWindow * * Retrieves the current mode of @window. * * Returns: the #GtdWindow::mode property value */ GtdWindowMode gtd_window_get_mode (GtdWindow *window) { g_return_val_if_fail (GTD_IS_WINDOW (window), GTD_WINDOW_MODE_NORMAL); return window->priv->mode; } /** * gtd_window_set_mode: * @window: a #GtdWindow * @mode: a #GtdWindowMode * * Sets the current window mode to @mode. * * Returns: */ void gtd_window_set_mode (GtdWindow *window, GtdWindowMode mode) { GtdWindowPrivate *priv; g_return_if_fail (GTD_IS_WINDOW (window)); priv = window->priv; if (priv->mode != mode) { GtkStyleContext *context; gboolean is_selection_mode; priv->mode = mode; context = gtk_widget_get_style_context (GTK_WIDGET (priv->headerbar)); is_selection_mode = (mode == GTD_WINDOW_MODE_SELECTION); gtk_widget_set_visible (priv->select_button, !is_selection_mode); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->select_button), is_selection_mode); gtk_widget_set_visible (priv->cancel_selection_button, is_selection_mode); gtk_widget_set_visible (GTK_WIDGET (priv->new_list_button), !is_selection_mode); gtk_widget_set_visible (GTK_WIDGET (priv->action_bar), is_selection_mode); gtk_header_bar_set_show_close_button (priv->headerbar, !is_selection_mode); gtk_header_bar_set_subtitle (priv->headerbar, NULL); if (is_selection_mode) { gtk_style_context_add_class (context, "selection-mode"); gtk_header_bar_set_custom_title (priv->headerbar, NULL); gtk_header_bar_set_title (priv->headerbar, _("Click a task list to select")); update_action_bar_buttons (window); } else { /* Unselect all items when leaving selection mode */ gtk_container_foreach (GTK_CONTAINER (priv->lists_flowbox), (GtkCallback) gtd_task_list_item_set_selected, FALSE); gtk_style_context_remove_class (context, "selection-mode"); gtk_header_bar_set_custom_title (priv->headerbar, GTK_WIDGET (priv->stack_switcher)); gtk_header_bar_set_title (priv->headerbar, _("To Do")); } g_object_notify (G_OBJECT (window), "mode"); } } gnome-todo-3.18.1/src/gtd-window.h000066400000000000000000000035051260744630400167100ustar00rootroot00000000000000/* gtd-window.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_WINDOW_H #define GTD_WINDOW_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_WINDOW (gtd_window_get_type()) G_DECLARE_FINAL_TYPE (GtdWindow, gtd_window, GTD, WINDOW, GtkApplicationWindow) GtkWidget* gtd_window_new (GtdApplication *application); GtdManager* gtd_window_get_manager (GtdWindow *window); void gtd_window_notify (GtdWindow *window, GtdNotification *notification); void gtd_window_cancel_notification (GtdWindow *window, GtdNotification *notification); GtdWindowMode gtd_window_get_mode (GtdWindow *window); void gtd_window_set_mode (GtdWindow *window, GtdWindowMode mode); G_END_DECLS #endif /* GTD_WINDOW_H */ gnome-todo-3.18.1/src/main.c000066400000000000000000000025201260744630400155400ustar00rootroot00000000000000/* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 2; tab-width: 2 -*- */ /* * main.c * Copyright (C) 2015 Georges Basile Stavracas Neto * * gnome-todo 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. * * gnome-todo 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 . */ #include #include #include #include "gtd-application.h" int main (int argc, char *argv[]) { GtdApplication *app; int status; #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif app = gtd_application_new (); g_application_set_default (G_APPLICATION (app)); status = g_application_run (G_APPLICATION (app), argc, argv); g_object_unref (app); return status; } gnome-todo-3.18.1/src/notification/000077500000000000000000000000001260744630400171375ustar00rootroot00000000000000gnome-todo-3.18.1/src/notification/gtd-notification-widget.c000066400000000000000000000225111260744630400240270ustar00rootroot00000000000000/* gtd-notification-widget.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-notification.h" #include "gtd-notification-widget.h" typedef enum { STATE_IDLE, STATE_EXECUTING } GtdExecutionState; typedef struct { /* widgets */ GtkButton *secondary_button; GtkSpinner *spinner; GtkLabel *text_label; /* internal data */ GQueue *queue; GtdNotification *current_notification; GtdExecutionState state; /* bindings */ GBinding *has_secondary_action_binding; GBinding *message_label_binding; GBinding *ready_binding; GBinding *secondary_label_binding; } GtdNotificationWidgetPrivate; struct _GtdNotificationWidget { GtkRevealer parent; /*< private >*/ GtdNotificationWidgetPrivate *priv; }; /* Prototypes */ static void gtd_notification_widget_execute_notification (GtdNotificationWidget *widget, GtdNotification *notification); G_DEFINE_TYPE_WITH_PRIVATE (GtdNotificationWidget, gtd_notification_widget, GTK_TYPE_REVEALER) static void gtd_notification_widget_clear_bindings (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; g_clear_pointer (&priv->has_secondary_action_binding, g_binding_unbind); g_clear_pointer (&priv->message_label_binding, g_binding_unbind); g_clear_pointer (&priv->ready_binding, g_binding_unbind); g_clear_pointer (&priv->secondary_label_binding, g_binding_unbind); } static void gtd_notification_widget__enter_notify_cb (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; /* Stop the timer when mouse enters */ if (priv->current_notification) gtd_notification_stop (priv->current_notification); } static void gtd_notification_widget__leave_notify_cb (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; /* Restart the timer when mouse leaves */ if (priv->current_notification) gtd_notification_start (priv->current_notification); } /* * This method is called after a notification is dismissed * or any action is taken, and it verifies if it should * continue the execution of notifications. */ static void gtd_notification_widget_stop_or_run (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; priv->current_notification = g_queue_pop_head (priv->queue); if (priv->current_notification) { gtk_revealer_set_reveal_child (GTK_REVEALER (widget), TRUE); gtd_notification_widget_execute_notification (widget, priv->current_notification); priv->state = STATE_EXECUTING; } else { gtk_revealer_set_reveal_child (GTK_REVEALER (widget), FALSE); priv->state = STATE_IDLE; } } static void gtd_notification_widget__close_button_clicked_cb (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; gtd_notification_stop (priv->current_notification); gtd_notification_execute_primary_action (priv->current_notification); } static void gtd_notification_widget__secondary_button_clicked_cb (GtdNotificationWidget *widget) { GtdNotificationWidgetPrivate *priv = widget->priv; gtd_notification_stop (priv->current_notification); gtd_notification_execute_secondary_action (priv->current_notification); } static void gtd_notification_widget__notification_executed_cb (GtdNotification *notification, GtdNotificationWidget *widget) { gtd_notification_widget_clear_bindings (widget); gtd_notification_widget_stop_or_run (widget); g_signal_handlers_disconnect_by_func (notification, gtd_notification_widget__notification_executed_cb, widget); } static void gtd_notification_widget_execute_notification (GtdNotificationWidget *widget, GtdNotification *notification) { GtdNotificationWidgetPrivate *priv = widget->priv; g_signal_connect (notification, "executed", G_CALLBACK (gtd_notification_widget__notification_executed_cb), widget); priv->has_secondary_action_binding = g_object_bind_property (notification, "has-secondary-action", priv->secondary_button, "visible", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); priv->message_label_binding = g_object_bind_property (notification, "text", priv->text_label, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); priv->ready_binding = g_object_bind_property (notification, "ready", priv->spinner, "visible", G_BINDING_DEFAULT | G_BINDING_INVERT_BOOLEAN | G_BINDING_SYNC_CREATE); priv->secondary_label_binding = g_object_bind_property (notification, "secondary-action-name", priv->secondary_button, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); gtd_notification_start (notification); } static void gtd_notification_widget_finalize (GObject *object) { GtdNotificationWidget *self = (GtdNotificationWidget *)object; GtdNotificationWidgetPrivate *priv = gtd_notification_widget_get_instance_private (self); g_queue_free (priv->queue); G_OBJECT_CLASS (gtd_notification_widget_parent_class)->finalize (object); } static void gtd_notification_widget_class_init (GtdNotificationWidgetClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_notification_widget_finalize; gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/notification.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdNotificationWidget, secondary_button); gtk_widget_class_bind_template_child_private (widget_class, GtdNotificationWidget, spinner); gtk_widget_class_bind_template_child_private (widget_class, GtdNotificationWidget, text_label); gtk_widget_class_bind_template_callback (widget_class, gtd_notification_widget__close_button_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, gtd_notification_widget__enter_notify_cb); gtk_widget_class_bind_template_callback (widget_class, gtd_notification_widget__leave_notify_cb); gtk_widget_class_bind_template_callback (widget_class, gtd_notification_widget__secondary_button_clicked_cb); } static void gtd_notification_widget_init (GtdNotificationWidget *self) { self->priv = gtd_notification_widget_get_instance_private (self); self->priv->queue = g_queue_new (); self->priv->state = STATE_IDLE; gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_notification_widget_new: * * Creates a new #GtdNotificationWidget. * * Returns: (transger full): a new #GtdNotificationWidget */ GtkWidget* gtd_notification_widget_new (void) { return g_object_new (GTD_TYPE_NOTIFICATION_WIDGET, NULL); } /** * gtd_notification_widget_notify: * * Adds @notification to the queue of notifications, and eventually * consume it. * * Returns: */ void gtd_notification_widget_notify (GtdNotificationWidget *widget, GtdNotification *notification) { GtdNotificationWidgetPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION_WIDGET (widget)); priv = widget->priv; if (!g_queue_find (priv->queue, notification)) { g_queue_push_tail (priv->queue, notification); if (priv->state == STATE_IDLE) gtd_notification_widget_stop_or_run (widget); } } /** * gtd_notification_widget_cancel: * * Cancel @notification from being displayed. If @notification is not * queued, nothing happens. * * Returns: */ void gtd_notification_widget_cancel (GtdNotificationWidget *widget, GtdNotification *notification) { GtdNotificationWidgetPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION_WIDGET (widget)); priv = widget->priv; if (notification == priv->current_notification) { gtd_notification_stop (notification); gtd_notification_widget_stop_or_run (widget); } else if (g_queue_find (priv->queue, notification)) { g_queue_remove (priv->queue, notification); } } gnome-todo-3.18.1/src/notification/gtd-notification-widget.h000066400000000000000000000031151260744630400240330ustar00rootroot00000000000000/* gtd-notification-widget.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_NOTIFICATION_WIDGET_H #define GTD_NOTIFICATION_WIDGET_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_NOTIFICATION_WIDGET (gtd_notification_widget_get_type()) G_DECLARE_FINAL_TYPE (GtdNotificationWidget, gtd_notification_widget, GTD, NOTIFICATION_WIDGET, GtkRevealer) GtkWidget* gtd_notification_widget_new (void); void gtd_notification_widget_notify (GtdNotificationWidget *widget, GtdNotification *notification); void gtd_notification_widget_cancel (GtdNotificationWidget *widget, GtdNotification *notification); G_END_DECLS #endif /* GTD_NOTIFICATION_WIDGET_H */ gnome-todo-3.18.1/src/notification/gtd-notification.c000066400000000000000000000343111260744630400225470ustar00rootroot00000000000000/* gtd-notification.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-notification.h" #include "gtd-object.h" #include typedef struct { gchar *text; gdouble timeout; gint timeout_id; GtdNotificationActionFunc primary_action; gboolean has_primary_action; gpointer primary_action_data; GtdNotificationActionFunc secondary_action; gboolean has_secondary_action; gpointer secondary_action_data; gchar *secondary_action_name; } GtdNotificationPrivate; struct _GtdNotification { GtdObject parent; /*< private >*/ GtdNotificationPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdNotification, gtd_notification, GTD_TYPE_OBJECT) enum { PROP_0, PROP_HAS_PRIMARY_ACTION, PROP_HAS_SECONDARY_ACTION, PROP_SECONDARY_ACTION_NAME, PROP_TEXT, PROP_TIMEOUT, LAST_PROP }; enum { EXECUTED, NUM_SIGNALS }; static guint signals[NUM_SIGNALS] = { 0, }; static gboolean execute_action_cb (GtdNotification *notification) { GtdNotificationPrivate *priv = notification->priv; priv->timeout_id = 0; gtd_notification_execute_primary_action (notification); return G_SOURCE_REMOVE; } static void gtd_notification_finalize (GObject *object) { GtdNotification *self = (GtdNotification *)object; GtdNotificationPrivate *priv = gtd_notification_get_instance_private (self); if (priv->timeout_id > 0) g_source_remove (priv->timeout_id); g_clear_pointer (&priv->secondary_action_name, g_free); g_clear_pointer (&priv->text, g_free); G_OBJECT_CLASS (gtd_notification_parent_class)->finalize (object); } static void gtd_notification_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdNotification *self = GTD_NOTIFICATION (object); switch (prop_id) { case PROP_HAS_PRIMARY_ACTION: g_value_set_boolean (value, self->priv->has_primary_action); break; case PROP_HAS_SECONDARY_ACTION: g_value_set_boolean (value, self->priv->has_secondary_action); break; case PROP_SECONDARY_ACTION_NAME: g_value_set_string (value, self->priv->secondary_action_name ? self->priv->secondary_action_name : ""); break; case PROP_TEXT: g_value_set_string (value, gtd_notification_get_text (self)); break; case PROP_TIMEOUT: g_value_set_double (value, gtd_notification_get_timeout (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_notification_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdNotification *self = GTD_NOTIFICATION (object); switch (prop_id) { case PROP_SECONDARY_ACTION_NAME: gtd_notification_set_secondary_action (self, g_value_get_string (value), self->priv->secondary_action, self->priv->secondary_action_data); break; case PROP_TEXT: gtd_notification_set_text (self, g_value_get_string (value)); break; case PROP_TIMEOUT: gtd_notification_set_timeout (self, g_value_get_double (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_notification_class_init (GtdNotificationClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_notification_finalize; object_class->get_property = gtd_notification_get_property; object_class->set_property = gtd_notification_set_property; /** * GtdNotification::has-primary-action: * * @TRUE if the notification has a primary action or @FALSE otherwise. The * primary action is triggered on notification timeout or dismiss. */ g_object_class_install_property ( object_class, PROP_HAS_PRIMARY_ACTION, g_param_spec_boolean ("has-primary-action", "Whether the notification has a primary action", "Whether the notification has the primary action, activated on timeout or dismiss", FALSE, G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY)); /** * GtdNotification::has-secondary-action: * * @TRUE if the notification has a secondary action or @FALSE otherwise. The * secondary action is triggered only by user explicit input. */ g_object_class_install_property ( object_class, PROP_HAS_SECONDARY_ACTION, g_param_spec_boolean ("has-secondary-action", "Whether the notification has a secondary action", "Whether the notification has the secondary action, activated by the user", FALSE, G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY)); /** * GtdNotification::secondary-action-name: * * The main text of the notification, usually a markuped text. */ g_object_class_install_property ( object_class, PROP_SECONDARY_ACTION_NAME, g_param_spec_string ("secondary-action-name", "Text of the secondary action button", "The text of the secondary action button", "", G_PARAM_READWRITE)); /** * GtdNotification::text: * * The main text of the notification, usually a markuped text. */ g_object_class_install_property ( object_class, PROP_TEXT, g_param_spec_string ("text", "Notification message", "The main message of the notification", "", G_PARAM_READWRITE)); /** * GtdNotification::timeout: * * The time the notification will be displayed. */ g_object_class_install_property ( object_class, PROP_TIMEOUT, g_param_spec_double ("timeout", "Notification timeout", "The time the notification is displayed", 0.0, 30000.0, 7500.00, G_PARAM_READWRITE)); /** * GtdNotification::executed: * * The ::executed signal is emmited after the primary or secondary * #GtdNotification action is executed. */ signals[EXECUTED] = g_signal_new ("executed", GTD_TYPE_NOTIFICATION, G_SIGNAL_RUN_FIRST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); } static void gtd_notification_init (GtdNotification *self) { self->priv = gtd_notification_get_instance_private (self); self->priv->secondary_action_name = NULL; self->priv->text = NULL; self->priv->timeout = 7500.0; } /** * gtd_notification_new: * * Creates a new notification with @text and @timeout. If @timeout is * 0, the notification is indefinitely displayed. * * Returns: (transfer full): a new #GtdNotification */ GtdNotification* gtd_notification_new (const gchar *text, gdouble timeout) { return g_object_new (GTD_TYPE_NOTIFICATION, "text", text, "timeout", timeout, NULL); } /** * gtd_notification_set_primary_action: * * Sets the primary action of @notification, which is triggered * on dismiss or timeout. * * Returns: */ void gtd_notification_set_primary_action (GtdNotification *notification, GtdNotificationActionFunc func, gpointer user_data) { GtdNotificationPrivate *priv; gboolean has_action; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; has_action = (func != NULL); if (has_action != priv->has_primary_action) { priv->has_primary_action = has_action; priv->primary_action = has_action ? func : NULL; priv->primary_action_data = has_action ? user_data : NULL; g_object_notify (G_OBJECT (notification), "has-primary-action"); } } /** * gtd_notification_set_secondary_action: * * Sets the secondary action of @notification, which is triggered * only on user explicit input. * * Returns: */ void gtd_notification_set_secondary_action (GtdNotification *notification, const gchar *name, GtdNotificationActionFunc func, gpointer user_data) { GtdNotificationPrivate *priv; gboolean has_action; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; has_action = (func != NULL); if (has_action != priv->has_secondary_action) { priv->has_secondary_action = has_action; priv->secondary_action = has_action ? func : NULL; priv->secondary_action_data = has_action ? user_data : NULL; if (priv->secondary_action_name != name) { g_clear_pointer (&priv->secondary_action_name, g_free); priv->secondary_action_name = g_strdup (name); g_object_notify (G_OBJECT (notification), "secondary-action-name"); } g_object_notify (G_OBJECT (notification), "has-secondary-action"); } } /** * gtd_notification_get_text: * * Gets the text of @notification. * * Returns: (transfer none): the text of @notification. */ const gchar* gtd_notification_get_text (GtdNotification *notification) { g_return_val_if_fail (GTD_IS_NOTIFICATION (notification), NULL); return notification->priv->text ? notification->priv->text : ""; } /** * gtd_notification_set_text: * * Sets the text of @notification to @text. * * Returns: */ void gtd_notification_set_text (GtdNotification *notification, const gchar *text) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (g_strcmp0 (priv->text, text) != 0) { g_clear_pointer (&priv->text, g_free); priv->text = g_strdup (text); g_object_notify (G_OBJECT (notification), "text"); } } /** * gtd_notification_get_timeout: * * Retrieves the timeout of @notification. * * Returns: the timeout of @notification. */ gdouble gtd_notification_get_timeout (GtdNotification *notification) { g_return_val_if_fail (GTD_IS_NOTIFICATION (notification), 0.0); return notification->priv->timeout; } /** * gtd_notification_set_timeout: * * Sets the timeout of @notification to @timeout. * * Returns: */ void gtd_notification_set_timeout (GtdNotification *notification, gdouble timeout) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (priv->timeout != timeout) { priv->timeout = timeout; g_object_notify (G_OBJECT (notification), "timeout"); } } /** * gtd_notification_execute_primary_action: * * Executes the primary action of @notification if set. * * Returns: */ void gtd_notification_execute_primary_action (GtdNotification *notification) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (priv->primary_action) priv->primary_action (notification, priv->primary_action_data); g_signal_emit (notification, signals[EXECUTED], 0); } /** * gtd_notification_execute_secondary_action: * * Executes the secondary action of @notification if any. * * Returns: */ void gtd_notification_execute_secondary_action (GtdNotification *notification) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (priv->secondary_action) { priv->secondary_action (notification, priv->secondary_action_data); gtd_notification_stop (notification); g_signal_emit (notification, signals[EXECUTED], 0); } } /** * gtd_notification_start: * * Starts the timeout of notification. Use @gtd_notification_stop * to stop it. * * Returns: */ void gtd_notification_start (GtdNotification *notification) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (priv->timeout != 0) { if (priv->timeout_id > 0) { g_source_remove (priv->timeout_id); priv->timeout_id = 0; } priv->timeout_id = g_timeout_add (priv->timeout, (GSourceFunc) execute_action_cb, notification); } } /** * gtd_notification_stop: * * Stops the timeout of notification. Use @gtd_notification_start * to start it. * * Returns: */ void gtd_notification_stop (GtdNotification *notification) { GtdNotificationPrivate *priv; g_return_if_fail (GTD_IS_NOTIFICATION (notification)); priv = notification->priv; if (priv->timeout_id != 0) { g_source_remove (priv->timeout_id); priv->timeout_id = 0; } } gnome-todo-3.18.1/src/notification/gtd-notification.h000066400000000000000000000061071260744630400225560ustar00rootroot00000000000000/* gtd-notification.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_NOTIFICATION_H #define GTD_NOTIFICATION_H #include "gtd-object.h" #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_NOTIFICATION (gtd_notification_get_type()) G_DECLARE_FINAL_TYPE (GtdNotification, gtd_notification, GTD, NOTIFICATION, GtdObject) typedef void (*GtdNotificationActionFunc) (GtdNotification *notification, gpointer user_data); GtdNotification* gtd_notification_new (const gchar *text, gdouble timeout); void gtd_notification_execute_primary_action (GtdNotification *notification); void gtd_notification_execute_secondary_action (GtdNotification *notification); void gtd_notification_start (GtdNotification *notification); void gtd_notification_stop (GtdNotification *notification); void gtd_notification_set_primary_action (GtdNotification *notification, GtdNotificationActionFunc func, gpointer user_data); void gtd_notification_set_secondary_action (GtdNotification *notification, const gchar *name, GtdNotificationActionFunc func, gpointer user_data); const gchar* gtd_notification_get_text (GtdNotification *notification); void gtd_notification_set_text (GtdNotification *notification, const gchar *text); gdouble gtd_notification_get_timeout (GtdNotification *notification); void gtd_notification_set_timeout (GtdNotification *notification, gdouble timeout); G_END_DECLS #endif /* GTD_NOTIFICATION_H */ gnome-todo-3.18.1/src/storage/000077500000000000000000000000001260744630400161155ustar00rootroot00000000000000gnome-todo-3.18.1/src/storage/gtd-storage-dialog.c000066400000000000000000000135361260744630400217460ustar00rootroot00000000000000/* gtd-storage-dialog.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-manager.h" #include "gtd-storage.h" #include "gtd-storage-dialog.h" #include "gtd-storage-selector.h" #include typedef struct { GtkWidget *headerbar; GtkWidget *storage_selector; GtdManager *manager; } GtdStorageDialogPrivate; struct _GtdStorageDialog { GtkDialog parent; /**/ GtdStorageDialogPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdStorageDialog, gtd_storage_dialog, GTK_TYPE_DIALOG) enum { PROP_0, PROP_MANAGER, LAST_PROP }; static void gtd_storage_dialog__storage_selected (GtdStorageDialog *dialog, GtdStorage *storage) { GtdStorageDialogPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_DIALOG (dialog)); g_return_if_fail (GTD_IS_MANAGER (dialog->priv->manager)); g_return_if_fail (GTD_IS_STORAGE (storage)); priv = dialog->priv; if (storage) gtd_manager_set_default_storage (priv->manager, storage); } static void gtd_storage_dialog_finalize (GObject *object) { G_OBJECT_CLASS (gtd_storage_dialog_parent_class)->finalize (object); } static void gtd_storage_dialog_constructed (GObject *object) { GtdStorageDialogPrivate *priv; /* Chain up */ G_OBJECT_CLASS (gtd_storage_dialog_parent_class)->constructed (object); priv = GTD_STORAGE_DIALOG (object)->priv; gtk_window_set_titlebar (GTK_WINDOW (object), priv->headerbar); g_object_bind_property (object, "manager", priv->storage_selector, "manager", G_BINDING_DEFAULT); } static void gtd_storage_dialog_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStorageDialog *self = GTD_STORAGE_DIALOG (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_dialog_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStorageDialog *self = GTD_STORAGE_DIALOG (object); switch (prop_id) { case PROP_MANAGER: gtd_storage_dialog_set_manager (self, g_value_get_object (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_dialog_class_init (GtdStorageDialogClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_storage_dialog_finalize; object_class->constructed = gtd_storage_dialog_constructed; object_class->get_property = gtd_storage_dialog_get_property; object_class->set_property = gtd_storage_dialog_set_property; /** * GtdStorageDialog::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this window's application", "The manager of the window's application", GTD_TYPE_MANAGER, G_PARAM_READWRITE)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/storage-dialog.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageDialog, headerbar); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageDialog, storage_selector); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_dialog__storage_selected); } static void gtd_storage_dialog_init (GtdStorageDialog *self) { self->priv = gtd_storage_dialog_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_storage_dialog_new: * * Creates a new #GtdStorageDialog. * * Returns: (transfer full): the newly allocated #GtdStorageDialog */ GtkWidget* gtd_storage_dialog_new (void) { return g_object_new (GTD_TYPE_STORAGE_DIALOG, NULL); } /** * gtd_storage_dialog_get_manager: * @dialog: a #GtdStorageDialog * * Retrieves @dialog's internal #GtdManager. * * Returns: (transfer none): the @dialog's #GtdManager */ GtdManager* gtd_storage_dialog_get_manager (GtdStorageDialog *dialog) { g_return_val_if_fail (GTD_IS_STORAGE_DIALOG (dialog), NULL); return dialog->priv->manager; } /** * gtd_storage_dialog_set_manager: * @dialog: a #GtdStorageDialog * @manager: a #GtdManager * * Sets the @dialog's #GtdManager. * * Returns: */ void gtd_storage_dialog_set_manager (GtdStorageDialog *dialog, GtdManager *manager) { GtdStorageDialogPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_DIALOG (dialog)); priv = dialog->priv; if (priv->manager != manager) { priv->manager = manager; g_object_notify (G_OBJECT (dialog), "manager"); } } gnome-todo-3.18.1/src/storage/gtd-storage-dialog.h000066400000000000000000000026511260744630400217470ustar00rootroot00000000000000/* gtd-storage-dialog.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_DIALOG_H #define GTD_STORAGE_DIALOG_H #include "gtd-types.h" #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_DIALOG (gtd_storage_dialog_get_type()) G_DECLARE_FINAL_TYPE (GtdStorageDialog, gtd_storage_dialog, GTD, STORAGE_DIALOG, GtkDialog) GtkWidget* gtd_storage_dialog_new (void); GtdManager* gtd_storage_dialog_get_manager (GtdStorageDialog *dialog); void gtd_storage_dialog_set_manager (GtdStorageDialog *dialog, GtdManager *manager); G_END_DECLS #endif /* GTD_STORAGE_DIALOG_H */ gnome-todo-3.18.1/src/storage/gtd-storage-goa.c000066400000000000000000000242701260744630400212520ustar00rootroot00000000000000/* gtd-storage-goa.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-storage-goa.h" #include "gtd-storage.h" #include "gtd-task-list.h" #include struct _GtdStorageGoa { GtdStorage parent; GoaObject *goa_object; GIcon *icon; gchar *parent_source; }; G_DEFINE_TYPE (GtdStorageGoa, gtd_storage_goa, GTD_TYPE_STORAGE) enum { PROP_0, PROP_GOA_OBJECT, PROP_PARENT, LAST_PROP }; static GIcon* gtd_storage_goa_get_icon (GtdStorage *storage) { g_return_val_if_fail (GTD_IS_STORAGE_GOA (storage), NULL); return GTD_STORAGE_GOA (storage)->icon; } static GtdTaskList* gtd_storage_goa_create_list (GtdStorage *storage, const gchar *name) { ESourceExtension *extension; GtdStorageGoa *self; GoaCalendar *calendar; GtdTaskList *task_list; GoaAccount *account; ESource *source; GError *error; g_return_val_if_fail (GTD_IS_STORAGE_GOA (storage), NULL); self = GTD_STORAGE_GOA (storage); error = NULL; account = goa_object_peek_account (self->goa_object); calendar = goa_object_peek_calendar (self->goa_object); source = e_source_new (NULL, NULL, &error); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error creating new task list"), error->message); g_clear_error (&error); return NULL; } /* Some properties */ e_source_set_display_name (source, name); /* FIXME: while Evolution-Data-Server doesn't support creating remote * sources that are children of the GOA source, we'll have to make it * a plain webdav source. */ e_source_set_parent (source, "webdav-stub"); /* Mark it as a TASKLIST */ extension = e_source_get_extension (source, E_SOURCE_EXTENSION_TASK_LIST); e_source_backend_set_backend_name (E_SOURCE_BACKEND (extension), "webdav"); /* Make it a WebDAV source */ extension = e_source_get_extension (source, E_SOURCE_EXTENSION_WEBDAV_BACKEND); e_source_webdav_set_display_name (E_SOURCE_WEBDAV (extension), gtd_storage_get_name (storage)); /* Setup authentication */ extension = e_source_get_extension (source, E_SOURCE_EXTENSION_AUTHENTICATION); e_source_authentication_set_user (E_SOURCE_AUTHENTICATION (extension), goa_account_get_identity (account)); e_source_authentication_set_host (E_SOURCE_AUTHENTICATION (extension), goa_calendar_get_uri (calendar)); /* Create task list */ task_list = gtd_task_list_new (source, gtd_storage_get_name (storage)); return task_list; } static gint gtd_storage_goa_compare (GtdStorage *a, GtdStorage *b) { GoaAccount *account_a; GoaAccount *account_b; gint retval; /* * If any of the compared storages is not a GOA storage, we have * no means to properly compare them. Simply return 0 and let the * parent class' call decide what to do. */ if (!GTD_IS_STORAGE_GOA (a) || !GTD_IS_STORAGE_GOA (b)) return 0; account_a = gtd_storage_goa_get_account (GTD_STORAGE_GOA (a)); account_b = gtd_storage_goa_get_account (GTD_STORAGE_GOA (b)); retval = g_strcmp0 (goa_account_get_provider_type (account_b), goa_account_get_provider_type (account_a)); if (retval != 0) return retval; retval = g_strcmp0 (gtd_storage_get_id (b), gtd_storage_get_id (a)); return retval; } static void gtd_storage_goa_finalize (GObject *object) { GtdStorageGoa *self = (GtdStorageGoa *)object; g_clear_object (&self->goa_object); g_clear_object (&self->icon); g_clear_pointer (&self->parent_source, g_free); G_OBJECT_CLASS (gtd_storage_goa_parent_class)->finalize (object); } static void gtd_storage_goa_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStorageGoa *self = GTD_STORAGE_GOA (object); switch (prop_id) { case PROP_GOA_OBJECT: g_value_set_object (value, self->goa_object); break; case PROP_PARENT: g_value_set_string (value, gtd_storage_goa_get_parent (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_goa_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStorageGoa *self = GTD_STORAGE_GOA (object); switch (prop_id) { case PROP_GOA_OBJECT: gtd_storage_goa_set_object (self, g_value_get_object (value)); break; case PROP_PARENT: gtd_storage_goa_set_parent (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_goa_class_init (GtdStorageGoaClass *klass) { GtdStorageClass *storage_class = GTD_STORAGE_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_storage_goa_finalize; object_class->get_property = gtd_storage_goa_get_property; object_class->set_property = gtd_storage_goa_set_property; storage_class->get_icon = gtd_storage_goa_get_icon; storage_class->compare = gtd_storage_goa_compare; storage_class->create_list = gtd_storage_goa_create_list; /** * GtdStorageGoa::account: * * The #GoaAccount of this storage. */ g_object_class_install_property ( object_class, PROP_GOA_OBJECT, g_param_spec_object ("goa-object", "GoaObject of the storage", "The GoaObject this storage location represents.", GOA_TYPE_OBJECT, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); /** * GtdStorageGoa::parent: * * The parent source of this storage. */ g_object_class_install_property ( object_class, PROP_PARENT, g_param_spec_string ("parent", "Parent of the storage", "The parent source identifier of the storage location.", NULL, G_PARAM_READWRITE)); } static void gtd_storage_goa_init (GtdStorageGoa *self) { } /** * gtd_storage_goa_new: * @object: the #GoaObject related to this storage * * Creates a new #GtdStorageGoa. * * Returns: (transfer full): a newly allocated #GtdStorageGoa */ GtdStorage* gtd_storage_goa_new (GoaObject *object) { return g_object_new (GTD_TYPE_STORAGE_GOA, "goa-object", object, NULL);; } /** * gtd_storage_goa_get_account: * @goa_storage: a #GtdStorageGoa * * Retrieves the #GoaAccount of @goa_storage. * * Returns: (transfer none): a #GoaAccount. */ GoaAccount* gtd_storage_goa_get_account (GtdStorageGoa *goa_storage) { g_return_val_if_fail (GTD_IS_STORAGE_GOA (goa_storage), NULL); return goa_storage->goa_object ? goa_object_peek_account (goa_storage->goa_object) : NULL; } /** * gtd_storage_goa_get_object: * @goa_storage: a #GtdStorageGoa * * Retrieves the internal #GoaObject of @goa_storage. * * Returns: (transger none): a #GoaObject */ GoaObject* gtd_storage_goa_get_object (GtdStorageGoa *goa_storage) { g_return_val_if_fail (GTD_IS_STORAGE_GOA (goa_storage), NULL); return goa_storage->goa_object; } /** * gtd_storage_goa_set_object: * @goa_storage: a #GtdStorageGoa * @object: a #GoaObject * * Sets the #GoaObject of @goa_storage. * * Returns: */ void gtd_storage_goa_set_object (GtdStorageGoa *goa_storage, GoaObject *object) { g_return_if_fail (GTD_IS_STORAGE_GOA (goa_storage)); if (goa_storage->goa_object != object) { g_set_object (&goa_storage->goa_object, object); g_object_notify (G_OBJECT (goa_storage), "goa-object"); if (goa_storage->goa_object) { GoaAccount *account; gchar *icon_name; /* Setup account */ account = goa_object_peek_account (goa_storage->goa_object); icon_name = g_strdup_printf ("goa-account-%s", goa_account_get_provider_type (account)); gtd_storage_set_id (GTD_STORAGE (goa_storage), goa_account_get_id (account)); gtd_storage_set_name (GTD_STORAGE (goa_storage), goa_account_get_identity (account)); gtd_storage_set_provider (GTD_STORAGE (goa_storage), goa_account_get_provider_name (account)); g_set_object (&goa_storage->icon, g_themed_icon_new (icon_name)); g_object_notify (G_OBJECT (goa_storage), "icon"); g_free (icon_name); } } } /** * gtd_storage_goa_get_parent: * @goa_storage: a #GtdStorageGoa * * Retrieve @goa_storage's parent #ESource UID. * * Returns: (transfer none): the parent #ESource's UID */ const gchar* gtd_storage_goa_get_parent (GtdStorageGoa *goa_storage) { g_return_val_if_fail (GTD_IS_STORAGE_GOA (goa_storage), NULL); return goa_storage->parent_source; } /** * gtd_storage_goa_set_parent: * @goa_storage: a #GtdStorageGoa * @parent: the parent #ESource UID of @goa_storage * * Sets the parent #ESource UID of @goa_storage. * * Returns: */ void gtd_storage_goa_set_parent (GtdStorageGoa *goa_storage, const gchar *parent) { g_return_if_fail (GTD_IS_STORAGE_GOA (goa_storage)); if (g_strcmp0 (goa_storage->parent_source, parent) != 0) { g_clear_pointer (&goa_storage->parent_source, g_free); goa_storage->parent_source = g_strdup (parent); g_object_notify (G_OBJECT (goa_storage), "parent"); } } gnome-todo-3.18.1/src/storage/gtd-storage-goa.h000066400000000000000000000035461260744630400212620ustar00rootroot00000000000000/* gtd-storage-goa.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_GOA_H #define GTD_STORAGE_GOA_H #include "gtd-types.h" #include "gtd-storage.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_GOA (gtd_storage_goa_get_type()) G_DECLARE_FINAL_TYPE (GtdStorageGoa, gtd_storage_goa, GTD, STORAGE_GOA, GtdStorage) GtdStorage* gtd_storage_goa_new (GoaObject *object); GoaAccount* gtd_storage_goa_get_account (GtdStorageGoa *goa_storage); GoaObject* gtd_storage_goa_get_object (GtdStorageGoa *goa_storage); void gtd_storage_goa_set_object (GtdStorageGoa *goa_storage, GoaObject *object); const gchar* gtd_storage_goa_get_parent (GtdStorageGoa *goa_storage); void gtd_storage_goa_set_parent (GtdStorageGoa *goa_storage, const gchar *parent); G_END_DECLS #endif /* GTD_STORAGE_GOA_H */ gnome-todo-3.18.1/src/storage/gtd-storage-local.c000066400000000000000000000067561260744630400216070ustar00rootroot00000000000000/* gtd-storage-local.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-storage-local.h" #include "gtd-storage.h" #include "gtd-task-list.h" #include struct _GtdStorageLocal { GtdStorage parent; GIcon *icon; }; G_DEFINE_TYPE (GtdStorageLocal, gtd_storage_local, GTD_TYPE_STORAGE) enum { PROP_0, LAST_PROP }; static GIcon* gtd_storage_local_get_icon (GtdStorage *storage) { g_return_val_if_fail (GTD_IS_STORAGE_LOCAL (storage), NULL); return GTD_STORAGE_LOCAL (storage)->icon; } static GtdTaskList* gtd_storage_local_create_list (GtdStorage *storage, const gchar *name) { ESourceExtension *extension; GtdTaskList *task_list; ESource *source; GError *error; g_return_val_if_fail (GTD_IS_STORAGE_LOCAL (storage), NULL); error = NULL; /* Create the source */ source = e_source_new (NULL, NULL, &error); if (error) { g_warning ("%s: %s: %s", G_STRFUNC, _("Error creating new task list"), error->message); g_clear_error (&error); return NULL; } /* EDS properties */ e_source_set_display_name (source, name); /* Make it a local source */ extension = e_source_get_extension (source, E_SOURCE_EXTENSION_TASK_LIST); e_source_set_parent (source, "local-stub"); e_source_backend_set_backend_name (E_SOURCE_BACKEND (extension), "local"); /* Create task list */ task_list = gtd_task_list_new (source, _("On This Computer")); return task_list; } static gint gtd_storage_local_compare (GtdStorage *a, GtdStorage *b) { /* The local storage is always the first one */ return GTD_IS_STORAGE_LOCAL (a) - GTD_IS_STORAGE_LOCAL (b); } static void gtd_storage_local_finalize (GObject *object) { GtdStorageLocal *self = GTD_STORAGE_LOCAL (object); g_clear_object (&self->icon); G_OBJECT_CLASS (gtd_storage_local_parent_class)->finalize (object); } static void gtd_storage_local_class_init (GtdStorageLocalClass *klass) { GtdStorageClass *storage_class = GTD_STORAGE_CLASS (klass); GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_storage_local_finalize; storage_class->get_icon = gtd_storage_local_get_icon; storage_class->compare = gtd_storage_local_compare; storage_class->create_list = gtd_storage_local_create_list; } static void gtd_storage_local_init (GtdStorageLocal *self) { self->icon = G_ICON (g_themed_icon_new_with_default_fallbacks ("computer-symbolic")); } GtdStorage* gtd_storage_local_new (void) { return g_object_new (GTD_TYPE_STORAGE_LOCAL, "id", "local", "name", _("Local"), "provider", _("On This Computer"), NULL); } gnome-todo-3.18.1/src/storage/gtd-storage-local.h000066400000000000000000000022611260744630400215770ustar00rootroot00000000000000/* gtd-storage-local.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_LOCAL_H #define GTD_STORAGE_LOCAL_H #include "gtd-storage.h" #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_LOCAL (gtd_storage_local_get_type()) G_DECLARE_FINAL_TYPE (GtdStorageLocal, gtd_storage_local, GTD, STORAGE_LOCAL, GtdStorage) GtdStorage* gtd_storage_local_new (void); G_END_DECLS #endif /* GTD_STORAGE_LOCAL_H */ gnome-todo-3.18.1/src/storage/gtd-storage-popover.c000066400000000000000000000234711260744630400222000ustar00rootroot00000000000000/* gtd-storage-popover.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-manager.h" #include "gtd-storage.h" #include "gtd-storage-popover.h" #include "gtd-storage-selector.h" #include typedef struct { GtkWidget *change_location_button; GtkWidget *location_provider_image; GtkWidget *new_list_create_button; GtkWidget *new_list_name_entry; GtkWidget *stack; GtkWidget *storage_selector; GtdManager *manager; } GtdStoragePopoverPrivate; struct _GtdStoragePopover { GtkPopover parent; /**/ GtdStoragePopoverPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdStoragePopover, gtd_storage_popover, GTK_TYPE_POPOVER) enum { PROP_0, PROP_MANAGER, LAST_PROP }; static void clear_and_hide (GtdStoragePopover *popover) { GtdStoragePopoverPrivate *priv; GList *locations; GList *l; g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); priv = popover->priv; /* Select the default source again */ locations = gtd_manager_get_storage_locations (priv->manager); for (l = locations; l != NULL; l = l->next) { if (gtd_storage_get_is_default (l->data)) { gtd_storage_selector_set_selected_storage (GTD_STORAGE_SELECTOR (priv->storage_selector), l->data); break; } } g_list_free (locations); /* By clearing the text, Create button will get insensitive */ gtk_entry_set_text (GTK_ENTRY (priv->new_list_name_entry), ""); /* Hide the popover at last */ gtk_widget_hide (GTK_WIDGET (popover)); } static void gtd_storage_popover__closed (GtdStoragePopover *popover) { g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); gtk_stack_set_visible_child_name (GTK_STACK (popover->priv->stack), "main"); } static void create_task_list (GtdStoragePopover *popover) { GtdStoragePopoverPrivate *priv; GtdTaskList *task_list; GtdStorage *storage; const gchar *name; priv = popover->priv; storage = gtd_storage_selector_get_selected_storage (GTD_STORAGE_SELECTOR (priv->storage_selector)); name = gtk_entry_get_text (GTK_ENTRY (priv->new_list_name_entry)); task_list = gtd_storage_create_task_list (storage, name); gtd_manager_save_task_list (priv->manager, task_list); } static void gtd_storage_popover__entry_activate (GtdStoragePopover *popover, GtkEntry *entry) { if (gtk_entry_get_text_length (entry) > 0) { create_task_list (popover); clear_and_hide (popover); } } static void gtd_storage_popover__action_button_clicked (GtdStoragePopover *popover, GtkWidget *button) { GtdStoragePopoverPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); priv = popover->priv; if (button == priv->new_list_create_button) create_task_list (popover); clear_and_hide (popover); } static void gtd_storage_popover__text_changed_cb (GtdStoragePopover *popover, GParamSpec *spec, GtkEntry *entry) { GtdStoragePopoverPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); g_return_if_fail (GTK_IS_ENTRY (entry)); priv = popover->priv; gtk_widget_set_sensitive (priv->new_list_create_button, gtk_entry_get_text_length (entry) > 0); } static void gtd_storage_popover__change_location_clicked (GtdStoragePopover *popover, GtkWidget *button) { GtdStoragePopoverPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); priv = popover->priv; if (button == priv->change_location_button) gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "selector"); else gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "main"); } static void gtd_storage_popover__storage_selected (GtdStoragePopover *popover, GtdStorage *storage) { GtdStoragePopoverPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_POPOVER (popover)); g_return_if_fail (GTD_IS_STORAGE (storage)); priv = popover->priv; if (storage) { gtk_image_set_from_gicon (GTK_IMAGE (priv->location_provider_image), gtd_storage_get_icon (storage), GTK_ICON_SIZE_BUTTON); gtk_widget_set_tooltip_text (priv->change_location_button, gtd_storage_get_name (storage)); /* Go back immediately after selecting a storage */ gtk_stack_set_visible_child_name (GTK_STACK (priv->stack), "main"); if (gtk_widget_is_visible (GTK_WIDGET (popover))) gtk_widget_grab_focus (priv->new_list_name_entry); } } static void gtd_storage_popover_finalize (GObject *object) { G_OBJECT_CLASS (gtd_storage_popover_parent_class)->finalize (object); } static void gtd_storage_popover_constructed (GObject *object) { GtdStoragePopoverPrivate *priv; GtdStorage *storage; G_OBJECT_CLASS (gtd_storage_popover_parent_class)->constructed (object); priv = GTD_STORAGE_POPOVER (object)->priv; storage = gtd_storage_selector_get_selected_storage (GTD_STORAGE_SELECTOR (priv->storage_selector)); g_object_bind_property (object, "manager", priv->storage_selector, "manager", G_BINDING_DEFAULT); if (storage) { gtk_image_set_from_gicon (GTK_IMAGE (priv->location_provider_image), gtd_storage_get_icon (storage), GTK_ICON_SIZE_BUTTON); } } static void gtd_storage_popover_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStoragePopover *self = GTD_STORAGE_POPOVER (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_popover_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStoragePopover *self = GTD_STORAGE_POPOVER (object); switch (prop_id) { case PROP_MANAGER: if (self->priv->manager != g_value_get_object (value)) { self->priv->manager = g_value_get_object (value); g_object_notify (object, "manager"); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_popover_class_init (GtdStoragePopoverClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_storage_popover_finalize; object_class->constructed = gtd_storage_popover_constructed; object_class->get_property = gtd_storage_popover_get_property; object_class->set_property = gtd_storage_popover_set_property; /** * GtdStoragePopover::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this window's application", "The manager of the window's application", GTD_TYPE_MANAGER, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/storage-popover.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, change_location_button); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, location_provider_image); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, new_list_create_button); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, new_list_name_entry); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, stack); gtk_widget_class_bind_template_child_private (widget_class, GtdStoragePopover, storage_selector); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__action_button_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__change_location_clicked); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__closed); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__entry_activate); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__storage_selected); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_popover__text_changed_cb); } static void gtd_storage_popover_init (GtdStoragePopover *self) { self->priv = gtd_storage_popover_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } GtkWidget* gtd_storage_popover_new (void) { return g_object_new (GTD_TYPE_STORAGE_POPOVER, NULL); } gnome-todo-3.18.1/src/storage/gtd-storage-popover.h000066400000000000000000000021741260744630400222020ustar00rootroot00000000000000/* gtd-storage-popover.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_POPOVER_H #define GTD_STORAGE_POPOVER_H #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_POPOVER (gtd_storage_popover_get_type()) G_DECLARE_FINAL_TYPE (GtdStoragePopover, gtd_storage_popover, GTD, STORAGE_POPOVER, GtkPopover) GtkWidget* gtd_storage_popover_new (void); G_END_DECLS #endif /* GTD_STORAGE_POPOVER_H */ gnome-todo-3.18.1/src/storage/gtd-storage-row.c000066400000000000000000000152021260744630400213060ustar00rootroot00000000000000/* gtd-storage-row.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-storage.h" #include "gtd-storage-row.h" #include typedef struct { GtkImage *icon; GtkLabel *name; GtkLabel *provider; GtkLabel *enabled; GtkImage *selected; GtdStorage *storage; } GtdStorageRowPrivate; struct _GtdStorageRow { GtkListBoxRow parent; /*< private >*/ GtdStorageRowPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdStorageRow, gtd_storage_row, GTK_TYPE_LIST_BOX_ROW) enum { PROP_0, PROP_STORAGE, LAST_PROP }; static void gtd_storage_row_finalize (GObject *object) { GtdStorageRow *self = (GtdStorageRow *)object; GtdStorageRowPrivate *priv = gtd_storage_row_get_instance_private (self); g_clear_object (&priv->storage); G_OBJECT_CLASS (gtd_storage_row_parent_class)->finalize (object); } static void gtd_storage_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStorageRow *self = GTD_STORAGE_ROW (object); switch (prop_id) { case PROP_STORAGE: g_value_set_object (value, self->priv->storage); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_row_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStorageRow *self = GTD_STORAGE_ROW (object); switch (prop_id) { case PROP_STORAGE: self->priv->storage = g_value_get_object (value); if (!self->priv->storage) break; g_object_ref (self->priv->storage); g_object_bind_property (self->priv->storage, "name", self->priv->name, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (self->priv->storage, "provider", self->priv->provider, "label", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); g_object_bind_property (self->priv->storage, "enabled", self->priv->enabled, "visible", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN); g_object_bind_property (self->priv->storage, "icon", self->priv->icon, "gicon", G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_row_class_init (GtdStorageRowClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_storage_row_finalize; object_class->get_property = gtd_storage_row_get_property; object_class->set_property = gtd_storage_row_set_property; /** * GtdStorageRow::storage: * * #GtdStorage related to this row. */ g_object_class_install_property ( object_class, PROP_STORAGE, g_param_spec_object ("storage", "Storage of the row", "The storage that this row holds", GTD_TYPE_STORAGE, G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/storage-row.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageRow, icon); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageRow, name); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageRow, provider); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageRow, enabled); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageRow, selected); } static void gtd_storage_row_init (GtdStorageRow *self) { self->priv = gtd_storage_row_get_instance_private (self); gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_storage_row_new: * @storage: a #GtdStorage * * Created a new #GtdStorageRow with @account information. * * Returns: (transfer full): a new #GtdStorageRow */ GtkWidget* gtd_storage_row_new (GtdStorage *storage) { return g_object_new (GTD_TYPE_STORAGE_ROW, "storage", storage, NULL); } /** * gtd_storage_row_get_storage: * @row: a #GtdStorageRow * * Retrieves the #GtdStorage associated with @row. * * Returns: (transfer none): the #GtdStorage associated with @row. */ GtdStorage* gtd_storage_row_get_storage (GtdStorageRow *row) { g_return_val_if_fail (GTD_IS_STORAGE_ROW (row), NULL); return row->priv->storage; } /** * gtd_storage_row_get_selected: * @row: a #GtdStorageRow * * Whether @row is the currently selected row or not. * * Returns: %TRUE if the row is currently selected, %FALSE otherwise. */ gboolean gtd_storage_row_get_selected (GtdStorageRow *row) { g_return_val_if_fail (GTD_IS_STORAGE_ROW (row), FALSE); return gtk_widget_get_visible (GTK_WIDGET (row->priv->selected)); } /** * gtd_storage_row_set_selected: * @row: a #GtdStorageRow * @selected: %TRUE if row is selected (i.e. the selection * mark is visible) * * Sets @row as the currently selected row. * * Returns: */ void gtd_storage_row_set_selected (GtdStorageRow *row, gboolean selected) { g_return_if_fail (GTD_IS_STORAGE_ROW (row)); if (selected != gtk_widget_get_visible (GTK_WIDGET (row->priv->selected))) { gtk_widget_set_visible (GTK_WIDGET (row->priv->selected), selected); } } gnome-todo-3.18.1/src/storage/gtd-storage-row.h000066400000000000000000000030501260744630400213110ustar00rootroot00000000000000/* gtd-storage-row.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_GOA_ROW_H #define GTD_GOA_ROW_H #include "gtd-types.h" #include #include #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_ROW (gtd_storage_row_get_type()) G_DECLARE_FINAL_TYPE (GtdStorageRow, gtd_storage_row, GTD, STORAGE_ROW, GtkListBoxRow) GtkWidget* gtd_storage_row_new (GtdStorage *storage); gboolean gtd_storage_row_get_selected (GtdStorageRow *row); void gtd_storage_row_set_selected (GtdStorageRow *row, gboolean selected); GtdStorage* gtd_storage_row_get_storage (GtdStorageRow *row); G_END_DECLS #endif /* GTD_GOA_ROW_H */ gnome-todo-3.18.1/src/storage/gtd-storage-selector.c000066400000000000000000000603521260744630400223250ustar00rootroot00000000000000/* gtd-storage-selector.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-application.h" #include "gtd-manager.h" #include "gtd-storage.h" #include "gtd-storage-goa.h" #include "gtd-storage-row.h" #include "gtd-storage-selector.h" #include typedef struct { GtkWidget *listbox; GtkWidget *local_check; /* stub rows */ GtkWidget *exchange_stub_row; GtkWidget *google_stub_row; GtkWidget *owncloud_stub_row; GtkWidget *local_row; GtdManager *manager; gint select_default : 1; gint show_local_storage : 1; gint show_stub_rows : 1; } GtdStorageSelectorPrivate; struct _GtdStorageSelector { GtkBox parent; /*< private >*/ GtdStorageSelectorPrivate *priv; }; G_DEFINE_TYPE_WITH_PRIVATE (GtdStorageSelector, gtd_storage_selector, GTK_TYPE_BOX) enum { PROP_0, PROP_MANAGER, PROP_SELECT_DEFAULT, PROP_SHOW_LOCAL, PROP_SHOW_STUB_ROWS, LAST_PROP }; enum { STORAGE_SELECTED, LAST_SIGNAL }; static guint signals[LAST_SIGNAL] = { 0, }; static void spawn (const gchar *action, const gchar *arg) { const gchar *command[] = {"gnome-control-center", "online-accounts", action, arg, NULL}; g_spawn_async (NULL, (gchar **) command, NULL, G_SPAWN_SEARCH_PATH | G_SPAWN_STDOUT_TO_DEV_NULL, NULL, NULL, NULL, NULL); } /** * display_header_func: * * Shows a separator before each row. */ static void display_header_func (GtkListBoxRow *row, GtkListBoxRow *before, gpointer user_data) { if (before != NULL) { GtkWidget *header; header = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL); gtk_list_box_row_set_header (row, header); gtk_widget_show (header); } } static void gtd_storage_selector__default_storage_changed (GtdStorageSelector *selector, GtdStorage *current, GtdStorage *previous) { GtdStorageSelectorPrivate *priv; GList *children; GList *l; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); g_return_if_fail (GTD_IS_STORAGE (previous)); g_return_if_fail (GTD_IS_STORAGE (current)); priv = selector->priv; if (!priv->select_default) return; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { GtdStorage *storage; if (!GTD_IS_STORAGE_ROW (l->data)) continue; storage = gtd_storage_row_get_storage (l->data); gtd_storage_row_set_selected (l->data, storage == current); } g_list_free (children); g_signal_emit (selector, signals[STORAGE_SELECTED], 0, current); } static void gtd_storage_selector__listbox_row_activated (GtdStorageSelector *selector, GtkWidget *row) { GtdStorageSelectorPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; /* The row is either one of the stub rows, or a GtdGoaRow */ if (row == priv->google_stub_row) { spawn ("add", "google"); } else if (row == priv->owncloud_stub_row) { spawn ("add", "owncloud"); } else if (row == priv->exchange_stub_row) { spawn ("add", "exchange"); } else { GtdStorage *storage; GList *children; GList *l; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); storage = gtd_storage_row_get_storage (GTD_STORAGE_ROW (row)); for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data)) gtd_storage_row_set_selected (l->data, FALSE); } /* * If the account has it's calendars disabled, we cannot let it * be a default storage location. Instead, open the Control Center * to give the user the ability to change it. */ if (gtd_storage_get_enabled (storage)) { gtd_storage_row_set_selected (GTD_STORAGE_ROW (row), TRUE); g_signal_emit (selector, signals[STORAGE_SELECTED], 0, storage); } else { spawn ((gchar*) gtd_storage_get_id (storage), NULL); } g_list_free (children); } } static void gtd_storage_selector__check_toggled (GtdStorageSelector *selector, GtkToggleButton *check) { GtdStorageSelectorPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; /* * Unset the currently selected storage location row when the check button is * activated. No need to do this when deactivated, since we already did. */ if (gtk_toggle_button_get_active (check)) { GtdStorage *local_storage; GList *children; GList *l; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); local_storage = gtd_storage_row_get_storage (GTD_STORAGE_ROW (priv->local_row)); for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data)) gtd_storage_row_set_selected (l->data, FALSE); } g_list_free (children); /* * Sets the storage location to "local", and don't unset it if the * check gets deactivated. */ g_signal_emit (selector, signals[STORAGE_SELECTED], 0, local_storage); } else { g_signal_emit (selector, signals[STORAGE_SELECTED], 0, NULL); } } static void gtd_storage_selector__remove_storage (GtdStorageSelector *selector, GtdStorage *storage) { GtdStorageSelectorPrivate *priv; GList *children; GList *l; gint exchange; gint google; gint owncloud; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); g_return_if_fail (GTD_IS_STORAGE (storage)); priv = selector->priv; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); exchange = google = owncloud = 0; for (l = children; l != NULL; l = l->next) { GtdStorage *row_storage; const gchar *provider; if (!GTD_IS_STORAGE_ROW (l->data)) continue; row_storage = gtd_storage_row_get_storage (l->data); provider = gtd_storage_get_provider (row_storage); if (row_storage == storage) { gtk_widget_destroy (l->data); } else { if (g_strcmp0 (provider, "exchange") == 0) exchange++; else if (g_strcmp0 (provider, "google") == 0) google++; else if (g_strcmp0 (provider, "owncloud") == 0) owncloud++; } } gtk_widget_set_visible (priv->exchange_stub_row, exchange == 0); gtk_widget_set_visible (priv->google_stub_row, google == 0); gtk_widget_set_visible (priv->owncloud_stub_row, owncloud == 0); g_list_free (children); } static void gtd_storage_selector__add_storage (GtdStorageSelector *selector, GtdStorage *storage) { GtdStorageSelectorPrivate *priv; GtkWidget *row; const gchar *provider; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); g_return_if_fail (GTD_IS_STORAGE (storage)); priv = selector->priv; row = gtd_storage_row_new (storage); provider = gtd_storage_get_provider (storage); gtk_container_add (GTK_CONTAINER (priv->listbox), row); /* track the local provider row */ if (g_strcmp0 (provider, "local") == 0) { gtk_widget_set_visible (row, priv->show_local_storage); priv->local_row = row; } /* Auto selects the default storage row when needed */ if (priv->select_default && gtd_storage_get_is_default (storage) && !gtd_storage_selector_get_selected_storage (selector)) { gtd_storage_selector_set_selected_storage (selector, storage); } /* hide the related stub row */ if (g_strcmp0 (provider, "exchange") == 0) gtk_widget_hide (priv->exchange_stub_row); else if (g_strcmp0 (provider, "google") == 0) gtk_widget_hide (priv->google_stub_row); else if (g_strcmp0 (provider, "owncloud") == 0) gtk_widget_hide (priv->owncloud_stub_row); } static void gtd_storage_selector__fill_accounts (GtdStorageSelector *selector) { GtdStorageSelectorPrivate *priv; GList *storage_locations; GList *l; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; /* load accounts */ storage_locations = gtd_manager_get_storage_locations (priv->manager); for (l = storage_locations; l != NULL; l = l->next) gtd_storage_selector__add_storage (selector, l->data); g_list_free (storage_locations); } static gint sort_func (GtkListBoxRow *row1, GtkListBoxRow *row2, gpointer user_data) { GtdStorage *storage1; GtdStorage *storage2; if (!GTD_IS_STORAGE_ROW (row1)) return 1; else if (!GTD_IS_STORAGE_ROW (row2)) return -1; storage1 = gtd_storage_row_get_storage (GTD_STORAGE_ROW (row1)); storage2 = gtd_storage_row_get_storage (GTD_STORAGE_ROW (row2)); return gtd_storage_compare (storage1, storage2); } static void gtd_storage_selector_constructed (GObject *object) { GtdStorageSelectorPrivate *priv; G_OBJECT_CLASS (gtd_storage_selector_parent_class)->constructed (object); priv = GTD_STORAGE_SELECTOR (object)->priv; gtk_list_box_set_header_func (GTK_LIST_BOX (priv->listbox), display_header_func, NULL, NULL); gtk_list_box_set_sort_func (GTK_LIST_BOX (priv->listbox), (GtkListBoxSortFunc) sort_func, NULL, NULL); } static void gtd_storage_selector_finalize (GObject *object) { G_OBJECT_CLASS (gtd_storage_selector_parent_class)->finalize (object); } static void gtd_storage_selector_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStorageSelector *self = GTD_STORAGE_SELECTOR (object); switch (prop_id) { case PROP_MANAGER: g_value_set_object (value, self->priv->manager); break; case PROP_SELECT_DEFAULT: g_value_set_boolean (value, self->priv->select_default); break; case PROP_SHOW_LOCAL: g_value_set_boolean (value, self->priv->show_local_storage); break; case PROP_SHOW_STUB_ROWS: g_value_set_boolean (value, self->priv->show_stub_rows); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_selector_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStorageSelector *self = GTD_STORAGE_SELECTOR (object); switch (prop_id) { case PROP_MANAGER: self->priv->manager = g_value_get_object (value); if (!self->priv->manager) break; gtd_storage_selector__fill_accounts (self); g_signal_connect_swapped (self->priv->manager, "default-storage-changed", G_CALLBACK (gtd_storage_selector__default_storage_changed), object); g_signal_connect_swapped (self->priv->manager, "storage-added", G_CALLBACK (gtd_storage_selector__add_storage), object); g_signal_connect_swapped (self->priv->manager, "storage-removed", G_CALLBACK (gtd_storage_selector__remove_storage), object); g_object_notify (object, "manager"); break; case PROP_SELECT_DEFAULT: gtd_storage_selector_set_select_default (self, g_value_get_boolean (value)); break; case PROP_SHOW_LOCAL: gtd_storage_selector_show_local (self, g_value_get_boolean (value)); break; case PROP_SHOW_STUB_ROWS: gtd_storage_selector_set_show_stub_rows (self, g_value_get_boolean (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_selector_class_init (GtdStorageSelectorClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->finalize = gtd_storage_selector_finalize; object_class->constructed = gtd_storage_selector_constructed; object_class->get_property = gtd_storage_selector_get_property; object_class->set_property = gtd_storage_selector_set_property; /** * GtdStorageSelector::location-selected: * * Emitted when a storage location is selected. */ signals[STORAGE_SELECTED] = g_signal_new ("storage-selected", GTD_TYPE_STORAGE_SELECTOR, G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 1, GTD_TYPE_STORAGE); /** * GtdStorageSelector::manager: * * A weak reference to the application's #GtdManager instance. */ g_object_class_install_property ( object_class, PROP_MANAGER, g_param_spec_object ("manager", "Manager of this window's application", "The manager of the window's application", GTD_TYPE_MANAGER, G_PARAM_READWRITE)); /** * GtdStorageSelector::show-local-storage: * * Whether it should show a row for the local storage. */ g_object_class_install_property ( object_class, PROP_SHOW_LOCAL, g_param_spec_boolean ("show-local", "Show local storage row", "Whether should show a local storage row instead of a checkbox", FALSE, G_PARAM_READWRITE)); /** * GtdStorageSelector::show-stub-rows: * * Whether it should show stub rows for non-added accounts. */ g_object_class_install_property ( object_class, PROP_SHOW_STUB_ROWS, g_param_spec_boolean ("show-stub-rows", "Show stub rows", "Whether should show stub rows for non-added accounts", TRUE, G_PARAM_READWRITE)); /** * GtdStorageSelector::select-default: * * Whether it should auto selects the default storage location row. */ g_object_class_install_property ( object_class, PROP_SELECT_DEFAULT, g_param_spec_boolean ("select-default", "Selects default storage row", "Whether should select the default storage row", FALSE, G_PARAM_READWRITE)); gtk_widget_class_set_template_from_resource (widget_class, "/org/gnome/todo/ui/storage-selector.ui"); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageSelector, exchange_stub_row); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageSelector, google_stub_row); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageSelector, listbox); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageSelector, local_check); gtk_widget_class_bind_template_child_private (widget_class, GtdStorageSelector, owncloud_stub_row); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_selector__check_toggled); gtk_widget_class_bind_template_callback (widget_class, gtd_storage_selector__listbox_row_activated); } static void gtd_storage_selector_init (GtdStorageSelector *self) { self->priv = gtd_storage_selector_get_instance_private (self); self->priv->show_stub_rows = TRUE; gtk_widget_init_template (GTK_WIDGET (self)); } /** * gtd_storage_selector_new: * * Creates a new #GtdStorageSelector. * * Returns: (transfer full): a new #GtdStorageSelector */ GtkWidget* gtd_storage_selector_new (void) { return g_object_new (GTD_TYPE_STORAGE_SELECTOR, NULL); } /** * gtd_storage_selector_show_local: * * Shows a row for local storage item. * * Returns: */ void gtd_storage_selector_show_local (GtdStorageSelector *selector, gboolean show) { GtdStorageSelectorPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; if (priv->show_local_storage != show) { priv->show_local_storage = show; gtk_widget_set_visible (priv->local_check, !show); if (priv->local_row) gtk_widget_set_visible (priv->local_row, show); g_object_notify (G_OBJECT (selector), "show-local"); } } /** * gtd_storage_selector_get_select_default: * @selector: a #GtdStorageSelector * * Whether the default storage location is selected by default. * * Returns: %TRUE if the default storage location is selected automatically, * %FALSE otherwise. */ gboolean gtd_storage_selector_get_select_default (GtdStorageSelector *selector) { g_return_val_if_fail (GTD_IS_STORAGE_SELECTOR (selector), FALSE); return selector->priv->select_default; } /** * gtd_storage_selector_set_select_default: * @selector: a #GtdStorageSelector * @select_default: %TRUE to auto select the default storage location. * * Whether @selector should select the default storage location by default. * * Returns: */ void gtd_storage_selector_set_select_default (GtdStorageSelector *selector, gboolean select_default) { GtdStorageSelectorPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; if (priv->select_default != select_default) { priv->select_default = select_default; if (select_default) { GList *children; GList *l; /* Select the appropriate row */ children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data)) { GtdStorage *storage = gtd_storage_row_get_storage (l->data); if (gtd_storage_get_is_default (storage)) { gtd_storage_row_set_selected (l->data, TRUE); g_signal_emit (selector, signals[STORAGE_SELECTED], 0, storage); } } } g_list_free (children); } g_object_notify (G_OBJECT (selector), "select-default"); } } /** * gtd_storage_selector_get_selected_storage: * @selector: a #GtdStorageSelector * * Retrieves the currently selected #GtdStorage, or %NULL if * none is selected. * * Returns: (transfer none): the selected #GtdStorage */ GtdStorage* gtd_storage_selector_get_selected_storage (GtdStorageSelector *selector) { GtdStorageSelectorPrivate *priv; GtdStorage *storage; GList *children; GList *l; g_return_val_if_fail (GTD_IS_STORAGE_SELECTOR (selector), NULL); priv = selector->priv; storage = NULL; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data) && gtd_storage_row_get_selected (l->data)) { storage = gtd_storage_row_get_storage (l->data); break; } } g_list_free (children); return storage; } /** * gtd_storage_selector_set_selected_storage: * @selector: a #GtdStorageSelector * @storage: a #GtdStorage * * Selects @storage in the given #GtdStorageSelector. * * Returns: */ void gtd_storage_selector_set_selected_storage (GtdStorageSelector *selector, GtdStorage *storage) { GtdStorageSelectorPrivate *priv; GList *children; GList *l; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data)) { gtd_storage_row_set_selected (l->data, gtd_storage_row_get_storage (l->data) == storage); g_signal_emit (selector, signals[STORAGE_SELECTED], 0, storage); } } g_list_free (children); } /** * gtd_storage_selector_get_show_stub_rows: * @selector: a #GtdStorageSelector * * Retrieves the ::show-stub-rows property. * * Returns: %TRUE if it shows stub rows, %FALSE if it hides them. */ gboolean gtd_storage_selector_get_show_stub_rows (GtdStorageSelector *selector) { g_return_val_if_fail (GTD_IS_STORAGE_SELECTOR (selector), FALSE); return selector->priv->show_stub_rows; } /** * gtd_storage_selector_set_show_stub_rows: * @selector: a #GtdStorageSelector * @show_stub_rows: %TRUE to show stub rows, %FALSE to hide them. * * Sets the #GtdStorageSelector::show-stub-rows property. * * Returns: */ void gtd_storage_selector_set_show_stub_rows (GtdStorageSelector *selector, gboolean show_stub_rows) { GtdStorageSelectorPrivate *priv; g_return_if_fail (GTD_IS_STORAGE_SELECTOR (selector)); priv = selector->priv; if (priv->show_stub_rows != show_stub_rows) { priv->show_stub_rows = show_stub_rows; /* * If we're showing the stub rows, it must check which ones should be shown. * We don't want to show stub rows for */ if (show_stub_rows) { GList *children; GList *l; gint google_counter; gint exchange_counter; gint owncloud_counter; children = gtk_container_get_children (GTK_CONTAINER (priv->listbox)); google_counter = 0; exchange_counter = 0; owncloud_counter = 0; for (l = children; l != NULL; l = l->next) { if (GTD_IS_STORAGE_ROW (l->data)) { GtdStorage *storage = gtd_storage_row_get_storage (l->data); GoaAccount *account; const gchar *type; if (!GTD_IS_STORAGE_GOA (storage)) continue; account = gtd_storage_goa_get_account (GTD_STORAGE_GOA (storage)); type = goa_account_get_provider_type (account); if (g_strcmp0 (type, "google") == 0) google_counter++; else if (g_strcmp0 (type, "exchange") == 0) exchange_counter++; else if (g_strcmp0 (type, "owncloud") == 0) owncloud_counter++; } } gtk_widget_set_visible (priv->google_stub_row, google_counter == 0); gtk_widget_set_visible (priv->exchange_stub_row, exchange_counter == 0); gtk_widget_set_visible (priv->owncloud_stub_row, owncloud_counter == 0); g_list_free (children); } else { gtk_widget_hide (priv->exchange_stub_row); gtk_widget_hide (priv->google_stub_row); gtk_widget_hide (priv->owncloud_stub_row); } g_object_notify (G_OBJECT (selector), "show-stub-rows"); } } gnome-todo-3.18.1/src/storage/gtd-storage-selector.h000066400000000000000000000043471260744630400223340ustar00rootroot00000000000000/* gtd-storage-selector.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_SELECTOR_H #define GTD_STORAGE_SELECTOR_H #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE_SELECTOR (gtd_storage_selector_get_type()) G_DECLARE_FINAL_TYPE (GtdStorageSelector, gtd_storage_selector, GTD, STORAGE_SELECTOR, GtkBox) GtkWidget* gtd_storage_selector_new (void); void gtd_storage_selector_show_local (GtdStorageSelector *selector, gboolean show); gboolean gtd_storage_selector_get_select_default (GtdStorageSelector *selector); void gtd_storage_selector_set_select_default (GtdStorageSelector *selector, gboolean select_default); GtdStorage* gtd_storage_selector_get_selected_storage (GtdStorageSelector *selector); void gtd_storage_selector_set_selected_storage (GtdStorageSelector *selector, GtdStorage *storage); gboolean gtd_storage_selector_get_show_stub_rows (GtdStorageSelector *selector); void gtd_storage_selector_set_show_stub_rows (GtdStorageSelector *selector, gboolean show_stub_rows); G_END_DECLS #endif /* GTD_STORAGE_SELECTOR_H */ gnome-todo-3.18.1/src/storage/gtd-storage.c000066400000000000000000000310561260744630400205060ustar00rootroot00000000000000/* gtd-storage.c * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #include "gtd-task-list.h" #include "gtd-storage.h" #include typedef struct { gchar *id; gchar *name; gchar *provider; gint enabled : 1; gint is_default : 1; } GtdStoragePrivate; G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GtdStorage, gtd_storage, G_TYPE_OBJECT) enum { PROP_0, PROP_ENABLED, PROP_ICON, PROP_ID, PROP_IS_DEFAULT, PROP_NAME, PROP_PROVIDER, LAST_PROP }; static void gtd_storage_finalize (GObject *object) { GtdStorage *self = (GtdStorage *)object; GtdStoragePrivate *priv = gtd_storage_get_instance_private (self); g_clear_pointer (&priv->id, g_free); g_clear_pointer (&priv->name, g_free); g_clear_pointer (&priv->provider, g_free); G_OBJECT_CLASS (gtd_storage_parent_class)->finalize (object); } static void gtd_storage_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { GtdStorage *self = GTD_STORAGE (object); GtdStoragePrivate *priv = gtd_storage_get_instance_private (self); switch (prop_id) { case PROP_ENABLED: g_value_set_boolean (value, priv->enabled); break; case PROP_ICON: g_value_set_object (value, gtd_storage_get_icon (self)); break; case PROP_ID: g_value_set_string (value, gtd_storage_get_id (self)); break; case PROP_IS_DEFAULT: g_value_set_boolean (value, priv->is_default); break; case PROP_NAME: g_value_set_string (value, gtd_storage_get_name (self)); break; case PROP_PROVIDER: g_value_set_string (value, gtd_storage_get_provider (self)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { GtdStorage *self = GTD_STORAGE (object); switch (prop_id) { case PROP_ENABLED: gtd_storage_set_enabled (self, g_value_get_boolean (value)); break; case PROP_ID: gtd_storage_set_id (self, g_value_get_string (value)); break; case PROP_IS_DEFAULT: gtd_storage_set_is_default (self, g_value_get_boolean (value)); break; case PROP_NAME: gtd_storage_set_name (self, g_value_get_string (value)); break; case PROP_PROVIDER: gtd_storage_set_provider (self, g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } static void gtd_storage_class_init (GtdStorageClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); object_class->finalize = gtd_storage_finalize; object_class->get_property = gtd_storage_get_property; object_class->set_property = gtd_storage_set_property; /** * GtdStorage::enabled: * * Whether the storage is available to be used. */ g_object_class_install_property ( object_class, PROP_ENABLED, g_param_spec_boolean ("enabled", "Whether the storage is enabled", "Whether the storage is available to be used.", FALSE, G_PARAM_READWRITE)); /** * GtdStorage::icon: * * The icon representing this storage. */ g_object_class_install_property ( object_class, PROP_ICON, g_param_spec_object ("icon", "Icon of the storage", "The icon representing the storage location.", G_TYPE_ICON, G_PARAM_READABLE)); /** * GtdStorage::id: * * The unique identifier of this storage. */ g_object_class_install_property ( object_class, PROP_ID, g_param_spec_string ("id", "Identifier of the storage", "The unique identifier of the storage location.", NULL, G_PARAM_READWRITE)); /** * GtdStorage::is-default: * * Whether the storage is the default to be used. */ g_object_class_install_property ( object_class, PROP_IS_DEFAULT, g_param_spec_boolean ("is-default", "Whether the storage is the default", "Whether the storage is the default storage location to be used.", FALSE, G_PARAM_READWRITE)); /** * GtdStorage::name: * * The user-visible name of this storage. */ g_object_class_install_property ( object_class, PROP_NAME, g_param_spec_string ("name", "Name of the storage", "The user-visible name of the storage location.", NULL, G_PARAM_READWRITE)); /** * GtdStorage::provider: * * The user-visible provider name of this storage. */ g_object_class_install_property ( object_class, PROP_PROVIDER, g_param_spec_string ("provider", "Name of the data provider of the storage", "The user-visible name of the data provider of the storage location.", NULL, G_PARAM_READWRITE)); } static void gtd_storage_init (GtdStorage *self) { } /** * gtd_storage_get_enabled: * @storage: a #GtdStorage * * Whether @storage is available for creating new #GtdTaskList. * * Returns: %TRUE if the storage is available for use, %FALSE otherwise. */ gboolean gtd_storage_get_enabled (GtdStorage *storage) { GtdStoragePrivate *priv; g_return_val_if_fail (GTD_IS_STORAGE (storage), FALSE); priv = gtd_storage_get_instance_private (storage); return priv->enabled; } /** * gtd_storage_set_enabled: * @storage: a #GtdStorage * @enabled: %TRUE to make it available for use, %FALSE otherwise. * * Sets the #GtdStorage::enabled property to @enabled. * * Returns: */ void gtd_storage_set_enabled (GtdStorage *storage, gboolean enabled) { GtdStoragePrivate *priv; g_return_if_fail (GTD_IS_STORAGE (storage)); priv = gtd_storage_get_instance_private (storage); if (priv->enabled != enabled) { priv->enabled = enabled; g_object_notify (G_OBJECT (storage), "enabled"); } } /** * gtd_storage_get_icon: * @storage: a #GtdStorage * * The #GIcon that represents this storage location. A provider * type must be given, or this function returns %NULL. * * Returns: (transfer none): the #GIcon that represents this * storage location, or %NULL. */ GIcon* gtd_storage_get_icon (GtdStorage *storage) { g_return_val_if_fail (GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (storage))->get_icon, NULL); return GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (storage))->get_icon (storage); } /** * gtd_storage_get_id: * @storage: a #GtdStorage * * Retrieves the unique identifier of @storage. * * Returns: (transfer none): the unique identifier of @storage. */ const gchar* gtd_storage_get_id (GtdStorage *storage) { GtdStoragePrivate *priv; g_return_val_if_fail (GTD_IS_STORAGE (storage), FALSE); priv = gtd_storage_get_instance_private (storage); return priv->id; } /** * gtd_storage_set_id: * @storage: a #GtdStorage * @id: the id of @storage * * Sets the unique identifier of @storage. * * Returns: */ void gtd_storage_set_id (GtdStorage *storage, const gchar *id) { GtdStoragePrivate *priv; g_return_if_fail (GTD_IS_STORAGE (storage)); priv = gtd_storage_get_instance_private (storage); if (g_strcmp0 (priv->id, id) != 0) { g_clear_pointer (&priv->id, g_free); priv->id = g_strdup (id); g_object_notify (G_OBJECT (storage), "id"); } } /** * gtd_storage_get_is_default: * @storage: a #GtdStorage * * Whether @storage is the default #GtdStorage or not. * * Returns: %TRUE is @storage is the default storage, %FALSE otherwise. */ gboolean gtd_storage_get_is_default (GtdStorage *storage) { GtdStoragePrivate *priv; g_return_val_if_fail (GTD_IS_STORAGE (storage), FALSE); priv = gtd_storage_get_instance_private (storage); return priv->is_default; } /** * gtd_storage_set_is_default: * @storage: a #GtdStorage * @is_default: %TRUE to make @storage the default one, %FALSE otherwise * * Sets the #GtdStorage::is-default property. * * Returns: */ void gtd_storage_set_is_default (GtdStorage *storage, gboolean is_default) { GtdStoragePrivate *priv; g_return_if_fail (GTD_IS_STORAGE (storage)); priv = gtd_storage_get_instance_private (storage); if (priv->is_default != is_default) { priv->is_default = is_default; g_object_notify (G_OBJECT (storage), "is-default"); } } /** * gtd_storage_get_name: * @storage: a #GtdStorage * * Retrieves the user-visible name of @storage * * Returns: (transfer none): the user-visible name of @storage */ const gchar* gtd_storage_get_name (GtdStorage *storage) { GtdStoragePrivate *priv; g_return_val_if_fail (GTD_IS_STORAGE (storage), NULL); priv = gtd_storage_get_instance_private (storage); return priv->name; } /** * gtd_storage_set_name: * @storage: a #GtdStorage * * Sets the user visible name of @storage. * * Returns: */ void gtd_storage_set_name (GtdStorage *storage, const gchar *name) { GtdStoragePrivate *priv; g_return_if_fail (GTD_IS_STORAGE (storage)); priv = gtd_storage_get_instance_private (storage); if (g_strcmp0 (priv->name, name) != 0) { g_clear_pointer (&priv->name, g_free); priv->name = g_strdup (name); g_object_notify (G_OBJECT (storage), "name"); } } /** * gtd_storage_get_provider: * @storage: a #GtdStorage * * Retrieves the user-visible name of @storage's provider * * Returns: (transfer none): the user-visible name of @storage's provider. */ const gchar* gtd_storage_get_provider (GtdStorage *storage) { GtdStoragePrivate *priv; g_return_val_if_fail (GTD_IS_STORAGE (storage), NULL); priv = gtd_storage_get_instance_private (storage); return priv->provider; } /** * gtd_storage_set_provider: * @storage: a #GtdStorage * @provider: the storage provider for @storage. * * Sets the provider of @storage. This directly affects the * @GtdStorage::icon property. * * Returns: */ void gtd_storage_set_provider (GtdStorage *storage, const gchar *provider) { GtdStoragePrivate *priv; g_return_if_fail (GTD_IS_STORAGE (storage)); priv = gtd_storage_get_instance_private (storage); if (g_strcmp0 (priv->provider, provider) != 0) { g_clear_pointer (&priv->provider, g_free); priv->provider = g_strdup (provider); g_object_notify (G_OBJECT (storage), "provider"); } } /** * gtd_storage_compare: * @a: a #GtdStorage * @b: a #GtdStorage * * Compare @a and @b * * Returns: -1 if @a comes before @b, 0 if they're equal, 1 otherwise. */ gint gtd_storage_compare (GtdStorage *a, GtdStorage *b) { gint retval; g_return_val_if_fail (GTD_IS_STORAGE (a), 0); g_return_val_if_fail (GTD_IS_STORAGE (b), 0); /* Let subclasses decide */ retval = GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (a))->compare (a, b); if (retval != 0) return retval; retval = GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (b))->compare (a, b); return retval; } GtdTaskList* gtd_storage_create_task_list (GtdStorage *storage, const gchar *name) { g_return_val_if_fail (GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (storage))->create_list, NULL); return GTD_STORAGE_CLASS (G_OBJECT_GET_CLASS (storage))->create_list (storage, name); } gnome-todo-3.18.1/src/storage/gtd-storage.h000066400000000000000000000067771260744630400205270ustar00rootroot00000000000000/* gtd-storage.h * * Copyright (C) 2015 Georges Basile Stavracas Neto * * 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 . */ #ifndef GTD_STORAGE_H #define GTD_STORAGE_H #include "gtd-types.h" #include #include G_BEGIN_DECLS #define GTD_TYPE_STORAGE (gtd_storage_get_type()) G_DECLARE_DERIVABLE_TYPE (GtdStorage, gtd_storage, GTD, STORAGE, GObject) struct _GtdStorageClass { GObjectClass parent; /* Abstract methods */ GIcon* (*get_icon) (GtdStorage *storage); gint (*compare) (GtdStorage *a, GtdStorage *b); GtdTaskList* (*create_list) (GtdStorage *storage, const gchar *name); /* Padding for future expansions */ gpointer padding[12]; }; gboolean gtd_storage_get_enabled (GtdStorage *storage); void gtd_storage_set_enabled (GtdStorage *storage, gboolean enabled); GIcon* gtd_storage_get_icon (GtdStorage *storage); const gchar* gtd_storage_get_id (GtdStorage *storage); void gtd_storage_set_id (GtdStorage *storage, const gchar *id); gboolean gtd_storage_get_is_default (GtdStorage *storage); void gtd_storage_set_is_default (GtdStorage *storage, gboolean is_default); const gchar* gtd_storage_get_name (GtdStorage *storage); void gtd_storage_set_name (GtdStorage *storage, const gchar *name); const gchar* gtd_storage_get_provider (GtdStorage *storage); void gtd_storage_set_provider (GtdStorage *storage, const gchar *name); gint gtd_storage_compare (GtdStorage *a, GtdStorage *b); GtdTaskList* gtd_storage_create_task_list (GtdStorage *storage, const gchar *name); G_END_DECLS #endif /* GTD_STORAGE_H */