From 891b4891075f4ecff9a349bfcfefaf11d8c87811 Mon Sep 17 00:00:00 2001 From: itdominator <1itdominator@gmail.com> Date: Wed, 23 Feb 2022 00:54:16 -0600 Subject: [PATCH] Initial push --- LICENSE | 342 ++++- README.md | 22 +- images/pic1.png | Bin 0 -> 458915 bytes src/__builtins__.py | 76 ++ src/__init__.py | 51 + src/__main__.py | 41 + src/controller/Controller.py | 140 ++ src/controller/Controller_Data.py | 67 + src/controller/IPCServerMixin.py | 64 + src/controller/View.py | 78 ++ src/controller/__init__.py | 8 + src/controller/icons/__init__.py | 0 src/controller/icons/icon.py | 78 ++ src/controller/icons/mixins/__init__.py | 0 .../icons/mixins/desktopiconmixin.py | 62 + src/controller/icons/mixins/videoiconmixin.py | 53 + .../icons/mixins/xdg/BaseDirectory.py | 160 +++ src/controller/icons/mixins/xdg/Config.py | 39 + .../icons/mixins/xdg/DesktopEntry.py | 435 +++++++ src/controller/icons/mixins/xdg/Exceptions.py | 84 ++ src/controller/icons/mixins/xdg/IconTheme.py | 445 +++++++ src/controller/icons/mixins/xdg/IniFile.py | 419 ++++++ src/controller/icons/mixins/xdg/Locale.py | 79 ++ src/controller/icons/mixins/xdg/Menu.py | 1125 +++++++++++++++++ src/controller/icons/mixins/xdg/MenuEditor.py | 541 ++++++++ src/controller/icons/mixins/xdg/Mime.py | 780 ++++++++++++ .../icons/mixins/xdg/RecentFiles.py | 181 +++ src/controller/icons/mixins/xdg/__init__.py | 3 + src/controller/icons/mixins/xdg/util.py | 75 ++ src/controller/mixins/TreeViewUpdateMixin.py | 49 + src/controller/mixins/__init__.py | 1 + src/utils/Logger.py | 56 + src/utils/Settings.py | 110 ++ src/utils/__init__.py | 6 + .../usr/share/mirage2/Main_Window.glade | 146 +++ .../usr/share/mirage2/icons/mirage2.png | Bin 0 -> 5597 bytes .../usr/share/mirage2/icons/mirage_blank.png | Bin 0 -> 7623 bytes user_config/usr/share/mirage2/mirage2.png | Bin 0 -> 5597 bytes user_config/usr/share/mirage2/stylesheet.css | 86 ++ 39 files changed, 5841 insertions(+), 61 deletions(-) create mode 100644 images/pic1.png create mode 100644 src/__builtins__.py create mode 100644 src/__init__.py create mode 100644 src/__main__.py create mode 100644 src/controller/Controller.py create mode 100644 src/controller/Controller_Data.py create mode 100644 src/controller/IPCServerMixin.py create mode 100644 src/controller/View.py create mode 100644 src/controller/__init__.py create mode 100644 src/controller/icons/__init__.py create mode 100644 src/controller/icons/icon.py create mode 100644 src/controller/icons/mixins/__init__.py create mode 100644 src/controller/icons/mixins/desktopiconmixin.py create mode 100644 src/controller/icons/mixins/videoiconmixin.py create mode 100644 src/controller/icons/mixins/xdg/BaseDirectory.py create mode 100644 src/controller/icons/mixins/xdg/Config.py create mode 100644 src/controller/icons/mixins/xdg/DesktopEntry.py create mode 100644 src/controller/icons/mixins/xdg/Exceptions.py create mode 100644 src/controller/icons/mixins/xdg/IconTheme.py create mode 100644 src/controller/icons/mixins/xdg/IniFile.py create mode 100644 src/controller/icons/mixins/xdg/Locale.py create mode 100644 src/controller/icons/mixins/xdg/Menu.py create mode 100644 src/controller/icons/mixins/xdg/MenuEditor.py create mode 100644 src/controller/icons/mixins/xdg/Mime.py create mode 100644 src/controller/icons/mixins/xdg/RecentFiles.py create mode 100644 src/controller/icons/mixins/xdg/__init__.py create mode 100644 src/controller/icons/mixins/xdg/util.py create mode 100644 src/controller/mixins/TreeViewUpdateMixin.py create mode 100644 src/controller/mixins/__init__.py create mode 100644 src/utils/Logger.py create mode 100644 src/utils/Settings.py create mode 100644 src/utils/__init__.py create mode 100644 user_config/usr/share/mirage2/Main_Window.glade create mode 100644 user_config/usr/share/mirage2/icons/mirage2.png create mode 100644 user_config/usr/share/mirage2/icons/mirage_blank.png create mode 100644 user_config/usr/share/mirage2/mirage2.png create mode 100644 user_config/usr/share/mirage2/stylesheet.css diff --git a/LICENSE b/LICENSE index 17cb286..d159169 100644 --- a/LICENSE +++ b/LICENSE @@ -1,117 +1,339 @@ -GNU GENERAL PUBLIC LICENSE -Version 2, June 1991 + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 -Copyright (C) 1989, 1991 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble -Preamble + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) 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 +this service 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. -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 this service 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 make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. -To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. 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. -For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. 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. + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. -We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. -Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. -Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. + The precise terms and conditions for copying, distribution and +modification follow. -The precise terms and conditions for copying, distribution and modification follow. + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". -0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. -Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. -1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: -2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. - a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. - b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) - c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. -These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. -Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. -In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: -3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, - a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, - b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) - c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. -The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. -If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. -4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. -5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. -6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. -7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. -If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. -It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. -This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. -8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + 9. The Free Software Foundation may publish revised and/or new versions +of the 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. -9. The Free Software Foundation may publish revised and/or new versions of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. -Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. -10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + NO WARRANTY -NO WARRANTY + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE 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. + END OF TERMS AND CONDITIONS -END OF TERMS AND CONDITIONS + How to Apply These Terms to Your New Programs -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. -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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. -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 convey 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) - one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - 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 2 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. - 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, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. +Also add information on how to contact you by electronic and paper mail. -If the program is interactive, make it output a short notice like this when it starts in an interactive mode: +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author Gnomovision 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. + Gnomovision version 69, Copyright (C) year name of author + Gnomovision 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, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. -You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: - Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. -signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice + , 1 April 1989 + Ty Coon, President of Vice + +This 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. diff --git a/README.md b/README.md index f624c97..bdc6621 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,23 @@ # Mirage2 -Mirage2 is a fast and very minimal Gtk+ image viewer. \ No newline at end of file +Mirage2 is a fast and very minimal Gtk+ image viewer. + +# Notes +Still Work in progress! + +
Install Setup
+``` +sudo apt-get install python3.8 python3-setproctitle python3-gi +``` + +# TODO +
    +
  • Add flip and rotate functionality.
  • +
  • Add scroll in and out functionality.
  • +
  • Add save and save as functionality.
  • +
  • Add play back of gif animation plus controls to modify speed and played frames.
  • +
  • Add simple image effects.
  • +
+ +# Images +![1 Mirage2 loaded with image and thumbnails. ](images/pic1.png) diff --git a/images/pic1.png b/images/pic1.png new file mode 100644 index 0000000000000000000000000000000000000000..911f3d782e66fa5f8eb40a213df7ef1b2e2da736 GIT binary patch literal 458915 zcmXt9cRZWz*GDN;YFBO57B#B&7PDGaql((CU0aRVL2DN+wO7&FqxMW4^mgpgb>`^`zWMa$ZG+vHb#_f1IXem;&pd%T zy^92g2hIk3W3+ueT+<~JTl~PWvdZtTKM@3kJ0Qok-{Typq515VDe3eA zd>1p(K3&oO?clUFfSx$IV*ca!CT`sT2yYU<3fc;mPotrsqNxw@nB>?q5;kjb;ZG=3 z5IJ0Kad-L1+7bILpW4}&Xs*V=doogT(f45S`q%I2x#kcDSs_b zZ_%&*Wn%fq@PA|#^ZPcdVa(4z(F{#Z)$6h-0~3`%#f09*DU3hSf-BK^9t{2p&^o1& zOwJy7UY%R+AZMC0c|#UWEH-_3ho;f@fQ^mCDPFg6-LG@V8?hYJKhxz;bSWHcUd!W)1t)~$hvqDdkuYN_~D*EURif^N*frua+~>lwE(u?(ty`kSN~ zHrMh$i50U0gPZ0cu0k?z?z^^{Pa>6^-k~rq;da1mUu1_)&J&F|caRIF^{jl86RYQC zL$0j8ZjckdXLPOaI?FatKSHuRRk+@(E$e1WEJbm(g{0V2ZQt+rM5M75#9!^mLWM+f zme&VJWNdJ|;xpB`ZDbuEoQ*2XrRrU0A>%PSYC4Ac|H9Mh_W|C7>CenwpmPxyaNP%J zBTm%edP?v*gkxTPhL-In90Xp|zO3;|ZE~jKAA9T1 z9q*NH_|K(mH*?z>;a;=EW>xsnRokR%1EEwts%CYPL?`MBPi(|Q6Vc}D$3@*7BvkZ+!*w7&=OW2pflB5l0L>j|q zk>mt4N4KuOxp=Je`?xZMSND^WgbEJxMtg1-p_5bR<%4##E5ka2fq1`Bf#Ls$X5#jZ zhAhyTLorcF8A+MmbOgyd{$TPG=mZFaU75xh{r7#Qmwjr#$6o#azhVmLD+T^T>KCp0 z|2QgnD<&{r_CL85SpO+eFaJ+Sv5&f)+>_EXqOqSp29yc#AmXB#4e26cN%Z&`^M8Au zBZvDktgy7dn<+!Q-r9~pV`CX8gx#8)p1?FqX8mb3Ck>klTOi7Xx4mZ}<_Y9)YO|!3?ca-Ss>s$I}iNDiN$0^C^OGl@FJeu>l zHM@7aJmH*)NT>C-yoL+}EM>e4(2yzlq>~c~cwSPlPo}8q{+5j2mX++eLW)-P4Vu@# zE|wGS_!}8Y`)O$O^6>lor4cI=laiAY6ujeioVBUisoRZ4NEZSiYmM%kLkpgpc07kFy1(>$8w1 zrg%J{9ajN<9=)o2ez#6!#6LFYyG@PX>POEJfNgd1Ng0>=T~}I#vIN;XN!_m-G>J** z&X~_kk|)P?A_`l!qf#9kj#L%P%S=D3&}wO^3~AI=y

