[Mageia-sysadm] [460] Import cleaned xsettings-kde
root at mageia.org
root at mageia.org
Mon Feb 7 10:12:05 CET 2011
Revision: 460
Author: dmorgan
Date: 2011-02-07 10:11:39 +0100 (Mon, 07 Feb 2011)
Log Message:
-----------
Import cleaned xsettings-kde
Added Paths:
-----------
theme/xsettings-kde/
theme/xsettings-kde/trunk/
theme/xsettings-kde/trunk/.cvsignore
theme/xsettings-kde/trunk/.gitignore
theme/xsettings-kde/trunk/COPYING
theme/xsettings-kde/trunk/ChangeLog
theme/xsettings-kde/trunk/Makefile
theme/xsettings-kde/trunk/README
theme/xsettings-kde/trunk/xsettings-common.c
theme/xsettings-kde/trunk/xsettings-common.h
theme/xsettings-kde/trunk/xsettings-kde.c
theme/xsettings-kde/trunk/xsettings-manager.c
theme/xsettings-kde/trunk/xsettings-manager.h
Added: theme/xsettings-kde/trunk/.cvsignore
===================================================================
--- theme/xsettings-kde/trunk/.cvsignore (rev 0)
+++ theme/xsettings-kde/trunk/.cvsignore 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1 @@
+*.swp
Added: theme/xsettings-kde/trunk/.gitignore
===================================================================
--- theme/xsettings-kde/trunk/.gitignore (rev 0)
+++ theme/xsettings-kde/trunk/.gitignore 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,3 @@
+*.o
+xsettings-kde
+*.patch
Added: theme/xsettings-kde/trunk/COPYING
===================================================================
--- theme/xsettings-kde/trunk/COPYING (rev 0)
+++ theme/xsettings-kde/trunk/COPYING 2011-02-07 09:11:39 UTC (rev 460)
@@ -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.
Added: theme/xsettings-kde/trunk/ChangeLog
===================================================================
--- theme/xsettings-kde/trunk/ChangeLog (rev 0)
+++ theme/xsettings-kde/trunk/ChangeLog 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,391 @@
+2009-08-19 10:01 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Release 0.11
+
+2009-08-19 10:01 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Fix detection for Ia Ora-kde
+
+2009-03-26 17:07 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 06:07:56 PM
+ CET
+
+2009-03-26 17:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 06:04:21 PM
+ CET
+
+2009-03-26 17:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Fix build when CFLAGS is redefined
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 05:38:50 PM
+ CET
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.10
+
+2009-03-26 17:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 06:04:21 PM
+ CET
+
+2009-03-26 17:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Fix build when CFLAGS is redefined
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 05:38:50 PM
+ CET
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.10
+
+2009-03-26 17:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Fix build when CFLAGS is redefined
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Thu 26 Mar 2009 05:38:50 PM
+ CET
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.10
+
+2009-03-26 16:38 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.10
+
+2009-02-11 14:21 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Use pkg-config for x11 too
+
+2009-02-11 14:15 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: use a thread instead of a timer
+
+2009-02-11 14:15 Frederic Crozat <fcrozat at mandriva.com>
+
+ * .gitignore: Add .gitignore file
+
+2009-02-03 13:32 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: drop DPI settings if they're not set in KDE
+
+ Setting them to 0 or -1 sets them to 96dpi instead of the actual
+ dpi
+ setting since gdk doesn't reprobe this. So intead of adding the
+ whole
+ logic simply fall back to what gdk probed during application
+ startup.
+
+2009-02-03 13:32 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Show icons in buttons when running under KDE4
+
+2009-02-03 13:32 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: use glib event loop
+
+2008-09-29 17:45 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Mon 29 Sep 2008 07:45:17 PM
+ CEST
+
+2008-09-29 17:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Mon 29 Sep 2008 07:44:36 PM
+ CEST
+
+2008-09-29 17:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: - Release 0.9 : fix color scheme
+ support for KDE4
+
+2008-09-29 17:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Mon 29 Sep 2008 07:44:36 PM
+ CEST
+
+2008-09-29 17:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: - Release 0.9 : fix color scheme
+ support for KDE4
+
+2008-09-29 17:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: - Release 0.9 : fix color scheme
+ support for KDE4
+
+2008-09-05 16:59 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Fri 05 Sep 2008 06:59:41 PM
+ CEST
+
+2008-09-05 16:59 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.8
+
+2008-09-05 16:59 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: - Add support for DPI, change fileselector
+ backend to gio
+
+2008-09-05 16:58 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: - Add KDE4 support
+
+2008-09-05 16:59 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: - Release 0.8
+
+2008-09-05 16:59 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: - Add support for DPI, change fileselector
+ backend to gio
+
+2008-09-05 16:58 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: - Add KDE4 support
+
+2008-02-08 17:21 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: - Release 0.7
+ - don't set theme name in XSettings if KDE has set it itself
+ - fix memleak
+
+2007-09-26 12:42 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Wed 26 Sep 2007 02:42:28 PM
+ CEST
+
+2007-09-26 12:41 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: Release 0.6
+ - Failover correctly when some configuration files are missing
+
+2007-09-26 12:41 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: Release 0.6
+ - Failover correctly when some configuration files are missing
+
+2007-09-21 16:47 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Use correct svnroot
+
+2007-09-21 16:45 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Fri 21 Sep 2007 06:45:10 PM
+ CEST
+
+2007-09-21 16:45 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Add svnroot
+
+2007-09-21 16:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Fri 21 Sep 2007 06:44:24 PM
+ CEST
+
+2007-09-21 16:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix typo
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix support for SVN
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Fix support for multiple profiles
+
+2007-09-21 16:45 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Add svnroot
+
+2007-09-21 16:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * ChangeLog: Generated by svn2cl the Fri 21 Sep 2007 06:44:24 PM
+ CEST
+
+2007-09-21 16:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix typo
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix support for SVN
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Fix support for multiple profiles
+
+2007-09-21 16:44 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix typo
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix support for SVN
+
+2007-09-21 16:43 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Fix support for multiple profiles
+
+2007-09-17 16:59 Olivier Blin <oblin at mandriva.com>
+
+ * : move xsettings-kde in theme
+
+2006-09-13 17:03 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 13_Sep
+
+2006-09-13 17:02 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Don't apply theme if ~/.gtkrc-2.0 exists
+
+2006-09-13 16:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 13_Sep
+
+2006-09-13 16:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : 2006-09-13 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile:
+ Release 0.4
+ X11 libs are in libdir now
+
+ * xsettings-kde.c: (readConfig):
+ change theme according to color scheme for Ia Ora,
+ fix theme detection
+ support kde profile
+
+2006-03-06 17:14 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 06_Mar
+
+2006-03-06 17:14 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : * Makefile: Release 0.3
+ * xsettings-kde.c: (initial_init):
+ Add support for Net/FallbackIconTheme (Mdk bug #19441)
+
+2005-08-25 16:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 25_Aug
+
+2005-08-25 16:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Fix typo
+
+2005-08-25 16:21 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 25_Aug
+
+2005-08-25 16:21 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Release 0.2
+
+2005-08-25 16:20 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Set GTK file selection backend to gnome-vfs one.
+
+2005-07-27 08:04 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 27_jui
+
+2005-07-27 08:03 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Multiscreen support
+
+2005-07-27 07:15 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 27_jui
+
+2005-07-27 07:15 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : add license and README
+
+2005-07-27 07:00 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Generated by cvs2cl the 27_jui
+
+2005-07-27 06:56 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Fix make dist/distcheck
+
+2005-07-27 06:54 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : initial import
+
+2005-07-27 06:53 Frederic Crozat <fcrozat at mandriva.com>
+
+ * : Initial import
+
+2005-07-27 06:53
+
+ * : New repository initialized by cvs2svn.
+
+2006-09-13 19:02 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Don't apply theme if ~/.gtkrc-2.0 exists
+
+2006-09-13 18:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: 2006-09-13 Frederic Crozat
+ <fcrozat at mandriva.com>
+
+ * Makefile:
+ Release 0.4
+ X11 libs are in libdir now
+
+ * xsettings-kde.c: (readConfig):
+ change theme according to color scheme for Ia Ora,
+ fix theme detection
+ support kde profile
+
+2006-03-06 18:14 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile, xsettings-kde.c: * Makefile: Release 0.3
+ * xsettings-kde.c: (initial_init):
+ Add support for Net/FallbackIconTheme (Mdk bug #19441)
+
+2005-08-25 18:35 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Fix typo
+
+2005-08-25 18:21 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Release 0.2
+
+2005-08-25 18:20 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Set GTK file selection backend to gnome-vfs one.
+
+2005-07-27 10:03 Frederic Crozat <fcrozat at mandriva.com>
+
+ * xsettings-kde.c: Multiscreen support
+
+2005-07-27 09:15 Frederic Crozat <fcrozat at mandriva.com>
+
+ * COPYING, README: add license and README
+
+2005-07-27 08:56 Frederic Crozat <fcrozat at mandriva.com>
+
+ * Makefile: Fix make dist/distcheck
+
+2005-07-27 08:53 Frederic Crozat <fcrozat at mandriva.com>
+
+ * .cvsignore, Makefile, xsettings-common.c, xsettings-common.h,
+ xsettings-kde.c, xsettings-manager.c, xsettings-manager.h:
+ Initial import
+
Added: theme/xsettings-kde/trunk/Makefile
===================================================================
--- theme/xsettings-kde/trunk/Makefile (rev 0)
+++ theme/xsettings-kde/trunk/Makefile 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,50 @@
+PACKAGE=xsettings-kde
+VERSION=0.11
+lib=lib
+TAG := $(shell echo "V$(VERSION)_$(RELEASE)" | tr -- '-.' '__')
+SVNROOT = svn+ssh://svn.mageia.org/svn/soft/theme/$(PACKAGE)
+
+CFLAGS= -Wall -g
+xsettings_kde_CFLAGS = $(shell pkg-config --cflags x11 gio-2.0 gthread-2.0)
+
+xsettings_kde_LDFLAGS = $(shell pkg-config --libs x11 gio-2.0 gthread-2.0)
+
+manager_objects_CFLAGS = $(shell pkg-config --cflags x11 gio-2.0 gthread-2.0)
+manager_objects = xsettings-kde.o xsettings-common.o xsettings-manager.o
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(xsettings_kde_CFLAGS) $< -o $@
+
+all: xsettings-kde
+
+xsettings-kde: $(manager_objects)
+ $(CC) -o $@ $(manager_objects) $(LDFLAGS) $(xsettings_kde_LDFLAGS)
+
+changelog:
+ svn2cl --authors ../common/username.xml --accum
+ rm -f ChangeLog.bak
+ svn commit -m "Generated by svn2cl the `date '+%c'`" ChangeLog
+
+clean:
+ rm -f *.o xsettings-kde
+
+checktag:
+ @if [ "x$(VERSION)" == "x" -o "x$(RELEASE)" = "x" ]; then \
+ echo usage is "make VERSION=version_number RELEASE=release_number dist" ; \
+ exit 1 ; \
+ fi
+
+dist: checktag changelog
+ svn copy $(SVNROOT)/trunk $(SVNROOT)/tags/$(TAG) -m "$(TAG)"
+ svn export $(SVNROOT)/tags/$(TAG) $(PACKAGE)-$(VERSION)
+ tar cvf $(PACKAGE)-$(VERSION).tar $(PACKAGE)-$(VERSION)
+ bzip2 -9vf $(PACKAGE)-$(VERSION).tar
+ rm -rf $(PACKAGE)-$(VERSION)
+
+distcheck: dist
+ distdir=$(PACKAGE)-$(VERSION) ; \
+ tar xvfj $$distdir.tar.bz2 && \
+ cd $$distdir && \
+ make && \
+ cd .. && \
+ rm -rf $$distdir
Property changes on: theme/xsettings-kde/trunk/Makefile
___________________________________________________________________
Added: svn:eol-style
+ native
Added: theme/xsettings-kde/trunk/README
===================================================================
--- theme/xsettings-kde/trunk/README (rev 0)
+++ theme/xsettings-kde/trunk/README 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,14 @@
+XSettings-KDE is a XSettings (http://freedesktop.org/wiki/Standards_2fxsettings_2dspec ) daemon, wrapping some KDE configuration paramaters for XSettings aware applications, such as most GTK+ 2 applications and GNOME 2 applications.
+
+Currently, it allows those applications to receive instant notification of the following changes in KDE configuration :
+-default font name and size
+-theme name
+-icon theme name
+-maximum interval of time between two clicks to be considered as a double-click
+-threshold to trigger drag and drop
+-icon presence in stock buttons
+-toolbar style (text only, icons only, ...)
+
+This daemon is based on Owen Taylor xsetting reference implementation which can be found on http://cvs.freedesktop.org/xsettings/xsettings/
+
+
Added: theme/xsettings-kde/trunk/xsettings-common.c
===================================================================
--- theme/xsettings-kde/trunk/xsettings-common.c (rev 0)
+++ theme/xsettings-kde/trunk/xsettings-common.c 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,264 @@
+/*
+ * Copyright © 2001 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Owen Taylor, Red Hat, Inc.
+ */
+#include "string.h"
+#include "stdlib.h"
+
+#include <X11/Xlib.h>
+#include <X11/Xmd.h> /* For CARD32 */
+
+#include "xsettings-common.h"
+
+XSettingsSetting *
+xsettings_setting_copy (XSettingsSetting *setting)
+{
+ XSettingsSetting *result;
+ size_t str_len;
+
+ result = malloc (sizeof *result);
+ if (!result)
+ return NULL;
+
+ str_len = strlen (setting->name);
+ result->name = malloc (str_len + 1);
+ if (!result->name)
+ goto err;
+
+ memcpy (result->name, setting->name, str_len + 1);
+
+ result->type = setting->type;
+
+ switch (setting->type)
+ {
+ case XSETTINGS_TYPE_INT:
+ result->data.v_int = setting->data.v_int;
+ break;
+ case XSETTINGS_TYPE_COLOR:
+ result->data.v_color = setting->data.v_color;
+ break;
+ case XSETTINGS_TYPE_STRING:
+ str_len = strlen (setting->data.v_string);
+ result->data.v_string = malloc (str_len + 1);
+ if (!result->data.v_string)
+ goto err;
+
+ memcpy (result->data.v_string, setting->data.v_string, str_len + 1);
+ break;
+ }
+
+ result->last_change_serial = setting->last_change_serial;
+
+ return result;
+
+ err:
+ if (result->name)
+ free (result->name);
+ free (result);
+
+ return NULL;
+}
+
+XSettingsList *
+xsettings_list_copy (XSettingsList *list)
+{
+ XSettingsList *new = NULL;
+ XSettingsList *old_iter = list;
+ XSettingsList *new_iter = NULL;
+
+ while (old_iter)
+ {
+ XSettingsList *new_node;
+
+ new_node = malloc (sizeof *new_node);
+ if (!new_node)
+ goto error;
+
+ new_node->setting = xsettings_setting_copy (old_iter->setting);
+ if (!new_node->setting)
+ {
+ free (new_node);
+ goto error;
+ }
+
+ if (new_iter)
+ new_iter->next = new_node;
+ else
+ new = new_node;
+
+ new_iter = new_node;
+
+ old_iter = old_iter->next;
+ }
+
+ return new;
+
+ error:
+ xsettings_list_free (new);
+ return NULL;
+}
+
+int
+xsettings_setting_equal (XSettingsSetting *setting_a,
+ XSettingsSetting *setting_b)
+{
+ if (setting_a->type != setting_b->type)
+ return 0;
+
+ if (strcmp (setting_a->name, setting_b->name) != 0)
+ return 0;
+
+ switch (setting_a->type)
+ {
+ case XSETTINGS_TYPE_INT:
+ return setting_a->data.v_int == setting_b->data.v_int;
+ case XSETTINGS_TYPE_COLOR:
+ return (setting_a->data.v_color.red == setting_b->data.v_color.red &&
+ setting_a->data.v_color.green == setting_b->data.v_color.green &&
+ setting_a->data.v_color.blue == setting_b->data.v_color.blue &&
+ setting_a->data.v_color.alpha == setting_b->data.v_color.alpha);
+ case XSETTINGS_TYPE_STRING:
+ return strcmp (setting_a->data.v_string, setting_b->data.v_string) == 0;
+ }
+
+ return 0;
+}
+
+void
+xsettings_setting_free (XSettingsSetting *setting)
+{
+ if (setting->type == XSETTINGS_TYPE_STRING)
+ free (setting->data.v_string);
+
+ if (setting->name)
+ free (setting->name);
+
+ free (setting);
+}
+
+void
+xsettings_list_free (XSettingsList *list)
+{
+ while (list)
+ {
+ XSettingsList *next = list->next;
+
+ xsettings_setting_free (list->setting);
+ free (list);
+
+ list = next;
+ }
+}
+
+XSettingsResult
+xsettings_list_insert (XSettingsList **list,
+ XSettingsSetting *setting)
+{
+ XSettingsList *node;
+ XSettingsList *iter;
+ XSettingsList *last = NULL;
+
+ node = malloc (sizeof *node);
+ if (!node)
+ return XSETTINGS_NO_MEM;
+ node->setting = setting;
+
+ iter = *list;
+ while (iter)
+ {
+ int cmp = strcmp (setting->name, iter->setting->name);
+
+ if (cmp < 0)
+ break;
+ else if (cmp == 0)
+ {
+ free (node);
+ return XSETTINGS_DUPLICATE_ENTRY;
+ }
+
+ last = iter;
+ iter = iter->next;
+ }
+
+ if (last)
+ last->next = node;
+ else
+ *list = node;
+
+ node->next = iter;
+
+ return XSETTINGS_SUCCESS;
+}
+
+XSettingsResult
+xsettings_list_delete (XSettingsList **list,
+ const char *name)
+{
+ XSettingsList *iter;
+ XSettingsList *last = NULL;
+
+ iter = *list;
+ while (iter)
+ {
+ if (strcmp (name, iter->setting->name) == 0)
+ {
+ if (last)
+ last->next = iter->next;
+ else
+ *list = iter->next;
+
+ xsettings_setting_free (iter->setting);
+ free (iter);
+
+ return XSETTINGS_SUCCESS;
+ }
+
+ last = iter;
+ iter = iter->next;
+ }
+
+ return XSETTINGS_FAILED;
+}
+
+XSettingsSetting *
+xsettings_list_lookup (XSettingsList *list,
+ const char *name)
+{
+ XSettingsList *iter;
+
+ iter = list;
+ while (iter)
+ {
+ if (strcmp (name, iter->setting->name) == 0)
+ return iter->setting;
+
+ iter = iter->next;
+ }
+
+ return NULL;
+}
+
+char
+xsettings_byte_order (void)
+{
+ CARD32 myint = 0x01020304;
+ return (*(char *)&myint == 1) ? MSBFirst : LSBFirst;
+}
Property changes on: theme/xsettings-kde/trunk/xsettings-common.c
___________________________________________________________________
Added: svn:eol-style
+ native
Added: theme/xsettings-kde/trunk/xsettings-common.h
===================================================================
--- theme/xsettings-kde/trunk/xsettings-common.h (rev 0)
+++ theme/xsettings-kde/trunk/xsettings-common.h 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,110 @@
+/*
+ * Copyright © 2001 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Owen Taylor, Red Hat, Inc.
+ */
+#ifndef XSETTINGS_COMMON_H
+#define XSETTINGS_COMMON_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct _XSettingsBuffer XSettingsBuffer;
+typedef struct _XSettingsColor XSettingsColor;
+typedef struct _XSettingsList XSettingsList;
+typedef struct _XSettingsSetting XSettingsSetting;
+
+/* Types of settings possible. Enum values correspond to
+ * protocol values.
+ */
+typedef enum
+{
+ XSETTINGS_TYPE_INT = 0,
+ XSETTINGS_TYPE_STRING = 1,
+ XSETTINGS_TYPE_COLOR = 2
+} XSettingsType;
+
+typedef enum
+{
+ XSETTINGS_SUCCESS,
+ XSETTINGS_NO_MEM,
+ XSETTINGS_ACCESS,
+ XSETTINGS_FAILED,
+ XSETTINGS_NO_ENTRY,
+ XSETTINGS_DUPLICATE_ENTRY
+} XSettingsResult;
+
+struct _XSettingsBuffer
+{
+ char byte_order;
+ size_t len;
+ unsigned char *data;
+ unsigned char *pos;
+};
+
+struct _XSettingsColor
+{
+ unsigned short red, green, blue, alpha;
+};
+
+struct _XSettingsList
+{
+ XSettingsSetting *setting;
+ XSettingsList *next;
+};
+
+struct _XSettingsSetting
+{
+ char *name;
+ XSettingsType type;
+
+ union {
+ int v_int;
+ char *v_string;
+ XSettingsColor v_color;
+ } data;
+
+ unsigned long last_change_serial;
+};
+
+XSettingsSetting *xsettings_setting_copy (XSettingsSetting *setting);
+void xsettings_setting_free (XSettingsSetting *setting);
+int xsettings_setting_equal (XSettingsSetting *setting_a,
+ XSettingsSetting *setting_b);
+
+void xsettings_list_free (XSettingsList *list);
+XSettingsList *xsettings_list_copy (XSettingsList *list);
+XSettingsResult xsettings_list_insert (XSettingsList **list,
+ XSettingsSetting *setting);
+XSettingsSetting *xsettings_list_lookup (XSettingsList *list,
+ const char *name);
+XSettingsResult xsettings_list_delete (XSettingsList **list,
+ const char *name);
+
+char xsettings_byte_order (void);
+
+#define XSETTINGS_PAD(n,m) ((n + m - 1) & (~(m-1)))
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* XSETTINGS_COMMON_H */
Property changes on: theme/xsettings-kde/trunk/xsettings-common.h
___________________________________________________________________
Added: svn:eol-style
+ native
Added: theme/xsettings-kde/trunk/xsettings-kde.c
===================================================================
--- theme/xsettings-kde/trunk/xsettings-kde.c (rev 0)
+++ theme/xsettings-kde/trunk/xsettings-kde.c 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,600 @@
+/*
+ * Copyright (c) 2001 Red Hat, Inc.
+ * (c) 2005, 2006, 2007, 2008 Mandriva
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Authors: Owen Taylor, Red Hat, Inc.
+ * Frederic Crozat, Mandriva
+ *
+ */
+#define _GNU_SOURCE
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <X11/Xlib.h>
+#include <sys/types.h>
+#include <pwd.h>
+#include <unistd.h>
+#include <glib.h>
+
+#include "xsettings-manager.h"
+
+static XSettingsManager **managers;
+static int max_display;
+static int is_kde4;
+
+void
+terminate_cb (void *data)
+{
+}
+
+/*
+ * X Settings existing
+ *
+ * Net/DoubleClickTime => supported
+ * Net/DoubleClickDistance => can't be configured in KDE
+ * Net/DndDragThreshold => supported
+ * Net/CursorBlink => can't be configured in KDE
+ * Net/CursorBlinkTime => can be only configured in QT, no KIPC involved, no real added value
+ * Net/ThemeName => supported
+ * Net/IconThemeName => supported
+ * Net/FallbackIconTheme => supported
+ * Gtk/CanChangeAccels => not supported
+ * Gtk/ColorPalette => no added value
+ * Gtk/FontName => supported
+ * Gtk/IconSizes => not really useful
+ * Gtk/KeyThemeName => not supported
+ * Gtk/ToolbarStyle => supported
+ * Gtk/ToolbarIconSize => implemented but disabled, doesn't seem to work in GTK+
+ * Gtk/IMPreeditStyle => not supported
+ * Gtk/IMStatusStyle => not supported
+ * Gtk/Modules => not supported
+ * Gtk/FileChooserBackend => forced to gnome-vfs
+ * Gtk/ButtonImages => supported
+ * Gtk/MenuImages => can't be configured in KDE
+ * Gtk/MenuBarAccel => not supported
+ * Xft/Antialias => KDE uses .fonts.conf directly
+ * Xft/Hinting => KDE uses .fonts.conf directly
+ * Xft/HintStyle => KDE uses .fonts.conf directly
+ * Xft/RGBA => KDE uses .fonts.conf directly
+ * Xft/DPI => supported
+ */
+
+static Atom* atoms[2];
+
+static char * atom_names [2] = {
+ "KIPC_COMM_ATOM",
+ "KDE_DESKTOP_WINDOW"
+ };
+
+enum Section {
+ Unknown = 0,
+ General,
+ Toolbar,
+ KDE,
+ Icons,
+ MainToolbarIcons,
+ Directories
+};
+
+static char * file_name [2] = {
+ "kdeglobals",
+ "kcmfonts"
+};
+
+int readString (char *key, char * buffer, char *xsetting_key) {
+ if (strncmp (buffer, key, strlen (key)) == 0) {
+ char tmp_string[1024];
+ char search_string[1024];
+
+ sprintf(search_string, "%s=%%s", key);
+ if (sscanf (buffer, search_string, tmp_string) >= 0) {
+ int i;
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], xsetting_key, tmp_string);
+ }
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int readInt (char *key, char * buffer, char *xsetting_key, int multiplier) {
+ if (strncmp (buffer, key, strlen (key)) == 0) {
+ int tmp_int;
+ char search_string[1024];
+
+ sprintf(search_string, "%s=%%d", key);
+ if (sscanf (buffer, search_string, &tmp_int) >= 0) {
+ int i;
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_int (managers[i], xsetting_key, tmp_int*multiplier);
+ }
+ return 1;
+ }
+ }
+ return 0;
+}
+
+int readBoolean (char *key, char * buffer, char *xsetting_key) {
+ if (strncmp (buffer, key, strlen (key)) == 0) {
+ char tmp_string[1024];
+ char search_string[1024];
+
+ sprintf(search_string, "%s=%%s", key);
+ if (sscanf (buffer, search_string, &tmp_string) >= 0) {
+ int i;
+
+ if (strncmp(tmp_string, "1",1) == 0 || strncasecmp (tmp_string, "true", 4) == 0) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_int (managers[i], xsetting_key, 1);
+ }
+ }
+ else {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_int (managers[i], xsetting_key, 0);
+ }
+ }
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+int readDPI(char *buffer)
+{
+ const char *key = "forceFontDPI";
+ const char *xsetting_key = "Xft/DPI";
+
+ if (strncmp (buffer, key, strlen(key)) == 0) {
+ int tmp_int;
+ char search_string[1024];
+
+ sprintf(search_string, "%s=%%d", key);
+ if (sscanf (buffer, search_string, &tmp_int) >= 0) {
+ int i;
+ /* GTK+ expects this as 1024 * dots/inch */
+ tmp_int *= 1024;
+
+ for (i = 0 ; i < max_display ; i++) {
+ if (tmp_int) {
+ xsettings_manager_set_int (managers[i], xsetting_key, tmp_int);
+ } else {
+ xsettings_manager_delete_setting (managers[i], xsetting_key);
+ }
+ }
+ return 1;
+ }
+ }
+ return 0;
+}
+
+
+void readConfig () {
+ FILE *file = NULL;
+ char *buffer = NULL;
+ size_t len = 0, read;
+ enum Section section = Unknown;
+ int notify = 0, buttonIconSet = 0;
+ char filename[1024];
+ char kdeprefix[1024];
+ char *prefix;
+ char color[1024];
+ char style[1024];
+ char themefilename[1024];
+ struct passwd *password;
+ int i;
+ int user_file;
+ int file_index;
+
+ color[0]= '\0';
+ kdeprefix[0]= '\0';
+ filename[0]= '\0';
+ style[0]='\0';
+ prefix = NULL;
+
+ file = fopen (is_kde4 ? "/etc/kde4rc" : "/etc/kderc", "r");
+ if (file) {
+ while ((read = getline (&buffer,&len, file)) != -1) {
+ char tmp_string[1024];
+
+ if (buffer[0] == '[') {
+ if (strncmp(buffer, "[Directories-default]", 21) == 0)
+ section = Directories;
+ continue;
+ }
+ switch (section) {
+ case Directories:
+ if (sscanf (buffer, "prefixes=%s", tmp_string) >= 0) {
+ strcpy(kdeprefix, tmp_string);
+ }
+ break;
+ default:
+ break;
+ }
+
+ }
+ fclose (file);
+ file = NULL;
+ }
+
+ for (file_index = 0 ; file_index < 2 ; file_index++) {
+
+ user_file = 0;
+ do {
+ do {
+ if (kdeprefix[0]) {
+ if (prefix == NULL) {
+ prefix = strtok (kdeprefix, ",");
+ }
+ else {
+ prefix = strtok (NULL, ",");
+ }
+ if (prefix != NULL) {
+ sprintf(filename, "%s/share/config/%s",prefix, file_name[file_index]);
+ if (access (filename, F_OK) == 0) {
+ file = fopen (filename, "r");
+ if (file != NULL)
+ break;
+ }
+ }
+ }
+ } while (prefix != NULL );
+
+ if ((file == NULL) && !user_file) {
+
+ user_file = 1;
+ if ((password = getpwuid (geteuid()))) {
+ sprintf(filename, "%s/%s/share/config/%s",password->pw_dir, is_kde4 ? ".kde4" : ".kde", file_name[file_index]);
+
+ if (access (filename, F_OK) == 0) {
+ file = fopen (filename, "r");
+ }
+ }
+ }
+
+ section = Unknown;
+
+ while (file && (read = getline (&buffer,&len, file)) != -1) {
+ if (buffer[0] == '[') {
+ if (strncmp(buffer, "[General]", 9) == 0)
+ section = General;
+ else { if (strncmp(buffer, "[Toolbar style]", 15) == 0)
+ section = Toolbar;
+ else {
+ if (strncmp(buffer, "[KDE]", 5) == 0)
+ section = KDE;
+ else {
+ if (strncmp(buffer, "[Icons]", 5) == 0)
+ section = Icons;
+ else {
+ if (strncmp(buffer, "[MainToolbarIcons]", 18) == 0)
+ section = MainToolbarIcons;
+ else
+ section = Unknown;
+ }
+ }
+ }
+ }
+ continue;
+ }
+ switch (section) {
+ /* doesn't seem to work in GTK */
+ /*
+ case MainToolbarIcons:
+ if (strncmp (buffer, "Size=", 5) == 0) {
+ int size;
+
+ if (sscanf (buffer, "Size=%d", &size) >= 0) {
+ char new_size[1024];
+ sprintf(new_size, "%d",size);
+ xsettings_manager_set_string(manager, "Gtk/ToolbarIconSize", "large-toolbar");
+ notify = 1;
+ }
+ }
+ break;
+*/
+
+ case Icons:
+ notify |= readString ("Theme",buffer, "Net/IconThemeName");
+ break;
+
+ case KDE:
+ notify |= readInt ("DoubleClickInterval", buffer, "Net/DoubleClickTime", 1);
+
+ notify |= readInt ("StartDragDist", buffer, "Net/DndDragThreshold", 1);
+
+ buttonIconSet |= readBoolean("ShowIconsOnPushButtons", buffer, "Gtk/ButtonImages");
+ notify |= buttonIconSet;
+ if (strncmp(buffer,"colorScheme=",12) == 0) {
+ strcpy(color, buffer+12);
+ color[strlen(color)-1]='\0';
+ }
+
+ break;
+ case General:
+ if (strncmp(buffer,"font=",5) == 0) {
+ char font[1024];
+ char size[1024];
+ char fontname[1024];
+
+ /* found font */
+ sscanf(buffer,"font=%[^,],%[^,]", font, size);
+ sprintf(fontname, "%s %s",font,size);
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Gtk/FontName", fontname);
+ }
+ notify = 1;
+ }
+ if (strncmp(buffer,"widgetStyle=",12) == 0) {
+
+ /* found style */
+ sscanf(buffer,"widgetStyle=%s", style);
+
+ }
+ notify |= readDPI(buffer);
+
+ break;
+ case Toolbar:
+ if (strncmp (buffer, "IconText=", 9) == 0) {
+ char toolbar[1024];
+ int found;
+
+ /* found toolbar */
+ found = sscanf(buffer,"IconText=%s", toolbar);
+ if (found && strcmp (toolbar, "IconOnly") == 0) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Gtk/ToolbarStyle", "icons");
+ }
+ notify = 1;
+ found = 0;
+ }
+ if (found && strcmp (toolbar, "TextOnly") == 0) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Gtk/ToolbarStyle", "text");
+ }
+ notify = 1;
+ found = 0;
+ }
+ if (found && strcmp (toolbar, "IconTextRight") == 0) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Gtk/ToolbarStyle", "both-horiz");
+ }
+ notify = 1;
+ found = 0;
+ }
+ if (found && strcmp (toolbar, "IconTextBottom") == 0) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Gtk/ToolbarStyle", "both");
+ }
+ notify = 1;
+ found = 0;
+ }
+ }
+ break;
+ default: /* ignore the rest */
+ break;
+ }
+ }
+ if (file) {
+ fclose (file);
+ file = NULL;
+ }
+
+ } while (user_file == 0);
+ }
+
+ if (buffer) {
+ free (buffer);
+ }
+
+ if ((style[0] == '\0' || (!is_kde4 && strcmp(style, "ia_ora") == 0) || (is_kde4 && strcmp(style, "iaora-qt") == 0) || (is_kde4 && strcmp(style, "iaorakde") == 0)) && strncmp("Ia Ora ", color, 7) == 0)
+ {
+ strcpy(style, color);
+ if (!is_kde4) {
+ style[strlen(style)-6] = '\0';
+ }
+ }
+
+ if (style[0]) {
+ int gtkrc_access = 1;
+ sprintf(themefilename, "/usr/share/themes/%s/gtk-2.0/gtkrc", style);
+
+ if (password) {
+ char gtkrc[1024];
+ sprintf(gtkrc,"%s/.gtkrc-2.0", password->pw_dir);
+ gtkrc_access = access (gtkrc, F_OK);
+ /* if not .gtkrc-2.0, try KDE variant */
+ if (gtkrc_access) {
+ char *gtkrc_env;
+ char *gtkrc_file;
+
+ gtkrc_env = getenv ("GTK2_RC_FILES");
+ gtkrc_file = NULL;
+
+ if (gtkrc_env) {
+ do {
+ if (gtkrc_file == NULL) {
+ gtkrc_file = strtok (gtkrc_env, ":");
+ }
+ else {
+ gtkrc_file = strtok (NULL, ":");
+ }
+ if (gtkrc_file != NULL) {
+ if ((gtkrc_access = access (gtkrc_file, F_OK)) == 0) {
+ break;
+ }
+ }
+ } while (gtkrc_file != NULL );
+ }
+ }
+ }
+
+ /* do not set theme name if .gtkrc is being used */
+ if (gtkrc_access && (access (themefilename, F_OK) == 0 )) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
+ }
+ notify = 1;
+ }
+ }
+
+
+ if (!buttonIconSet) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_int(managers[i], "Gtk/ButtonImages", is_kde4);
+ }
+ notify = 1;
+ }
+
+ if (notify) {
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_notify (managers[i]);
+ }
+ }
+}
+
+void initial_init () {
+ int i;
+ const char *kde_version;
+
+ kde_version = getenv("KDE_SESSION_VERSION");
+
+ if (kde_version && (kde_version[0] == '4'))
+ is_kde4 = 1;
+ else
+ is_kde4 = 0;
+
+ for (i = 0 ; i < max_display ; i++) {
+ xsettings_manager_set_string(managers[i], "Gtk/FileChooserBackend", "gio");
+ xsettings_manager_set_string(managers[i], "Net/FallbackIconTheme", "gnome");
+ xsettings_manager_notify (managers[i]);
+ }
+}
+
+struct xevent_data {
+ Atom KIPCAtom;
+ Atom KDEDesktopAtom;
+ Display *display;
+};
+
+static void
+xevent_handle (gpointer user_data)
+{
+ XEvent xevent;
+ struct xevent_data* xev = (struct xevent_data*)user_data;
+ int i;
+
+ while (1) {
+ XNextEvent (xev->display, &xevent);
+
+ for (i = 0 ; i < max_display ; i++) {
+ if (xsettings_manager_process_event (managers[i], &xevent))
+ break;
+ }
+
+ if ((xevent.type == ClientMessage) && (xevent.xclient.message_type == xev->KIPCAtom)) {
+ int id = ((XClientMessageEvent *) &xevent)->data.l[0];
+
+ switch (id) {
+ case 0: /* palette changed */
+ case 1: /* font changed */
+ case 2: /* style changed */
+ case 4: /* settings changed */
+ case 5: /* icons style changed */
+ case 6: /* toolbar style changed */
+ readConfig();
+ break;
+ default:
+ break;
+ }
+ }
+ }
+}
+
+
+int main (int argc, char **argv) {
+ long data = 1;
+ Atom atoms_return[2];
+ int i;
+ int terminated = 0;
+ struct xevent_data xev;
+ GMainLoop *loop;
+
+ g_thread_init(NULL);
+
+ xev.display = XOpenDisplay (NULL);
+ if (xev.display == NULL) {
+ fprintf(stderr, "unable to open display\n");
+ return 1;
+ }
+
+ if (xsettings_manager_check_running (xev.display, DefaultScreen (xev.display))) {
+ fprintf(stderr, "xsettings server already running\n");
+ XCloseDisplay (xev.display);
+ return 2;
+ }
+
+ max_display = ScreenCount (xev.display);
+
+ managers = malloc (max_display * sizeof (XSettingsManager *));
+
+ for (i = 0 ; i < max_display ; i++ ) {
+ managers[i] = xsettings_manager_new (xev.display, i,
+ terminate_cb, &terminated);
+ if (!managers[i]) {
+ fprintf (stderr, "Could not create manager for screen %d", i);
+ return 3;
+ }
+ }
+
+ initial_init ();
+
+ atoms[0] = &xev.KIPCAtom;
+ atoms[1] = &xev.KDEDesktopAtom;
+
+ XInternAtoms(xev.display, atom_names, 2, 0, atoms_return );
+
+ *atoms[0] = atoms_return [0];
+ *atoms[1] = atoms_return [1];
+
+ XChangeProperty(xev.display, xsettings_manager_get_window (managers[0]),
+ xev.KDEDesktopAtom, xev.KDEDesktopAtom,
+ 32, PropModeReplace, (unsigned char *)&data, 1);
+
+ XChangeProperty(xev.display, xsettings_manager_get_window (managers[0]),
+ xev.KIPCAtom, xev.KIPCAtom,
+ 32, PropModeReplace, (unsigned char *)&data, 1);
+
+ readConfig();
+
+ g_thread_create ((GThreadFunc)xevent_handle, &xev, FALSE, NULL);
+ loop = g_main_loop_new (NULL, TRUE);
+ g_main_loop_run (loop);
+
+ for (i = 0; i < max_display; i++) {
+ xsettings_manager_destroy (managers [i]);
+ }
+ free (managers);
+
+ XCloseDisplay (xev.display);
+
+ return 0;
+}
Property changes on: theme/xsettings-kde/trunk/xsettings-kde.c
___________________________________________________________________
Added: svn:eol-style
+ native
Added: theme/xsettings-kde/trunk/xsettings-manager.c
===================================================================
--- theme/xsettings-kde/trunk/xsettings-manager.c (rev 0)
+++ theme/xsettings-kde/trunk/xsettings-manager.c 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,424 @@
+/*
+ * Copyright © 2001 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Owen Taylor, Red Hat, Inc.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <X11/Xmd.h> /* For CARD16 */
+
+#include "xsettings-manager.h"
+
+struct _XSettingsManager
+{
+ Display *display;
+ int screen;
+
+ Window window;
+ Atom manager_atom;
+ Atom selection_atom;
+ Atom xsettings_atom;
+
+ XSettingsTerminateFunc terminate;
+ void *cb_data;
+
+ XSettingsList *settings;
+ unsigned long serial;
+};
+
+XSettingsList *settings;
+
+typedef struct
+{
+ Window window;
+ Atom timestamp_prop_atom;
+} TimeStampInfo;
+
+static Bool
+timestamp_predicate (Display *display,
+ XEvent *xevent,
+ XPointer arg)
+{
+ TimeStampInfo *info = (TimeStampInfo *)arg;
+
+ if (xevent->type == PropertyNotify &&
+ xevent->xproperty.window == info->window &&
+ xevent->xproperty.atom == info->timestamp_prop_atom)
+ return True;
+
+ return False;
+}
+
+/**
+ * get_server_time:
+ * @display: display from which to get the time
+ * @window: a #Window, used for communication with the server.
+ * The window must have PropertyChangeMask in its
+ * events mask or a hang will result.
+ *
+ * Routine to get the current X server time stamp.
+ *
+ * Return value: the time stamp.
+ **/
+static Time
+get_server_time (Display *display,
+ Window window)
+{
+ unsigned char c = 'a';
+ XEvent xevent;
+ TimeStampInfo info;
+
+ info.timestamp_prop_atom = XInternAtom (display, "_TIMESTAMP_PROP", False);
+ info.window = window;
+
+ XChangeProperty (display, window,
+ info.timestamp_prop_atom, info.timestamp_prop_atom,
+ 8, PropModeReplace, &c, 1);
+
+ XIfEvent (display, &xevent,
+ timestamp_predicate, (XPointer)&info);
+
+ return xevent.xproperty.time;
+}
+
+Bool
+xsettings_manager_check_running (Display *display,
+ int screen)
+{
+ char buffer[256];
+ Atom selection_atom;
+
+ sprintf(buffer, "_XSETTINGS_S%d", screen);
+ selection_atom = XInternAtom (display, buffer, False);
+
+ if (XGetSelectionOwner (display, selection_atom))
+ return True;
+ else
+ return False;
+}
+
+XSettingsManager *
+xsettings_manager_new (Display *display,
+ int screen,
+ XSettingsTerminateFunc terminate,
+ void *cb_data)
+{
+ XSettingsManager *manager;
+ Time timestamp;
+ XClientMessageEvent xev;
+
+ char buffer[256];
+
+ manager = malloc (sizeof *manager);
+ if (!manager)
+ return NULL;
+
+ manager->display = display;
+ manager->screen = screen;
+
+ sprintf(buffer, "_XSETTINGS_S%d", screen);
+ manager->selection_atom = XInternAtom (display, buffer, False);
+ manager->xsettings_atom = XInternAtom (display, "_XSETTINGS_SETTINGS", False);
+ manager->manager_atom = XInternAtom (display, "MANAGER", False);
+
+ manager->terminate = terminate;
+ manager->cb_data = cb_data;
+
+ manager->settings = NULL;
+ manager->serial = 0;
+
+ manager->window = XCreateSimpleWindow (display,
+ RootWindow (display, screen),
+ 0, 0, 10, 10, 0,
+ WhitePixel (display, screen),
+ WhitePixel (display, screen));
+
+ XSelectInput (display, manager->window, PropertyChangeMask);
+ timestamp = get_server_time (display, manager->window);
+
+ XSetSelectionOwner (display, manager->selection_atom,
+ manager->window, timestamp);
+
+ /* Check to see if we managed to claim the selection. If not,
+ * we treat it as if we got it then immediately lost it
+ */
+
+ if (XGetSelectionOwner (display, manager->selection_atom) ==
+ manager->window)
+ {
+ xev.type = ClientMessage;
+ xev.window = RootWindow (display, screen);
+ xev.message_type = manager->manager_atom;
+ xev.format = 32;
+ xev.data.l[0] = timestamp;
+ xev.data.l[1] = manager->selection_atom;
+ xev.data.l[2] = manager->window;
+ xev.data.l[3] = 0; /* manager specific data */
+ xev.data.l[4] = 0; /* manager specific data */
+
+ XSendEvent (display, RootWindow (display, screen),
+ False, StructureNotifyMask, (XEvent *)&xev);
+ }
+ else
+ {
+ manager->terminate (manager->cb_data);
+ }
+
+ return manager;
+}
+
+void
+xsettings_manager_destroy (XSettingsManager *manager)
+{
+ XDestroyWindow (manager->display, manager->window);
+
+ xsettings_list_free (manager->settings);
+ free (manager);
+}
+
+Window
+xsettings_manager_get_window (XSettingsManager *manager)
+{
+ return manager->window;
+}
+
+Bool
+xsettings_manager_process_event (XSettingsManager *manager,
+ XEvent *xev)
+{
+ if (xev->xany.window == manager->window &&
+ xev->xany.type == SelectionClear &&
+ xev->xselectionclear.selection == manager->selection_atom)
+ {
+ manager->terminate (manager->cb_data);
+ return True;
+ }
+
+ return False;
+}
+
+XSettingsResult
+xsettings_manager_set_setting (XSettingsManager *manager,
+ XSettingsSetting *setting)
+{
+ XSettingsSetting *old_setting = xsettings_list_lookup (settings, setting->name);
+ XSettingsSetting *new_setting;
+ XSettingsResult result;
+
+ if (old_setting)
+ {
+ if (xsettings_setting_equal (old_setting, setting))
+ return XSETTINGS_SUCCESS;
+
+ xsettings_list_delete (&settings, setting->name);
+ }
+
+ new_setting = xsettings_setting_copy (setting);
+ if (!new_setting)
+ return XSETTINGS_NO_MEM;
+
+ new_setting->last_change_serial = manager->serial;
+
+ result = xsettings_list_insert (&settings, new_setting);
+
+ if (result != XSETTINGS_SUCCESS)
+ xsettings_setting_free (new_setting);
+
+ return result;
+}
+
+XSettingsResult
+xsettings_manager_delete_setting (XSettingsManager *manager,
+ const char *name)
+{
+ return xsettings_list_delete (&settings, name);
+}
+
+XSettingsResult
+xsettings_manager_set_int (XSettingsManager *manager,
+ const char *name,
+ int value)
+{
+ XSettingsSetting setting;
+
+ setting.name = (char *)name;
+ setting.type = XSETTINGS_TYPE_INT;
+ setting.data.v_int = value;
+
+ return xsettings_manager_set_setting (manager, &setting);
+}
+
+XSettingsResult
+xsettings_manager_set_string (XSettingsManager *manager,
+ const char *name,
+ const char *value)
+{
+ XSettingsSetting setting;
+
+ setting.name = (char *)name;
+ setting.type = XSETTINGS_TYPE_STRING;
+ setting.data.v_string = (char *)value;
+
+ return xsettings_manager_set_setting (manager, &setting);
+}
+
+XSettingsResult
+xsettings_manager_set_color (XSettingsManager *manager,
+ const char *name,
+ XSettingsColor *value)
+{
+ XSettingsSetting setting;
+
+ setting.name = (char *)name;
+ setting.type = XSETTINGS_TYPE_COLOR;
+ setting.data.v_color = *value;
+
+ return xsettings_manager_set_setting (manager, &setting);
+}
+
+size_t
+setting_length (XSettingsSetting *setting)
+{
+ size_t length = 8; /* type + pad + name-len + last-change-serial */
+ length += XSETTINGS_PAD (strlen (setting->name), 4);
+
+ switch (setting->type)
+ {
+ case XSETTINGS_TYPE_INT:
+ length += 4;
+ break;
+ case XSETTINGS_TYPE_STRING:
+ length += 4 + XSETTINGS_PAD (strlen (setting->data.v_string), 4);
+ break;
+ case XSETTINGS_TYPE_COLOR:
+ length += 8;
+ break;
+ }
+
+ return length;
+}
+
+void
+setting_store (XSettingsSetting *setting,
+ XSettingsBuffer *buffer)
+{
+ size_t string_len;
+ size_t length;
+
+ *(buffer->pos++) = setting->type;
+ *(buffer->pos++) = 0;
+
+ string_len = strlen (setting->name);
+ *(CARD16 *)(buffer->pos) = string_len;
+ buffer->pos += 2;
+
+ length = XSETTINGS_PAD (string_len, 4);
+ memcpy (buffer->pos, setting->name, string_len);
+ length -= string_len;
+ buffer->pos += string_len;
+
+ while (length > 0)
+ {
+ *(buffer->pos++) = 0;
+ length--;
+ }
+
+ *(CARD32 *)(buffer->pos) = setting->last_change_serial;
+ buffer->pos += 4;
+
+ switch (setting->type)
+ {
+ case XSETTINGS_TYPE_INT:
+ *(CARD32 *)(buffer->pos) = setting->data.v_int;
+ buffer->pos += 4;
+ break;
+ case XSETTINGS_TYPE_STRING:
+ string_len = strlen (setting->data.v_string);
+ *(CARD32 *)(buffer->pos) = string_len;
+ buffer->pos += 4;
+
+ length = XSETTINGS_PAD (string_len, 4);
+ memcpy (buffer->pos, setting->data.v_string, string_len);
+ length -= string_len;
+ buffer->pos += string_len;
+
+ while (length > 0)
+ {
+ *(buffer->pos++) = 0;
+ length--;
+ }
+ break;
+ case XSETTINGS_TYPE_COLOR:
+ *(CARD16 *)(buffer->pos) = setting->data.v_color.red;
+ *(CARD16 *)(buffer->pos + 2) = setting->data.v_color.green;
+ *(CARD16 *)(buffer->pos + 4) = setting->data.v_color.blue;
+ *(CARD16 *)(buffer->pos + 6) = setting->data.v_color.alpha;
+ buffer->pos += 8;
+ break;
+ }
+}
+
+XSettingsResult
+xsettings_manager_notify (XSettingsManager *manager)
+{
+ XSettingsBuffer buffer;
+ XSettingsList *iter;
+ int n_settings = 0;
+
+ buffer.len = 12; /* byte-order + pad + SERIAL + N_SETTINGS */
+
+ iter = settings;
+ while (iter)
+ {
+ buffer.len += setting_length (iter->setting);
+ n_settings++;
+ iter = iter->next;
+ }
+
+ buffer.data = buffer.pos = malloc (buffer.len);
+ if (!buffer.data)
+ return XSETTINGS_NO_MEM;
+
+ *buffer.pos = xsettings_byte_order ();
+
+ buffer.pos += 4;
+ *(CARD32 *)buffer.pos = manager->serial++;
+ buffer.pos += 4;
+ *(CARD32 *)buffer.pos = n_settings;
+ buffer.pos += 4;
+
+ iter = settings;
+ while (iter)
+ {
+ setting_store (iter->setting, &buffer);
+ iter = iter->next;
+ }
+
+ XChangeProperty (manager->display, manager->window,
+ manager->xsettings_atom, manager->xsettings_atom,
+ 8, PropModeReplace, buffer.data, buffer.len);
+
+ free (buffer.data);
+
+ return XSETTINGS_SUCCESS;
+}
+
Property changes on: theme/xsettings-kde/trunk/xsettings-manager.c
___________________________________________________________________
Added: svn:eol-style
+ native
Added: theme/xsettings-kde/trunk/xsettings-manager.h
===================================================================
--- theme/xsettings-kde/trunk/xsettings-manager.h (rev 0)
+++ theme/xsettings-kde/trunk/xsettings-manager.h 2011-02-07 09:11:39 UTC (rev 460)
@@ -0,0 +1,69 @@
+/*
+ * Copyright © 2001 Red Hat, Inc.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Red Hat not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. Red Hat makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT
+ * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Owen Taylor, Red Hat, Inc.
+ */
+#ifndef XSETTINGS_MANAGER_H
+#define XSETTINGS_MANAGER_H
+
+#include <X11/Xlib.h>
+#include "xsettings-common.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+typedef struct _XSettingsManager XSettingsManager;
+
+typedef void (*XSettingsTerminateFunc) (void *cb_data);
+
+Bool xsettings_manager_check_running (Display *display,
+ int screen);
+
+XSettingsManager *xsettings_manager_new (Display *display,
+ int screen,
+ XSettingsTerminateFunc terminate,
+ void *cb_data);
+
+void xsettings_manager_destroy (XSettingsManager *manager);
+Window xsettings_manager_get_window (XSettingsManager *manager);
+Bool xsettings_manager_process_event (XSettingsManager *manager,
+ XEvent *xev);
+
+XSettingsResult xsettings_manager_set_setting (XSettingsManager *manager,
+ XSettingsSetting *setting);
+XSettingsResult xsettings_manager_delete_setting (XSettingsManager *manager,
+ const char *name);
+XSettingsResult xsettings_manager_set_int (XSettingsManager *manager,
+ const char *name,
+ int value);
+XSettingsResult xsettings_manager_set_string (XSettingsManager *manager,
+ const char *name,
+ const char *value);
+XSettingsResult xsettings_manager_set_color (XSettingsManager *manager,
+ const char *name,
+ XSettingsColor *value);
+XSettingsResult xsettings_manager_notify (XSettingsManager *manager);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* XSETTINGS_MANAGER_H */
Property changes on: theme/xsettings-kde/trunk/xsettings-manager.h
___________________________________________________________________
Added: svn:eol-style
+ native
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/mageia-sysadm/attachments/20110207/b9c02b7a/attachment-0001.html>
More information about the Mageia-sysadm
mailing list