diff options
author | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-09-11 14:38:47 +0900 |
---|---|---|
committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2020-09-11 14:38:47 +0900 |
commit | 884c8093d63402a1ad0b502244b791e3c6782be3 (patch) | |
tree | a600d4ab0d431a2bdfe4c15b70df43c14fbd8dd0 /debian/compizconfig-python-trinity | |
parent | 14e1aa2006796f147f3f4811fb908a6b01e79253 (diff) | |
download | extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.tar.gz extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.zip |
Added debian extra dependency packages.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'debian/compizconfig-python-trinity')
25 files changed, 2231 insertions, 0 deletions
diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/AUTHORS b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/AUTHORS new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/AUTHORS diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/COPYING b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/COPYING new file mode 100644 index 00000000..d60c31a9 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + 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 Library 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. + + 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. + + 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. + + 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. + + GNU GENERAL PUBLIC LICENSE + 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". + +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. + +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: + + 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. + + 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. + +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. + + 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, + + 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.) + +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. + + 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. + + 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. + +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. + +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. + + 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. + + 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 + + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +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. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 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. + + 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +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: + + 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. + +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. + + <signature of Ty Coon>, 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 Library General +Public License instead of this License. diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/ChangeLog b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/ChangeLog new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/ChangeLog diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/Makefile.am b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/Makefile.am new file mode 100644 index 00000000..b5275f75 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/Makefile.am @@ -0,0 +1,8 @@ +SUBDIRS = src + +EXTRA_DIST = \ + compizconfig-python.pc.in \ + VERSION + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = compizconfig-python.pc diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/NEWS b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/NEWS new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/NEWS diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/README b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/README new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/README diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/TODO b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/TODO new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/TODO diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/VERSION b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/VERSION new file mode 100644 index 00000000..e4184f46 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/VERSION @@ -0,0 +1 @@ +VERSION=0.8.4 diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/acinclude.m4 b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/acinclude.m4 new file mode 100644 index 00000000..7afdd152 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/acinclude.m4 @@ -0,0 +1,141 @@ +# Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +# 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, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# AM_PATH_PYTHON_VERSION(ABI-VERSION1, [MINIMUM-VERSION1 [, ABI-VERSION2, [MINIMUM-VERSION2 ...]]]) +# +# An alternative to AM_PATH_PYTHON that checks for specific python ABI/version pairs. +# Example: +# AM_PATH_PYTHON_VERSION(2.3, 2.3.5, 2.4, 2.4.0) +# checks for a python2.3 binary returning python version >= 2.3.5, and +# if that fails it looks for python2.4 containing version >= 2.4.0 +# It aborts configure with an error if no statisfying version is found. +# Env. var. PYTHON can be used to point a specific/laternate version to configure. + +AC_DEFUN([AM_PATH_PYTHON_VERSION], + [ + m4_pattern_allow([m4_shift]) + _python_save="$PYTHON" + dnl Find a Python interpreter with corresponding ABI version. + + m4_define(PYTHON_var, PYTHON[]m4_translit($1,[.],[_])) + + if test -z "$PYTHON"; then + AC_PATH_PROG(PYTHON_var, python$1, []) + else + PYTHON_var="$PYTHON" + fi + + PYTHON="$PYTHON_var" + AC_SUBST(PYTHON) + + if test -n "$PYTHON"; then + + m4_if([$2],[],[ + ], [ + dnl A version check is needed. + AC_MSG_CHECKING([whether $PYTHON version is >= $2]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$2], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT([no]); PYTHON=""]) + ]) + + fi + + if test -z "$PYTHON"; then + dnl if more arguments, shift/recurse, else fail + m4_if([$3],[],[ + AC_MSG_ERROR([no suitable Python interpreter found]) + ], [ + PYTHON="$_python_save" + AM_PATH_PYTHON_VERSION(m4_shift(m4_shift($@))) + ]) + + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; print sys.version[[:3]]"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; print sys.platform"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. distutils does not exist in + dnl Python 1.5, so we fall back to the hardcoded directory if it + dnl doesn't work. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [am_cv_python_pythondir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(0,0,prefix='$PYTHON_PREFIX')" 2>/dev/null || + echo "$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages"`]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. distutils does not exist in + dnl Python 1.5, so we fall back to the hardcoded directory if it + dnl doesn't work. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [am_cv_python_pyexecdir=`$PYTHON -c "from distutils import sysconfig; print sysconfig.get_python_lib(1,0,prefix='$PYTHON_EXEC_PREFIX')" 2>/dev/null || + echo "${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"`]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + fi + +dnl deduce PYTHON_INCLUDES +py_prefix=`$PYTHON -c "import sys; print sys.prefix"` +py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"` +PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}" +if test "$py_prefix" != "$py_exec_prefix"; then + PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}" +fi +AC_SUBST(PYTHON_INCLUDES) + +]) + diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/autogen.sh b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/autogen.sh new file mode 100755 index 00000000..8e9f14bd --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/autogen.sh @@ -0,0 +1,16 @@ +#! /bin/sh + +srcdir=`dirname $0` +test -z "$srcdir" && srcdir=. + +ORIGDIR=`pwd` +cd $srcdir + +autoreconf -v --install || exit 1 +#glib-gettextize --copy --force || exit 1 +#intltoolize --automake --copy --force || exit 1 + +cd $ORIGDIR || exit $? + +$srcdir/configure --enable-maintainer-mode "$@" + diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/compizconfig-python.pc.in b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/compizconfig-python.pc.in new file mode 100644 index 00000000..00d26420 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/compizconfig-python.pc.in @@ -0,0 +1,13 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +pyexecdir=@pyexecdir@ + +Name: compizconfig-python +Description: Compiz configuration system bindings +Version: @VERSION@ + +Requires: @CCS_REQUIRES@ +Libs: @CCS_LIBS@ -L@libdir@ -lcompizconfig +Cflags: @CCS_CFLAGS@ -I@includedir@/compizconfig diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/configure.ac b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/configure.ac new file mode 100644 index 00000000..27fd9823 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/configure.ac @@ -0,0 +1,46 @@ +AC_PREREQ(2.57) +AC_INIT([compizconfig-python],esyscmd(. ./VERSION;echo -n $VERSION), [livinglatexkali@gmail.com]) + +AM_INIT_AUTOMAKE([1.9 dist-bzip2]) +AC_CONFIG_HEADER([config.h]) +AM_MAINTAINER_MODE + +AC_ISC_POSIX +AC_PROG_CC +AC_PROG_CPP +AC_PROG_LIBTOOL +AC_HEADER_STDC + +CCS_REQUIRES="\ +libcompizconfig >= 0.6.99 \ +glib-2.0 >= 2.6 " + +PKG_CHECK_MODULES(CCS,$CCS_REQUIRES) + +AC_SUBST(CCS_REQUIRES) + +dnl PYTHON SPECIFIC + +m4_define(required_python_abi,2.4) + +AM_PATH_PYTHON +if test "$PYTHON_VERSION" = "2.4" +then + AM_PATH_PYTHON_VERSION(2.4,2.4.0) +else + AM_PATH_PYTHON_VERSION(2.5,2.5.0) +fi + +AC_CHECK_PROGS(PYREX, pyrexc) +if test -z "$PYREX" +then + AC_MSG_ERROR([Couldn't find Pyrex]) +fi + +AC_CONFIG_FILES([ + compizconfig-python.pc + Makefile + src/Makefile +]) + +AC_OUTPUT diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/changelog b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/changelog new file mode 100644 index 00000000..9a53ba55 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/changelog @@ -0,0 +1,175 @@ +compizconfig-python-trinity (0.8.4-3debian11.0.0+5~a) bullseye; urgency=low + + * Change debhelper compatibility level to 9 + * Replace python-dev dependency with python-all-dev or dh-python + + -- Slávek Banko <slavek.banko@axis.cz> Wed, 08 Apr 2020 01:30:38 +0200 + +compizconfig-python-trinity (0.8.4-3ubuntu20.04.0+4~a) focal; urgency=medium + + * Fixed FTBFS caused by __new__ method in Pyrex. + + -- Michele Calgaro <michele.calgaro@yahoo.it> Sun, 03 Sep 2017 23:54:11 +0900 + +compizconfig-python-trinity (0.8.4-3ubuntu17.04.0+3~a) zesty; urgency=low + + * Change debhelper compatibility level to 7 + + -- Slávek Banko <slavek.banko@axis.cz> Sat, 13 Aug 2016 18:53:28 +0200 + +compizconfig-python-trinity (0.8.4-3ubuntu16.10.0+2~a) yakkety; urgency=low + + * Rebuild without dependency on tdelibs / kdelibs + * Switch from dh_pycentral to dh_python2 + + -- Slávek Banko <slavek.banko@axis.cz> Mon, 05 Aug 2013 21:48:46 +0200 + +compizconfig-python-trinity (0.8.4-2debian8.0.0+0) jessie; urgency=low + + * Fix build with current Python + * Switch to format 3.0 (quilt) + * Switch to xz compression + + -- Slávek Banko <slavek.banko@axis.cz> Fri, 28 Jun 2013 04:25:30 +0200 + +compizconfig-python-trinity (0.8.4-0ubuntu2) maverick; urgency=low + + * Initial Lucid build + + -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Tue, 02 Mar 2010 20:33:00 -0600 + +compizconfig-python-trinity (0.8.4-0ubuntu0) karmic; urgency=low + + * Karmic rebuild + + -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Thu, 02 July 2009 16:08:00 -0600 + +compizconfig-python-trinity (0.7.4-0ubuntu11) jaunty; urgency=low + + * Jaunty rebuild against Python 2.6 + + -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Sun, 26 Apr 2009 13:35:00 -0600 + +compizconfig-python-trinity (0.7.4-0ubuntu9) intrepid; urgency=low + + * Moved KDE3 to /opt/trinity + * Integrated properly with KDE4.2+ + + -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Fri, 06 March 2009 01:35:00 -0600 + +compizconfig-python-trinity (0.7.4-0ubuntu5) intrepid; urgency=low + + * Added -trinity prefix + + -- Timothy Pearson <kb9vqf@pearsoncomputing.net> Mon, 01 Dec 2008 09:59:00 -0600 + +compizconfig-python (0.7.4-0ubuntu1) hardy; urgency=low + + * new upstream release + * build against latest libcompizconfig + + -- Michael Vogt <michael.vogt@ubuntu.com> Sat, 05 Apr 2008 13:06:16 +0200 + +compizconfig-python (0.7.2-0ubuntu1) hardy; urgency=low + + * new upstream release + * updated standards version + * updated section + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 07 Mar 2008 15:10:24 +0100 + +compizconfig-python (0.6.99+git20080214-0ubuntu1) hardy; urgency=low + + * new git snpashot to keep track of libcompizconfig changes + with regard to autosave + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 14 Feb 2008 17:08:45 +0100 + +compizconfig-python (0.6.99+git20071127-0ubuntu1) hardy; urgency=low + + * new git HEAD snapshot + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 05 Dec 2007 22:03:03 +0100 + +compizconfig-python (0.5.2+git20070912-0ubuntu1) gutsy; urgency=low + + * new 0.6 snapshot + * fixes profile reset + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 12 Sep 2007 19:41:17 +0200 + +compizconfig-python (0.5.2+git20070829-0ubuntu1) gutsy; urgency=low + + * updated to latest git 0.6.0 branch + + -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 29 Aug 2007 10:42:08 +0200 + +compizconfig-python (0.5.2-0ubuntu1) gutsy; urgency=low + + * update to the 0.5.2 releae + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 17 Aug 2007 10:41:18 +0200 + +compizconfig-python (0.0.0+git20070810-0ubuntu2) gutsy; urgency=low + + * Small fixes to packaging (LP #131035) + * debian/rules + - Fix packaging to actually call dh_pycentral + + Generates correct python dependencies + - Remove .a and .la files from package + * debian/control + - We only build a python2.5 package. Make this explicit. + + -- Christopher James Halse Rogers (RAOF) <chalserogers@gmail.com> Wed, 10 Aug 2007 17:56:56 +1000 + +compizconfig-python (0.0.0+git20070810-0ubuntu1) gutsy; urgency=low + + * new git snapshot + * b-d on latest libcompizconfig0-dev + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 10 Aug 2007 16:53:51 +0200 + +compizconfig-python (0.0.0+git20070712-0ubuntu1) gutsy; urgency=low + + * new git snapshot (for new compizconfig-settings-manager) + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 12 Jul 2007 09:55:34 +0100 + +compizconfig-python (0.0.0+git20070703-0ubuntu1) gutsy; urgency=low + + * new git snapshot + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 03 Jul 2007 16:47:16 +0200 + +compizconfig-python (0.0.0+git20070622-0ubuntu1) gutsy; urgency=low + + * new git snapshot + * renamed source package to compizconfig-python to match upstream + name + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 22 Jun 2007 09:01:16 +0200 + +compizconfig-bindings (0.0.0+git20070615-0ubuntu2) gutsy; urgency=low + + * fix FTBFS + + -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 19 Jun 2007 17:12:14 +0200 + +compizconfig-bindings (0.0.0+git20070615-0ubuntu1) gutsy; urgency=low + + * new git snapshot + + -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 15 Jun 2007 15:15:58 +0200 + +compizconfig-bindings (0.0.0+git20070613-0ubuntu2) gutsy; urgency=low + + * fix FTBFS by adding missing build-dependencies + + -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 14 Jun 2007 08:57:57 +0200 + +compizconfig-bindings (0.0.0+git20070613-0ubuntu1) gutsy; urgency=low + + * Initial upload of the package to Ubuntu + + -- Sebastien Bacher <seb128@canonical.com> Wed, 13 Jun 2007 15:59:31 +0200 + diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/compat b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/compat new file mode 100644 index 00000000..ec635144 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/control b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/control new file mode 100644 index 00000000..9ef2931f --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/control @@ -0,0 +1,17 @@ +Source: compizconfig-python-trinity +Section: deps-r14/python +Priority: extra +Maintainer: Timothy Pearson <kb9vqf@pearsoncomputing.net> +X-Python-Version: current +Build-Depends: cdbs, debhelper (>= 9~), quilt, autotools-dev, automake, libtool, libglib2.0-dev (>= 2.6), python-pyrex, libcompizconfig0-trinity-dev, python-all-dev (>= 2.3.5-11), python-support | dh-python, libxml2-dev, libxslt1-dev +Standards-Version: 3.7.3 + +Package: python-compizconfig-trinity +Architecture: any +X-Python-Version: ${python:Versions} +Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends} +Description: Compiz configuration system bindings [Trinity] + The OpenCompositing Project brings 3D desktop visual effects that improve + usability of the X Window System and provide increased productivity. + . + This package contains bindings for the compiz configuration system diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/copyright b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/copyright new file mode 100644 index 00000000..fb18e429 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/copyright @@ -0,0 +1,30 @@ +This package was debianized by Sebastien Bacher <seb128@canonical.com> on +Wed, 13 Jun 2007 15:59:31 +0200. + +It was downloaded from git://anongit.opencompositing.org/compcomm/compiz-configuration-system/bindings/ccs-python + +Upstream Author: Quinn Storm (quinn@beryl-project.org) + +Copyright: Copyright (C) 2007 Quinn Storm + +License: + + This package 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 package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2007, Sebastien Bacher <seb128@canonical.com> and +is licensed under the GPL, see above. diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/02_fix_new_method.diff b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/02_fix_new_method.diff new file mode 100644 index 00000000..2d1c795f --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/02_fix_new_method.diff @@ -0,0 +1,56 @@ +--- a/src/compizconfig.pyx ++++ b/src/compizconfig.pyx +@@ -583,7 +583,7 @@ cdef class Setting: + cdef object extendedStrRestrictions + cdef object baseStrRestrictions + +- def __new__ (self, Plugin plugin, name, isScreen, screenNum = 0): ++ def __cinit__ (self, Plugin plugin, name, isScreen, screenNum = 0): + cdef CCSSettingType t + cdef CCSSettingInfo * i + +@@ -689,7 +689,7 @@ cdef class SSGroup: + cdef object display + cdef object screens + +- def __new__ (self, disp, screen): ++ def __cinit__ (self, disp, screen): + self.display = disp + self.screens = screen + +@@ -715,7 +715,7 @@ cdef class Plugin: + cdef object ranking + cdef object hasExtendedString + +- def __new__ (self, Context context, name): ++ def __cinit__ (self, Context context, name): + self.ccsPlugin = ccsFindPlugin (context.ccsContext, name) + self.context = context + self.screens = [] +@@ -1056,7 +1056,7 @@ cdef class Profile: + cdef Context context + cdef char * name + +- def __new__ (self, Context context, name): ++ def __cinit__ (self, Context context, name): + self.context = context + self.name = strdup (name) + +@@ -1078,7 +1078,7 @@ cdef class Backend: + cdef Bool profileSupport + cdef Bool integrationSupport + +- def __new__ (self, Context context, info): ++ def __cinit__ (self, Context context, info): + self.context = context + self.name = strdup (info[0]) + self.shortDesc = strdup (info[1]) +@@ -1122,7 +1122,7 @@ cdef class Context: + cdef int nScreens + cdef Bool integration + +- def __new__ (self, screens = [0], plugins = [], basic_metadata = False): ++ def __cinit__ (self, screens = [0], plugins = [], basic_metadata = False): + cdef CCSPlugin * pl + cdef CCSList * pll + if basic_metadata: diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/kubuntu_01_configure.diff b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/kubuntu_01_configure.diff new file mode 100644 index 00000000..6a27f10a --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/kubuntu_01_configure.diff @@ -0,0 +1,15 @@ +Index: b/configure.ac +=================================================================== +--- a/configure.ac 2013-06-26 22:29:54.410840066 +0200 ++++ b/configure.ac 2013-06-26 22:30:48.763362173 +0200 +@@ -11,6 +11,10 @@ + AC_PROG_LIBTOOL + AC_HEADER_STDC + ++# Alter PKG_CONFIG_PATH to contain compiz pkgconfig directory ++export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/trinity/lib:/opt/trinity/lib/kde3 ++export PKG_CONFIG_PATH=/opt/trinity/lib/pkgconfig ++ + CCS_REQUIRES="\ + libcompizconfig >= 0.6.99 \ + glib-2.0 >= 2.6 " diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/series b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/series new file mode 100644 index 00000000..a832d111 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/patches/series @@ -0,0 +1,2 @@ +kubuntu_01_configure.diff +02_fix_new_method.diff diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/rules b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/rules new file mode 100755 index 00000000..36774c7a --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/rules @@ -0,0 +1,39 @@ +#!/usr/bin/make -f + +DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \ + && echo xz || echo bzip2) + +O_LD_PATH := $(LD_LIBRARY_PATH) +export LD_LIBRARY_PATH = $(O_LD_PATH):/opt/trinity/lib + +DEB_PYTHON_SYSTEM = $(if $(wildcard /usr/bin/dh_python2),,pysupport) +DH_PYTHON2 = $(if $(wildcard /usr/bin/dh_python2),dh_python2,dh_pysupport) + +DEB_CONFIGURE_EXTRA_FLAGS := --prefix=/opt/trinity --with-extra-libs=/opt/trinity/lib --with-extra-includes=/opt/trinity/include + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/autotools.mk + +DEB_CONFIGURE_INCLUDEDIR := /opt/trinity/include +DEB_CONFIGURE_MANDIR := /opt/trinity/share/man +DEB_CONFIGURE_PREFIX := /opt/trinity +DEB_CONFIGURE_INFODIR := /opt/trinity/share/info + +cdbs_configure_flags := --with-qt-dir=/usr/share/qt3 --disable-rpath --with-xinerama $(cdbs_kde_enable_final) $(cdbs_kde_enable_debug) + +makebuilddir:: debian/stamp-autoreconf +debian/stamp-autoreconf: + dh_testdir + autoreconf -vi + touch debian/stamp-autoreconf + +install/python-compizconfig-trinity:: +# mkdir -p debian/python-compizconfig-trinity/opt/trinity/lib/ +# cp -Rp debian/python-compizconfig-trinity/usr/lib/* debian/python-compizconfig-trinity/opt/trinity/lib/ +# rm -rf debian/python-compizconfig-trinity/usr/lib/ + # Why are static and libtool libraries even built? + rm debian/python-compizconfig-trinity/opt/trinity/lib/python*/site-packages/*.a + rm debian/python-compizconfig-trinity/opt/trinity/lib/python*/site-packages/*.la + +binary-install/python-compizconfig-trinity:: + ${DH_PYTHON2} diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/format b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/format new file mode 100644 index 00000000..163aaf8d --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/options b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/options new file mode 100644 index 00000000..72f1f545 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/debian/source/options @@ -0,0 +1,6 @@ +# Use xz instead of gzip +compression = "xz" +compression-level = 9 + +# Don't run differences +diff-ignore = .* diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/Makefile.am b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/Makefile.am new file mode 100644 index 00000000..2f792a95 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/Makefile.am @@ -0,0 +1,17 @@ +INCLUDES=\ + $(PYTHON_INCLUDES)\ + @CCS_CFLAGS@ + +compizconfig.c: compizconfig.pyx + -pyrexc compizconfig.pyx + +compizconfig_la_LDFLAGS = -module -avoid-version -fPIC -export-symbols-regex initcompizconfig -lX11 +compizconfig_la_LIBADD = @CCS_LIBS@ +compizconfig_la_SOURCES = compizconfig.c +compizconfigdir=$(pyexecdir) +compizconfig_LTLIBRARIES=compizconfig.la + +EXTRA_DIST=compizconfig.pyx + +clean-local: + rm -f compizconfig.c diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/compizconfig.pyx b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/compizconfig.pyx new file mode 100644 index 00000000..f8ab652c --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity-0.8.4/src/compizconfig.pyx @@ -0,0 +1,1307 @@ +''' +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser 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. + +You should have received a copy of the GNU Lesser 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. + +Authors: + Quinn Storm (quinn@beryl-project.org) + Patrick Niklaus (marex@opencompositing.org) + Guillaume Seguin (guillaume@segu.in) +Copyright (C) 2007 Quinn Storm +''' + +import operator +StringSettingKeyFunc = operator.itemgetter (1) + +ctypedef unsigned int Bool + +cdef enum CCSSettingType: + TypeBool + TypeInt + TypeFloat + TypeString + TypeColor + TypeAction + TypeKey + TypeButton + TypeEdge + TypeBell + TypeMatch + TypeList + TypeNum + +cdef enum CCSPluginConflictType: + # produced on plugin activation + ConflictRequiresPlugin, + ConflictRequiresFeature, + ConflictFeature, + ConflictPlugin, + # produced on plugin deactivation + ConflictFeatureNeeded, + ConflictPluginNeeded, + ConflictPluginError + +SettingTypeString = [ + "Bool", + "Int", + "Float", + "String", + "Color", + "Action", + "Key", + "Button", + "Edge", + "Bell", + "Match", + "List", + "Invalid" +] + +ConflictTypeString = [ + "RequiresPlugin", #A + "RequiresFeature", #A + "ConflictFeature", #A + "ConflictPlugin", #A + "FeatureNeeded", #D + "PluginNeeded", #D + "PluginError" +] + +cdef struct CCSList: + void * data + CCSList * next + +ctypedef CCSList CCSSettingList +ctypedef CCSList CCSPluginList +ctypedef CCSList CCSStringList +ctypedef CCSList CCSGroupList +ctypedef CCSList CCSSubGroupList +ctypedef CCSList CCSPluginConflictList +ctypedef CCSList CCSSettingValueList +ctypedef CCSList CCSBackendInfoList +ctypedef CCSList CCSIntDescList +ctypedef CCSList CCSStrRestrictionList +ctypedef CCSList CCSStrExtensionList + +cdef struct CCSBackendInfo: + char * name + char * shortDesc + char * longDesc + Bool integrationSupport + Bool profileSupport + +cdef struct CCSSettingKeyValue: + int keysym + unsigned int keyModMask + +cdef struct CCSSettingButtonValue: + int button + unsigned int buttonModMask + int edgeMask + +cdef struct CCSSettingColorValueColor: + unsigned short red + unsigned short green + unsigned short blue + unsigned short alpha + +cdef union CCSSettingColorValue: + CCSSettingColorValueColor color + unsigned short array[4] + +cdef union CCSSettingValueUnion: + Bool asBool + int asInt + float asFloat + char * asString + char * asMatch + CCSSettingColorValue asColor + CCSSettingValueList * asList + CCSSettingKeyValue asKey + CCSSettingButtonValue asButton + unsigned int asEdge + Bool asBell + +cdef struct CCSIntDesc: + int value + char * name + +cdef struct CCSStrRestriction: + char * value + char * name + +cdef struct CCSSettingIntInfo: + int min + int max + CCSIntDescList * desc + +cdef struct CCSSettingFloatInfo: + float min + float max + float precision + +cdef struct CCSSettingStringInfo: + CCSStrRestrictionList * restriction + int sortStartsAt + Bool extensible + +cdef struct CCSSettingListInfo: + CCSSettingType listType + void * listInfo # actually CCSSettingInfo *, works around pyrex + +cdef struct CCSSettingActionInfo: + Bool internal + +cdef union CCSSettingInfo: + CCSSettingIntInfo forInt + CCSSettingFloatInfo forFloat + CCSSettingStringInfo forString + CCSSettingListInfo forList + CCSSettingActionInfo forAction + +cdef struct CCSSettingValue: + CCSSettingValueUnion value + void * parent + Bool isListChild + +cdef struct CCSGroup: + char * name + CCSSubGroupList * subGroups + +cdef struct CCSSubGroup: + char * name + CCSSettingList * settings + +cdef struct CCSPluginCategory: + char * name + char * shortDesc + char * longDesc + CCSStringList * plugins + +cdef struct CCSContext: + CCSPluginList * plugins + CCSPluginCategory * categories + + void * priv + void * ccsPrivate + + CCSSettingList * changedSettings + + unsigned int * screens + unsigned int numScreens + +cdef struct CCSPlugin + +cdef struct CCSSetting: + char * name + char * shortDesc + char * longDesc + + CCSSettingType type + + Bool isScreen + unsigned int screenNum + + CCSSettingInfo info + char * group + char * subGroup + char * hints + + CCSSettingValue defaultValue + CCSSettingValue * value + Bool isDefault + + CCSPlugin * parent + void * priv + +cdef struct CCSStrExtension: + char * basePlugin + CCSSettingList * baseSettings + CCSStrRestrictionList * restriction + Bool isScreen + +cdef struct CCSPlugin: + char * name + char * shortDesc + char * longDesc + char * hints + char * category + + CCSStringList * loadAfter + CCSStringList * loadBefore + CCSStringList * requiresPlugin + CCSStringList * conflictPlugin + CCSStringList * conflictFeature + CCSStringList * providesFeature + CCSStringList * requiresFeature + + void * priv + CCSContext * context + void * ccsPrivate + +cdef struct CCSPluginConflict: + char * value + CCSPluginConflictType type + CCSPluginList * plugins + +'''Context functions''' +cdef extern void ccsSetBasicMetadata (Bool value) +cdef extern CCSContext * ccsContextNew (unsigned int * screens, + unsigned int numScreens) +cdef extern CCSContext * ccsEmptyContextNew (unsigned int * screens, + unsigned int numScreens) +cdef extern void ccsContextDestroy (CCSContext * context) + +'''Plugin functions''' +cdef extern Bool ccsLoadPlugin (CCSContext * context, char * name) +cdef extern CCSPlugin * ccsFindPlugin (CCSContext * context, char * name) +cdef extern CCSSetting * ccsFindSetting (CCSPlugin * plugin, + char * name, + Bool isScreen, + int screenNum) +cdef extern CCSSettingList * ccsGetPluginSettings (CCSPlugin * plugin) +cdef extern CCSGroupList * ccsGetPluginGroups (CCSPlugin * plugin) + +'''Action => String''' +cdef extern char * ccsModifiersToString (unsigned int modMask) +cdef extern char * ccsEdgesToString (unsigned int edge) +cdef extern char * ccsEdgesToModString (unsigned int edge) +cdef extern char * ccsKeyBindingToString (CCSSettingKeyValue *key) +cdef extern char * ccsButtonBindingToString (CCSSettingButtonValue *button) + +'''String utils''' +cdef extern from 'string.h': + ctypedef int size_t + cdef extern char * strdup (char * s) + cdef extern void memset (void * s, int c, size_t n) + cdef extern void free (void * f) + cdef extern void * malloc (size_t s) + +'''String => Action''' +cdef extern unsigned int ccsStringToModifiers (char *binding) +cdef extern unsigned int ccsStringToEdges (char *edge) +cdef extern unsigned int ccsModStringToEdges (char *edge) +cdef extern Bool ccsStringToKeyBinding (char * binding, + CCSSettingKeyValue * key) +cdef extern Bool ccsStringToButtonBinding (char * binding, + CCSSettingButtonValue * button) + +'''General settings handling''' +cdef extern Bool ccsSetValue (CCSSetting * setting, + CCSSettingValue * value) +cdef extern void ccsFreeSettingValue (CCSSettingValue * value) +cdef extern CCSSettingValueList * ccsSettingValueListAppend ( + CCSSettingValueList * l, + CCSSettingValue * v) +cdef extern CCSSettingList *ccsSettingListFree (CCSSettingList * list, + Bool freeObj) + +'''Profiles''' +cdef extern CCSStringList * ccsGetExistingProfiles (CCSContext * context) +cdef extern void ccsDeleteProfile (CCSContext * context, char * name) +cdef extern void ccsSetProfile (CCSContext * context, char * name) +cdef extern char* ccsGetProfile (CCSContext * context) + +'''Backends''' +cdef extern CCSBackendInfoList * ccsGetExistingBackends () +cdef extern Bool ccsSetBackend (CCSContext * context, char * name) +cdef extern char* ccsGetBackend (CCSContext * context) + +'''Sorting''' +cdef extern void ccsSetPluginListAutoSort (CCSContext *context, Bool value) +cdef extern Bool ccsGetPluginListAutoSort (CCSContext *context) + +'''Integration''' +cdef extern void ccsSetIntegrationEnabled (CCSContext * context, Bool value) +cdef extern Bool ccsGetIntegrationEnabled (CCSContext * context) + +'''IO handling''' +cdef extern void ccsReadSettings (CCSContext * c) +cdef extern void ccsWriteSettings (CCSContext * c) +cdef extern void ccsWriteChangedSettings (CCSContext * c) +cdef extern void ccsResetToDefault (CCSSetting * s) + +'''Event loop''' +ProcessEventsNoGlibMainLoopMask = (1 << 0) +cdef extern void ccsProcessEvents (CCSContext * context, unsigned int flags) + +'''Import/export''' +cdef extern Bool ccsExportToFile (CCSContext * context, char * fileName, Bool skipDefaults) +cdef extern Bool ccsImportFromFile (CCSContext * context, + char * fileName, + Bool overwrite) + +'''Misc. Plugin/Setting utils''' +cdef extern Bool ccsSettingIsReadOnly (CCSSetting * setting) +cdef extern Bool ccsSettingIsIntegrated (CCSSetting * setting) + +cdef extern void ccsPluginConflictListFree (CCSPluginConflictList * l, + Bool freeObj) +cdef extern CCSPluginConflictList * ccsCanEnablePlugin (CCSContext * c, + CCSPlugin * p) +cdef extern CCSPluginConflictList * ccsCanDisablePlugin (CCSContext * c, + CCSPlugin * p) + +cdef extern Bool ccsPluginSetActive (CCSPlugin * p, Bool v) +cdef extern Bool ccsPluginIsActive (CCSContext * c, char * n) + +cdef extern CCSStrExtensionList * ccsGetPluginStrExtensions (CCSPlugin * plugin) + +cdef class Context +cdef class Plugin +cdef class Setting + +cdef CCSSettingType GetType (CCSSettingValue * value): + if value.isListChild: + return (<CCSSetting *> value.parent).info.forList.listType + else: + return (<CCSSetting *> value.parent).type + +cdef CCSStringList * ListToStringList (object list): + if len (list) <= 0: + return NULL + + cdef CCSStringList * listStart + cdef CCSStringList * stringList + cdef CCSStringList * prev + listStart = <CCSStringList *> malloc (sizeof (CCSStringList)) + listStart.data = <char *> strdup (list[0]) + listStart.next = NULL + prev = listStart + + for l in list[1:]: + stringList = <CCSStringList *> malloc (sizeof (CCSStringList)) + stringList.data = <char *> strdup (l) + stringList.next = NULL + prev.next = stringList + prev = stringList + + return listStart + +cdef object StringListToList (CCSList * stringList): + list = [] + while stringList: + item = <char *> stringList.data + list.append (item) + stringList = stringList.next + return list + +cdef CCSSettingList * ListToSettingList (object list): + if len (list) <= 0: + return NULL + + cdef CCSSettingList * listStart + cdef CCSSettingList * settingList + cdef CCSSettingList * prev + cdef Setting setting + + listStart = <CCSSettingList *> malloc (sizeof (CCSSettingList)) + setting = <Setting> list[0] + listStart.data = <CCSSetting *> setting.ccsSetting + listStart.next = NULL + prev = listStart + + for l in list[1:]: + settingList = <CCSSettingList *> malloc (sizeof (CCSSettingList)) + setting = <Setting> l + settingList.data = <CCSSetting *> setting.ccsSetting + settingList.next = NULL + prev.next = settingList + prev = settingList + + return listStart + +cdef object SettingListToList (Context context, CCSList * settingList): + cdef CCSSetting * ccsSetting + list = [] + + while settingList: + ccsSetting = <CCSSetting *> settingList.data + setting = None + plugin = context.Plugins[ccsSetting.parent.name] + if ccsSetting.isScreen: + setting = plugin.Screens[ccsSetting.screenNum][ccsSetting.name] + else: + setting = plugin.Display[ccsSetting.name] + list.append (setting) + settingList = settingList.next + + return list + +cdef object IntDescListToDict (CCSIntDescList * intDescList): + cdef CCSIntDesc * desc + dict = {} + while intDescList: + desc = <CCSIntDesc *> intDescList.data + dict[desc.name] = desc.value + intDescList = intDescList.next + return dict + +cdef object StrRestrictionListToDict (CCSStrRestrictionList * restrictionList, + object initialDict): + cdef CCSStrRestriction * restriction + dict = initialDict + listOfAddedItems = [] + while restrictionList: + restriction = <CCSStrRestriction *> restrictionList.data + dict[restriction.name] = restriction.value + listOfAddedItems.append ((restriction.name, restriction.value)) + restrictionList = restrictionList.next + return (dict, listOfAddedItems) + +cdef CCSSettingValue * EncodeValue (object data, + CCSSetting * setting, + Bool isListChild): + cdef CCSSettingValue * bv + cdef CCSSettingType t + cdef CCSList * l + bv = <CCSSettingValue *> malloc (sizeof (CCSSettingValue)) + memset (bv, 0, sizeof (CCSSettingValue)) + bv.isListChild = isListChild + bv.parent = setting + if isListChild: + t = setting.info.forList.listType + else: + t = setting.type + if t == TypeString: + bv.value.asString = strdup (data) + elif t == TypeMatch: + bv.value.asMatch = strdup (data) + elif t == TypeInt: + bv.value.asInt = data + elif t == TypeFloat: + bv.value.asFloat = data + elif t == TypeBool: + if data: + bv.value.asBool = 1 + else: + bv.value.asBool = 0 + elif t == TypeColor: + bv.value.asColor.color.red = data[0] + bv.value.asColor.color.green = data[1] + bv.value.asColor.color.blue = data[2] + bv.value.asColor.color.alpha = data[3] + elif t == TypeKey: + ccsStringToKeyBinding (data, &bv.value.asKey) + elif t == TypeButton: + ccsStringToButtonBinding (data, &bv.value.asButton) + elif t == TypeEdge: + bv.value.asEdge = ccsStringToEdges (data) + elif t == TypeBell: + if (data): + bv.value.asBell = 1 + else: + bv.value.asBell = 0 + elif t == TypeList: + l = NULL + for item in data: + l = ccsSettingValueListAppend (l, EncodeValue (item, setting, 1)) + bv.value.asList = l + return bv + +cdef object DecodeValue (CCSSettingValue * value): + cdef CCSSettingType t + cdef char * s + cdef CCSList * l + cdef object cs + cdef object ks + cdef object bs + cdef object es + cdef object eb + t = GetType (value) + if t == TypeString: + return value.value.asString + elif t == TypeMatch: + return value.value.asMatch + elif t == TypeBool: + if value.value.asBool: + return True + return False + elif t == TypeInt: + return value.value.asInt + elif t == TypeFloat: + return value.value.asFloat + elif t == TypeColor: + return [value.value.asColor.color.red, + value.value.asColor.color.green, + value.value.asColor.color.blue, + value.value.asColor.color.alpha] + elif t == TypeKey: + s = ccsKeyBindingToString (&value.value.asKey) + if s != NULL: + ks = s + free (s) + else: + ks = "None" + return ks + elif t == TypeButton: + s = ccsButtonBindingToString (&value.value.asButton) + if s != NULL: + bs = s + free (s) + else: + bs = "None" + if bs == "Button0": + bs = "None" + return bs + elif t == TypeEdge: + s = ccsEdgesToString (value.value.asEdge) + if s != NULL: + es = s + free (s) + else: + es = "None" + return es + elif t == TypeBell: + bb = False + if value.value.asBell: + bb = True + return bb + elif t == TypeList: + lret = [] + l = value.value.asList + while l != NULL: + lret.append (DecodeValue (<CCSSettingValue *> l.data)) + l = l.next + return lret + return "Unhandled" + +cdef class Setting: + cdef CCSSetting * ccsSetting + cdef object info + cdef Plugin plugin + cdef object extendedStrRestrictions + cdef object baseStrRestrictions + + def __new__ (self, Plugin plugin, name, isScreen, screenNum = 0): + cdef CCSSettingType t + cdef CCSSettingInfo * i + + self.ccsSetting = ccsFindSetting (plugin.ccsPlugin, + name, isScreen, screenNum) + self.plugin = plugin + + self.extendedStrRestrictions = None + self.baseStrRestrictions = None + info = () + t = self.ccsSetting.type + i = &self.ccsSetting.info + if t == TypeList: + t = self.ccsSetting.info.forList.listType + i = <CCSSettingInfo *> self.ccsSetting.info.forList.listInfo + if t == TypeInt: + desc = IntDescListToDict (i.forInt.desc) + info = (i.forInt.min, i.forInt.max, desc) + elif t == TypeFloat: + info = (i.forFloat.min, i.forFloat.max, + i.forFloat.precision) + elif t == TypeString: + # info is filled later in Plugin.SortSingleStringSetting + info = ({}, {}, []) + self.baseStrRestrictions = [] + self.extendedStrRestrictions = {} + elif t in (TypeKey, TypeButton, TypeEdge, TypeBell): + info = (bool (i.forAction.internal),) + if self.ccsSetting.type == TypeList: + info = (SettingTypeString[t], info) + self.info = info + + def Reset (self): + ccsResetToDefault (self.ccsSetting) + + property Plugin: + def __get__ (self): + return self.plugin + + property Name: + def __get__ (self): + return self.ccsSetting.name + + property ShortDesc: + def __get__ (self): + return self.ccsSetting.shortDesc + + property LongDesc: + def __get__ (self): + return self.ccsSetting.longDesc + + property Group: + def __get__ (self): + return self.ccsSetting.group + + property SubGroup: + def __get__ (self): + return self.ccsSetting.subGroup + + property Type: + def __get__ (self): + return SettingTypeString[self.ccsSetting.type] + + property Info: + def __get__ (self): + return self.info + + property Hints: + def __get__ (self): + if self.ccsSetting.hints == '': + return [] + else: + return str (self.ccsSetting.hints).split (";")[:-1] + + property IsDefault: + def __get__ (self): + if self.ccsSetting.isDefault: + return True + return False + + property DefaultValue: + def __get__ (self): + return DecodeValue (&self.ccsSetting.defaultValue) + + property Value: + def __get__ (self): + return DecodeValue (self.ccsSetting.value) + def __set__ (self, value): + cdef CCSSettingValue * sv + sv = EncodeValue (value, self.ccsSetting, 0) + ccsSetValue (self.ccsSetting, sv) + ccsFreeSettingValue (sv) + + property Integrated: + def __get__ (self): + return bool (ccsSettingIsIntegrated (self.ccsSetting)) + + property ReadOnly: + def __get__ (self): + return bool (ccsSettingIsReadOnly (self.ccsSetting)) + +cdef class SSGroup: + cdef object display + cdef object screens + + def __new__ (self, disp, screen): + self.display = disp + self.screens = screen + + property Display: + def __get__ (self): + return self.display + def __set__ (self, value): + self.display = value + + property Screens: + def __get__ (self): + return self.screens + def __set__ (self, value): + self.screens = value + +cdef class Plugin: + cdef CCSPlugin * ccsPlugin + cdef Context context + cdef object screens + cdef object display + cdef object groups + cdef object loaded + cdef object ranking + cdef object hasExtendedString + + def __new__ (self, Context context, name): + self.ccsPlugin = ccsFindPlugin (context.ccsContext, name) + self.context = context + self.screens = [] + self.display = {} + self.groups = {} + self.loaded = False + self.ranking = {} + self.hasExtendedString = False + + for n in range (0, context.NScreens): + self.screens.append ({}) + + def Update (self): + cdef CCSList * setlist + cdef CCSList * glist + cdef CCSList * sglist + cdef CCSSetting * sett + cdef CCSGroup * gr + cdef CCSSubGroup * sgr + cdef CCSSettingType t + cdef CCSSettingInfo * i + + groupIndex = 0 + glist = ccsGetPluginGroups (self.ccsPlugin) + while glist != NULL: + gr = <CCSGroup *> glist.data + self.groups[gr.name] = (groupIndex, {}) + subGroupIndex = 0 + sglist = gr.subGroups + while sglist != NULL: + sgr = <CCSSubGroup *> sglist.data + scr = [] + for n in range (0, self.context.NScreens): + scr.append ({}) + self.groups[gr.name][1][sgr.name] = (subGroupIndex, + SSGroup ({}, scr)) + subGroupIndex = subGroupIndex + 1 + sglist = sglist.next + groupIndex = groupIndex + 1 + glist = glist.next + setlist = ccsGetPluginSettings (self.ccsPlugin) + + self.hasExtendedString = False + rank = 0 + while setlist != NULL: + sett = <CCSSetting *> setlist.data + + subgroup = self.groups[sett.group][1][sett.subGroup][1] + + if sett.isScreen: + setting = Setting (self, sett.name, True, sett.screenNum) + self.screens[sett.screenNum][sett.name] = setting + subgroup.Screens[sett.screenNum][sett.name] = setting + else: + setting = Setting (self, sett.name, False) + self.display[sett.name] = setting + subgroup.Display[sett.name] = setting + + t = sett.type + i = &sett.info + if t == TypeList: + t = i.forList.listType + i = <CCSSettingInfo *> i.forList.listInfo + if t == TypeString and i.forString.extensible: + self.hasExtendedString = True + + if not self.ranking.has_key (sett.name): + self.ranking[sett.name] = rank + rank = rank + 1 + + setlist = setlist.next + + self.loaded = True + + self.ApplyStringExtensions (True, self.Enabled) + self.SortStringSettings () + + def SortStringSettings (self): + for i in xrange (self.context.nScreens): + for name, setting in self.Screens[i].items (): + self.SortSingleStringSetting (setting) + for name, setting in self.Display.items (): + self.SortSingleStringSetting (setting) + + def SortSingleStringSetting (self, Setting setting): + cdef CCSSettingType t + cdef CCSSettingInfo * i + + t = setting.ccsSetting.type + i = &setting.ccsSetting.info + if t == TypeList: + t = i.forList.listType + i = <CCSSettingInfo *> i.forList.listInfo + if t != TypeString: + return + + (itemsByName, listOfAddedItems) = \ + StrRestrictionListToDict (i.forString.restriction, + setting.extendedStrRestrictions) + + # Let base string restrictions be the ones given in the option metadata + # in the base plugin plus the ones found in the extensions in the same + # plugin. + setting.baseStrRestrictions = \ + listOfAddedItems + setting.baseStrRestrictions + + if i.forString.sortStartsAt < 0: + # don't sort + sortedItems = itemsByName.items () + elif i.forString.sortStartsAt == 0: + # Sort all items by value + sortedItems = sorted (itemsByName.items (), + key=StringSettingKeyFunc) + else: + # Sort first sortStartsAt many items by value and + # the remaining ones by name + itemsNotSorted = \ + setting.baseStrRestrictions[:i.forString.sortStartsAt] + itemsNotSortedSet = set (itemsNotSorted) + allItemsSet = set (itemsByName.items ()) + itemsSortedByName = sorted (list (allItemsSet - itemsNotSortedSet), + key=operator.itemgetter (0)) + sortedItems = itemsNotSorted + itemsSortedByName + + itemsByValue = {} + for (index, (name, value)) in enumerate (sortedItems): + itemsByValue[value] = (name, index) + + # Insert itemsByName and sortedItems into setting.info + if setting.ccsSetting.type == TypeList: + setting.info = (setting.info[0], (itemsByName, + itemsByValue, + sortedItems)) + else: + setting.info = (itemsByName, itemsByValue, sortedItems) + + def ApplyStringExtensions (self, sortBaseSetting, extendOthersToo): + cdef CCSStrExtensionList * extList + cdef CCSStrExtension * ext + cdef char * baseSettingName + cdef CCSStringList * baseSettingList + cdef CCSSettingType t + cdef CCSSettingInfo * i + cdef CCSStrRestrictionList * restrictionList + cdef CCSStrRestriction * restriction + cdef Plugin basePlugin + cdef Setting setting + + extList = ccsGetPluginStrExtensions (self.ccsPlugin) + while extList: + ext = <CCSStrExtension *> extList.data + + # If not extending others and extension base is not self, skip + if (not (extendOthersToo or ext.basePlugin == self.Name)) or \ + ext.basePlugin not in self.context.Plugins: + extList = extList.next + continue + + basePlugin = self.context.Plugins[ext.basePlugin] + + baseSettingList = ext.baseSettings + while baseSettingList: + baseSettingName = <char *> baseSettingList.data + + if ext.isScreen: + settings = [] + for x in xrange (self.context.nScreens): + settings.append (basePlugin.Screens[x][baseSettingName]) + else: + settings = [basePlugin.Display[baseSettingName]] + + for settingItem in settings: + setting = settingItem + t = setting.ccsSetting.type + i = &setting.ccsSetting.info + if t == TypeList: + t = i.forList.listType + i = <CCSSettingInfo *> i.forList.listInfo + if not (t == TypeString and i.forString.extensible): + return + + restrictionList = ext.restriction + + # Add each item in restriction list to the setting + while restrictionList != NULL: + restriction = <CCSStrRestriction *> restrictionList.data + setting.extendedStrRestrictions[restriction.name] = \ + restriction.value + if ext.basePlugin == self.Name: + setting.baseStrRestrictions.append ((restriction.name, + restriction.value)) + restrictionList = restrictionList.next + + if sortBaseSetting: + basePlugin.SortSingleStringSetting (setting) + + baseSettingList = baseSettingList.next + + extList = extList.next + + def GetExtensionBasePlugins (self): + cdef CCSStrExtensionList * extList + cdef CCSStrExtension * ext + + basePlugins = set ([]) + extList = ccsGetPluginStrExtensions (self.ccsPlugin) + while extList: + ext = <CCSStrExtension *> extList.data + basePlugins.add (self.context.Plugins[ext.basePlugin]) + extList = extList.next + + return list (basePlugins) + + property Context: + def __get__ (self): + return self.context + + property Groups: + def __get__ (self): + if not self.loaded: + self.Update () + return self.groups + + property Display: + def __get__ (self): + if not self.loaded: + self.Update () + return self.display + + property Screens: + def __get__ (self): + if not self.loaded: + self.Update () + return self.screens + + property Ranking: + def __get__ (self): + if not self.loaded: + self.Update () + return self.ranking + + property Name: + def __get__ (self): + return self.ccsPlugin.name + + property ShortDesc: + def __get__ (self): + return self.ccsPlugin.shortDesc + + property LongDesc: + def __get__ (self): + return self.ccsPlugin.longDesc + + property Category: + def __get__ (self): + return self.ccsPlugin.category + + property Features: + def __get__ (self): + features = StringListToList (self.ccsPlugin.providesFeature) + return features + + property Initialized: + def __get__ (self): + return bool (self.loaded) + + property Enabled: + def __get__ (self): + return bool (ccsPluginIsActive (self.context.ccsContext, + self.ccsPlugin.name)) + def __set__ (self, val): + if val: + if len (self.EnableConflicts): + return + ccsPluginSetActive (self.ccsPlugin, True) + else: + if len (self.DisableConflicts): + return + ccsPluginSetActive (self.ccsPlugin, False) + + property EnableConflicts: + def __get__ (self): + cdef CCSPluginConflictList * pl, * pls + cdef CCSPluginConflict * pc + cdef CCSPluginList * ppl + cdef CCSPlugin * plg + + if self.Enabled: + return [] + + ret = [] + pl = ccsCanEnablePlugin (self.context.ccsContext, + self.ccsPlugin) + pls = pl + while pls != NULL: + pc = <CCSPluginConflict *> pls.data + rpl = [] + ppl = pc.plugins + while ppl != NULL: + plg = <CCSPlugin *> ppl.data + rpl.append (self.context.Plugins[plg.name]) + ppl = ppl.next + ret.append ((ConflictTypeString[pc.type], pc.value, rpl)) + pls = pls.next + if pl != NULL: + ccsPluginConflictListFree (pl, True) + return ret + + property DisableConflicts: + def __get__ (self): + cdef CCSPluginConflictList * pl, * pls + cdef CCSPluginConflict * pc + cdef CCSPluginList * ppl + cdef CCSPlugin * plg + + if not self.Enabled: + return [] + + ret = [] + pl = ccsCanDisablePlugin (self.context.ccsContext, + self.ccsPlugin) + pls = pl + while pls != NULL: + pc = <CCSPluginConflict *> pls.data + rpl = [] + ppl = pc.plugins + while ppl != NULL: + plg = <CCSPlugin *> ppl.data + rpl.append (self.context.Plugins[plg.name]) + ppl = ppl.next + ret.append ((ConflictTypeString[pc.type], pc.value, rpl)) + pls = pls.next + if pl != NULL: + ccsPluginConflictListFree (pl, True) + return ret + +cdef class Profile: + cdef Context context + cdef char * name + + def __new__ (self, Context context, name): + self.context = context + self.name = strdup (name) + + def __dealloc (self): + free (self.name) + + def Delete (self): + ccsDeleteProfile (self.context.ccsContext, self.name) + + property Name: + def __get__ (self): + return self.name + +cdef class Backend: + cdef Context context + cdef char * name + cdef char * shortDesc + cdef char * longDesc + cdef Bool profileSupport + cdef Bool integrationSupport + + def __new__ (self, Context context, info): + self.context = context + self.name = strdup (info[0]) + self.shortDesc = strdup (info[1]) + self.longDesc = strdup (info[2]) + self.profileSupport = bool (info[3]) + self.integrationSupport = bool (info[4]) + + def __dealloc__ (self): + free (self.name) + free (self.shortDesc) + free (self.longDesc) + + property Name: + def __get__ (self): + return self.name + + property ShortDesc: + def __get__ (self): + return self.shortDesc + + property LongDesc: + def __get__ (self): + return self.longDesc + + property IntegrationSupport: + def __get__ (self): + return self.integrationSupport + + property ProfileSupport: + def __get__ (self): + return self.profileSupport + +cdef class Context: + cdef CCSContext * ccsContext + cdef object plugins + cdef object categories + cdef object profiles + cdef object currentProfile + cdef object backends + cdef object currentBackend + cdef int nScreens + cdef Bool integration + + def __new__ (self, screens = [0], plugins = [], basic_metadata = False): + cdef CCSPlugin * pl + cdef CCSList * pll + if basic_metadata: + ccsSetBasicMetadata (True) + self.nScreens = nScreens = len (screens) + self.plugins = {} + cdef unsigned int * screensBuf + screensBuf = <unsigned int *> malloc (sizeof (unsigned int) * nScreens) + for i in range (nScreens): + screensBuf[i] = screens[i] + if not len (plugins): + self.ccsContext = ccsContextNew (screensBuf, nScreens) + else: + self.ccsContext = ccsEmptyContextNew (screensBuf, nScreens) + free (screensBuf) + + for plugin in plugins: + self.LoadPlugin (plugin) + + ccsReadSettings (self.ccsContext) + pll = self.ccsContext.plugins + self.categories = {} + while pll != NULL: + pl = <CCSPlugin *> pll.data + self.plugins[pl.name] = Plugin (self, pl.name) + if pl.category == NULL: + cat = '' + else: + cat = pl.category + if not self.categories.has_key (cat): + self.categories[cat] = [] + self.categories[cat].append (self.plugins[pl.name]) + pll = pll.next + + self.integration = ccsGetIntegrationEnabled (self.ccsContext) + + self.UpdateProfiles () + + def UpdateExtensiblePlugins (self): + cdef Plugin plugin + + # Reset all extensible plugins + for name, pluginItem in self.plugins.items (): + plugin = pluginItem + if plugin.hasExtendedString: + plugin.Update () + + # Apply restricted string extensions + for name, pluginItem in self.plugins.items (): + plugin = pluginItem + if plugin.Enabled: + plugin.ApplyStringExtensions (False, True) + + # Sort restricted string settings + for name, pluginItem in self.plugins.items (): + plugin = pluginItem + if plugin.Enabled and plugin.hasExtendedString: + plugin.SortStringSettings () + + def __dealloc__ (self): + ccsContextDestroy (self.ccsContext) + + def LoadPlugin (self, plugin): + return ccsLoadPlugin (self.ccsContext, plugin) + + # Returns the settings that should be updated + def ProcessEvents (self, flags = 0): + ccsProcessEvents (self.ccsContext, flags) + if len (self.ChangedSettings): + self.Read () + return True + return False + + def Write (self, onlyChanged = True): + if onlyChanged: + ccsWriteChangedSettings (self.ccsContext) + else: + ccsWriteSettings (self.ccsContext) + + def Read (self): + ccsReadSettings (self.ccsContext) + + def UpdateProfiles (self): + self.profiles = {} + self.currentProfile = Profile (self, ccsGetProfile (self.ccsContext)) + cdef CCSStringList * profileList + cdef char * profileName + profileList = ccsGetExistingProfiles (self.ccsContext) + while profileList != NULL: + profileName = <char *> profileList.data + self.profiles[profileName] = Profile (self, profileName) + profileList = profileList.next + + self.backends = {} + cdef CCSBackendInfoList * backendList + cdef CCSBackendInfo * backendInfo + backendList = ccsGetExistingBackends () + while backendList != NULL: + backendInfo = <CCSBackendInfo *> backendList.data + info = (backendInfo.name, backendInfo.shortDesc, + backendInfo.longDesc, backendInfo.profileSupport, + backendInfo.integrationSupport) + self.backends[backendInfo.name] = Backend (self, info) + backendList = backendList.next + self.currentBackend = self.backends[ccsGetBackend (self.ccsContext)] + + def ResetProfile (self): + self.currentProfile = Profile (self, "") + ccsSetProfile (self.ccsContext, "") + ccsReadSettings (self.ccsContext) + + def Import (self, path, autoSave = True): + ret = bool (ccsImportFromFile (self.ccsContext, path, True)) + if autoSave: + ccsWriteSettings (self.ccsContext) + return ret + + def Export (self, path, skipDefaults = False): + return bool (ccsExportToFile (self.ccsContext, path, skipDefaults)) + + property Plugins: + def __get__ (self): + return self.plugins + + property Categories: + def __get__ (self): + return self.categories + + property CurrentProfile: + def __get__ (self): + return self.currentProfile + def __set__ (self, profile): + self.currentProfile = profile + ccsSetProfile (self.ccsContext, profile.Name) + ccsReadSettings (self.ccsContext) + + property Profiles: + def __get__ (self): + return self.profiles + + property CurrentBackend: + def __get__ (self): + return self.currentBackend + def __set__ (self, backend): + self.currentBackend = backend + ccsSetBackend (self.ccsContext, backend.Name) + ccsReadSettings (self.ccsContext) + + property Backends: + def __get__ (self): + return self.backends + + property ChangedSettings: + def __get__ (self): + return SettingListToList (self, self.ccsContext.changedSettings) + def __set__ (self, value): + cdef CCSSettingList * settingList + if self.ccsContext.changedSettings != NULL: + self.ccsContext.changedSettings = \ + ccsSettingListFree (self.ccsContext.changedSettings, False) + if value != None and len (value) != 0: + settingList = ListToSettingList (value) + self.ccsContext.changedSettings = settingList + + property AutoSort: + def __get__ (self): + return bool (ccsGetPluginListAutoSort (self.ccsContext)) + def __set__ (self, value): + ccsSetPluginListAutoSort (self.ccsContext, bool (value)) + + property NScreens: + def __get__ (self): + return self.nScreens + + property Integration: + def __get__ (self): + return bool (self.integration) + def __set__ (self, value): + self.integration = value + ccsSetIntegrationEnabled (self.ccsContext, value) + ccsReadSettings (self.ccsContext) + diff --git a/debian/compizconfig-python-trinity/compizconfig-python-trinity_0.8.4.orig.tar.xz b/debian/compizconfig-python-trinity/compizconfig-python-trinity_0.8.4.orig.tar.xz Binary files differnew file mode 100644 index 00000000..2c178e16 --- /dev/null +++ b/debian/compizconfig-python-trinity/compizconfig-python-trinity_0.8.4.orig.tar.xz |