>(KFlI37o>q25%0Z*KuKg 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±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

V~uyGzGjKJ?v(CU3ZX`nvto zJGPfcj-B|!ZxwgkHFf=g5b1jdtG z-&_3f$rJOp+}%64$4yOC?E1a#+R9QnHN9r+lWXfoPAnZ>+XykSK%u2*Qf*jCVHKsQ zFbq&7L8@tE+4Z_4D%Qoa;HoXAos3CjSYe0?C?ge=6p>V`CYHWwBehuzW7=iuoMSdY zQ_Ai(A}S&&8CBo!H@%HPJ!q1uiV#O*1~G2bO)rWEd*_m~q1#I-ee@aZId>y!bun-$sMW<~Zs$9W#mrS%4eHnGZvMT`{nlA6 zj4vUmYIQF47)BUjgb_vDz_EL}HO<}J;c-^HQ!w4gcFv18Uj4;Bv z;;BD;=&lDp;>waQOJ!;MgD0MN&9C0PLr~x1r%MmQtD=xZ^y&f9>)%3eF#c?T%|HJ0 zo9_g~OvYFyA|C!X{GdW}4lIePO0I9h`Ru-=w@RA4oiOREhjiiNtFPO`JKW=0&*KF- zk~i6_zQu6#$N%-?6X?x9b++Ssqbv1>+kUeRUA##8Tb-S^flD6ye}|Hf=XChz=^VWV z?_f3f@sa46Ki=}~MC7cs&NWRfBC2mV6))BWq~X9YR1rG=XI2$6Gt*G4tgPV25A1AT zTz%6^{gw;kS(lBsz8#$7s`Dc#z3HJ4Vd%d>t*VtIdGA%^%uWm&ReAlbPKQG{+c?g7 zobsq}9RL6T7D+@wR12#;1@_-|YkPd`Tt9OW@&5yhs#YxknC;yF0000 0: + return self._gui_events.pop(0) + return None + + def _pop_module_event(self): + if len(self._module_events) > 0: + return self._module_events.pop(0) + return None + + + def push_gui_event(self, event): + if len(event) == 3: + self._gui_events.append(event) + return None + + raise Exception("Invald event format! Please do: [type, target, data]") + + def push_module_event(self, event): + if len(event) == 3: + self._module_events.append(event) + return None + + raise Exception("Invald event format! Please do: [type, target, data]") + + def read_gui_event(self): + return self._gui_events[0] + + def read_module_event(self): + return self._module_events[0] + + def consume_gui_event(self): + return self._pop_gui_event() + + def consume_module_event(self): + return self._pop_module_event() + + + +# NOTE: Just reminding myself we can add to builtins two different ways... +# __builtins__.update({"event_system": Builtins()}) +builtins.app_name = "Mirage2" +builtins.event_system = Builtins() +builtins.event_sleep_time = 0.2 +builtins.debug = False +builtins.trace_debug = False diff --git a/src/__init__.py b/src/__init__.py new file mode 100644 index 0000000..5e629c1 --- /dev/null +++ b/src/__init__.py @@ -0,0 +1,51 @@ +# Python imports +import os, inspect, time + +# Lib imports + +# Application imports +from utils import Settings +from controller import Controller +from __builtins__ import Builtins + + + + +class Main(Builtins): + def __init__(self, args, unknownargs): + if not debug: + event_system.create_ipc_server() + + # NOTE: Keeping here just incase I change my mind... + # time.sleep(0.2) + # if not trace_debug: + # if not event_system.is_ipc_alive: + # if unknownargs: + # for arg in unknownargs: + # if os.path.isdir(arg): + # message = f"FILE|{arg}" + # event_system.send_ipc_message(message) + # + # raise Exception("IPC Server Exists: Will send data to it and close...") + + + settings = Settings() + settings.create_window() + + controller = Controller(settings, args, unknownargs) + if not controller: + raise Exception("Controller exited and doesn't exist...") + + # Gets the methods from the classes and sets to handler. + # Then, builder from settings will connect to any signals it needs. + classes = [controller] + handlers = {} + for c in classes: + methods = None + try: + methods = inspect.getmembers(c, predicate=inspect.ismethod) + handlers.update(methods) + except Exception as e: + print(repr(e)) + + settings.get_builder().connect_signals(handlers) diff --git a/src/__main__.py b/src/__main__.py new file mode 100644 index 0000000..a58f911 --- /dev/null +++ b/src/__main__.py @@ -0,0 +1,41 @@ +#!/usr/bin/python3 + + +# Python imports +import argparse, faulthandler, traceback +from setproctitle import setproctitle + +import tracemalloc +tracemalloc.start() + + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + +# Application imports +from __init__ import Main + + +if __name__ == "__main__": + try: + # import web_pdb + # web_pdb.set_trace() + + setproctitle('Mirage2') + faulthandler.enable() # For better debug info + + parser = argparse.ArgumentParser() + # Add long and short arguments + parser.add_argument("--file", "-f", default=None, help="JOpen an image.") + parser.add_argument("--dir", "-d", default=None, help="load a dir with images.") + + # Read arguments (If any...) + args, unknownargs = parser.parse_known_args() + + Main(args, unknownargs) + Gtk.main() + except Exception as e: + traceback.print_exc() + quit() diff --git a/src/controller/Controller.py b/src/controller/Controller.py new file mode 100644 index 0000000..acba0f8 --- /dev/null +++ b/src/controller/Controller.py @@ -0,0 +1,140 @@ +# Python imports +import os +import threading, subprocess, time + + +# Gtk imports +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GLib, GdkPixbuf + +# Application imports +from .mixins import * +from . import Controller_Data + + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + + return wrapper + + +class Controller(TreeViewUpdateMixin, Controller_Data): + def __init__(self, _settings, args, unknownargs): + self.setup_controller_data(_settings) + self.window.show_all() + self.handle_args(args, unknownargs) + + + def tear_down(self, widget=None, eve=None): + event_system.send_ipc_message("close server") + + time.sleep(event_sleep_time) + Gtk.main_quit() + + + @threaded + def gui_event_observer(self): + while True: + time.sleep(event_sleep_time) + event = event_system.consume_gui_event() + if event: + try: + type, target, data = event + if not type: + method = getattr(self.__class__, target) + GLib.idle_add(method, *(self, *data,)) + else: + method = getattr(self.__class__, "hadle_gui_event_and_call_back") + GLib.idle_add(method, *(self, type, target, data)) + except Exception as e: + print(repr(e)) + + def hadle_gui_event_and_call_back(self, type, target, parameters): + method = getattr(self.__class__, target) + data = method(*(self, *parameters)) + event_system.push_module_event([type, None, (data,)]) + + + def handle_args(self, args=None, unknownargs=None): + if args.dir and os.path.isdir(args.dir): + self.load_store(self.view, self.thumbnail_store, arg) + + if args.file and os.path.isfile(args.file): + path = "/" + '/'.join(rgs.file.split("/")[:-1]) + self.load_store(self.view, self.thumbnail_store, path) + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(args.file)) + self._load_image(image) + + if unknownargs: + for arg in unknownargs: + if os.path.isdir(arg): + self.load_store(self.view, self.thumbnail_store, arg) + elif os.path.isfile(arg): + path = "/" + '/'.join(arg.split("/")[:-1]) + self.load_store(self.view, self.thumbnail_store, path) + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(arg)) + self._load_image(image) + + + + def _on_drag_data_received(self, widget, drag_context, x, y, data, info, time): + if info == 80: + uri = data.get_uris()[0].split("file://")[1] + if os.path.isfile(uri) and uri.endswith(self.images_filter): + try: + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(uri)) + except Exception as e: + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(self.blank_image)) + + self._load_image(image) + elif os.path.isdir(uri): + self.load_store(self.view, self.thumbnail_store, uri) + + + def load_image_from_treeview(self, widget): + store, iter = widget.get_selection().get_selected() + uri = store.get_value(iter, 1) + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(uri)) + self._load_image(image) + + def _get_pixbuf(self, uri): + self.current_path_label.set_label(uri) + self.current_img = uri + geom_rec = self.image_area.get_parent().get_parent().get_allocated_size()[0] + width = geom_rec.width - 15 + height = geom_rec.height - 15 + self.image_area.set_size_request(width, height) + return GdkPixbuf.Pixbuf.new_from_file_at_scale(uri, width, height, True) + + def _load_image(self, img): + self.clear_children(self.image_area) + self.image_area.add(img) + self.image_area.show_all() + + @threaded + def scale_image_from_parent_resize(self, widget, allocation): + if not self.image_update_lock: + GLib.idle_add(self._on_scale_image_from_parent_resize, ()) + + + def _on_scale_image_from_parent_resize(self, eve): + if self.current_img: + self.image_update_lock = True + image = Gtk.Image.new_from_pixbuf(self._get_pixbuf(self.current_img)) + self._load_image(image) + self.image_update_lock = False + + def get_clipboard_data(self): + proc = subprocess.Popen(['xclip','-selection', 'clipboard', '-o'], stdout=subprocess.PIPE) + retcode = proc.wait() + data = proc.stdout.read() + return data.decode("utf-8").strip() + + def set_clipboard_data(self, data): + proc = subprocess.Popen(['xclip','-selection','clipboard'], stdin=subprocess.PIPE) + proc.stdin.write(data) + proc.stdin.close() + retcode = proc.wait() diff --git a/src/controller/Controller_Data.py b/src/controller/Controller_Data.py new file mode 100644 index 0000000..c74e03d --- /dev/null +++ b/src/controller/Controller_Data.py @@ -0,0 +1,67 @@ +# Python imports +import os, signal + +# Lib imports +import gi +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') +from gi.repository import Gtk, Gdk, GLib + +# Application imports +from . import View + + + +class Controller_Data: + def clear_children(self, widget): + ''' Clear children of a gtk widget. ''' + for child in widget.get_children(): + widget.remove(child) + + def clear_console(self): + os.system('cls' if os.name == 'nt' else 'clear') + + def call_method(self, _method_name, data = None): + method_name = str(_method_name) + method = getattr(self, method_name, lambda data: f"No valid key passed...\nkey={method_name}\nargs={data}") + return method(data) if data else method() + + def has_method(self, obj, name): + return callable(getattr(obj, name, None)) + + def setup_controller_data(self, _settings): + self.settings = _settings + self.builder = self.settings.get_builder() + self.window = self.settings.get_main_window() + self.logger = self.settings.get_logger() + + self.home_path = self.settings.get_home_path() + self.success_color = self.settings.get_success_color() + self.warning_color = self.settings.get_warning_color() + self.error_color = self.settings.get_error_color() + + + self.current_path_label = self.builder.get_object("current_path_label") + self.thumbnails_view = self.builder.get_object("thumbnails_view") + self.thumbnail_store = self.builder.get_object("thumbnail_store") + self.image_area = self.builder.get_object("image_area") + self.blank_image = self.settings.get_blank_image() + + + self.thumbnails_view.connect("drag-data-received", self._on_drag_data_received) + URI_TARGET_TYPE = 80 + uri_target = Gtk.TargetEntry.new('text/uri-list', Gtk.TargetFlags(0), URI_TARGET_TYPE) + targets = [ uri_target ] + action = Gdk.DragAction.COPY + self.thumbnails_view.enable_model_drag_dest(targets, action) + self.thumbnails_view.enable_model_drag_source(0, targets, action) + + self.images_filter = self.settings.get_images_filter() + self.view = View(self.images_filter, self.blank_image) + self.current_img = None + self.image_update_lock = False + + + + self.window.connect("delete-event", self.tear_down) + GLib.unix_signal_add(GLib.PRIORITY_DEFAULT, signal.SIGINT, self.tear_down) diff --git a/src/controller/IPCServerMixin.py b/src/controller/IPCServerMixin.py new file mode 100644 index 0000000..7410fb8 --- /dev/null +++ b/src/controller/IPCServerMixin.py @@ -0,0 +1,64 @@ +# Python imports +import threading, socket, time +from multiprocessing.connection import Listener, Client + +# Lib imports + +# Application imports + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs, daemon=True).start() + return wrapper + + + + +class IPCServerMixin: + + @threaded + def create_ipc_server(self): + listener = Listener((self.ipc_address, self.ipc_port), authkey=self.ipc_authkey) + self.is_ipc_alive = True + while True: + conn = listener.accept() + start_time = time.time() + + print(f"New Connection: {listener.last_accepted}") + while True: + msg = conn.recv() + if debug: + print(msg) + + if "FILE|" in msg: + file = msg.split("FILE|")[1].strip() + if file: + event_system.push_gui_event([None, "handle_file_from_ipc", (file,)]) + + conn.close() + break + + + if msg == 'close connection': + conn.close() + break + if msg == 'close server': + conn.close() + break + + # NOTE: Not perfect but insures we don't lockup the connection for too long. + end_time = time.time() + if (end - start) > self.ipc_timeout: + conn.close() + + listener.close() + + + def send_ipc_message(self, message="Empty Data..."): + try: + conn = Client((self.ipc_address, self.ipc_port), authkey=self.ipc_authkey) + conn.send(message) + conn.send('close connection') + except Exception as e: + print(repr(e)) diff --git a/src/controller/View.py b/src/controller/View.py new file mode 100644 index 0000000..aa2c16f --- /dev/null +++ b/src/controller/View.py @@ -0,0 +1,78 @@ +# Python imports +import hashlib, re +from os import listdir +from os.path import isdir, isfile, join + +# Lib imports + + +# Application imports +from .icons.icon import Icon + + +class View(Icon): + def __init__(self, img_filter, default_icon): + self.DEFAULT_ICON = default_icon + self._hide_hidden = True + self._images = [] + self.fimages = img_filter + self.VIDEO_ICON_WH = [256, 128] + + def load_directory(self, _path): + path = _path + self._images = [] + + if not isdir(path): + return "" + + for f in listdir(path): + file = join(path, f) + if self._hide_hidden: + if f.startswith('.'): + continue + + if isfile(file): + lowerName = file.lower() + if lowerName.endswith(self.fimages): + self._images.append(f) + + self._images.sort(key=self._natural_keys) + + + def get_pixbuf_icon_str_combo(self): + data = [] + dir = self.get_current_directory() + for file in self._files: + icon = self.create_icon(dir, file).get_pixbuf() + data.append([icon, file]) + + return data + + + def get_gtk_icon_str_combo(self): + data = [] + dir = self.get_current_directory() + for file in self._files: + icon = self.create_icon(dir, file) + data.append([icon, file[0]]) + + return data + + + def get_images(self): + return self._hash_set(self._images) + + def _hash_text(self, text): + return hashlib.sha256(str.encode(text)).hexdigest()[:18] + + def _hash_set(self, arry): + data = [] + for arr in arry: + data.append([arr, self._hash_text(arr)]) + return data + + def _atoi(self, text): + return int(text) if text.isdigit() else text + + def _natural_keys(self, text): + return [ self._atoi(c) for c in re.split('(\d+)',text) ] diff --git a/src/controller/__init__.py b/src/controller/__init__.py new file mode 100644 index 0000000..c3eeae6 --- /dev/null +++ b/src/controller/__init__.py @@ -0,0 +1,8 @@ +""" + Gtk Bound Signal Module +""" +from .mixins import * +from .View import View +from .IPCServerMixin import IPCServerMixin +from .Controller_Data import Controller_Data +from .Controller import Controller diff --git a/src/controller/icons/__init__.py b/src/controller/icons/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/controller/icons/icon.py b/src/controller/icons/icon.py new file mode 100644 index 0000000..2f3ba4c --- /dev/null +++ b/src/controller/icons/icon.py @@ -0,0 +1,78 @@ +# Python Imports +import os, subprocess, threading, hashlib +from os.path import isfile + +# Gtk imports +import gi +gi.require_version('GdkPixbuf', '2.0') +from gi.repository import GdkPixbuf + +# Application imports +from .mixins.desktopiconmixin import DesktopIconMixin +from .mixins.videoiconmixin import VideoIconMixin + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + return wrapper + + +class Icon(DesktopIconMixin, VideoIconMixin): + def create_icon(self, dir, file): + full_path = f"{dir}/{file}" + return self.get_icon_image(dir, file, full_path) + + def get_icon_image(self, dir, file, full_path): + try: + thumbnl = None + + if file.lower().endswith(self.fimages): # Image Icon + thumbnl = self.create_scaled_image(full_path, self.VIDEO_ICON_WH) + + return thumbnl + except Exception as e: + return None + + def create_thumbnail(self, dir, file): + full_path = f"{dir}/{file}" + try: + file_hash = hashlib.sha256(str.encode(full_path)).hexdigest() + hash_img_pth = f"{self.ABS_THUMBS_PTH}/{file_hash}.jpg" + if isfile(hash_img_pth) == False: + self.generate_video_thumbnail(full_path, hash_img_pth) + + thumbnl = self.create_scaled_image(hash_img_pth, self.VIDEO_ICON_WH) + if thumbnl == None: # If no icon whatsoever, return internal default + thumbnl = GdkPixbuf.Pixbuf.new_from_file(f"{self.DEFAULT_ICONS}/video.png") + + return thumbnl + except Exception as e: + print("Thumbnail generation issue:") + print( repr(e) ) + return GdkPixbuf.Pixbuf.new_from_file(f"{self.DEFAULT_ICONS}/video.png") + + + def create_scaled_image(self, path, wxh): + try: + if path.lower().endswith(".gif"): + return GdkPixbuf.PixbufAnimation.new_from_file(path) \ + .get_static_image() \ + .scale_simple(wxh[0], wxh[1], GdkPixbuf.InterpType.BILINEAR) + else: + return GdkPixbuf.Pixbuf.new_from_file_at_scale(path, wxh[0], wxh[1], True) + except Exception as e: + print("Image Scaling Issue:") + print( repr(e) ) + return None + + def create_from_file(self, path): + try: + return GdkPixbuf.Pixbuf.new_from_file(path) + except Exception as e: + print("Image from file Issue:") + print( repr(e) ) + return None + + def return_generic_icon(self): + return GdkPixbuf.Pixbuf.new_from_file(self.DEFAULT_ICON) diff --git a/src/controller/icons/mixins/__init__.py b/src/controller/icons/mixins/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/controller/icons/mixins/desktopiconmixin.py b/src/controller/icons/mixins/desktopiconmixin.py new file mode 100644 index 0000000..9f5ed2e --- /dev/null +++ b/src/controller/icons/mixins/desktopiconmixin.py @@ -0,0 +1,62 @@ +# Python Imports +import os, subprocess, hashlib +from os.path import isfile + +# Gtk imports + +# Application imports +from .xdg.DesktopEntry import DesktopEntry + + +class DesktopIconMixin: + def parse_desktop_files(self, full_path): + try: + xdgObj = DesktopEntry(full_path) + icon = xdgObj.getIcon() + alt_icon_path = "" + + if "steam" in icon: + name = xdgObj.getName() + file_hash = hashlib.sha256(str.encode(name)).hexdigest() + hash_img_pth = self.STEAM_ICONS_PTH + "/" + file_hash + ".jpg" + + if isfile(hash_img_pth) == True: + # Use video sizes since headers are bigger + return self.create_scaled_image(hash_img_pth, self.VIDEO_ICON_WH) + + exec_str = xdgObj.getExec() + parts = exec_str.split("steam://rungameid/") + id = parts[len(parts) - 1] + imageLink = self.STEAM_BASE_URL + id + "/header.jpg" + proc = subprocess.Popen(["wget", "-O", hash_img_pth, imageLink]) + proc.wait() + + # Use video thumbnail sizes since headers are bigger + return self.create_scaled_image(hash_img_pth, self.VIDEO_ICON_WH) + elif os.path.exists(icon): + return self.create_scaled_image(icon, self.SYS_ICON_WH) + else: + alt_icon_path = "" + + for dir in self.ICON_DIRS: + alt_icon_path = self.traverse_icons_folder(dir, icon) + if alt_icon_path != "": + break + + return self.create_scaled_image(alt_icon_path, self.SYS_ICON_WH) + except Exception as e: + print(".desktop icon generation issue:") + print( repr(e) ) + return None + + def traverse_icons_folder(self, path, icon): + alt_icon_path = "" + + for (dirpath, dirnames, filenames) in os.walk(path): + for file in filenames: + appNM = "application-x-" + icon + if icon in file or appNM in file: + alt_icon_path = dirpath + "/" + file + break + + return alt_icon_path diff --git a/src/controller/icons/mixins/videoiconmixin.py b/src/controller/icons/mixins/videoiconmixin.py new file mode 100644 index 0000000..fc35e9d --- /dev/null +++ b/src/controller/icons/mixins/videoiconmixin.py @@ -0,0 +1,53 @@ +# Python Imports +import subprocess + +# Gtk imports + +# Application imports + + +class VideoIconMixin: + def generate_video_thumbnail(self, full_path, hash_img_pth): + try: + proc = subprocess.Popen([self.FFMPG_THUMBNLR, "-t", "65%", "-s", "300", "-c", "jpg", "-i", full_path, "-o", hash_img_pth]) + proc.wait() + except Exception as e: + self.logger.debug(repr(e)) + self.ffprobe_generate_video_thumbnail(full_path, hash_img_pth) + + + def ffprobe_generate_video_thumbnail(self, full_path, hash_img_pth): + proc = None + try: + # Stream duration + command = ["ffprobe", "-v", "error", "-select_streams", "v:0", "-show_entries", "stream=duration", "-of", "default=noprint_wrappers=1:nokey=1", full_path] + data = subprocess.run(command, stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Format (container) duration + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", full_path] + data = subprocess.run(command , stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Stream duration type: image2 + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-select_streams", "v:0", "-f", "image2", "-show_entries", "stream=duration", "-of", "default=noprint_wrappers=1:nokey=1", full_path] + data = subprocess.run(command, stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Format (container) duration type: image2 + if "N/A" in duration: + command = ["ffprobe", "-v", "error", "-f", "image2", "-show_entries", "format=duration", "-of", "default=noprint_wrappers=1:nokey=1", full_path] + data = subprocess.run(command , stdout=subprocess.PIPE) + duration = data.stdout.decode('utf-8') + + # Get frame roughly 35% through video + grabTime = str( int( float( duration.split(".")[0] ) * 0.35) ) + command = ["ffmpeg", "-ss", grabTime, "-an", "-i", full_path, "-s", "320x180", "-vframes", "1", hash_img_pth] + proc = subprocess.Popen(command, stdout=subprocess.PIPE) + proc.wait() + except Exception as e: + print("Video thumbnail generation issue in thread:") + print( repr(e) ) + self.logger.debug(repr(e)) diff --git a/src/controller/icons/mixins/xdg/BaseDirectory.py b/src/controller/icons/mixins/xdg/BaseDirectory.py new file mode 100644 index 0000000..a7c31b1 --- /dev/null +++ b/src/controller/icons/mixins/xdg/BaseDirectory.py @@ -0,0 +1,160 @@ +""" +This module is based on a rox module (LGPL): + +http://cvs.sourceforge.net/viewcvs.py/rox/ROX-Lib2/python/rox/basedir.py?rev=1.9&view=log + +The freedesktop.org Base Directory specification provides a way for +applications to locate shared data and configuration: + + http://standards.freedesktop.org/basedir-spec/ + +(based on version 0.6) + +This module can be used to load and save from and to these directories. + +Typical usage: + + from rox import basedir + + for dir in basedir.load_config_paths('mydomain.org', 'MyProg', 'Options'): + print "Load settings from", dir + + dir = basedir.save_config_path('mydomain.org', 'MyProg') + print >>file(os.path.join(dir, 'Options'), 'w'), "foo=2" + +Note: see the rox.Options module for a higher-level API for managing options. +""" + +import os, stat + +_home = os.path.expanduser('~') +xdg_data_home = os.environ.get('XDG_DATA_HOME') or \ + os.path.join(_home, '.local', 'share') + +xdg_data_dirs = [xdg_data_home] + \ + (os.environ.get('XDG_DATA_DIRS') or '/usr/local/share:/usr/share').split(':') + +xdg_config_home = os.environ.get('XDG_CONFIG_HOME') or \ + os.path.join(_home, '.config') + +xdg_config_dirs = [xdg_config_home] + \ + (os.environ.get('XDG_CONFIG_DIRS') or '/etc/xdg').split(':') + +xdg_cache_home = os.environ.get('XDG_CACHE_HOME') or \ + os.path.join(_home, '.cache') + +xdg_data_dirs = [x for x in xdg_data_dirs if x] +xdg_config_dirs = [x for x in xdg_config_dirs if x] + +def save_config_path(*resource): + """Ensure ``$XDG_CONFIG_HOME//`` exists, and return its path. + 'resource' should normally be the name of your application. Use this + when saving configuration settings. + """ + resource = os.path.join(*resource) + assert not resource.startswith('/') + path = os.path.join(xdg_config_home, resource) + if not os.path.isdir(path): + os.makedirs(path, 0o700) + return path + +def save_data_path(*resource): + """Ensure ``$XDG_DATA_HOME//`` exists, and return its path. + 'resource' should normally be the name of your application or a shared + resource. Use this when saving or updating application data. + """ + resource = os.path.join(*resource) + assert not resource.startswith('/') + path = os.path.join(xdg_data_home, resource) + if not os.path.isdir(path): + os.makedirs(path) + return path + +def save_cache_path(*resource): + """Ensure ``$XDG_CACHE_HOME//`` exists, and return its path. + 'resource' should normally be the name of your application or a shared + resource.""" + resource = os.path.join(*resource) + assert not resource.startswith('/') + path = os.path.join(xdg_cache_home, resource) + if not os.path.isdir(path): + os.makedirs(path) + return path + +def load_config_paths(*resource): + """Returns an iterator which gives each directory named 'resource' in the + configuration search path. Information provided by earlier directories should + take precedence over later ones, and the user-specific config dir comes + first.""" + resource = os.path.join(*resource) + for config_dir in xdg_config_dirs: + path = os.path.join(config_dir, resource) + if os.path.exists(path): yield path + +def load_first_config(*resource): + """Returns the first result from load_config_paths, or None if there is nothing + to load.""" + for x in load_config_paths(*resource): + return x + return None + +def load_data_paths(*resource): + """Returns an iterator which gives each directory named 'resource' in the + application data search path. Information provided by earlier directories + should take precedence over later ones.""" + resource = os.path.join(*resource) + for data_dir in xdg_data_dirs: + path = os.path.join(data_dir, resource) + if os.path.exists(path): yield path + +def get_runtime_dir(strict=True): + """Returns the value of $XDG_RUNTIME_DIR, a directory path. + + This directory is intended for 'user-specific non-essential runtime files + and other file objects (such as sockets, named pipes, ...)', and + 'communication and synchronization purposes'. + + As of late 2012, only quite new systems set $XDG_RUNTIME_DIR. If it is not + set, with ``strict=True`` (the default), a KeyError is raised. With + ``strict=False``, PyXDG will create a fallback under /tmp for the current + user. This fallback does *not* provide the same guarantees as the + specification requires for the runtime directory. + + The strict default is deliberately conservative, so that application + developers can make a conscious decision to allow the fallback. + """ + try: + return os.environ['XDG_RUNTIME_DIR'] + except KeyError: + if strict: + raise + + import getpass + fallback = '/tmp/pyxdg-runtime-dir-fallback-' + getpass.getuser() + create = False + + try: + # This must be a real directory, not a symlink, so attackers can't + # point it elsewhere. So we use lstat to check it. + st = os.lstat(fallback) + except OSError as e: + import errno + if e.errno == errno.ENOENT: + create = True + else: + raise + else: + # The fallback must be a directory + if not stat.S_ISDIR(st.st_mode): + os.unlink(fallback) + create = True + # Must be owned by the user and not accessible by anyone else + elif (st.st_uid != os.getuid()) \ + or (st.st_mode & (stat.S_IRWXG | stat.S_IRWXO)): + os.rmdir(fallback) + create = True + + if create: + os.mkdir(fallback, 0o700) + + return fallback diff --git a/src/controller/icons/mixins/xdg/Config.py b/src/controller/icons/mixins/xdg/Config.py new file mode 100644 index 0000000..3f5d654 --- /dev/null +++ b/src/controller/icons/mixins/xdg/Config.py @@ -0,0 +1,39 @@ +""" +Functions to configure Basic Settings +""" + +language = "C" +windowmanager = None +icon_theme = "hicolor" +icon_size = 48 +cache_time = 5 +root_mode = False + +def setWindowManager(wm): + global windowmanager + windowmanager = wm + +def setIconTheme(theme): + global icon_theme + icon_theme = theme + import xdg.IconTheme + xdg.IconTheme.themes = [] + +def setIconSize(size): + global icon_size + icon_size = size + +def setCacheTime(time): + global cache_time + cache_time = time + +def setLocale(lang): + import locale + lang = locale.normalize(lang) + locale.setlocale(locale.LC_ALL, lang) + import xdg.Locale + xdg.Locale.update(lang) + +def setRootMode(boolean): + global root_mode + root_mode = boolean diff --git a/src/controller/icons/mixins/xdg/DesktopEntry.py b/src/controller/icons/mixins/xdg/DesktopEntry.py new file mode 100644 index 0000000..803993e --- /dev/null +++ b/src/controller/icons/mixins/xdg/DesktopEntry.py @@ -0,0 +1,435 @@ +""" +Complete implementation of the XDG Desktop Entry Specification +http://standards.freedesktop.org/desktop-entry-spec/ + +Not supported: +- Encoding: Legacy Mixed +- Does not check exec parameters +- Does not check URL's +- Does not completly validate deprecated/kde items +- Does not completly check categories +""" + +from .IniFile import IniFile +from . import Locale + +from .IniFile import is_ascii + +from .Exceptions import ParsingError +from .util import which +import os.path +import re +import warnings + +class DesktopEntry(IniFile): + "Class to parse and validate Desktop Entries" + + defaultGroup = 'Desktop Entry' + + def __init__(self, filename=None): + """Create a new DesktopEntry. + + If filename exists, it will be parsed as a desktop entry file. If not, + or if filename is None, a blank DesktopEntry is created. + """ + self.content = dict() + if filename and os.path.exists(filename): + self.parse(filename) + elif filename: + self.new(filename) + + def __str__(self): + return self.getName() + + def parse(self, file): + """Parse a desktop entry file. + + This can raise :class:`~xdg.Exceptions.ParsingError`, + :class:`~xdg.Exceptions.DuplicateGroupError` or + :class:`~xdg.Exceptions.DuplicateKeyError`. + """ + IniFile.parse(self, file, ["Desktop Entry", "KDE Desktop Entry"]) + + def findTryExec(self): + """Looks in the PATH for the executable given in the TryExec field. + + Returns the full path to the executable if it is found, None if not. + Raises :class:`~xdg.Exceptions.NoKeyError` if TryExec is not present. + """ + tryexec = self.get('TryExec', strict=True) + return which(tryexec) + + # start standard keys + def getType(self): + return self.get('Type') + def getVersion(self): + """deprecated, use getVersionString instead """ + return self.get('Version', type="numeric") + def getVersionString(self): + return self.get('Version') + def getName(self): + return self.get('Name', locale=True) + def getGenericName(self): + return self.get('GenericName', locale=True) + def getNoDisplay(self): + return self.get('NoDisplay', type="boolean") + def getComment(self): + return self.get('Comment', locale=True) + def getIcon(self): + return self.get('Icon', locale=True) + def getHidden(self): + return self.get('Hidden', type="boolean") + def getOnlyShowIn(self): + return self.get('OnlyShowIn', list=True) + def getNotShowIn(self): + return self.get('NotShowIn', list=True) + def getTryExec(self): + return self.get('TryExec') + def getExec(self): + return self.get('Exec') + def getPath(self): + return self.get('Path') + def getTerminal(self): + return self.get('Terminal', type="boolean") + def getMimeType(self): + """deprecated, use getMimeTypes instead """ + return self.get('MimeType', list=True, type="regex") + def getMimeTypes(self): + return self.get('MimeType', list=True) + def getCategories(self): + return self.get('Categories', list=True) + def getStartupNotify(self): + return self.get('StartupNotify', type="boolean") + def getStartupWMClass(self): + return self.get('StartupWMClass') + def getURL(self): + return self.get('URL') + # end standard keys + + # start kde keys + def getServiceTypes(self): + return self.get('ServiceTypes', list=True) + def getDocPath(self): + return self.get('DocPath') + def getKeywords(self): + return self.get('Keywords', list=True, locale=True) + def getInitialPreference(self): + return self.get('InitialPreference') + def getDev(self): + return self.get('Dev') + def getFSType(self): + return self.get('FSType') + def getMountPoint(self): + return self.get('MountPoint') + def getReadonly(self): + return self.get('ReadOnly', type="boolean") + def getUnmountIcon(self): + return self.get('UnmountIcon', locale=True) + # end kde keys + + # start deprecated keys + def getMiniIcon(self): + return self.get('MiniIcon', locale=True) + def getTerminalOptions(self): + return self.get('TerminalOptions') + def getDefaultApp(self): + return self.get('DefaultApp') + def getProtocols(self): + return self.get('Protocols', list=True) + def getExtensions(self): + return self.get('Extensions', list=True) + def getBinaryPattern(self): + return self.get('BinaryPattern') + def getMapNotify(self): + return self.get('MapNotify') + def getEncoding(self): + return self.get('Encoding') + def getSwallowTitle(self): + return self.get('SwallowTitle', locale=True) + def getSwallowExec(self): + return self.get('SwallowExec') + def getSortOrder(self): + return self.get('SortOrder', list=True) + def getFilePattern(self): + return self.get('FilePattern', type="regex") + def getActions(self): + return self.get('Actions', list=True) + # end deprecated keys + + # desktop entry edit stuff + def new(self, filename): + """Make this instance into a new, blank desktop entry. + + If filename has a .desktop extension, Type is set to Application. If it + has a .directory extension, Type is Directory. Other extensions will + cause :class:`~xdg.Exceptions.ParsingError` to be raised. + """ + if os.path.splitext(filename)[1] == ".desktop": + type = "Application" + elif os.path.splitext(filename)[1] == ".directory": + type = "Directory" + else: + raise ParsingError("Unknown extension", filename) + + self.content = dict() + self.addGroup(self.defaultGroup) + self.set("Type", type) + self.filename = filename + # end desktop entry edit stuff + + # validation stuff + def checkExtras(self): + # header + if self.defaultGroup == "KDE Desktop Entry": + self.warnings.append('[KDE Desktop Entry]-Header is deprecated') + + # file extension + if self.fileExtension == ".kdelnk": + self.warnings.append("File extension .kdelnk is deprecated") + elif self.fileExtension != ".desktop" and self.fileExtension != ".directory": + self.warnings.append('Unknown File extension') + + # Type + try: + self.type = self.content[self.defaultGroup]["Type"] + except KeyError: + self.errors.append("Key 'Type' is missing") + + # Name + try: + self.name = self.content[self.defaultGroup]["Name"] + except KeyError: + self.errors.append("Key 'Name' is missing") + + def checkGroup(self, group): + # check if group header is valid + if not (group == self.defaultGroup \ + or re.match("^Desktop Action [a-zA-Z0-9-]+$", group) \ + or (re.match("^X-", group) and is_ascii(group))): + self.errors.append("Invalid Group name: %s" % group) + else: + #OnlyShowIn and NotShowIn + if ("OnlyShowIn" in self.content[group]) and ("NotShowIn" in self.content[group]): + self.errors.append("Group may either have OnlyShowIn or NotShowIn, but not both") + + def checkKey(self, key, value, group): + # standard keys + if key == "Type": + if value == "ServiceType" or value == "Service" or value == "FSDevice": + self.warnings.append("Type=%s is a KDE extension" % key) + elif value == "MimeType": + self.warnings.append("Type=MimeType is deprecated") + elif not (value == "Application" or value == "Link" or value == "Directory"): + self.errors.append("Value of key 'Type' must be Application, Link or Directory, but is '%s'" % value) + + if self.fileExtension == ".directory" and not value == "Directory": + self.warnings.append("File extension is .directory, but Type is '%s'" % value) + elif self.fileExtension == ".desktop" and value == "Directory": + self.warnings.append("Files with Type=Directory should have the extension .directory") + + if value == "Application": + if "Exec" not in self.content[group]: + self.warnings.append("Type=Application needs 'Exec' key") + if value == "Link": + if "URL" not in self.content[group]: + self.warnings.append("Type=Link needs 'URL' key") + + elif key == "Version": + self.checkValue(key, value) + + elif re.match("^Name"+xdg.Locale.regex+"$", key): + pass # locale string + + elif re.match("^GenericName"+xdg.Locale.regex+"$", key): + pass # locale string + + elif key == "NoDisplay": + self.checkValue(key, value, type="boolean") + + elif re.match("^Comment"+xdg.Locale.regex+"$", key): + pass # locale string + + elif re.match("^Icon"+xdg.Locale.regex+"$", key): + self.checkValue(key, value) + + elif key == "Hidden": + self.checkValue(key, value, type="boolean") + + elif key == "OnlyShowIn": + self.checkValue(key, value, list=True) + self.checkOnlyShowIn(value) + + elif key == "NotShowIn": + self.checkValue(key, value, list=True) + self.checkOnlyShowIn(value) + + elif key == "TryExec": + self.checkValue(key, value) + self.checkType(key, "Application") + + elif key == "Exec": + self.checkValue(key, value) + self.checkType(key, "Application") + + elif key == "Path": + self.checkValue(key, value) + self.checkType(key, "Application") + + elif key == "Terminal": + self.checkValue(key, value, type="boolean") + self.checkType(key, "Application") + + elif key == "Actions": + self.checkValue(key, value, list=True) + self.checkType(key, "Application") + + elif key == "MimeType": + self.checkValue(key, value, list=True) + self.checkType(key, "Application") + + elif key == "Categories": + self.checkValue(key, value) + self.checkType(key, "Application") + self.checkCategories(value) + + elif re.match("^Keywords"+xdg.Locale.regex+"$", key): + self.checkValue(key, value, type="localestring", list=True) + self.checkType(key, "Application") + + elif key == "StartupNotify": + self.checkValue(key, value, type="boolean") + self.checkType(key, "Application") + + elif key == "StartupWMClass": + self.checkType(key, "Application") + + elif key == "URL": + self.checkValue(key, value) + self.checkType(key, "URL") + + # kde extensions + elif key == "ServiceTypes": + self.checkValue(key, value, list=True) + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "DocPath": + self.checkValue(key, value) + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "InitialPreference": + self.checkValue(key, value, type="numeric") + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "Dev": + self.checkValue(key, value) + self.checkType(key, "FSDevice") + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "FSType": + self.checkValue(key, value) + self.checkType(key, "FSDevice") + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "MountPoint": + self.checkValue(key, value) + self.checkType(key, "FSDevice") + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif key == "ReadOnly": + self.checkValue(key, value, type="boolean") + self.checkType(key, "FSDevice") + self.warnings.append("Key '%s' is a KDE extension" % key) + + elif re.match("^UnmountIcon"+xdg.Locale.regex+"$", key): + self.checkValue(key, value) + self.checkType(key, "FSDevice") + self.warnings.append("Key '%s' is a KDE extension" % key) + + # deprecated keys + elif key == "Encoding": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif re.match("^MiniIcon"+xdg.Locale.regex+"$", key): + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "TerminalOptions": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "DefaultApp": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "Protocols": + self.checkValue(key, value, list=True) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "Extensions": + self.checkValue(key, value, list=True) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "BinaryPattern": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "MapNotify": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif re.match("^SwallowTitle"+xdg.Locale.regex+"$", key): + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "SwallowExec": + self.checkValue(key, value) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "FilePattern": + self.checkValue(key, value, type="regex", list=True) + self.warnings.append("Key '%s' is deprecated" % key) + + elif key == "SortOrder": + self.checkValue(key, value, list=True) + self.warnings.append("Key '%s' is deprecated" % key) + + # "X-" extensions + elif re.match("^X-[a-zA-Z0-9-]+", key): + pass + + else: + self.errors.append("Invalid key: %s" % key) + + def checkType(self, key, type): + if not self.getType() == type: + self.errors.append("Key '%s' only allowed in Type=%s" % (key, type)) + + def checkOnlyShowIn(self, value): + values = self.getList(value) + valid = ["GNOME", "KDE", "LXDE", "MATE", "Razor", "ROX", "TDE", "Unity", + "XFCE", "Old"] + for item in values: + if item not in valid and item[0:2] != "X-": + self.errors.append("'%s' is not a registered OnlyShowIn value" % item); + + def checkCategories(self, value): + values = self.getList(value) + + main = ["AudioVideo", "Audio", "Video", "Development", "Education", "Game", "Graphics", "Network", "Office", "Science", "Settings", "System", "Utility"] + if not any(item in main for item in values): + self.errors.append("Missing main category") + + additional = ['Building', 'Debugger', 'IDE', 'GUIDesigner', 'Profiling', 'RevisionControl', 'Translation', 'Calendar', 'ContactManagement', 'Database', 'Dictionary', 'Chart', 'Email', 'Finance', 'FlowChart', 'PDA', 'ProjectManagement', 'Presentation', 'Spreadsheet', 'WordProcessor', '2DGraphics', 'VectorGraphics', 'RasterGraphics', '3DGraphics', 'Scanning', 'OCR', 'Photography', 'Publishing', 'Viewer', 'TextTools', 'DesktopSettings', 'HardwareSettings', 'Printing', 'PackageManager', 'Dialup', 'InstantMessaging', 'Chat', 'IRCClient', 'Feed', 'FileTransfer', 'HamRadio', 'News', 'P2P', 'RemoteAccess', 'Telephony', 'TelephonyTools', 'VideoConference', 'WebBrowser', 'WebDevelopment', 'Midi', 'Mixer', 'Sequencer', 'Tuner', 'TV', 'AudioVideoEditing', 'Player', 'Recorder', 'DiscBurning', 'ActionGame', 'AdventureGame', 'ArcadeGame', 'BoardGame', 'BlocksGame', 'CardGame', 'KidsGame', 'LogicGame', 'RolePlaying', 'Shooter', 'Simulation', 'SportsGame', 'StrategyGame', 'Art', 'Construction', 'Music', 'Languages', 'ArtificialIntelligence', 'Astronomy', 'Biology', 'Chemistry', 'ComputerScience', 'DataVisualization', 'Economy', 'Electricity', 'Geography', 'Geology', 'Geoscience', 'History', 'Humanities', 'ImageProcessing', 'Literature', 'Maps', 'Math', 'NumericalAnalysis', 'MedicalSoftware', 'Physics', 'Robotics', 'Spirituality', 'Sports', 'ParallelComputing', 'Amusement', 'Archiving', 'Compression', 'Electronics', 'Emulator', 'Engineering', 'FileTools', 'FileManager', 'TerminalEmulator', 'Filesystem', 'Monitor', 'Security', 'Accessibility', 'Calculator', 'Clock', 'TextEditor', 'Documentation', 'Adult', 'Core', 'KDE', 'GNOME', 'XFCE', 'GTK', 'Qt', 'Motif', 'Java', 'ConsoleOnly'] + allcategories = additional + main + + for item in values: + if item not in allcategories and not item.startswith("X-"): + self.errors.append("'%s' is not a registered Category" % item); + + def checkCategorie(self, value): + """Deprecated alias for checkCategories - only exists for backwards + compatibility. + """ + warnings.warn("checkCategorie is deprecated, use checkCategories", + DeprecationWarning) + return self.checkCategories(value) diff --git a/src/controller/icons/mixins/xdg/Exceptions.py b/src/controller/icons/mixins/xdg/Exceptions.py new file mode 100644 index 0000000..7096b61 --- /dev/null +++ b/src/controller/icons/mixins/xdg/Exceptions.py @@ -0,0 +1,84 @@ +""" +Exception Classes for the xdg package +""" + +debug = False + +class Error(Exception): + """Base class for exceptions defined here.""" + def __init__(self, msg): + self.msg = msg + Exception.__init__(self, msg) + def __str__(self): + return self.msg + +class ValidationError(Error): + """Raised when a file fails to validate. + + The filename is the .file attribute. + """ + def __init__(self, msg, file): + self.msg = msg + self.file = file + Error.__init__(self, "ValidationError in file '%s': %s " % (file, msg)) + +class ParsingError(Error): + """Raised when a file cannot be parsed. + + The filename is the .file attribute. + """ + def __init__(self, msg, file): + self.msg = msg + self.file = file + Error.__init__(self, "ParsingError in file '%s', %s" % (file, msg)) + +class NoKeyError(Error): + """Raised when trying to access a nonexistant key in an INI-style file. + + Attributes are .key, .group and .file. + """ + def __init__(self, key, group, file): + Error.__init__(self, "No key '%s' in group %s of file %s" % (key, group, file)) + self.key = key + self.group = group + self.file = file + +class DuplicateKeyError(Error): + """Raised when the same key occurs twice in an INI-style file. + + Attributes are .key, .group and .file. + """ + def __init__(self, key, group, file): + Error.__init__(self, "Duplicate key '%s' in group %s of file %s" % (key, group, file)) + self.key = key + self.group = group + self.file = file + +class NoGroupError(Error): + """Raised when trying to access a nonexistant group in an INI-style file. + + Attributes are .group and .file. + """ + def __init__(self, group, file): + Error.__init__(self, "No group: %s in file %s" % (group, file)) + self.group = group + self.file = file + +class DuplicateGroupError(Error): + """Raised when the same key occurs twice in an INI-style file. + + Attributes are .group and .file. + """ + def __init__(self, group, file): + Error.__init__(self, "Duplicate group: %s in file %s" % (group, file)) + self.group = group + self.file = file + +class NoThemeError(Error): + """Raised when trying to access a nonexistant icon theme. + + The name of the theme is the .theme attribute. + """ + def __init__(self, theme): + Error.__init__(self, "No such icon-theme: %s" % theme) + self.theme = theme diff --git a/src/controller/icons/mixins/xdg/IconTheme.py b/src/controller/icons/mixins/xdg/IconTheme.py new file mode 100644 index 0000000..2ff3c05 --- /dev/null +++ b/src/controller/icons/mixins/xdg/IconTheme.py @@ -0,0 +1,445 @@ +""" +Complete implementation of the XDG Icon Spec +http://standards.freedesktop.org/icon-theme-spec/ +""" + +import os, time +import re + +from . import IniFile, Config +from .IniFile import is_ascii +from .BaseDirectory import xdg_data_dirs +from .Exceptions import NoThemeError, debug + + +class IconTheme(IniFile): + "Class to parse and validate IconThemes" + def __init__(self): + IniFile.__init__(self) + + def __repr__(self): + return self.name + + def parse(self, file): + IniFile.parse(self, file, ["Icon Theme", "KDE Icon Theme"]) + self.dir = os.path.dirname(file) + (nil, self.name) = os.path.split(self.dir) + + def getDir(self): + return self.dir + + # Standard Keys + def getName(self): + return self.get('Name', locale=True) + def getComment(self): + return self.get('Comment', locale=True) + def getInherits(self): + return self.get('Inherits', list=True) + def getDirectories(self): + return self.get('Directories', list=True) + def getScaledDirectories(self): + return self.get('ScaledDirectories', list=True) + def getHidden(self): + return self.get('Hidden', type="boolean") + def getExample(self): + return self.get('Example') + + # Per Directory Keys + def getSize(self, directory): + return self.get('Size', type="integer", group=directory) + def getContext(self, directory): + return self.get('Context', group=directory) + def getType(self, directory): + value = self.get('Type', group=directory) + if value: + return value + else: + return "Threshold" + def getMaxSize(self, directory): + value = self.get('MaxSize', type="integer", group=directory) + if value or value == 0: + return value + else: + return self.getSize(directory) + def getMinSize(self, directory): + value = self.get('MinSize', type="integer", group=directory) + if value or value == 0: + return value + else: + return self.getSize(directory) + def getThreshold(self, directory): + value = self.get('Threshold', type="integer", group=directory) + if value or value == 0: + return value + else: + return 2 + + def getScale(self, directory): + value = self.get('Scale', type="integer", group=directory) + return value or 1 + + # validation stuff + def checkExtras(self): + # header + if self.defaultGroup == "KDE Icon Theme": + self.warnings.append('[KDE Icon Theme]-Header is deprecated') + + # file extension + if self.fileExtension == ".theme": + pass + elif self.fileExtension == ".desktop": + self.warnings.append('.desktop fileExtension is deprecated') + else: + self.warnings.append('Unknown File extension') + + # Check required keys + # Name + try: + self.name = self.content[self.defaultGroup]["Name"] + except KeyError: + self.errors.append("Key 'Name' is missing") + + # Comment + try: + self.comment = self.content[self.defaultGroup]["Comment"] + except KeyError: + self.errors.append("Key 'Comment' is missing") + + # Directories + try: + self.directories = self.content[self.defaultGroup]["Directories"] + except KeyError: + self.errors.append("Key 'Directories' is missing") + + def checkGroup(self, group): + # check if group header is valid + if group == self.defaultGroup: + try: + self.name = self.content[group]["Name"] + except KeyError: + self.errors.append("Key 'Name' in Group '%s' is missing" % group) + try: + self.name = self.content[group]["Comment"] + except KeyError: + self.errors.append("Key 'Comment' in Group '%s' is missing" % group) + elif group in self.getDirectories(): + try: + self.type = self.content[group]["Type"] + except KeyError: + self.type = "Threshold" + try: + self.name = self.content[group]["Size"] + except KeyError: + self.errors.append("Key 'Size' in Group '%s' is missing" % group) + elif not (re.match(r"^\[X-", group) and is_ascii(group)): + self.errors.append("Invalid Group name: %s" % group) + + def checkKey(self, key, value, group): + # standard keys + if group == self.defaultGroup: + if re.match("^Name"+xdg.Locale.regex+"$", key): + pass + elif re.match("^Comment"+xdg.Locale.regex+"$", key): + pass + elif key == "Inherits": + self.checkValue(key, value, list=True) + elif key == "Directories": + self.checkValue(key, value, list=True) + elif key == "ScaledDirectories": + self.checkValue(key, value, list=True) + elif key == "Hidden": + self.checkValue(key, value, type="boolean") + elif key == "Example": + self.checkValue(key, value) + elif re.match("^X-[a-zA-Z0-9-]+", key): + pass + else: + self.errors.append("Invalid key: %s" % key) + elif group in self.getDirectories(): + if key == "Size": + self.checkValue(key, value, type="integer") + elif key == "Context": + self.checkValue(key, value) + elif key == "Type": + self.checkValue(key, value) + if value not in ["Fixed", "Scalable", "Threshold"]: + self.errors.append("Key 'Type' must be one out of 'Fixed','Scalable','Threshold', but is %s" % value) + elif key == "MaxSize": + self.checkValue(key, value, type="integer") + if self.type != "Scalable": + self.errors.append("Key 'MaxSize' give, but Type is %s" % self.type) + elif key == "MinSize": + self.checkValue(key, value, type="integer") + if self.type != "Scalable": + self.errors.append("Key 'MinSize' give, but Type is %s" % self.type) + elif key == "Threshold": + self.checkValue(key, value, type="integer") + if self.type != "Threshold": + self.errors.append("Key 'Threshold' give, but Type is %s" % self.type) + elif key == "Scale": + self.checkValue(key, value, type="integer") + elif re.match("^X-[a-zA-Z0-9-]+", key): + pass + else: + self.errors.append("Invalid key: %s" % key) + + +class IconData(IniFile): + "Class to parse and validate IconData Files" + def __init__(self): + IniFile.__init__(self) + + def __repr__(self): + displayname = self.getDisplayName() + if displayname: + return "" % displayname + else: + return "" + + def parse(self, file): + IniFile.parse(self, file, ["Icon Data"]) + + # Standard Keys + def getDisplayName(self): + """Retrieve the display name from the icon data, if one is specified.""" + return self.get('DisplayName', locale=True) + def getEmbeddedTextRectangle(self): + """Retrieve the embedded text rectangle from the icon data as a list of + numbers (x0, y0, x1, y1), if it is specified.""" + return self.get('EmbeddedTextRectangle', type="integer", list=True) + def getAttachPoints(self): + """Retrieve the anchor points for overlays & emblems from the icon data, + as a list of co-ordinate pairs, if they are specified.""" + return self.get('AttachPoints', type="point", list=True) + + # validation stuff + def checkExtras(self): + # file extension + if self.fileExtension != ".icon": + self.warnings.append('Unknown File extension') + + def checkGroup(self, group): + # check if group header is valid + if not (group == self.defaultGroup \ + or (re.match(r"^\[X-", group) and is_ascii(group))): + self.errors.append("Invalid Group name: %s" % group.encode("ascii", "replace")) + + def checkKey(self, key, value, group): + # standard keys + if re.match("^DisplayName"+xdg.Locale.regex+"$", key): + pass + elif key == "EmbeddedTextRectangle": + self.checkValue(key, value, type="integer", list=True) + elif key == "AttachPoints": + self.checkValue(key, value, type="point", list=True) + elif re.match("^X-[a-zA-Z0-9-]+", key): + pass + else: + self.errors.append("Invalid key: %s" % key) + + + +icondirs = [] +for basedir in xdg_data_dirs: + icondirs.append(os.path.join(basedir, "icons")) + icondirs.append(os.path.join(basedir, "pixmaps")) +icondirs.append(os.path.expanduser("~/.icons")) + +# just cache variables, they give a 10x speed improvement +themes = [] +theme_cache = {} +dir_cache = {} +icon_cache = {} + +def getIconPath(iconname, size = None, theme = None, extensions = ["png", "svg", "xpm"]): + """Get the path to a specified icon. + + size : + Icon size in pixels. Defaults to ``xdg.Config.icon_size``. + theme : + Icon theme name. Defaults to ``xdg.Config.icon_theme``. If the icon isn't + found in the specified theme, it will be looked up in the basic 'hicolor' + theme. + extensions : + List of preferred file extensions. + + Example:: + + >>> getIconPath("inkscape", 32) + '/usr/share/icons/hicolor/32x32/apps/inkscape.png' + """ + + global themes + + if size == None: + size = xdg.Config.icon_size + if theme == None: + theme = xdg.Config.icon_theme + + # if we have an absolute path, just return it + if os.path.isabs(iconname): + return iconname + + # check if it has an extension and strip it + if os.path.splitext(iconname)[1][1:] in extensions: + iconname = os.path.splitext(iconname)[0] + + # parse theme files + if (themes == []) or (themes[0].name != theme): + themes = list(__get_themes(theme)) + + # more caching (icon looked up in the last 5 seconds?) + tmp = (iconname, size, theme, tuple(extensions)) + try: + timestamp, icon = icon_cache[tmp] + except KeyError: + pass + else: + if (time.time() - timestamp) >= xdg.Config.cache_time: + del icon_cache[tmp] + else: + return icon + + for thme in themes: + icon = LookupIcon(iconname, size, thme, extensions) + if icon: + icon_cache[tmp] = (time.time(), icon) + return icon + + # cache stuff again (directories looked up in the last 5 seconds?) + for directory in icondirs: + if (directory not in dir_cache \ + or (int(time.time() - dir_cache[directory][1]) >= xdg.Config.cache_time \ + and dir_cache[directory][2] < os.path.getmtime(directory))) \ + and os.path.isdir(directory): + dir_cache[directory] = (os.listdir(directory), time.time(), os.path.getmtime(directory)) + + for dir, values in dir_cache.items(): + for extension in extensions: + try: + if iconname + "." + extension in values[0]: + icon = os.path.join(dir, iconname + "." + extension) + icon_cache[tmp] = [time.time(), icon] + return icon + except UnicodeDecodeError as e: + if debug: + raise e + else: + pass + + # we haven't found anything? "hicolor" is our fallback + if theme != "hicolor": + icon = getIconPath(iconname, size, "hicolor") + icon_cache[tmp] = [time.time(), icon] + return icon + +def getIconData(path): + """Retrieve the data from the .icon file corresponding to the given file. If + there is no .icon file, it returns None. + + Example:: + + getIconData("/usr/share/icons/Tango/scalable/places/folder.svg") + """ + if os.path.isfile(path): + icon_file = os.path.splitext(path)[0] + ".icon" + if os.path.isfile(icon_file): + data = IconData() + data.parse(icon_file) + return data + +def __get_themes(themename): + """Generator yielding IconTheme objects for a specified theme and any themes + from which it inherits. + """ + for dir in icondirs: + theme_file = os.path.join(dir, themename, "index.theme") + if os.path.isfile(theme_file): + break + theme_file = os.path.join(dir, themename, "index.desktop") + if os.path.isfile(theme_file): + break + else: + if debug: + raise NoThemeError(themename) + return + + theme = IconTheme() + theme.parse(theme_file) + yield theme + for subtheme in theme.getInherits(): + for t in __get_themes(subtheme): + yield t + +def LookupIcon(iconname, size, theme, extensions): + # look for the cache + if theme.name not in theme_cache: + theme_cache[theme.name] = [] + theme_cache[theme.name].append(time.time() - (xdg.Config.cache_time + 1)) # [0] last time of lookup + theme_cache[theme.name].append(0) # [1] mtime + theme_cache[theme.name].append(dict()) # [2] dir: [subdir, [items]] + + # cache stuff (directory lookuped up the in the last 5 seconds?) + if int(time.time() - theme_cache[theme.name][0]) >= xdg.Config.cache_time: + theme_cache[theme.name][0] = time.time() + for subdir in theme.getDirectories(): + for directory in icondirs: + dir = os.path.join(directory,theme.name,subdir) + if (dir not in theme_cache[theme.name][2] \ + or theme_cache[theme.name][1] < os.path.getmtime(os.path.join(directory,theme.name))) \ + and subdir != "" \ + and os.path.isdir(dir): + theme_cache[theme.name][2][dir] = [subdir, os.listdir(dir)] + theme_cache[theme.name][1] = os.path.getmtime(os.path.join(directory,theme.name)) + + for dir, values in theme_cache[theme.name][2].items(): + if DirectoryMatchesSize(values[0], size, theme): + for extension in extensions: + if iconname + "." + extension in values[1]: + return os.path.join(dir, iconname + "." + extension) + + minimal_size = 2**31 + closest_filename = "" + for dir, values in theme_cache[theme.name][2].items(): + distance = DirectorySizeDistance(values[0], size, theme) + if distance < minimal_size: + for extension in extensions: + if iconname + "." + extension in values[1]: + closest_filename = os.path.join(dir, iconname + "." + extension) + minimal_size = distance + + return closest_filename + +def DirectoryMatchesSize(subdir, iconsize, theme): + Type = theme.getType(subdir) + Size = theme.getSize(subdir) + Threshold = theme.getThreshold(subdir) + MinSize = theme.getMinSize(subdir) + MaxSize = theme.getMaxSize(subdir) + if Type == "Fixed": + return Size == iconsize + elif Type == "Scaleable": + return MinSize <= iconsize <= MaxSize + elif Type == "Threshold": + return Size - Threshold <= iconsize <= Size + Threshold + +def DirectorySizeDistance(subdir, iconsize, theme): + Type = theme.getType(subdir) + Size = theme.getSize(subdir) + Threshold = theme.getThreshold(subdir) + MinSize = theme.getMinSize(subdir) + MaxSize = theme.getMaxSize(subdir) + if Type == "Fixed": + return abs(Size - iconsize) + elif Type == "Scalable": + if iconsize < MinSize: + return MinSize - iconsize + elif iconsize > MaxSize: + return MaxSize - iconsize + return 0 + elif Type == "Threshold": + if iconsize < Size - Threshold: + return MinSize - iconsize + elif iconsize > Size + Threshold: + return iconsize - MaxSize + return 0 diff --git a/src/controller/icons/mixins/xdg/IniFile.py b/src/controller/icons/mixins/xdg/IniFile.py new file mode 100644 index 0000000..74ab858 --- /dev/null +++ b/src/controller/icons/mixins/xdg/IniFile.py @@ -0,0 +1,419 @@ +""" +Base Class for DesktopEntry, IconTheme and IconData +""" + +import re, os, stat, io +from .Exceptions import (ParsingError, DuplicateGroupError, NoGroupError, + NoKeyError, DuplicateKeyError, ValidationError, + debug) +# import xdg.Locale +from . import Locale +from .util import u + +def is_ascii(s): + """Return True if a string consists entirely of ASCII characters.""" + try: + s.encode('ascii', 'strict') + return True + except UnicodeError: + return False + +class IniFile: + defaultGroup = '' + fileExtension = '' + + filename = '' + + tainted = False + + def __init__(self, filename=None): + self.content = dict() + if filename: + self.parse(filename) + + def __cmp__(self, other): + return cmp(self.content, other.content) + + def parse(self, filename, headers=None): + '''Parse an INI file. + + headers -- list of headers the parser will try to select as a default header + ''' + # for performance reasons + content = self.content + + if not os.path.isfile(filename): + raise ParsingError("File not found", filename) + + try: + # The content should be UTF-8, but legacy files can have other + # encodings, including mixed encodings in one file. We don't attempt + # to decode them, but we silence the errors. + fd = io.open(filename, 'r', encoding='utf-8', errors='replace') + except IOError as e: + if debug: + raise e + else: + return + + # parse file + for line in fd: + line = line.strip() + # empty line + if not line: + continue + # comment + elif line[0] == '#': + continue + # new group + elif line[0] == '[': + currentGroup = line.lstrip("[").rstrip("]") + if debug and self.hasGroup(currentGroup): + raise DuplicateGroupError(currentGroup, filename) + else: + content[currentGroup] = {} + # key + else: + try: + key, value = line.split("=", 1) + except ValueError: + raise ParsingError("Invalid line: " + line, filename) + + key = key.strip() # Spaces before/after '=' should be ignored + try: + if debug and self.hasKey(key, currentGroup): + raise DuplicateKeyError(key, currentGroup, filename) + else: + content[currentGroup][key] = value.strip() + except (IndexError, UnboundLocalError): + raise ParsingError("Parsing error on key, group missing", filename) + + fd.close() + + self.filename = filename + self.tainted = False + + # check header + if headers: + for header in headers: + if header in content: + self.defaultGroup = header + break + else: + raise ParsingError("[%s]-Header missing" % headers[0], filename) + + # start stuff to access the keys + def get(self, key, group=None, locale=False, type="string", list=False, strict=False): + # set default group + if not group: + group = self.defaultGroup + + # return key (with locale) + if (group in self.content) and (key in self.content[group]): + if locale: + value = self.content[group][self.__addLocale(key, group)] + else: + value = self.content[group][key] + else: + if strict or debug: + if group not in self.content: + raise NoGroupError(group, self.filename) + elif key not in self.content[group]: + raise NoKeyError(key, group, self.filename) + else: + value = "" + + if list == True: + values = self.getList(value) + result = [] + else: + values = [value] + + for value in values: + if type == "boolean": + value = self.__getBoolean(value) + elif type == "integer": + try: + value = int(value) + except ValueError: + value = 0 + elif type == "numeric": + try: + value = float(value) + except ValueError: + value = 0.0 + elif type == "regex": + value = re.compile(value) + elif type == "point": + x, y = value.split(",") + value = int(x), int(y) + + if list == True: + result.append(value) + else: + result = value + + return result + # end stuff to access the keys + + # start subget + def getList(self, string): + if re.search(r"(? 0: + key = key + "[" + xdg.Locale.langs[0] + "]" + + try: + self.content[group][key] = value + except KeyError: + raise NoGroupError(group, self.filename) + + self.tainted = (value == self.get(key, group)) + + def addGroup(self, group): + if self.hasGroup(group): + if debug: + raise DuplicateGroupError(group, self.filename) + else: + self.content[group] = {} + self.tainted = True + + def removeGroup(self, group): + existed = group in self.content + if existed: + del self.content[group] + self.tainted = True + else: + if debug: + raise NoGroupError(group, self.filename) + return existed + + def removeKey(self, key, group=None, locales=True): + # set default group + if not group: + group = self.defaultGroup + + try: + if locales: + for name in list(self.content[group]): + if re.match("^" + key + xdg.Locale.regex + "$", name) and name != key: + del self.content[group][name] + value = self.content[group].pop(key) + self.tainted = True + return value + except KeyError as e: + if debug: + if e == group: + raise NoGroupError(group, self.filename) + else: + raise NoKeyError(key, group, self.filename) + else: + return "" + + # misc + def groups(self): + return self.content.keys() + + def hasGroup(self, group): + return group in self.content + + def hasKey(self, key, group=None): + # set default group + if not group: + group = self.defaultGroup + + return key in self.content[group] + + def getFileName(self): + return self.filename diff --git a/src/controller/icons/mixins/xdg/Locale.py b/src/controller/icons/mixins/xdg/Locale.py new file mode 100644 index 0000000..d0a70d2 --- /dev/null +++ b/src/controller/icons/mixins/xdg/Locale.py @@ -0,0 +1,79 @@ +""" +Helper Module for Locale settings + +This module is based on a ROX module (LGPL): + +http://cvs.sourceforge.net/viewcvs.py/rox/ROX-Lib2/python/rox/i18n.py?rev=1.3&view=log +""" + +import os +from locale import normalize + +regex = r"(\[([a-zA-Z]+)(_[a-zA-Z]+)?(\.[a-zA-Z0-9-]+)?(@[a-zA-Z]+)?\])?" + +def _expand_lang(locale): + locale = normalize(locale) + COMPONENT_CODESET = 1 << 0 + COMPONENT_MODIFIER = 1 << 1 + COMPONENT_TERRITORY = 1 << 2 + # split up the locale into its base components + mask = 0 + pos = locale.find('@') + if pos >= 0: + modifier = locale[pos:] + locale = locale[:pos] + mask |= COMPONENT_MODIFIER + else: + modifier = '' + pos = locale.find('.') + codeset = '' + if pos >= 0: + locale = locale[:pos] + pos = locale.find('_') + if pos >= 0: + territory = locale[pos:] + locale = locale[:pos] + mask |= COMPONENT_TERRITORY + else: + territory = '' + language = locale + ret = [] + for i in range(mask+1): + if not (i & ~mask): # if all components for this combo exist ... + val = language + if i & COMPONENT_TERRITORY: val += territory + if i & COMPONENT_CODESET: val += codeset + if i & COMPONENT_MODIFIER: val += modifier + ret.append(val) + ret.reverse() + return ret + +def expand_languages(languages=None): + # Get some reasonable defaults for arguments that were not supplied + if languages is None: + languages = [] + for envar in ('LANGUAGE', 'LC_ALL', 'LC_MESSAGES', 'LANG'): + val = os.environ.get(envar) + if val: + languages = val.split(':') + break + #if 'C' not in languages: + # languages.append('C') + + # now normalize and expand the languages + nelangs = [] + for lang in languages: + for nelang in _expand_lang(lang): + if nelang not in nelangs: + nelangs.append(nelang) + return nelangs + +def update(language=None): + global langs + if language: + langs = expand_languages([language]) + else: + langs = expand_languages() + +langs = [] +update() diff --git a/src/controller/icons/mixins/xdg/Menu.py b/src/controller/icons/mixins/xdg/Menu.py new file mode 100644 index 0000000..fcf1ac1 --- /dev/null +++ b/src/controller/icons/mixins/xdg/Menu.py @@ -0,0 +1,1125 @@ +""" +Implementation of the XDG Menu Specification +http://standards.freedesktop.org/menu-spec/ + +Example code: + +from xdg.Menu import parse, Menu, MenuEntry + +def print_menu(menu, tab=0): + for submenu in menu.Entries: + if isinstance(submenu, Menu): + print ("\t" * tab) + unicode(submenu) + print_menu(submenu, tab+1) + elif isinstance(submenu, MenuEntry): + print ("\t" * tab) + unicode(submenu.DesktopEntry) + +print_menu(parse()) +""" + +import os +import locale +import subprocess +import ast +try: + import xml.etree.cElementTree as etree +except ImportError: + import xml.etree.ElementTree as etree + +from .BaseDirectory import xdg_data_dirs, xdg_config_dirs +from . import DesktopEntry, Locale, Config +from .Exceptions import ParsingError +from .util import PY3 + + +def _strxfrm(s): + """Wrapper around locale.strxfrm that accepts unicode strings on Python 2. + + See Python bug #2481. + """ + if (not PY3) and isinstance(s, unicode): + s = s.encode('utf-8') + return locale.strxfrm(s) + + +DELETED = "Deleted" +NO_DISPLAY = "NoDisplay" +HIDDEN = "Hidden" +EMPTY = "Empty" +NOT_SHOW_IN = "NotShowIn" +NO_EXEC = "NoExec" + + +class Menu: + """Menu containing sub menus under menu.Entries + + Contains both Menu and MenuEntry items. + """ + def __init__(self): + # Public stuff + self.Name = "" + self.Directory = None + self.Entries = [] + self.Doc = "" + self.Filename = "" + self.Depth = 0 + self.Parent = None + self.NotInXml = False + + # Can be True, False, DELETED, NO_DISPLAY, HIDDEN, EMPTY or NOT_SHOW_IN + self.Show = True + self.Visible = 0 + + # Private stuff, only needed for parsing + self.AppDirs = [] + self.DefaultLayout = None + self.Deleted = None + self.Directories = [] + self.DirectoryDirs = [] + self.Layout = None + self.MenuEntries = [] + self.Moves = [] + self.OnlyUnallocated = None + self.Rules = [] + self.Submenus = [] + + def __str__(self): + return self.Name + + def __add__(self, other): + for dir in other.AppDirs: + self.AppDirs.append(dir) + + for dir in other.DirectoryDirs: + self.DirectoryDirs.append(dir) + + for directory in other.Directories: + self.Directories.append(directory) + + if other.Deleted is not None: + self.Deleted = other.Deleted + + if other.OnlyUnallocated is not None: + self.OnlyUnallocated = other.OnlyUnallocated + + if other.Layout: + self.Layout = other.Layout + + if other.DefaultLayout: + self.DefaultLayout = other.DefaultLayout + + for rule in other.Rules: + self.Rules.append(rule) + + for move in other.Moves: + self.Moves.append(move) + + for submenu in other.Submenus: + self.addSubmenu(submenu) + + return self + + # FIXME: Performance: cache getName() + def __cmp__(self, other): + return locale.strcoll(self.getName(), other.getName()) + + def _key(self): + """Key function for locale-aware sorting.""" + return _strxfrm(self.getName()) + + def __lt__(self, other): + try: + other = other._key() + except AttributeError: + pass + return self._key() < other + + def __eq__(self, other): + try: + return self.Name == unicode(other) + except NameError: # unicode() becomes str() in Python 3 + return self.Name == str(other) + + """ PUBLIC STUFF """ + def getEntries(self, show_hidden=False): + """Interator for a list of Entries visible to the user.""" + for entry in self.Entries: + if show_hidden: + yield entry + elif entry.Show is True: + yield entry + + # FIXME: Add searchEntry/seaqrchMenu function + # search for name/comment/genericname/desktopfileid + # return multiple items + + def getMenuEntry(self, desktopfileid, deep=False): + """Searches for a MenuEntry with a given DesktopFileID.""" + for menuentry in self.MenuEntries: + if menuentry.DesktopFileID == desktopfileid: + return menuentry + if deep: + for submenu in self.Submenus: + submenu.getMenuEntry(desktopfileid, deep) + + def getMenu(self, path): + """Searches for a Menu with a given path.""" + array = path.split("/", 1) + for submenu in self.Submenus: + if submenu.Name == array[0]: + if len(array) > 1: + return submenu.getMenu(array[1]) + else: + return submenu + + def getPath(self, org=False, toplevel=False): + """Returns this menu's path in the menu structure.""" + parent = self + names = [] + while 1: + if org: + names.append(parent.Name) + else: + names.append(parent.getName()) + if parent.Depth > 0: + parent = parent.Parent + else: + break + names.reverse() + path = "" + if not toplevel: + names.pop(0) + for name in names: + path = os.path.join(path, name) + return path + + def getName(self): + """Returns the menu's localised name.""" + try: + return self.Directory.DesktopEntry.getName() + except AttributeError: + return self.Name + + def getGenericName(self): + """Returns the menu's generic name.""" + try: + return self.Directory.DesktopEntry.getGenericName() + except AttributeError: + return "" + + def getComment(self): + """Returns the menu's comment text.""" + try: + return self.Directory.DesktopEntry.getComment() + except AttributeError: + return "" + + def getIcon(self): + """Returns the menu's icon, filename or simple name""" + try: + return self.Directory.DesktopEntry.getIcon() + except AttributeError: + return "" + + def sort(self): + self.Entries = [] + self.Visible = 0 + + for submenu in self.Submenus: + submenu.sort() + + _submenus = set() + _entries = set() + + for order in self.Layout.order: + if order[0] == "Filename": + _entries.add(order[1]) + elif order[0] == "Menuname": + _submenus.add(order[1]) + + for order in self.Layout.order: + if order[0] == "Separator": + separator = Separator(self) + if len(self.Entries) > 0 and isinstance(self.Entries[-1], Separator): + separator.Show = False + self.Entries.append(separator) + elif order[0] == "Filename": + menuentry = self.getMenuEntry(order[1]) + if menuentry: + self.Entries.append(menuentry) + elif order[0] == "Menuname": + submenu = self.getMenu(order[1]) + if submenu: + if submenu.Layout.inline: + self.merge_inline(submenu) + else: + self.Entries.append(submenu) + elif order[0] == "Merge": + if order[1] == "files" or order[1] == "all": + self.MenuEntries.sort() + for menuentry in self.MenuEntries: + if menuentry.DesktopFileID not in _entries: + self.Entries.append(menuentry) + elif order[1] == "menus" or order[1] == "all": + self.Submenus.sort() + for submenu in self.Submenus: + if submenu.Name not in _submenus: + if submenu.Layout.inline: + self.merge_inline(submenu) + else: + self.Entries.append(submenu) + + # getHidden / NoDisplay / OnlyShowIn / NotOnlyShowIn / Deleted / NoExec + for entry in self.Entries: + entry.Show = True + self.Visible += 1 + if isinstance(entry, Menu): + if entry.Deleted is True: + entry.Show = DELETED + self.Visible -= 1 + elif isinstance(entry.Directory, MenuEntry): + if entry.Directory.DesktopEntry.getNoDisplay(): + entry.Show = NO_DISPLAY + self.Visible -= 1 + elif entry.Directory.DesktopEntry.getHidden(): + entry.Show = HIDDEN + self.Visible -= 1 + elif isinstance(entry, MenuEntry): + if entry.DesktopEntry.getNoDisplay(): + entry.Show = NO_DISPLAY + self.Visible -= 1 + elif entry.DesktopEntry.getHidden(): + entry.Show = HIDDEN + self.Visible -= 1 + elif entry.DesktopEntry.getTryExec() and not entry.DesktopEntry.findTryExec(): + entry.Show = NO_EXEC + self.Visible -= 1 + elif xdg.Config.windowmanager: + if (entry.DesktopEntry.OnlyShowIn != [] and ( + xdg.Config.windowmanager not in entry.DesktopEntry.OnlyShowIn + ) + ) or ( + xdg.Config.windowmanager in entry.DesktopEntry.NotShowIn + ): + entry.Show = NOT_SHOW_IN + self.Visible -= 1 + elif isinstance(entry, Separator): + self.Visible -= 1 + # remove separators at the beginning and at the end + if len(self.Entries) > 0: + if isinstance(self.Entries[0], Separator): + self.Entries[0].Show = False + if len(self.Entries) > 1: + if isinstance(self.Entries[-1], Separator): + self.Entries[-1].Show = False + + # show_empty tag + for entry in self.Entries[:]: + if isinstance(entry, Menu) and not entry.Layout.show_empty and entry.Visible == 0: + entry.Show = EMPTY + self.Visible -= 1 + if entry.NotInXml is True: + self.Entries.remove(entry) + + """ PRIVATE STUFF """ + def addSubmenu(self, newmenu): + for submenu in self.Submenus: + if submenu == newmenu: + submenu += newmenu + break + else: + self.Submenus.append(newmenu) + newmenu.Parent = self + newmenu.Depth = self.Depth + 1 + + # inline tags + def merge_inline(self, submenu): + """Appends a submenu's entries to this menu + See the section of the spec about the "inline" attribute + """ + if len(submenu.Entries) == 1 and submenu.Layout.inline_alias: + menuentry = submenu.Entries[0] + menuentry.DesktopEntry.set("Name", submenu.getName(), locale=True) + menuentry.DesktopEntry.set("GenericName", submenu.getGenericName(), locale=True) + menuentry.DesktopEntry.set("Comment", submenu.getComment(), locale=True) + self.Entries.append(menuentry) + elif len(submenu.Entries) <= submenu.Layout.inline_limit or submenu.Layout.inline_limit == 0: + if submenu.Layout.inline_header: + header = Header(submenu.getName(), submenu.getGenericName(), submenu.getComment()) + self.Entries.append(header) + for entry in submenu.Entries: + self.Entries.append(entry) + else: + self.Entries.append(submenu) + + +class Move: + "A move operation" + def __init__(self, old="", new=""): + self.Old = old + self.New = new + + def __cmp__(self, other): + return cmp(self.Old, other.Old) + + +class Layout: + "Menu Layout class" + def __init__(self, show_empty=False, inline=False, inline_limit=4, + inline_header=True, inline_alias=False): + self.show_empty = show_empty + self.inline = inline + self.inline_limit = inline_limit + self.inline_header = inline_header + self.inline_alias = inline_alias + self._order = [] + self._default_order = [ + ['Merge', 'menus'], + ['Merge', 'files'] + ] + + @property + def order(self): + return self._order if self._order else self._default_order + + @order.setter + def order(self, order): + self._order = order + + +class Rule: + """Include / Exclude Rules Class""" + + TYPE_INCLUDE, TYPE_EXCLUDE = 0, 1 + + @classmethod + def fromFilename(cls, type, filename): + tree = ast.Expression( + body=ast.Compare( + left=ast.Str(filename), + ops=[ast.Eq()], + comparators=[ast.Attribute( + value=ast.Name(id='menuentry', ctx=ast.Load()), + attr='DesktopFileID', + ctx=ast.Load() + )] + ), + lineno=1, col_offset=0 + ) + ast.fix_missing_locations(tree) + rule = Rule(type, tree) + return rule + + def __init__(self, type, expression): + # Type is TYPE_INCLUDE or TYPE_EXCLUDE + self.Type = type + # expression is ast.Expression + self.expression = expression + self.code = compile(self.expression, '', 'eval') + + def __str__(self): + return ast.dump(self.expression) + + def apply(self, menuentries, run): + for menuentry in menuentries: + if run == 2 and (menuentry.MatchedInclude is True or + menuentry.Allocated is True): + continue + if eval(self.code): + if self.Type is Rule.TYPE_INCLUDE: + menuentry.Add = True + menuentry.MatchedInclude = True + else: + menuentry.Add = False + return menuentries + + +class MenuEntry: + "Wrapper for 'Menu Style' Desktop Entries" + + TYPE_USER = "User" + TYPE_SYSTEM = "System" + TYPE_BOTH = "Both" + + def __init__(self, filename, dir="", prefix=""): + # Create entry + self.DesktopEntry = DesktopEntry(os.path.join(dir, filename)) + self.setAttributes(filename, dir, prefix) + + # Can True, False DELETED, HIDDEN, EMPTY, NOT_SHOW_IN or NO_EXEC + self.Show = True + + # Semi-Private + self.Original = None + self.Parents = [] + + # Private Stuff + self.Allocated = False + self.Add = False + self.MatchedInclude = False + + # Caching + self.Categories = self.DesktopEntry.getCategories() + + def save(self): + """Save any changes to the desktop entry.""" + if self.DesktopEntry.tainted: + self.DesktopEntry.write() + + def getDir(self): + """Return the directory containing the desktop entry file.""" + return self.DesktopEntry.filename.replace(self.Filename, '') + + def getType(self): + """Return the type of MenuEntry, System/User/Both""" + if not xdg.Config.root_mode: + if self.Original: + return self.TYPE_BOTH + elif xdg_data_dirs[0] in self.DesktopEntry.filename: + return self.TYPE_USER + else: + return self.TYPE_SYSTEM + else: + return self.TYPE_USER + + def setAttributes(self, filename, dir="", prefix=""): + self.Filename = filename + self.Prefix = prefix + self.DesktopFileID = os.path.join(prefix, filename).replace("/", "-") + + if not os.path.isabs(self.DesktopEntry.filename): + self.__setFilename() + + def updateAttributes(self): + if self.getType() == self.TYPE_SYSTEM: + self.Original = MenuEntry(self.Filename, self.getDir(), self.Prefix) + self.__setFilename() + + def __setFilename(self): + if not xdg.Config.root_mode: + path = xdg_data_dirs[0] + else: + path = xdg_data_dirs[1] + + if self.DesktopEntry.getType() == "Application": + dir_ = os.path.join(path, "applications") + else: + dir_ = os.path.join(path, "desktop-directories") + + self.DesktopEntry.filename = os.path.join(dir_, self.Filename) + + def __cmp__(self, other): + return locale.strcoll(self.DesktopEntry.getName(), other.DesktopEntry.getName()) + + def _key(self): + """Key function for locale-aware sorting.""" + return _strxfrm(self.DesktopEntry.getName()) + + def __lt__(self, other): + try: + other = other._key() + except AttributeError: + pass + return self._key() < other + + def __eq__(self, other): + if self.DesktopFileID == str(other): + return True + else: + return False + + def __repr__(self): + return self.DesktopFileID + + +class Separator: + "Just a dummy class for Separators" + def __init__(self, parent): + self.Parent = parent + self.Show = True + + +class Header: + "Class for Inline Headers" + def __init__(self, name, generic_name, comment): + self.Name = name + self.GenericName = generic_name + self.Comment = comment + + def __str__(self): + return self.Name + + +TYPE_DIR, TYPE_FILE = 0, 1 + + +def _check_file_path(value, filename, type): + path = os.path.dirname(filename) + if not os.path.isabs(value): + value = os.path.join(path, value) + value = os.path.abspath(value) + if not os.path.exists(value): + return False + if type == TYPE_DIR and os.path.isdir(value): + return value + if type == TYPE_FILE and os.path.isfile(value): + return value + return False + + +def _get_menu_file_path(filename): + dirs = list(xdg_config_dirs) + if xdg.Config.root_mode is True: + dirs.pop(0) + for d in dirs: + menuname = os.path.join(d, "menus", filename) + if os.path.isfile(menuname): + return menuname + + +def _to_bool(value): + if isinstance(value, bool): + return value + return value.lower() == "true" + + +# remove duplicate entries from a list +def _dedupe(_list): + _set = {} + _list.reverse() + _list = [_set.setdefault(e, e) for e in _list if e not in _set] + _list.reverse() + return _list + + +class XMLMenuBuilder(object): + + def __init__(self, debug=False): + self.debug = debug + + def parse(self, filename=None): + """Load an applications.menu file. + + filename : str, optional + The default is ``$XDG_CONFIG_DIRS/menus/${XDG_MENU_PREFIX}applications.menu``. + """ + # convert to absolute path + if filename and not os.path.isabs(filename): + filename = _get_menu_file_path(filename) + # use default if no filename given + if not filename: + candidate = os.environ.get('XDG_MENU_PREFIX', '') + "applications.menu" + filename = _get_menu_file_path(candidate) + if not filename: + raise ParsingError('File not found', "/etc/xdg/menus/%s" % candidate) + # check if it is a .menu file + if not filename.endswith(".menu"): + raise ParsingError('Not a .menu file', filename) + # create xml parser + try: + tree = etree.parse(filename) + except: + raise ParsingError('Not a valid .menu file', filename) + + # parse menufile + self._merged_files = set() + self._directory_dirs = set() + self.cache = MenuEntryCache() + + menu = self.parse_menu(tree.getroot(), filename) + menu.tree = tree + menu.filename = filename + + self.handle_moves(menu) + self.post_parse(menu) + + # generate the menu + self.generate_not_only_allocated(menu) + self.generate_only_allocated(menu) + + # and finally sort + menu.sort() + + return menu + + def parse_menu(self, node, filename): + menu = Menu() + self.parse_node(node, filename, menu) + return menu + + def parse_node(self, node, filename, parent=None): + num_children = len(node) + for child in node: + tag, text = child.tag, child.text + text = text.strip() if text else None + if tag == 'Menu': + menu = self.parse_menu(child, filename) + parent.addSubmenu(menu) + elif tag == 'AppDir' and text: + self.parse_app_dir(text, filename, parent) + elif tag == 'DefaultAppDirs': + self.parse_default_app_dir(filename, parent) + elif tag == 'DirectoryDir' and text: + self.parse_directory_dir(text, filename, parent) + elif tag == 'DefaultDirectoryDirs': + self.parse_default_directory_dir(filename, parent) + elif tag == 'Name' and text: + parent.Name = text + elif tag == 'Directory' and text: + parent.Directories.append(text) + elif tag == 'OnlyUnallocated': + parent.OnlyUnallocated = True + elif tag == 'NotOnlyUnallocated': + parent.OnlyUnallocated = False + elif tag == 'Deleted': + parent.Deleted = True + elif tag == 'NotDeleted': + parent.Deleted = False + elif tag == 'Include' or tag == 'Exclude': + parent.Rules.append(self.parse_rule(child)) + elif tag == 'MergeFile': + if child.attrib.get("type", None) == "parent": + self.parse_merge_file("applications.menu", child, filename, parent) + elif text: + self.parse_merge_file(text, child, filename, parent) + elif tag == 'MergeDir' and text: + self.parse_merge_dir(text, child, filename, parent) + elif tag == 'DefaultMergeDirs': + self.parse_default_merge_dirs(child, filename, parent) + elif tag == 'Move': + parent.Moves.append(self.parse_move(child)) + elif tag == 'Layout': + if num_children > 1: + parent.Layout = self.parse_layout(child) + elif tag == 'DefaultLayout': + if num_children > 1: + parent.DefaultLayout = self.parse_layout(child) + elif tag == 'LegacyDir' and text: + self.parse_legacy_dir(text, child.attrib.get("prefix", ""), filename, parent) + elif tag == 'KDELegacyDirs': + self.parse_kde_legacy_dirs(filename, parent) + + def parse_layout(self, node): + layout = Layout( + show_empty=_to_bool(node.attrib.get("show_empty", False)), + inline=_to_bool(node.attrib.get("inline", False)), + inline_limit=int(node.attrib.get("inline_limit", 4)), + inline_header=_to_bool(node.attrib.get("inline_header", True)), + inline_alias=_to_bool(node.attrib.get("inline_alias", False)) + ) + for child in node: + tag, text = child.tag, child.text + text = text.strip() if text else None + if tag == "Menuname" and text: + layout.order.append([ + "Menuname", + text, + _to_bool(child.attrib.get("show_empty", False)), + _to_bool(child.attrib.get("inline", False)), + int(child.attrib.get("inline_limit", 4)), + _to_bool(child.attrib.get("inline_header", True)), + _to_bool(child.attrib.get("inline_alias", False)) + ]) + elif tag == "Separator": + layout.order.append(['Separator']) + elif tag == "Filename" and text: + layout.order.append(["Filename", text]) + elif tag == "Merge": + layout.order.append([ + "Merge", + child.attrib.get("type", "all") + ]) + return layout + + def parse_move(self, node): + old, new = "", "" + for child in node: + tag, text = child.tag, child.text + text = text.strip() if text else None + if tag == "Old" and text: + old = text + elif tag == "New" and text: + new = text + return Move(old, new) + + # ---------- parsing + + def parse_rule(self, node): + type = Rule.TYPE_INCLUDE if node.tag == 'Include' else Rule.TYPE_EXCLUDE + tree = ast.Expression(lineno=1, col_offset=0) + expr = self.parse_bool_op(node, ast.Or()) + if expr: + tree.body = expr + else: + tree.body = ast.Name('False', ast.Load()) + ast.fix_missing_locations(tree) + return Rule(type, tree) + + def parse_bool_op(self, node, operator): + values = [] + for child in node: + rule = self.parse_rule_node(child) + if rule: + values.append(rule) + num_values = len(values) + if num_values > 1: + return ast.BoolOp(operator, values) + elif num_values == 1: + return values[0] + return None + + def parse_rule_node(self, node): + tag = node.tag + if tag == 'Or': + return self.parse_bool_op(node, ast.Or()) + elif tag == 'And': + return self.parse_bool_op(node, ast.And()) + elif tag == 'Not': + expr = self.parse_bool_op(node, ast.Or()) + return ast.UnaryOp(ast.Not(), expr) if expr else None + elif tag == 'All': + return ast.Name('True', ast.Load()) + elif tag == 'Category': + category = node.text + return ast.Compare( + left=ast.Str(category), + ops=[ast.In()], + comparators=[ast.Attribute( + value=ast.Name(id='menuentry', ctx=ast.Load()), + attr='Categories', + ctx=ast.Load() + )] + ) + elif tag == 'Filename': + filename = node.text + return ast.Compare( + left=ast.Str(filename), + ops=[ast.Eq()], + comparators=[ast.Attribute( + value=ast.Name(id='menuentry', ctx=ast.Load()), + attr='DesktopFileID', + ctx=ast.Load() + )] + ) + + # ---------- App/Directory Dir Stuff + + def parse_app_dir(self, value, filename, parent): + value = _check_file_path(value, filename, TYPE_DIR) + if value: + parent.AppDirs.append(value) + + def parse_default_app_dir(self, filename, parent): + for d in reversed(xdg_data_dirs): + self.parse_app_dir(os.path.join(d, "applications"), filename, parent) + + def parse_directory_dir(self, value, filename, parent): + value = _check_file_path(value, filename, TYPE_DIR) + if value: + parent.DirectoryDirs.append(value) + + def parse_default_directory_dir(self, filename, parent): + for d in reversed(xdg_data_dirs): + self.parse_directory_dir(os.path.join(d, "desktop-directories"), filename, parent) + + # ---------- Merge Stuff + + def parse_merge_file(self, value, child, filename, parent): + if child.attrib.get("type", None) == "parent": + for d in xdg_config_dirs: + rel_file = filename.replace(d, "").strip("/") + if rel_file != filename: + for p in xdg_config_dirs: + if d == p: + continue + if os.path.isfile(os.path.join(p, rel_file)): + self.merge_file(os.path.join(p, rel_file), child, parent) + break + else: + value = _check_file_path(value, filename, TYPE_FILE) + if value: + self.merge_file(value, child, parent) + + def parse_merge_dir(self, value, child, filename, parent): + value = _check_file_path(value, filename, TYPE_DIR) + if value: + for item in os.listdir(value): + try: + if item.endswith(".menu"): + self.merge_file(os.path.join(value, item), child, parent) + except UnicodeDecodeError: + continue + + def parse_default_merge_dirs(self, child, filename, parent): + basename = os.path.splitext(os.path.basename(filename))[0] + for d in reversed(xdg_config_dirs): + self.parse_merge_dir(os.path.join(d, "menus", basename + "-merged"), child, filename, parent) + + def merge_file(self, filename, child, parent): + # check for infinite loops + if filename in self._merged_files: + if self.debug: + raise ParsingError('Infinite MergeFile loop detected', filename) + else: + return + self._merged_files.add(filename) + # load file + try: + tree = etree.parse(filename) + except IOError: + if self.debug: + raise ParsingError('File not found', filename) + else: + return + except: + if self.debug: + raise ParsingError('Not a valid .menu file', filename) + else: + return + root = tree.getroot() + self.parse_node(root, filename, parent) + + # ---------- Legacy Dir Stuff + + def parse_legacy_dir(self, dir_, prefix, filename, parent): + m = self.merge_legacy_dir(dir_, prefix, filename, parent) + if m: + parent += m + + def merge_legacy_dir(self, dir_, prefix, filename, parent): + dir_ = _check_file_path(dir_, filename, TYPE_DIR) + if dir_ and dir_ not in self._directory_dirs: + self._directory_dirs.add(dir_) + m = Menu() + m.AppDirs.append(dir_) + m.DirectoryDirs.append(dir_) + m.Name = os.path.basename(dir_) + m.NotInXml = True + + for item in os.listdir(dir_): + try: + if item == ".directory": + m.Directories.append(item) + elif os.path.isdir(os.path.join(dir_, item)): + m.addSubmenu(self.merge_legacy_dir( + os.path.join(dir_, item), + prefix, + filename, + parent + )) + except UnicodeDecodeError: + continue + + self.cache.add_menu_entries([dir_], prefix, True) + menuentries = self.cache.get_menu_entries([dir_], False) + + for menuentry in menuentries: + categories = menuentry.Categories + if len(categories) == 0: + r = Rule.fromFilename(Rule.TYPE_INCLUDE, menuentry.DesktopFileID) + m.Rules.append(r) + if not dir_ in parent.AppDirs: + categories.append("Legacy") + menuentry.Categories = categories + + return m + + def parse_kde_legacy_dirs(self, filename, parent): + try: + proc = subprocess.Popen( + ['kde-config', '--path', 'apps'], + stdout=subprocess.PIPE, + universal_newlines=True + ) + output = proc.communicate()[0].splitlines() + except OSError: + # If kde-config doesn't exist, ignore this. + return + try: + for dir_ in output[0].split(":"): + self.parse_legacy_dir(dir_, "kde", filename, parent) + except IndexError: + pass + + def post_parse(self, menu): + # unallocated / deleted + if menu.Deleted is None: + menu.Deleted = False + if menu.OnlyUnallocated is None: + menu.OnlyUnallocated = False + + # Layout Tags + if not menu.Layout or not menu.DefaultLayout: + if menu.DefaultLayout: + menu.Layout = menu.DefaultLayout + elif menu.Layout: + if menu.Depth > 0: + menu.DefaultLayout = menu.Parent.DefaultLayout + else: + menu.DefaultLayout = Layout() + else: + if menu.Depth > 0: + menu.Layout = menu.Parent.DefaultLayout + menu.DefaultLayout = menu.Parent.DefaultLayout + else: + menu.Layout = Layout() + menu.DefaultLayout = Layout() + + # add parent's app/directory dirs + if menu.Depth > 0: + menu.AppDirs = menu.Parent.AppDirs + menu.AppDirs + menu.DirectoryDirs = menu.Parent.DirectoryDirs + menu.DirectoryDirs + + # remove duplicates + menu.Directories = _dedupe(menu.Directories) + menu.DirectoryDirs = _dedupe(menu.DirectoryDirs) + menu.AppDirs = _dedupe(menu.AppDirs) + + # go recursive through all menus + for submenu in menu.Submenus: + self.post_parse(submenu) + + # reverse so handling is easier + menu.Directories.reverse() + menu.DirectoryDirs.reverse() + menu.AppDirs.reverse() + + # get the valid .directory file out of the list + for directory in menu.Directories: + for dir in menu.DirectoryDirs: + if os.path.isfile(os.path.join(dir, directory)): + menuentry = MenuEntry(directory, dir) + if not menu.Directory: + menu.Directory = menuentry + elif menuentry.Type == MenuEntry.TYPE_SYSTEM: + if menu.Directory.Type == MenuEntry.TYPE_USER: + menu.Directory.Original = menuentry + if menu.Directory: + break + + # Finally generate the menu + def generate_not_only_allocated(self, menu): + for submenu in menu.Submenus: + self.generate_not_only_allocated(submenu) + + if menu.OnlyUnallocated is False: + self.cache.add_menu_entries(menu.AppDirs) + menuentries = [] + for rule in menu.Rules: + menuentries = rule.apply(self.cache.get_menu_entries(menu.AppDirs), 1) + + for menuentry in menuentries: + if menuentry.Add is True: + menuentry.Parents.append(menu) + menuentry.Add = False + menuentry.Allocated = True + menu.MenuEntries.append(menuentry) + + def generate_only_allocated(self, menu): + for submenu in menu.Submenus: + self.generate_only_allocated(submenu) + + if menu.OnlyUnallocated is True: + self.cache.add_menu_entries(menu.AppDirs) + menuentries = [] + for rule in menu.Rules: + menuentries = rule.apply(self.cache.get_menu_entries(menu.AppDirs), 2) + for menuentry in menuentries: + if menuentry.Add is True: + menuentry.Parents.append(menu) + # menuentry.Add = False + # menuentry.Allocated = True + menu.MenuEntries.append(menuentry) + + def handle_moves(self, menu): + for submenu in menu.Submenus: + self.handle_moves(submenu) + # parse move operations + for move in menu.Moves: + move_from_menu = menu.getMenu(move.Old) + if move_from_menu: + # FIXME: this is assigned, but never used... + move_to_menu = menu.getMenu(move.New) + + menus = move.New.split("/") + oldparent = None + while len(menus) > 0: + if not oldparent: + oldparent = menu + newmenu = oldparent.getMenu(menus[0]) + if not newmenu: + newmenu = Menu() + newmenu.Name = menus[0] + if len(menus) > 1: + newmenu.NotInXml = True + oldparent.addSubmenu(newmenu) + oldparent = newmenu + menus.pop(0) + + newmenu += move_from_menu + move_from_menu.Parent.Submenus.remove(move_from_menu) + + +class MenuEntryCache: + "Class to cache Desktop Entries" + def __init__(self): + self.cacheEntries = {} + self.cacheEntries['legacy'] = [] + self.cache = {} + + def add_menu_entries(self, dirs, prefix="", legacy=False): + for dir_ in dirs: + if not dir_ in self.cacheEntries: + self.cacheEntries[dir_] = [] + self.__addFiles(dir_, "", prefix, legacy) + + def __addFiles(self, dir_, subdir, prefix, legacy): + for item in os.listdir(os.path.join(dir_, subdir)): + if item.endswith(".desktop"): + try: + menuentry = MenuEntry(os.path.join(subdir, item), dir_, prefix) + except ParsingError: + continue + + self.cacheEntries[dir_].append(menuentry) + if legacy: + self.cacheEntries['legacy'].append(menuentry) + elif os.path.isdir(os.path.join(dir_, subdir, item)) and not legacy: + self.__addFiles(dir_, os.path.join(subdir, item), prefix, legacy) + + def get_menu_entries(self, dirs, legacy=True): + entries = [] + ids = set() + # handle legacy items + appdirs = dirs[:] + if legacy: + appdirs.append("legacy") + # cache the results again + key = "".join(appdirs) + try: + return self.cache[key] + except KeyError: + pass + for dir_ in appdirs: + for menuentry in self.cacheEntries[dir_]: + try: + if menuentry.DesktopFileID not in ids: + ids.add(menuentry.DesktopFileID) + entries.append(menuentry) + elif menuentry.getType() == MenuEntry.TYPE_SYSTEM: + # FIXME: This is only 99% correct, but still... + idx = entries.index(menuentry) + entry = entries[idx] + if entry.getType() == MenuEntry.TYPE_USER: + entry.Original = menuentry + except UnicodeDecodeError: + continue + self.cache[key] = entries + return entries + + +def parse(filename=None, debug=False): + """Helper function. + Equivalent to calling xdg.Menu.XMLMenuBuilder().parse(filename) + """ + return XMLMenuBuilder(debug).parse(filename) diff --git a/src/controller/icons/mixins/xdg/MenuEditor.py b/src/controller/icons/mixins/xdg/MenuEditor.py new file mode 100644 index 0000000..2c68515 --- /dev/null +++ b/src/controller/icons/mixins/xdg/MenuEditor.py @@ -0,0 +1,541 @@ +""" CLass to edit XDG Menus """ +import os +try: + import xml.etree.cElementTree as etree +except ImportError: + import xml.etree.ElementTree as etree + +from .Menu import Menu, MenuEntry, Layout, Separator, XMLMenuBuilder +from .BaseDirectory import xdg_config_dirs, xdg_data_dirs +from .Exceptions import ParsingError +from .Config import setRootMode + +# XML-Cleanups: Move / Exclude +# FIXME: proper reverte/delete +# FIXME: pass AppDirs/DirectoryDirs around in the edit/move functions +# FIXME: catch Exceptions +# FIXME: copy functions +# FIXME: More Layout stuff +# FIXME: unod/redo function / remove menu... +# FIXME: Advanced MenuEditing Stuff: LegacyDir/MergeFile +# Complex Rules/Deleted/OnlyAllocated/AppDirs/DirectoryDirs + + +class MenuEditor(object): + + def __init__(self, menu=None, filename=None, root=False): + self.menu = None + self.filename = None + self.tree = None + self.parser = XMLMenuBuilder() + self.parse(menu, filename, root) + + # fix for creating two menus with the same name on the fly + self.filenames = [] + + def parse(self, menu=None, filename=None, root=False): + if root: + setRootMode(True) + + if isinstance(menu, Menu): + self.menu = menu + elif menu: + self.menu = self.parser.parse(menu) + else: + self.menu = self.parser.parse() + + if root: + self.filename = self.menu.Filename + elif filename: + self.filename = filename + else: + self.filename = os.path.join(xdg_config_dirs[0], "menus", os.path.split(self.menu.Filename)[1]) + + try: + self.tree = etree.parse(self.filename) + except IOError: + root = etree.fromtring(""" + +

+ Applications + %s + +""" % self.menu.Filename) + self.tree = etree.ElementTree(root) + except ParsingError: + raise ParsingError('Not a valid .menu file', self.filename) + + #FIXME: is this needed with etree ? + self.__remove_whitespace_nodes(self.tree) + + def save(self): + self.__saveEntries(self.menu) + self.__saveMenu() + + def createMenuEntry(self, parent, name, command=None, genericname=None, comment=None, icon=None, terminal=None, after=None, before=None): + menuentry = MenuEntry(self.__getFileName(name, ".desktop")) + menuentry = self.editMenuEntry(menuentry, name, genericname, comment, command, icon, terminal) + + self.__addEntry(parent, menuentry, after, before) + + self.menu.sort() + + return menuentry + + def createMenu(self, parent, name, genericname=None, comment=None, icon=None, after=None, before=None): + menu = Menu() + + menu.Parent = parent + menu.Depth = parent.Depth + 1 + menu.Layout = parent.DefaultLayout + menu.DefaultLayout = parent.DefaultLayout + + menu = self.editMenu(menu, name, genericname, comment, icon) + + self.__addEntry(parent, menu, after, before) + + self.menu.sort() + + return menu + + def createSeparator(self, parent, after=None, before=None): + separator = Separator(parent) + + self.__addEntry(parent, separator, after, before) + + self.menu.sort() + + return separator + + def moveMenuEntry(self, menuentry, oldparent, newparent, after=None, before=None): + self.__deleteEntry(oldparent, menuentry, after, before) + self.__addEntry(newparent, menuentry, after, before) + + self.menu.sort() + + return menuentry + + def moveMenu(self, menu, oldparent, newparent, after=None, before=None): + self.__deleteEntry(oldparent, menu, after, before) + self.__addEntry(newparent, menu, after, before) + + root_menu = self.__getXmlMenu(self.menu.Name) + if oldparent.getPath(True) != newparent.getPath(True): + self.__addXmlMove(root_menu, os.path.join(oldparent.getPath(True), menu.Name), os.path.join(newparent.getPath(True), menu.Name)) + + self.menu.sort() + + return menu + + def moveSeparator(self, separator, parent, after=None, before=None): + self.__deleteEntry(parent, separator, after, before) + self.__addEntry(parent, separator, after, before) + + self.menu.sort() + + return separator + + def copyMenuEntry(self, menuentry, oldparent, newparent, after=None, before=None): + self.__addEntry(newparent, menuentry, after, before) + + self.menu.sort() + + return menuentry + + def editMenuEntry(self, menuentry, name=None, genericname=None, comment=None, command=None, icon=None, terminal=None, nodisplay=None, hidden=None): + deskentry = menuentry.DesktopEntry + + if name: + if not deskentry.hasKey("Name"): + deskentry.set("Name", name) + deskentry.set("Name", name, locale=True) + if comment: + if not deskentry.hasKey("Comment"): + deskentry.set("Comment", comment) + deskentry.set("Comment", comment, locale=True) + if genericname: + if not deskentry.hasKey("GenericName"): + deskentry.set("GenericName", genericname) + deskentry.set("GenericName", genericname, locale=True) + if command: + deskentry.set("Exec", command) + if icon: + deskentry.set("Icon", icon) + + if terminal: + deskentry.set("Terminal", "true") + elif not terminal: + deskentry.set("Terminal", "false") + + if nodisplay is True: + deskentry.set("NoDisplay", "true") + elif nodisplay is False: + deskentry.set("NoDisplay", "false") + + if hidden is True: + deskentry.set("Hidden", "true") + elif hidden is False: + deskentry.set("Hidden", "false") + + menuentry.updateAttributes() + + if len(menuentry.Parents) > 0: + self.menu.sort() + + return menuentry + + def editMenu(self, menu, name=None, genericname=None, comment=None, icon=None, nodisplay=None, hidden=None): + # Hack for legacy dirs + if isinstance(menu.Directory, MenuEntry) and menu.Directory.Filename == ".directory": + xml_menu = self.__getXmlMenu(menu.getPath(True, True)) + self.__addXmlTextElement(xml_menu, 'Directory', menu.Name + ".directory") + menu.Directory.setAttributes(menu.Name + ".directory") + # Hack for New Entries + elif not isinstance(menu.Directory, MenuEntry): + if not name: + name = menu.Name + filename = self.__getFileName(name, ".directory").replace("/", "") + if not menu.Name: + menu.Name = filename.replace(".directory", "") + xml_menu = self.__getXmlMenu(menu.getPath(True, True)) + self.__addXmlTextElement(xml_menu, 'Directory', filename) + menu.Directory = MenuEntry(filename) + + deskentry = menu.Directory.DesktopEntry + + if name: + if not deskentry.hasKey("Name"): + deskentry.set("Name", name) + deskentry.set("Name", name, locale=True) + if genericname: + if not deskentry.hasKey("GenericName"): + deskentry.set("GenericName", genericname) + deskentry.set("GenericName", genericname, locale=True) + if comment: + if not deskentry.hasKey("Comment"): + deskentry.set("Comment", comment) + deskentry.set("Comment", comment, locale=True) + if icon: + deskentry.set("Icon", icon) + + if nodisplay is True: + deskentry.set("NoDisplay", "true") + elif nodisplay is False: + deskentry.set("NoDisplay", "false") + + if hidden is True: + deskentry.set("Hidden", "true") + elif hidden is False: + deskentry.set("Hidden", "false") + + menu.Directory.updateAttributes() + + if isinstance(menu.Parent, Menu): + self.menu.sort() + + return menu + + def hideMenuEntry(self, menuentry): + self.editMenuEntry(menuentry, nodisplay=True) + + def unhideMenuEntry(self, menuentry): + self.editMenuEntry(menuentry, nodisplay=False, hidden=False) + + def hideMenu(self, menu): + self.editMenu(menu, nodisplay=True) + + def unhideMenu(self, menu): + self.editMenu(menu, nodisplay=False, hidden=False) + xml_menu = self.__getXmlMenu(menu.getPath(True, True), False) + deleted = xml_menu.findall('Deleted') + not_deleted = xml_menu.findall('NotDeleted') + for node in deleted + not_deleted: + xml_menu.remove(node) + + def deleteMenuEntry(self, menuentry): + if self.getAction(menuentry) == "delete": + self.__deleteFile(menuentry.DesktopEntry.filename) + for parent in menuentry.Parents: + self.__deleteEntry(parent, menuentry) + self.menu.sort() + return menuentry + + def revertMenuEntry(self, menuentry): + if self.getAction(menuentry) == "revert": + self.__deleteFile(menuentry.DesktopEntry.filename) + menuentry.Original.Parents = [] + for parent in menuentry.Parents: + index = parent.Entries.index(menuentry) + parent.Entries[index] = menuentry.Original + index = parent.MenuEntries.index(menuentry) + parent.MenuEntries[index] = menuentry.Original + menuentry.Original.Parents.append(parent) + self.menu.sort() + return menuentry + + def deleteMenu(self, menu): + if self.getAction(menu) == "delete": + self.__deleteFile(menu.Directory.DesktopEntry.filename) + self.__deleteEntry(menu.Parent, menu) + xml_menu = self.__getXmlMenu(menu.getPath(True, True)) + parent = self.__get_parent_node(xml_menu) + parent.remove(xml_menu) + self.menu.sort() + return menu + + def revertMenu(self, menu): + if self.getAction(menu) == "revert": + self.__deleteFile(menu.Directory.DesktopEntry.filename) + menu.Directory = menu.Directory.Original + self.menu.sort() + return menu + + def deleteSeparator(self, separator): + self.__deleteEntry(separator.Parent, separator, after=True) + + self.menu.sort() + + return separator + + """ Private Stuff """ + def getAction(self, entry): + if isinstance(entry, Menu): + if not isinstance(entry.Directory, MenuEntry): + return "none" + elif entry.Directory.getType() == "Both": + return "revert" + elif entry.Directory.getType() == "User" and ( + len(entry.Submenus) + len(entry.MenuEntries) + ) == 0: + return "delete" + + elif isinstance(entry, MenuEntry): + if entry.getType() == "Both": + return "revert" + elif entry.getType() == "User": + return "delete" + else: + return "none" + + return "none" + + def __saveEntries(self, menu): + if not menu: + menu = self.menu + if isinstance(menu.Directory, MenuEntry): + menu.Directory.save() + for entry in menu.getEntries(hidden=True): + if isinstance(entry, MenuEntry): + entry.save() + elif isinstance(entry, Menu): + self.__saveEntries(entry) + + def __saveMenu(self): + if not os.path.isdir(os.path.dirname(self.filename)): + os.makedirs(os.path.dirname(self.filename)) + self.tree.write(self.filename, encoding='utf-8') + + def __getFileName(self, name, extension): + postfix = 0 + while 1: + if postfix == 0: + filename = name + extension + else: + filename = name + "-" + str(postfix) + extension + if extension == ".desktop": + dir = "applications" + elif extension == ".directory": + dir = "desktop-directories" + if not filename in self.filenames and not os.path.isfile( + os.path.join(xdg_data_dirs[0], dir, filename) + ): + self.filenames.append(filename) + break + else: + postfix += 1 + + return filename + + def __getXmlMenu(self, path, create=True, element=None): + # FIXME: we should also return the menu's parent, + # to avoid looking for it later on + # @see Element.getiterator() + if not element: + element = self.tree + + if "/" in path: + (name, path) = path.split("/", 1) + else: + name = path + path = "" + + found = None + for node in element.findall("Menu"): + name_node = node.find('Name') + if name_node.text == name: + if path: + found = self.__getXmlMenu(path, create, node) + else: + found = node + if found: + break + if not found and create: + node = self.__addXmlMenuElement(element, name) + if path: + found = self.__getXmlMenu(path, create, node) + else: + found = node + + return found + + def __addXmlMenuElement(self, element, name): + menu_node = etree.SubElement('Menu', element) + name_node = etree.SubElement('Name', menu_node) + name_node.text = name + return menu_node + + def __addXmlTextElement(self, element, name, text): + node = etree.SubElement(name, element) + node.text = text + return node + + def __addXmlFilename(self, element, filename, type_="Include"): + # remove old filenames + includes = element.findall('Include') + excludes = element.findall('Exclude') + rules = includes + excludes + for rule in rules: + #FIXME: this finds only Rules whose FIRST child is a Filename element + if rule[0].tag == "Filename" and rule[0].text == filename: + element.remove(rule) + # shouldn't it remove all occurences, like the following: + #filename_nodes = rule.findall('.//Filename'): + #for fn in filename_nodes: + #if fn.text == filename: + ##element.remove(rule) + #parent = self.__get_parent_node(fn) + #parent.remove(fn) + + # add new filename + node = etree.SubElement(type_, element) + self.__addXmlTextElement(node, 'Filename', filename) + return node + + def __addXmlMove(self, element, old, new): + node = etree.SubElement("Move", element) + self.__addXmlTextElement(node, 'Old', old) + self.__addXmlTextElement(node, 'New', new) + return node + + def __addXmlLayout(self, element, layout): + # remove old layout + for node in element.findall("Layout"): + element.remove(node) + + # add new layout + node = etree.SubElement("Layout", element) + for order in layout.order: + if order[0] == "Separator": + child = etree.SubElement("Separator", node) + elif order[0] == "Filename": + child = self.__addXmlTextElement(node, "Filename", order[1]) + elif order[0] == "Menuname": + child = self.__addXmlTextElement(node, "Menuname", order[1]) + elif order[0] == "Merge": + child = etree.SubElement("Merge", node) + child.attrib["type"] = order[1] + return node + + def __addLayout(self, parent): + layout = Layout() + layout.order = [] + layout.show_empty = parent.Layout.show_empty + layout.inline = parent.Layout.inline + layout.inline_header = parent.Layout.inline_header + layout.inline_alias = parent.Layout.inline_alias + layout.inline_limit = parent.Layout.inline_limit + + layout.order.append(["Merge", "menus"]) + for entry in parent.Entries: + if isinstance(entry, Menu): + layout.parseMenuname(entry.Name) + elif isinstance(entry, MenuEntry): + layout.parseFilename(entry.DesktopFileID) + elif isinstance(entry, Separator): + layout.parseSeparator() + layout.order.append(["Merge", "files"]) + + parent.Layout = layout + + return layout + + def __addEntry(self, parent, entry, after=None, before=None): + if after or before: + if after: + index = parent.Entries.index(after) + 1 + elif before: + index = parent.Entries.index(before) + parent.Entries.insert(index, entry) + else: + parent.Entries.append(entry) + + xml_parent = self.__getXmlMenu(parent.getPath(True, True)) + + if isinstance(entry, MenuEntry): + parent.MenuEntries.append(entry) + entry.Parents.append(parent) + self.__addXmlFilename(xml_parent, entry.DesktopFileID, "Include") + elif isinstance(entry, Menu): + parent.addSubmenu(entry) + + if after or before: + self.__addLayout(parent) + self.__addXmlLayout(xml_parent, parent.Layout) + + def __deleteEntry(self, parent, entry, after=None, before=None): + parent.Entries.remove(entry) + + xml_parent = self.__getXmlMenu(parent.getPath(True, True)) + + if isinstance(entry, MenuEntry): + entry.Parents.remove(parent) + parent.MenuEntries.remove(entry) + self.__addXmlFilename(xml_parent, entry.DesktopFileID, "Exclude") + elif isinstance(entry, Menu): + parent.Submenus.remove(entry) + + if after or before: + self.__addLayout(parent) + self.__addXmlLayout(xml_parent, parent.Layout) + + def __deleteFile(self, filename): + try: + os.remove(filename) + except OSError: + pass + try: + self.filenames.remove(filename) + except ValueError: + pass + + def __remove_whitespace_nodes(self, node): + for child in node: + text = child.text.strip() + if not text: + child.text = '' + tail = child.tail.strip() + if not tail: + child.tail = '' + if len(child): + self.__remove_whilespace_nodes(child) + + def __get_parent_node(self, node): + # elements in ElementTree doesn't hold a reference to their parent + for parent, child in self.__iter_parent(): + if child is node: + return child + + def __iter_parent(self): + for parent in self.tree.getiterator(): + for child in parent: + yield parent, child diff --git a/src/controller/icons/mixins/xdg/Mime.py b/src/controller/icons/mixins/xdg/Mime.py new file mode 100644 index 0000000..60c4efd --- /dev/null +++ b/src/controller/icons/mixins/xdg/Mime.py @@ -0,0 +1,780 @@ +""" +This module is based on a rox module (LGPL): + +http://cvs.sourceforge.net/viewcvs.py/rox/ROX-Lib2/python/rox/mime.py?rev=1.21&view=log + +This module provides access to the shared MIME database. + +types is a dictionary of all known MIME types, indexed by the type name, e.g. +types['application/x-python'] + +Applications can install information about MIME types by storing an +XML file as /packages/.xml and running the +update-mime-database command, which is provided by the freedesktop.org +shared mime database package. + +See http://www.freedesktop.org/standards/shared-mime-info-spec/ for +information about the format of these files. + +(based on version 0.13) +""" + +import os +import re +import stat +import sys +import fnmatch + +from . import BaseDirectory, Locale + +from .dom import minidom, XML_NAMESPACE +from collections import defaultdict + +FREE_NS = 'http://www.freedesktop.org/standards/shared-mime-info' + +types = {} # Maps MIME names to type objects + +exts = None # Maps extensions to types +globs = None # List of (glob, type) pairs +literals = None # Maps liternal names to types +magic = None + +PY3 = (sys.version_info[0] >= 3) + +def _get_node_data(node): + """Get text of XML node""" + return ''.join([n.nodeValue for n in node.childNodes]).strip() + +def lookup(media, subtype = None): + """Get the MIMEtype object for the given type. + + This remains for backwards compatibility; calling MIMEtype now does + the same thing. + + The name can either be passed as one part ('text/plain'), or as two + ('text', 'plain'). + """ + return MIMEtype(media, subtype) + +class MIMEtype(object): + """Class holding data about a MIME type. + + Calling the class will return a cached instance, so there is only one + instance for each MIME type. The name can either be passed as one part + ('text/plain'), or as two ('text', 'plain'). + """ + def __new__(cls, media, subtype=None): + if subtype is None and '/' in media: + media, subtype = media.split('/', 1) + assert '/' not in subtype + media = media.lower() + subtype = subtype.lower() + + try: + return types[(media, subtype)] + except KeyError: + mtype = super(MIMEtype, cls).__new__(cls) + mtype._init(media, subtype) + types[(media, subtype)] = mtype + return mtype + + # If this is done in __init__, it is automatically called again each time + # the MIMEtype is returned by __new__, which we don't want. So we call it + # explicitly only when we construct a new instance. + def _init(self, media, subtype): + self.media = media + self.subtype = subtype + self._comment = None + + def _load(self): + "Loads comment for current language. Use get_comment() instead." + resource = os.path.join('mime', self.media, self.subtype + '.xml') + for path in BaseDirectory.load_data_paths(resource): + doc = minidom.parse(path) + if doc is None: + continue + for comment in doc.documentElement.getElementsByTagNameNS(FREE_NS, 'comment'): + lang = comment.getAttributeNS(XML_NAMESPACE, 'lang') or 'en' + goodness = 1 + (lang in xdg.Locale.langs) + if goodness > self._comment[0]: + self._comment = (goodness, _get_node_data(comment)) + if goodness == 2: return + + # FIXME: add get_icon method + def get_comment(self): + """Returns comment for current language, loading it if needed.""" + # Should we ever reload? + if self._comment is None: + self._comment = (0, str(self)) + self._load() + return self._comment[1] + + def canonical(self): + """Returns the canonical MimeType object if this is an alias.""" + update_cache() + s = str(self) + if s in aliases: + return lookup(aliases[s]) + return self + + def inherits_from(self): + """Returns a set of Mime types which this inherits from.""" + update_cache() + return set(lookup(t) for t in inheritance[str(self)]) + + def __str__(self): + return self.media + '/' + self.subtype + + def __repr__(self): + return 'MIMEtype(%r, %r)' % (self.media, self.subtype) + + def __hash__(self): + return hash(self.media) ^ hash(self.subtype) + +class UnknownMagicRuleFormat(ValueError): + pass + +class DiscardMagicRules(Exception): + "Raised when __NOMAGIC__ is found, and caught to discard previous rules." + pass + +class MagicRule: + also = None + + def __init__(self, start, value, mask, word, range): + self.start = start + self.value = value + self.mask = mask + self.word = word + self.range = range + + rule_ending_re = re.compile(br'(?:~(\d+))?(?:\+(\d+))?\n$') + + @classmethod + def from_file(cls, f): + """Read a rule from the binary magics file. Returns a 2-tuple of + the nesting depth and the MagicRule.""" + line = f.readline() + #print line + + # [indent] '>' + nest_depth, line = line.split(b'>', 1) + nest_depth = int(nest_depth) if nest_depth else 0 + + # start-offset '=' + start, line = line.split(b'=', 1) + start = int(start) + + if line == b'__NOMAGIC__\n': + raise DiscardMagicRules + + # value length (2 bytes, big endian) + if sys.version_info[0] >= 3: + lenvalue = int.from_bytes(line[:2], byteorder='big') + else: + lenvalue = (ord(line[0])<<8)+ord(line[1]) + line = line[2:] + + # value + # This can contain newlines, so we may need to read more lines + while len(line) <= lenvalue: + line += f.readline() + value, line = line[:lenvalue], line[lenvalue:] + + # ['&' mask] + if line.startswith(b'&'): + # This can contain newlines, so we may need to read more lines + while len(line) <= lenvalue: + line += f.readline() + mask, line = line[1:lenvalue+1], line[lenvalue+1:] + else: + mask = None + + # ['~' word-size] ['+' range-length] + ending = cls.rule_ending_re.match(line) + if not ending: + # Per the spec, this will be caught and ignored, to allow + # for future extensions. + raise UnknownMagicRuleFormat(repr(line)) + + word, range = ending.groups() + word = int(word) if (word is not None) else 1 + range = int(range) if (range is not None) else 1 + + return nest_depth, cls(start, value, mask, word, range) + + def maxlen(self): + l = self.start + len(self.value) + self.range + if self.also: + return max(l, self.also.maxlen()) + return l + + def match(self, buffer): + if self.match0(buffer): + if self.also: + return self.also.match(buffer) + return True + + def match0(self, buffer): + l=len(buffer) + lenvalue = len(self.value) + for o in range(self.range): + s=self.start+o + e=s+lenvalue + if l [(priority, rule), ...] + + def merge_file(self, fname): + """Read a magic binary file, and add its rules to this MagicDB.""" + with open(fname, 'rb') as f: + line = f.readline() + if line != b'MIME-Magic\0\n': + raise IOError('Not a MIME magic file') + + while True: + shead = f.readline().decode('ascii') + #print(shead) + if not shead: + break + if shead[0] != '[' or shead[-2:] != ']\n': + raise ValueError('Malformed section heading', shead) + pri, tname = shead[1:-2].split(':') + #print shead[1:-2] + pri = int(pri) + mtype = lookup(tname) + try: + rule = MagicMatchAny.from_file(f) + except DiscardMagicRules: + self.bytype.pop(mtype, None) + rule = MagicMatchAny.from_file(f) + if rule is None: + continue + #print rule + + self.bytype[mtype].append((pri, rule)) + + def finalise(self): + """Prepare the MagicDB for matching. + + This should be called after all rules have been merged into it. + """ + maxlen = 0 + self.alltypes = [] # (priority, mimetype, rule) + + for mtype, rules in self.bytype.items(): + for pri, rule in rules: + self.alltypes.append((pri, mtype, rule)) + maxlen = max(maxlen, rule.maxlen()) + + self.maxlen = maxlen # Number of bytes to read from files + self.alltypes.sort(key=lambda x: x[0], reverse=True) + + def match_data(self, data, max_pri=100, min_pri=0, possible=None): + """Do magic sniffing on some bytes. + + max_pri & min_pri can be used to specify the maximum & minimum priority + rules to look for. possible can be a list of mimetypes to check, or None + (the default) to check all mimetypes until one matches. + + Returns the MIMEtype found, or None if no entries match. + """ + if possible is not None: + types = [] + for mt in possible: + for pri, rule in self.bytype[mt]: + types.append((pri, mt, rule)) + types.sort(key=lambda x: x[0]) + else: + types = self.alltypes + + for priority, mimetype, rule in types: + #print priority, max_pri, min_pri + if priority > max_pri: + continue + if priority < min_pri: + break + + if rule.match(data): + return mimetype + + def match(self, path, max_pri=100, min_pri=0, possible=None): + """Read data from the file and do magic sniffing on it. + + max_pri & min_pri can be used to specify the maximum & minimum priority + rules to look for. possible can be a list of mimetypes to check, or None + (the default) to check all mimetypes until one matches. + + Returns the MIMEtype found, or None if no entries match. Raises IOError + if the file can't be opened. + """ + with open(path, 'rb') as f: + buf = f.read(self.maxlen) + return self.match_data(buf, max_pri, min_pri, possible) + + def __repr__(self): + return '' % len(self.alltypes) + +class GlobDB(object): + def __init__(self): + """Prepare the GlobDB. It can't actually be used until .finalise() is + called, but merge_file() can be used to add data before that. + """ + # Maps mimetype to {(weight, glob, flags), ...} + self.allglobs = defaultdict(set) + + def merge_file(self, path): + """Loads name matching information from a globs2 file."""# + allglobs = self.allglobs + with open(path) as f: + for line in f: + if line.startswith('#'): continue # Comment + + fields = line[:-1].split(':') + weight, type_name, pattern = fields[:3] + weight = int(weight) + mtype = lookup(type_name) + if len(fields) > 3: + flags = fields[3].split(',') + else: + flags = () + + if pattern == '__NOGLOBS__': + # This signals to discard any previous globs + allglobs.pop(mtype, None) + continue + + allglobs[mtype].add((weight, pattern, tuple(flags))) + + def finalise(self): + """Prepare the GlobDB for matching. + + This should be called after all files have been merged into it. + """ + self.exts = defaultdict(list) # Maps extensions to [(type, weight),...] + self.cased_exts = defaultdict(list) + self.globs = [] # List of (regex, type, weight) triplets + self.literals = {} # Maps literal names to (type, weight) + self.cased_literals = {} + + for mtype, globs in self.allglobs.items(): + mtype = mtype.canonical() + for weight, pattern, flags in globs: + + cased = 'cs' in flags + + if pattern.startswith('*.'): + # *.foo -- extension pattern + rest = pattern[2:] + if not ('*' in rest or '[' in rest or '?' in rest): + if cased: + self.cased_exts[rest].append((mtype, weight)) + else: + self.exts[rest.lower()].append((mtype, weight)) + continue + + if ('*' in pattern or '[' in pattern or '?' in pattern): + # Translate the glob pattern to a regex & compile it + re_flags = 0 if cased else re.I + pattern = re.compile(fnmatch.translate(pattern), flags=re_flags) + self.globs.append((pattern, mtype, weight)) + else: + # No wildcards - literal pattern + if cased: + self.cased_literals[pattern] = (mtype, weight) + else: + self.literals[pattern.lower()] = (mtype, weight) + + # Sort globs by weight & length + self.globs.sort(reverse=True, key=lambda x: (x[2], len(x[0].pattern)) ) + + def first_match(self, path): + """Return the first match found for a given path, or None if no match + is found.""" + try: + return next(self._match_path(path))[0] + except StopIteration: + return None + + def all_matches(self, path): + """Return a list of (MIMEtype, glob weight) pairs for the path.""" + return list(self._match_path(path)) + + def _match_path(self, path): + """Yields pairs of (mimetype, glob weight).""" + leaf = os.path.basename(path) + + # Literals (no wildcards) + if leaf in self.cased_literals: + yield self.cased_literals[leaf] + + lleaf = leaf.lower() + if lleaf in self.literals: + yield self.literals[lleaf] + + # Extensions + ext = leaf + while 1: + p = ext.find('.') + if p < 0: break + ext = ext[p + 1:] + if ext in self.cased_exts: + for res in self.cased_exts[ext]: + yield res + ext = lleaf + while 1: + p = ext.find('.') + if p < 0: break + ext = ext[p+1:] + if ext in self.exts: + for res in self.exts[ext]: + yield res + + # Other globs + for (regex, mime_type, weight) in self.globs: + if regex.match(leaf): + yield (mime_type, weight) + +# Some well-known types +text = lookup('text', 'plain') +octet_stream = lookup('application', 'octet-stream') +inode_block = lookup('inode', 'blockdevice') +inode_char = lookup('inode', 'chardevice') +inode_dir = lookup('inode', 'directory') +inode_fifo = lookup('inode', 'fifo') +inode_socket = lookup('inode', 'socket') +inode_symlink = lookup('inode', 'symlink') +inode_door = lookup('inode', 'door') +app_exe = lookup('application', 'executable') + +_cache_uptodate = False + +def _cache_database(): + global globs, magic, aliases, inheritance, _cache_uptodate + + _cache_uptodate = True + + aliases = {} # Maps alias Mime types to canonical names + inheritance = defaultdict(set) # Maps to sets of parent mime types. + + # Load aliases + for path in BaseDirectory.load_data_paths(os.path.join('mime', 'aliases')): + with open(path, 'r') as f: + for line in f: + alias, canonical = line.strip().split(None, 1) + aliases[alias] = canonical + + # Load filename patterns (globs) + globs = GlobDB() + for path in BaseDirectory.load_data_paths(os.path.join('mime', 'globs2')): + globs.merge_file(path) + globs.finalise() + + # Load magic sniffing data + magic = MagicDB() + for path in BaseDirectory.load_data_paths(os.path.join('mime', 'magic')): + magic.merge_file(path) + magic.finalise() + + # Load subclasses + for path in BaseDirectory.load_data_paths(os.path.join('mime', 'subclasses')): + with open(path, 'r') as f: + for line in f: + sub, parent = line.strip().split(None, 1) + inheritance[sub].add(parent) + +def update_cache(): + if not _cache_uptodate: + _cache_database() + +def get_type_by_name(path): + """Returns type of file by its name, or None if not known""" + update_cache() + return globs.first_match(path) + +def get_type_by_contents(path, max_pri=100, min_pri=0): + """Returns type of file by its contents, or None if not known""" + update_cache() + + return magic.match(path, max_pri, min_pri) + +def get_type_by_data(data, max_pri=100, min_pri=0): + """Returns type of the data, which should be bytes.""" + update_cache() + + return magic.match_data(data, max_pri, min_pri) + +def _get_type_by_stat(st_mode): + """Match special filesystem objects to Mimetypes.""" + if stat.S_ISDIR(st_mode): return inode_dir + elif stat.S_ISCHR(st_mode): return inode_char + elif stat.S_ISBLK(st_mode): return inode_block + elif stat.S_ISFIFO(st_mode): return inode_fifo + elif stat.S_ISLNK(st_mode): return inode_symlink + elif stat.S_ISSOCK(st_mode): return inode_socket + return inode_door + +def get_type(path, follow=True, name_pri=100): + """Returns type of file indicated by path. + + This function is *deprecated* - :func:`get_type2` is more accurate. + + :param path: pathname to check (need not exist) + :param follow: when reading file, follow symbolic links + :param name_pri: Priority to do name matches. 100=override magic + + This tries to use the contents of the file, and falls back to the name. It + can also handle special filesystem objects like directories and sockets. + """ + update_cache() + + try: + if follow: + st = os.stat(path) + else: + st = os.lstat(path) + except: + t = get_type_by_name(path) + return t or text + + if stat.S_ISREG(st.st_mode): + # Regular file + t = get_type_by_contents(path, min_pri=name_pri) + if not t: t = get_type_by_name(path) + if not t: t = get_type_by_contents(path, max_pri=name_pri) + if t is None: + if stat.S_IMODE(st.st_mode) & 0o111: + return app_exe + else: + return text + return t + else: + return _get_type_by_stat(st.st_mode) + +def get_type2(path, follow=True): + """Find the MIMEtype of a file using the XDG recommended checking order. + + This first checks the filename, then uses file contents if the name doesn't + give an unambiguous MIMEtype. It can also handle special filesystem objects + like directories and sockets. + + :param path: file path to examine (need not exist) + :param follow: whether to follow symlinks + + :rtype: :class:`MIMEtype` + + .. versionadded:: 1.0 + """ + update_cache() + + try: + st = os.stat(path) if follow else os.lstat(path) + except OSError: + return get_type_by_name(path) or octet_stream + + if not stat.S_ISREG(st.st_mode): + # Special filesystem objects + return _get_type_by_stat(st.st_mode) + + mtypes = sorted(globs.all_matches(path), key=(lambda x: x[1]), reverse=True) + if mtypes: + max_weight = mtypes[0][1] + i = 1 + for mt, w in mtypes[1:]: + if w < max_weight: + break + i += 1 + mtypes = mtypes[:i] + if len(mtypes) == 1: + return mtypes[0][0] + + possible = [mt for mt,w in mtypes] + else: + possible = None # Try all magic matches + + try: + t = magic.match(path, possible=possible) + except IOError: + t = None + + if t: + return t + elif mtypes: + return mtypes[0][0] + elif stat.S_IMODE(st.st_mode) & 0o111: + return app_exe + else: + return text if is_text_file(path) else octet_stream + +def is_text_file(path): + """Guess whether a file contains text or binary data. + + Heuristic: binary if the first 32 bytes include ASCII control characters. + This rule may change in future versions. + + .. versionadded:: 1.0 + """ + try: + f = open(path, 'rb') + except IOError: + return False + + with f: + return _is_text(f.read(32)) + +if PY3: + def _is_text(data): + return not any(b <= 0x8 or 0xe <= b < 0x20 or b == 0x7f for b in data) +else: + def _is_text(data): + return not any(b <= '\x08' or '\x0e' <= b < '\x20' or b == '\x7f' \ + for b in data) + +_mime2ext_cache = None +_mime2ext_cache_uptodate = False + +def get_extensions(mimetype): + """Retrieve the set of filename extensions matching a given MIMEtype. + + Extensions are returned without a leading dot, e.g. 'py'. If no extensions + are registered for the MIMEtype, returns an empty set. + + The extensions are stored in a cache the first time this is called. + + .. versionadded:: 1.0 + """ + global _mime2ext_cache, _mime2ext_cache_uptodate + update_cache() + if not _mime2ext_cache_uptodate: + _mime2ext_cache = defaultdict(set) + for ext, mtypes in globs.exts.items(): + for mtype, prio in mtypes: + _mime2ext_cache[mtype].add(ext) + _mime2ext_cache_uptodate = True + + return _mime2ext_cache[mimetype] + + +def install_mime_info(application, package_file): + """Copy 'package_file' as ``~/.local/share/mime/packages/.xml.`` + If package_file is None, install ``/.xml``. + If already installed, does nothing. May overwrite an existing + file with the same name (if the contents are different)""" + application += '.xml' + + new_data = open(package_file).read() + + # See if the file is already installed + package_dir = os.path.join('mime', 'packages') + resource = os.path.join(package_dir, application) + for x in BaseDirectory.load_data_paths(resource): + try: + old_data = open(x).read() + except: + continue + if old_data == new_data: + return # Already installed + + global _cache_uptodate + _cache_uptodate = False + + # Not already installed; add a new copy + # Create the directory structure... + new_file = os.path.join(BaseDirectory.save_data_path(package_dir), application) + + # Write the file... + open(new_file, 'w').write(new_data) + + # Update the database... + command = 'update-mime-database' + if os.spawnlp(os.P_WAIT, command, command, BaseDirectory.save_data_path('mime')): + os.unlink(new_file) + raise Exception("The '%s' command returned an error code!\n" \ + "Make sure you have the freedesktop.org shared MIME package:\n" \ + "http://standards.freedesktop.org/shared-mime-info/" % command) diff --git a/src/controller/icons/mixins/xdg/RecentFiles.py b/src/controller/icons/mixins/xdg/RecentFiles.py new file mode 100644 index 0000000..fbe608c --- /dev/null +++ b/src/controller/icons/mixins/xdg/RecentFiles.py @@ -0,0 +1,181 @@ +""" +Implementation of the XDG Recent File Storage Specification +http://standards.freedesktop.org/recent-file-spec +""" + +import xml.dom.minidom, xml.sax.saxutils +import os, time, fcntl +from .Exceptions import ParsingError + +class RecentFiles: + def __init__(self): + self.RecentFiles = [] + self.filename = "" + + def parse(self, filename=None): + """Parse a list of recently used files. + + filename defaults to ``~/.recently-used``. + """ + if not filename: + filename = os.path.join(os.getenv("HOME"), ".recently-used") + + try: + doc = xml.dom.minidom.parse(filename) + except IOError: + raise ParsingError('File not found', filename) + except xml.parsers.expat.ExpatError: + raise ParsingError('Not a valid .menu file', filename) + + self.filename = filename + + for child in doc.childNodes: + if child.nodeType == xml.dom.Node.ELEMENT_NODE: + if child.tagName == "RecentFiles": + for recent in child.childNodes: + if recent.nodeType == xml.dom.Node.ELEMENT_NODE: + if recent.tagName == "RecentItem": + self.__parseRecentItem(recent) + + self.sort() + + def __parseRecentItem(self, item): + recent = RecentFile() + self.RecentFiles.append(recent) + + for attribute in item.childNodes: + if attribute.nodeType == xml.dom.Node.ELEMENT_NODE: + if attribute.tagName == "URI": + recent.URI = attribute.childNodes[0].nodeValue + elif attribute.tagName == "Mime-Type": + recent.MimeType = attribute.childNodes[0].nodeValue + elif attribute.tagName == "Timestamp": + recent.Timestamp = int(attribute.childNodes[0].nodeValue) + elif attribute.tagName == "Private": + recent.Prviate = True + elif attribute.tagName == "Groups": + + for group in attribute.childNodes: + if group.nodeType == xml.dom.Node.ELEMENT_NODE: + if group.tagName == "Group": + recent.Groups.append(group.childNodes[0].nodeValue) + + def write(self, filename=None): + """Write the list of recently used files to disk. + + If the instance is already associated with a file, filename can be + omitted to save it there again. + """ + if not filename and not self.filename: + raise ParsingError('File not found', filename) + elif not filename: + filename = self.filename + + f = open(filename, "w") + fcntl.lockf(f, fcntl.LOCK_EX) + f.write('\n') + f.write("\n") + + for r in self.RecentFiles: + f.write(" \n") + f.write(" %s\n" % xml.sax.saxutils.escape(r.URI)) + f.write(" %s\n" % r.MimeType) + f.write(" %s\n" % r.Timestamp) + if r.Private == True: + f.write(" \n") + if len(r.Groups) > 0: + f.write(" \n") + for group in r.Groups: + f.write(" %s\n" % group) + f.write(" \n") + f.write(" \n") + + f.write("\n") + fcntl.lockf(f, fcntl.LOCK_UN) + f.close() + + def getFiles(self, mimetypes=None, groups=None, limit=0): + """Get a list of recently used files. + + The parameters can be used to filter by mime types, by group, or to + limit the number of items returned. By default, the entire list is + returned, except for items marked private. + """ + tmp = [] + i = 0 + for item in self.RecentFiles: + if groups: + for group in groups: + if group in item.Groups: + tmp.append(item) + i += 1 + elif mimetypes: + for mimetype in mimetypes: + if mimetype == item.MimeType: + tmp.append(item) + i += 1 + else: + if item.Private == False: + tmp.append(item) + i += 1 + if limit != 0 and i == limit: + break + + return tmp + + def addFile(self, item, mimetype, groups=None, private=False): + """Add a recently used file. + + item should be the URI of the file, typically starting with ``file:///``. + """ + # check if entry already there + if item in self.RecentFiles: + index = self.RecentFiles.index(item) + recent = self.RecentFiles[index] + else: + # delete if more then 500 files + if len(self.RecentFiles) == 500: + self.RecentFiles.pop() + # add entry + recent = RecentFile() + self.RecentFiles.append(recent) + + recent.URI = item + recent.MimeType = mimetype + recent.Timestamp = int(time.time()) + recent.Private = private + if groups: + recent.Groups = groups + + self.sort() + + def deleteFile(self, item): + """Remove a recently used file, by URI, from the list. + """ + if item in self.RecentFiles: + self.RecentFiles.remove(item) + + def sort(self): + self.RecentFiles.sort() + self.RecentFiles.reverse() + + +class RecentFile: + def __init__(self): + self.URI = "" + self.MimeType = "" + self.Timestamp = "" + self.Private = False + self.Groups = [] + + def __cmp__(self, other): + return cmp(self.Timestamp, other.Timestamp) + + def __lt__ (self, other): + return self.Timestamp < other.Timestamp + + def __eq__(self, other): + return self.URI == str(other) + + def __str__(self): + return self.URI diff --git a/src/controller/icons/mixins/xdg/__init__.py b/src/controller/icons/mixins/xdg/__init__.py new file mode 100644 index 0000000..b5a117e --- /dev/null +++ b/src/controller/icons/mixins/xdg/__init__.py @@ -0,0 +1,3 @@ +__all__ = [ "BaseDirectory", "DesktopEntry", "Menu", "Exceptions", "IniFile", "IconTheme", "Locale", "Config", "Mime", "RecentFiles", "MenuEditor" ] + +__version__ = "0.26" diff --git a/src/controller/icons/mixins/xdg/util.py b/src/controller/icons/mixins/xdg/util.py new file mode 100644 index 0000000..1637aa5 --- /dev/null +++ b/src/controller/icons/mixins/xdg/util.py @@ -0,0 +1,75 @@ +import sys + +PY3 = sys.version_info[0] >= 3 + +if PY3: + def u(s): + return s +else: + # Unicode-like literals + def u(s): + return s.decode('utf-8') + +try: + # which() is available from Python 3.3 + from shutil import which +except ImportError: + import os + # This is a copy of which() from Python 3.3 + def which(cmd, mode=os.F_OK | os.X_OK, path=None): + """Given a command, mode, and a PATH string, return the path which + conforms to the given mode on the PATH, or None if there is no such + file. + + `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result + of os.environ.get("PATH"), or can be overridden with a custom search + path. + + """ + # Check that a given file can be accessed with the correct mode. + # Additionally check that `file` is not a directory, as on Windows + # directories pass the os.access check. + def _access_check(fn, mode): + return (os.path.exists(fn) and os.access(fn, mode) + and not os.path.isdir(fn)) + + # If we're given a path with a directory part, look it up directly rather + # than referring to PATH directories. This includes checking relative to the + # current directory, e.g. ./script + if os.path.dirname(cmd): + if _access_check(cmd, mode): + return cmd + return None + + path = (path or os.environ.get("PATH", os.defpath)).split(os.pathsep) + + if sys.platform == "win32": + # The current directory takes precedence on Windows. + if not os.curdir in path: + path.insert(0, os.curdir) + + # PATHEXT is necessary to check on Windows. + pathext = os.environ.get("PATHEXT", "").split(os.pathsep) + # See if the given file matches any of the expected path extensions. + # This will allow us to short circuit when given "python.exe". + # If it does match, only test that one, otherwise we have to try + # others. + if any(cmd.lower().endswith(ext.lower()) for ext in pathext): + files = [cmd] + else: + files = [cmd + ext for ext in pathext] + else: + # On other platforms you don't have things like PATHEXT to tell you + # what file suffixes are executable, so just pass on cmd as-is. + files = [cmd] + + seen = set() + for dir in path: + normdir = os.path.normcase(dir) + if not normdir in seen: + seen.add(normdir) + for thefile in files: + name = os.path.join(dir, thefile) + if _access_check(name, mode): + return name + return None diff --git a/src/controller/mixins/TreeViewUpdateMixin.py b/src/controller/mixins/TreeViewUpdateMixin.py new file mode 100644 index 0000000..c5193ef --- /dev/null +++ b/src/controller/mixins/TreeViewUpdateMixin.py @@ -0,0 +1,49 @@ +# Python imports +import threading + + +# Gtk imports +import gi +gi.require_version("Gtk", "3.0") +gi.require_version('Gdk', '3.0') +from gi.repository import Gtk, Gdk, GLib, Gio, GdkPixbuf + +# Application imports + + + +def threaded(fn): + def wrapper(*args, **kwargs): + threading.Thread(target=fn, args=args, kwargs=kwargs).start() + + return wrapper + + +class TreeViewUpdateMixin: + """docstring for DummyMixin""" + def load_store(self, view, store, dir): + store.clear() + view.load_directory(dir) + files = view.get_images() + + for i, file in enumerate(files): + store.append([None, f"{dir}/{file[0]}"]) + self.create_icon(i, view, store, dir, file[0]) + + @threaded + def create_icon(self, i, view, store, dir, file): + icon = view.create_icon(dir, file) + fpath = f"{dir}/{file}" + GLib.idle_add(self.update_store, (i, store, icon, view, fpath,)) + + def update_store(self, item): + i, store, icon, view, fpath = item + itr = store.get_iter(i) + + if not icon: + if fpath.endswith(".gif"): + icon = GdkPixbuf.PixbufAnimation.get_static_image(fpath) + else: + icon = GdkPixbuf.Pixbuf.new_from_file(view.DEFAULT_ICON) + + store.set_value(itr, 0, icon) diff --git a/src/controller/mixins/__init__.py b/src/controller/mixins/__init__.py new file mode 100644 index 0000000..183df50 --- /dev/null +++ b/src/controller/mixins/__init__.py @@ -0,0 +1 @@ +from .TreeViewUpdateMixin import TreeViewUpdateMixin diff --git a/src/utils/Logger.py b/src/utils/Logger.py new file mode 100644 index 0000000..06eed47 --- /dev/null +++ b/src/utils/Logger.py @@ -0,0 +1,56 @@ +# Python imports +import os, logging + +# Application imports + + +class Logger: + def __init__(self, config_path): + self._CONFIG_PATH = config_path + + def get_logger(self, loggerName = "NO_LOGGER_NAME_PASSED", createFile = True): + """ + Create a new logging object and return it. + :note: + NOSET # Don't know the actual log level of this... (defaulting or literally none?) + Log Levels (From least to most) + Type Value + CRITICAL 50 + ERROR 40 + WARNING 30 + INFO 20 + DEBUG 10 + :param loggerName: Sets the name of the logger object. (Used in log lines) + :param createFile: Whether we create a log file or just pump to terminal + + :return: the logging object we created + """ + + globalLogLvl = logging.DEBUG # Keep this at highest so that handlers can filter to their desired levels + chLogLevel = logging.CRITICAL # Prety musch the only one we change ever + fhLogLevel = logging.DEBUG + log = logging.getLogger(loggerName) + log.setLevel(globalLogLvl) + + # Set our log output styles + fFormatter = logging.Formatter('[%(asctime)s] %(pathname)s:%(lineno)d %(levelname)s - %(message)s', '%m-%d %H:%M:%S') + cFormatter = logging.Formatter('%(pathname)s:%(lineno)d] %(levelname)s - %(message)s') + + ch = logging.StreamHandler() + ch.setLevel(level=chLogLevel) + ch.setFormatter(cFormatter) + log.addHandler(ch) + + if createFile: + folder = self._CONFIG_PATH + file = f"{folder}/application.log" + + if not os.path.exists(folder): + os.mkdir(folder) + + fh = logging.FileHandler(file) + fh.setLevel(level=fhLogLevel) + fh.setFormatter(fFormatter) + log.addHandler(fh) + + return log diff --git a/src/utils/Settings.py b/src/utils/Settings.py new file mode 100644 index 0000000..3af0b58 --- /dev/null +++ b/src/utils/Settings.py @@ -0,0 +1,110 @@ +# Python imports +import os + +# Gtk imports +import gi, cairo +gi.require_version('Gtk', '3.0') +gi.require_version('Gdk', '3.0') + +from gi.repository import Gtk +from gi.repository import Gdk + + +# Application imports +from . import Logger + + + +class Settings: + def __init__(self): + self._SCRIPT_PTH = os.path.dirname(os.path.realpath(__file__)) + self._USER_HOME = os.path.expanduser('~') + self._CONFIG_PATH = f"{self._USER_HOME}/.config/{app_name.lower()}" + self._GLADE_FILE = f"{self._CONFIG_PATH}/Main_Window.glade" + self._CSS_FILE = f"{self._CONFIG_PATH}/stylesheet.css" + self._DEFAULT_ICONS = f"{self._CONFIG_PATH}/icons" + self._WINDOW_ICON = f"{self._DEFAULT_ICONS}/{app_name.lower()}.png" + self._BLANK_ICON = f"{self._DEFAULT_ICONS}/mirage_blank.png" + self._USR_PATH = f"/usr/share/{app_name.lower()}" + + if not os.path.exists(self._CONFIG_PATH): + os.mkdir(self._CONFIG_PATH) + if not os.path.exists(self._GLADE_FILE): + self._GLADE_FILE = f"{self._USR_PATH}/Main_Window.glade" + if not os.path.exists(self._CSS_FILE): + self._CSS_FILE = f"{self._USR_PATH}/stylesheet.css" + if not os.path.exists(self._WINDOW_ICON): + self._WINDOW_ICON = f"{self._USR_PATH}/icons/{app_name.lower()}.png" + if not os.path.exists(self._BLANK_ICON): + self._BLANK_ICON = f"{self._USR_PATH}/icons/mirage_blank.png" + if not os.path.exists(self._DEFAULT_ICONS): + self.DEFAULT_ICONS = f"{self._USR_PATH}/icons" + + # '_filters' + self._images_filter = ('.png', '.jpg', '.jpeg', '.gif', '.ico', '.tga') + + self._success_color = "#88cc27" + self._warning_color = "#ffa800" + self._error_color = "#ff0000" + + self._main_window = None + self._logger = Logger(self._CONFIG_PATH).get_logger() + self._builder = Gtk.Builder() + self._builder.add_from_file(self._GLADE_FILE) + + + + def create_window(self): + # Get window and connect signals + self._main_window = self._builder.get_object("Main_Window") + self.set_window_data() + + def set_window_data(self): + self._main_window.set_icon_from_file(self._WINDOW_ICON) + screen = self._main_window.get_screen() + visual = screen.get_rgba_visual() + + if visual != None and screen.is_composited(): + self._main_window.set_visual(visual) + self._main_window.set_app_paintable(True) + self._main_window.connect("draw", self.draw_area) + + # bind css file + cssProvider = Gtk.CssProvider() + cssProvider.load_from_path(self._CSS_FILE) + screen = Gdk.Screen.get_default() + styleContext = Gtk.StyleContext() + styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) + + def get_monitor_data(self): + screen = self._builder.get_object("Main_Window").get_screen() + monitors = [] + for m in range(screen.get_n_monitors()): + monitors.append(screen.get_monitor_geometry(m)) + + for monitor in monitors: + print("{}x{}|{}+{}".format(monitor.width, monitor.height, monitor.x, monitor.y)) + + return monitors + + def draw_area(self, widget, cr): + cr.set_source_rgba(0, 0, 0, 0.54) + cr.set_operator(cairo.OPERATOR_SOURCE) + cr.paint() + cr.set_operator(cairo.OPERATOR_OVER) + + + + + def get_builder(self): return self._builder + def get_logger(self): return self._logger + def get_main_window(self): return self._main_window + def get_home_path(self): return self._USER_HOME + + # Filter returns + def get_images_filter(self): return self._images_filter + + def get_blank_image(self): return self._BLANK_ICON + def get_success_color(self): return self._success_color + def get_warning_color(self): return self._warning_color + def get_error_color(self): return self._error_color diff --git a/src/utils/__init__.py b/src/utils/__init__.py new file mode 100644 index 0000000..415301e --- /dev/null +++ b/src/utils/__init__.py @@ -0,0 +1,6 @@ +""" + Utils module +""" + +from .Logger import Logger +from .Settings import Settings diff --git a/user_config/usr/share/mirage2/Main_Window.glade b/user_config/usr/share/mirage2/Main_Window.glade new file mode 100644 index 0000000..25e2a0e --- /dev/null +++ b/user_config/usr/share/mirage2/Main_Window.glade @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + 800 + 600 + False + Mirage2 + + + + True + False + vertical + + + True + False + + + + + + + + + + + + False + True + 0 + + + + + True + False + 5 + 5 + + + False + True + 1 + + + + + True + False + + + 256 + True + True + in + + + True + False + + + True + True + thumbnail_store + False + False + False + True + + + + + + + column + + + + 0 + + + + + + + + + + + False + True + 0 + + + + + True + True + in + + + True + False + + + 800 + 600 + True + False + True + + + + + + + + + + True + True + 1 + + + + + True + True + 2 + + + + + + diff --git a/user_config/usr/share/mirage2/icons/mirage2.png b/user_config/usr/share/mirage2/icons/mirage2.png new file mode 100644 index 0000000000000000000000000000000000000000..a47013240310e2e08d8971150b2285b2c7d23b5a GIT binary patch literal 5597 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 literal 0 HcmV?d00001 diff --git a/user_config/usr/share/mirage2/icons/mirage_blank.png b/user_config/usr/share/mirage2/icons/mirage_blank.png new file mode 100644 index 0000000000000000000000000000000000000000..433dc1bc614e7fc34e7b1c2801e2db5271af9558 GIT binary patch literal 7623 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 literal 0 HcmV?d00001 diff --git a/user_config/usr/share/mirage2/stylesheet.css b/user_config/usr/share/mirage2/stylesheet.css new file mode 100644 index 0000000..c0383f6 --- /dev/null +++ b/user_config/usr/share/mirage2/stylesheet.css @@ -0,0 +1,86 @@ +/* Set fm to have transparent window */ +box, +iconview, +notebook, +paned, +stack, +scrolledwindow, +treeview.view, +.content-view, +.view { + background: rgba(19, 21, 25, 0.14); + color: rgba(255, 255, 255, 1); +} + +notebook > header > tabs > tab:checked { + /* Neon Blue 00e8ff */ + background-color: rgba(0, 232, 255, 0.2); + /* Dark Bergundy */ + /* background-color: rgba(116, 0, 0, 0.25); */ + + color: rgba(255, 255, 255, 0.8); +} + +#message_view { + font: 16px "Monospace"; +} + +.view:selected, +.view:selected:hover { + box-shadow: inset 0 0 0 9999px rgba(21, 158, 167, 0.34); + color: rgba(255, 255, 255, 0.5); +} + +.alert-border { + border: 2px solid rgba(116, 0, 0, 0.64); +} + +.search-border { + border: 2px solid rgba(136, 204, 39, 1); +} + +.notebook-selected-focus { + /* Neon Blue 00e8ff border */ + border: 2px solid rgba(0, 232, 255, 0.34); + /* Dark Bergundy */ + /* border: 2px solid rgba(116, 0, 0, 0.64); */ +} + +.notebook-unselected-focus { + /* Neon Blue 00e8ff border */ + /* border: 2px solid rgba(0, 232, 255, 0.25); */ + /* Dark Bergundy */ + /* border: 2px solid rgba(116, 0, 0, 0.64); */ + /* Snow White */ + border: 2px solid rgba(255, 255, 255, 0.24); +} + + + + + +/* * { + background: rgba(0, 0, 0, 0.14); + color: rgba(255, 255, 255, 1); +} */ + +/* * selection { + background-color: rgba(116, 0, 0, 0.65); + color: rgba(255, 255, 255, 0.5); +} */ + +/* Rubberband coloring */ +/* .rubberband, +rubberband, +flowbox rubberband, +treeview.view rubberband, +.content-view rubberband, +.content-view .rubberband, +XfdesktopIconView.view .rubberband { + border: 1px solid #6c6c6c; + background-color: rgba(21, 158, 167, 0.57); +} + +XfdesktopIconView.view:active { + background-color: rgba(172, 102, 21, 1); +} */