From 39f2c6a84cd715b11fb3ffa82a86abf2fb9bcd70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Thu, 1 Oct 2015 17:05:29 +0200 Subject: [PATCH] Initial import of kooldock 0.4.7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Slávek Banko --- AUTHORS | 6 + COPYING | 340 ++ ChangeLog | 90 + Doxyfile | 283 ++ INSTALL | 167 + Makefile.am | 22 + NEWS | 1 + README | 21 + TODO | 2 + backgrounds/Makefile.am | 4 + backgrounds/border-black/Makefile.am | 4 + .../border-black/background-center.png | Bin 0 -> 339 bytes backgrounds/border-black/background-left.png | Bin 0 -> 509 bytes backgrounds/border-black/background-right.png | Bin 0 -> 518 bytes backgrounds/border-white/Makefile.am | 4 + .../border-white/background-center.png | Bin 0 -> 339 bytes backgrounds/border-white/background-left.png | Bin 0 -> 490 bytes backgrounds/border-white/background-right.png | Bin 0 -> 29237 bytes backgrounds/crystal/Makefile.am | 4 + backgrounds/crystal/background-center.png | Bin 0 -> 343 bytes backgrounds/crystal/background-left.png | Bin 0 -> 626 bytes backgrounds/crystal/background-right.png | Bin 0 -> 464 bytes backgrounds/default/Makefile.am | 4 + backgrounds/default/background-center.png | Bin 0 -> 2562 bytes backgrounds/default/background-left.png | Bin 0 -> 917 bytes backgrounds/default/background-right.png | Bin 0 -> 1099 bytes backgrounds/fadeout/Makefile.am | 4 + backgrounds/fadeout/background-center.png | Bin 0 -> 482 bytes backgrounds/fadeout/background-left.png | Bin 0 -> 489 bytes backgrounds/fadeout/background-right.png | Bin 0 -> 591 bytes backgrounds/fadeout2/Makefile.am | 4 + backgrounds/fadeout2/background-center.png | Bin 0 -> 798 bytes backgrounds/fadeout2/background-left.png | Bin 0 -> 644 bytes backgrounds/fadeout2/background-right.png | Bin 0 -> 764 bytes backgrounds/fadeout3/Makefile.am | 4 + backgrounds/fadeout3/background-center.png | Bin 0 -> 1937 bytes backgrounds/fadeout3/background-left.png | Bin 0 -> 635 bytes backgrounds/fadeout3/background-right.png | Bin 0 -> 771 bytes backgrounds/osx/Makefile.am | 4 + backgrounds/osx/background-center.png | Bin 0 -> 305 bytes backgrounds/osx/background-left.png | Bin 0 -> 240 bytes backgrounds/osx/background-right.png | Bin 0 -> 201 bytes config.h.in | 244 ++ configure.files | 2 + configure.in.in | 6 + doc/Makefile.am | 4 + doc/en/Makefile.am | 4 + icons/Makefile.am | 3 + icons/cr128-app-kooldock.png | Bin 0 -> 74998 bytes icons/cr16-app-kooldock.png | Bin 0 -> 40220 bytes icons/cr32-app-kooldock.png | Bin 0 -> 43501 bytes icons/cr64-app-kooldock.png | Bin 0 -> 51415 bytes kooldock.kdevelop | 214 + kooldock.lsm | 14 + po/Makefile.am | 6 + po/cs.po | 658 +++ po/de.po | 664 +++ po/es.po | 542 +++ po/fr.po | 519 +++ po/it.po | 617 +++ po/kooldock.mo | Bin 0 -> 498 bytes po/kooldock.pot | 783 ++++ po/nl.po | 617 +++ po/pl.po | 544 +++ po/sv.po | 517 +++ src/Makefile.am | 64 + src/appProp.ui | 264 ++ src/apppropprg.cpp | 159 + src/apppropprg.h | 45 + src/clip.cpp | 47 + src/clip.h | 29 + src/dinfo.cpp | 56 + src/dinfo.h | 42 + src/item.cpp | 274 ++ src/item.h | 84 + src/kooldock.cpp | 3848 +++++++++++++++++ src/kooldock.h | 364 ++ src/main.cpp | 114 + src/setupdialog.ui | 1990 +++++++++ src/setupdialogprg.cpp | 702 +++ src/setupdialogprg.h | 102 + src/xosd.cpp | 226 + src/xosd.h | 58 + subdirs | 5 + 84 files changed, 15399 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 ChangeLog create mode 100644 Doxyfile create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 NEWS create mode 100644 README create mode 100644 TODO create mode 100644 backgrounds/Makefile.am create mode 100644 backgrounds/border-black/Makefile.am create mode 100644 backgrounds/border-black/background-center.png create mode 100644 backgrounds/border-black/background-left.png create mode 100644 backgrounds/border-black/background-right.png create mode 100644 backgrounds/border-white/Makefile.am create mode 100644 backgrounds/border-white/background-center.png create mode 100644 backgrounds/border-white/background-left.png create mode 100644 backgrounds/border-white/background-right.png create mode 100644 backgrounds/crystal/Makefile.am create mode 100644 backgrounds/crystal/background-center.png create mode 100644 backgrounds/crystal/background-left.png create mode 100644 backgrounds/crystal/background-right.png create mode 100644 backgrounds/default/Makefile.am create mode 100644 backgrounds/default/background-center.png create mode 100644 backgrounds/default/background-left.png create mode 100644 backgrounds/default/background-right.png create mode 100644 backgrounds/fadeout/Makefile.am create mode 100644 backgrounds/fadeout/background-center.png create mode 100644 backgrounds/fadeout/background-left.png create mode 100644 backgrounds/fadeout/background-right.png create mode 100644 backgrounds/fadeout2/Makefile.am create mode 100644 backgrounds/fadeout2/background-center.png create mode 100644 backgrounds/fadeout2/background-left.png create mode 100644 backgrounds/fadeout2/background-right.png create mode 100644 backgrounds/fadeout3/Makefile.am create mode 100644 backgrounds/fadeout3/background-center.png create mode 100644 backgrounds/fadeout3/background-left.png create mode 100644 backgrounds/fadeout3/background-right.png create mode 100644 backgrounds/osx/Makefile.am create mode 100644 backgrounds/osx/background-center.png create mode 100644 backgrounds/osx/background-left.png create mode 100644 backgrounds/osx/background-right.png create mode 100644 config.h.in create mode 100644 configure.files create mode 100644 configure.in.in create mode 100644 doc/Makefile.am create mode 100644 doc/en/Makefile.am create mode 100644 icons/Makefile.am create mode 100644 icons/cr128-app-kooldock.png create mode 100644 icons/cr16-app-kooldock.png create mode 100644 icons/cr32-app-kooldock.png create mode 100644 icons/cr64-app-kooldock.png create mode 100644 kooldock.kdevelop create mode 100644 kooldock.lsm create mode 100644 po/Makefile.am create mode 100644 po/cs.po create mode 100644 po/de.po create mode 100644 po/es.po create mode 100644 po/fr.po create mode 100644 po/it.po create mode 100644 po/kooldock.mo create mode 100644 po/kooldock.pot create mode 100644 po/nl.po create mode 100644 po/pl.po create mode 100644 po/sv.po create mode 100644 src/Makefile.am create mode 100644 src/appProp.ui create mode 100644 src/apppropprg.cpp create mode 100644 src/apppropprg.h create mode 100644 src/clip.cpp create mode 100644 src/clip.h create mode 100644 src/dinfo.cpp create mode 100644 src/dinfo.h create mode 100644 src/item.cpp create mode 100644 src/item.h create mode 100644 src/kooldock.cpp create mode 100644 src/kooldock.h create mode 100644 src/main.cpp create mode 100644 src/setupdialog.ui create mode 100644 src/setupdialogprg.cpp create mode 100644 src/setupdialogprg.h create mode 100644 src/xosd.cpp create mode 100644 src/xosd.h create mode 100644 subdirs diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..15d4699 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,6 @@ +KoolDock team (to v0.3) +Matias Fernandez +Francisco Guidi + +Developement after v0.3 +Blase Stanek \ No newline at end of file diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/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. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 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. + + , 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/ChangeLog b/ChangeLog new file mode 100644 index 0000000..8e1a1a4 --- /dev/null +++ b/ChangeLog @@ -0,0 +1,90 @@ +23/09/2007: KoolDock 0.4.7 + - Improved icon positioning. + - Added 'Show only minimized' option. + - Disabled systray support. + - Improved drawing engine. + - Added speed control (modifies kooldock's animation time to make it closest to desired speed). + - Reduced CPU wakeups, when kooldock is inactive (should be 4-8 per second) + - Reorganised tabs in setting window. + - Added 'Apply' button in options window, improved settings applying speed. + - Added simple KBFX support (necessary kicker applet). + - Added automatic background refresh (on minimize/maximize/restore/activate window). + - Added similar task grouping. + - Minor fixes and improvements. + +16/02/2007: KoolDock 0.4.6 + - Added choice of amount of big icons. + - Added choise of edge on which kooldock has to appear. + - Added option allowing to don't scroll while mouse is on the same icon (centred on it). + - Added Italian translation. + +16/02/2007: KoolDock 0.4.5 + - Icon positioning improvments. + - Some optimizations. + +11/02/2007: KoolDock 0.4.4 + - Added scrolling when kooldock need more size than desktop width. + - One-colour-background box now fits to icons. + - Improved xinerama support. + - Some stablity fixes. + - Added zooming speed choice. + - Improved 'Show after' option. + +20/01/2007: KoolDock 0.4.3 + - Adeed: 'Move left/right' buttons for launcher icons + - Some stability improvments + - Fixed: beryl shadowcasting to kooldock's window + +15/01/2007: KoolDock 0.4.2 + - Fixed sizing and getting background bugs. + - Fixed: Closing when desktop was changed. + - Speed up desktop changing (when is full of windows). + - Faster background themes scalling. + - Added simple command line support (-o --options, -k --kill) + - Fixed bug associated with quick opening and closing windows. + - Added possibility of changing kooldock position on screen edge + +01/01/2007: KoolDock 0.4.1 + - Fixed: 'Show hidden' option. + +31/12/2006: KoolDock 0.4 + - Fixed: Half openinig when any menu is expanded. + - Fixed: Quick showing and hiding on kooldock's window edges. + - Fixed: Some minor fixes and optimizations. + - Fixed: Program don't compile on autoconf v2.60 or newer. + +11/08/2004: KoolDock 0.3 + - Added: Translation support (i18n): Spanish (complete), Swedish (complete), Polish (not fully up to date). + - Added: Mouse Wheel over Dock now switches Desktop. + - Added: Launcher icons can now be sorted through Launcher List. + - Added: Move to Desktop/Go To Desktop (Taskbar/Nav. Bar). + - Added: New option to Nav. Bar: Task List. + - Added: Theme support for KoolDock Background (5 themes). + - Added: Run launcher as different user. + - Added: It is now possible to tell KoolDock to manage all windows or those in the present Desktop. + - Added: Active window icon is now highlighted. + - Improved: Xinerama Support (user configurable screen resolution). + - Updated: About dialog information. + - Patches: Text Shadow Patch (thanks to William Ekholm). + - Fixed: KMenu and mousemove event: sigsegv (thanks to Jared Grubb). + - Fixed: Minor fixes and Optimizations. + - Experimental: Systray Support (do not use it unless you want to help us with this). + + +19/05/2004: KoolDock 0.2 + - Fixed separator issue, now it is drawed only when necessary. + - Fixed configuration - separator issue (now it is not disabled). + - Fixed setupdialog and appdialog resizing. + - Xinerama support (in preferences). + - Navigation Menu + clock (available through KoolDock menu). + - Screenshot of minimized windows (only through KoolDock menu). + - Added "Hide on click" (Hide KoolDock after clicking on an icon). + - Added "Show after"; how long the mouse must be at bottom of the + screen before showing the dock. + - Added "Run from Terminal" and "Keep Terminal Open" in the add + launcher dialog (useful for console applications, e.g: top, vim). + - Rewrote "Ignore List"; now it is possible to grab windows names. + - Proper tooltips in the "Preference Dialog" + - Optimization to the background drawing rutine. + - Major code clean-up (still needs more). + - Minor fixes. diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 0000000..120a52d --- /dev/null +++ b/Doxyfile @@ -0,0 +1,283 @@ +# Doxyfile 1.5.1-KDevelop + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = kooldock +PROJECT_NUMBER = 0.4.7 +OUTPUT_DIRECTORY = +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = NO +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = /home/bisiek/ +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = NO +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +BUILTIN_STL_SUPPORT = NO +DISTRIBUTE_GROUP_DOC = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = YES +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = NO +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = /home/bisiek/kooldock +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox \ + *.py \ + *.C \ + *.CC \ + *.C++ \ + *.II \ + *.I++ \ + *.H \ + *.HH \ + *.H++ \ + *.CS \ + *.PHP \ + *.PHP3 \ + *.M \ + *.MM \ + *.PY \ + *.C \ + *.H \ + *.tlh \ + *.diff \ + *.patch \ + *.moc \ + *.xpm \ + *.dox +RECURSIVE = yes +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +REFERENCES_LINK_SOURCE = YES +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = yes +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = kooldock.tag +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +CALLER_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff --git a/INSTALL b/INSTALL new file mode 100644 index 0000000..02a4a07 --- /dev/null +++ b/INSTALL @@ -0,0 +1,167 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes a while. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Type `make install' to install the programs and any data files and + documentation. + + 4. You can remove the program binaries and object files from the + source code directory by typing `make clean'. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..8a2284f --- /dev/null +++ b/Makefile.am @@ -0,0 +1,22 @@ +SUBDIRS = $(TOPSUBDIRS) + +$(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ; + +$(top_srcdir)/subdirs: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs + +$(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in + @cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4 + +MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files + +package-messages: + cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common package-messages + $(MAKE) -C po merge + +EXTRA_DIST = admin COPYING configure.in.in + +dist-hook: + cd $(top_distdir) && perl admin/am_edit -padmin + cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs diff --git a/NEWS b/NEWS new file mode 100644 index 0000000..8d1c8b6 --- /dev/null +++ b/NEWS @@ -0,0 +1 @@ + diff --git a/README b/README new file mode 100644 index 0000000..839f1e9 --- /dev/null +++ b/README @@ -0,0 +1,21 @@ +KoolDock is based upon the work of Dang Viet Dung, KSmoothDock 2.1. +For the latest release of ksmoothdock, please visit +http://www.kde-look.org/content/show.php?content=6585 + +To compile in debugmode, before making run: +$ CXXFLAGS="-D_ENABLE_DEBUG" ./configure --enable-debug=full +It's also possible to do it in KDevelop. + +Normal compilation: +Run in console +./configure +make; make install + +Compilation version from SVN +make -f Makefile.cvs +./configure +make; make install + +make install - it installs compiled project into tour system, to do this you must have root privilages + +Warning: If you are using kooldock on gnome, without installed KDE, you should know, that's necessary to install KDEbase to have working launchers. \ No newline at end of file diff --git a/TODO b/TODO new file mode 100644 index 0000000..ffba206 --- /dev/null +++ b/TODO @@ -0,0 +1,2 @@ +- Plugins (clock, pager, etc) in the Dock. +- i18n (translations). diff --git a/backgrounds/Makefile.am b/backgrounds/Makefile.am new file mode 100644 index 0000000..d4fd3a3 --- /dev/null +++ b/backgrounds/Makefile.am @@ -0,0 +1,4 @@ + +METASOURCES = AUTO +appbgdir = $(kde_datadir)/kooldock/backgrounds +SUBDIRS = default border-white border-black crystal osx fadeout fadeout2 fadeout3 diff --git a/backgrounds/border-black/Makefile.am b/backgrounds/border-black/Makefile.am new file mode 100644 index 0000000..579d047 --- /dev/null +++ b/backgrounds/border-black/Makefile.am @@ -0,0 +1,4 @@ + +METASOURCES = AUTO +borderblackbgdir = $(kde_datadir)/kooldock/backgrounds/border-black +borderblackbg_DATA = background-center.png background-left.png background-right.png diff --git a/backgrounds/border-black/background-center.png b/backgrounds/border-black/background-center.png new file mode 100644 index 0000000000000000000000000000000000000000..aac0687b495b0373c033a005c5a555b88201b397 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zaD4z_MyE9JODZS`|Cz$|=p#XCGu$jBX_~DsuQ(9N%_d zQm+1FVdQ I&MBb@0H$kk-2eap literal 0 HcmV?d00001 diff --git a/backgrounds/border-black/background-left.png b/backgrounds/border-black/background-left.png new file mode 100644 index 0000000000000000000000000000000000000000..2d68b03ea4360e09128b4cd217f034c1ac05ff5e GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Ng!3HGt-cS1gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBiAEaeZKPT4OQ;D5zTE8c`CQpH@LV0FMhC)b2s)DFSZ?7Np5-k)t{_*_IIG$Fg6&$y`6$+Wfoi40$?Vlj6C~oK3|4{hKq1GRAT^Dz` zdxRJ)zHO`fPJ_KPttaf@oU4ESeg6IFaedn7*(ZETm6BwoBaRxmef_&bB78&h_J}J+ zQ~zB^-{;rS!FkX0*#VLJg=OjuzBU>2mftv9m*$txDELuia?v+a1(?O9Q#k*OmnfxVKw^9bo`m9#s{Y8T!)lp9TA7!*O&x65>d}9S+PUwwcy6y?^UZx u?w&}OdEhQCQ2vL{=CJghL&D~E&*W84INh2u*)9MW@(iA?elF{r5}E+Anb5QV literal 0 HcmV?d00001 diff --git a/backgrounds/border-black/background-right.png b/backgrounds/border-black/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..baa9e1016cf37473426e7042d11b886a47086d5e GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Ng!3HGt-cS1gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBiAEaeZKPT4OQ;D5zTE8c`CQpH@LV0FMhC)b2s)DFSZ?7Hn3JnxF_VNCu;8_8I{R@IMKUsFod8++|ZEu$`v--YO9r;G?})eF(Ysu*aLUa2O2+wntd!!CHt$pTXlER68hPvJ z^C+1L8A0vh#xs99_bQcg``?;X*WSI0E60Rsrsc89iBY+$4_uA+Nvh*_?dkfOB)*{L z`^WiAH(7Ux{b$iI<^JEkRPIG11nuV!ku^1pEMF<`bQ$-Ch&Ar9I;}5%d|15E$wlX3 z-o#(`(q0Nq>;79Py&?71bAe{*>W&Vs^Bd!qu+OZFay|0q4e$347fRCpuAOI~y~Z@c zD?Iq=>@zYK{_%@j9C!`%%y!9(68k@}y3hQ%&}I+IlD^QD68#rMflFVdQ&MBb@ E0Ph3Vi~s-t literal 0 HcmV?d00001 diff --git a/backgrounds/border-white/Makefile.am b/backgrounds/border-white/Makefile.am new file mode 100644 index 0000000..90e09d6 --- /dev/null +++ b/backgrounds/border-white/Makefile.am @@ -0,0 +1,4 @@ + +METASOURCES = AUTO +borderwhitebgdir = $(kde_datadir)/kooldock/backgrounds/border-white +borderwhitebg_DATA = background-center.png background-left.png background-right.png diff --git a/backgrounds/border-white/background-center.png b/backgrounds/border-white/background-center.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5443437e1937a9f588e9af0096e9bb5f6a1fe3 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zaD4z_MyE9Uq8x%5bQfq+O*%X6%G(cuCDvjK literal 0 HcmV?d00001 diff --git a/backgrounds/border-white/background-left.png b/backgrounds/border-white/background-left.png new file mode 100644 index 0000000000000000000000000000000000000000..9166e553d0b31488bce6f5b777b8f981fd493edf GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Ng!3HGt-cS1gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBiAEaeZKPT4OQ;D5zTE8c`CQpH@LV0FMhC)b2s)DFSZ?7NJa!Hgp_VK>C@kNawkDK0}Q(A+<#Pk|_lOB4-v}q?KDt>oNc`L+W%3&<_ z+-L7ui|0LSu2hDVg3p|rf&xGzR$Nf=z5QzvG`|8-Q9c)qLq@+M=G4MJa}^Hw*s zE{OjS$F{{l`8E&F-ADeyvmEPtnU1WQb79ikUHLM%s;{=3TGc4E0*rpRJD9)7oA}XR zxQ=(pg5ZgUOogXB9L|WJRZ3>Da@^kCBe;XV%Im0-)Q(fXRlKLp4n1IMcWAS%&ooBa zJ13L^4henhZkUq(K2_%Qqmok()or9s1ZcK=b$+v|<5Hn=`i>*nk`wBF$j&$}cFiFB cfzf`(Ofj?5@vN*%fWge*>FVdQ&MBb@00LXZRR910 literal 0 HcmV?d00001 diff --git a/backgrounds/border-white/background-right.png b/backgrounds/border-white/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1fbdd2580039a38d3e5ad0afae6cb749b48f24 GIT binary patch literal 29237 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�v($N*g!4Si*>~R)yRvwz)|ak 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 literal 0 HcmV?d00001 diff --git a/backgrounds/crystal/Makefile.am b/backgrounds/crystal/Makefile.am new file mode 100644 index 0000000..a4095e5 --- /dev/null +++ b/backgrounds/crystal/Makefile.am @@ -0,0 +1,4 @@ + +METASOURCES = AUTO +crystalbgdir = $(kde_datadir)/kooldock/backgrounds/crystal +crystalbg_DATA = background-center.png background-left.png background-right.png diff --git a/backgrounds/crystal/background-center.png b/backgrounds/crystal/background-center.png new file mode 100644 index 0000000000000000000000000000000000000000..fd679afc8d6a7f500038b89a74009d64325a0889 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zaD4z_MyE9`mn9>fe4pQ3n83EgEv)1l!^OmPfe%;w{~Tgq zZ^h8d^n$^JYXS3xHM?GL=&bg$V(MlR5ztS#C>W8`z$D_}o)8G99<4w0@PA8AgS7)= z35yu328fzg!T9j|fmNaAvJaVg*Joeb?$F)fX?=k0jr>Xm)*Z~>_;Z!x9Gs(VnHEbe zX!xs~&Y5wOaWc!1`^-59{!QePC}nvheZk?!V{HdUkRvo2_#759KwYKZ@P%d8=3;|` QKtC~fy85}Sb4q9e06fQalmGw# literal 0 HcmV?d00001 diff --git a/backgrounds/crystal/background-left.png b/backgrounds/crystal/background-left.png new file mode 100644 index 0000000000000000000000000000000000000000..63b78ab5f93e94550fe15d7f0e2bd6a35788055d GIT binary patch literal 626 zcmV-&0*(ENP)WFU8GbZ8({ zXk{QrNlj4iWF>9@00Fv5L_t(|ob8vrOT$1MhTo(KO;TEvQl&$+D!3GP2eph>MemORZmpTE8f*#Ui0?h#l(CrY7d{1zIY2aFCGq$@9BQ za$Kl-y^ilqmgU&W7Mr-ZrNoy49lm*>IQ1H(1tdv|#8>&v<8zOgE7GjtP5>D7;P9j* z&aVgdud+;t6x11Z4)UW*+rgv9JR7hIw}6q!Y9^Hx2JONCK+i1X=bVNCfVs?Y(_}XQ z0e}~pkpj%qD?eli^8f+>XoBIb?Dgs{2mrb)O45aC0Nvy}e*qrNnI8c0ahVzX&<)Vu zz?tSu3?9>5TLEq8uNvArOE#~C(O~hG{*a*qXQ>9;Z$fXV0`R#pyaNbXmqvpIS{(q2 zO~9lxhKD6J;V{``1XQRDAc)3F!f64ksVp_St-+#M8;F2w!|wwfIEMd{oB$nHlFN8! z0wK1hxB{ZQl5qu$_~l(UKw}%aSIwj<4!5BI5brNc^>H7PV_xxgzDQx&&=349bCzrZ&{*N>1LI3~& M07*qoM6N<$g8f7ZG5`Po literal 0 HcmV?d00001 diff --git a/backgrounds/crystal/background-right.png b/backgrounds/crystal/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea5bbbac930d9dcd5c1f0b40e709a4a5dca5a94 GIT binary patch literal 464 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 literal 0 HcmV?d00001 diff --git a/backgrounds/default/background-right.png b/backgrounds/default/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..1adbf22529f38c76ad29ea7292b595ff03ef271d GIT binary patch literal 1099 zcmW-gdrVVj6u{5Dy=`ylgDcMRP|6((;s#?ym@)*p?V!K}0>nfa8ZR9gV)qJJ7DQAL7m&q+*I?I6+Od=G<%gm^B*t&_D5fPpS^j z2fSo@ePvFuwe{|zcJE$)o1w{k-YP1&qe~%3+H&JW7ax#S!-9QlWzMhSsnYJwMM!Dx zXch6WhFPqOIXCdF1-EBn$V~5-?q0L;VZJ|>`j$)}yW(t*1o$2%GWz@b_ekJD28uu) z7#LWrr)WT-zo<})8tV%|vasQ@(NEgRl z$GmZLY_r+si;DAhw!EpmuQLKhROV)1>ORk!+%BkSU9K2ml2W$#=tmcI<(`INMb?l-uOO1(*=*)AaOE}3<|LP!;m>Ms^v zX65AkK}K3HS1He57m;-BzWQo^?b||ht!@*N)NxiGz=1xo(P`YZTlJov_MtiJK(8jc zyhkr}c~AnmMx#;0ImcBC;SNT?UV7@8a<8Yhr1mC;leO;;CdV#EbRb|Nq?!#az2q23 z4^jX@b-F~O{J*)`*Z6SrhIApEfza-un2sgKH{@ul0P>kzFq!2oi(cZL=<(hAPQ5JJ zqI*@`Ba~(BMUKsFP|1%H6f-|u)&PbO2eS!?pf9>@L(w9pxm%&hNkhe>D7TYCJJm~$ zT-gz=2vxZ9CkyuIuxnB*q&l9obStc+qzF2K691qk;pDYW`OB4}8C4MUs<(#%;nOZ``X4yn?29&> zPN%8R>-I<^6Xk11Sy7+;fv~-b0 eIMV&Q13K zmQilQFbqSg|*gC01eN}-sKu=t$ktZ z`grHz{}=xBg$ICdyd0fg1;7b_*MEv1%pHZ~0f4PF^-y^ERv;N3x`Md%0^rEfxT1Ik zl5!6w#XSWPovk&eKmZsv?-WQz1ru4N=oMOP3a10$6o$N^{3#^QjED(xuNMG^B9Z{0 zt)-x#0Nk~thzM1!ph}_#>R2&EPXUa^r6pnaa3(}xBRi}cra2$dBRZOvVog$fmPV$a zOzT*k!pt<12*%A!3wzk9TBne-nn)=lqWmcU&c!*72S^dg0E9L(MBY>kdHh-@>$IAD^VHEuLbrnfsEUJ7ag%?4y08 zS!P^p0>kDd)_3NER#?pk)ySkmKM$)$7UqNcUdpPL_IpXDF#_m=T@q0M3V^T0Id;K* Y0Jzc85`Fp%wg3PC07*qoM6N<$g5=f4zW@LL literal 0 HcmV?d00001 diff --git a/backgrounds/fadeout/background-left.png b/backgrounds/fadeout/background-left.png new file mode 100644 index 0000000000000000000000000000000000000000..02719ce9186ba2dd51a7b079bdf4d04a27e79176 GIT binary patch literal 489 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 VfQuL-(SiT~002ovPDHLkV1izl5M%%V literal 0 HcmV?d00001 diff --git a/backgrounds/fadeout3/background-right.png b/backgrounds/fadeout3/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..2086082cce1617a511601600cc121365b80615fd GIT binary patch literal 771 zcmV+e1N{7nP)RQPCvx|!fgG0Hzl+rMhfA7xDK09N+ z^&C}W5P5MvO<#70!|%h*&D#eZ;?eW`a(6s_KkoORHaWy|K20Bw`~8Q_4gm0Un!f(K zy?xUydUU)}e-69d>rDuurdQhgcbgpm;K}{{`$suYR10Vo$`966J02dq}!EyCL z8OVs%769pe^-$>)0}1I8f@qC(^bn-9djr7s(g;CnyHd`G)-L5JlK-6NUV7F5u&G!w zKcw}-S`lQaK`B?Ik|Qt0lBiN@YEY`nR0tGm2(Tgo0AyK9bW|!MNX$KaOB76m5}ZR2 zyVTHUghIw32=xRVa^4&f5I(N#rMA#D0i-ohs#SW4j1HSL=BZCF`?WP9jVyHT`8I6T<3BECf! ziz@Xr=6c5v=uLV(Ii8m-gWz8xdgJHB(34h_G&n zoT4)%oshBTA@zz`6X1-HHf@N|&dE9aE`lrwVTt8YEQTno8myZSEFMY&)TZZq!sS^m zw|Sa}EF4a>1oPGy-9Vj@Ww8Wmgh7fJBJ{hqrnS5uPIRp|AZ@(I8dh?kqWMS%G6_eK zWpU+)l15T4GOlhRkf?5-#eVvJD1ub9KIVQHAdFXyHw^9FVWhWee1p*G+ESn5jvLQ$ zsZW70p5xN)477Ie9$OY!M7YE9B83W}eWe2c{~x+%PEJ5liyQy|002ovPDHLkV1kS2 BQK0|; literal 0 HcmV?d00001 diff --git a/backgrounds/osx/Makefile.am b/backgrounds/osx/Makefile.am new file mode 100644 index 0000000..cede254 --- /dev/null +++ b/backgrounds/osx/Makefile.am @@ -0,0 +1,4 @@ + +METASOURCES = AUTO +osxbgdir = $(kde_datadir)/kooldock/backgrounds/osx +osxbg_DATA = background-center.png background-left.png background-right.png diff --git a/backgrounds/osx/background-center.png b/backgrounds/osx/background-center.png new file mode 100644 index 0000000000000000000000000000000000000000..ebb5849afbcb28d28d1d1aef99e4b20a1878bc2d GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#Vf4nJ zaD4z_MyE9zopr05aQO<^TWy literal 0 HcmV?d00001 diff --git a/backgrounds/osx/background-left.png b/backgrounds/osx/background-left.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f56112e52077b19f82678a558115c95e5fdb90 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Ng!3HGt-cS1gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBiAEaeZKPT4OQ;D5zTE8c`CQpH@LV0FMhC)b2s)DX_u literal 0 HcmV?d00001 diff --git a/backgrounds/osx/background-right.png b/backgrounds/osx/background-right.png new file mode 100644 index 0000000000000000000000000000000000000000..7687cd50a3c2946c40fa4871d7e0a11d2fc58253 GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^JV5Ng!3HGt-cS1gq*#ibJVQ8upoSx*1IXtr@Q5sC zVBiAEaeZKPT4OQ;D5zTE8c`CQpH@-8580>_%&F(f^h2?4&|G=QZZ8 kJsB$mR1N_@Shl?t+>v*gV{^9toE0E3Pgg&ebxsLQ0I0M)f&c&j literal 0 HcmV?d00001 diff --git a/config.h.in b/config.h.in new file mode 100644 index 0000000..055c089 --- /dev/null +++ b/config.h.in @@ -0,0 +1,244 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_CARBON_CARBON_H + +/* Define if you have the CoreAudio API */ +#undef HAVE_COREAUDIO + +/* Define to 1 if you have the header file. */ +#undef HAVE_CRT_EXTERNS_H + +/* Defines if your system has the crypt function */ +#undef HAVE_CRYPT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have libjpeg */ +#undef HAVE_LIBJPEG + +/* Define if you have libpng */ +#undef HAVE_LIBPNG + +/* Define if you have a working libpthread (will enable threaded code) */ +#undef HAVE_LIBPTHREAD + +/* Define if you have libz */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if your system needs _NSGetEnviron to set up the environment */ +#undef HAVE_NSGETENVIRON + +/* Define if you have res_init */ +#undef HAVE_RES_INIT + +/* Define if you have the res_init prototype */ +#undef HAVE_RES_INIT_PROTO + +/* Define if you have a STL implementation by SGI */ +#undef HAVE_SGI_STL + +/* Define to 1 if you have the `snprintf' function. */ +#undef HAVE_SNPRINTF + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define if you have strlcat */ +#undef HAVE_STRLCAT + +/* Define if you have the strlcat prototype */ +#undef HAVE_STRLCAT_PROTO + +/* Define if you have strlcpy */ +#undef HAVE_STRLCPY + +/* Define if you have the strlcpy prototype */ +#undef HAVE_STRLCPY_PROTO + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_BITYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vsnprintf' function. */ +#undef HAVE_VSNPRINTF + +/* Suffix for lib directories */ +#undef KDELIBSUFF + +/* Define a safe value for MAXPATHLEN */ +#undef KDEMAXPATHLEN + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* The size of `char *', as computed by sizeof. */ +#undef SIZEOF_CHAR_P + +/* The size of `int', as computed by sizeof. */ +#undef SIZEOF_INT + +/* The size of `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of `short', as computed by sizeof. */ +#undef SIZEOF_SHORT + +/* The size of `size_t', as computed by sizeof. */ +#undef SIZEOF_SIZE_T + +/* The size of `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Defined if compiling without arts */ +#undef WITHOUT_ARTS + +/* Define to 1 if your processor stores words with the most significant byte + first (like Motorola and SPARC, unlike Intel and VAX). */ +#undef WORDS_BIGENDIAN + +/* + * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system + * headers and I'm too lazy to write a configure test as long as only + * unixware is related + */ +#ifdef _UNIXWARE +#define HAVE_BOOLEAN +#endif + + + +/* + * AIX defines FD_SET in terms of bzero, but fails to include + * that defines bzero. + */ + +#if defined(_AIX) +#include +#endif + + + +#if defined(HAVE_NSGETENVIRON) && defined(HAVE_CRT_EXTERNS_H) +# include +# include +# define environ (*_NSGetEnviron()) +#endif + + + +#if !defined(HAVE_RES_INIT_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +int res_init(void); +#ifdef __cplusplus +} +#endif +#endif + + + +#if !defined(HAVE_STRLCAT_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +unsigned long strlcat(char*, const char*, unsigned long); +#ifdef __cplusplus +} +#endif +#endif + + + +#if !defined(HAVE_STRLCPY_PROTO) +#ifdef __cplusplus +extern "C" { +#endif +unsigned long strlcpy(char*, const char*, unsigned long); +#ifdef __cplusplus +} +#endif +#endif + + + +/* + * On HP-UX, the declaration of vsnprintf() is needed every time ! + */ + +#if !defined(HAVE_VSNPRINTF) || defined(hpux) +#if __STDC__ +#include +#include +#else +#include +#endif +#ifdef __cplusplus +extern "C" +#endif +int vsnprintf(char *str, size_t n, char const *fmt, va_list ap); +#ifdef __cplusplus +extern "C" +#endif +int snprintf(char *str, size_t n, char const *fmt, ...); +#endif + + + +#if defined(__SVR4) && !defined(__svr4__) +#define __svr4__ 1 +#endif + + +/* type to use in place of socklen_t if not defined */ +#undef kde_socklen_t + +/* type to use in place of socklen_t if not defined (deprecated, use + kde_socklen_t) */ +#undef ksize_t diff --git a/configure.files b/configure.files new file mode 100644 index 0000000..030bce8 --- /dev/null +++ b/configure.files @@ -0,0 +1,2 @@ +./admin/configure.in.min +configure.in.in diff --git a/configure.in.in b/configure.in.in new file mode 100644 index 0000000..b9796d4 --- /dev/null +++ b/configure.in.in @@ -0,0 +1,6 @@ +#MIN_CONFIG(3.2.0) + +AM_INIT_AUTOMAKE(kooldock, 0.4.7) +AC_C_BIGENDIAN +AC_CHECK_KDEMAXPATHLEN + diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..271bd41 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1,4 @@ +####### kdevelop will overwrite this part!!! (begin)########## + + +####### kdevelop will overwrite this part!!! (end)############ diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am new file mode 100644 index 0000000..271bd41 --- /dev/null +++ b/doc/en/Makefile.am @@ -0,0 +1,4 @@ +####### kdevelop will overwrite this part!!! (begin)########## + + +####### kdevelop will overwrite this part!!! (end)############ diff --git a/icons/Makefile.am b/icons/Makefile.am new file mode 100644 index 0000000..9ff7784 --- /dev/null +++ b/icons/Makefile.am @@ -0,0 +1,3 @@ +KDE_ICON = AUTO +appicondir = $(kde_datadir)/kooldock/icons +appicon_ICON = AUTO \ No newline at end of file diff --git a/icons/cr128-app-kooldock.png b/icons/cr128-app-kooldock.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d22db0e845e8efc92fd752c4489d901c8ed2ff GIT binary patch literal 74998 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¦ls}Xk+DO>tkJr_AAJ5G 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 LChF=KEzwq`^-K*NqFm3)D$Ao# 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 literal 0 HcmV?d00001 diff --git a/icons/cr16-app-kooldock.png b/icons/cr16-app-kooldock.png new file mode 100644 index 0000000000000000000000000000000000000000..0a33cfb5ada0a6c20e80dcc7312a1bdb40428281 GIT binary patch literal 40220 zcmbrlQ!dGO8{j zS3Ox3@kdS^777ar2nYyPQbI)WUytw~fdKob@gIH+{&gTuLXyf5|C%?1arnP;NP7tl zCm+3B%&fejzdM)LjVVHT0_7=IDFrY%*_#ipb~f&@WP&%k+XisbK`wE zP3Y10`qiYx5%(mm9btmZo#R@DED5k}<8C(^fQxzOvFI01F2F*+4pVyi9rOO6bbu`aUD z?9~5#n7{j?Z1tzY_ALP4*W;(GtZ|YU z<^}MpGtU~2{Y{EJHzPw2DXZ;eX6ER2r;!AC6b*cJH?w*MM&<;2cMqvQPo8$4$9 ztcl!doCoK*H*c`>qc+11q;I6+wT>1 z@WtLhN}d(jG>sP$Q%tnCDomcC=1J$=A^w?-jBVFN^TJu*mGwigkBx)gin}wDztGiI zxD1&;aF_{eDn>iSysZ_7Dznd4VqL=?^>w>iS){eg*)Ct-Ep`rM)=C4Cr4P;dhR;1V zX!Z%zy9ckU3Zp|SPihSlHww?XDZ4^5o!=ls#M4zgg1I9V!ka&vGI!3J`spVgPe?ZP zGm@c+oL1P5Us|hm_TO`ilWKpCb?ayHy8JTFpZoeaoy2)#*g1ixwgOr`X1C(YI)08W zb((8;`>DOIT}2g8{`WA!7oq}^%d{R~37*QVjzhb<0Z zfHi*mAC_%9_w&X#^?r{q+=3g39DXIZ=KtS&_^**X zls65YzE0%36I91wKhs33Kqv;OA%e0_OoO)AUoeT5AHdHkJhJdp9^q%8r&rm} zcMm9@0R|R8JBx(_mxHuQFib+BWkdV%Vcwmpo}8ZSghtm1ocUeJq}S{1*2{DL8g|uX z(bU77k=gX@mnT!2y4aK>)x*Qhy@4q|)#TLO&9j9oKXZP$R}a1VtZT+oqtWDgG7`+Q zvqO$BdTY1B#nqW*+cut;Q*%AD^jfsQ4mLVB+Pc7O8y&%zj+={<^nsu7k#_X`tHaL* zCIEuX+-j3X4qq`@^n%Hr}Mfrd8V zJL~i;I5iRCNI71>R4<{1kyruKf(1fJnF?*85fn@zAGxJ8S&l&2i6B|8Ra;cHD&OY5 z86L_LlgiYTSdVjRwPIF$_PgKwG4VA}i`K<5GMrLSTwPnNO6sv8RW47?3cJS7Y}4$K z-}&qb%kceI0)`N$Xr^nwonn$7{?rz;XU2+vG~>wLD%gbRWChWLXSC__e8d&^A~mVS zeC1<&{L(T>nK5+q4{gEUERkd!ZbqJybT2t9`C*b`t4$0-Lb8dx*ko^9yqG_Sp$3pY zLX=SskUs!9nFIKv0a2v;z`1Z7Ie!lF(wlHmvSuby`=U(tfX(3A74u*gr5rJi834$* zXOX#z5b#kziuTy{ZMz}iS$yc7xmm1XmYCXYb%RK!INez}cn7#%rl~a<{EU8hJktxJ zctQbG%$-gUj6{Z1W4T^N!>XJBJvHyFo~cUQ^6&Y zEIE=t70`qq|Tj`GpiYw;LC) zT%rsXc249&Px>SgVwG`{WpT*Uw*ZvCdVjf3@SKRG9b%yWD5a?<#}YMs_lLVkmBC;{ z;B^f-VQDQmYbiS~OLuVu#F`e48&eBQ^PwD6upyZ5_5-35X7k+$2MvcC&pDn05@yk0 z)&yQFRdC)o9-+>LC9r(y=HpGHPYvVXhAVi{QbIn$bJ+&af{Iy^P?=bnPYD%h#g+m} zj#fiy#DinG4TB{`&?hv_oNI^;z+Ff#{SjUNsEu7bN@w{cpy1$l=(z`0ESnkuT(inJ zxWAoqVo`Y{+Ys(Iht!YM6rJgwgimyU9ZBJ$K5&Y8A>;j@?OXPtlEtVjDPiTZkuX4d zVgm8gy5n^2cZB3Z=)^iAkbiC^ZF<)RFJlbn+2uZ!6lg-NH7a^ahFOKfwOkSr(~xIz zx;T*t@=FekDT8V-&~ykrX?x0AfvLyR@DdK zbWBFkF+eYi1-fobvo!4{&;M1oN_>MT6P56g?0p+qW?`FHge3Gh(oW=&&*l2SVSAQF z03Hw2l+WV0Rr!4@Hvqj4GARuPDh4DC?HqyAiW%(O|&oC=UXYNoMMjA|QwPg=~XBZJ@7N9<)tI%&ri^!W(NWi>2|Li*p3zPb|t` zCo#6XmzrVndS4lfi@(tVO+n85n3zd0lVdcVI8zIU?dU<_4xw2Z$O4{-EzT&z3LP9! zj^vw5sEJ#;ts22!EA4+SNnHffM$_pg3$HcBg_{ltV5^v5y&xsjmnRF@$_FZTSrlN? zgx2*nWnlI#hfrJECYRXx7TWvwNhDwGM^-3n8f6r3bSCeLtm@l*HJ@@$C7s-=3uQ8u zfT14;>Dhb-UOV{=?^wS82P~Jj1$tSV5;C5{MU;BzYsJDCxS}7iEbV^*X~xdD=XC+0 zog)zMclbpWHAQFnwfOZc>aH~dXf7<3>6C#6ka@(r&!Lpwv)U7};K&QuvOhWT4dA~_ z+TB$FqkND&P_b{pTUvoC>c-yXsPdkD6W8o_z0y**E3AL3ttbkziwW|~Dy?PSr2Kl7nb_vLF#MG;gP93Qyd-81^ni^jw%9N@((L2xT0Q9v(7~51!+c~8UKfR5NrHZW;k99z389xGQ+*oN+&@H= z-OQo61!r(TeNEo#3kgI^obVA zR0p}gjuv5`F=HpFot{@~)i%Ds6E5IDJpm&VzhvmWcnANxh~hOuVBjTwc->z{)DTO^ zkYT`7EiG2=@ekM2ClD_6n7vSZFvb!KG{7JMerr$f^-($sG^sg?gOFMz?R?q*1^qk5 zVP8D`4y*rs6+7KKA1(cFI6Dt;(pL7KYGr$1O$%A0KJ@}h@y2H>i2{ga6Hda6;>8hE zYjA`3qaE!i4rK=97E=DY|O%Zor{)|Czg!1k~SxI24cs+uzP0D;i;5*W9Ek|IK07lcnTEHQ*4 zVX8N3;RGZvfE%CD7~oDV^S0IA>fXQN{b!Y(!I#iAcutq)#g8PIe_e1d?C8TcDz_gn zOsqP2Ye&Yz^hWIZ4dvr1mzUBs#HbXw7kAoM+P-Hw{j4lQ(DniMUUy$JQ+|R@dMC-% zyFSj|wWo#D>ofSeLY9mfzXRx=pbqiMYv%!^cpw(ZaK%2y7xe@dNpifeEsJoW3m9QK zXfvbzg?w#7C!7N~%nHtOf}Q|Qi5&OP4)Uzz=ta?=Omv4Sk|sJcO$PuZG*5QUf(CTb6|Q*JlI5Y zp`ddB_m;GJU8kc5%bhRuUoVReR>50Xs9RFZYqlN_+P2X@YcX&mX7ob2C5KxWob0Ix zALFP+2@CA50jPBbSg~_$P7Mlqec|r8aFR(To@XwrC=?r8Eya4Rk5dW0E|g2_*7!(k zA?cw}7G%FWjPE2+MG0bkFjO5NP~c}9As*8a%VD#4S`8*di!b$?JiW1w9d{#TGdb*2 zMKk3|0hdFKqM9r6B;2|ulO>U1*kAkzHaX8TRS6~uFNnl;;Bc-zz*?6H&6Pu?2JGS5 z<2^0spA|+6ai2>L5es#XSG|<{HTPjEujKsI9V%hO?+Zu;x~2I1O)KzUCJ_T+wHVqB z6=*L5@c`kq^9uN?CV>>nv~#>Q0iT1@;l!Zj5uf$a)Y@csXlhcs z7^T*Sca>)TMyzAq62$qA4T9FHSa359k#`x0=kOl`-!q)l)Pu+^h`3>&$`y^^SHpXG z=^+o+Mw;J#wFv42Hpz?h9ukicvCo0;{5VNt_d}tY%*oT7?9DWaeuEOSd5;#o$g1k^ z5!Eeu$BjB_HTfsv5i!<}mV&;?5N52yf$vo-LY0|RVhz(jQbm22=J9+Tfqw*|!EkZe zVltIjQ9f+7!Kw#$|SSedFeVxvcgzV%PdjvfD~x7Mu()j-#mBd+Xs73EXl zwoE?vqaU^l**;^lHsO;T{T;{TP5~mUdln07#3VWL?Jtc~puyF#cudQoMu4j(pCbZx z`B@t-BEj{2E!0WFS+30FLZpzSUKtfk9u5r>;=I?pRQCy4m?M7cTHWf&x@HaWm_ZC5 zBBZe_?d+5N-WiBs^47IJx}H13Y-{RKJ+bZVY7+nX6v+J{Z@}zBsM`q+_=0G(Tc!DM zm9p$*yoTk$It|2lZzFJBJ=)1-46WI5hItK4<{yYrYTC}hH^@FUXeQiaLDu|M4s?(R zMoH6^Un>}bIMZ9ha3Wd$`cvrz1D=hG)m1(F!&WK=o2v?&=@=-^b%@6 zDU-8Rl|XLts+?~e^T|4a{BA|o@;-h6SuoD);$1!B$26%pF(x#TR!@Dt;yyF^9cxIE z@~uuWlP0TEw9)BeDJELcB%YtRkA|ZGl;u2ux`GC>_sE!C^Z?a9y}RoQ`DD9=)vA0* z%yDuTIxhalqXqOPdR)iVUKxI+)Sl~$*1LV%gjPlNLUPZ}ftnbjjGQYx4T4AGK7U;&=APWj~Sgw2(NP zXjDx+f3#3x3}}4R!7!kG*hLfEZy}o!Q*bsRxB~Rf%-?_cazbNqh8zD6{ERo2gkg!uNOZP3v;8x*XL3-Lc|nGaD}I~x??*T=X*Ve71& zvNkU8j4g!bAc%tKsGo#c=TL{Z&{aQRX_)06nj>#f;+G$xqjlEL!>Tc@)WPEtUf!1?hTR;0RzyCya)XzFN;!LS~sHva+3!%P&`cHNY&^?;}%q*R?OT&Nh zP0(4ml4$tYWFKnsv-x*wV*grBnP;Ysh}w zOk!`@sbOVbv3gQpKH?frx}|7EBg*8i*Sx%`el&hnz&As$mw?|JO@?_ zY6fJi*s{Xa`)Hvhe=2Si+C}s#BN{8}wl774ITG|X*_B+rT2#Y4z85Xl&~9{$>fy|w z7&=>L{X*Zd_dppEE;|rYFYaLsgRK|MmF3?#G^2_q8~Rx>ty|SRt_EAld8Z? zy=)Rybr=S)8+oH(tT&EgZ%;{?%!W$y>b-Z-c?h08C7-~% zZ_JBNc@sBkV*Ct%go|!d#1!p|Jjp54ykqRZlCGF_z?jh6YYh+49OV=JxE^XRX46Yi z|2SLqi*C(p547h{!1OqH(yP@J6ZT|OIcjsJo9pd<%2R!sbPyN z;Rvj6*Clgp`Gnqp8=xhlGQh&npW3pa8zWfOL9GuF>8R6GJn7^=oAGD2{1IR4WF@2e zpp5sg8Eaiu^*YWx!gt*+HY86`KlTM*c$W)cUs>}~KiC#e8@PE5<>T(9Vya>hzG%i> zN&Csug`2}{N?BXrH?cc?g6?Kg4nRI~9&)tr5Hy~^Vy(i1hn@6Rx15w$V=rc>$SDA6 zcBUt*b%8UbY|W{}l(E67JvNNFT^ehWA}cS4yF&!`8-ZvR|2t`TCP`RQ-{Qulq()f= z$FPp71S0l6c$}6CF%*1+bDe?kEWkY<$>F`kIMp8wtjSbb#5w!~?xoqC0A+dr)T!od z;RUhU>J?1qH%1Zmd|TTni1UkS>n;(FQy{6;c6Gfz;Jxr6;He90Zy1iZE`{#YbWOFQ-POHezmkAO32Q|26)_BMblDN%O3 z1SY1^lx5lpPoZevWZ^p@9aX(v@1ZT5l-i&}BSI=6g`yEjRJCwis@hxi;APksfNMd# zisv^f_Tuff0XDU5i#V>v!rnu0ffFOnq$SH+BKr++uLN)P6sU!(HbSv+0X4-ss8LkM zQNsgvp9Dl>X$&vn#Y`ayTo1-H2Q z(uL{ic}@hZk<5+iKj65<2FJB6iV{Z^-VuLiCG&wv(OSZ$)E?6~x2;58=V5+;WVtak zX7z6!g-XYXjvg$y8%In}*&5rL?M?gu`OzMX_dK%>yRZ;*7R+Jd`4P=a=|2SWFPGSV zA?IVxfzX5VK&{>19x(S@-RMK04sL>;!LFy$#tPvU|!0$ zkL`{pdV(%kE&O~;?)ctSph10uuHi*<)4&^U6;C$g{EUhQ#qYngCEA986~HtxprzbQS0 z=O@wwSx+JJFKt<6IBbzOYktOnbkw1NyjYn?x_g?c5T`;_IMQJI}T=#`6^}%kU z7aqCD>6fO?dO3XU{+?^v=hdiRg|*asR_3L6VzvlNixh7&$HWb2PBE~t!@m~R4MJ=NH7g%3UgGGH6%)%=LCt zUrDG<+BUi;tZgWBK)ilYFAfeih-YD|8-lO~;SsUZ2}8^}t*MF+XfaS0`#G@lwCNA` zW#l7*jKd3v=^b5`h0Yy#Z0lCfh1uUZzdKSQ?V1OT1fZc`%nUWCv(%kt28`UE>lx&l z4jN9v6IV7J3Q>>(Eo>AO?P-tG z*hv_c=i>gAxsYzEa3S$y0@<~P)}y4c1E2h}ZhC&*$>EhETOzikYmzA_(Hb`A$0XID zmr;j8@l5@L_Cj67{ruRPo=5Eh^yRL#w$Iu)WSOHlTig+tS+Uws@6OG~qn`J(Kxb1@mJ%lWJA-1A(c`a}#%Obvin0q<8sAbSvrg(#%h4 z-?fSCxo$OB;>44od8FpX#A-J4Oow98cDMdZclOj|g?Fun=+8e9Mq5viNS*B7z*{>O@+d?~8u z)!v*^cQeJzb5_{ny-!%`S;7V0_obr!u3KwBtvD^vDraF|EEoN$2|B$vF2UCXr@qtD z*}N`}bDTv;knKxoULVKr-8X7&1CxWxYRJ=UT;SU6X9s*Mz|{IRT2D3(x0}+v8B@*d z9@A)4L|UUG;VK!eJV`NA5Ojn8b`7!rt|z2uth_|RVUkWD#$Ay3N${4q)`>{5-&)z1 z`@$$+WBWn4zL(uz1w7d@(EF`BI7Yn}gw76U;eD_8{^h3t{tYfJG9%|sUsi4on*lze zu0D7|&_~!MCWH*|aY?{|Vp>Uwof_nOSq<&rhl5Y+<~C6xBlK@;BK<{?aiic%bHbNP zJROiopqEV%w3kf+N`KEPFM)56N{>E%44AOOOnyU4Uyur@$vrD}Nb0R1l2A9A*Qjx% zGn8GS5%M%2^r1OOUktW;$^^t<;+@cGZ1lqbLj1T7q*OAcq|L3L1oNv2xZnIFyDwVF z-!osh0Wt?gibebJe%&C%xU`OPQOQogW}$+Hp`0K{^Z}~2$J58IU7)QE&_WwLSBkl9 z@)CqiYS^mcP1k4Z?wyjsUys?^*i9>PNtLEm!nSHsszZ!3TyLUyna7D1%j0G%8%cQA z3t=UiMKXL%s!E6Xr*aCj?X!&a`YV&w`;R++_2n;(%q+n;9PuFjq(T!D&Ds(E7Mi48w(F=abaYHqq50>6x)>H>rS| zopCX9*9nVxKgNP(X|!ZZ3~JRn;zGoyj;a<;I9nWz#PD{$bBSFVElh zB0$P5)1Em)lxo-}n~|X9s0cx9QgDKlBLkOMLL_0AcrH7JZ-)mf zLL+h*h7g@AQJ;`U&!vhA6qw4I!Go|yZx$465w7D5mt6gOg=3R(Sm(iEHT8YKP&+6$ zScxaeiE#;Xapk>qmLPF+2Pv@0sv#}#Iy?1DW}CwIyeRCuiSK{%p=!D*6WcMdy8HqTvO!i7at0ScCGuUe6GRlW3CEX`IA7vjch4xs? zAEW3o(VFizD&GlAg%t0K*J}?q1X0~%rS_SDd!+frBDG6id_dP3@7Ce`NO=&x&Q=&2<@Q4(O{_dL=S$GtBg>vx zAsCJ4@5z`F-}04LE3p%;`As*NQg+^}36zk22V@H`U^o22UHBj84Dm6^bq?RJg4ZwZ z)Db^X^Lf(MlOsPW=%sVJ1oBmeocrMM`?gvceT~Ol^+V{w5ADN_-faer$B#&C#cwUh zL`s2;-+VklLEsf2aWQSvecFLfJwX$4Ti>Xlt4MpT1CfPvK7@~^%bdw#gARu6bLPQ3 zx$QfFcvg|F;qpworSWer3HBP3ZV}9t5BZkSaaq4fNhdVXhhL9^<1 z(2p1W=_5cSU-2N>zA@j}ChFt)5wvQ?yu?PkI@NSX%BLsF=F=*^jnbbv)*T+8)zT|; zxK(l_C$L3fjL@T|pl8Jc& zHBSNX=vDz!d?X8`TtHMd58NBRF+jBEM2)_%*OCfA zSZg%bwbJ$8wf%$`BKQ6w8PJX=Nmu-tK}oy?tR)u@OcTJG#sc(9JcUTlns9!zq&~VC#~^65fUYWQ;I~^pc5gq&iir}l-4jy24)qoE~lRd z;0YsG);Ohtng}fHi@&)mE{BxX{E37m>5#c797qqL(|o&46*=p@oh9hOAD>1sHE9sb^FWST=pZec-n* zSl^*>p+lq6cVe4uzlckz+Z8~IH z!0^SBC(83%UH2U!^uUm7T`Fh620CE_l3-NBk}=zfj|kMS*=W!;xvrk9`D*{%UN088 z-0nH~iZ4?sWVP;}roYsF@+Ww{n9xMP9DZk1k+;QzH$zPS+*<(HBcDgZa>I-rx2Cln zxaUM;zwQ%76Ay)=$fqiGtNTdmvTTkwQkGlE7SkBI(^;42ko+U8th^7}VzVtg$XGm{s{3^ZJ~%s1F&@ip(r{M*m8E zL@(cCjZhfjc|Of|k8=GDh(rX-L)4_Dwy9}OVN(N0p*MUHm3TC$a^V$^Xq@qgLBP}2 z>IGYKhm^>fR6GpUhL^3%XRaRE*wK}G9-FQsz3aOTd zU!Ty<82C(E(F@?r#nT<4s962(BCQ4ObgHQyu64MsN^r4Lz{`f&L{7YP{skqxjV@%< zPgwBwAz=~kwgledWWJ|CcEkE1Jjr-W_m*o{2g|(5CS!xGT5F@e!FH*=S>IyA(b2kZ zzKKAq+s&4!A>T5RrkM9i$K6nB+xyrPaHpj{!9-or>KJpte|fJCy=nvw>;shQ1KoHc?=o!N$c~Rd zzIT{vd(Ftl=j~n;ecr5l$phJc5>xiRb$PhUX|mT2w^>`j%+CRqA`#n3K3UB(Y^-eAx;@kZrY zmYr!UQI4_&d2YMeXNli(J*g7m3eSStD+1axfC^K%MYz*+=e$3|@k)+3#qQcF@GE%S zKCtRa*)HY`R>V__?s(-v)MAE%?qtE)WnKzBv*L8YE+lv~ zU;&B7Eh@YbMMi>}g{DReseYo@4{KMLA7V!Fc8XTvnQEdjkXGceautm~%9~~6j7GEW zypPhirLAEaS~|%xb*Xg|rQ#ahvS_qaMEOs*1b3`5ebkJ0bqS=6lYf~TM^w42@UB@C z&BJ$`)EjukaXx4#zr8Qrl9y)3)Q)KvAyjZN$;0WW(h8=Kji*db??Kib zF*OL^oiHstb&i+-9*!Qq1hHeX*UL6G&Hh+V2!~To(R6*X?!imS13Kgtn<;w8v zoni@7>SN{3%qpq36|H9Q^lURqjcQYe)n;NwUri@>-2--GQ^ixc7jEt-9`RxEylO6% zPIRh%PmL!Q##jY(WblS1vq9lEGwP;zB$Ba&y8pB(=|2rQ?Cud?u8Zyw@0`1((Z99; zIUb}A&qAd$$20yeUgF7_mG)^GCq)h5x@_-EtBrZZ)9$k>9uGoMu-GV9UXFe{(m^9# ztU9(@VFp$d5qR^AKlXzC%3u(sGs0~=k#wke8)mEPyApLguYD*6|s^ZtGgS$b)uM(75@>100|K2CVNegZa^mv~iiHtL+Vv^K~1} zJSDd?Wk-%TXi=0>ZgrG&sTdRP#^XIlWa_Uck36ruq(>oVRCu20BgnN4mT+s5^k4H- zT+*{Ix%YOOsIiP)sS_FnOEmawJ~7#>iZaDV6+^v-*<^Y85R22?ZN1?VuU6LKhm|jy zd%QZ^EmYVyX>Yd4i_db@#kkNq5uH~2oG|(3V&-p=Jo7;LW^X=+?}ii_a*Y+H+N`In zT`vDHv$#Os`jkPuk{Pj5D;uA;Y`5tSbw7UjP0|e|EhG6WATO@IWfyq*^I0|MMbnV` z)i-PJ6;U47>2PxIp2Ki9a zEcC?bQ>_jlygwFu)RvT&*!azYH0DgRV|3QMGIw84C}cimgR}u+s~^vVwfQxkUGSlo zY11xPocmCQb@bT9-eZwyOhL^5G_J`D2BdmkF2@(mGBR_=rOZhj+4<{n+IsgFbcn^4h z;r$5^TyRbDw`#(LnTS(f-QEdxAm*4nenY6AE(SYIpjb^FkXoqzhp{Z2?}h4`_^{o2 zGgJ}&fy5Zi0~KadH`@6U-|@iVX#oW?J-?RJb2 zPg>$|IYVne6p!z@J&+?+Gd4xx`^W=GTNr-enCLe;0V2fC%`iB%pzVAq){yi*H>tho zQhpW7QD*apgl}8@ZLt1 zjhvmyzPR9Tx0;_491g^&6%?w@%h+IUYFxctzz0R}oh1t)i??Yd(4Mg?W_MYR6!7;e zIZ{X@aGaZx_7(9d2Ca(KCM9DKDVoOHv2`ixf0qx$^X2=d2e$2$31bX zVi1NW1f#=xm|UkYy<{@w7T;P!|KMsrYg2mFQeH@6#^t`=>@}W9tv>*5E8B3F5!X%? z-c53cZ|?}vFtNRM?a=M}>V>O)dY1KGRifvkqmMd0&sIf{*cgRJFuZ%h83Ab?a4Slu zB6Q1}EdS^hLkHFATp&tjAyB?YISh>Af5OEw(j`Oe+-P(&87%Ow%5&YD2Z0L9zd_lT zuKcyCchU>u{lIefzX^hhd=dTFi>n@K>*fPDm)ucEx%qfU0Im(<)|^IvS?SlGs?@|_ zEE>PKxBdl49+J712GciqZTsl=vRr|f;$i)~xqGs#BDM@J^?IS_dsEDZ&0|dX82jkq zO!K|C^}!Fn`4H&b0tbl7@8Cs3ZI`h85}Zf;^<&(m`1a>kd?q=+uR&~o_4#}dAH5MA|VBi*LciQ1T?o92^q7_Ti{PKIL!?6O7dB~nm$VtP^^It}sTey{bnzv|5qkhTfHS9U+bh+{E zGt3w~vDI^-MxX=b&G08rG^?(4Y(PX7RC?=-J=%zPP2J8kc(7Qj>!Wm;Nq5PU^1wzl z;&uC@`ua)zM41b-EyYCgVoo8jG6Sju=_F{N?&Luwob_0ZDnB~kv<~1Mj=65E46y!+ znPD2i4*4*N^IB+RLgyv9HTHT}qxe7_sFa%I1C8ztd@CqRlpRC6cCr;bt}Z8kYu10$ zY@h1@-Lw&0f$^h*zv+EBi|0=YbGu(F53I6 zU4tbSLdE;20kbfn75sS3E+4=~Tv!et+vFy5O`=X4L?|NcH#o#FEg>`=*_wS2Pc~9I zLO^=_1$TO?wIymkUshsEZHod}wKP|>AFrmZv`hx*-5#K`?6#^4| zU#=Inox9h7OfT^SbHU3{3(p>@}b@bN9xv}OTx9@ywS zNet$|f~R43W^Nu%u*jE*oIHcYKT|rdLa;-mF#YTS0?2F*oY_78n)q*%Zv8&Hvm0Gy zK7oIqS0+H{{`VIHWI)!{p-~_~NBm~bx~myHluPDqwG&X<6>)pV7qGUg9EN`n*=MOT zK}hDNyT#B9a`(E0Y-!B7bypXxTNgyn=73l%BAzZ>8-;^Bh3fJ8bp>a}%EU;azN@@V zJIjP@lr~NG+9Q)yBnvLEY}}e6GSVn>rZ3G7@W%XzxU(d{O02IQDLPR0QWW`PyZBV= z2>r2neJ6zIij9xk-za)pd{?^A zM)^VvWG~Kb@$di3oR=C4RostDQSzWmMQqTTEca8wgRu zPQkRTGyipFk?z>zBN&AVduXGc?;dexJ=pQymT?WB@@s@=3%-Vf!~C+JXzf$i(qYo%pvwB}J;v{vfx!xE)a1*bmTA}NTQx&kbDpq_!o}*(~a@D9*$Jun12l0B9=PD4> z=G&Q-c zre6}o5~?A;U3(J4Ynkf)G3z)Dmoi=1(5g5fTK->DPns}|NcG&x$rZR}g)mIka1*Q& z;aXR4J#U9Qh+=*z>(|f>J-Ix2xj;0C5DF!kDs@fqQD7u4WmvG%zYMul$`tnnXplUS zfYBg_69d*#uWnDHB#cUS>WzRJObAk_460`Wlq*ffY(;<_L8a38DtW=_w z<%UmyNQnk0)~%tEXLKV{sDMH_V6!gDki3IP$p#i~0K(6gsx8%zm~#>J%W;?e6S_n& zCAos1(!TyPiAJ+DA_rbuJyp%2vQh(rTdQA+CGFDnT0ov%kNlof*#F z(ptNCbMTbDI_SEs3)y*C5l{9=MXg$Mtfmki-R1(RX zML|DM4nxW?#Pvg!Ypf#)6g|RvHi&miI&q;!Mxg_S7=D3`kz>(+M@9$#yz$3KA8dw{+?;;j2uSjExfj$g$<4$G$Rje2uSf!H1kPDwEi z%Eq-1*ppa?tpj!MGE@kwRip*t20oB3>TUF~Bi0a+UIRt8i;7$?&}xDGwaFZyH8(QF zWmt^xL7*IJ=nRoXBF>+oEt(JYM}NWH7TCVC@26E<{Zk7r?L^j}!Z#mwfzihG&$7vR z-3mNuyh6^~ywz?E(GD}Y=9882iaQk44j*!{m6gN13Np!ZiW5dJg6n;&ho@ESJTcM0 z$wPCz20uKr=#LSBO>bg+6~nH>uVnq+xMiDAm?e@)R@FWqH;EM5YkzA)=NIY2|2|`i zle2J6aeTP;eD~=czdAm z%mMQ}S2|Hd!KTF_OkEI!J|)>NY=DW<+3kD6LhC1R-9Llgi~#))W}bpC;smiYtbPu$ zpO10xE3$B#YFB}CREpbMXt^a3&=cW!C-xZrzigT5bQ~8k>9r;C0Qn}I5HamF3`uk! z(OErFlgqkDP8;ux{jYYv<3~3fmM7(!&9rtUDICd^?m{vK1ZnB0mk{c3qMdIi`t=s_ zWcgEF$UFEjk;n(dHd)-S&2C10Eq1U=3S`fGLfssZtf8PWu};_(R8h?-Mq1|;S>*dv z``#lixhn6)%@)NUKEW@qlG?U%&hFYBrpbEu*hXmLOa^sb8ho$<=neV95A0Q>Q~0dI z7MHu2zAt)|tlJPG$iIOk1Ih1prSZXO^$W_O394ArI3)uzgs{Gr#c5#7;uiI2B(SMV ze$?O=^+?h~N`^DX?;euDDeHW%gd_ISFLc}=mpasu91s9bx8LA^g8hHd@p;?))SHs;d>~Dc zL#)3iq#t}RasHtAkilVzd(l-sap{rpPS6wCTfp_em@=;eyfO^`cbX&Tx;gnf(3^e+ zH8f`r2Ytg7R0VJo$7+8IcK$O+t}E;fsfVc$)i9?37lxgRSy5c_ER-~lAs0sK&)%6g zeE)opqR4-d@5Bjh!@Wans@%|5ep=T%ypkk1FZ{$K{%az*?McUYgPv}qgrm0kow3Gp z)Kl7#OH++@SL4Qt@jFuJ3sVWVJa>=8I-66*ATVe2O9N&k5J58nv?X_che=6@}lP<(yBx zMlVl69p|{c(Y{6-Rx`r)c$)JW=`;zAa0KmC)MS^;df`2^#iLRcet1YbspCIvKqHJX z7f*4BE@$@JMpy-0Yg1D}$8gFYQgOd+E2a|B?_z(Vh330Dmib@3Y5cm1R9R`+b za?pb%wUvP?7nPCqk*jLCg>J^@+%Y=q9a%P1!Pb>6O+?i+2mSdTJpW9i zR@r6X;KDE^fKdV-T9QgA2{8B#GZkXc$v{J!=FDIX8jAZnDA(R?Kj;qd8hgsL;wLHQ zfEHvAwEM*1o2qZ$?w|`rC5-&l`=Yp`HM;zA34-}9>zh#M&6f9?Y4tPZ+|v{^IT*pa zqod@t3fO50>DsaK{K0WIM9mG4Api9(@UJjf&MR@zm!Q9St}Qx9X?VueeG=*YAJ*PG zs;OY>0|ik5K|v4!sR}4a6Odj)ks?(#cRaS+mZ`S|>ASX78Cjv-j-t+o3~9A2pJ;)zLrfx!a=Ji9fO{ z)zd%bO2krvFatrnFk=JtNtLHz^wN^_(u~S~yknf;lZdQju8G303SfSs)G1H;rJ}Ym zgVqrA)_-nFWAIMtGq%v-~=xTJ}U#(1RvtUd{v$xu!QQ%rlFjXmK;m^&#h! z4BoPez31#4G?NUHZ1D|vLGOI9J7iA!USw#Rh1zu6V`p76c`sk>bVA93l42aI&j6yp z_M>#Y;^@NO5BuQyP(3Nd;dQrKC&Sz16)}`?Rd2A?aX}%8La8QF`KiJUljbL$RjJR^ z(4gMW`?BkE9)@RdyUxO&{z@H>J+d@P_ndr{nrS8cMAQ^id<~mvtwG$DB5IkB1~Wzm zZ%pKmXiXs=WTuX%jhs+;DY$!Axw{lzn=XxE`KJ}r#)x&(hwF=wW3qO|f9#lY8bvw3 zYNHJ56+;4R-h;lhTW~rmO58)_D<;ElhRfSLv_7-y>@6IORER=0|2EF?slk?ID*n@! zDHcR8=*Rgi)MG&Wg!{QS?a?v!b8*3cT)78EBA=bM3`YJu*&M$zkfg87*%$oXa5s2c zWft&wW@Nr?Q#$0OMe6Ju@Jzd}TOVc>Yt5t1`7>5~N~7rayU|CeTK+5>VcR+oYs!Nw z!_Y_}n9B|%O2C^Hk)mku+c)bBC;+|IodAT!p7S0BMK+mLt%-;rSb<9$MnbBBl9%P__m;Xmn@N3 zYn2<{GHCOvC^vtMy&uz;=_21$G%vRqejAJll@n2HJX+o*IJv|X<= zw1I0@d<%aX%C}cb*ii`m!IyXR2>XmN^vBjo+(~kUz3fnJhSzdA3_nY*pb&Bg8BuZP zjNeU4+}Z^(0&lY$@5kbT7DOgM3->~tDd(mxDk?()4FftXzDWsw?HqU9s1sSQvC~jk zLzrZ69QEa}n)yEa;-KEsG7rBP%T%OA+!58N_Gw@))4#ZYUp+ou@PGF1ul{Cz-I%Fj zf|eqPYs^x#)=_wahKQc?N>7JO;ZUcTv#=~2W==~@%kSa1*b8>Tiv-m=6p*>W{q@xo1tnD z6>`p3NpaV%ku93dc3!CRHZkeh=a+&+x{L4E!%A`ik9zjMWK>>$Xhd}<4M6G1?OKFx z{A>l_$;SPUlZ#9^HdYdU($nH+b(A6gsSW3U{6UveyaR4QWKTzrgBL*eFDD(hb3{ zces(=`P0OvD{m`-sO=USNHI^n>BK6azI*2xUli1Ohrr(}XMZ|?C=-nhTa!l=TPHu2cTpvr8?@6wR#c$cHFP+}Jv^Z{O6 zk(|INZ4vj`!URzNCeWjPqfDOuA@;itgC6(3yGm^}Ov{g0d_NgWW!nFXS0z|mDO||r z5--G!vU{7bt+?)0wzO``ck#!)*K48Zf!a)RM!H=jn1Q@MtLWiraZY+!9~~HP(!_jJdSthQcT(x0F&u zg0a_6anz|(dLL1yWMN(kQpSfe<)rsA3S2|8I$jF5!0GEww_r5v;q7;BIii5oQMjOT zXT;mUT%J47pZmZO31yoVh)7_d9UH3E|PvB8;4ObNYu8 z;~W~aEIm|@tB;wC6^BZ$jX-k{`ve7I z+6`jxSqg0-RRX`Zk7RUneUw?LDvNsH^#@_~y28Zbzju!xH_bM`M66W!RaI=EGJh4M z|Jsii_^aKJ3EEmW1W_iVKD>l4n1<;K@8DKdYm$*MI`+t6+S_*a$sw{2h3?u65U|Spk%x z^RC%_rhMLOp0{(b|6{!Qr3;~tB z&z}>D_Rav`Q0Y_2r;8q_6+Mgrr1TpqAJki<7Cvv{tq4YpPuR=gOdbR6t!*JNP_tnj5s+F#}sIrH8qwiqLcmGC)Ts)MQ&q?)ju68<)Qu6DP z44xKk`mAe5ukn()Xd;=y`S?|#T}T#E#bV*BP0V-7NY9;{#eT9DxXBL`>{~SR(d2A% zIf`>>ZdnGkd3v{``g}4s>n%6AZ{9G!ht%)4de?1R@8gII<}}f#4KUhw>*?d+LkjZM zQrorDG33AE7}z+RQLBy*m(x}Kq02!#DaXa0YIVvWSKvlQcBB5XCoi$%m#{)W)0Y1V zQ|MoXFX4pp5>pptXf=$r?mfRRz?=9p<<1ukBQ5uooPd)98m%GoDvrfK3DC@5%ugzY zA7m-m3m=x~H~*UhpLYOB#6=W1nTy2H`p6_HBy(;4;&83kqqEAkllU96(BVihmHkcI zi;HN3te+ib5Sv>Yl4d*}0V_34Z-yv^3x#>WItcjVtq~yh#~E{d z)v>^1(eW)7c&a|Zs&WBRv*2-&=AUQz-okdK<_$!9JdY?UcL5~gFQ8JV1|;F;ue2$$ z;%@=)m&Cz4Sx}-YGumaG575ZCaAk|_47q75etcfFvk4K~R0Y=4rux(~VazwdlB-G` za?wg;!*+^d$oU~sInm%E07bhKv}pq@6Xu34Gzbw!&4ysXWIMQYkYDd#AH546=ob@f zgp!sm=F->Z-24mJzvcd7+-bs=ty|xFT9T39I??A3m-U!gt{Yd0ts_pr+BK`6Wq!Pj<+R#!X^}du42&At*>|Rd zY&&Y@9cG+$v}RyV^6-$kqvX)&AP~l{qfewg9Z!lTp4_z}qU+v3dW)0v9ufj}7kimE zU3Pi$ASqa0z_|4Vg&y4FXM$BSVX#AJQFI@+P?UMx$hB^`s5}e{m*VmP2!zFr3pI1I zxppAoxoDa>M>B37r2jRzA^Zb`#{w-z6_j=N_y9SdWit%(LziwuRFWwCoZ44A z+yF^oA=U|hMZyQe{`%WuNZRs)iUs% zX@D@8k}?=)mftlF`*!?D7*Do2HALcXH%$dV&agSPHEr?e{zYauc4hZEI&P7=rN4#6 zpE&Tf6N1<@$Q{l?8xeD%7rjJ(q@@nPQYEYiAWR52+uy36cAJ<2<`@v@-#F z@x6|Yj#GR1)miGDTi_`8QWsiS)dq3mV(SPPJ^o&$0mv<^E8`}mFGKyGgoe%~{bid2 zDuPS2I$sPNEIPt{kc}InU?;A*)T8G&!M=p0aAs&o>MVJqXDly<-6WD)%tFe1B&OYLAzM3}IPeV(BTO6Z8!&jSa z`9vYtgvQZ8Ppc0jL(M_s)t661{|@cSiv~tB&#sO8oZ@YFuQ$p9NE~G^MwhB2ms_p& zE!#JOLRaRmu=K)D`x0gHrXkDc`Hp0pxXzK`8r_ghz(48ogciXbl7cwmx}VacAm=BOJX?SQVs-2ezwXA8-9u4(PPNjj^B;^?qb(PL8(?O%>U0pjzU&6 zl)kqr=4OYBv^7c8b;^#-@-@L=;q2nCdssUZew-auhN4N;9EKs1YOZHP`+|K_Za3NZ z!#2eQfB<<@w*l`{$vixV$EMvGS6x2wc`y=y?f90QYH)xF4#XscG(VgJ-^YD&Xbu)3 z{=&Bs^6*p4)BO)7swVb-0?{{{m&NdRW=}S|k2D>jr2P=V$z+PgFF+`#D=t8RoS+z{ zx!jIi&=@F9vB3&(o#sU}AcLQCcy4NTrsHXTFBDKb<*(htlW9 z{$Az1DCG8R#aYn!C-@DHcEHNVRA6!#OGCj{?me>$c))&tL+XP6C;+xq4f}P7d3H#O zNWQRGOgj|z63qa>>W&mU_Y`iAjD|NPAn9Jv5cnXXCrHMB%{PC6dXA2QBX1FOn0 zp4=~4#GhLjO#G9mn|4kQrc$T{z!?PBQedF`#Rj+x?Ssec z5SRXUxe8eg97)Ks>IbfTUdHWtasF|05Znw2Ab+xSJVHca@9ycy?S&S<`Ag zzjJd*XZUc19_FoMM*3FoBMw}z;fEC+!&{QH5y-~7Eizw|5*{h7e=$>D&uF_fZdi^p zB;0#jxVqqlPRctD2#ljazQqWnbs`R$Y=?D1)00#E$Cj#lC8aPhDlsr|6& zy3WQmlt44*lDoA*E6#g`!-j1XQ|BBL9{r&4AcV_vyLtUWTsGi?)K~Ty(Z3?>`N6{e z`*Juz0+>{IQmYrTVw%ZGNXBWKH&rG(m;?*%beoU>@&^RQ3!fzTl6`hKr~lEaeq&C|vpl%;V-a(B8JnQL+*FW*Jo;Q_ zB&;}mm$V%Esj*hDH+AKcK2a7}xVqdGmL8%y0OIkzUbXuT8hDVhF;n4_Y&O*CQk7s_ z&h=_P2QNAUZ}rnw^w^`-By=7s#Lu+qJ|Y#?p6Hez%h7E3W>hp+8ewz7vL2gSD)RvwQ9-J`af=xTW;Te_{ zGqd~k6BgR*k^jD}0`S;V#1I-* zkHteTj<;YCk&ZCjnLMgm+Tki1r>QZG`vXb`8Ju=rk(wY@p4pxnV*S&L)1dpXi#+R> z$K{(>t?#wl6pd6m?ze>~c{;<(f)PlrEf<(y^B<28&TP7%YrlzAK@O)$xO@PRhzZ#d zo+O+fZD861qgzTvX`acobM8t!BZ3|t$F?;yJCxaIF+)#-_P)R85jD`{KnLR!A-_pr z*gy8%;RiS5a6Wnt6URJyUm+6a`8PdlqmdIhFh~R!|vyB7Lej476*YyyzwCWc=E8%cy zMQz@+KQjf!pvJKLVatT%J*fk)Wdd&pPaPomuT;ja>eR2X_soN+Gce#-7r(_iCS7@d zLjq}FYZ&%7pWN>hwdcVKW6$Qy+O@|z!D`qT5~{WoFPHfXz1za^?_nY*gUMV5jvae+D>g+5$_Sr44eMV7_1JCo6`4Wo zy&^*1nh^Kqneu17z9skk8n4`GT6aU;FB@nmb9_Ah`!Q%##F@*_EbZAM?a(!nKE9mScWyx75)1Jrby{`dPp~ml+D{)KRQ~6(k zg88$%0(Fh!@~q5%kfR#pTX*aJ$jb%Z#3AN}z?gLb(O3iHahjl7gb6n7AFUT(8F!!< z7I@_#@hG73D?HUv(=jVa5v5J6wE5q;d84l*_9FMAAGgal6QSQaj6RDTL^$VMs^kZE zPV?oPy zEfX(8$REE8R!{*ar@}rvB9XScK)CDe3v9^R+!rR;>&v$IG7&8x5I2F?m>MsvfmnOPk|EDLIYQSmbEGbyjC1(k$ zw5gB{At@$~r-te0k8QQGM2vsB0FkremA3r0OoJ-y%ZJM=t0wJ(+5bIx9`7t!0Ze7O zGz-6sK)JZcA?sJnTXCGDGjbmZlaOajj%8sJh3TmX^DwBhc2 z8%`#aE1FMlmB7#WZE>G`+(S*nUOGMuw6Q~=(}Xnk37;Ck7fjW?6BSLjj?2*Xf*YS{ z6uO5=Jc41O8zuoVs^dmZwvb`e=0s?#gv5P1w+wG9X%pE5w>=ntNdH8hXI@r^zr)hj zm4Lsymbh|kU=`w)W+|$E6x*2uvnIi60FLsfLU4E3WIM%zM}SO=b!FWoG@V!lfnD0R zNP`C(04&(x)oz>OMU%z6?aBB6i33;2)9LSk2dwS*H;?Pvnhuci>XMj#pLTk$nCpH( zEO^K#(O*>OkBikg*2;RmvPsvh4_C^vw7vX)lfFTtF@}RRpGo51YhfF(3%;{}GHm+N z*kQTBiRysPby52}01d3}xY)>$&3;WTrSMlEM_9ZKZmFtWq_iSWTDx=40O?tjRCVp` z-41u&@Vkd$2=bgbxbPUSDAZa*qodTcXSP}^x!g{(UAT2ORjPz(yyIXOP} z?=N$}$1PeBzIhLR&U;E;pAY6zOv*V5G2LszE{jd#a98u>6_*>gjsw{j5R9HUc@JeJ zY|hugZ@brDT1_Vr1Uc1e(yl8$Mr93^g?{VQJk;heXi^*AqA<0-$Y2V*^hmGELe+n# zleJaP|6B8G{boDi6~PNkBtHcXZwUBL^219vz7MB{L6Du6np;yaMlcJ?J>4tr?2?Fa}p4vicpo{MiybI8Ac`7l4=F>E{l8`GGTCU<@MdP@ly z>|2)Ajr9;r6MAy2E0X07R5k>ByVv`K7K9E<`G%BbAokwZTLV^2;w&_yguvcvyz-+>_8L3u09J z)x;voeDO4+klht1h>75hJ?;ztg=^Ikguk$VpB zYDi4UJ5o2EP?ov|f64bzS+T8cD`TlXpqmVou9-zP7Ct^O2}?YvFskG`VHIp|>Qt*_ zEXQ{)+QO+D7xKfOTM-P;py4$xK>YQfUl1PKMv}7!W%#oolP$WgN}JzU&}&IjA;>eK zg>vgI&ZYSv#-kn}_mh2Qq>?bC2EJ9_d=M}{Lq&)- zswm}hcb?P5jyh!KJ6GnTc-g%G08mGMGEnX~knOPLnnDILRJnm}(XOr!(q73FQ*!YN zyBf4Uz(m<L0YWL2kKPY2K0{H{`?5X9Nzu;Mr%$Gp;+c-y0dpYDDG$b^DMEPBr{i)v9+7;>;VF_F0j?Q09QtyVb5W(nu0T+ zTU#`N5I{MtgzmkCm(+_oFjR z`+*f4Sn&w{#W(k*c@rc6{dqK4J5J`~wlt ze)lrkL(qRz+#gc^M=EZ1oEzc^{Wa_V*BMPLK8+C!9}*Ue^$8#GE8#Sm6*lPr z1_jB^UG8?OD$pbx4kxPZR~`%~B)!K$R!Lb(N=o4iWIp6>g_VK{{@s3`W>U|Y#@o%a z{YGW#{$T6;^jRkXKTTgK4U1{}{QPYC{uK$1PbJv;=^Uzak>Vgtv7+9&qZfrev9{~k zjymb4*3cSI)|k3E=dqpZ@QILRasJC(b2hEkmmQa{yVa0$LE7KnKTL`Z3oOQfb$P;6 za=6P>t&jFvtzIp7zFWf)u*StAHAal^| zq0%ggOczSo1OPY%ZIZz^B437LNd8fQPZm9LJF5rj14VZ>o+s7MW8R$@&PL*cLk5o& zrtC*|rFQMJ+%M#JsuqSxMYV<<6d7)~kPwXIJ};pQclG^5ap3kHlB2=^@9~2%n+`t3 zJ$%(aIR!G#T!4@Hq8vmoX1^l1GppZ(v5j@OU@_CS^=Co#fO6UC>><~&;KWH%m>W;$ zi6#uM<8r?|2YuqgKO(!QiQf=w?fkm36Py7Rsxa()c;Gtr{?&HpXF}}~j>mRZ;W+oK zN1}NgfU02Y}6pUs~F|{e= zEa?m8!#vMyKPVE}0Xkfso|(2SfrWQ?%1giAP0Xl;JN-5{zoz-?_2`IpPU{EbUC{3_Q-7*G(Six6wf~q84S0a z6$sOWjkml_o-k8i(yf9+3G=w_Y|oyIz4SNJkgVv7j4>X zZTEq7-bYBn%--8x5Zfu#m@+upBcnB|vqUj_urnuFPPHsnx0xIn-hL^|l7cX{nrHLnTdE$@nn=Pyw@yR#*hK^6|0}8=dbnOu zg+FoY0G8`tveWoK>@529Use3C!k6d%vup1oU*Cx~r1ZK?=|#`%MgNZftgr4iT@fY6b|DVh?;l&Q`KpDVgN9qGGoh=3!4{N9oJJ=_?7z{zO5QH$( z?S6MhY87n2PiTQ1F}|o;yY#TSH~tl4IK_J4jC3b4@xZnL5%NkFk-rt37ls>{?`*M| zB8>QSplnG{cu@EP0E#4qIV=VrKv9bg1nejV-bv`J!g4|}WfSPKjOpv*XfeHQ|&r;JXyMq%6>VCe*Av_ zV+Qe)&G%obQQ5)drUiT!-h>%5}|8rnX$2bqViL_7tk!-v#!CxMK@vLywmvjdB)}CDu&MeL(;sW zl2Tn2!3zTF9;>>l>e)jrl=My~tt4I0I!rj6)&JcoA5;Qnb)0Me}*;!kp#try; zTbSq1cb$D0#~2B3e=D&hO6#gvS5=jj+TA{TFN_9x}c= z2Sj2gH{4+R3*zk#SWcU-iRwNY3-!StsdzX@?exz9pbg*Hq~9mU07}#A$+_k!(7?pabk>(E z%s#^@?%DN-F2+yC>-Ck6KV!Cys|(v*Tr;9gSvV>DQx1i2vQIRBIHjeH_t+x9Yx>JG zs)o?D+5HnlN$FQVy;V#|auQB*kWWOlSbyj<4U3B$3$;s*epj1YgzOw09)9I)j)Jf*oxA*Lr%>t;h4Rf_I+AE}&i3cX0Py}=7rJF~op z;BVUPjJ{VLT1AG>81SVKY6%e*X9xbT5WutoAWv9qm)A4TfLxJ`01Uiyk0F7Ev_PQd zvR2Uc?I~z{<(QNGI`p}a!e&!?*s8|KEkkGPzaD&+FWyWL$YZ4lEM^Smons1X%)bHj zrRE+^WFIs@%=jl#(rXbFTvFN^N12+Iho7zm_zPr1qya+go5}%6HxjSA>#c%|ml@qg zuMN8>0Zw;@bQhdabahOMAC~DB_yQs=V&4aAybQb^L645&y&X~I^5RS;N4+t{?f9J9 zS;ZjhXc~%L`A`O8R|+S7iQZaTor_LwxxT9^i>+U$j;5LYc}2#gqD+VVmRhg>ALq9S zI$fHbEx20S71W2Is%r%_aLz>epKi>~G%rM^uW@IdZ=jyJ95MCm1rQ5NNa{U3A0*IA zrQKgs)4#|BB22nIX%FL@eHfAp8R9@zQFTm3Cdp&qrB=a>Oop;L1nu)xCEKE`B(_LDZtAB|S1H&vW8&wy( zwJpA#hG~kxkK{ts(gWb@^{`d~au4ovvrj2y?zS?QFc6#3( z0bg+a-FP-9!p5M89?|);bbz4hS6((<2G{5@P~e_yeMq6$!0qpBwmliQy1sB62uwMt z^oMxC^eukSDDhk!xEUFhu&Sz_Nu5Uwv%5sgpTiHTHwf#dOisfp$!_lYs#7HA! z7&>Ag(oM!v3>TzEGoLK!gx)AZT9I92I*ms!;yY>`_l8DJB^2H z=^@JAr!T%K(GR%v1SGgX+dB$qc$(;3%$VN=r83N_gE85ID!;~5dt`h3^ysS>SDwC5 zY_`2R<@zOMz|l0haxP|BKmE=OPll~~R*WXRUyjsZ8m9MEan4kA z)7BGpomA<^p^XF<>#C4EytJf-)$VjdD>m40j_G^w{k4x^N@_nQtq)2Eq?2Ml&+OWT zv(uOJg{>YEF9c%G|5&ct%t&p_E}U$<<`&Mjf5@=*Sh0bxuWR_7`4@#wn=g@bjjwH` z@=9TYp-vo4qljw~a|KEtqQtpbU$oF;y+}}LN+w8B9SvdT7G6l-r^C5bBTG@W{xkkH zP3e9_UAkJy@!8e)NhV(e$c=VWl9hG)Vb>=sqvA<%99J5_C2nsO#2GcT(u};SYuS67 zHQG71HqJ3->@DvTHo0H>E9xgM|$`YYC zo=1JImg+fbtLc?Wa!%PIFR|O!H1ISKzDbX*kmAr{o+MzGhJiYHL)zPmCSBvmyK*hs z;K+`=&x9d=1;^l|jf9=6N8CpwDlv`6UT#^!@@Y4pA1B@+lfDU{Sm9hZK=PY=-<-F1 z0N;QNXzPXh}J&BztB4v2@&uL}QbB%PrL4v`H1v^DbECcjpLIvqfRT89lwr5BS zs`zI0qv3%{@<}hRL*$&aCtC!dDRMAjMW_6F3Z|d$)?f*5ggo7P8-SBwSnkb|C{^eA zf0qC36AMpaZ@E#!pD$0xn(Ko>HqFjyhVSij0b=PN;~q!D&b>qt<+Z{-&yO5V$t_V2xNVUAM%>vMpH{4W5uuU$r{B^4P zaRzHHjO_LQv8_`^D~eOyeV{i3UPl` zj|{}~1AfafHaK>fAnHFcYqUKDW$krwQ}3+ar8=pHHTSANO^CRDKcmhIK<~QwjWXp_ zrSkMvZ2n#IOMgWlIX5HD-~5`Cq-qOT(1NB{lwiP<+XDK*xHI^gU#vM=xc^~#N%BtD zgCFMf)QXRuM-#?5B4rL6cUVGNv)p3YbVb9Xnv+>0d+rmH!8nr0hAOIZb#7u*MX?lg z4sWY5&l;f(4Zey#lzSJ)#?w;{^l)kxH*=0S2e&;B6`P%VFTtq7A9_*ZPybG=pMtSy z_NKnhhuCc0uCcOv3nKZ5DFk5Bd)~U&OV#+h4Ufm&W1@)b2fnMpSJu}f;%`>3Utnk9fTt%*Zi~Q0R+y zw69KQzn{5$OnsE2--3QS`c<@mS6x57`S%Si3Ki)46`UcB;zvJWF433UhAPiw(+W!` z9cPfH`-iK1<`$?*s}K1LZ>EcWZb+sWR5*K=(v3_U{W|x1AiFWEIv4C2Ia)sJ?^;yh zsz?(_pUlZL)MSp_0SDzXEp2BPu`}1x~WG-1cLah7t)6zEX)7Nb{u6u>4v}Ix8AB+xv%Q%zr#QA?ihT^RoK~# zwrV_4-MSX`Ma54GV^r|-`|a!FSIA}@5twfW_w=|9Xi62NV`vTH8|4P~hb=K~QhxjX zXGzOod5NU$dc{HfK>){YNkD=-=MJulbdF8Vy!!K}gr^R1T<^!vhN8&QvXB!IGGCg? z2L%)-?!MXg0F0}MMEmzg)o(}Dr0Px-tB2L8>sY^YR&dVT`XuzBh;5?MVDLt5?&*_e zC!&AM$fbtyMV?c!1$Ch`1$Bf`T5GL0qpEw9^Q&KgncUhEZ^|w0m%1VwD5> zpTrsZyr|k}X2`Z>8jTp|22e=^sfzcdgoJjGu1VIFG{uCCCE*`NXWYwRHW({OETbh5(zlSE5;P?LVZ zJi6gc-_m)*4~q{;U4d~{M!x>p z>R=hOq4Ve7GkrInmNI5M4gwM0azTLcBW+XnM0w(F239XmEXfau8(q@#cRcy&I_vD3 zfiz_QhZ8Do=9@{$!;j2 z)J}Z5CV=IOy_kM0b-=7DLr$>zeut}$%(MP9dk9(Pps?4nZ@k+~pYm}Ixga>@>~q-X znGn@P1>;kA$m$y+0Z1sMDi77aF5oGB`)$_r72v_fE@1l2&-a_p80$@4seoVZk{7fe z#+qg3U+J<~P?GmM&lC9R;z1$6W4bmtW}NL_X=l_Pi2fR4+2v#AFZQ!sRx<9kZTY?O zCpx<zp%5^0Z+)c$AO7&&t~FU4mL73c;4#?)?FyKTHH^eCN@GU!<|}GqI!={F&tC1W0~P|L%6(ch4`@nmdLsNjd2<7OUK?r%p19kxkzUT7CVH%o1Jl z*c;=i20z7AM7`rXuXbczyTLYa8)EcWvg>k58$rHbdg#n^)tpmYu7%fvivLZ8{kAep z=~3_v(4Fg1P+j`+s=D&UE6j+PhF|Sc7AX^5GNG^82BelBT-i!6BNv0&exM7!_K5!G zfrjueOzT844p5CXv$=9iqap_oqxwN9KR41?$rTXZUk{0i8;LgBx8PZ0>`1oVn z5bf#pfuDQTsL>U}5JeX!>8vhhy{)RQ05ii2PrQ{sYAkKsK$O%V(toya)O-V-s4vkt zrln(aIOO_SC*whm7YE((SI#&a)1|9*P7!Tl0lpWU8{cW1lqs*2lut+;Ixuia5%ohe zzA!g*|B8PuA9Rp>0^p*M@wL1jX}Nnpl?Gc>&nv_=Ua4Er=#cRs`C4%C7T@!gXq7#e zrBUYFMw_npCH$~5s|yi9j4%X%(H3OdzuPVlsq$8B@^tsq;Nre_aA(w;A3r6HYsTDX zGYjitZ}arrQ6M~(2ufa(dhna+`=k+JZvqXAREzj%cy+7up;D7&avRSLRWhwHa62r- zzrbPj8q~$07y5F@)r&vbM2q5ZtllY^j<$9As|E^Ufk&G{ZNq8nN)(2zs>?m|7a?>p4g*O|~G3%27Y@_T~wJ zgu9n^sx^33M)j_X(;mD`yE}=;;-~Oy?5hZmk}SQEH{7z`EVr3?$rul2TJBI-2)8+% zxHuhi-QWVKrSUdW<7_gHeEX6yowD})sWNw8EPt|IXvi*v23RuuAP;b5*@ej0C)lS? zyJte9(H`SEWjl%X7qnXUidUlepJA&$RbBSU9shikTMxB?x8*0hh-kaTdU!AQ3(LWw zq<|EImgw2(sQH*!OcQsFq0x4N3zv}l$SlrGtG(j-aNOao)X3oxz#SzLOSb*Hw5#Os zhf;MwJigsV9mu4e;TF$u=l8Df%3w&5T4sGt`>0y^6}#8%2lG#cKlyV?a`g5DDr`oc zSjn1SXK`5H^amho=81_{<%M!e3Fll-LrR zELo~S7JUEi^L;V-|EIa@{D#9}x`eRNMNM>mL6GRZmslcdMDIO%-_^@1(R*)ELv*WK zU5Ho~VMXsPY;>#d2rM3!K_X49X^1iX_NT|iHq!) z(1@jcW&`||HCC=Z|4@FieT6PoeWrH>l!oeGg|J|IitOisrc?ya8fm+zZ>QZ^PZ;JF z<7kMmJBq_g+3ZEQz~$mh$8`}$P5~;(byE7tm6rh2k^;5%YJ%o&FR8j7F8Ot2fSSWa zk(m@+IfN=kpO`^vtK~yq)X2RA=)b@QH^b2UH`=CB6u+v+7g*L=whKFMkChRO9&%(s zf_B9^SFaelvJ>2>h8~?ImQLb%)+=3{o;;9pk7)!R8jc&@h zFT%{?ZeA7Y3w~M8F4S<}OfCAvmibVN?=0af*nmY8lRNl0Vy=^w9eTYsqpEmhztsbX4q-7R0G+@26>&Q_c=ef-g~C%p#{Jk%KpLNJXX zVmaPSv}Ey8;+QOQYy~nnXx8cDRfEX&Q0Nfj>QC5n2nB-UnHmfq9;0&+egaVsMg@Fi zvhNdj-AmCi$Yf9qGQO^kqbYL0*PQTH%**0u(-+*s=gPg6knCnRr;P?uE-r>Qv*)V> z#w<^+_3sIXe@KbJNC}NXj!sRio>n}5g6)kW&r*^#wNnq!6X6Q~xFr>xH@|3`lfcLG zm8JR*v3&E`pB~umW#m@zWxQHDpva{x-=&~`cr{_rGp?Zfkuy_Ft1ZjDg9*eC0GQAr z$aOZzpgYHZ&C1DRy>cwm0epotdJ*ImhWb^12Hb3Gd8%SLzQ?I>boQbxc0KR;CpH%L zs32^)Z{I!u=2@ zVN(}Hfk$^-d~R|jVRWX8X)$J;7Fwj_zdTUY0}$WVT3fp|?0tmqKaN~Yd1-~vTgG_E za=81}kz(3=HUd~B8474-l;JZIvLrA)y_)X^C1HG)&nWx8t(ZKbkg=X6GPy@5JX?9#c}U)DGTDx(y*r zH{n%DTY`@&5v}{+On8tQWtuF+1G%>|S_}w74vornW&AnFMX$A^!#v3IB03U#I!5DB zPuSEpbl#rwDyDVe>miryN3`dD)>LlqZ=Nxk5N?niTC}&x+AJ;7@cTj2w|&$XMTT3% zj0{Z02CvNABfo>R52)Yu>=LsBj^d+h`Kj$ZDRgpi`qe()p6pKkM+PjTo}l=BJhPl% zkhD00J()qv7+-(vAjlEcS2u8#-j;?p5&)y8#BR)GWR#Rd1}lHPRQo3=I_Z>4nF;ri z0=Qqc*!)V|-uuF>SQ+vnw+xU&l%TUtnu1pM?-)+n?G>ea?TR%W3aHw_y_{ioeuqN> zWT5jKckYgscn(j&s3xqSQr(yu6%M83O%mgCO+=Dxj`!}BE7m-i))2*`k=ilF8!h}& zPL=I<8H) z<1z8J)Vu_kmFRD6`4ogq zGHOU?mlBnj-a$hYR%gAH7de%4(Ri{%b$@qH^Um1?IPlFlr z&KbHI9ah&W8+tLHf7)+hrSey&V;_?kTL!weV2v#wFQ4Q| zt^~EtRKGINlltvS;MQP>Pt) zs%bLS{&mMw8)D#C2jrq`s~6^OR9WXY)-1JEH*(sSc4RaMlX@tHGD#(jY+g zBcl0wJDc?-HbVC1_dW*Rn&R_ZgTWzS$)1Mv>_*nx<9p#37ZlHSiBE|!+Hl}(!Oa_k zSIm7LO36~~V7IXQR>1UdxkEOZJtH3^zpnG8xkq_$sOO-yhy0UmZFn{QtNQ{Q#F+CF zI_T%Cu(*W>kB2OEFZNxL9D_U%^&9pHMruP;PoyAcd2J3*Jf$YUdM*r(tQmRi2RqA> zr6sld^u8;{H=(X!tXUHPY?M_CL&s~}ZYjuI&-l_ww5|Cue=8NkUB3I?9(p$jUCqyb zzO2lavTA4m33I0^^PqfbnziJW_&DG37!SPSVy7?0Ym|d9D8cN`2B$mZqvvz%ywZuf z$9O6sD>A(gf`$nCnG70$N7V^wym!GNY3y0>Vto*@m9-|ET4uEWU6hupu@2n$z;qh%ld{T9#O0<*v~1-H>79* zQ&GyXO%n%P*7zOW5--7vpoqY-@j_5-)~kD42Oax{?LRlzJ4-t@z2dvgckqnwV}rhh zf_=WkO7=Mk4!bfkvY1oB{TPQLLnWtVd&NyooL?Pe1CZ}C842feA4jp}o$l1mxk`N+w5j&pF*i+aT7DpaU8F?gL zq2eU+MCj_XloHw%x9O;u?FxLCH3=nF@fY6hAvOL^&}3eP=x^JjYu5J8?{|su)fiJW zho4w{jRx;c-E9ODt6Kqxy|Ad~D7D^!yP`(^L`!b;p{@1%Y2vwDO`c>UWpgk|bG^P0 z2~EI7qoAB!4-;fyS_i>CY`b`RamGM(G~)6!)7WJ`UlBhd`meAZ4d)$^I&up+ukjhD zH_^~w5P^I55TGa8stW#eZ*qMt-y$WQ+q7XAb%!zS- zu64#A6}kB@LjR%9*<}@yofc~+D^z$7>yqd`g@=)*nU~I_`!e4qG2E)JNjeouxQ`=4 znwUs7=o8G5*Xv%6e-b@FrvE8Nmj=;eN~pU0s)^_3Zh5R|IcE17G@>USq-WeZE|KRm zd^`jfl_QwWu8rW#Vf8ph$j~i;VTMj~Ou5j82scYodXQYOPqbr$wReHy%+1<`*4rP3 zocCbNTw>DK?m7P!S<&Zw!}infRG02Iq!YFT-Opex9vN2uEKPq9ba!uV-`CNvGV z)B2}ty=ewcD|be~VnFRKY-M(WP=lN$OfVx%s%~XO4;6ms2j1slQ6$*Ov1)qz^)JBL z4mr2of5kx(G2L&%JXbVMxv<%Oq zAUa~my~2@$z_VVw1*WX@v*vZM1kvUmMQ2f#IM8M3Fbyn_T7LaT)(bDw(-O$)=lcm7 z=58seLrVIjdiRm{8-nE1FvI1GOxS5|I?@O*vI%TM_=m2~7Eyc)wzdh~&1p8lZmAyI zt+n+mSS%w=T4pM*WqRCN4t}P*ts8;?Qf6AERs6bMh&F$0exv@Rn_&I1WuA-qm0Gt> zkmsy^^Pq?bTw(*P2(w-bOr{Vhsv z{S@se54RS@>oH;?*fNzN6zaCOx+EB)x<9$_dM2Q+<3*)rkAo6f0qpD&b9jk)Fwyy+ z=;|7$>*N`OhOow8tHx!CUkQWD6PNTI?-z*K(pg+Jxc#+KhZfQ)HlFpXk=buF^{?o@ zi|4@~!0x{uIgo{x2ke{agj6ammrFO}>XiGK`484v*Qb7i!tu-5l}KQ?F&v*og|0qQ zjlJ)tUrkR!v8$Bte5#@Yu65BHli!A~TYCZq$1B2OrEXH=iW%p6gBc%Ugn||#X$w&f zB@Gjj^>?Sv?(#;*&971oW{jvMz3a4PBPbftXasE^11gK>2g9Jv=o zw61iKV=dG>oWF23xy)q~k)goG610M`l^OA}ba5!|!2AUYTAS@M?qrGih@Zh)GUzti zzpREMKJEKOM=MC$5waR4f0jlneItDQB}yOOFO-6cWiL)lU6~8)QM^x^7VH{A=h~b8 z3BG&C)3d zhULP8|Gp`}-acs5H~95mQ&O6#9WNGH(A6H=ATK6tXD^!(n5EoM?#v>Z81*S18K~&G zPHlGtjg)vR=i>3Iu758&z439n`K^OT<0FgzHZw`0e$P_j0EX;@!%5$<0qG(39DWAX zO4}Hp=#ToHTR9`KO0VOy1^6F@^IpX0wS2LB6q8ufN`y9fBy{gqBYvhL2yw=#z0#Rv zLk3zivd8LF%4voCmC6|E;zYv`5FdJ(+qyFqn~nB+L$AtXLV#0Ufm8 zZP=hxv@D1y@3o*R9@k+%ePuOYK+-^jLHcu{Oh};AZGr+f?$^D#0kJQirIX%BHUppr z&xGlnrFp^5f6o#@8JXK?23M%*Av3{?HSUj#zhOK9vxQjoyp!o0dRWD`UEESq#DCy` zvbsJuX2zn8mEFCWXj={UYcoyE12t^^I#JV?&_kz{xs(E=f~_ogyBxME?RK9ed1n#q zl&XWk0V%E`P)+GR0~MPuoQfUaWm5#+#&{sA5@#rJ!`1Y75QJ+8uE#=s06VQO1!*UP z`#*K;Q{d(EsxRKH;0z6{he;O@md!S}-}n65k=~6>1~5*Tfo~M3$CA)AD+_Ai>Tkd0 zj*XK~CscEKW(*Zfsdc|sY!oKr=Opc7Zl=^co{qkKvfdr4g5jPwwSLy!T9aYlJV3 zQb^Aogv5V>yJ;S-Kr+;6(pFS+2OFHNiA2vIh>R^d<%oQEX#Z8QptEZ3dGA`_9Qa8d zQBNjCPEgV@7Ff~565cM^`Mh5&$DDu3e&1^);d)rHC>qnd#Y`ykS5F}(c!#I8qwdAm zv21e;yIs!KtfTu0um1c@!Y_~|*0m-xEVn_0=(*tN;_X8ZwyH(;&r_d2*Hm2>?fieo z%SLb806!6EOvpC3`SmaTp3{u_!2kayRVW63Irl{l=ye79ab@_cs*=1eIKMn?%t_at zb~t2pJ8&0nGa+tmm-=B?=|?tuOZpc|URu#Qf^MzOX_uJwVeTSGZQp_5Tm9F;jhcx8)n+Ii>nxFaI{ocGzd%)W^B{R(+?T JRHtAO{y+H$0=@tM literal 0 HcmV?d00001 diff --git a/icons/cr32-app-kooldock.png b/icons/cr32-app-kooldock.png new file mode 100644 index 0000000000000000000000000000000000000000..aa39910aefad50c8771fa648752bd73644be5fac GIT binary patch literal 43501 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

g8sJw6=iGogA0b7Q~(Bq?hi5k_kU@y@!Xm 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 + + + bisiek + bisiek9@gmail.com + 0.4.7 + KDevKDEAutoProject + C++ + + C++ + Code + Qt + KDE + + + kooldock + . + false + + + + + + 3 + true + 3 + EmbeddedKDevDesigner + /usr/lib/qt-3.3 + /usr/lib/qt-3.3/bin/qmake + /usr/lib/qt-3.3/bin/designer + + + + + false + true + true + 250 + 400 + 250 + false + 0 + true + true + false + std=_GLIBCXX_STD;__gnu_cxx=std + true + true + false + false + false + true + true + true + .; + + + + set + m_,_ + theValue + true + true + + + false + true + Vertical + + + + + src/kooldock + debug + + + src/kooldock + + + + optimized + kdevgccoptions + kdevgppoptions + kdevg77options + -O2 -g0 + + + --enable-debug=full + debug + kdevgccoptions + kdevgppoptions + kdevg77options + -O0 -g3 -D_ENABLE_DEBUG + + + + + + + + + + + + + + + + + + + + + + + + + + false + false + + + *.o,*.lo,CVS + false + + + + + ada + ada_bugs_gcc + bash + bash_bugs + clanlib + w3c-dom-level2-html + fortran_bugs_gcc + gnome1 + gnustep + gtk + gtk_bugs + haskell + haskell_bugs_ghc + java_bugs_gcc + java_bugs_sun + pascal_bugs_fp + php + php_bugs + perl + perl_bugs + python + python_bugs + ruby + ruby_bugs + sdl + w3c-svg + sw + w3c-uaag10 + wxwidgets_bugs + + + qmake User Guide + + + + + libtool + + + + + true + false + false + + + false + true + 10 + + + + + + + + + + + + + Kolekcja dokumentacji programu Doxygen + kooldock.tag + + + + + kooldock + kooldock + Kooldock + KOOLDOCK + bisiek + bisiek9@gmail.com + GPL + COPYING + 0.4.7 + 2007 + /home/bisiek/kooldock + + + + .h + .cpp + + + diff --git a/kooldock.lsm b/kooldock.lsm new file mode 100644 index 0000000..59e61d7 --- /dev/null +++ b/kooldock.lsm @@ -0,0 +1,14 @@ +Begin3 +Title: KoolDock +Version: 0.1 +Entered-date: +Description: +Keywords: +Author: KoolDock team +Maintained-by: KoolDock team +Primary-site: +Home-page: http:// +Original-site: +Platforms: Linux and other Unices +Copying-policy: GNU Public License +End diff --git a/po/Makefile.am b/po/Makefile.am new file mode 100644 index 0000000..50aeed8 --- /dev/null +++ b/po/Makefile.am @@ -0,0 +1,6 @@ +####### kdevelop will overwrite this part!!! (begin)########## + + +####### kdevelop will overwrite this part!!! (end)############ +POFILES = AUTO + diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..f2f03c8 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,658 @@ +# translation of cs.po to čeština +# Jakub Sen , 2007. +msgid "" +msgstr "" +"Project-Id-Version: cs\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2007-09-16 00:09+0200\n" +"Last-Translator: Jakub Sen \n" +"Language-Team: čeština \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: I18N_NOOP;i18n;tr2i18n\n" +"X-Poedit-Basepath: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock\n" +"X-Poedit-SearchPath-0: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock\n" +"X-Generator: KBabel 1.11.4\n" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1018 +msgid "&About" +msgstr "O pro&gramu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:152 +msgid "&Add" +msgstr "Přid&at" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:163 +msgid "&Browse" +msgstr "&Procházet" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:665 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:150 +msgid "&Cancel" +msgstr "Z&rušit" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1165 +msgid "&Close" +msgstr "&Zavřít" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1101 +msgid "&Delete item" +msgstr "&Odstranit položku" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1100 +msgid "&Edit item" +msgstr "&Upravit položku" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1072 +msgid "&Go to Desktop" +msgstr "&Jít na plochu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1163 +msgid "&Move to Desktop" +msgstr "Př&esunout na plochu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:667 +msgid "&OK" +msgstr "&OK" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1016 +msgid "&Reload configuration" +msgstr "Znovunačí&st nastavení" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1159 +msgid "&Restore" +msgstr "O&bnovit" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1073 +msgid "&Task List" +msgstr "Seznam ú&loh" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:161 +msgid "Command" +msgstr "Příkaz" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:162 +msgid "Name" +msgstr "Název" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:49 +msgid "

KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
'Cool' panel pro KDE

KoolDock je založen na programu Ksmoothdock 2.1 od autora Dang Viet Dunga

" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1598 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Nelze spustit %1.\n" +"Prosím, opravte příkaz nebo adresu a zkuste to znovu." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1585 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Název programu nebo příkaz %1\n" +"nebyl nalezen. Prosím, opravte příkaz\n" +"nebo adresu a zkuste to znovu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:682 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Přidání hodin do hlavního menu a přepínače ploch." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:154 +msgid "Advanced Options" +msgstr "Pokročilá nastavení" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:714 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:153 +msgid "Alt+A" +msgstr "Alt+A" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:164 +msgid "Alt+B" +msgstr "Alt+B" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:707 +msgid "Amount of big icons:" +msgstr "Počet velkých ikon:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:718 +msgid "Application List" +msgstr "Seznam aplikací" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:685 +msgid "Autohide" +msgstr "Automaticky skrývat" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:745 +msgid "Background" +msgstr "Pozadí" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:740 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:742 +msgid "Background Theme:" +msgstr "Téma pozadí:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:730 +msgid "Background color:" +msgstr "Barva pozadí:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:706 +msgid "Big icon size:" +msgstr "Velikost velkých ikon:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:700 +msgid "Bold" +msgstr "Tučné" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:728 +msgid "Border color:" +msgstr "Barva okraje:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:758 +msgid "Bottom" +msgstr "Dole" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:768 +msgid "CPU" +msgstr "CPU" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:702 +msgid "Cleaner text (bigger memory and CPU usage)" +msgstr "Hezčí text (větší zatížení procesoru a paměti)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:721 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append it to\n" +"the ignore list; you may also manually type or edit the window's name in the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Klikněte na \"Zachytit okno\" a klikněte na okno, potom klikněte na \"Přidat\", pro jeho přidání\n" +"do seznamu ignorovaných; můžete také ručne vypsat nebo upravit názvy oken\n" +"v poli dole. Pro přerušení zachytávání klikněte na \"Zachytávání...'\",\"OK\" nebo \"Zrušit\"." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:715 +msgid "Click here to manually add an application to the Launcher" +msgstr "Klikněte sem pokud chcete ručně přidat aplikaci do spouštěče" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:720 +msgid "Click here to start grabbing windows names; click Add for each window you click on" +msgstr "Klikněte sem pro zahájení zachytávání názvů oken; klikněte na Přidat pro každé okno na které kliknete" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:771 +msgid "Clip desktop workspace" +msgstr "Oříznutí oblasti plochy" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:772 +msgid "Clip icon area (DCOP)" +msgstr "Oříznutí oblasti s ikonami (pomocí DCOP)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1120 +msgid "Current Desktop &%1" +msgstr "Současná plocha &%1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:751 +msgid "Desired Monitor Height" +msgstr "Požadovaná výška monitoru:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:750 +msgid "Desired Monitor Width" +msgstr "Požadovaná šířka monitoru:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1047 +msgid "Desktop %1" +msgstr "Plocha %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1030 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1132 +msgid "Desktop &%1" +msgstr "Plocha &%1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:770 +msgid "Desktop clipping" +msgstr "Oříznutí prostoru plochy" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:465 +msgid "Do you want to remove " +msgstr "Chcete odstranit " + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:729 +msgid "Dock opacity:" +msgstr "Průhlednost docku:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:741 +msgid "Don't allow wider background than screen" +msgstr "Nedovolit širší pozadí než je šířka obrazovky" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:160 +msgid "Don't forget to chose an icon." +msgstr "Nezapomeňte vybrat ikonu." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:689 +msgid "Don't scroll while mouse is on the same icon" +msgstr "Neposouvat ikony pokud je myš stále nad stejnou ikonou" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:712 +msgid "Drag an application to add it or" +msgstr "Přetáhněte aplikaci pro její přidání" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:716 +msgid "Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher" +msgstr "Přetáhněte sem jakýkoliv spustitelný soubor nebo odkaz z plochy pro který chcete vytvořit položku ve spouštěči KoolDocku" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1020 +msgid "E&xit" +msgstr "U&končit" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1015 +msgid "Edit &Preferences" +msgstr "U&pravit nastavení" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1014 +msgid "Edit Quick Launch &Menu" +msgstr "Upravit &menu rychlého spouštění" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:677 +msgid "Enable System Tray (Experimental!)" +msgstr "Povolit systémový panel (Experimentální!)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:675 +msgid "Enable Taskbar" +msgstr "Povolit pruh úloh" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:670 +msgid "Enable Taskbar notification" +msgstr "Povolit oznamování v pruhu úloh" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:732 +msgid "Enable a solid background for KoolDock, it may be transparent (dock opacity) and of any color you choose" +msgstr "Povolit jednolité pozadí pro KoolDock, může být průhledné a mít barvu jakou vyberete" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:731 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:743 +msgid "Enabled" +msgstr "Povoleno" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:678 +msgid "Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P )" +msgstr "Povolení systémového panelu KoolDocku; může být používán místo systémového panelu Kickeru (je ve velmi rané fázi vývoje; nepoužívejte ho pokud nechcete pomáhat s odhalováním chyb)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:676 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Povolení pruhu úloh KoolDocku; může být používán místo pruhu úloh Kickeru (panelu KDE)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "Error" +msgstr "Chyba" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:696 +msgid "Font size:" +msgstr "Velikost písma:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:691 +msgid "General" +msgstr "Základní" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:669 +msgid "General options:" +msgstr "Základní nastavení:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:719 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:131 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:295 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:540 +msgid "Grab Window" +msgstr "Zachytit okno" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:534 +msgid "Grabbing..." +msgstr "Zachytávání..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:688 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Skrýt KoolDock po kliknutí na ikonu spouštěče nebo okna." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:687 +msgid "Hide on click" +msgstr "Skrýt při kliknutí" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:165 +msgid "Icon" +msgstr "Ikona" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:74 +msgid "Icon and artwork" +msgstr "Ikony a grafika" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:692 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:703 +msgid "Icon text" +msgstr "Text ikony" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:749 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Jestliže používáte Xineramu, měli byste povolit tuto volbu pro lepší chování programu." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:726 +msgid "Ignore list" +msgstr "Seznam ignorovaných" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:701 +msgid "Italic" +msgstr "Kurzíva" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1098 +msgid "Item menu" +msgstr "Menu položek" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:157 +msgid "Keep terminal open after exit" +msgstr "Po ukončení programu nechat terminál otevřený" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:56 +msgid "Kills all processes called Kooldock" +msgstr "Zabije všechny procesy s názvem Kooldock" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:67 +msgid "KoolDock" +msgstr "KoolDock" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:661 +msgid "KoolDock Configuration" +msgstr "Nastavení programu KoolDock" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:149 +msgid "Launcher Properties" +msgstr "Nastavení spouštěče" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:755 +msgid "Left" +msgstr "Vlevo" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1154 +msgid "Ma&ximize" +msgstr "Ma&ximalizovat" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1013 +msgid "Main Menu" +msgstr "Hlavní menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:713 +msgid "Manually &add Application" +msgstr "Ručně přid&at aplikaci" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1151 +msgid "Mi&nimize" +msgstr "Mi&nimalizovat" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:158 +msgid "Minimal Options" +msgstr "Minimální volby" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:710 +msgid "Move Left" +msgstr "Přesunout doleva" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:711 +msgid "Move Right" +msgstr "Přesunout doprava" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:699 +msgid "Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen" +msgstr "Přejezd myši nad spouštěčem nebo pruhem úloh způsobí zobrazení názvu spouštěče nebo okna na obrazovce" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:681 +msgid "Navigation Menu" +msgstr "Navigační menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1070 +msgid "Navigation: Desktop %1" +msgstr "Navigace: Plocha %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:673 +msgid "Only Manage Current Desktop" +msgstr "Spravovat pouze aktuální plochu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:674 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Zobrazovat v pruhu úloh KoolDocku pouze okna z aktuální plochy" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:117 +msgid "Open File" +msgstr "Otevřít soubor" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:773 +msgid "Other" +msgstr "Ostatní" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:767 +msgid "Placement and speed" +msgstr "Pozice a rychlost" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:752 +msgid "Previous Monitors Width" +msgstr "Předchozí šířka monitoru:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:769 +msgid "Priority (0=max, 19=min)" +msgstr "Priorita (0=nejvyšší, 19=nejnižší):" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:73 +msgid "Project Webmaster" +msgstr "Správce webu projektu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:663 +msgid "Remove" +msgstr "Odstranit" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:466 +msgid "Remove Launcher" +msgstr "Odstranit spouštěč" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:756 +msgid "Right" +msgstr "Vpravo" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:717 +msgid "Right click opens the icon menu." +msgstr "Pravé kliknutí otevře menu ikony." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:155 +msgid "Run From Terminal" +msgstr "Spustit v terminálu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:156 +msgid "Run as different User" +msgstr "Spustit jako jiný uživatel" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:683 +msgid "Screenshot of minimized windows" +msgstr "Snímky minimalizovaných oken" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:739 +msgid "Separator color:" +msgstr "Barva oddělovače:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:697 +msgid "Shadow color:" +msgstr "Barva stínu:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:694 +msgid "Shadow offset:" +msgstr "Odsazení stínu:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:679 +msgid "Show K Menu" +msgstr "Zobrazovat K Menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:764 +msgid "Show after" +msgstr "Zobrazit po dobu:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:733 +msgid "Show borders" +msgstr "Zobrazovat okraje" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:54 +msgid "Show configuration window on start" +msgstr "Zobrazit konfigurační okno při startu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:672 +msgid "Show only minimized" +msgstr "Zobrazovat pouze minimalizované" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:698 +msgid "Show text over icons" +msgstr "Zobrazovat text nad ikonami" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:680 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Zobrazovat menu KDE ve spouštěči KoolDocku." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:704 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:709 +msgid "Sizes" +msgstr "Velikosti" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:705 +msgid "Small icon size:" +msgstr "Velikost malých ikon:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:727 +msgid "Solid Background:" +msgstr "Jednolité pozadí" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:736 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Úroveň průhlednosti pro jednolité pozadí (0 znamená plnou průhlednost)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:708 +msgid "Space between icons" +msgstr "Mezera mezi ikonami:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:759 +msgid "Speed" +msgstr "Rychlost" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:686 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Spouštět KoolDock skrytý; pokud není myš nad KoolDockem, tak se skryje" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:690 +msgid "Stay below windows when not used" +msgstr "Zůstávat pod okny pokud není používaný" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:662 +msgid "Swap with" +msgstr "Prohodit s" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:737 +msgid "TaskBar Separator" +msgstr "Oddělovač pruhu úloh" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:695 +msgid "Text color:" +msgstr "Barva textu:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:693 +msgid "Text font:" +msgstr "Písmo textu:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:738 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Oddělovač je čára vykreslovaná mezi spouštěčem KoolDocku a pruhem úloh" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:766 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Čas do objevení KoolDocku pokud myš dosáhne spodního okraje obrazovky" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:757 +msgid "Top" +msgstr "Nahoře" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:744 +msgid "Use set of images instead of a Solid Background" +msgstr "Použít sadu obrázků namísto jednolitého pozadí" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:684 +msgid "When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taskbar." +msgstr "Když je okno minimalizované, snímek aplikace bude použit jako ikona v pruhu úloh KoolDocku." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:734 +msgid "When using a Solid Background you may tell KoolDock to draw its borders (rectangle)" +msgstr "Pokud používáte jednolité pozadí, můžete nastavit KoolDock aby vykresloval jeho okraje (obdélníková oblast)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:671 +msgid "Window icon in KoolDock's taskbar will blink when something happens on the given application" +msgstr "Ikona okna v pruhu úloh bliká pokud se něco děje v dané aplikaci" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:746 +msgid "Window placement" +msgstr "Pozice okna" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:747 +msgid "Window position on edge (%):" +msgstr "Pozice okna na okraji (%):" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:753 +msgid "Window position:" +msgstr "Pozice okna:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:748 +msgid "Xinerama Support" +msgstr "Podpora Xineramy" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1560 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Musíte nejprve zadat příkaz který se má provést a nebo adresu která se má otevřít." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Musíte zadat příkaz nebo cestu!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Musíte zadat název!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Musíte zadat uživatelské jméno!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Musíte vybrat ikonu!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:760 +msgid "Zooming speed (ms)" +msgstr "Rychlost zoomování (msek):" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "kotyz.king@gmail.com" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Čeština: Jakub Šén" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:159 +msgid "checkBox1" +msgstr "checkBox1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:664 +msgid "checkBox11" +msgstr "checkBox11" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:765 +msgid "msec" +msgstr "msek" + diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..e4794e6 --- /dev/null +++ b/po/de.po @@ -0,0 +1,664 @@ +# translation of de.po to Deutsch +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Florian Sievert , 2007. +msgid "" +msgstr "" +"Project-Id-Version: de\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-06-05 04:05-0400\n" +"PO-Revision-Date: 2007-06-19 22:03+0100\n" +"Last-Translator: \n" +"Language-Team: Deutsch \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1018 +msgid "&About" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:152 +msgid "&Add" +msgstr "&Hinzufügen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:163 +msgid "&Browse" +msgstr "&Durchsuchen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:665 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:150 +msgid "&Cancel" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1165 +#, fuzzy +msgid "&Close" +msgstr "&Durchsuchen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1101 +msgid "&Delete item" +msgstr "Eintrag &entfernen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1100 +msgid "&Edit item" +msgstr "Eintrag &editieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1072 +msgid "&Go to Desktop" +msgstr "&Gehe zu Arbeitsfläche" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1163 +msgid "&Move to Desktop" +msgstr "&Verschiebe auf Arbeitsfläche" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:667 +msgid "&OK" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1016 +msgid "&Reload configuration" +msgstr "&Konfiguration erneut laden" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1159 +msgid "&Restore" +msgstr "&Wiederherstellen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1073 +msgid "&Task List" +msgstr "&Programme" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:161 +msgid "Command" +msgstr "Befehl:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:162 +msgid "Name" +msgstr "Name:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:49 +msgid "
KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
Eine Kool(e) Andockleiste für KDE

KoolDock basiert ursprünglich auf der Arbeit von Dang Viet Dung, Ksmoothdock 2.1

" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1598 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Die Ausführung von %1 war nicht möglich.\n" +" Bitte korrigieren Sie den Befehl oder die URL und versuchen es erneut." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1585 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Die Anwendung oder der Befehl
%1
\n" +" konnte nicht gefunden werden. Bitte korrigieren Sie Ihre Angaben und versuchen es erneut" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:682 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Fügt eine Uhr und einen Navigator für Arbeitsflächen ins Hauptmenü von KoolDock." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:154 +msgid "Advanced Options" +msgstr "Erweiterte Optionen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:714 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:153 +msgid "Alt+A" +msgstr "ALT+H" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:164 +msgid "Alt+B" +msgstr "ALT+D" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:707 +msgid "Amount of big icons:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:718 +msgid "Application List" +msgstr "Anwendungsliste" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:685 +msgid "Autohide" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:745 +msgid "Background" +msgstr "Hintergrund" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:740 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:742 +msgid "Background Theme:" +msgstr "Hintergrundbild:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:730 +msgid "Background color:" +msgstr "Hintergrundfarbe:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:706 +msgid "Big icon size:" +msgstr "Größe der großen Symbole:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:700 +msgid "Bold" +msgstr "Fett" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:728 +msgid "Border color:" +msgstr "Rahmenfarbe:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:758 +msgid "Bottom" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:768 +msgid "CPU" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:702 +msgid "Cleaner text (bigger memory and CPU usage)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:721 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append it to\n" +"the ignore list; you may also manually type or edit the window's name in the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Klicke auf \"Fenster schnappen\" und klicke auf ein Fenster. Danach klicke auf \"Hinzufügen\",\n" +" um diese Anwendung auf die Aussparliste zu setzen. Sie können auch den Namen des\n" +" Fensters im unteren Eingabefeld manuell eingebenoder nachträglich editieren. Um das Schnappen\n" +" von Fenster zu beenden, klicke Sie auf \"Schnappen...\", \"OK\" oder \"Abbrechen\"." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:715 +msgid "Click here to manually add an application to the Launcher" +msgstr "Klicken Sie hierher um eine Anwendung manuell der Anwendungsliste hinzuzufügen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:720 +msgid "Click here to start grabbing windows names; click Add for each window you click on" +msgstr "Klicken Sie hierher, um mit dem Schnappen nach einem Fenster zu beginnen. Sie müssen nach jeder Fensterauswahl auf \"Hinzufügen\" klicken, um dieses der Liste hinzuzufügen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:771 +msgid "Clip desktop workspace" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:772 +msgid "Clip icon area (DCOP)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1120 +msgid "Current Desktop &%1" +msgstr "Aktuelle Arbeitsfläche &%1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:751 +msgid "Desired Monitor Height" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:750 +msgid "Desired Monitor Width" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1047 +msgid "Desktop %1" +msgstr "Arbeitsfläche %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1030 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1132 +msgid "Desktop &%1" +msgstr "Arbeitsfläche &%1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:770 +#, fuzzy +msgid "Desktop clipping" +msgstr "Arbeitsfläche %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:465 +msgid "Do you want to remove " +msgstr "Wollen Sie folgenden Eintrag entfernen:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:729 +msgid "Dock opacity:" +msgstr "Durchsichtigkeit des Dock:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:741 +msgid "Don't allow wider background than screen" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:160 +msgid "Don't forget to chose an icon." +msgstr "Bitte vergessen Sie nicht ein Symbol auszuwählen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:689 +msgid "Don't scroll while mouse is on the same icon" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:712 +msgid "Drag an application to add it or" +msgstr "Ziehen Sie eine Anwendung herein um sie hinzuzufügen " + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:716 +msgid "Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher" +msgstr "Ziehen Sie ein beliebiges ausführbares Programm oder eine Desktop-Datei hier herein, um sie als Eintrag in KoolDock's Anwendungsliste hinzuzufügen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1020 +msgid "E&xit" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1015 +msgid "Edit &Preferences" +msgstr "&Einstellungen editieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1014 +msgid "Edit Quick Launch &Menu" +msgstr "Anwendungsliste editieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:677 +msgid "Enable System Tray (Experimental!)" +msgstr "Kontrollleiste aktivieren (experimentell!)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:675 +msgid "Enable Taskbar" +msgstr "Programmleiste aktivieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:670 +msgid "Enable Taskbar notification" +msgstr "Aktiviere Benachrichtigungen durch Programmleiste" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:732 +msgid "Enable a solid background for KoolDock, it may be transparent (dock opacity) and of any color you choose" +msgstr "Aktiviert einen einfarbigen Hintergrund für KoolDock. Dieser kann transparent (durchsichtig) sein und jede beliebige Farbe annehmen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:731 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:743 +msgid "Enabled" +msgstr "Aktiviert" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:678 +msgid "Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P )" +msgstr "Aktiviert die Unterstützung für die Kontrollleiste von KoolDock. Diese kann anstatt der normalen KDE-Kontrollleiste verwendet werden. (Dies ist EXTREM experimentell! Bitte nutzen Sie dies nur dann, wenn Sie den Entwicklern bei Ihrer Arbeit helfen wollen :P)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:676 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Aktiviert die KoolDock-Programmleiste. Diese kann anstatt der Kicker-Programmleiste verwendet werden." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "Error" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:696 +msgid "Font size:" +msgstr "Schriftgröße:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:691 +msgid "General" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:669 +#, fuzzy +msgid "General options:" +msgstr "Sichtbare Optionen:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:719 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:131 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:295 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:540 +msgid "Grab Window" +msgstr "Fenster schnappen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:534 +msgid "Grabbing..." +msgstr "Schnappe ..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:688 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "KoolDock wird nach einem Mausklick auf den Starter oder einem Fenstersymbol verborgen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:687 +msgid "Hide on click" +msgstr "Bei Klick verbergen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:165 +msgid "Icon" +msgstr "Symbol" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:74 +msgid "Icon and artwork" +msgstr "Symbole und Gestaltung" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:692 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:703 +#, fuzzy +msgid "Icon text" +msgstr "Symbol" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:749 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Wenn Sie Xinerama nutzen, sollten Sie diese Option für ein zweckmäßiges Verhalten aktivieren." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:726 +msgid "Ignore list" +msgstr "Aussparliste" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:701 +msgid "Italic" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1098 +msgid "Item menu" +msgstr "Eintragmenü" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:157 +msgid "Keep terminal open after exit" +msgstr "Nach Programmende geöffnet lassen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:56 +msgid "Kills all processes called Kooldock" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:67 +msgid "KoolDock" +msgstr "KoolDock" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:661 +msgid "KoolDock Configuration" +msgstr "KoolDock einrichten" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:149 +msgid "Launcher Properties" +msgstr "Eigenschaften des Eintrages" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:755 +msgid "Left" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1154 +msgid "Ma&ximize" +msgstr "Ma&ximieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1013 +msgid "Main Menu" +msgstr "Hauptmenü" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:713 +msgid "Manually &add Application" +msgstr "Anwendung manuell &hinzufügen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1151 +msgid "Mi&nimize" +msgstr "&Minimieren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:158 +msgid "Minimal Options" +msgstr "Notwendige Optionen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:710 +msgid "Move Left" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:711 +msgid "Move Right" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:699 +msgid "Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen" +msgstr "Wird der Mauszeiger über einen Eintrag von KoolDock oder der Programmleiste bewegt, wird der Name der Anwendung angezeigt" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:681 +msgid "Navigation Menu" +msgstr "Navigationsmenü" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1070 +msgid "Navigation: Desktop %1" +msgstr "Navigation: Arbeitsfläche %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:673 +msgid "Only Manage Current Desktop" +msgstr "Verwalte nur die aktuelle Arbeitsfläche" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:674 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Zeige die Programmleiste von KoolDock nur auf der aktuellen Arbeitsfläche" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:117 +msgid "Open File" +msgstr "Datei öffnen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:773 +msgid "Other" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:767 +msgid "Placement and speed" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:752 +msgid "Previous Monitors Width" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:769 +msgid "Priority (0=max, 19=min)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:73 +msgid "Project Webmaster" +msgstr "Webmaster des Projektes" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:663 +msgid "Remove" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:466 +msgid "Remove Launcher" +msgstr "Starter entfernen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:756 +msgid "Right" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:717 +msgid "Right click opens the icon menu." +msgstr "Ein Klick mit der rechten Maustaste öffnet das Symbolmenü." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:155 +msgid "Run From Terminal" +msgstr "In Terminal ausführen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:156 +msgid "Run as different User" +msgstr "Als anderer Nutzer ausführen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:683 +msgid "Screenshot of minimized windows" +msgstr "Bildschirmfoto von minimierten Fenstern" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:739 +msgid "Separator color:" +msgstr "Farbe der Trennlinie:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:697 +msgid "Shadow color:" +msgstr "Schattenfarbe:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:694 +msgid "Shadow offset:" +msgstr "Versatz des Schattens:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:679 +msgid "Show K Menu" +msgstr "KDE Menü anzeigen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:764 +msgid "Show after" +msgstr "Zeige nach" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:733 +msgid "Show borders" +msgstr "Rahmen anzeigen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:54 +msgid "Show configuration window on start" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:672 +#, fuzzy +msgid "Show only minimized" +msgstr "Bildschirmfoto von minimierten Fenstern" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:698 +msgid "Show text over icons" +msgstr "Zeige Text über Symbole" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:680 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Zeigt das KDE Menü in der Anwendungsliste von KoolDock." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:704 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:709 +msgid "Sizes" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:705 +msgid "Small icon size:" +msgstr "Größe der kleinen Symbole:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:727 +msgid "Solid Background:" +msgstr "Einfacher Hintergrund:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:736 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Transparenzlevel des einfarbigen Hintergrundes (0 bedeutet vollständig durchsichtig)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:708 +msgid "Space between icons" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:759 +msgid "Speed" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:686 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "KoolDock wird verborgen gestartet und erst sichtbar, wenn Sie sich mit dem Mauszeiger darüber befinden" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:690 +msgid "Stay below windows when not used" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:662 +msgid "Swap with" +msgstr "Tausche mit" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:737 +msgid "TaskBar Separator" +msgstr "Trennlinie zur Programmleisten" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:695 +msgid "Text color:" +msgstr "Schriftfarbe:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:693 +msgid "Text font:" +msgstr "Schriftart:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:738 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Die Trennlinie ist eine Linie, die zwischen KoolDock's Anwendungsleiste und der Programmleiste gezeichnet wird" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:766 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Zeitliche Verzögerung bevor KoolDock angezeigt wird, wenn der Mauszeiger den unteren Bereich des Bildschirmes erreicht hat." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:757 +msgid "Top" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:744 +msgid "Use set of images instead of a Solid Background" +msgstr "Benutze ein Bild anstelle eines einfarbigen Hintergrundes" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:684 +msgid "When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taskbar." +msgstr "Wenn ein Fenster minimiert ist, dient ein Bildschirmfoto der Anwendung als Symbol innerhalb der Programmleiste von KoolDock." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:734 +msgid "When using a Solid Background you may tell KoolDock to draw its borders (rectangle)" +msgstr "Wenn Sie einen einfarbigen Hintergrund benutzen, können Sie KoolDock anweisen dessen Rahmen (Rechteck) zu zeichnen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:671 +msgid "Window icon in KoolDock's taskbar will blink when something happens on the given application" +msgstr "Das Symbol des Fensters wird in der Programmleiste von KoolDock blinken, sofern etwas mit der angegebenen Anwendung geschehen ist" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:746 +msgid "Window placement" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:747 +msgid "Window position on edge (%):" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:753 +msgid "Window position:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:748 +msgid "Xinerama Support" +msgstr "Xinerama-Unterstützung" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1560 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Sie müssen zunächst einen ausführbaren Befehl oder eine URL eingeben, die geöffnet werden soll." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Sie müssen einen Befehl oder Pfad eingeben!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Sie müssen einen Namen eingeben!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Sie müssen einen Benutzernamen angeben!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Sie müssen ein Symbol auswählen!" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:760 +msgid "Zooming speed (ms)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "kde@floriansievert.de" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Florian Sievert" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:159 +msgid "checkBox1" +msgstr "Ankreuzfeld1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:664 +msgid "checkBox11" +msgstr "Ankreuzfeld11" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:765 +msgid "msec" +msgstr "msek" + diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..0026d89 --- /dev/null +++ b/po/es.po @@ -0,0 +1,542 @@ +# KoolDock (Traducción al Español). +# Copyright (C) 2004, Francisco J. Guidi Moggia +# This file is distributed under the same license as the KoolDock package. +# Francisco J. Guidi Moggia , 2004. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: es\n" +"Report-Msgid-Bugs-To: francisco@guidi.com\n" +"POT-Creation-Date: 2004-06-02 07:29-0400\n" +"PO-Revision-Date: 2004-06-02 07:35-0400\n" +"Last-Translator: Francisco J. Guidi Moggia \n" +"Language-Team: Francisco J. Guidi Moggia \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: kooldock.moc.cpp:34 kooldock.moc.cpp:42 main.cpp:59 +msgid "KoolDock" +msgstr "KoolDock" + +#: _translatorinfo.cpp:1 main.cpp:67 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Francisco J. Guidi Moggia" + +#: _translatorinfo.cpp:3 main.cpp:67 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "francisco@guidi.com" + +#: main.cpp:47 +msgid "" +"
KoolDock
A Kool Dock for KDE

KoolDock is based " +"upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "" +"
KoolDock
Panel para KDE.

KoolDock está basado " +"en el trabajo de Dang Viet Dung, Ksmoothdock 2.1

" + +#: main.cpp:65 +msgid "Project Webmaster" +msgstr "Webmaster" + +#: main.cpp:66 +msgid "Icon and artwork" +msgstr "Íconos y Artística" + +#: apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Debe seleccionar un ícono!" + +#: apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Debe ingresar un nombre!" + +#: apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Debe ingresar una ubicación/comando!" + +#: apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Debe proveer un nombre de usuario!" + +#: apppropprg.cpp:117 +msgid "Open File" +msgstr "Abrir archivo" + +#: xosd.moc.cpp:34 xosd.moc.cpp:42 +msgid "xosd" +msgstr "xosd" + +#: setupdialogprg.cpp:123 setupdialogprg.cpp:260 setupdialogprg.cpp:496 +#: setupdialog.cpp:433 +msgid "Grab Window" +msgstr "Capturar Ventana" + +#: setupdialogprg.cpp:421 +msgid "Do you want to remove " +msgstr "Está seguro que desea eliminar " + +#: setupdialogprg.cpp:422 +msgid "Remove Launcher" +msgstr "Eliminar Lanzador" + +#: setupdialogprg.cpp:490 +msgid "Grabbing..." +msgstr "Capturando..." + +#: setupdialogprg.cpp:600 +msgid "Swap with" +msgstr "Intercambiar con" + +#: kooldock.cpp:633 +msgid "Main Menu" +msgstr "Menú Principal" + +#: kooldock.cpp:634 +msgid "Edit Quick Launch &Menu" +msgstr "Editar &Menú de Lanzadores" + +#: kooldock.cpp:635 +msgid "Edit &Preferences" +msgstr "Editar &Preferencias" + +#: kooldock.cpp:636 +msgid "&Reload configuration" +msgstr "&Recargar Configuración" + +#: kooldock.cpp:650 kooldock.cpp:752 +msgid "Desktop &%1" +msgstr "Escritorio &%1" + +#: kooldock.cpp:667 +msgid "Desktop %1" +msgstr "Escritorio %1" + +#: kooldock.cpp:690 +msgid "Navigation: Desktop %1" +msgstr "Navegación: Escritorio %1" + +#: kooldock.cpp:692 +msgid "&Go to Desktop" +msgstr "&Ir al Escritorio" + +#: kooldock.cpp:693 +msgid "&Task List" +msgstr "&Lista de Ventanas" + +#: kooldock.cpp:718 +msgid "Item menu" +msgstr "Menú de Lanzador" + +#: kooldock.cpp:720 +msgid "&Edit item" +msgstr "&Editar Lanzador" + +#: kooldock.cpp:721 +msgid "&Delete item" +msgstr "E&liminar Lanzador" + +#: kooldock.cpp:740 +msgid "Current Desktop &%1" +msgstr "Escritorio Actual &%1" + +#: kooldock.cpp:771 +msgid "Mi&nimize" +msgstr "Mi&nimizar" + +#: kooldock.cpp:774 +msgid "Ma&ximize" +msgstr "Ma&ximizar" + +#: kooldock.cpp:779 +msgid "&Restore" +msgstr "&Restaurar" + +#: kooldock.cpp:783 +msgid "&Move to Desktop" +msgstr "&Mover al Escritorio" + +#: kooldock.cpp:1217 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Debe ingresar un comando o una URL primero." + +#: kooldock.cpp:1242 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"El programa o comando %1\n" +"no puede ser encontrado. Por favor corrija\n" +"el comando o URL y reintente" + +#: kooldock.cpp:1255 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"No se puede ejecutar %1.\n" +"Por favor corrija el comando o URL y reintente" + +#: appProp.cpp:148 +msgid "Launcher Properties" +msgstr "Propiedades del Lanzador" + +#: appProp.cpp:151 +msgid "&Add" +msgstr "&Agregar" + +#: appProp.cpp:152 setupdialog.cpp:429 +msgid "Alt+A" +msgstr "Alt+A" + +#: appProp.cpp:153 +msgid "Advanced Options" +msgstr "Opciones Avanzadas" + +#: appProp.cpp:154 +msgid "Run From Terminal" +msgstr "Ejecutar desde Terminal" + +#: appProp.cpp:155 +msgid "Run as different User" +msgstr "Ejecutar como otro usuario" + +#: appProp.cpp:156 +msgid "Keep terminal open after exit" +msgstr "Mantener terminal abierto" + +#: appProp.cpp:157 +msgid "Minimal Options" +msgstr "Opciones Básicas" + +#: appProp.cpp:158 +msgid "checkBox1" +msgstr "checkBox1" + +#: appProp.cpp:159 +msgid "Don't forget to chose an icon." +msgstr "No olvide seleccionar un ícono." + +#: appProp.cpp:160 +msgid "Command" +msgstr "Comando" + +#: appProp.cpp:161 +msgid "Name" +msgstr "Nombre" + +#: appProp.cpp:162 +msgid "&Browse" +msgstr "&Examinar" + +#: appProp.cpp:163 +msgid "Alt+B" +msgstr "Alt+B" + +#: appProp.cpp:164 +msgid "Icon" +msgstr "Ícono" + +#: setupdialog.cpp:386 +msgid "KoolDock Configuration" +msgstr "Preferencias" + +#: setupdialog.cpp:389 +msgid "checkBox11" +msgstr "checkBox11" + +#: setupdialog.cpp:390 +msgid "Visual options:" +msgstr "Opciones Visuales" + +#: setupdialog.cpp:391 +msgid "Start hidden" +msgstr "Iniciar oculto" + +#: setupdialog.cpp:392 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Iniciar panel oculto; si el mouse no está sobre el panel, KoolDock permanecerá oculto" + +#: setupdialog.cpp:393 +msgid "Hide on click" +msgstr "Click Oculta el Panel" + +#: setupdialog.cpp:394 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Ocultar KoolDock después de presionar un lanzador o ícono de ventana" + +#: setupdialog.cpp:395 +msgid "msec" +msgstr "mseg" + +#: setupdialog.cpp:396 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "" +"Tiempo transcurrido antes de mostrar KoolDock cuando el puntero se encuentra" +" en el extremo inferior de la pantalla" + +#: setupdialog.cpp:397 +msgid "Show text over icons" +msgstr "Texto Sobre Iconos" + +#: setupdialog.cpp:398 +msgid "" +"Moving the mouse over KoolDock's launcher or TaskBar will show the window/" +"launcher name on the screen" +msgstr "" +"Al desplazar el puntero del ratón sobre los íconos se mostrará el nombre de " +"la ventana/lanzador sobre el ícono" + +#: setupdialog.cpp:399 +msgid "Bold" +msgstr "Negrita" + +#: setupdialog.cpp:400 +msgid "Show after" +msgstr "Mostrar después de" + +#: setupdialog.cpp:401 +msgid "Show K Menu" +msgstr "Mostrar Menú de KDE" + +#: setupdialog.cpp:402 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Agrega un ícono para acceder al menú de KDE desde KoolDock." + +#: setupdialog.cpp:403 +msgid "Enable System Tray (Experimental!)" +msgstr "Habilitar Bandeja del Sistema" + +#: setupdialog.cpp:404 +msgid "" +"Enables KoolDock System Tray Support; it can be used instead of kicker's " +"systray applet (its VERY experimental; do not use it unless you intend to " +"help me get this working :P )" +msgstr "" +"Habilita el soporte para la Bandeja del Sistema; puede ser utilizado en \n" +"reemplazo del applet para Bandeja de Sistema (está en una etapa MUY \n" +"experimental; NO UTILIZAR a menos que pretendan ayudarme a desarrollarlo :P ) " + +#: setupdialog.cpp:405 +msgid "Big icon size:" +msgstr "Tamaño del Ícono (Zoom):" + +#: setupdialog.cpp:406 +msgid "Enable Taskbar notification" +msgstr "Habilitar notificación" + +#: setupdialog.cpp:407 +msgid "" +"Window icon in KoolDock's taskbar will blink when something happens on the " +"given application" +msgstr "" +"Si ocurre algún evento en alguna de las ventanas de KDE, el ícono correspondiente " +"parpadeará." + +#: setupdialog.cpp:408 +msgid "Small icon size:" +msgstr "Tamaño del Icono (Normal):" + +#: setupdialog.cpp:409 +msgid "Shadow offset:" +msgstr "Sombra Texto:" + +#: setupdialog.cpp:410 +msgid "Only Manage Current Desktop" +msgstr "Sólo Escritorio Actual" + +#: setupdialog.cpp:411 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Mostrar en el Administrador de tareas sólo las ventanas del escritorio actual" + +#: setupdialog.cpp:412 +msgid "Navigation Menu" +msgstr "Menú de Navegación" + +#: setupdialog.cpp:413 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Agrega un reloj en el Menú Principal de KoolDock y un navegador de escritorios." + +#: setupdialog.cpp:414 +msgid "Enable Taskbar" +msgstr "Habilitar Administrador de Tareas" + +#: setupdialog.cpp:415 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "" +"Habilita soporte para el Administrador de Tareas en KoolDock; puede \n" +"ser utilizado en reemplazo del Kicker." + +#: setupdialog.cpp:416 +msgid "Screenshot of minimized windows" +msgstr "Usar foto de ventana como ícono" + +#: setupdialog.cpp:417 +msgid "" +"When a window is minimized a screenshot of the application will be use as an " +"icon in KoolDock's Taskbar." +msgstr "" +"Cuando una ventana es minimizada se saca una foto de la aplicación para ser " +"utilizada como ícono en el panel." + +#: setupdialog.cpp:418 +msgid "Xinerama Support" +msgstr "Soporte para Xinerama" + +#: setupdialog.cpp:419 +msgid "" +"If you are using xinerama you should enable this option for proper behaviour." +msgstr "Si está utilizando xinerama debería activar esta opción." + +#: setupdialog.cpp:437 +msgid "Left Monitor Res" +msgstr "Res. Monitor Izquierdo" + +#: setupdialog.cpp:421 +msgid "Shadow color:" +msgstr "Color sombra:" + +#: setupdialog.cpp:422 +msgid "Text font:" +msgstr "Fuente:" + +#: setupdialog.cpp:423 +msgid "Text color:" +msgstr "Color de Fuente:" + +#: setupdialog.cpp:424 +msgid "Font size:" +msgstr "Tamaño Fuente:" + +#: setupdialog.cpp:425 +msgid "Visual" +msgstr "Visual" + +#: setupdialog.cpp:426 +msgid "Drag an application to add it or" +msgstr "Arrastre una aplicación para agregarla o" + +#: setupdialog.cpp:427 +msgid "Right click opens the icon menu." +msgstr "Click derecho sobre un ícono abre su menú." + +#: setupdialog.cpp:428 +msgid "Manually &add Application" +msgstr "Agréguela Manualmente" + +#: setupdialog.cpp:430 +msgid "Click here to manually add an application to the Launcher" +msgstr "Presione aquí para agregar una aplicación al Lanzador" + +#: setupdialog.cpp:431 +msgid "" +"Drag and Drop here any executable or desktop file for which you want an " +"entry in KoolDock's Launcher" +msgstr "" +"Arrastre un ejecutable o archivo de escritorio (desktop) para que sea " +"agregado al lanzador de aplicaciones de KoolDock" + +#: setupdialog.cpp:432 +msgid "Application List" +msgstr "Lista de Lanzadores" + +#: setupdialog.cpp:434 +msgid "" +"Click here to start grabbing windows names; click Add for each window you " +"click on" +msgstr "" +"Presione aquí para capturar nombres de ventanas; presione \"Agregar\" para " +"cada ventana que capture" + +#: setupdialog.cpp:435 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append " +"it to\n" +"the ignore list; you may also manually type or edit the window's name in " +"the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Presione \"Capturar Ventana\" y luego presione sobre una ventana; posteriormente \n" +"presione \"Agregar\" para agregar el nombre a la lista; también puede ingresar o \n" +"editar el nombre de la ventana manualmente. Para detener la captura presione \n" +"\"Capturando...\", \"Aceptar\" o \"Cancelar\"." + +#: setupdialog.cpp:440 +msgid "Ignore list" +msgstr "Lista de Ventanas Ignoradas" + +#: setupdialog.cpp:441 setupdialog.cpp:442 +msgid "Background Theme:" +msgstr "Tema de Fondo:" + +#: setupdialog.cpp:443 setupdialog.cpp:452 +msgid "Enabled" +msgstr "Habilitado" + +#: setupdialog.cpp:444 +msgid "Use set of images instead of a Solid Background" +msgstr "Usar un conjunto de imágenes (tema) en vez de un fondo sólido" + +#: setupdialog.cpp:445 +msgid "TaskBar Separator" +msgstr "Separador" + +#: setupdialog.cpp:446 +msgid "Separator color:" +msgstr "Color del Separador:" + +#: setupdialog.cpp:447 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "" +"El separador es una línea vertical que se dibuja entre el Lanzador y " +"el Administrador de Tareas" + +#: setupdialog.cpp:448 +msgid "Solid Background:" +msgstr "Fondo Sólido:" + +#: setupdialog.cpp:449 +msgid "Border color:" +msgstr "Color Borde:" + +#: setupdialog.cpp:450 +msgid "Dock opacity:" +msgstr "Opacidad del Panel" + +#: setupdialog.cpp:451 +msgid "Background color:" +msgstr "Color de Fondo:" + +#: setupdialog.cpp:453 +msgid "" +"Enable a solid background for KoolDock, it may be transparent (dock opacity) " +"and of any color you choose" +msgstr "" +"Habilitar un fondo sólido para KoolDock; puede ser transparente (nivel de " +"opacidad) y/o de cualquier color que desee" + +#: setupdialog.cpp:454 +msgid "Show borders" +msgstr "Dibujar Bordes" + +#: setupdialog.cpp:455 +msgid "" +"When using a Solid Background you may tell KoolDock to draw its borders " +"(rectangle)" +msgstr "" +"Cuando se utiliza un fondo sólido puede indicarle a KoolDock que dibuje " +"bordes alrededor del Panel" + +#: setupdialog.cpp:456 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Nivel de opacidad o transparencia (0 implica completamente transparente)" + +#: setupdialog.cpp:457 +msgid "Background" +msgstr "Fondo" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..4e8bbb7 --- /dev/null +++ b/po/fr.po @@ -0,0 +1,519 @@ +# translation of fr.po to french +# translation of kooldock.po to french +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Alexandre Svetoslavsky , 2005. +# +msgid "" +msgstr "" +"Project-Id-Version: fr\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-06-05 04:05-0400\n" +"PO-Revision-Date: 2005-05-10 14:57+0200\n" +"Last-Translator: Alexandre Svetoslavsky \n" +"Language-Team: french \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.9.1\n" + +#: kooldock.moc.cpp:34 kooldock.moc.cpp:42 main.cpp:59 +msgid "KoolDock" +msgstr "KoolDock" + +#: _translatorinfo.cpp:1 main.cpp:67 +#, fuzzy +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Alexandre Svetoslavsky" + +#: _translatorinfo.cpp:3 main.cpp:67 +#, fuzzy +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "alexsvetos@altern.org" + +#: main.cpp:47 +msgid "" +"
KoolDock
A Kool Dock for KDE

KoolDock is based " +"upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
Une barre d'applications pour KDE

KoolDock est basé sur le travail original de Dang Viet Dung, Ksmoothdock 2.1

" + +#: main.cpp:65 +msgid "Project Webmaster" +msgstr "Webmaster du projet" + +#: main.cpp:66 +msgid "Icon and artwork" +msgstr "Icône et graphisme" + +#: apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Vous devez sélectionner une icône!" + +#: apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Vous devez entrez un nom!" + +#: apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Vous devez entrez une commande ou un chemin!" + +#: apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Vous devez entrez un nom d'utilisateur!" + +#: apppropprg.cpp:117 +msgid "Open File" +msgstr "Ouvrir un fichier" + +#: xosd.moc.cpp:34 xosd.moc.cpp:42 +msgid "xosd" +msgstr "xosd" + +#: setupdialogprg.cpp:123 setupdialogprg.cpp:261 setupdialogprg.cpp:503 +#: setupdialog.cpp:446 +msgid "Grab Window" +msgstr "Choisir une fenêtre" + +#: setupdialogprg.cpp:428 +msgid "Do you want to remove " +msgstr "Voulez vous supprimez" + +#: setupdialogprg.cpp:429 +msgid "Remove Launcher" +msgstr "Enlever le lanceur" + +#: setupdialogprg.cpp:497 +msgid "Grabbing..." +msgstr "Grabbing..." + +#: setupdialogprg.cpp:607 +msgid "Swap with" +msgstr "Echanger avec" + +#: kooldock.cpp:634 +msgid "Main Menu" +msgstr "Menu Principal" + +#: kooldock.cpp:635 +msgid "Edit Quick Launch &Menu" +msgstr "Modifier le &Menu de Lanceur Rapide" + +#: kooldock.cpp:636 +msgid "Edit &Preferences" +msgstr "&Preferences" + +#: kooldock.cpp:637 +msgid "&Reload configuration" +msgstr "&Relancer l'application" + +#: kooldock.cpp:651 kooldock.cpp:753 +msgid "Desktop &%1" +msgstr "Bureau &%1" + +#: kooldock.cpp:668 +msgid "Desktop %1" +msgstr "Bureau %1" + +#: kooldock.cpp:691 +msgid "Navigation: Desktop %1" +msgstr "Naviguation: Bureau %1" + +#: kooldock.cpp:693 +msgid "&Go to Desktop" +msgstr "Vers le &bureau" + +#: kooldock.cpp:694 +msgid "&Task List" +msgstr "Liste des &Tâches" + +#: kooldock.cpp:719 +msgid "Item menu" +msgstr "menu item" + +#: kooldock.cpp:721 +msgid "&Edit item" +msgstr "Modifier l'élément" + +#: kooldock.cpp:722 +msgid "&Delete item" +msgstr "Supprimer l'élément" + +#: kooldock.cpp:741 +msgid "Current Desktop &%1" +msgstr "Bureau actuel &%1" + +#: kooldock.cpp:772 +msgid "Mi&nimize" +msgstr "R&éduire" + +#: kooldock.cpp:775 +msgid "Ma&ximize" +msgstr "Ma&ximiser" + +#: kooldock.cpp:780 +msgid "&Restore" +msgstr "&Restaurer" + +#: kooldock.cpp:784 +msgid "&Move to Desktop" +msgstr "Vers le &Bureau" + +#: kooldock.cpp:1218 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Vous devez saisir une commande à exécuter ou une URL à ouvrir." + +#: kooldock.cpp:1243 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Le programme ou la commande%1\n" +"est introuvable. veuillez rectifiez sa valeur" + +#: kooldock.cpp:1256 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Le programme ou la commande%1\n" +"est introuvable. veuillez rectifiez sa valeur" + +#: appProp.cpp:148 +msgid "Launcher Properties" +msgstr "Propriétés du Lanceur" + +#: appProp.cpp:151 +msgid "&Add" +msgstr "&Ajouter" + +#: appProp.cpp:152 setupdialog.cpp:442 +msgid "Alt+A" +msgstr "Alt+A" + +#: appProp.cpp:153 +msgid "Advanced Options" +msgstr "Options avancées" + +#: appProp.cpp:154 +msgid "Run From Terminal" +msgstr "Exécuter dans un &terminal" + +#: appProp.cpp:155 +msgid "Run as different User" +msgstr "Exécuter sous un autre nom d'utilisateur" + +#: appProp.cpp:156 +msgid "Keep terminal open after exit" +msgstr "Ne pas fermer le terminal quand la commande se termine" + +#: appProp.cpp:157 +msgid "Minimal Options" +msgstr "Options Minimales" + +#: appProp.cpp:158 +msgid "checkBox1" +msgstr "case à cocher1" + +#: appProp.cpp:159 +msgid "Don't forget to chose an icon." +msgstr "N'oubliez pas de choisir une îcone" + +#: appProp.cpp:160 +msgid "Command" +msgstr "Commande" + +#: appProp.cpp:161 +msgid "Name" +msgstr "Nom" + +#: appProp.cpp:162 +msgid "&Browse" +msgstr "&Parcourir" + +#: appProp.cpp:163 +msgid "Alt+B" +msgstr "Alt+B" + +#: appProp.cpp:164 +msgid "Icon" +msgstr "&Icône" + +#: setupdialog.cpp:398 +msgid "KoolDock Configuration" +msgstr "Configuration de KoolDock" + +#: setupdialog.cpp:401 +msgid "checkBox11" +msgstr "Case à cocher11" + +#: setupdialog.cpp:402 +msgid "Visual options:" +msgstr "Options d'affichage :" + +#: setupdialog.cpp:403 +msgid "Start hidden" +msgstr "Démarrer masqué" + +#: setupdialog.cpp:404 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Démarre KoolDock masqué; si la souri n'est pas sur KoolDock il sera caché" + +#: setupdialog.cpp:405 +msgid "Hide on click" +msgstr "Masquer lors d'un clic" + +#: setupdialog.cpp:406 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Cache KoolDock lors d'un clic sur le Lanceur ou sur une îcone." + +#: setupdialog.cpp:407 +msgid "msec" +msgstr "msec" + +#: setupdialog.cpp:408 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Délai d'apparition de KoolDock" + +#: setupdialog.cpp:409 +msgid "Show text over icons" +msgstr "Afficher le texte au dessus des icônes" + +#: setupdialog.cpp:410 +msgid "" +"Moving the mouse over KoolDock's launcher or TaskBar will show the window/" +"launcher name on the screen" +msgstr "Le nom de la fenêtre/du lanceur apparaît lorsque le curseur les survoles" + +#: setupdialog.cpp:411 +msgid "Bold" +msgstr "Gras" + +#: setupdialog.cpp:412 +msgid "Show after" +msgstr "Afficher après" + +#: setupdialog.cpp:413 +msgid "Big icon size:" +msgstr "Taille des grandes icônes:" + +#: setupdialog.cpp:414 +msgid "Enable Taskbar notification" +msgstr "Activer la notification de la barre des tâches" + +#: setupdialog.cpp:415 +msgid "" +"Window icon in KoolDock's taskbar will blink when something happens on the " +"given application" +msgstr "L'icône de fenetre clignote lors d'un évenement sur l'application" + +#: setupdialog.cpp:416 +msgid "Small icon size:" +msgstr "Taille des petites icônes:" + +#: setupdialog.cpp:417 +msgid "Shadow offset:" +msgstr "Décalage des ombres:" + +#: setupdialog.cpp:418 +msgid "Only Manage Current Desktop" +msgstr "Ne s'occuper que du bureau courant" + +#: setupdialog.cpp:419 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "N'affiche que les fenêtres du bureau courant dans la barre des tâches de KoolDock" + +#: setupdialog.cpp:420 +msgid "Enable Taskbar" +msgstr "Utiliser la barre des tâches" + +#: setupdialog.cpp:421 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Permet d'utiliser la barre des taches de KoolDock; elle peut remplacer celle de Kicker " + +#: setupdialog.cpp:422 +msgid "Screenshot of minimized windows" +msgstr "Capture d'écran des fenêtres minimisées" + +#: setupdialog.cpp:423 +msgid "" +"When a window is minimized a screenshot of the application will be use as an " +"icon in KoolDock's Taskbar." +msgstr "Lorsqu'une fenêtre est minimisée un image miniature sera utilisée pour la représenter dans la barre des taches de KoolDock" + +#: setupdialog.cpp:425 +msgid "Shadow color:" +msgstr "Couleur de l'ombre:" + +#: setupdialog.cpp:426 +msgid "Text font:" +msgstr "Police du texte:" + +#: setupdialog.cpp:427 +msgid "Text color:" +msgstr "Couleur du texte:" + +#: setupdialog.cpp:428 +msgid "Font size:" +msgstr "Taille de la police:" + +#: setupdialog.cpp:429 +msgid "Show K Menu" +msgstr "Afficher le Menu K" + +#: setupdialog.cpp:430 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Ajoute le Menu K dans le lanceur de KoolDock." + +#: setupdialog.cpp:431 +msgid "Navigation Menu" +msgstr "Menu de navigation" + +#: setupdialog.cpp:432 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Ajoute une horloge dans le menu principal et un navigateur de bureaux virtuels" + +#: setupdialog.cpp:433 +msgid "Enable System Tray (Experimental!)" +msgstr "Activer la boîte à miniatures (expérimental)" + +#: setupdialog.cpp:434 +msgid "" +"Enables KoolDock System Tray Support; it can be used instead of kicker's " +"systray applet (its VERY experimental; do not use it unless you intend to " +"help me get this working :P )" +msgstr "Active la boite à miniature de KoolDock; elle peut remplacer celle de kicker (attention: cette fonctionnalité est encore expérimentale, à utiliser seulement si vous compter m'aider à l'améliorer :P )" + +#: setupdialog.cpp:435 +msgid "Xinerama Support" +msgstr "Support de &Xinerama :" + +#: setupdialog.cpp:436 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Si vous utilisez Xinerama vous pouvez activer cette option pour avoir un meilleur fonctionnement." + +#: setupdialog.cpp:437 +msgid "Left Monitor Res" +msgstr "Résolution de l'écran de gauche" + +#: setupdialog.cpp:438 +msgid "Visual" +msgstr "Options visuelles" + +#: setupdialog.cpp:439 +msgid "Drag an application to add it or" +msgstr "Glissez une application ici pour l'ajouter" + +#: setupdialog.cpp:440 +msgid "Right click opens the icon menu." +msgstr "Un clic droit ouvre le menu des icônes." + +#: setupdialog.cpp:441 +msgid "Manually &add Application" +msgstr "&Ajouter manuellement une application" + +#: setupdialog.cpp:443 +msgid "Click here to manually add an application to the Launcher" +msgstr "Cliquer ici pour ajouter une application au lanceur" + +#: setupdialog.cpp:444 +msgid "" +"Drag and Drop here any executable or desktop file for which you want an " +"entry in KoolDock's Launcher" +msgstr "Glissez/Déposez ici le lien/fichier desktop pour ajouter une icône dans le Lanceur de KoolDock." + +#: setupdialog.cpp:445 +msgid "Application List" +msgstr "Liste des applications" + +#: setupdialog.cpp:447 +msgid "" +"Click here to start grabbing windows names; click Add for each window you " +"click on" +msgstr "" +"Click here to start grabbing windows names; click Add for each window you " +"click on" + +#: setupdialog.cpp:448 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append " +"it to\n" +"the ignore list; you may also manually type or edit the window's name in " +"the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Cliquez sur \"Choisir une fenêtre\" et cliquez sur une fenêtre, puis sur \"Ajouter\" pour l'ajouter à\n" +"la liste des fenêtres ignorées; vous pouvez aussi taper manuellement ou modifier le nom de la fenêtre dans la boite ci-dessous." + +#: setupdialog.cpp:453 +msgid "Ignore list" +msgstr "Applications ignorées" + +#: setupdialog.cpp:454 setupdialog.cpp:455 +msgid "Background Theme:" +msgstr "Thème de fond" + +#: setupdialog.cpp:456 setupdialog.cpp:465 +msgid "Enabled" +msgstr "Activé" + +#: setupdialog.cpp:457 +msgid "Use set of images instead of a Solid Background" +msgstr "Utiliser une collection d'image plutôt qu'un fond unique." + +#: setupdialog.cpp:458 +msgid "TaskBar Separator" +msgstr "Séparateur de la barre des tâches" + +#: setupdialog.cpp:459 +msgid "Separator color:" +msgstr "Couleur du séparateur" + +#: setupdialog.cpp:460 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Le séparateur est une ligne dessinée entre le Lanceur et la barre des tâches" + +#: setupdialog.cpp:461 +msgid "Solid Background:" +msgstr "Fond opaque:" + +#: setupdialog.cpp:462 +msgid "Border color:" +msgstr "Couleur de la bordure:" + +#: setupdialog.cpp:463 +msgid "Dock opacity:" +msgstr "Opacité :" + +#: setupdialog.cpp:464 +msgid "Background color:" +msgstr "Couleur du fond:" + +#: setupdialog.cpp:466 +msgid "" +"Enable a solid background for KoolDock, it may be transparent (dock opacity) " +"and of any color you choose" +msgstr "Active l'opacité de KoolDock; il peut être transparent (opacité) and de la couleur de votre choix" + +#: setupdialog.cpp:467 +msgid "Show borders" +msgstr "Afficher les bordures" + +#: setupdialog.cpp:468 +msgid "" +"When using a Solid Background you may tell KoolDock to draw its borders " +"(rectangle)" +msgstr "Lorsque vous utilisez un fond opaque vous pouvez demander à KoolDock de dessiner ses bordures" + +#: setupdialog.cpp:469 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Niveau de transparence du fond (0 correspond à la transparence totale)" + +#: setupdialog.cpp:470 +msgid "Background" +msgstr "Arrière plan" + diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..3d64135 --- /dev/null +++ b/po/it.po @@ -0,0 +1,617 @@ +msgid "" +msgstr "" +"Project-Id-Version: KoolDock 0.4.6\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2007-02-27 23:26+0100\n" +"Last-Translator: Francesco Montefoschi \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Language: Italian\n" +"X-Poedit-Country: ITALY\n" + +#: appProp.cpp:149 +msgid "Launcher Properties" +msgstr "Proprietà del launcher" + +#: appProp.cpp:150 +#: setupdialog.cpp:582 +msgid "&Cancel" +msgstr "&Annulla" + +#: appProp.cpp:152 +msgid "&Add" +msgstr "&Aggiungi" + +#: appProp.cpp:153 +#: setupdialog.cpp:623 +msgid "Alt+A" +msgstr "" + +#: appProp.cpp:154 +msgid "Advanced Options" +msgstr "Opzioni avanzate:" + +#: appProp.cpp:155 +msgid "Run From Terminal" +msgstr "Esegui dal terminale" + +#: appProp.cpp:156 +msgid "Run as different User" +msgstr "Esegui come altro utente" + +#: appProp.cpp:157 +msgid "Keep terminal open after exit" +msgstr "Non chiudere la console al termine" + +#: appProp.cpp:158 +msgid "Minimal Options" +msgstr "Opzioni base" + +#: appProp.cpp:159 +msgid "checkBox1" +msgstr "" + +#: appProp.cpp:160 +msgid "Don't forget to chose an icon." +msgstr "Non dimenticare di scegliere un'icona." + +#: appProp.cpp:161 +msgid "Command" +msgstr "Comando" + +#: appProp.cpp:162 +msgid "Name" +msgstr "Nome" + +#: appProp.cpp:163 +msgid "&Browse" +msgstr "&Sfoglia" + +#: appProp.cpp:164 +msgid "Alt+B" +msgstr "" + +#: appProp.cpp:165 +msgid "Icon" +msgstr "Icona" + +#: apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Devi selezionare un'icona!" + +#: apppropprg.cpp:47 +#: apppropprg.cpp:52 +#: apppropprg.cpp:57 +#: apppropprg.cpp:62 +msgid "Error" +msgstr "Errore" + +#: apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Devi inserire un nome!" + +#: apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Devi inserire un comando o percorso!" + +#: apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Devi inserire un nome utente!" + +#: apppropprg.cpp:117 +msgid "Open File" +msgstr "Apri file" + +#: kooldock.cpp:979 +msgid "Main Menu" +msgstr "Menu principale" + +#: kooldock.cpp:980 +msgid "Edit Quick Launch &Menu" +msgstr "Modifica &menu Avvio Veloce" + +#: kooldock.cpp:981 +msgid "Edit &Preferences" +msgstr "Modifica &preferenze" + +#: kooldock.cpp:982 +msgid "&Reload configuration" +msgstr "&Ricarica configurazione" + +#: kooldock.cpp:984 +msgid "&About" +msgstr "&Informazioni su..." + +#: kooldock.cpp:986 +msgid "E&xit" +msgstr "&Esci" + +#: kooldock.cpp:996 +#: kooldock.cpp:1098 +msgid "Desktop &%1" +msgstr "" + +#: kooldock.cpp:1013 +msgid "Desktop %1" +msgstr "" + +#: kooldock.cpp:1036 +msgid "Navigation: Desktop %1" +msgstr "Navigazione: Desktop %1" + +#: kooldock.cpp:1038 +msgid "&Go to Desktop" +msgstr "&Vai al desktop" + +#: kooldock.cpp:1039 +msgid "&Task List" +msgstr "&Lista processi" + +#: kooldock.cpp:1064 +msgid "Item menu" +msgstr "Menu elemento" + +#: kooldock.cpp:1066 +msgid "&Edit item" +msgstr "&Modifica elemento" + +#: kooldock.cpp:1067 +msgid "&Delete item" +msgstr "&Elimina elemento" + +#: kooldock.cpp:1086 +msgid "Current Desktop &%1" +msgstr "Desktop attuale &%1" + +#: kooldock.cpp:1117 +msgid "Mi&nimize" +msgstr "&Riduci a icona" + +#: kooldock.cpp:1120 +msgid "Ma&ximize" +msgstr "&Ingrandisci" + +#: kooldock.cpp:1125 +msgid "&Restore" +msgstr "&Ripristina" + +#: kooldock.cpp:1129 +msgid "&Move to Desktop" +msgstr "&Sposta sul desktop" + +#: kooldock.cpp:1131 +msgid "&Close" +msgstr "&Chiudi" + +#: kooldock.cpp:1510 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Devi prima inserire un comando da eseguire o un URL da aprire." + +#: kooldock.cpp:1535 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Il nome del programma o il comando %1\n" +"non è stato trovato. Correggi il comando o indirizzo\n" +"e prova di nuovo" + +#: kooldock.cpp:1548 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Impossibile eseguire %1.\n" +"Correggi il comando/URL e riprova..\"" + +#: kooldock.moc.cpp:34 +#: kooldock.moc.cpp:42 +#: main.cpp:66 +msgid "KoolDock" +msgstr "" + +#: main.cpp:48 +msgid "
KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
Un dock figo per KDE

KoolDock è basato sul lavoro originale di Dang Viet Dung, Ksmoothdock 2.1

" + +#: main.cpp:53 +msgid "Show configuration window on start" +msgstr "Mostra la configurazione all'avvio" + +#: main.cpp:55 +msgid "Kills all processes called Kooldock" +msgstr "Uccidi tutti i processi chiamati Kooldock" + +#: main.cpp:72 +msgid "Project Webmaster" +msgstr "Webmaster del progetto" + +#: main.cpp:73 +msgid "Icon and artwork" +msgstr "Icone e grafica" + +#: main.cpp:74 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Francesco Montefoschi" + +#: main.cpp:74 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "francesco.monte@gmail.com" + +#: setupdialog.cpp:578 +msgid "KoolDock Configuration" +msgstr "Configurazione KoolDock" + +#: setupdialog.cpp:581 +msgid "checkBox11" +msgstr "" + +#: setupdialog.cpp:584 +msgid "&OK" +msgstr "&Ok" + +#: setupdialog.cpp:586 +msgid "Visual options:" +msgstr "Opzioni:" + +#: setupdialog.cpp:587 +msgid "Bold" +msgstr "Grassetto" + +#: setupdialog.cpp:588 +msgid "Shadow offset:" +msgstr "Spostamento ombra:" + +#: setupdialog.cpp:589 +msgid "Italic" +msgstr "Corsivo" + +#: setupdialog.cpp:590 +msgid "Shadow color:" +msgstr "Colore ombra:" + +#: setupdialog.cpp:591 +msgid "Text font:" +msgstr "Carattere testo:" + +#: setupdialog.cpp:592 +msgid "Text color:" +msgstr "Colore testo:" + +#: setupdialog.cpp:593 +msgid "Font size:" +msgstr "Dimensione testo:" + +#: setupdialog.cpp:594 +msgid "Big icon size:" +msgstr "Dimensione icone grandi:" + +#: setupdialog.cpp:595 +msgid "Amount of big icons:" +msgstr "Quantità di icone grandi:" + +#: setupdialog.cpp:596 +msgid "Small icon size:" +msgstr "Dimensione icone piccole:" + +#: setupdialog.cpp:597 +msgid "Show K Menu" +msgstr "Mostra menu K" + +#: setupdialog.cpp:598 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Mostra il menu di KDE nel launcher di KoolDock." + +#: setupdialog.cpp:599 +msgid "Navigation Menu" +msgstr "Menu di navigazione" + +#: setupdialog.cpp:600 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Aggiunge un orologio nella finestra principale e un navigatore di desktop virtuali." + +#: setupdialog.cpp:601 +msgid "Only Manage Current Desktop" +msgstr "Gestisci solo il desktop attuale" + +#: setupdialog.cpp:602 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "" + +#: setupdialog.cpp:603 +msgid "Enable Taskbar" +msgstr "Abilita la barra dei processi" + +#: setupdialog.cpp:604 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Abilita la barra dei processi di KoolDock, che può essere usata al posto di quella di Kicker" + +#: setupdialog.cpp:605 +msgid "Start hidden" +msgstr "Avvia nascosto" + +#: setupdialog.cpp:606 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Avvia KoolDock nascosto; se il mouse non è su KoolDock verrà nascosto" + +#: setupdialog.cpp:607 +msgid "Hide on click" +msgstr "Nascondi al click" + +#: setupdialog.cpp:608 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Nasconde KoolDock dopo aver cliccato il launcher o un icona nella barra dei processi." + +#: setupdialog.cpp:609 +msgid "Don't scroll while mouse is on the same icon" +msgstr "Non scorrere mentre il mouse è sulla stessa icona" + +#: setupdialog.cpp:610 +msgid "Enable System Tray (Experimental!)" +msgstr "Abilita vassoio di sistema (sperimentale!)" + +#: setupdialog.cpp:611 +msgid "Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P )" +msgstr "Abilita il supporto al vassoio di sistema, può essere usato al posto del vassoio fornito da Kicker. (nota: è DAVVERO sperimentale, non lo usare a meno che tu non voglia aiutarmi a farlo funzionare :P)" + +#: setupdialog.cpp:612 +msgid "Show text over icons" +msgstr "Mostra testo sulle icone" + +#: setupdialog.cpp:613 +msgid "Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen" +msgstr "Spostando il mouse sul launcher di KoolDock o sulla barra dei processi, sarà mostrato il nome della finestra o del programma" + +#: setupdialog.cpp:614 +msgid "Screenshot of minimized windows" +msgstr "Screenshot delle finestre ridotte" + +#: setupdialog.cpp:615 +msgid "When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taskbar." +msgstr "Quando una finestra viene ridotta ad icona, verrà usato uno screenshot dell'applicazione come icona nella barra dei processi." + +#: setupdialog.cpp:616 +msgid "Enable Taskbar notification" +msgstr "Abilita notifica barra dei processi" + +#: setupdialog.cpp:617 +msgid "Window icon in KoolDock's taskbar will blink when something happens on the given application" +msgstr "Quando qualcosa succede in un'applicazione, l'icona relativa nella barra dei processi lampeggia" + +#: setupdialog.cpp:618 +msgid "Visual" +msgstr "Visuale" + +#: setupdialog.cpp:619 +msgid "Move Left" +msgstr "Sposta a sinistra" + +#: setupdialog.cpp:620 +msgid "Move Right" +msgstr "Sposta a destra" + +#: setupdialog.cpp:621 +msgid "Drag an application to add it or" +msgstr "Trascina un'applicazione per aggiungerla o" + +#: setupdialog.cpp:622 +msgid "Manually &add Application" +msgstr "Aggiungi applicazione &manualmente" + +#: setupdialog.cpp:624 +msgid "Click here to manually add an application to the Launcher" +msgstr "Clicca qui per aggiungere un applicazione al launcher manualmente" + +#: setupdialog.cpp:625 +msgid "Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher" +msgstr "Trascina e rilascia qui qualsiasi applicazione o file .desktop che vuoi aggiungere al launcher di KoolDock" + +#: setupdialog.cpp:626 +msgid "Right click opens the icon menu." +msgstr "Il click destro apre il menu dell'icona." + +#: setupdialog.cpp:627 +msgid "Application List" +msgstr "Lista applicazioni" + +#: setupdialog.cpp:628 +#: setupdialogprg.cpp:126 +#: setupdialogprg.cpp:278 +#: setupdialogprg.cpp:520 +msgid "Grab Window" +msgstr "Intercetta finestra" + +#: setupdialog.cpp:629 +msgid "Click here to start grabbing windows names; click Add for each window you click on" +msgstr "Clicca qui per iniziare ad intercettare i nomi delle finestre; clicca Aggiungi per ogni finestra sulla quale clicchi" + +#: setupdialog.cpp:630 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append it to\n" +"the ignore list; you may also manually type or edit the window's name in the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Clicca \"Intercetta finestra\" e clicca su una finestra, clicca quindi \"Aggiungi\" per\n" +"inserirla nella lista delle finestre ignorate; in alternativa puoi scrivere o modificare\n" +"il nome della finestra nel box di seguito. Per terminare l'intercettazione, clicca\n" +"semplicemente \"Intercettazione...\", \"Ok\" o \"Annulla\"." + +#: setupdialog.cpp:635 +msgid "Ignore list" +msgstr "Lista ignorate" + +#: setupdialog.cpp:636 +msgid "Solid Background:" +msgstr "Sfondo a tinta unita:" + +#: setupdialog.cpp:637 +msgid "Border color:" +msgstr "Colore bordo:" + +#: setupdialog.cpp:638 +msgid "Dock opacity:" +msgstr "Opacità dock:" + +#: setupdialog.cpp:639 +msgid "Background color:" +msgstr "Colore di sfondo:" + +#: setupdialog.cpp:640 +#: setupdialog.cpp:651 +msgid "Enabled" +msgstr "Abilitato" + +#: setupdialog.cpp:641 +msgid "Enable a solid background for KoolDock, it may be transparent (dock opacity) and of any color you choose" +msgstr "Abilita uno sfondo a tinta unita per KoolDock, che può essere trasparente (opacità del dock) e di qualsiasi colore tu desideri" + +#: setupdialog.cpp:642 +msgid "Show borders" +msgstr "Mostra bordi" + +#: setupdialog.cpp:643 +msgid "When using a Solid Background you may tell KoolDock to draw its borders (rectangle)" +msgstr "Quando usi uno sfondo a tinta unita puoi dire a KoolDock di disegnare i suoi bordi rettangolari" + +#: setupdialog.cpp:645 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Livello di trasparenza dello sfondo a tinta unita (0 significa totalmente trasparente)" + +#: setupdialog.cpp:646 +msgid "TaskBar Separator" +msgstr "Separatore barra processi" + +#: setupdialog.cpp:647 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Il separatore è una linea disegnata tra il launcher di KoolDock e la barra dei processi" + +#: setupdialog.cpp:648 +msgid "Separator color:" +msgstr "Colore separatore:" + +#: setupdialog.cpp:649 +#: setupdialog.cpp:650 +msgid "Background Theme:" +msgstr "Tema per lo sfondo:" + +#: setupdialog.cpp:652 +msgid "Use set of images instead of a Solid Background" +msgstr "Usa un set di immagini piuttosto che uno sfondo a tinta unita" + +#: setupdialog.cpp:653 +msgid "Background" +msgstr "Sfondo" + +#: setupdialog.cpp:654 +msgid "Window placement" +msgstr "Posizione della finestra" + +#: setupdialog.cpp:655 +msgid "Window position on edge (%):" +msgstr "Posizione del dock (%):" + +#: setupdialog.cpp:656 +msgid "Xinerama Support" +msgstr "Supporto Xinerama" + +#: setupdialog.cpp:657 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Se stai usando xinerama, dovresti attivare quest'opzione per un comportamento corretto." + +#: setupdialog.cpp:658 +msgid "Desired Monitor Width" +msgstr "Larghezza desiderata monitor" + +#: setupdialog.cpp:659 +msgid "Desired Monitor Height" +msgstr "Altezza desiderata monitor" + +#: setupdialog.cpp:660 +msgid "Previous Monitors Width" +msgstr "Larghezza monitor precedente" + +#: setupdialog.cpp:661 +msgid "Window position:" +msgstr "Posizione della finestra:" + +#: setupdialog.cpp:663 +msgid "Left" +msgstr "Sinistra" + +#: setupdialog.cpp:664 +msgid "Right" +msgstr "Destra" + +#: setupdialog.cpp:665 +msgid "Top" +msgstr "Alto" + +#: setupdialog.cpp:666 +msgid "Bottom" +msgstr "Basso" + +#: setupdialog.cpp:667 +msgid "Speed" +msgstr "Velocità" + +#: setupdialog.cpp:668 +msgid "Zooming speed (ms)" +msgstr "Velocità di zoom (ms)" + +#: setupdialog.cpp:672 +msgid "Show after" +msgstr "Mostra dopo" + +#: setupdialog.cpp:673 +msgid "msec" +msgstr "ms" + +#: setupdialog.cpp:674 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Tempo prima di mostrare KoolDock se il mouse raggiunge il fondo dello schermo" + +#: setupdialog.cpp:675 +msgid "Placement and speed" +msgstr "Posizione e velocità" + +#: setupdialog.cpp:676 +#: setupdialog.cpp:678 +msgid "CPU" +msgstr "Processore" + +#: setupdialog.cpp:677 +msgid "Priority (0=max, 19=min)" +msgstr "Priorità (0=max, 19=min)" + +#: setupdialogprg.cpp:445 +msgid "Do you want to remove " +msgstr "Vuoi rimuovere " + +#: setupdialogprg.cpp:446 +msgid "Remove Launcher" +msgstr "Rimuovi launcher" + +#: setupdialogprg.cpp:514 +msgid "Grabbing..." +msgstr "Intercettazione..." + +#: setupdialogprg.cpp:642 +msgid "Swap with" +msgstr "Scambia con" + +#: setupdialogprg.cpp:643 +msgid "Remove" +msgstr "Rimuovi" + +#: xosd.moc.cpp:34 +#: xosd.moc.cpp:42 +msgid "xosd" +msgstr "" + diff --git a/po/kooldock.mo b/po/kooldock.mo new file mode 100644 index 0000000000000000000000000000000000000000..334ba45ea5695d0c2e5e3a8422612954d7dc5990 GIT binary patch literal 498 zcma)%zfQw25XOsO%E-)+feno9bRbQ|LffIDe3BM7m&qFu46H#ggdJ*Hg|J6nZ>vBKQ9+Pk^8QOQ`q| se1*2=Rm3Z6H@VHKrR3gayhWctxvWeHX5v`Command" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:158 +msgid "Name" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:47 +msgid "
KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:1469 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:1457 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3670 +msgid "Ad&vanced" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:769 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:151 +msgid "Advanced Options" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:924 +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3743 +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3788 +msgid "All desktops" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:804 +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:150 +msgid "Alt+A" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:160 +msgid "Alt+B" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:798 +msgid "Amount of big icons:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:812 +msgid "Application List" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:881 +msgid "Apply" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:756 +msgid "Autohide" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:839 +msgid "Background" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:832 +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:835 +msgid "Background Theme:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:824 +msgid "Background color:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:797 +msgid "Big icon size:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:790 +msgid "Bold" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:822 +msgid "Border color:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:859 +msgid "Bottom" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:862 +msgid "CPU" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:789 +msgid "Cleaner text (bigger memory and CPU usage)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:815 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append it to\n" +"the ignore list; you may also manually type or edit the window's name in the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:805 +msgid "Click here to manually add an application to the Launcher" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:814 +msgid "Click here to start grabbing windows names; click Add for each window you click on" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:865 +msgid "Clip desktop workspace" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:867 +msgid "Clip icon area (DCOP)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:837 +msgid "Corner scale: free" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:838 +msgid "Corner scale: min" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:926 +msgid "Current Desktop &%1" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:846 +msgid "Desired Monitor Height" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:845 +msgid "Desired Monitor Width" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3745 +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3790 +msgid "Desktop %1" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:865 +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:940 +msgid "Desktop &%1" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:864 +msgid "Desktop clipping" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:842 +msgid "Determines the position of expanded KoolDock's window on the selected screen edge." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:874 +msgid "Determines the speen of zooming animation" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:424 +msgid "Do you want to remove " +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:823 +msgid "Dock opacity:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:833 +msgid "Don't allow wider background than screen" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:156 +msgid "Don't forget to chose an icon." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:766 +msgid "Don't scroll while mouse is on the same icon" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:802 +msgid "Drag an application to add it or" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:806 +msgid "Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:856 +msgid "E&xit" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:851 +msgid "Edit &Preferences" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:850 +msgid "Edit Quick Launch &Menu" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:753 +msgid "Enable System Tray (Experimental!)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:758 +msgid "Enable Taskbar" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:760 +msgid "Enable Taskbar notification" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:754 +msgid "Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P )" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:759 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:763 +msgid "Enables grouping similar task icons into one icon." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:47 +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:52 +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:57 +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:62 +msgid "Error" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:787 +msgid "Font size:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:782 +msgid "General" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:755 +msgid "General options:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:138 +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:297 +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:500 +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:813 +msgid "Grab Window" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:494 +msgid "Grabbing..." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:848 +msgid "Height of monitor on which kooldock should be shown." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:779 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:778 +msgid "Hide on click" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:161 +msgid "Icon" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:69 +msgid "Icon and artwork" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:783 +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:794 +msgid "Icon text" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:844 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:820 +msgid "Ignore list" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:793 +msgid "Italic" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:902 +msgid "Item menu" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:843 +msgid "Keep &Above Others" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:844 +msgid "Keep &Below Others" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:154 +msgid "Keep terminal open after exit" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:54 +msgid "Kills all processes called Kooldock" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:62 +msgid "KoolDock" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:745 +msgid "KoolDock Configuration" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:146 +msgid "Launcher Properties" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:853 +msgid "Left" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3682 +msgid "Ma&ximize" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:980 +msgid "Ma&ximize all" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:849 +msgid "Main Menu" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:868 +msgid "Makes KDE desktop smaller, that KoolDock's window don't cover the icons." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:866 +msgid "Makes desktop smaller that maximized windows don't cover KoolDock's window." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:771 +msgid "Makes that KoolDock don't use KMenu, but uses alternative KBFX menu (widget is necessary)." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:860 +msgid "Makes that KoolDock's window will appear on bottom screen edge." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:854 +msgid "Makes that KoolDock's window will appear on left screen edge." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:856 +msgid "Makes that KoolDock's window will appear on right screen edge." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:858 +msgid "Makes that KoolDock's window will appear on top screen edge." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:767 +msgid "Makes the scrolling not smooth, but automatically centered on current icon." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:803 +msgid "Manually &add Application" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3678 +msgid "Mi&nimize" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:979 +msgid "Mi&nimize all" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:155 +msgid "Minimal Options" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:834 +msgid "Mkaes that the background ends don't go over the screen edges." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:807 +msgid "Move Left" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:809 +msgid "Move Right" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:808 +msgid "Moves selected item left" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:810 +msgid "Moves selected item right" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:792 +msgid "Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:768 +msgid "Navigation Menu" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:873 +msgid "Navigation: Desktop %1" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:776 +msgid "Only Manage Current Desktop" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:777 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:116 +msgid "Open File" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:880 +msgid "Other" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:861 +msgid "Placement" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:850 +msgid "Previous Monitors Width" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:863 +msgid "Priority (0=max, 19=min)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:68 +msgid "Project Webmaster" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:3675 +msgid "Re&size" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:624 +msgid "Remove" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:425 +msgid "Remove Launcher" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:855 +msgid "Right" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:811 +msgid "Right click opens the icon menu." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:152 +msgid "Run From Terminal" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/appProp.cpp:153 +msgid "Run as different User" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:774 +msgid "Screenshot of minimized windows" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:781 +msgid "Sends KoolDock before other windows, when it's collapsed." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:831 +msgid "Separator color:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:788 +msgid "Shadow color:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:785 +msgid "Shadow offset:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:764 +msgid "Show K Menu" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:875 +msgid "Show after" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:825 +msgid "Show borders" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:52 +msgid "Show configuration window on start" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:772 +msgid "Show only minimized" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:791 +msgid "Show text over icons" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:765 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:762 +msgid "Similar windows grouping" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:795 +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:801 +msgid "Sizes" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:796 +msgid "Small icon size:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:821 +msgid "Solid Background:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:828 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:800 +msgid "Space between icons" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:869 +msgid "Speed" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:878 +msgid "Speed control" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:757 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:780 +msgid "Stay below windows when not used" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:849 +msgid "Sum of widths of monitors before the desired one." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/setupdialogprg.cpp:622 +msgid "Swap with" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:829 +msgid "TaskBar Separator" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:786 +msgid "Text color:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:784 +msgid "Text font:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:773 +msgid "That makes kooldock shows only the minimized application icons, and hides the other." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:830 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:799 +msgid "This box determines amout of zoomed icons." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:877 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:857 +msgid "Top" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:770 +msgid "Use KBFX" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:775 +msgid "When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taskbar." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:826 +msgid "When using a Solid Background you may tell KoolDock to draw its borders (rectangle)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:847 +msgid "Width of monitor on which KoolDock should be shown." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:761 +msgid "Window icon in KoolDock's taskbar will blink when something happens on the given application" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:840 +msgid "Window placement" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:841 +msgid "Window position on edge (%):" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:851 +msgid "Window position:" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:843 +msgid "Xinerama Support" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/kooldock.cpp:1425 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:870 +msgid "Zooming speed (ms)" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:70 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/src/main.cpp:70 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:752 +msgid "checkBox11" +msgstr "" + +#: /home/bisiek/Desktop/k2/kooldock_1/debug/src/setupdialog.cpp:876 +msgid "msec" +msgstr "" + diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..45d43f8 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,617 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2007-05-07 12:00+0100\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-KeywordsList: I18N_NOOP;i18n;tr2i18n\n" +"X-Poedit-Basepath: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock\n" +"X-Poedit-SearchPath-0: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock\n" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1018 +msgid "&About" +msgstr "&Over" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:152 +msgid "&Add" +msgstr "&Nieuw" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:665 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:150 +msgid "&Cancel" +msgstr "S&toppen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1165 +msgid "&Close" +msgstr "&Sluiten" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1101 +msgid "&Delete item" +msgstr "&Verwijder item" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1100 +msgid "&Edit item" +msgstr "Wijzig it&em" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1072 +msgid "&Go to Desktop" +msgstr "&Naar Bureaublad" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1163 +msgid "&Move to Desktop" +msgstr "&Verplaats naar Bureaublad" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1016 +msgid "&Reload configuration" +msgstr "He&rladen configuratie" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1159 +msgid "&Restore" +msgstr "He&rstel" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1073 +msgid "&Task List" +msgstr "&Takenlijst" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:161 +msgid "Command" +msgstr "Opdracht" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:162 +msgid "Name" +msgstr "Naam" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:49 +msgid "
KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
een Kool Dock voor KDE

KoolDock is gebaseerd op het originele werk of Dang Viet Dung, Ksmoothdock 2.1

" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1598 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr " %1 bleek niet uitvoerbaar. Corrigeer de opdracht en probeer het nog eens." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1585 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "Programma blijkt niet te vinden. Corrigeer de opdracht en probeer het nog eens." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:682 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Voegt een Klokje toe aan het hoofdmenu en een Bureaubladmanager." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:154 +msgid "Advanced Options" +msgstr "Extra opties" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:714 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:153 +msgid "Alt+A" +msgstr "Alt+A" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:164 +msgid "Alt+B" +msgstr "Alt+B" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:707 +msgid "Amount of big icons:" +msgstr "Aantal grote ikonen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:718 +msgid "Application List" +msgstr "Toepassingenlijst" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:685 +msgid "Autohide" +msgstr "Verberg automatisch" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:745 +msgid "Background" +msgstr "Achtergrond" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:740 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:742 +msgid "Background Theme:" +msgstr "Achtergrond-thema" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:730 +msgid "Background color:" +msgstr "Achtergrondkleur" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:706 +msgid "Big icon size:" +msgstr "Afm. groot ikoon" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:700 +msgid "Bold" +msgstr "Vet" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:728 +msgid "Border color:" +msgstr "Kaderkleur" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:758 +msgid "Bottom" +msgstr "Beneden" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:702 +msgid "Cleaner text (bigger memory and CPU usage)" +msgstr "Opschonen tekst" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:721 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append it to\n" +"the ignore list; you may also manually type or edit the window's name in the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "Klik \"Pak venster op\" en klik een venster aan, klik vervolgens \"Toevoegen\" om\n" +"toe te voegen aan de lijst; je kunt ook handmatig een vensternaam toevoegen \n" +"in het kader hieronder. Om te stoppen klik je \"Versleep...\", \"Ok\" of \"Stoppen\"." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:715 +msgid "Click here to manually add an application to the Launcher" +msgstr "Handmatig toevoegen van toepassing" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:720 +msgid "Click here to start grabbing windows names; click Add for each window you click on" +msgstr "Klik hier om verslepen te starten." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:771 +msgid "Clip desktop workspace" +msgstr "Geen afdekking van KoolDock door Bureaublad" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:772 +msgid "Clip icon area (DCOP)" +msgstr "Geen afdekking van Bureaublad door KoolDock (transparant)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1120 +msgid "Current Desktop &%1" +msgstr "Huidige Bureaublad &%1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:751 +msgid "Desired Monitor Height" +msgstr "Gewenste hoogte" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:750 +msgid "Desired Monitor Width" +msgstr "Gewenste breedte" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:770 +msgid "Desktop clipping" +msgstr "Niet-verborgen modus" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:465 +msgid "Do you want to remove " +msgstr "Verwijderen van " + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:729 +msgid "Dock opacity:" +msgstr "Transparantie" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:741 +msgid "Don't allow wider background than screen" +msgstr "Achtergrond niet breder dan scherm" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:160 +msgid "Don't forget to chose an icon." +msgstr "Kies een ikoontje." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:689 +msgid "Don't scroll while mouse is on the same icon" +msgstr "Niet verplaatsen zolang de muis op zelfde ikoon staat" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:712 +msgid "Drag an application to add it or" +msgstr "Versleep een toepassing om toe te voegen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:716 +msgid "Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher" +msgstr "versleep en plaats hier de toepassingen die je in KoolDock wilt zien verschijnen." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1015 +msgid "Edit &Preferences" +msgstr "Wijzig voorke&uren" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1014 +msgid "Edit Quick Launch &Menu" +msgstr "Wijzig Snelstart-&menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:677 +msgid "Enable System Tray (Experimental!)" +msgstr "Activeer Systeemlade (experimenteel!)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:675 +msgid "Enable Taskbar" +msgstr "Activeer Taakbalk" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:670 +msgid "Enable Taskbar notification" +msgstr "Activeer Taakbalk-kennisgeving" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:732 +msgid "Enable a solid background for KoolDock, it may be transparent (dock opacity) and of any color you choose" +msgstr "Activeer een egale achtergrond voor KoolDock. Elke kleur of transparantie is ok." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:731 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:743 +msgid "Enabled" +msgstr "Actief" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:678 +msgid "Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P )" +msgstr "Activeert KoolDock's Systeembalk-ondersteuning; Je kunt dit gebruiken i.p.v. Kicker systray applets; (alleen debug-mode!)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:676 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Activeert KoolDock's Taakbalk; te gebruiken i.p.v. de Kicker taakbalk" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "Error" +msgstr "Fout" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:696 +msgid "Font size:" +msgstr "Lettergrootte:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:691 +msgid "General" +msgstr "Algemeen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:669 +msgid "General options:" +msgstr "Algemene opties:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:719 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:131 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:295 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:540 +msgid "Grab Window" +msgstr "Pak venster op" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:534 +msgid "Grabbing..." +msgstr "Oppakken..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:688 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Verberg Kooldock na activeren van een toepassing" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:687 +msgid "Hide on click" +msgstr "Verberg na aanklikken" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:165 +msgid "Icon" +msgstr "Ikoon" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:74 +msgid "Icon and artwork" +msgstr "Vormgeving" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:692 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:703 +msgid "Icon text" +msgstr "Ikoon-tekst" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:749 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Activeer dit bij gebruik van Xinerama voor correct gedrag." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:726 +msgid "Ignore list" +msgstr "'Links laten liggen'" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:701 +msgid "Italic" +msgstr "Schuingedrukt" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1098 +msgid "Item menu" +msgstr "Item-menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:157 +msgid "Keep terminal open after exit" +msgstr "Terminal openhouden na uitvoer" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:56 +msgid "Kills all processes called Kooldock" +msgstr "Stopt alle KoolDock-activiteiten" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:661 +msgid "KoolDock Configuration" +msgstr "KoolDock configuratie" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:149 +msgid "Launcher Properties" +msgstr "Launcher eigenschappen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:755 +msgid "Left" +msgstr "Links" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1154 +msgid "Ma&ximize" +msgstr "Ma&ximaliseer" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1013 +msgid "Main Menu" +msgstr "Hoofdmenu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:713 +msgid "Manually &add Application" +msgstr "H&andmatig toevoegen toepassing" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1151 +msgid "Mi&nimize" +msgstr "Verklei&nen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:158 +msgid "Minimal Options" +msgstr "Basis-opties" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:710 +msgid "Move Left" +msgstr "Linksaf..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:711 +msgid "Move Right" +msgstr "Rechtsaf..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:699 +msgid "Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen" +msgstr "Als je de muis boven KoolDock beweegt wordt de naam van het bureaublad zichtbaar" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:681 +msgid "Navigation Menu" +msgstr "Navigatiemenu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1070 +msgid "Navigation: Desktop %1" +msgstr "Navigatie: Bureaublad %1" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:673 +msgid "Only Manage Current Desktop" +msgstr "Alleen beheersing actueel Bureaublad" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:674 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Alleen vensters in actueel Bureaublad tonen in de Taakbalk" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:117 +msgid "Open File" +msgstr "Open bestand" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:773 +msgid "Other" +msgstr "Overig" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:767 +msgid "Placement and speed" +msgstr "Plaatsing en snelheid" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:752 +msgid "Previous Monitors Width" +msgstr "Vorige breedte" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:769 +msgid "Priority (0=max, 19=min)" +msgstr "Prioriteit (0=max, 19=min)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:73 +msgid "Project Webmaster" +msgstr "Project webmaster" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:663 +msgid "Remove" +msgstr "Verwijder" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:466 +msgid "Remove Launcher" +msgstr "Verwijder Launcher" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:756 +msgid "Right" +msgstr "Rechts" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:717 +msgid "Right click opens the icon menu." +msgstr "Rechts-klikken opent het ikonen-menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:155 +msgid "Run From Terminal" +msgstr "Uitvoeren in Terminal" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/appProp.cpp:156 +msgid "Run as different User" +msgstr "Uitvoeren als andere gebruiker" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:683 +msgid "Screenshot of minimized windows" +msgstr "Schermafbeelding" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:739 +msgid "Separator color:" +msgstr "Kleur scheidingsteken:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:697 +msgid "Shadow color:" +msgstr "Schaduwkleur:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:694 +msgid "Shadow offset:" +msgstr "Schaduw verschuiving:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:679 +msgid "Show K Menu" +msgstr "Toon K-Menu" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:764 +msgid "Show after" +msgstr "Toon na" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:733 +msgid "Show borders" +msgstr "Toon kaders" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:54 +msgid "Show configuration window on start" +msgstr "Toon configuratie-menu bij opstarten" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:672 +msgid "Show only minimized" +msgstr "Toon alleen geminimaliseerd" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:698 +msgid "Show text over icons" +msgstr "Toon tekst boven ikonen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:680 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "KDE-Menu in KoolDock's Launcher" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:704 +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:709 +msgid "Sizes" +msgstr "Afmetingen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:705 +msgid "Small icon size:" +msgstr "Afm. klein ikoon" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:727 +msgid "Solid Background:" +msgstr "Egale achtergrond:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:736 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Mate van transparantie (0=volledig)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:708 +msgid "Space between icons" +msgstr "Ruimte tussen ikonen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:759 +msgid "Speed" +msgstr "Snelheid" + +#: probeersel: +msgid "Visual" +msgstr "Vormgeving" + +#: idem: +msgid "Visual options" +msgstr "Vormgeving" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:684 +msgid "Start hidden" +msgstr "Start verborgen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:686 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Start KoolDock verborgen" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:690 +msgid "Stay below windows when not used" +msgstr "Blijf verborgen indien niet gebruikt" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialogprg.cpp:662 +msgid "Swap with" +msgstr "Verwissel met" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:737 +msgid "TaskBar Separator" +msgstr "Taakbalk scheidingsteken" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:695 +msgid "Text color:" +msgstr "Tekstkleur:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:693 +msgid "Text font:" +msgstr "Lettertype" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:738 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Scheidingsteken is een lijn tussen KoolDock en de Taakbalk" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:766 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Vertraging voordat KoolDock zichtbaar wordt." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:757 +msgid "Top" +msgstr "Boven" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:744 +msgid "Use set of images instead of a Solid Background" +msgstr "Gebruik plaatje i.p.v. egale achtergrond" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:684 +msgid "When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taakbalk." +msgstr "Bij verkleind venster gebruikt KoolDock een schermafbeelding als ikoon in de KoolDock Taakbalk." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:734 +msgid "When using a Solid Background you may tell KoolDock to draw its borders (rectangle)" +msgstr "Bij gebruik van een egale achtergrond kun je KoolDock kaders zichtbaar maken." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:671 +msgid "Window icon in KoolDock's taakbalk will blink when something happens on the given application" +msgstr "Venster-ikoon in KoolDock-taakbalk knippert als er iets gebeurt in die toepassing." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:746 +msgid "Window placement" +msgstr "Vensterplaatsing" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:747 +msgid "Window position on edge (%):" +msgstr "Vensterpositie langs rand (%):" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:753 +msgid "Window position:" +msgstr "Vensterpositie:" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/kooldock.cpp:1560 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Je moet wel eerst een opdracht opgeven." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Graag een opdracht of pad opvoeren..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Graag een naam opvoeren..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Graag een gebruikersnaam opvoeren." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Wel een ikoontje selecteren..." + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/setupdialog.cpp:760 +msgid "Zooming speed (ms)" +msgstr "Flits-snelheid (ms)" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "_: EMAIL VERTALERS: \n" +"pasinon@versatel.nl" + +#: /home/bisiek/Desktop/k2/kooldock_1/kooldock/kooldock/main.cpp:75 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "_: VERTALERS: \n" +"Peter A. Sinon" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..b24bd35 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,544 @@ +# translation of pl.po to Polish +# translation of kooldock.pot to Polish +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Piotr Rybaltowski , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: pl\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-05-26 04:01-0400\n" +"PO-Revision-Date: 2005-08-27 09:37+0200\n" +"Last-Translator: Piotr Maliński \n" +"Language-Team: Polish \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.3\n" +"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: kooldock.moc.cpp:34 kooldock.moc.cpp:42 main.cpp:59 +msgid "KoolDock" +msgstr "KoolDock" + +#: _translatorinfo.cpp:1 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "Polish: Piotr 'dekoder' Rybałtowski" + +#: _translatorinfo.cpp:3 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "dekoder@z.pl" + +#: main.cpp:47 +msgid "" +"
KoolDock
A Kool Dock for KDE

KoolDock is based " +"upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "
KoolDock
Kool Dock dla KDE

KoolDock jest wzorowany na programie Ksmoothdock 2.1 autorstwa Dang Viet Dung'a

" + +#: main.cpp:65 +msgid "Project Webmaster" +msgstr "Administrator projektu" + +#: main.cpp:66 +msgid "Icon and artwork" +msgstr "Ikony i grafika" + +#: apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Musisz wybrać ikonę!" + +#: apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Musisz podać tytuł!" + +#: apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Musisz podać polecenie lub ścieżkę!" + +#: apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Musisz podać nazwę użytkownika!" + +#: apppropprg.cpp:103 setupdialogprg.cpp:379 setupdialogprg.cpp:385 +#: setupdialogprg.cpp:391 +msgid "Open File" +msgstr "Otwórz plik" + +#: xosd.moc.cpp:34 xosd.moc.cpp:42 +msgid "xosd" +msgstr "xosd" + +#: setupdialogprg.cpp:134 setupdialogprg.cpp:258 setupdialogprg.cpp:496 +#: setupdialog.cpp:456 +msgid "Grab Window" +msgstr "Chwyć okno" + +#: setupdialogprg.cpp:445 +msgid "Do you want to remove " +msgstr "Czy chcesz usunąć " + +#: setupdialogprg.cpp:446 +msgid "Remove Launcher" +msgstr "Usuń Panel uruchamiania" + +#: setupdialogprg.cpp:490 +msgid "Grabbing..." +msgstr "Chwytanie..." + +#: kooldock.cpp:632 +msgid "Main Menu" +msgstr "Główne Menu" + +#: kooldock.cpp:633 +msgid "Edit Quick Launch &Menu" +msgstr "Edytuj &Menu Szybkiego Uruchamiania" + +#: kooldock.cpp:634 +msgid "Edit &Preferences" +msgstr "Edytuj Ustawienia" + +#: kooldock.cpp:635 +msgid "&Reload configuration" +msgstr "&Przeładuj konfigurację" + +#: kooldock.cpp:649 kooldock.cpp:718 +msgid "Desktop &%1" +msgstr "Pulpit &%1" + +#: kooldock.cpp:657 +msgid "Navigation: Desktop %1" +msgstr "Nawigacja: Pulpit %1" + +#: kooldock.cpp:659 +msgid "&Go to Desktop" +msgstr "&Idź do pulpitu" + +#: kooldock.cpp:684 +msgid "Item menu" +msgstr "Menu elementów" + +#: kooldock.cpp:686 +msgid "&Edit item" +msgstr "&Edytuj element" + +#: kooldock.cpp:687 +msgid "&Delete item" +msgstr "&Usuń element" + +#: kooldock.cpp:706 +msgid "Current Desktop &%1" +msgstr "Aktualny Pulpit &%1" + +#: kooldock.cpp:737 +msgid "Mi&nimize" +msgstr "Mi&nimalizuj" + +#: kooldock.cpp:740 +msgid "Ma&ximize" +msgstr "Ma&ksymalizuj" + +#: kooldock.cpp:745 +msgid "&Restore" +msgstr "&Przywróć" + +#: kooldock.cpp:749 +msgid "&Move to Desktop" +msgstr "P&rzenieś na Pulpit" + +#: kooldock.cpp:1182 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Musisz wcześniej podać polecenie do wykonania lub URL do otwarcia." + +#: kooldock.cpp:1207 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Nazwa programu lub polecenie %1\n" +"nie zostało odnalezione. Popraw polecenie lub URL\n" +"i spróbuj ponownie" + +#: kooldock.cpp:1220 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Nie udało się uruchomić %1.\n" +"Popraw polecenie lub URL i spróbuj ponownie." + +#: appProp.cpp:148 +msgid "Launcher Properties" +msgstr "Ustawienia Panelu uruchamiania" + +#: appProp.cpp:151 +msgid "&Add" +msgstr "&Dodaj" + +#: appProp.cpp:152 setupdialog.cpp:452 +msgid "Alt+A" +msgstr "Alt+A" + +#: appProp.cpp:153 +msgid "Advanced Options" +msgstr "Zaawansowane Opcje" + +#: appProp.cpp:154 +msgid "Run From Terminal" +msgstr "Uruchom z Terminala" + +#: appProp.cpp:155 +msgid "Run as different User" +msgstr "Uruchom jako inny użytkownik" + +#: appProp.cpp:156 +msgid "Keep terminal open after exit" +msgstr "Pozostaw terminal uruchomiony po wyjściu" + +#: appProp.cpp:157 +msgid "Minimal Options" +msgstr "Minimalne Opcje" + +#: appProp.cpp:158 +msgid "checkBox1" +msgstr "checkBox1" + +#: appProp.cpp:159 +msgid "Don't forget to chose an icon." +msgstr "Nie zapomnij wybrać ikony." + +#: appProp.cpp:160 +msgid "Command" +msgstr "Polecenie" + +#: appProp.cpp:161 +msgid "Name" +msgstr "Tytuł" + +#: appProp.cpp:162 +msgid "&Browse" +msgstr "&Przeglądaj" + +#: appProp.cpp:163 +msgid "Alt+B" +msgstr "Alt+B" + +#: appProp.cpp:164 +msgid "Icon" +msgstr "Ikona" + +#: setupdialog.cpp:410 +msgid "KoolDock Configuration" +msgstr "Konfiguracja KoolDock" + +#: setupdialog.cpp:413 +msgid "checkBox11" +msgstr "checkBox11" + +#: setupdialog.cpp:414 +msgid "Visual options:" +msgstr "Opcje widoku:" + +#: setupdialog.cpp:415 +msgid "Text font:" +msgstr "Czcionka:" + +#: setupdialog.cpp:416 +msgid "Text color:" +msgstr "Kolor tekstu:" + +#: setupdialog.cpp:417 +msgid "Big icon size:" +msgstr "Rozmiar dużych ikon:" + +#: setupdialog.cpp:418 +msgid "Shadow offset:" +msgstr "Wysunięcie cienia:" + +#: setupdialog.cpp:419 +msgid "Font size:" +msgstr "Rozmiar czcionki:" + +#: setupdialog.cpp:420 +msgid "Small icon size:" +msgstr "Rozmiar małej ikony:" + +#: setupdialog.cpp:421 +msgid "Start hidden" +msgstr "Uruchom ukryty" + +#: setupdialog.cpp:422 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Uruchom KoolDock ukryty; jeżli mysz nie jest nad nim zostanie ukryty" + +#: setupdialog.cpp:423 +msgid "Hide on click" +msgstr "Ukryj przy kliknięciu" + +#: setupdialog.cpp:424 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Ukrywaj KoolDock przy kliknięciu ikony Launcher'a lub Okna." + +#: setupdialog.cpp:425 +msgid "msec" +msgstr "msek" + +#: setupdialog.cpp:426 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Czas do pokazania KooDock jeżeli kursor jest na dole ekranu" + +#: setupdialog.cpp:427 +msgid "Show text over icons" +msgstr "PokaĹź tekst nad ikonami" + +#: setupdialog.cpp:428 +msgid "" +"Moving the mouse over KoolDock's launcher or TaskBar will show the window/" +"launcher name on the screen" +msgstr "Poruszanie kursora nad panelem uruchamiającym lub paskiem zadań spowoduje wyświetlenie nazwy okna/ikony na ekranie" + +#: setupdialog.cpp:430 +msgid "Bold" +msgstr "Pogrubiony" + +#: setupdialog.cpp:431 +msgid "Show after" +msgstr "Pokaż po" + +#: setupdialog.cpp:432 +msgid "Show K Menu" +msgstr "Pokaż Menu K" + +#: setupdialog.cpp:433 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Pokazuje Menu KDE w panelu uruchamiającym programu KoolDock." + +#: setupdialog.cpp:434 +msgid "Navigation Menu" +msgstr "Menu nawigacyjne" + +#: setupdialog.cpp:435 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Dodaje zegar do głównego menu oraz nawigatora wirtualnego pulpitu." + +#: setupdialog.cpp:436 +msgid "Xinerama Support" +msgstr "Obsługa Xinerama" + +#: setupdialog.cpp:437 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Jeśli korzystasz z xineramy powinieneś uruchomić tę opcję." + +#: setupdialog.cpp:438 +msgid "Screenshot of minimized windows" +msgstr "Podgląd zminimalizowanych okien" + +#: setupdialog.cpp:439 +msgid "" +"When a window is minimized a screenshot of the application will be use as an " +"icon in KoolDock's Taskbar." +msgstr "Gdy okno jest zminimalizowane zamiast ikony na pasku zadań pokaże się podgląd programu." + +#: setupdialog.cpp:440 +msgid "Enable Taskbar notification" +msgstr "Włącz powiadamianie paska zadań" + +#: setupdialog.cpp:441 +msgid "" +"Window icon in KoolDock's taskbar will blink when something happens on the " +"given application" +msgstr "Ikona okna w pasku zadań zacznie migać gdy coś się wydarzy w danej aplikacji" + +#: setupdialog.cpp:442 +msgid "Only Manage Current Desktop" +msgstr "Zarządzaj tylko aktualnym pulpitem" + +#: setupdialog.cpp:443 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Pokazuj tylko w oknach paska zadań aktualnego pulpitu" + +#: setupdialog.cpp:444 +msgid "Enable Taskbar" +msgstr "Włącz pasek zadań" + +#: setupdialog.cpp:445 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Uruchom pasek zadań KoolDock; może on zastąpić pasek zadań Kicker'a" + +#: setupdialog.cpp:446 +msgid "Enable System Tray (Experimental!)" +msgstr "Uruchom tackę systemową (Experymentalne!)" + +#: setupdialog.cpp:447 +msgid "" +"Enables KoolDock System Tray Support; it can be used instead of kicker's " +"systray applet (its VERY experimental; do not use it unless you intend to " +"help me get this working :P )" +msgstr "Uruchamia tackę systemową w oknie KoolDock; może ona zastąpić aplet tacki systemowej Kicker'a (jest jednak w fazie testów; nie należy używać chyba, że chcesz pomóc ją usprawnić)" + +#: setupdialog.cpp:448 +msgid "Visual" +msgstr "Widok" + +#: setupdialog.cpp:449 +msgid "Drag an application to add it or" +msgstr "Przeciągnij aplikację, aby ją dodać lub" + +#: setupdialog.cpp:450 +msgid "" +"To remove an application place the mouse over the icon and press the left " +"button." +msgstr "Aby usunąć aplikację przenień kursor nad ikonę i naciśnij lewy przycisk myszy." + +#: setupdialog.cpp:451 +msgid "Manually &add Application" +msgstr "Ręcznie &dodaj Aplikację" + +#: setupdialog.cpp:453 +msgid "Click here to manually add an application to the Launcher" +msgstr "Kliknij tutaj, aby ręcznie dodać aplikację do Panelu uruchamiania" + +#: setupdialog.cpp:454 +msgid "" +"Drag and Drop here any executable or desktop file for which you want an " +"entry in KoolDock's Launcher" +msgstr "Przeciągnij i upuść tutaj dowolny plik uruchomieniowy lub plik pulpitu (.desktop), aby go dodać do panelu KoolDock" + +#: setupdialog.cpp:455 +msgid "Application List" +msgstr "Lista aplikacji" + +#: setupdialog.cpp:457 +msgid "" +"Click here to start grabbing windows names; click Add for each window you " +"click on" +msgstr "Kliknij tu, aby przeciągnąć nazwy okien; kliknij Dodaj dla każdego okna, na które klikniesz" + +#: setupdialog.cpp:458 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append " +"it to\n" +"the ignore list; you may also manually type or edit the window's name in " +"the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Kliknij \"Przeciągnij Okno\" i kliknij ponad Oknem, nastąpnie kliknij \"Dodaj\", aby dopisać je\n" +"do listy ignorowanych; możesz także ręcznie wpisać lub edytowaę nazwy okien\n" +"w polu poniĹźej. Aby przerwać przeciągnie kliknij \"Przeciągnie...'\",\"OK\" lub \"Anuluj\"." + +#: setupdialog.cpp:463 +msgid "Ignore list" +msgstr "Lista ignorowanych" + +#: setupdialog.cpp:464 +msgid "Background image:" +msgstr "Obrazek tła:" + +#: setupdialog.cpp:465 +msgid "Right side:" +msgstr "Prawa strona:" + +#: setupdialog.cpp:466 +msgid "Left side:" +msgstr "Lewa strona:" + +#: setupdialog.cpp:467 +msgid "Center:" +msgstr "Środek:" + +#: setupdialog.cpp:468 setupdialog.cpp:469 setupdialog.cpp:470 +msgid "Select" +msgstr "Wybór" + +#: setupdialog.cpp:471 setupdialog.cpp:480 +msgid "Enabled" +msgstr "Włączony" + +#: setupdialog.cpp:472 +msgid "Use set of images instead of a Solid Background" +msgstr "Użyj zestawu obrazków zamiast jednolitego tła" + +#: setupdialog.cpp:473 +msgid "TaskBar Separator" +msgstr "Separator Paska Zadań" + +#: setupdialog.cpp:474 +msgid "Separator color:" +msgstr "Kolor separatora:" + +#: setupdialog.cpp:475 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Separator to linia pomiędzy Panelem uruchamiania a Paskiem zadań" + +#: setupdialog.cpp:476 +msgid "Solid Background:" +msgstr "Jednolite tło:" + +#: setupdialog.cpp:477 +msgid "Border color:" +msgstr "Kolor ramki:" + +#: setupdialog.cpp:478 +msgid "Dock opacity:" +msgstr "Nieprzezroczystość dokowania:" + +#: setupdialog.cpp:479 +msgid "Background color:" +msgstr "Kolor tła:" + +#: setupdialog.cpp:481 +msgid "" +"Enable a solid background for KoolDock, it may be transparent (dock opacity) " +"and of any color you choose" +msgstr "Włącz jednolite tło dla KoolDock, może być przezroczyste i dowolnego koloru" + +#: setupdialog.cpp:482 +msgid "Show borders" +msgstr "Pokaż ramki" + +#: setupdialog.cpp:483 +msgid "" +"When using a Solid Background you may tell KoolDock to draw its borders " +"(rectangle)" +msgstr "Gdy używasz jednolitego tła możesz włączyć ramki (prostokątne)" + +#: setupdialog.cpp:484 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Poziom przezroczystości jednolitego tła (0 oznacza pełną przezroczystość)" + +#: setupdialog.cpp:485 +msgid "Background" +msgstr "Tło" + +#: setupdialog.cpp:521 +msgid "Speed" +msgstr "Szybkość" + +#: setupdialog.cpp:522 +msgid "Priority (0=max, 19=min)" +msgstr "Prorytet (0=max, 19=min)" + +#: setupdialog.cpp:523 +msgid "Window placement" +msgstr "Pozycja okna" + +#: setupdialog.cpp:524 +msgid "Window position on edge (%):" +msgstr "Pozycja okna na krawędzi (%):" + +#: setupdialog.cpp:525 +msgid "Placement and speed" +msgstr "Pozycja i szybkość" + +#: setupdialog.cpp:505 +msgid "Move Left" +msgstr "Przenieś w lewo" + +#: setupdialog.cpp:506 +msgid "Move Right" +msgstr "Przenieś w prawo" diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..76f8de4 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,517 @@ +# translation of sv.po to Swedish +# translation of kooldock.po to Swedish +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# William Ekholm , 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: sv\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2004-06-05 04:05-0400\n" +"PO-Revision-Date: 2004-07-18 22:28+0200\n" +"Last-Translator: William Ekholm \n" +"Language-Team: Swedish\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.3.1\n" + +#: kooldock.moc.cpp:34 kooldock.moc.cpp:42 main.cpp:59 +msgid "KoolDock" +msgstr "KoolDock" + +#: _translatorinfo.cpp:1 main.cpp:67 +msgid "" +"_: NAME OF TRANSLATORS\n" +"Your names" +msgstr "William Ekholm" + +#: _translatorinfo.cpp:3 main.cpp:67 +msgid "" +"_: EMAIL OF TRANSLATORS\n" +"Your emails" +msgstr "zyk@linuxmail.org" + +#: main.cpp:47 +msgid "" +"
KoolDock
A Kool Dock for KDE

KoolDock is based " +"upon the original work of Dang Viet Dung, Ksmoothdock 2.1

" +msgstr "" +"
KoolDock
En \"Kool\" Docka för KDE

KoolDock är baserat " +"på Ksmoothdock 2.1, gjort av Dang Viet Dung,

" + +#: main.cpp:65 +msgid "Project Webmaster" +msgstr "Webmaster för projektet" + +#: main.cpp:66 +msgid "Icon and artwork" +msgstr "Ikon och grafk" + +#: apppropprg.cpp:47 +msgid "You must select an icon!" +msgstr "Du måste välja en ikon!" + +#: apppropprg.cpp:52 +msgid "You must enter a name!" +msgstr "Du måste skriva ett namn!" + +#: apppropprg.cpp:57 +msgid "You must enter a command or path!" +msgstr "Du måste skriva ett kommando eller en sökväg!" + +#: apppropprg.cpp:62 +msgid "You must provide a username!" +msgstr "Du måste ange ett användarnamn!" + +#: apppropprg.cpp:117 +msgid "Open File" +msgstr "Öppna fil" + +#: xosd.moc.cpp:34 xosd.moc.cpp:42 +msgid "xosd" +msgstr "xosd" + +#: setupdialogprg.cpp:123 setupdialogprg.cpp:261 setupdialogprg.cpp:503 +#: setupdialog.cpp:446 +msgid "Grab Window" +msgstr "Fånga fönster" + +#: setupdialogprg.cpp:428 +msgid "Do you want to remove " +msgstr "Vill du ta bort " + +#: setupdialogprg.cpp:429 +msgid "Remove Launcher" +msgstr "Ta bort startare" + +#: setupdialogprg.cpp:497 +msgid "Grabbing..." +msgstr "Fångar..." + +#: setupdialogprg.cpp:607 +msgid "Swap with" +msgstr "Byt med" + +#: kooldock.cpp:634 +msgid "Main Menu" +msgstr "Huvudmeny" + +#: kooldock.cpp:635 +msgid "Edit Quick Launch &Menu" +msgstr "Ändra snabbstartsmenyn" + +#: kooldock.cpp:636 +msgid "Edit &Preferences" +msgstr "Inställningar" + +#: kooldock.cpp:637 +msgid "&Reload configuration" +msgstr "Ladda om konfiguration" + +#: kooldock.cpp:651 kooldock.cpp:753 +msgid "Desktop &%1" +msgstr "Skrivbord &%1" + +#: kooldock.cpp:668 +msgid "Desktop %1" +msgstr "Skrivbord %1" + +#: kooldock.cpp:691 +msgid "Navigation: Desktop %1" +msgstr "Navigering: Skrivbord %1" + +#: kooldock.cpp:693 +msgid "&Go to Desktop" +msgstr "&Gå till skrivbord" + +#: kooldock.cpp:694 +msgid "&Task List" +msgstr "Aktivitetsfält" + +#: kooldock.cpp:719 +msgid "Item menu" +msgstr "Objektmeny" + +#: kooldock.cpp:721 +msgid "&Edit item" +msgstr "Ändra objekt" + +#: kooldock.cpp:722 +msgid "&Delete item" +msgstr "Ta bort objekt" + +#: kooldock.cpp:741 +msgid "Current Desktop &%1" +msgstr "Nuvarande skrivbord &%1" + +#: kooldock.cpp:772 +msgid "Mi&nimize" +msgstr "Minimera" + +#: kooldock.cpp:775 +msgid "Ma&ximize" +msgstr "Maximera" + +#: kooldock.cpp:780 +msgid "&Restore" +msgstr "Återställ" + +#: kooldock.cpp:784 +msgid "&Move to Desktop" +msgstr "Flytta till skrivbord" + +#: kooldock.cpp:1218 +msgid "You have to enter a command to execute or a URL to be opened first." +msgstr "Du måste skriva in ett kommando att köra eller en sökväg att öpnna först." + +#: kooldock.cpp:1243 +msgid "" +"The program name or command %1\n" +"cannot be found. Please correct the command\n" +"or URL and try again" +msgstr "" +"Programmet eller kommandot %1\n" +"kunde inte hittas. Ändra kommandot\neller sökvägen och försök igen" + +#: kooldock.cpp:1256 +msgid "" +"Could not run %1.\n" +"Please correct the command or URL and try again." +msgstr "" +"Kunde inte köra %1.\n" +"Ändra kommandot eller sökvägen och försök igen." + +#: appProp.cpp:148 +msgid "Launcher Properties" +msgstr "Startare egenskaper" + +#: appProp.cpp:151 +msgid "&Add" +msgstr "Lägg till" + +#: appProp.cpp:152 setupdialog.cpp:442 +msgid "Alt+A" +msgstr "Alt+A" + +#: appProp.cpp:153 +msgid "Advanced Options" +msgstr "Avancerade inställningar" + +#: appProp.cpp:154 +msgid "Run From Terminal" +msgstr "Kör från terminal" + +#: appProp.cpp:155 +msgid "Run as different User" +msgstr "Kör som en annan användare" + +#: appProp.cpp:156 +msgid "Keep terminal open after exit" +msgstr "Låt terminalfönstret vara öppet efter programmet har avslutats" + +#: appProp.cpp:157 +msgid "Minimal Options" +msgstr "Minimala inställningar" + +#: appProp.cpp:158 +msgid "checkBox1" +msgstr "checkBox1" + +#: appProp.cpp:159 +msgid "Don't forget to chose an icon." +msgstr "Glöm inte att välja en ikon" + +#: appProp.cpp:160 +msgid "Command" +msgstr "Kommando" + +#: appProp.cpp:161 +msgid "Name" +msgstr "Namn" + +#: appProp.cpp:162 +msgid "&Browse" +msgstr "&Bläddra" + +#: appProp.cpp:163 +msgid "Alt+B" +msgstr "Alt+B" + +#: appProp.cpp:164 +msgid "Icon" +msgstr "Ikon" + +#: setupdialog.cpp:398 +msgid "KoolDock Configuration" +msgstr "KoolDock Konfiguration" + +#: setupdialog.cpp:401 +msgid "checkBox11" +msgstr "checkBox11" + +#: setupdialog.cpp:402 +msgid "Visual options:" +msgstr "Synliga inställningar:" + +#: setupdialog.cpp:403 +msgid "Start hidden" +msgstr "Starta gömd" + +#: setupdialog.cpp:404 +msgid "Start KoolDock hidden; if the mouse is not over KoolDock it will hide" +msgstr "Starta Kooldock gömt; Om musen inte är över KoolDock kommer KoolDock att gömma sig" + +#: setupdialog.cpp:405 +msgid "Hide on click" +msgstr "Göm på klick" + +#: setupdialog.cpp:406 +msgid "Hide KoolDock after clicking on a Launcher or Window icon." +msgstr "Göm KoolDock efter ha klickat på en Startare eller fönsterikon" + +#: setupdialog.cpp:407 +msgid "msec" +msgstr "msek" + +#: setupdialog.cpp:408 +msgid "Time before showing KoolDock if mouse reaches bottom of the screen" +msgstr "Tid före KoolDock visas när musen rör botten av skärmen" + +#: setupdialog.cpp:409 +msgid "Show text over icons" +msgstr "Visa text över ikoner" + +#: setupdialog.cpp:410 +msgid "" +"Moving the mouse over KoolDock's launcher or TaskBar will show the window/" +"launcher name on the screen" +msgstr "Genom att flytta musen över KoolDock's startare/aktivitetsfält för att visa fönster/startare namnet på skärmen" + +#: setupdialog.cpp:411 +msgid "Bold" +msgstr "Fet" + +#: setupdialog.cpp:412 +msgid "Show after" +msgstr "Visa efter" + +#: setupdialog.cpp:413 +msgid "Big icon size:" +msgstr "Stor ikon storlek:" + +#: setupdialog.cpp:414 +msgid "Enable Taskbar notification" +msgstr "Aktivera fönsternotifikation" + +#: setupdialog.cpp:415 +msgid "" +"Window icon in KoolDock's taskbar will blink when something happens on the " +"given application" +msgstr "Fönsterikoner i KoolDocks aktivitetsfält kommer att blinka när något händer i det givna programmet" + +#: setupdialog.cpp:416 +msgid "Small icon size:" +msgstr "Liten ikon storlek:" + +#: setupdialog.cpp:417 +msgid "Shadow offset:" +msgstr "Skuggoffset:" + +#: setupdialog.cpp:418 +msgid "Only Manage Current Desktop" +msgstr "Sköt endast om fönster på nuvarande skrivbord" + +#: setupdialog.cpp:419 +msgid "Only show in KoolDock's taskbar windows in the current desktop" +msgstr "Visa endast i KoolDock's aktivitetsfält fönster inom det nuvarande skrivbordet" + +#: setupdialog.cpp:420 +msgid "Enable Taskbar" +msgstr "Aktivera aktivitetsfält" + +#: setupdialog.cpp:421 +msgid "Enables KoolDock taskbar; it can be used instead of Kicker's taskbar" +msgstr "Aktiverar KoolDocks aktivitetsfält; Det kan användas istället för Kickern's aktivitetsfält" + +#: setupdialog.cpp:422 +msgid "Screenshot of minimized windows" +msgstr "Skärmdump över minimerade fönster" + +#: setupdialog.cpp:423 +msgid "" +"When a window is minimized a screenshot of the application will be use as an " +"icon in KoolDock's Taskbar." +msgstr "När ett fönster är minimerat visas en skärmdump över programmet som ikon i KoolDock's aktivitetsfält." + +#: setupdialog.cpp:425 +msgid "Shadow color:" +msgstr "Skuggfärg:" + +#: setupdialog.cpp:426 +msgid "Text font:" +msgstr "Typsnitt:" + +#: setupdialog.cpp:427 +msgid "Text color:" +msgstr "Text färg:" + +#: setupdialog.cpp:428 +msgid "Font size:" +msgstr "Typsnittsstorlek:" + +#: setupdialog.cpp:429 +msgid "Show K Menu" +msgstr "Visa K meny" + +#: setupdialog.cpp:430 +msgid "Shows the KDE Menu in KoolDock's launcher." +msgstr "Visar KDE menyn i KoolDock's startarmeny" + +#: setupdialog.cpp:431 +msgid "Navigation Menu" +msgstr "Navigeringsmeny" + +#: setupdialog.cpp:432 +msgid "Adds a clock into the Main Menu and a virtual desktop navigator." +msgstr "Lägger till en klocka i Huvudmenyn och en virtuell skrivbordnavigerare" + +#: setupdialog.cpp:433 +msgid "Enable System Tray (Experimental!)" +msgstr "Aktivera Systemfält (Ostabil!)" + +#: setupdialog.cpp:434 +msgid "" +"Enables KoolDock System Tray Support; it can be used instead of kicker's " +"systray applet (its VERY experimental; do not use it unless you intend to " +"help me get this working :P )" +msgstr "Aktiverar KoolDock Systemfält support; Det kan användas istället för kicker's systemfält's program. Använd det inte om du inte tänker hjälpa mig få det att fungera :P" + +#: setupdialog.cpp:435 +msgid "Xinerama Support" +msgstr "Xinerama stöd" + +#: setupdialog.cpp:436 +msgid "If you are using xinerama you should enable this option for proper behaviour." +msgstr "Om du använder xinerama så bör du aktivera detta för att det ska fungera bra" + +#: setupdialog.cpp:437 +msgid "Left Monitor Res" +msgstr "Vänstra monitor res" + +#: setupdialog.cpp:438 +msgid "Visual" +msgstr "Synlig" + +#: setupdialog.cpp:439 +msgid "Drag an application to add it or" +msgstr "Dra ett program för att lägga till det eller" + +#: setupdialog.cpp:440 +msgid "Right click opens the icon menu." +msgstr "Högerklicka öppnar ikonmenyn." + +#: setupdialog.cpp:441 +msgid "Manually &add Application" +msgstr "Lägg till program manuellt" + +#: setupdialog.cpp:443 +msgid "Click here to manually add an application to the Launcher" +msgstr "Klicka här för att manuellt lägga till ett program till startfältet" + +#: setupdialog.cpp:444 +msgid "" +"Drag and Drop here any executable or desktop file for which you want an " +"entry in KoolDock's Launcher" +msgstr "Dra och släpp här körbara eller skrivbordsfiler som du vill ska finnas i KoolDock's startfält" + +#: setupdialog.cpp:445 +msgid "Application List" +msgstr "Programlista" + +#: setupdialog.cpp:447 +msgid "" +"Click here to start grabbing windows names; click Add for each window you " +"click on" +msgstr "Klicka här för att börja fånga fönsternamn. Tryck på lägg till för varje fönster du klickar på" + +#: setupdialog.cpp:448 +msgid "" +"Click \"Grab Window\" and click over a Window, then click \"Add\" to append " +"it to\n" +"the ignore list; you may also manually type or edit the window's name in " +"the\n" +"box below. To stop grabbing just click \"Grabbing...\", \"Ok\" or \"Cancel\"." +msgstr "" +"Tryck på \"Fånga fönster\" och klicka på ett fönster, Sedan klickar du på \"Lägg till\" för att lägga till det till ignorera listan.\n " +"Du kan också själv skriva in eller editera fönsternamn i fältet nedan. För att sluta fånga fönster, klicka på \"Fångar...\", \"Ok\" eller \"Avbryt\"." + +#: setupdialog.cpp:453 +msgid "Ignore list" +msgstr "Ignoreralistan" + +#: setupdialog.cpp:454 setupdialog.cpp:455 +msgid "Background Theme:" +msgstr "Bakgrundstema:" + +#: setupdialog.cpp:456 setupdialog.cpp:465 +msgid "Enabled" +msgstr "Aktiverad" + +#: setupdialog.cpp:457 +msgid "Use set of images instead of a Solid Background" +msgstr "Använd ett paket med bilder istället för en solid bakgrund" + +#: setupdialog.cpp:458 +msgid "TaskBar Separator" +msgstr "Aktivitetsfält separerare" + +#: setupdialog.cpp:459 +msgid "Separator color:" +msgstr "Separerarfärg:" + +#: setupdialog.cpp:460 +msgid "The separator is a line drawed between KoolDock's Launcher and Taskbar" +msgstr "Separeraren är en linje dragen mellan KoolDock's startfält och aktivitetsfält" + +#: setupdialog.cpp:461 +msgid "Solid Background:" +msgstr "Solid Bakgrund:" + +#: setupdialog.cpp:462 +msgid "Border color:" +msgstr "Ram färg:" + +#: setupdialog.cpp:463 +msgid "Dock opacity:" +msgstr "Genomskinlighet:" + +#: setupdialog.cpp:464 +msgid "Background color:" +msgstr "Bakgrundsfärg:" + +#: setupdialog.cpp:466 +msgid "" +"Enable a solid background for KoolDock, it may be transparent (dock opacity) " +"and of any color you choose" +msgstr "Aktivera en solid bakgrund för KoolDock, Den kan vara transparent (genomskinlighet) eller vilken färg som helst som du väljer" + +#: setupdialog.cpp:467 +msgid "Show borders" +msgstr "Visa ram" + +#: setupdialog.cpp:468 +msgid "" +"When using a Solid Background you may tell KoolDock to draw its borders " +"(rectangle)" +msgstr "Om du använder Solid Bakgrund kan du säga till KoolDock att rita en ram runt." + +#: setupdialog.cpp:469 +msgid "Solid background level of transparency (0 means fully transparent)" +msgstr "Solid Bakgrunds genomskinlighetnivå (0 betyder full genomskinlighet)" + +#: setupdialog.cpp:470 +msgid "Background" +msgstr "Bakgrund" + diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..703b7bf --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,64 @@ +####### kdevelop will overwrite this part!!! (begin)########## +bin_PROGRAMS = kooldock + +## INCLUDES were found outside kdevelop specific part + +kooldock_SOURCES = appProp.ui apppropprg.cpp clip.cpp dinfo.cpp item.cpp \ + kooldock.cpp main.cpp setupdialog.ui setupdialogprg.cpp xosd.cpp +kooldock_LDADD = $(LIB_KIO) $(LIB_KDEUI) $(LIB_KDECORE) $(LIB_QT) $(LIBSOCKET) + + +EXTRA_DIST = main.cpp kooldock.cpp kooldock.h item.cpp item.h + +####### kdevelop will overwrite this part!!! (end)############ +# These paths are KDE specific. Use them: +# kde_appsdir Where your application's menu entry (.desktop) should go to. +# kde_icondir Where your icon should go to - better use KDE_ICON. +# kde_sounddir Where your sounds should go to. +# kde_htmldir Where your docs should go to. (contains lang subdirs) +# kde_datadir Where you install application data. (Use a subdir) +# kde_locale Where translation files should go to. (contains lang subdirs) +# kde_cgidir Where cgi-bin executables should go to. +# kde_confdir Where config files should go to (system-wide ones with default values). +# kde_mimedir Where mimetypes .desktop files should go to. +# kde_servicesdir Where services .desktop files should go to. +# kde_servicetypesdir Where servicetypes .desktop files should go to. +# kde_toolbardir Where general toolbar icons should go to (deprecated, use KDE_ICON). +# kde_wallpaperdir Where general wallpapers should go to. +# kde_templatesdir Where templates for the "New" menu (Konqueror/KDesktop) should go to. +# kde_bindir Where executables should go to. Use bin_PROGRAMS or bin_SCRIPTS. +# kde_libdir Where shared libraries should go to. Use lib_LTLIBRARIES. +# kde_moduledir Where modules (e.g. parts) should go to. Use kde_module_LTLIBRARIES. +# kde_styledir Where Qt/KDE widget styles should go to (new in KDE 3). +# kde_designerdir Where Qt Designer plugins should go to (new in KDE 3). + +# set the include path for X, qt and KDE +INCLUDES= $(all_includes) + +METASOURCES = AUTO + +# the library search path. +kooldock_LDFLAGS = $(all_libraries) $(KDE_RPATH) + +# Uncomment the following two lines if you add a ui.rc file for your application to make use of +# KDE?s XML GUI builing +#rcdir = $(kde_datadir)/kooldock +#rc_DATA = kooldockui.rc + +#WARNING: if you use a ui.rc file above, use: + +# messages: rc.cpp + +# instead of + +# messages: + +messages: + LIST=`find . -name \*.h -o -name \*.hh -o -name \*.H -o -name \*.hxx -o -name \*.hpp -o -name \*.cpp -o -name \*.cc -o -name \*.cxx -o -name \*.ecpp -o -name \*.C`; \ + if test -n "$$LIST"; then \ + $(XGETTEXT) $$LIST -o $(podir)/kooldock.pot; \ + fi + + +noinst_HEADERS = apppropprg.h clip.h dinfo.h setupdialogprg.h xosd.h + diff --git a/src/appProp.ui b/src/appProp.ui new file mode 100644 index 0000000..38e732f --- /dev/null +++ b/src/appProp.ui @@ -0,0 +1,264 @@ + +appProp + + + appProp + + + + 0 + 0 + 421 + 259 + + + + + 1 + 1 + 0 + 0 + + + + + 0 + 0 + + + + + 32767 + 32767 + + + + Launcher Properties + + + true + + + true + + + + unnamed + + + + buttonCancel + + + &Cancel + + + + + + true + + + + + buttonOk + + + &Add + + + Alt+A + + + true + + + true + + + + + Horizontal Spacing2 + + + Horizontal + + + Expanding + + + + 250 + 20 + + + + + + groupBox1 + + + + 3 + 3 + 0 + 0 + + + + Advanced Options + + + + unnamed + + + + terminal + + + Run From Terminal + + + + + cuser + + + Run as different User + + + + + tclose + + + Keep terminal open after exit + + + + + user + + + + + + + groupBox2 + + + + 3 + 3 + 0 + 0 + + + + Minimal Options + + + + unnamed + + + + textLabel3 + + + Don't forget to chose an icon. + + + + + textLabel1 + + + <b>Command</b> + + + + + textLabel2 + + + <b>Name</b> + + + + + cmdfile + + + &Browse + + + Alt+B + + + + + iconbutton + + + Icon + + + + + cmdname + + + + + cmdpath + + + + + + + + + buttonOk + clicked() + appProp + accept() + + + buttonCancel + clicked() + appProp + reject() + + + cuser + toggled(bool) + appProp + cuserchk() + + + terminal + toggled(bool) + appProp + terminalchk() + + + cmdfile + clicked() + appProp + cmdfile_clicked() + + + + cuserchk(bool) + cuserchk() + terminalchk() + cmdfile_clicked() + + + + kicondialog.h + + diff --git a/src/apppropprg.cpp b/src/apppropprg.cpp new file mode 100644 index 0000000..b806b67 --- /dev/null +++ b/src/apppropprg.cpp @@ -0,0 +1,159 @@ +// +// C++ Implementation: apppropprg +// +// Description: +// +// +// Author: KoolDock team , (C) 2004 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include +#include +#include +#include +#include + +#include "apppropprg.h" +#include "appProp.h" +#include "kooldock.h" + +appPropPrg::appPropPrg(QWidget *parent, const char *name) +: appProp(parent, name) +{ + +} + + +appPropPrg::~appPropPrg() +{ +} + +void appPropPrg::accept() +{ + QString icon; + QString desktop; + QString path; + QString puser; + + icon=iconbutton->icon(); + desktop=cmdname->text(); + path=cmdpath->text(); + puser=user->text(); + + if(icon.length() == 0) + { + KMessageBox::sorry(0, i18n("You must select an icon!"), i18n("Error"), 1); + return; + } + if(desktop.length() == 0) + { + KMessageBox::sorry(0, i18n("You must enter a name!"), i18n("Error"), 1); + return; + } + if(path.length() == 0) + { + KMessageBox::sorry(0, i18n("You must enter a command or path!"), i18n("Error"), 1); + return; + } + if((cuser->isChecked()==true) && (puser.length()==0)) + { + KMessageBox::sorry(0, i18n("You must provide a username!"), i18n("Error"), 1); + return; + } + + + // Now we modify desktop (lowercase, no spaces) + desktop.remove(" ", TRUE); + desktop=desktop.lower(); + desktop.append(".desktop"); + + //To handle position + QString progPath = locateLocal("data", "kooldock"); + QDir dir(progPath + QString("/menu/")); + QString preffix; + QStringList fileList = dir.entryList("*.desktop"); + + int pos=fileList.count(); + if(pos<10) preffix=QString("0%1_").arg(pos); + if(pos>=10) preffix=QString("%1_").arg(pos); + + desktop.prepend(preffix); + //End handling position + + /* Here we add the .desktop file to the menuPath */ + KoolDock::addFile(desktop, icon, cmdpath->text(), cmdname->text(), true, terminal->isChecked(), tclose->isChecked(), cuser->isChecked(), user->text()); + user->setEnabled(false); + cuser->setChecked(false); + terminal->setChecked(false); + tclose->setChecked(false); + tclose->setEnabled(false); + this->hide(); + emit apply(); +} + +void appPropPrg::reject() +{ + user->setEnabled(false); + cuser->setChecked(false); + terminal->setChecked(false); + tclose->setChecked(false); + tclose->setEnabled(false); + this->hide(); +} + +void appPropPrg::closeEvent( QCloseEvent *e ) +{ + e->ignore(); + reject(); +} + +void appPropPrg::cmdfile_clicked() +{ + QString tmp; + + QString fileToOpen=KFileDialog::getOpenFileName(QDir::currentDirPath(), "*.*", this, i18n("Open File")); + if (!fileToOpen.isEmpty()) + { + cmdpath->setText(fileToOpen); + + //Lets set a default icon based on the program name + tmp=fileToOpen; + int pos=tmp.findRev("/", -1); + if(pos!=-1) + { + tmp.remove(1, pos); + tmp.remove("/", TRUE); + } + iconbutton->setIcon(tmp); + cmdname->setText(tmp); + } +} + +void appPropPrg::cuserchk() +{ + if(cuser->isChecked()==true) + { + user->setEnabled(true); + } + else + { + user->setEnabled(false); + } +} + +void appPropPrg::terminalchk() +{ + if(terminal->isChecked()==true) + { + tclose->setEnabled(true); + } + else + { + tclose->setChecked(false); + tclose->setEnabled(false); + } +} + +#include "apppropprg.moc" diff --git a/src/apppropprg.h b/src/apppropprg.h new file mode 100644 index 0000000..cc8124f --- /dev/null +++ b/src/apppropprg.h @@ -0,0 +1,45 @@ +// +// C++ Interface: apppropprg +// +// Description: +// +// +// Author: KoolDock team , (C) 2004 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef APPPROPPRG_H +#define APPPROPPRG_H + +#include +#include "appProp.h" + +/** +@author KoolDock team +*/ + +class appPropPrg : public appProp +{ +Q_OBJECT + + public: + appPropPrg(QWidget *parent = 0, const char *name = 0); + ~appPropPrg(); + + void addFile(QString filename, QString iconname, QString execname, QString name, bool notify); + + public slots: + void accept(); + void reject(); + void cmdfile_clicked(); + void cuserchk(); + void terminalchk(); + signals: + void apply(); + + protected: + void closeEvent( QCloseEvent* ); +}; + +#endif diff --git a/src/clip.cpp b/src/clip.cpp new file mode 100644 index 0000000..de71d2b --- /dev/null +++ b/src/clip.cpp @@ -0,0 +1,47 @@ +#include "clip.h" + +#include +#include +#include +#include +#include +#include + +#include + +clip::clip(QWidget *parent, const char *name) : QWidget(parent, name, WStyle_Customize | WStyle_NoBorder | WNoAutoErase | WDestructiveClose | WMouseNoMask | WStyle_StaysOnTop) +{ + info = new NETWinInfo( qt_xdisplay(), winId(), qt_xrootwin(), NET::WMState); + info->setDesktop( NETWinInfo::OnAllDesktops ); + + info->setState(NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager, NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager); + hide(); + setBackgroundMode(NoBackground); + + KWin::setOnAllDesktops(winId(), true); + KWin::setState(winId(), NET::SkipTaskbar | NET::SkipPager); + KWin::setType(winId(), NET::Dock); + + setCaption("kooldock clipping window"); +} + +clip::~clip() +{ +} + +void clip::clipDesktop(int p1,int p2,int p3,int p4,int p5,int p6,int p7,int p8,int p9,int p10,int p11,int p12) +{ +KWin::setExtendedStrut(winId(), p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); +} + +void clip::paintEvent(QPaintEvent *) +{ + QBitmap bm(size()); + QPainter mp; + + mp.begin(&bm, this); + mp.fillRect(rect(), Qt::black); + mp.end(); + + setMask(bm); +} diff --git a/src/clip.h b/src/clip.h new file mode 100644 index 0000000..c14af10 --- /dev/null +++ b/src/clip.h @@ -0,0 +1,29 @@ +#ifndef clip_H_ +#define clip_H_ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include + +#include +#include + +class clip : public QWidget +{ +Q_OBJECT + public: + clip(QWidget* parent=0, const char *name=0); + + virtual ~clip(); + void clipDesktop(int,int,int,int,int,int,int,int,int,int,int,int); + + private: + NETWinInfo *info; + + protected: + void paintEvent(QPaintEvent *); + +}; +#endif // CLIP_H_ diff --git a/src/dinfo.cpp b/src/dinfo.cpp new file mode 100644 index 0000000..f6cf476 --- /dev/null +++ b/src/dinfo.cpp @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (C) 2007 by bisiek * + * bisiek9@gmail.com * + * * + * 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. * + ***************************************************************************/ +#include "dinfo.h" + +dInfo::dInfo() +{ + mBool=false; + mInt=0; +} + + +dInfo::~dInfo() +{ +} + +bool dInfo::gBool() +{ + return mBool; +} + +void dInfo::sBool(bool nVal) +{ + mBool=nVal; +} + +int dInfo::gInt() +{ + return mInt; +} + +void dInfo::sInt(int nVal) +{ + mInt=nVal; +} + +void dInfo::inc(int val) +{ + mInt+=val; +} diff --git a/src/dinfo.h b/src/dinfo.h new file mode 100644 index 0000000..681f04d --- /dev/null +++ b/src/dinfo.h @@ -0,0 +1,42 @@ +/*************************************************************************** + * Copyright (C) 2007 by bisiek * + * bisiek9@gmail.com * + * * + * 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. * + ***************************************************************************/ +#ifndef DINFO_H +#define DINFO_H + +#include +/** + @author bisiek +*/ +class dInfo{ +public: + dInfo(); + ~dInfo(); + bool gBool(); + void sBool(bool nVal); + int gInt(); + void sInt(int nVal); + void inc(int val); +private: + bool mBool; + int mInt; + +}; + +#endif diff --git a/src/item.cpp b/src/item.cpp new file mode 100644 index 0000000..1de9cf7 --- /dev/null +++ b/src/item.cpp @@ -0,0 +1,274 @@ +/*************************************************************************** + item.cpp - description + ------------------- + begin : Fri May 23 2003 + copyright : (C) 2003 by KoolDock team + email : + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#include +#include + +#include +#include +#include + +#include "item.h" + +Item::Item(QString iconName, QString cmd, QString name, int minSize, int maxSize) { + iLoader = KGlobal::iconLoader(); + command = cmd; + this->name = name; + mCount=0; + mIndex=0; + mMIndex=0; + mClass=""; + this->minSize = minSize; + this->maxSize = maxSize; + this->iconName = iconName; + + QImage icon(iLoader->loadIcon(iconName, KIcon::NoGroup, 64).convertToImage()); + if (minSize <= maxSize) + { + int count = maxSize - minSize + 1; + + icons.setAutoDelete(TRUE); + + for(int i=0; i 0) + { + while (in.readLine(line, MAX_LEN) != -1) + { + if(line.startsWith("Exec=")) + { + command = line.mid(5).stripWhiteSpace(); + } + else if(line.startsWith("Icon=")) + { + iconName = line.mid(5).stripWhiteSpace(); + } + else if(line.startsWith("Name=")) + { + name = line.mid(5).stripWhiteSpace(); + } + } + } + } + + in.close(); + + iLoader = KGlobal::iconLoader(); + this->minSize = minSize; + this->maxSize = maxSize; + this->filename = fileName; + mCount=0; + mIndex=0; + mMIndex=0; + mClass=""; + QImage icon(iLoader->loadIcon(iconName, KIcon::NoGroup, 64).convertToImage()); + if (minSize <= maxSize) + { + int count = maxSize - minSize + 1; + + icons.setAutoDelete(TRUE); + + for(int i=0; iname = name; + mCount=0; + mIndex=0; + mMIndex=0; + mClass=""; + this->minSize = minSize; + this->maxSize = maxSize; + command = ""; + wIcon=wi; + QImage icon(iconBig.convertToImage()); + if(minSize <= maxSize) + { + int count = maxSize - minSize + 1; + + icons.setAutoDelete(TRUE); + + for(int i=0; i= minSize) && (size <= maxSize)) + { + int d = size - minSize; + return(icons.at(d / SIZE_INC)); + + //return(new QPixmap (icons.at(maxSize-minSize)->convertToImage().scale(size,size))); + } + else + { + return(0); + } +} + +QString Item::getCommand() +{ + return(command); +} + +QString Item::getName() +{ + return(name); +} + +QCString Item::getClass() +{ + return(mClass); +} + +int Item::getCount() +{ + return(mCount); +} + +int Item::getIndex() +{ + return(mIndex); +} + +int Item::getMIndex() +{ + return(mMIndex); +} + +QString Item::getFilename() +{ + return(filename); +} + +WId Item::getId() +{ + return(id); +} + +void Item::setId(WId newId) +{ + + info = KWin::windowInfo(newId, 0, NET::WM2AllowedActions); + id=newId; +} + +void Item::setIcon(QPixmap iconBig) +{ + icons.clear(); + QImage icon(iconBig.convertToImage()); + + int count = maxSize - minSize + 1; + + icons.setAutoDelete(TRUE); + + for (int i = 0; i < count; i++) + { + if (i % SIZE_INC == 0) + { + icons.append(new QPixmap(icon.smoothScale(minSize + i, minSize + i))); + } + } +} + +void Item::setName(QString newName) +{ + name = newName; +} + +void Item::setClass(QCString newClass) +{ + mClass = newClass; +} + +void Item::setCount(int newCount) +{ + mCount = newCount; +} + +void Item::setIndex(int newIndex) +{ + mIndex = newIndex; +} + +void Item::setMIndex(int newIndex) +{ + mMIndex = newIndex; +} + +bool Item::isAnimed() +{ + return(this->animed); +} + +void Item::anim(bool param) +{ + this->animed=param; +} diff --git a/src/item.h b/src/item.h new file mode 100644 index 0000000..27b22b9 --- /dev/null +++ b/src/item.h @@ -0,0 +1,84 @@ +/*************************************************************************** + item.h - description + ------------------- + begin : Fri May 23 2003 + copyright : (C) 2003 by KoolDock team + email : + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef ITEM_H +#define ITEM_H + +#include +#include + +#include +#include +#include + +#include +#include +#include + +const int MAX_LEN = 256; +const int SIZE_INC = 1; + +class Item +{ + public: + Item(QString iconName, QString cmd, QString name, int minSize, int maxSize); + Item(QString fileName, int minSize, int maxSize); + Item(QPixmap iconBig, WId id, QString name, int minSize, int maxSize, bool wi =FALSE); + ~Item(); + + void setIcon(QPixmap iconBig); + + QPixmap* getIcon(int size); + QString getCommand(); + QString getName(); + QCString getClass(); + int getCount(); + int getIndex(); + int getMIndex(); + WId getId(); + KWin::WindowInfo info; + void setId(WId newId); + QString getFilename(); + + void setName(QString newName); + void setClass(QCString newClass); + void setCount(int newCount); + void setIndex(int newIndex); + void setMIndex(int newIndex); + bool animed; + bool isAnimed(); + void anim(bool param); + QPtrList icons; + bool wIcon; + + private: + KIconLoader *iLoader; + + int minSize; + int maxSize; + QString command; + QString name; + QCString mClass; + int mCount; + int mIndex; + int mMIndex; + QString iconName; + QString filename; + WId id; +}; + +#endif diff --git a/src/kooldock.cpp b/src/kooldock.cpp new file mode 100644 index 0000000..58a0831 --- /dev/null +++ b/src/kooldock.cpp @@ -0,0 +1,3848 @@ +/************************************************************************** + kooldock.cpp - description + ------------------- + begin : Tue Jun 10 22:18:34 BST 2003 + copyright : (C) 2003 by KoolDock team + email : +***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * +***************************************************************************/ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// for "renicing" the bar +#include +#include + + +#include "kooldock.h" + +#include +#include +#include "setupdialogprg.h" + +// macros + +#define min(a, b) (a < b) ? (a) : (b) +#define max(a, b) (a > b) ? (a) : (b) + +// compiler issues +#if __GNUC__ == 2 && __GNUC_MINOR__ <= 95 +# define _GCC295 +#endif +#include +#include +#include + +KoolDock::KoolDock(QWidget *parent, const char *name) : QWidget(parent, name, WStyle_Customize | WStyle_NoBorder | WNoAutoErase | WDestructiveClose | WStyle_StaysOnTop )//| WX11BypassWM) +{ + // Default configuration paths + progPath = locateLocal("data", "kooldock"); + menuPath = progPath + QString("/menu/"); + confFile = locateLocal("config", "kooldockrc"); + + noSet=false; + firstInit=true; + setupdlg = new SetupDialogPrg(); // create the setup dialog object. + + connect (setupdlg, SIGNAL(apply()), SLOT(chkRestart())); + perf = new QTime(); + + reloadIcons=TRUE; + + //Menu definitions + deskpopup=new KPopupMenu(); + appMenu=new KPopupMenu(); + godesk=new KPopupMenu; + tasklist=new KPopupMenu; + popup=new KPopupMenu; + advMenu=new KPopupMenu; + + connect(popup, SIGNAL(aboutToShow()), SLOT(aboutToShow())); + connect(popup, SIGNAL(aboutToHide()), SLOT(aboutToHide())); + connect(appMenu, SIGNAL(aboutToShow()), SLOT(aboutToShow())); + connect(appMenu, SIGNAL(aboutToHide()), SLOT(aboutToHide())); + connect(deskpopup, SIGNAL(aboutToShow()), SLOT(menuShow())); + connect(appMenu, SIGNAL(highlighted(int)), this, SLOT(menuX(int))); + connect(godesk, SIGNAL(activated(int)), this, SLOT(goToDesktop(int))); + connect(tasklist, SIGNAL(activated(int)), this, SLOT(goToWindow(int))); + connect(deskpopup, SIGNAL(activated(int)), this, SLOT(sendToDesktop(int))); + menuCount=0; + + init1(); + + QString welcomeMsg; + if (fFirstRun) + { + // Show welcome dialog. + welcomeMsg = QString("
Welcome
It appears to be the first time you run KoolDock.
" + "By default the dock is hidden at the botton of the screen, move your mouse" + " to the bottom edge of the screen and the dock will appear.
" + "Right click on the dock for a menu that allows you to configure it
" + "or run with -o parameter to have preferences window at start.
" + "We hope this software is usefull for you
-- The KoolDock Team"); + KMessageBox::information(0L, i18n(welcomeMsg)); + saveConf(); // create initial configuration. + } + + init2(); + firstInit=false; +} +KoolDock::~KoolDock() +{ + if (xosdw) delete(xosdw); + if (clipw) delete(clipw); + if (info) delete(info); + if (wm) delete(wm); + if (setupdlg) delete(setupdlg); + if (rootpix) delete(rootpix); + if (trackTimer) delete(trackTimer); + if (mTimer) delete(mTimer); + if (mkbigTimer) delete(mkbigTimer); + if (mksmallTimer) delete(mksmallTimer); + if (onChangeTimer) delete(onChangeTimer); + if (_filterData) delete(_filterData); +} + +void KoolDock::mTimerEnd() +{ + if (menuCount>0) return; + QPoint pointer; + pointer = QCursor::pos(); + lastXPos=pointer.x()-rx; + lastYPos=pointer.y()-ry; + int px,py,pw,ph,pt; + int mpx, mpy; + mpx=pointer.x(); + mpy=pointer.y(); + + if (fExpanded && !mksmallTimer->isActive()) {px=x1;} else {px=x0;} + if ((fOrientation & 2)==2) py=0; else py=dh-h; + pw=w; + ph=h; + if ((fOrientation & 1)==1) + { + pt=px;px=py;py=pt; + pt=pw;pw=ph;ph=pt; + pt=mpx;mpx=mpy;mpy=pt; + } + if (xinerama==1) px+=XinPreviousWidth; + + if (fHidden==1) + { + if (pointer.y() >= py && pointer.y() <= (py + ph) && pointer.x() >= px && pointer.x() <= (px + pw)) + { + mMoveEvent(pointer.x()-rx,pointer.y()-ry); + } + else + { + debug(QString("mTimer1Leave: %1 %2 %3 %4 %5 %6").arg(pointer.x()).arg(pointer.y()).arg(dh-h).arg(ry).arg(rx).arg(x+w)); + onleaveEvent(NULL); + } + } + else + { + if (pointer.y() >= py && pointer.y() <= (py + ph) && pointer.x() >= px && pointer.x() <= (px + pw)) + { + if (fExpanded && !mksmallTimer->isActive()) + { + mMoveEvent(pointer.x()-rx,pointer.y()-ry); + } + else + { + debug(QString("mTimer2EnterEv: %1 %2").arg(pointer.x()-rx).arg(pointer.y()-ry)); + if (mpx>=firstX && mpx<=firstX+tmpw) + { + enterEvent(NULL); + } + } + } + else + { + if (fExpanded) + { + debug(QString("mTimer2Leave")); + onleaveEvent(NULL); + } + } + } + if (fSteppy==1) if (!mkbigTimer->isActive() || !mksmallTimer->isActive()) mMoveEvent(pointer.x()-rx, pointer.y()-ry); +} + + +void KoolDock::trackTimerEnd() +{ + + QPoint pointer; + pointer = QCursor::pos(); + int px, py; + if ((fOrientation & 1) == 1) + { + px = pointer.y(); + py = pointer.x(); + } + else + { + py = pointer.y(); + px = pointer.x(); + } + if ((fOrientation & 2) == 2) py = dh-py; + if (py+2 >= dh && px > x0 && px < x0+w0) + { + if(track2active==FALSE) QTimer::singleShot( hideTimer, this, SLOT(trackTimer2End()) ); + track2active=true; + } +} + +void KoolDock::trackTimer2End() +{ + QPoint pointer; + pointer = QCursor::pos(); + int px, py; + if ((fOrientation & 1) == 1) + { + px = pointer.y(); + py = pointer.x(); + } + else + { + py = pointer.y(); + px = pointer.x(); + } + if ((fOrientation & 2) == 2) py = dh-py; + if (py+2 >= dh && px > x0 && px < x0+w0) + { + if(mksmallTimer->isActive()==TRUE) mksmallTimerstop(); + move( 0, rdh); + raise(); + trackTimer->stop(); + getBottomBG(); + if(h1 > h0) getTopBG(); + debug(QString("tracktimer: grabWindow(%1, %2, %3, %4)").arg(x1).arg(dh - h1).arg(w1).arg(h1)); + move2( x, dh - h); + resize2(w, h); + Ybase = iwBig2; + enterEvent(NULL); + } + track2active=FALSE; +} + +void KoolDock::paintEvent(QPaintEvent *) +{ + // Draw backgound, icons, and all that stuff over the widget. + QPainter p; + if (initialization && ptPart==5) return; + p.begin (&offscr,this); + + int i; + int ii; + + debug(QString("painting")); + + // draw background (new engine) + int bgY; + QImage TempBG; + QPixmap TempScaledLeft; + //QPixmap TempScaledCenter; + QPixmap TempScaledRight; + int p1,p2,p3,p4=0,p5=0,p6,p7,p8,p9,p10,pt; + if (w0) tmpw-=adjust; + + p1=0; + p2=0; + KPixmapIO pixio; + if (!fLeftImg.isEmpty()) + { + TempBG = pixio.convertToImage(LeftImg); + if ((fOrientation & 1)==1) {p1=LeftImg.height();} else {p1=LeftImg.width();} + p2=h0; + if ((fOrientation & 1)==1) {pt=p1; p1=p2; p2=pt;} + if (scaleMax) + {TempScaledLeft = QPixmap(TempBG.scale(p1, p2, QImage::ScaleMin));} + else + {TempScaledLeft = QPixmap(TempBG.scale(p1, p2));} + p2=0; + if ((fOrientation & 1)==1) {p1=TempScaledLeft.height();} else {p1=TempScaledLeft.width();} + } + if (!fRightImg.isEmpty()) + { + TempBG = pixio.convertToImage(RightImg); + if ((fOrientation & 1)==1) {p2=RightImg.height();} else {p2=RightImg.width();} + p3=h0; + if ((fOrientation & 1)==1) {pt=p2; p2=p3; p3=pt;} + if (scaleMax) + {TempScaledRight = QPixmap(TempBG.scale(p2, p3, QImage::ScaleMin));} + else + {TempScaledRight = QPixmap(TempBG.scale(p2, p3));} + if ((fOrientation & 1)==1) {p2=TempScaledRight.height();} else {p2=TempScaledRight.width();} + } + if (oldtmpwdw) p8=dw-p10; + + p1=p10; + p2=0; + p3=p8; + p4=h1 - h0; + p5=p10; + p6=h1 - h0; + p7=p8; + p8=h0; + p9=p10; + p10=0; + if ((fOrientation & 2)==2) + { + p6=0; + p2=h0; + } + if ((fOrientation & 1)==1) + { + pt=p1; p1=p2; p2=pt; + pt=p3; p3=p4; p4=pt; + pt=p5; p5=p6; p6=pt; + pt=p7; p7=p8; p8=pt; + pt=p9; p9=p10; p10=pt; + } + if((h1 - h0)>0) bitBlt(&offscr, p1, p2, &topBg, p9, p10, p3, p4); // put the top background + bitBlt(&offscr, p5, p6, &bottomBg, p5, p6, p7, p8); //put the rest of the background + if (dockOpacity>0) + { + p1=firstX-Offset; + if ((fOrientation & 2)==2) {p2=0;} else {p2=h1 - h0+Ybase;} + p3=tmpw; + p4=h0-Ybase; + if (p4>0) + { + if ((fOrientation & 1)==1) + { + pt=p1; p1=p2; p2=pt; + pt=p3; p3=p4; p4=pt; + } + bitBlt(&offscr, p1, p2, &bottomBgf, p1, p2, p3, p4); + } + } + // end drawing background + +// Left side image + p1=0; + p5=0; + p6=0; + if (!fLeftImg.isEmpty()) + { + if ((fOrientation & 1)==1) {p1=TempScaledLeft.height();} else {p1=TempScaledLeft.width();} + + p4=firstX-Offset-p1; + if (fNWideBg) if (p4<0) p4=0; + p5=p4+p1; + if ((fOrientation & 2)==2) + {if (fExpanded==1) { + p2=-Ybase; + } else {p2=0;}} + else + if (fExpanded==1) {p2=bgY;} else {p2=h1-h0;} + if ((fOrientation & 1)==1) {pt=p4; p4=p2; p2=pt;} + bitBlt(&offscr, p4, p2, &TempScaledLeft); + } +// Right side image + if (!fRightImg.isEmpty()) + { + if ((fOrientation & 1)==1) {p1=TempScaledRight.height();} else {p1=TempScaledRight.width();} + + p2=firstX - Offset+tmpw; + if (fNWideBg) if (p2>dw-p1) p2=dw-p1; + p6=p2; + if ((fOrientation & 2)==2) + { + if (fExpanded==1) {p3=-Ybase;} else {p3=0;} + } + else + if (fExpanded==1) {p3=bgY;} else {p3=h1-h0;} + if ((fOrientation & 1)==1) {pt=p2; p2=p3; p3=pt;} + bitBlt(&offscr, p2, p3, &TempScaledRight); + } + + //Center image + if (!fCenterImg.isEmpty()) + { + TempBG = pixio.convertToImage(CenterImg); + // hack!! to optimize drawing speed, now it scales the background image only when it's + // necessary, I'd prefeer to use a bit more of memory instead of loosing speed. + // -- Matias + if ((fOrientation & 1)==1) {p1=TempScaledCenter.height();} else {p1=TempScaledCenter.width();} + if (p1 != (p6-p5)) + { + p2=p6-p5; + p3=h0; + if ((fOrientation & 1)==1) {pt=p2; p2=p3; p3=pt;} + TempScaledCenter = QPixmap(TempBG.scale( p2, p3)); + } + p1=p5; + if ((fOrientation & 2)==2) + {if (fExpanded) {p2=-Ybase;} else {p2=0;}} + else + {if (fExpanded==1) {p2=bgY;} else {p2=h1-h0;}} + if ((fOrientation & 1)==1) {pt=p1; p1=p2; p2=pt;} + bitBlt(&offscr, p1, p2, &TempScaledCenter); + } + +// End drawing the backgound + + + // draw borders + if (fShowBorders) + { + p1=firstX-Offset; + p3=SPACE_W; + p4=h0; + p5=tmpw; + p6=SPACE_W; + p7=tmpw - SPACE_W+firstX-Offset; + p2=h1 - h0+Ybase; + p8=p2; + p9=p1; + p10=p2; + if ((fOrientation & 2)==2) + { + p2=-Ybase; + p8=-Ybase; + p10=p4-Ybase-1; + } + if ((fOrientation & 1)==1) + { + pt=p1; p1=p2; p2=pt; + pt=p3; p3=p4; p4=pt; + pt=p5; p5=p6; p6=pt; + pt=p7; p7=p8; p8=pt; + pt=p9; p9=p10; p10=pt; + } + p.fillRect (QRect(p1, p2, p3, p4), QBrush(borderColor)); + p.fillRect (QRect(p9, p10, p5, p6), QBrush(borderColor)); + p.fillRect (QRect(p7, p8, p3, p4), QBrush(borderColor)); + } + // end drawing borders + + Item *item; + // new icon drawing engine + int Ypos; // Y position + int Xpos; // X position + KPixmap *currentIcon; // current icon pixmap + i=0; + for (i = 0; i < (int)items.count(); i++) + { + item = items.at(i); + // start setting the icon position + if(i < ii_first) + { + // left side icons + Xpos = cur_cx[i] - iwSmall/2 + SPACE_W-Offset; + } + else if(i >= ii_first && i <= ii_last) + { + // zoomed icons (center) + Xpos = cur_cx[i] - iSize[i]/2 + adjust - Offset+soffset-eoffset; + if (i==ii_first && i==(int)items.count()-1 && i>0) Xpos=cur_cx[i-1] + iwSmall/2 + SPACE_W-Offset + iSpace; + } + else if(i > ii_last) + { + // right side icons + Xpos = cur_cx[i] - iwSmall/2 + adjust + SPACE_W - 2 - Offset; + } // end getting icon positions + if ((fOrientation & 2)==2) + {Ypos = iy-Ybase;} + else + {Ypos = h1 - iy - iSize[i]+Ybase;} + + // now, get the icon image + if (Xpos0) + { + currentIcon = new KPixmap(*item->getIcon(iSize[i])); + if (items.at(i)->wIcon==TRUE) + { + for (ii=0;ii<(int)witems.count();ii++) + { + if (items.at(i)->getId()==witems.at(ii)->getId()) + { + currentIcon = new KPixmap(*witems.at(ii)->getIcon(iSize[i])); + } + } + } + + // misc icon effects and animations + if (iOnClick == i) + { + // highlight the clicked icon + KPixmapEffect::fade(*currentIcon, ((float)50)*0.01, QColor("#FFFFFF")); + QTimer::singleShot( 10*60, this, SLOT( unhighlight() ) ); // unhighlight the icon in 1 second + } + + // notify animation + if (fShowNotification && item->isAnimed()) + { + KPixmapEffect::fade(*currentIcon, ((float) animValue )*0.01, QColor("#FFFFFF")); + } + + //Lets apply an effect to the active window in TaskBar + if(item->getId()==wm->activeWindow() && item->getId()!=0) + { + KPixmapEffect::fade(*currentIcon, ((float)60)*0.01, QColor("#FFFFFF")); + } + + // End drawing icon effects + Xpos+=x; + if ((fOrientation & 1)==1) {ii=Xpos;Xpos=Ypos;Ypos=ii;} + // Draw the icon on the widget in its respective position + bitBlt(&offscr, Xpos, Ypos, currentIcon); + // Destroy the unused currentIcon pixmap. + delete currentIcon; + } + } // End drawing icons + + // Draw the seperator between launcher and taskbar + if(fShowTaskbar && ((numLaunchers>0 && (int)items.count()>numLaunchers) || (fShowKMenu==1 && items.count()>1))) + { + i=numLaunchers-1; + if (i>=0 && i<(int)items.count()-1) + { + Xpos=xFromIndex(i)+xFromIndex(i+1)+iSize[i]; + p1=Xpos/2 - Offset+x; + p3=SPACE_W; + p4=h0; + if (fExpanded==0) + { + p2=h1-h0; + if ((fOrientation & 2)==2) p2=0; + } + else if ( (signed)items.count() > numLaunchers) + { + p2=h1 - h0 + Ybase; + if ((fOrientation & 2)==2) p2=-Ybase; + } + if ((fOrientation & 1)==1) + {p.fillRect (QRect(p2, p1, p4, p3), QBrush(sepColor));} + else + {p.fillRect (QRect(p1, p2, p3, p4), QBrush(sepColor));} + } + } + if((fSystray==1) && (numSystray>0)) + { + i=items.count()-numSystray-1; + if (i>=0 && i<(int)items.count()-1) + { + Xpos=xFromIndex(i)+xFromIndex(i+1)+iSize[i]; + p1=Xpos/2 - Offset+x; + p3=SPACE_W; + p4=h0; + if(h == h0) + { + p2=h; + if ((fOrientation & 2)==2) p2=0; + } + else + { + p2=h1 - h0 + Ybase; + if ((fOrientation & 2)==2) p2=-Ybase; + } + if ((fOrientation &1)==1) + {p.fillRect (QRect(p2, p1, p4, p3), QBrush(sepColor));} + else + {p.fillRect (QRect(p1, p2, p3, p4), QBrush(sepColor));} + } + } + p.end(); + + // Finally update the widget + if ((fOrientation & 1)==1) + {bitBlt(this, 0, 0, &offscr, 0, 0, h1, dh, Qt::CopyROP);} + else + {bitBlt(this, 0, 0, &offscr, 0, 0, dw, h1, Qt::CopyROP);} + + //return; + //Preparing mask + QBitmap bm(size(),true); + QPainter mp; + + mp.begin(&bm, this); + mp.setPen( Qt::black ); + mp.fillRect(rect(), Qt::black); + mp.fillRect(QRect(0, 0, 1, 1), Qt::white); + p1=0; + p2=0; + if (!fLeftImg.isEmpty()) + if ((fOrientation & 1)==1) {p1=TempScaledLeft.height();} else {p1=TempScaledLeft.width();} + if (!fRightImg.isEmpty()) + if ((fOrientation & 1)==1) {p2=TempScaledRight.height();} else {p2=TempScaledRight.width();} + p3=firstX-Offset-p1; + if ((fOrientation & 2)==2) {p4=0;} else {if (fExpanded) p4=0; else p4 = h1-h0;} + p5=tmpw+p1+p2; + if (fExpanded) p6=h1; else p6=h0; + if (p3<0) p3=0; + if (p5+p3>dw) p5=dw-p3; + if ((fOrientation & 1)==1) + {p6++;mp.fillRect(QRect(p4, p3, p6, p5), Qt::white);} + else + {mp.fillRect(QRect(p3, p4, p5, p6), Qt::white);} + if ((fOrientation & 2)==2) + {mp.fillRect(QRect(rw-1, rh-1, 1, 1), Qt::black);} + else + { + if ((fOrientation & 1)==1) + {mp.fillRect(QRect(0, rh-1, 1, 1), Qt::black);} + else + {mp.fillRect(QRect(rw-1, 0, 1, 1), Qt::black);} + } + if (initialization) + { + mp.fillRect(rect(), Qt::black); + mp.fillRect(QRect(0, 0, 1, 1), Qt::white); + } + mp.end(); + setMask(bm); + +} + + +void KoolDock::unhighlight() +{ + iOnClick = -1; + paintEvent(NULL);; +} + +void KoolDock::mousePressEvent( QMouseEvent *e) +{ + mPress (e->x(), e->y(), e->button()); +} + +void KoolDock::mPress(int mx, int my, ButtonState srcButton) +{ + int i, j; + int iClicked; + Item *item; + + if ((fOrientation & 1)==1) + { + i=mx; + mx=my; + my=i; + } + if ((fOrientation & 2)==2) + {my=h1-my;} + mx=mx-x1; + + mx = mx+Offset; + iClicked=itemFromPoint(mx); + + if (srcButton == Qt::LeftButton) + { + i=iClicked; + + if ((my >= h1 - iy - iSize[i]) && (my <= h1 - iy)) + { + if ((i >= 0) && (i < (int)items.count())) + { + items.at(i)->anim(FALSE); + WId id = items.at(i)->getId(); + if (id == 0) + { + // if user clicked on a quick launcher, launch the app + // acknowledge on click + iOnClick = i; + paintEvent(NULL); + + // run the app + debug(QString("clicked: %1").arg(items.at(i)->getName())); + if (items.at(i)->getName() == "KMenu") + { + // show K Menu + run(items.at(i)->getCommand()); + } + else + { + // run the application with KDE feedback (loading icon) + // we need to run the .desktop file, since the command + // may be a url or another KIO stuff like 'system:/' + if (items.at(i)->getFilename()!="") + { + run(items.at(i)->getFilename()); + } + else + { + run(items.at(i)->getCommand()); + } + } + } + else + { + KWin::WindowInfo info; + KWin::WindowInfo winfo; + info = KWin::windowInfo(id,0,NET::WM2WindowClass); + QString name = info.visibleName(); + QCString cls = info.windowClassClass(); + + if(i>=((int)items.count()-numSystray)) + { + //KWin::forceActiveWindow(id); + + KWin::deIconifyWindow(id); + kdDebug(0) << "Systray: " << id << " Name: " << name << " Estado: " << info.state() << endl; + //QMouseEvent me(e->type(), mapTo( topLevelWidget(), e->pos() ), e->globalPos(), e->button(), e->state() ); + + //QApplication::sendEvent(, &me); + } + else + { + // if user clicked on a running task's icon, activate it + cId = id; + + if (fGrouping) //switches between windows when clicking on window group icon + { + //find currently focused window in witems list + int jl=-1,il; + bool getNext=false; + for (j=0, item = witems.at(0); item; j++, item = witems.next()) + if (item->getId()==CurrentFocus) {jl=j;break;} + + if (jl>=0) + {if(witems.at(jl)->getClass()==cls) getNext=true;} + else + {getNext=true;} + + jl=-1; + if (getNext) + { + il=witems.count(); + for (j=0, item = witems.at(0); item; j++, item = witems.next()) + { + if (item->getIndex()getClass()==cls) + { + winfo = item->info; + if ((fMinimizedOnly==0 || winfo.isMinimized()) && (fCurrent==0 || winfo.isOnDesktop(KWin::currentDesktop()))) + {jl=j;il=item->getIndex();} + } + } + } + } + else + { + il=-1; + for (j=0, item = witems.at(0); item; j++, item = witems.next()) + { + if (item->getIndex()>il) + { + if (item->getClass()==cls) + { + winfo = item->info; + if ((fMinimizedOnly==0 || winfo.isMinimized()) && (fCurrent==0 || winfo.isOnDesktop(KWin::currentDesktop()))) + {jl=j;il=item->getIndex();} + } + } + } + } + if (jl>=0) cId=witems.at(jl)->getId(); + } + + if (cId!=CurrentFocus) + { + //KWin::activateWindow(id); + activateApp(); + } + else + { + minApp(); + //KWin::iconifyWindow(id, true); + CurrentFocus = winId(); + } + } + } + } + if(fHidden == 1 && fHideOnClick == 1) onleaveEvent(NULL); // it's configurable + } + } + else if(srcButton == Qt::RightButton) + { + // Right button. + i = iClicked; + advMenu->clear(); + advMenu->insertItem(SmallIconSet("up"), i18n("Keep &Above Others"), this, SLOT(toggleAlwaysOnTop()),0,1); + advMenu->insertItem(SmallIconSet("down"), i18n("Keep &Below Others"), this, SLOT(toggleKeptBelowOthers()),0,2); + advMenu->insertItem(SmallIconSet("window_fullscreen"), i18n("&Fullscreen"), this, SLOT(toggleFullScreen()),0,3); + + // Main KoolDock popup menu + popup->clear(); + popup->insertTitle(i18n("Main Menu")); + popup->insertItem(SmallIcon("configure"), i18n("Edit Quick Launch &Menu"), this, SLOT(edit())); + popup->insertItem(SmallIcon("pencil"), i18n("Edit &Preferences"), this, SLOT(editPref())); + popup->insertItem(SmallIcon("redo"), i18n("&Reload configuration"), this, SLOT(restart())); + popup->insertSeparator(); + popup->insertItem(SmallIcon("about_kde"), i18n("&About"), this, SLOT(about())); + popup->insertSeparator(); + popup->insertItem(SmallIcon("exit"), i18n("E&xit"), this, SLOT(endProg())); + // End Main KoolDock Menu + + if(fShowNav==1) + { + //Menu to be appended to MainMenu + godesk->clear(); + for(int index=0; indexinsertItem(SmallIcon("forward"), tmp, index+1); + if(KWin::currentDesktop()==(index+1)) godesk->setItemEnabled(menustate, false); + } + //End godesk Menu + + //Append Navigation Menu (godesk+Time) + QDateTime timeEntry=QDateTime::currentDateTime(); + QString tmp=i18n("Navigation: Desktop %1").arg(KWin::currentDesktop()); + popup->insertTitle(tmp); + popup->insertItem(SmallIcon("forward"), i18n("&Go to Desktop"), godesk); + popup->insertItem(SmallIcon("forward"), i18n("&Task List"), tasklist); + popup->insertSeparator(); + popup->insertItem(SmallIcon("clock"), timeEntry.toString()); + //End append Navigation Menu + } + + if ((my >= h1 - iy - iSize[i]) && (my <= h1 - iy)) + { + if ((i >= 0) && (i < (int)items.count())) + { + WId id = items.at(i)->getId(); + if (id == 0) + { + // if user right clicked on a quick launch icon. + if (items.at(i)->getCommand() != "") + { + // Edit the .desktop file + if (i==0 && fShowKMenu) + { + // if user right clicked on the K menu, show the configuration menu. + popup->exec(QCursor::pos()); + } + else + { + iGroup=false; + appMenu->clear(); + appMenu->insertTitle(i18n("Item menu")); + iFilename = items.at(i)->getFilename(); + appMenu->insertItem(SmallIcon("configure"), i18n("&Edit item"), this, SLOT(editItem())); + appMenu->insertItem(SmallIcon("fileclose"), i18n("&Delete item"), this, SLOT(removeItem())); + appMenu->insertSeparator(); + appMenu->insertItem(SmallIcon("forward"), "&KoolDock", popup); + appMenu->exec(QCursor::pos()); + } + } + } + else + { + // If user clicked on a running task icon, show the app menu. + // Pop-up menu for right-clicking on a taskbar icon. + cId = id; + KWin::WindowInfo winfo; + winfo = KWin::windowInfo(cId,0, NET::WM2WindowClass | NET::WM2AllowedActions); + int menustate; + //winfo.desktop() = -1 1 2 3 ... + + //Begin Move to Desktop Menu + deskpopup->clear(); + QString tmp=i18n("All desktops"); + menustate=deskpopup->insertItem(SmallIcon("forward"), tmp, 0); + tmp=i18n("Current Desktop &%1").arg(KWin::currentDesktop()); + menustate=deskpopup->insertItem(SmallIcon("forward"), tmp, KWin::currentDesktop()); + + deskpopup->insertSeparator(); + for(int i=0; iinsertItem(SmallIcon("forward"), tmpd, i+1); + } + } + } + dIndex=winfo.desktop(); + if(dIndex==-1) dIndex=0; + deskpopup->setItemChecked(dIndex, true); + + //End Move to Desktop Menu + + advMenu->setItemChecked(1,winfo.state() & NET::KeepAbove); + advMenu->setItemChecked(2,winfo.state() & NET::KeepBelow); + advMenu->setItemChecked(3,winfo.state() & NET::FullScreen); + advMenu->setItemEnabled(3,winfo.actionSupported(NET::ActionFullScreen)); + + appMenu->clear(); + if (fGrouping && items.at(iClicked)->getCount()>0) + { + iGroup=true; + QCString cls = winfo.windowClassClass(); + popups.clear(); + for (j=0, item = witems.at(0); item; j++, item = witems.next()) + { + if (item->getClass()==cls) + { + winfo = item->info; + if ((fMinimizedOnly==0 || winfo.isMinimized()) && (fCurrent==0 || winfo.isOnDesktop(KWin::currentDesktop()))) + { + KPopupMenu *tmpMenu = new KPopupMenu; + createMenu(item->getId(), tmpMenu, &winfo); + connect(tmpMenu, SIGNAL(aboutToShow()), SLOT(menuShow())); + popups.append (tmpMenu); + appMenu->setItemParameter(appMenu->insertItem(*item->getIcon(iwBig2), item->getName(), tmpMenu), item->getId()); + } + } + } + appMenu->insertSeparator(); + appMenu->insertItem(SmallIcon("forward"), "&Move to Desktop", deskpopup); + appMenu->insertItem(i18n("Mi&nimize all"), this, SLOT(minAllApps())); + appMenu->insertItem(i18n("Ma&ximize all"), this, SLOT(maxAllApps())); + appMenu->insertItem(i18n("&Restore all"), this, SLOT(restAllApps())); + appMenu->insertItem(SmallIcon("fileclose"), i18n("&Close all"), this, SLOT(closeAllApps())); + } + else + { + iGroup=false; + createMenu(cId, appMenu, &winfo); + } + appMenu->insertSeparator(); + appMenu->insertItem(SmallIcon("forward"), "KoolDock", popup); + appMenu->exec(QCursor::pos()); + iGroup=false; + } + } + } + else + { + // Show the configuration popup menu if the user clicked on another place. + popup->exec(QCursor::pos()); + } + deskpopup->clear(); + godesk->clear(); + //tasklist->clear(); + popup->clear(); + popups.clear(); + appMenu->clear(); + } + +} + +void KoolDock::mMoveEvent( int ex, int ey) +{ + if (!fExpanded) return; + unsigned int i; + int mx, my, dmx; + int dx; + unsigned int k; + int cur_cx_desk; + int p1=0,p2=0; + + if ((fOrientation & 1)==1) + { + mx=ex; + ex=ey; + ey=mx; + } + if ((fOrientation & 2)==2) + {ey=h1-ey;} + + if (w0>dw) + { + mx=w0*ex/dw; + } + else + { + mx = ex-x0; + } + dmx=abs(mx - last_mx); + last_mx = mx; + if (w1>dw) + { + Offset=(w1-dw)*mx/w0; + ex=ex+Offset; + } + else + { + Offset=0; + } + + if (fSteppy==1) last_ncx=mx=(int)(last_ncx*0.7+cx[(ex - x0 - iSpace)/iDist]*0.3); + + if (!mkbigTimer->isActive() && !mksmallTimer->isActive()) + { + Ybase=0; + } + if (dmx >= UPDATE_DIST && fExpanded || mkbigTimer->isActive() || mksmallTimer->isActive()) + { + ii_first = 0; + ii_last = items.count() - 1; + for (i = 0; i < items.count(); i++) + { + dx = abs(cx[i] - mx); + if (dx < funcW) + { + iSize[i] = func(dx); + } + else + { + iSize[i] = iwSmall; + if (cx[i] < mx) + { + ii_first = min(i + 1, items.count() - 1); + } + else if (ii_last == (int)items.count() - 1) + { + ii_last = max(i - 1, 0); + } + } + } + + cur_cx[0] = iSpace + iSize[0]/2; + + for(i=1; i < items.count() + 1; i++) + { + cur_cx[i] = cur_cx[i-1] + (iSize[i] + iSize[i-1])/2 + iSpace; + } + for(k=0; (k < items.count()-1) && (mx > cx[k]); k++); + + cur_cx_desk = ((int)((iwBig2 - iwSmall)*0.6*fAmount) + iSpace*2)/2 + cx[k] + (int)((cx[k] - mx)*(func(0) + func(iDist) - 2*iwSmall)/(2*iDist)); + adjust = cur_cx_desk - cur_cx[k]; + + if (w1isActive() || (zoomTicksB>1 && mkbigTimer->isActive()))) + { + if (!initialization && menuCount==0) + { + if (mx < 0) onleaveEvent(NULL); + if (lastX>0) if (mx > tmpw+firstX-x1-(w1-w0)/2) onleaveEvent(NULL); + } + } + if (ii_last < (int)items.count() - 1) + { + cur_cx[items.count() - 1] = w1*zoomVal/fzoomSpeed + (eoffset-soffset+(w1+w0)/2)*(fzoomSpeed-zoomVal)/(fzoomSpeed) - iwSmall/2 - iSpace - adjust; + for (i = items.count() - 2; (int)i >= ii_last + 1; i--) + { + cur_cx[i] = cur_cx[i+1] - iDist; + } + if (ii_last == 0) cur_cx[0] = cur_cx[1] - iDist - (iSize[0] - iSize[1])/2; + } + + for (i = 0; (int)i < ii_first; i++) + { + cur_cx[i]+=(int)((soffset-eoffset+(w1-w0)/2)*(fzoomSpeed-zoomVal)/fzoomSpeed); + } + paintEvent(NULL); + } + + /*if (mx<0) + { + ii_first = 0; + ii_last = items.count() - 1; +}*/ + my = ey; + mx = ex-x1; + + i=itemFromPoint(mx); + if ((int)i < numLaunchers) + { + mouseOnLauncher=true; + } + else + { + mouseOnLauncher=false; + } + + if(showNames == 1 && iwBig == iwBig2 && dmx<10 ) + { + // get the name of the item at the mouse position + if (!mksmallTimer->isActive() && !mkbigTimer->isActive()) + { + QPoint pointer; + pointer = QCursor::pos(); + if (i < MAX_ICONS+1) + { + if (((int)i >= 0) && (i < items.count())) + { + nom = items.at(i)->getName(); + } + else + {nom = "";} + } + + if(nom!=aux) + { + xosd_st=0; + } + if(xosd_st==0) + { + xosdw->setText(nom); + xosd_st=1; + } + aux = nom; + mx=mx-Offset; + if (fOrientation==0) + { + p1=mx+x1 - (xosdw->w/2); + p2=dh - h - xosdw->h; + } + if (fOrientation==1) + { + p1=dh-h1-xosdw->w; + p2=mx- xosdw->h/2+x1; + } + if (fOrientation==2) + { + p1=mx+x1 - (xosdw->w/2); + p2=h1; + } + if (fOrientation==3) + { + p1=h1; + p2=mx- xosdw->h/2+x1; + } + if ((fOrientation & 1)==0) + { + if (p1<0) p1=0; + if (p1+xosdw->w>dw) p1=dw-xosdw->w; + } + if (xinerama==1) p1+=XinPreviousWidth; + if (!initialization && (xosdw->pos().x()!=p1 || xosdw->pos().y()!=p2)) xosdw->move2(p1, p2); + } + } + if (dmx>=10) + { + xosdw->move2(0,rdh); + } + +} + +//Mouse Wheel now switches desktops (away from user desktop+1, towards user desktop-1) +//-Francisco +void KoolDock::wheelEvent(QWheelEvent *e) +{ + if(e->delta()==120 && (KWin::currentDesktop()delta()==-120) && (KWin::currentDesktop()>0)) + { + KWin::setCurrentDesktop(KWin::currentDesktop()-1); + } +} + + +void KoolDock::mkbigTimerDo() +{ + int timing; + + zoomTicksB++; + iwBig = iwBig2*zoomVal/fzoomSpeed+iwSmall*(fzoomSpeed-zoomVal)/fzoomSpeed; // frames to grow up the dockbar + if (iwBigstop(); + last_mx=-1; + debug(QString("Stopped mkbigTimer")); + if (zoomTicksB>=neededTicksB && fSpeed) + { + //performace check + timing =perf->elapsed(); + zoomStepB=zoomStepB*timing/fzoomSpeed; + if (zoomStepB<=0) zoomStepB=1; + if (zoomStepB>200) zoomStepB=200; + neededTicksB=(int)((fzoomSpeed/zoomStep)-1)*zoomStep/zoomStepB; + } + zoomTicksB=0; + zoomTicksS=0; + if (initialization) + { + pTest(); + } + else + { + if (fHidden==1) + {mTimer->start(fMouseTimer, FALSE);} + else + {mTimer->changeInterval(fMouseTimer);} + } + } + iy = (iDist - iwSmall) / 2; + funcH = iwBig - iwSmall; + if (fHidden == 1) Ybase = iwBig2*(fzoomSpeed-zoomVal)/fzoomSpeed; + mMoveEvent(QWidget::mapFromGlobal ( QCursor::pos() ).x(), QWidget::mapFromGlobal ( QCursor::pos() ).y()); + paintEvent(NULL); +} + +void KoolDock::mksmallTimerDo() +{ + zoomTicksS++; + iwBig = iwBig2*zoomVal/fzoomSpeed+iwSmall*(fzoomSpeed-zoomVal)/fzoomSpeed; + if (iwBigzoomVal) + { + zoomVal=0; + mksmallTimerstop(); + } + else + { + if (fHidden == 1) Ybase = iwBig2*(fzoomSpeed-zoomVal)/fzoomSpeed; + funcH = iwBig - iwSmall; + iy = (iDist - iwSmall) / 2; + mMoveEvent(lastXPos,lastYPos); + paintEvent(NULL); + } + zoomVal=zoomVal-zoomStepS; +} + +void KoolDock::mksmallTimerstop() +{ + zoomVal=0; + if (fStayBelow==1 && fHidden==0) setDockBelow(); + int i; + mksmallTimer->stop(); + xosdw->move2(0,rdh); + fExpanded=FALSE; + debug(QString("Stopped mksmallTimer")); + if (!initialization) + {if (fHidden==0) {mTimer->changeInterval(250);} else {mTimer->stop();}} + + w = w0; + x = x0; + h = h0; + + // normalize the dock + for (i = 0; i < (int)items.count() + 1; i++) + { + iSize[i] = iwSmall; + cur_cx[i] = cx[i]; + } + + ii_first = 0; + ii_last = items.count() - 1; + ii_first = 0; + ii_last = items.count() - 1; + adjust = 0; + iwBig = iwBig2; + if (fHidden == 0) + { + move2( x, dh - h ); + resize2(w, h); + } + else + { + move( 0, rdh); + resize2(w, h); + } + oldfirstX=x; + oldtmpw=w; + paintEvent(NULL); + if (zoomTicksS>=neededTicksS && fSpeed) + { + //performace check + int timing =perf->elapsed(); + zoomStepS=zoomStepS*timing/fzoomSpeed; + if (zoomStepS<=0) zoomStepS=1; + if (zoomStepS>200) zoomStepS=200; + neededTicksS=(int)((fzoomSpeed/zoomStep)-1)*zoomStep/zoomStepS; + } + zoomTicksB=0; + zoomTicksS=0; + if (initialization) pTest(); +} + +void KoolDock::enterEvent(QEvent *) +{ + if (fExpanded==TRUE && !mksmallTimer->isActive() || mkbigTimer->isActive()) return; + if (fStayBelow==1 && fHidden==0) setDockAbove(); + if (mksmallTimer->isActive()==TRUE) mksmallTimer->stop(); + + w=w1; + x=x1; + h=h1; + + if (!fExpanded) + { + getTopBG(); + if (dockOpacity > 0) {bitBlt(&bottomBgf,0,0,&bottomBg);KPixmapEffect::fade(bottomBgf, ((float)dockOpacity)*0.01, bgColor);} + + adjust=x0-x1; + iwBig = iwSmall; + } + + resize2(w,h); + move2(x,dh-h); + + funcH = iwBig - iwSmall; + iy = (iDist - iwSmall) / 2; + + fExpanded=TRUE; + oldfirstX=x; + oldtmpw=w; + paintEvent(NULL); + debug("enterEvent"); + zoomTicksB=0; + zoomTicksS=0; + + perf->start(); + mkbigTimer->start(zoomStep, FALSE); +} + +void KoolDock::onleaveEvent(QEvent *) +{ + if (menuCount>0) return; + if (mksmallTimer->isActive()==TRUE) return; + zoomTicksB=0; + zoomTicksS=0; + perf->start(); + debug("onleaveEvent"); + lastXPos = QWidget::mapFromGlobal ( QCursor::pos() ).x(); + lastYPos = QWidget::mapFromGlobal ( QCursor::pos() ).y(); + if (mkbigTimer->isActive()) + { + mkbigTimer->stop(); + } + mksmallTimer->start(zoomStep, FALSE); + + if(showNames==1) + { + xosdw->move2(0,rdh); + xosd_st=0; + } + if(fHidden==1) + { + trackTimer->start(250, FALSE); + } +} + + +void KoolDock::edit() +{ + editPref(); + setupdlg->tabWidget->setCurrentPage(3); +} + + +void KoolDock::run(QString command) +{ + + QString exec; + + kapp->propagateSessionManager(); + + _filterData->setData( command.stripWhiteSpace() ); + QStringList filters; + filters << "kurisearchfilter" << "kshorturifilter"; + KURIFilter::self()->filterURI( *(_filterData), filters ); + + QString cmd = (_filterData->uri().isLocalFile() ? _filterData->uri().path():_filterData->uri().url()); + // Nothing interesting. Quit! + if(cmd.isEmpty()) + { + KMessageBox::sorry(0L, i18n("You have to enter a command to execute or a URL to be opened first.")); + return; + } + else + { + switch( _filterData->uriType() ) + { + case KURIFilterData::LOCAL_FILE: + case KURIFilterData::LOCAL_DIR: + case KURIFilterData::NET_PROTOCOL: + case KURIFilterData::HELP: + { + if (useList) + { + KApplication::startServiceByDesktopPath (command, lstDrop, &QString(0) ,&QCString(0) ,0 , "" ,true); + } + else + { + (void) new KRun( _filterData->uri() ); + } + return; + } + case KURIFilterData::EXECUTABLE: + case KURIFilterData::SHELL: + { + exec = cmd; + if( _filterData->hasArgsAndOptions() ) cmd += _filterData->argsAndOptions(); + break; + } + case KURIFilterData::UNKNOWN: + case KURIFilterData::ERROR: + default: + KMessageBox::sorry( 0, i18n("The program name or command %1\n" + "cannot be found. Please correct the command\n" + "or URL and try again").arg( cmd ) ); + return; + } + } + if(KRun::runCommand( cmd, exec, "" )) + { + return; + } + else + { + KMessageBox::sorry( 0, i18n("Could not run %1.\nPlease correct" + " the command or URL and try again.").arg( cmd ) ); + return; + } +} + + +// Parabolic function +int KoolDock::func(int x) +{ + int res = iwBig - (int)((x*x*funcH)/(funcW*funcW)); + return res; +} +int KoolDock::func2(int x) +{ + int res; + if (x::ConstIterator it; + int i; + Item *item; + + //First we removed every taskbar item + int count=items.count()-numSystray; + + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + item->setCount(0); + } + for(i=count; i>=numLaunchers; i--) + { + items.remove(i); + } + + //Lets go through all the windows + if(firstTime) + { + for (it=wm->windows().begin(); it != wm->windows().end(); ++it) + { + addwTask(*it); + } + firstTime=false; + } + + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + item->setId(item->getId()); + info=item->info; + index=info.desktop(); + //If it belongs to the current desktop, lets add it + if (info.valid()) + { + if(fCurrent==0 || index==KWin::currentDesktop() || index==-1) + { + addTask(item->getId(), i); + } + } + } + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + if (!item->info.valid()) witems.remove(i); + doUpdateGeometry(); + } + CurrentFocus=wm->activeWindow(); + + updTaskList(); +} + +void KoolDock::workAreaChanged() +{ + int mdw,mdh,mdt; + if (xinerama==0) + { + mdw=QApplication::desktop()->width(); + mdh = QApplication::desktop()->height(); + } + else + { + mdw=leftRes; + mdh=XinDesiredHeight; + } + if ((fOrientation & 1)==1) + { + mdt=mdw;mdw=mdh;mdh=mdt; + } + if (dw!=mdw || dh!=mdh) reload(); +} + +//What happens when we change desktops +void KoolDock::currentDesktopChanged(int) +{ + if (initialization) return; + funcH = iwBig2 - iwSmall; + iwBig = iwBig2; + addWindows(); + doUpdateGeometry(); + move(0,rdh); + getTopBG(); + if (fExpanded) move2(x1,dh-h1); + if (fHidden==0 && !fExpanded) move2(x0,dh-h0); + xosdw->move2(0,rdh); + oldDesktop=KWin::currentDesktop(); +} + +void KoolDock::windowAdded(WId id) +{ + if (initialization) return; + if (fShowNav) + { + addToTaskList(id); + } + if (!fShowTaskbar) return; + KWin::WindowInfo info; + info = KWin::windowInfo(id); + QString name = info.name(); + if (name == "kooldock xosd window") + { + debug("Not adding OSD window to taskbar."); + return; + } + if (name == "kooldock") + { + debug("Not adding ourselves."); + return; + } + + debug(QString("windowAdded(%1)").arg(name)); + + if (addwTask(id)) addToTaskList(id); + addTask(id); + doUpdateGeometry(); + +} + +void KoolDock::windowRemoved(WId id) +{ + if (initialization) return; + if (fShowNav) + { + rmFromTaskList(id); + } + if (!fShowTaskbar) return; + unsigned int i; + Item *item; + debug(QString("windowRemoved(%1)").arg(id)); + + KWin::WindowInfo info; + info = KWin::windowInfo(id); + QString name = info.name(); + + if (name == "kooldock xosd window") + { + debug("Not removing OSD window from taskbar."); + return; + } + for (i=0; i < witems.count(); i++ ) + { + item = witems.at(i); + if(item->getId() == id) + { + rmTask(id,i); + rmwTask(i); + rmFromTaskList(id); + break; + } + } + doUpdateGeometry(); +} + +void KoolDock::windowChanged(WId id, unsigned int properties) +{ + if (initialization) return; + if (fShowNav) + { + rmFromTaskList(id); + addToTaskList(id); + } + if (!fShowTaskbar) return; + Item *item; + bool iconChanged, nameChanged; + int i; + bool toRepaint = FALSE; + bool hasfound=FALSE; + int iFound; + + KWin::WindowInfo winfo; + winfo = KWin::windowInfo(id); + + iconChanged = (properties & NET::WMIcon); + nameChanged = ((properties & NET::WMName) | (properties & NET::WMVisibleName)); + + properties = 0; + + if (id != winId() ) //not add kooldock window + { + if (ignored(winfo.name()) == false) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + //find item in witem (window item) list + if (item->getId()==id) + { + hasfound=true; //remember whether item was found, and its index + iFound=i; + + //Handle icon/name changes + if (iconChanged) {item->setIcon(KWin::icon(id, iwBig2, iwBig2, TRUE));toRepaint=true;} + // FIXME: on gcc2.95 item->setName() falls on a loop and gets a segfault. (?) +#ifndef _GCC295 + if (nameChanged) item->setName(winfo.name()); +#endif + if ((fShowNotification) && (id != wm->activeWindow())) + { + debug(QString("windowChanged (inactive window changed)")); + // An inactive window's title changed + // notify user + item->anim(TRUE); + if(onChangeTimer == NULL) + { + onChangeTimer = new QTimer(this); + connect( onChangeTimer, SIGNAL(timeout()), this, SLOT(onChangeTimerTicked())); + onChangeTimer->start( ON_CHANGE_ANIM_INTERVAL, FALSE ); + } + } + item->setId(id); + break; + } + } + //If window is on window list, and user haven't changed desktop recently... + if (hasfound && oldDesktop==KWin::currentDesktop()) + { + if (witems.at(iFound)->getCount()==0) //window icon is not visible on kooldock + { + //... check whether it can be added + if ((fCurrent==0 || winfo.isOnDesktop(KWin::currentDesktop())) && (fMinimizedOnly==0 || winfo.isMinimized())) {toRepaint|=addTask(id);} + } + else + { + //... check whether it can be removed + if ((fCurrent==1 && !winfo.isOnDesktop(KWin::currentDesktop())) || (fMinimizedOnly==1 && !winfo.isMinimized())) {toRepaint|=rmTask(id, iFound);} + } + rmFromTaskList(id); + addToTaskList(id); + } + if(toRepaint) {doUpdateGeometry();paintEvent(NULL);} + } + } +} + +void KoolDock::systemTrayWindowAdded(WId id) +{ + if (initialization) return; + if(fSystray==1) + { + KWin::WindowInfo info; + info = KWin::windowInfo(id); + QString name = info.visibleName(); + + if (ignored(info.name()) == false) + { + QPixmap pix = KWin::icon(id, iwBig2, iwBig2, TRUE); + numSystray++; + items.append(new Item(pix, id, name, iwSmall, iwBig2)); + debug(QString("addSystem Tray(%1)").arg(info.visibleName())); + doUpdateGeometry(); + } + } +} + +void KoolDock::systemTrayWindowRemoved(WId id) +{ + if (initialization) return; + if(fSystray==1) + { + numSystray--; + if(numSystray<0) numSystray=0; + windowRemoved(id); + } +} + +void KoolDock::activeWindowChanged(WId id) +{ + if (initialization) return; + if (id != winId()) CurrentFocus = id; + + // end notify animation + unsigned int i; + for (i=0; i<=items.count()-1; i++) + { + if (items.at(i)->getId() == id) + { + items.at(i)->anim(FALSE); + } + } + + bool toDelete = TRUE; + for (i=0; i<=items.count()-1; i++) + { + if (items.at(i)->isAnimed()) toDelete = FALSE; + } + + if (toDelete && onChangeTimer != NULL) + { + delete(onChangeTimer); + onChangeTimer = NULL; + debug("Deleted onChangeTimer"); + } + if (fGrouping) movetoback(id); + paintEvent(NULL); +} + +void KoolDock::doUpdateGeometry() +{ + int dw1, dw0; + unsigned int i; + iwBig=iwBig2; + for (i=0;idw) {x1=0;} + if (w1>dw) {dw1=dw;} else {dw1=w1;} + if (w0>dw) {dw0=dw;} else {dw0=w0;} + x0 = (dw1 - dw0)/2 + x1; + //x0 = (dw - w0) * fpercentPos / 100; + //if(xinerama==1) {if (fOrientation && 1)==0) {x0=x0+XinPreviousWidth; x1=x1+XinPreviousWidth;}} + x = x0; + h0 = 2*iy + iwSmall; + h = h0; + h1 = 2*iy + iwBig; + + adjust = 0; + + if(fHidden == 0) + { + resize2(w, h); + move2( x, dh - h ); + } + + //if ((fOrientation & 1)==1) {offscr = QPixmap(h1, w1);} else {offscr = QPixmap(w1, h1);} + + ii_first = 0; + ii_last = items.count() - 1; + ii_first = 0; + ii_last = ii_last; + + if (fExpanded==TRUE) + { + w=w1; + h=h1; + x=x1; + funcH = iwBig2 - iwSmall; + iy = (iDist - iwSmall) / 2; + if(fHidden==1) + { + move(0,rdh); + getBottomBG(); + getTopBG(); + //move(rx,ry); + } + resize2(w, h); + move2( x, dh - h ); + } + else if (fHidden==1) + { + move(0,rdh); + } + debug(QString("w1: %1").arg(w1)); + debug(QString("x1: %1").arg(x1)); + if (fExpanded) {last_mx=-10; mMoveEvent(lastXPos,lastYPos);} + oldfirstX=x; + oldtmpw=w; + paintEvent(NULL); + xosdw->move2(0,rdh); + +} + +bool KoolDock::rmTask(WId id, int iFound) +{ + Item *item, *witem, *fitem; + int i, j; + int miFound; + bool hasfound; + hasfound=false; + miFound=iFound; + QCString cls; + + if (miFound==-1) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (item->getId()==id) + {hasfound=true;miFound=i;break;} + } + } + else + { + hasfound=true; + } + if (hasfound) + { + fitem=witems.at(miFound); + if (fitem->getId()==id) + { + if (fitem->getCount()==1) + { + cls=fitem->getClass(); + //Removing item + for (i=numLaunchers, item = items.at(numLaunchers); item; i++, item = items.next()) + { + if (fGrouping) + { + if (cls==item->getClass()) + { + int cnt=item->getCount(); + //KMessageBox::information(0,QString("%1").arg(cnt)); + fitem->setCount(0); + if (cnt==0) + { + items.remove(i); + return true; + } + else + { + int ir, il=-1, im=-1; + int jl=-1,jm=-1; + ir=fitem->getIndex(); + for (j=0, witem = witems.at(0); witem; j++, witem = witems.next()) + { + if (witem->getClass()==cls) + { + if (witem->getIndex()getIndex()>il) + {il=witem->getIndex(); jl=witem->getId();} + if (witem->getIndex()>im) + {im=witem->getIndex(); jm=witem->getId();} + } + } + item->setCount(cnt-1); + if (jl>=0) {item->setId(jl);return true;} + if (jm>=0) {item->setId(jm);} + return true; + } + } + } + else + { + if (item->getId()==id) + { + items.remove(i); + witems.at(miFound)->setCount(0); + return true; + } + } + } + } + } + } + return false; +} + +void KoolDock::rmwTask(int iFound) +{ + int i, ind; + Item *item; + + ind=witems.at(iFound)->getIndex(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (item->getIndex()>ind) item->setIndex(item->getIndex()-1); + } + witems.remove(iFound); +} + +bool KoolDock::addTask(WId id, int iFound) +{ + Item *item; + int i ; + int miFound; + bool hasfound; + hasfound=false; + miFound=iFound; + + KWin::WindowInfo info; + info = KWin::windowInfo(id,0,NET::WM2WindowClass); + const int SUPPORTED_WINDOW_TYPES = NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask; + QString name = info.visibleName(); + QCString cls = info.windowClassClass(); + if (info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Normal || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Override || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Dialog || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Unknown) + { + if (info.isMinimized() || fMinimizedOnly==0) + if (fCurrent==0 || info.isOnDesktop(KWin::currentDesktop())) + if ((info.state() & NET::SkipTaskbar) == 0) + if (ignored(info.name()) == false) + { + if (miFound==-1) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (item->getId()==id) + {hasfound=true;miFound=i;break;} + } + } + else + { + hasfound=true; + } + + if (hasfound) + { + if (witems.at(miFound)->getId()==id) + { + if (witems.at(miFound)->getCount()==0) + { + witems.at(miFound)->setCount(1); + if (fGrouping) + { + hasfound=false; + for (i=numLaunchers, item = items.at(numLaunchers); item; i++, item = items.next()) + { + if (item->getClass()==cls) + { + item->setCount(item->getCount()+1); + return true; + } + } + } + QPixmap pix; + items.insert(items.count()-numSystray, new Item(pix, id, name, iwSmall, iwBig2, TRUE)); + items.at(items.count()-1)->setClass(cls); + debug(QString("addTask(%1)").arg(info.visibleName())); + return true; + } + } + } + } + } + return false; +} + +bool KoolDock::addwTask(WId id) +{ + KWin::WindowInfo info; + info = KWin::windowInfo(id,0,NET::WM2WindowClass); + const int SUPPORTED_WINDOW_TYPES = NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask; + QString name = info.visibleName(); + QCString cls = info.windowClassClass(); + + if (info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Normal || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Override || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Dialog || info.windowType(SUPPORTED_WINDOW_TYPES) == NET::Unknown) + { + if ((info.state() & NET::SkipTaskbar) == 0) + { + if (ignored(info.name()) == false) + { + QPixmap pix = KWin::icon(id, iwBig2, iwBig2, TRUE); + witems.append(new Item(pix, id, name, iwSmall, iwBig2)); + witems.at(witems.count()-1)->setClass(cls); + witems.at(witems.count()-1)->setIndex(witems.count()-1); + return true; + } + } + } + return false; +} + +void KoolDock::loadConf() +{ + KConfig *config = KGlobal::config(); + + config->setGroup("kooldock"); + fShowTaskbar = config->readNumEntry("ShowTaskbar", 0); + fMinimizedOnly = config->readNumEntry("MinimizedOnly", 0); + fShowNotification = config->readNumEntry("ShowNotification", 0); + showNames = config->readNumEntry("showNames", 1); + fCleaner = config->readNumEntry("Cleaner", 0); + xosdFont = config->readEntry("xosdFont", "Tahoma"); + xosdColor = config->readEntry("xosdColor", "#f1f1f1"); + xosdShadowColor = config->readEntry("xosdShadowColor", "#000000"); + xosdSize = config->readNumEntry("xosdSize", 17); + xosdShadowOffset = config->readNumEntry("xosdShadowOffset", 2); + fShowBorders = config->readNumEntry("ShowBorders", 0); + borderColor = QColor(config->readEntry("BorderColor", "#b1c4de")); + iwSmall = config->readNumEntry("SmallIconSize", 32); + iwBig = config->readNumEntry("BigIconSize", 90); + fAmount = config->readNumEntry("BigIconAmount", 5); + if (fAmount>10) fAmount=10; + if (fAmount<4) fAmount=4; + fShowKMenu = config->readNumEntry("ShowKMenu", 0); + fUseKBFX = config->readNumEntry("KBFX", 0); + dockOpacity = config->readNumEntry("DockOpacity", 0); + iSpace = config->readNumEntry("iSpace", 10); + if (dockOpacity < 0) + { + dockOpacity = 0; + } + else if (dockOpacity > 100) + { + dockOpacity = 100; + } + bgColor = QColor(config->readEntry("BackgroundColor", "#ccccff")); + sepColor = QColor(config->readEntry("SeparatorColor", "#000000")); + fPriority = config->readNumEntry("Priority", 3); + fMouseTimer = config->readNumEntry("MouseTimer", 25); + fClipping = config->readNumEntry("Clipping", 0); + fClipIcons = config->readNumEntry("ClipIconArea", 0); + fpercentPos = config->readNumEntry("percentPos", 50); + fOrientation = config->readNumEntry("fOrientation", 0); + if (fOrientation<0 || fOrientation>3) fOrientation=0; + fzoomSpeed = config->readNumEntry("zoomSpeed", 20); + fSpeed = config->readNumEntry("speedControl", 0)==1; + //fSpeed=true; + if (fzoomSpeed>10) + { + if (fzoomSpeed>100) + {zoomStep=10;} + else + {zoomStep=fzoomSpeed/10;} + } + else + {zoomStep=1;} + if (fSpeed) + { + zoomStepB=200; + zoomStepS=200; + neededTicksB=1; + neededTicksS=1; + } + else + { + zoomStepB=zoomStep; + zoomStepS=zoomStep; + neededTicksB=(int)(fzoomSpeed/zoomStep)-1; + neededTicksS=(int)(fzoomSpeed/zoomStep)-1; + } + + if (neededTicksB==0) neededTicksB=1; + if (neededTicksS==0) neededTicksS=1; + + if (fpercentPos<0) fpercentPos=0; + if (fpercentPos>100) fpercentPos=100; + fHidden = config->readNumEntry("Hidden", 1); + fHighLightTime = config->readNumEntry("HighLightTime", 2); + fHideOnClick = config->readNumEntry("HideOnClick", 0); + fStayBelow = config->readNumEntry("StayBelow", 0); + fSteppy = config->readNumEntry("fSteppy", 0); + fLeftImg = config->readEntry("LeftImg"); + fRightImg = config->readEntry("RightImg"); + fCenterImg = config->readEntry("CenterImg"); + fNWideBg = config->readBoolEntry("nWideBg", TRUE); + scaleMax = config->readBoolEntry("scaleMax", FALSE); + fFirstRun = config->readBoolEntry("FirstRun", TRUE); + xinerama = config->readNumEntry("Xinerama", 0); + leftRes=config->readNumEntry("leftRes", QApplication::desktop()->width()); + XinDesiredHeight=config->readNumEntry("XinDesiredHeight", QApplication::desktop()->height()); + XinPreviousWidth=config->readNumEntry("XinPreviousWidth", 0); + hideTimer = config->readNumEntry("hideTimer", 125); + Solid = config->readNumEntry("Solid", 1); + fShowShot = config->readBoolEntry("ShowSShot", false); + fGrouping = config->readBoolEntry("iconGrouping", false); + fShowNav=config->readNumEntry("Navigator", 1); + fSystray=0;//config->readNumEntry("Systray", 0); + fCurrent=config->readNumEntry("currentDesktop", 0); + curTheme=config->readEntry("Theme"); + + if(config->readNumEntry("xosdBold", 1) == 0) + { + xosdBold = false; + } + else + { + xosdBold = true; + } + + if(config->readNumEntry("xosdItalic", 1) == 0) + { + xosdItalic = false; + } + else + { + xosdItalic = true; + } + + if (iwSmall > iwBig) + { + iwSmall = 32; + iwBig = 90; + } + if (!fShowTaskbar) + { + fShowNotification = 0; + } + if (fHidden!=1 && fHidden!=0) fHidden = 1; + if (fStayBelow!=1 && fStayBelow!=0) fStayBelow = 0; +} + + +void KoolDock::loadIgnore() +{ + QString line; + + // read the ignorelist into 'ignoreList' + QFile in(QString(progPath + "/ignorelist.conf")); + + //clear de ignoreList and the KEditListBox (ignoreBox) + ignoreList.clear(); + setupdlg->ignoreBox->clear(); + if (in.open(IO_ReadOnly)) + { + while (in.readLine(line, MAX_LEN) != -1) + { + //append the item and strip the last char (new line) + ignoreList.append(line.mid(0, line.length()-1)); + } + in.close(); + if(!ignoreList.isEmpty()) setupdlg->ignoreBox->insertStringList(ignoreList); + } +} + + +void KoolDock::saveConf() +{ + KConfig *config = KGlobal::config(); + + config->setGroup("kooldock"); + config->writeEntry("ShowTaskbar", fShowTaskbar); + config->writeEntry("MinimizedOnly", fMinimizedOnly); + config->writeEntry("ShowNotification", fShowNotification); + config->writeEntry("ShowBorders", fShowBorders); + config->writeEntry("BorderColor", borderColor.name()); + config->writeEntry("SmallIconSize", iwSmall); + config->writeEntry("BigIconSize", iwBig2); + config->writeEntry("BigIconAmount", fAmount); + config->writeEntry("DockOpacity", dockOpacity); + config->writeEntry("BackgroundColor", bgColor.name()); + config->writeEntry("SeparatorColor", sepColor.name()); + config->writeEntry("ShowKMenu", fShowKMenu); + config->writeEntry("KBFX", fUseKBFX); + config->writeEntry("Priority", fPriority); + config->writeEntry("MouseTimer", fMouseTimer); + config->writeEntry("Clipping", fClipping); + config->writeEntry("ClipIconArea", fClipIcons); + config->writeEntry("percentPos", fpercentPos); + config->writeEntry("zoomSpeed", fzoomSpeed); + config->writeEntry("speedControl", fSpeed); + config->writeEntry("Hidden", fHidden); + config->writeEntry("StayBelow", fStayBelow); + config->writeEntry("fOrientation", fOrientation); + config->writeEntry("showNames", showNames); + config->writeEntry("Cleaner", fCleaner); + config->writeEntry("xosdFont", xosdFont); + config->writeEntry("xosdColor", xosdColor); + config->writeEntry("xosdShadowColor", xosdShadowColor); + config->writeEntry("xosdSize", xosdSize); + config->writeEntry("HideOnClick", fHideOnClick); + config->writeEntry("fSteppy", fSteppy); + config->writeEntry("HighLightTime", fHighLightTime); + config->writeEntry("iSpace", iSpace); + config->writeEntry("FirstRun", FALSE); + config->writeEntry("Xinerama", xinerama); + config->writeEntry("hideTimer", hideTimer); + config->writeEntry("Solid", Solid); + config->writeEntry("ShowSShot", fShowShot); + config->writeEntry("iconGrouping", fGrouping); + config->writeEntry("Navigator", fShowNav); + config->writeEntry("Systray", fSystray); + config->writeEntry("currentDesktop", fCurrent); + + if (xosdBold == true) + { + config->writeEntry("xosdBold", 1); + } + else + { + config->writeEntry("xosdBold", 0); + } + + if (xosdItalic == true) + { + config->writeEntry("xosdItalic", 1); + } + else + { + config->writeEntry("xosdItalic", 0); + } + + config->sync(); +} + + +void KoolDock::editPref() +{ + bool tmp; //to save some code + + // open up the configuration dialog + + // Fill dialog with values from configuration + tmp=fHidden==1; + + setupdlg->chk1->setChecked(tmp); + setupdlg->hideTimer->setEnabled(tmp); + setupdlg->hideOnClick->setEnabled(tmp); + setupdlg->cbStayBelow->setEnabled(!tmp); + setupdlg->cbStayBelow->setChecked(fStayBelow==1); + + tmp=fShowTaskbar==1; + + setupdlg->chk6->setEnabled(tmp); + setupdlg->cbMinimizedOnly->setEnabled(tmp); + setupdlg->chkSshot->setEnabled(tmp); + setupdlg->chkGrouping->setEnabled(tmp); + setupdlg->currentDesk->setEnabled(tmp); + + setupdlg->systray->setChecked(fSystray==1); + + setupdlg->currentDesk->setChecked(fCurrent==1); + + //Even if start Hidden is disabled we load the stored value + setupdlg->hideTimer->setValue(hideTimer); + setupdlg->hideOnClick->setChecked(fHideOnClick == 1); + setupdlg->Steppy->setChecked(fSteppy == 1); + setupdlg->cbCleaner->setChecked(fCleaner == 1); + + tmp=showNames==1; + + setupdlg->chk2->setChecked(tmp); + setupdlg->xosdBold->setEnabled(tmp); + setupdlg->xosdItalic->setEnabled(tmp); + setupdlg->xosdSize->setEnabled(tmp); + setupdlg->spinBox2->setEnabled(tmp); + setupdlg->kColorCombo1->setEnabled(tmp); + setupdlg->kColorCombo_shadow->setEnabled(tmp); + setupdlg->xosdFont->setEnabled(tmp); + setupdlg->cbCleaner->setEnabled(tmp); + + if(Solid==1) + { + setupdlg->chkSolid->setChecked(true); + setupdlg->chkSolidSlot(); + } + else + { + if(!curTheme.isEmpty()) setupdlg->theme->setCurrentText(curTheme); + setupdlg->chkImg->setChecked(true); + setupdlg->chkSolidSlot(); + } + setupdlg->chk4->setChecked(fShowBorders == 1); + setupdlg->kColorCombo1->setColor(xosdColor); + setupdlg->kColorCombo_shadow->setColor(xosdShadowColor); + setupdlg->xosdFont->setCurrentFont(xosdFont); + setupdlg->kColorCombo2->setColor(bgColor.name()); + setupdlg->kColorCombo3->setColor(borderColor.name()); + setupdlg->kColorCombo4->setColor(sepColor.name()); + setupdlg->spinBox1->setValue(dockOpacity); + setupdlg->xosdSize->setValue(xosdSize); + setupdlg->spinBox2->setValue(xosdShadowOffset); + setupdlg->chk5->setChecked(fShowTaskbar == 1); + setupdlg->cbMinimizedOnly->setChecked(fMinimizedOnly == 1); + setupdlg->chk6->setChecked(fShowNotification == 1); + setupdlg->chk7->setChecked(fShowKMenu == 1); + setupdlg->chkUseKBFX->setChecked(fUseKBFX == 1); + setupdlg->iwSmall->setValue(iwSmall); + setupdlg->iwBig->setValue(iwBig2); + setupdlg->fAmount->setValue(fAmount); + setupdlg->sbSpace->setValue(iSpace); + setupdlg->nWideBg->setChecked(fNWideBg); + if (scaleMax) {setupdlg->opScale2->setChecked(true);} else {setupdlg->opScale1->setChecked(true);} + setupdlg->xosdBold->setChecked(xosdBold); + setupdlg->xosdItalic->setChecked(xosdItalic); + if (xinerama==1) + { + setupdlg->xrma->setChecked(true); + setupdlg->SleftRes->setEnabled(true); + setupdlg->SHeight->setEnabled(true); + setupdlg->PWidth->setEnabled(true); + setupdlg->SleftRes->setValue(leftRes); + setupdlg->SHeight->setValue(XinDesiredHeight); + setupdlg->PWidth->setValue(XinPreviousWidth); + } + else + { + setupdlg->SleftRes->setEnabled(false); + setupdlg->SHeight->setEnabled(false); + setupdlg->PWidth->setEnabled(false); + setupdlg->xrma->setChecked(false); + setupdlg->SleftRes->setValue(QApplication::desktop()->width()); + setupdlg->SHeight->setValue(QApplication::desktop()->height()); + } + setupdlg->nav->setChecked(fShowNav==1); + setupdlg->chkSshot->setChecked(fShowShot); + setupdlg->chkGrouping->setChecked(fGrouping); + setupdlg->Priority->setValue(fPriority); + //setupdlg->cbMouseTimer->setValue(fMouseTimer); + setupdlg->chClipping->setChecked(fClipping==1); + setupdlg->chClipIcons->setChecked(fClipIcons==1); + setupdlg->zoomSpeed->setValue(fzoomSpeed); + setupdlg->chkSpeed->setChecked(fSpeed); + setupdlg->percentPos->setValue(fpercentPos); + if (fOrientation==0) setupdlg->op0->setChecked(true); + if (fOrientation==1) setupdlg->op1->setChecked(true); + if (fOrientation==2) setupdlg->op2->setChecked(true); + if (fOrientation==3) setupdlg->op3->setChecked(true); + loadIgnore(); //Load Ignore List + + if (!setupdlg->isVisible()) if (!noSet) setupdlg->tabWidget->setCurrentPage(0); + setupdlg->toReloadIcons->setChecked(FALSE); + + setupdlg->show(); + KWin::WindowInfo winfo; + winfo = KWin::windowInfo(setupdlg->winId()); + + if (winfo.desktop()!=-1) KWin::setOnDesktop(setupdlg->winId(), KWin::currentDesktop()); + KWin::activateWindow(setupdlg->winId()); + +} + +void KoolDock::loadMenu() +{ + QDir homeDir = QDir::home(); + if (homeDir.exists(menuPath)) + { + QDir dir(menuPath); + //First we make sure every index is correct! + //Lets update the launchers index + QString preffix; + QStringList fileListRemove=dir.entryList("*.desktop"); + QStringList fileListRemove2=fileListRemove; + + //Not really sure why I couldn't do this within the other for, something like fileListRemove[i].remove(0,2).prepend(preffix), but hell it works + for(unsigned int i=0; i=10) preffix=QString("%1").arg(i); + + dir.rename(fileListRemove[i], QString("%1%2").arg(preffix).arg(fileListRemove2[i])); + } + //End updating launchers index + + QStringList fileList = dir.entryList( "*.desktop"); + if(!fileList.isEmpty()) + { + for ( QStringList::Iterator it = fileList.begin(); it != fileList.end(); ++it ) + { + if ( ((*it) != ".") && ((*it) != "..") ) + { + items.append(new Item(menuPath + (*it), iwSmall, iwBig2)); + } + } + } + } + else + { + debug("Config directory doesn't exits"); + QDir progPathDir(progPath); + progPathDir.mkdir(progPath); + QDir menuPathDir(menuPath); + menuPathDir.mkdir(menuPath); + debug("Created item directory"); + + // create initial entries. + addFile(QString("00_konqueror.desktop"), QString("konqueror"), QString("kfmclient openProfile webbrowsing"), QString("Konqueror Web Browser"), true, false, false, false, QString("na")); + addFile(QString("01_home.desktop"), QString("kfm_home"), QString("kfmclient openProfile filemanagement"), QString("Home directory"), true, false, false, false, QString("na")); + addFile(QString("02_kmail.desktop"), QString("kmail"), QString("kmail"), QString("KMail"), true, false, false, false, QString("na")); + addFile(QString("03_kate.desktop"), QString("kate"), QString("kate"), QString("Kate"), true, false, false, false, QString("na")); + addFile(QString("04_konsole.desktop"), QString("konsole"), QString("konsole"), QString("Konsole"), true, false, false, false, QString("na")); + addFile(QString("05_kcontrol.desktop"), QString("kcontrol"), QString("kcontrol"), QString("Control Center"), true, false, false, false, QString("na")); + + loadMenu(); + } + numLaunchers = items.count(); +} + + +void KoolDock::about() +{ + KAboutApplication about(this, 0, false); + about.exec(); +} + + +void KoolDock::onChangeTimerTicked() +{ + if (animValue > 70) animState = FALSE; + if (animValue < 5) animState = TRUE; + + if (animState == TRUE) + { + animValue = animValue + 5; + } + else + { + animValue = animValue - 5; + } + paintEvent(NULL); +} + + +void KoolDock::updateBackground(const QPixmap& pix) +{ + if (pix.width()==1 && pix.height()==1) + { + if (fHidden == 0) + { + if ((fOrientation & 1)==1) {bottomBg = QPixmap(h1, dw);} else {bottomBg = QPixmap(dw, h1);} + bottomBg.fill (pix.convertToImage().pixel(0,0)); + } + if (dockOpacity > 0) {bitBlt(&bottomBgf,0,0,&bottomBg);KPixmapEffect::fade(bottomBgf, ((float)dockOpacity)*0.01, bgColor);} + } + else + { + if (fHidden == 0) bottomBg = QPixmap(pix); + if (dockOpacity > 0) {bitBlt(&bottomBgf,0,0,&bottomBg);KPixmapEffect::fade(bottomBgf, ((float)dockOpacity)*0.01, bgColor);} + } + uw=w; + paintEvent(NULL); + +} + +void KoolDock::toggleAlwaysOnTop() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (info.state() & NET::KeepAbove) + { + KWin::clearState(cId,NET::KeepAbove); + } + else + { + KWin::setState(cId,NET::KeepAbove); + KWin::raiseWindow(cId); + } +} + +void KoolDock::toggleKeptBelowOthers() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (info.state() & NET::KeepBelow) + { + KWin::clearState(cId,NET::KeepBelow); + } + else + { + KWin::setState(cId,NET::KeepBelow); + KWin::lowerWindow(cId); + } +} + +void KoolDock::toggleFullScreen() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (info.state() & NET::FullScreen) + { + KWin::clearState(cId,NET::FullScreen); + } + else + { + KWin::setState(cId,NET::FullScreen); + } +} + +void KoolDock::moveApp() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + activateApp(); + + QCursor::setPos(info.geometry().center()); + + NETRootInfo ri(qt_xdisplay(), NET::WMMoveResize); + ri.moveResizeRequest(cId, info.geometry().center().x(), info.geometry().center().y(), NET::Move); +} + +void KoolDock::resizeApp() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + activateApp(); + + QCursor::setPos(info.geometry().bottomRight()); + + NETRootInfo ri(qt_xdisplay(), NET::WMMoveResize); + ri.moveResizeRequest(cId, info.geometry().bottomRight().x(), + info.geometry().bottomRight().y(), NET::BottomRight); +} + +void KoolDock::minApp() +{ + Item *item; + int i; + QPixmap shot; + QImage tmpImg; + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (info.isMinimized()) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if(item->getId() == cId) + { + // set default's item icon + item->setIcon(KWin::icon(cId, iwBig2, iwBig2, TRUE)); + } + } + KWin::deIconifyWindow(cId, true); + KWin::activateWindow(cId); + } + else + { + if (fShowShot == TRUE) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if(item->getId() == cId) + { + // take the screenshot + shot = QPixmap::grabWindow(cId); + // scale the screenshot + tmpImg = shot.convertToImage(); + tmpImg.scale(iwBig2, iwBig2); + shot.convertFromImage(tmpImg); + // set the new item's icon + item->setIcon(shot); + } + } + paintEvent(NULL); + } + KWin::iconifyWindow(cId, true); + } + hide(); + QTimer::singleShot( 100, this, SLOT(refreshBackground()) ); +} + + +void KoolDock::maxApp() +{ + Item *item; + int i; + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (fShowShot == TRUE) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if(item->getId() == cId) + { + // set default's item icon + item->setIcon(KWin::icon(cId, iwBig2, iwBig2, TRUE)); + } + } + } + if (info.isMinimized()) + { + KWin::deIconifyWindow(cId, true); + } + else + { + if (info.state() & NET::Max) + { + KWin::clearState(cId, NET::Max); + } + else + { + KWin::setState(cId, NET::Max); + } + } + KWin::activateWindow(cId); + hide(); + QTimer::singleShot( 100, this, SLOT(refreshBackground()) ); +} + +void KoolDock::restApp() +{ + Item *item; + int i; + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (fShowShot == TRUE) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if(item->getId() == cId) + { + // set default's item icon + item->setIcon(KWin::icon(cId, iwBig2, iwBig2, TRUE)); + } + } + } + + KWin::clearState(cId, NET::MaxVert + NET::MaxHoriz); + KWin::deIconifyWindow(cId, true); + KWin::activateWindow(cId); + hide(); + QTimer::singleShot( 100, this, SLOT(refreshBackground()) ); +} + +void KoolDock::minAllApps() +{ + int i; + Item *item; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2WindowClass); + QCString cls=info.windowClassClass(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (!item->info.isMinimized()) + { + if ((fMinimizedOnly==0 || item->info.isMinimized()) || (fCurrent==0 || item->info.isOnDesktop(info.desktop()))) + { + if (cls==item->getClass()) + { + KWin::iconifyWindow(item->getId(), true); + } + } + } + } + +} + +void KoolDock::maxAllApps() +{ + int i; + Item *item; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2WindowClass); + QCString cls=info.windowClassClass(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (!(item->info.state() & NET::Max) || item->info.isMinimized()) + { + if ((fMinimizedOnly==0 || item->info.isMinimized()) || (fCurrent==0 || item->info.isOnDesktop(info.desktop()))) + { + if (cls==item->getClass()) + { + if (item->info.isMinimized()) KWin::deIconifyWindow(item->getId(),true); + KWin::setState(item->getId(), NET::Max); + } + } + } + } +} + +void KoolDock::restAllApps() +{ + int i; + Item *item; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2WindowClass); + QCString cls=info.windowClassClass(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (item->info.state() & NET::Max || item->info.isMinimized()) + { + if ((fMinimizedOnly==0 || item->info.isMinimized()) || (fCurrent==0 || item->info.isOnDesktop(info.desktop()))) + { + if (cls==item->getClass()) + { + if (item->info.isMinimized()) + { + KWin::deIconifyWindow(item->getId(),true); + } + else + { + KWin::clearState(item->getId(), NET::Max); + } + } + } + } + } +} + +void KoolDock::closeAllApps() +{ + int i; + Item *item; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2WindowClass); + QCString cls=info.windowClassClass(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if ((fMinimizedOnly==0 || item->info.isMinimized()) || (fCurrent==0 || item->info.isOnDesktop(info.desktop()))) + { + if (cls==item->getClass()) + { + NETRootInfo app(qt_xdisplay(), NET::CloseWindow); + app.closeWindowRequest(item->getId()); + } + } + } +} + +void KoolDock::shadeApp() +{ + KWin::WindowInfo info=KWin::windowInfo(cId); + + if (info.state() & NET::Shaded) + { + KWin::clearState(cId, NET::Shaded); + } + else + { + KWin::setState(cId, NET::Shaded); + } + + hide(); + QTimer::singleShot( 100, this, SLOT(refreshBackground()) ); +} + +void KoolDock::activateApp() +{ + Item *item; + int i; + KWin::WindowInfo info = KWin::windowInfo(cId); + + if (fShowShot == TRUE) + { + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if(item->getId() == cId) + { + // set default's item icon + item->setIcon(KWin::icon(cId, iwBig2, iwBig2, TRUE)); + } + } + } + + if (info.desktop()!=-1 && info.desktop()!=KWin::currentDesktop()) + { + goToDesktop(info.desktop()); + } + if (info.isMinimized()) KWin::deIconifyWindow(cId, true); + KWin::activateWindow(cId); + hide(); + QTimer::singleShot( 100, this, SLOT(refreshBackground()) ); +} + +void KoolDock::closeApp() +{ + NETRootInfo app(qt_xdisplay(), NET::CloseWindow); + app.closeWindowRequest(cId); + debug(QString("Closed: %1").arg(cId)); +} + + +void KoolDock::editItem() +{ + run(QString("kfmclient openProperties ") + iFilename); +} + + +void KoolDock::sendToDesktop(int desktop) +{ + if (desktop==0) desktop=-1; + if (iGroup && allApps) + { + int i; + Item *item; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2WindowClass); + QCString cls=info.windowClassClass(); + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if ((fMinimizedOnly==0 || item->info.isMinimized()) || (fCurrent==0 || item->info.isOnDesktop(info.desktop()))) + { + if (cls==item->getClass()) + { + KWin::setOnDesktop(item->getId(), desktop); + } + } + } + return; + } + KWin::setOnDesktop(cId, desktop); +} + + +void KoolDock::goToDesktop(int desktop) +{ + KWin::setCurrentDesktop(desktop); +} + + +void KoolDock::goToWindow(int win) +{ + cId=(WId)win; + activateApp(); +} + + +void KoolDock::removeItem() +{ + QFile::remove(iFilename); + restart(); +} + + +void KoolDock::addFile(QString filename, QString iconname, QString execname, QString name, bool notify, bool terminal, bool tclose, bool cuser, QString puser) +{ + QString progPath = locateLocal("data", "kooldock"); + QString menuPath = progPath + QString("/menu/"); + QString confFile = locateLocal("config", "kooldockrc"); + + QFile out(QString(menuPath + filename)); + if (out.open(IO_WriteOnly)) + { + QTextStream out_s(&out); + out_s << "[Desktop Entry]" << endl; + out_s << "Comment=" << endl; + out_s << "Encoding=UTF-8" << endl; + out_s << "Exec=" << execname << endl; + out_s << "GenericName=" << endl; + out_s << "Icon=" << iconname << endl; + out_s << "MimeType=" << endl; + out_s << "Name=" << name << endl; + out_s << "Path=" << endl; + out_s << "ServiceTypes=" << endl; + out_s << "SwallowExec=" << endl; + out_s << "SwallowTitle=" << endl; + out_s << "Terminal=false" << endl; + out_s << "TerminalOptions=" << endl; + out_s << "Type=Application" << endl; + if(notify == true) + { + out_s << "X-KDE-StartupNotify=true" << endl; + } + else + { + out_s << "X-KDE-StartupNotify=false" << endl; + } + if(cuser==true) + { + out_s << "X-KDE-SubstituteUID=true" << endl; + out_s << "X-KDE-Username=" << puser << endl; + } + else + { + out_s << "X-KDE-SubstituteUID=false" << endl; + out_s << "X-KDE-Username=" << endl; + } + if(terminal==true) + { + out_s << "Terminal=true" << endl; + } + else + { + out_s << "Terminal=false" << endl; + } + if(tclose==true) + { + out_s << "TerminalOptions=\\s--noclose" << endl; + } + else + { + out_s << "TerminalOptions=" << endl; + } + out.close(); + } +} + + +bool KoolDock::ignored(QString appname) +{ + if(ignoreList.count()>0) + { + for(unsigned int i=0; isetEnabled(FALSE); + + hide(); + if (wm) delete(wm); + trackTimer->stop(); + mkbigTimer->stop(); + mksmallTimer->stop(); + mTimer->stop(); + if (onChangeTimer != NULL) onChangeTimer->stop(); + + if (trackTimer) delete(trackTimer); + if (mTimer) delete(mTimer); + if (mkbigTimer) delete(mkbigTimer); + if (mksmallTimer) delete(mksmallTimer); + if (onChangeTimer != NULL) delete(onChangeTimer); + if (_filterData) delete(_filterData); + + if (rootpix) delete(rootpix); + if (xosdw) delete(xosdw); + if (clipw) delete(clipw); + if (info) delete(info); + + if (reloadIcons) + { + items.clear(); + witems.clear(); + } + init1(); + init2(); + if (setupdlg->isVisible()) + { + noSet=true; + editPref(); + if (reloadIcons) + { + setupdlg->appClear(); + setupdlg->appFill(); + } + noSet=false; + } +} + +void KoolDock::chkRestart() +{ + if (initialization) return; + if (!setupdlg ) return; + // this function is called by a timer to check if the dock should be restarted + // or not, depending on what was done in the configuration dialog. + reloadIcons=setupdlg->toReloadIcons->isChecked(); + reload(); + reloadIcons=false; + setupdlg->toReloadIcons->setChecked(FALSE); +} + + +void KoolDock::setMainPath(QString path) +{ + mainPath = path; +} + +void KoolDock::setArgs(QString params) +{ + args = params; + if (args=="-options" || args=="-o") editPref(); + +} + +void KoolDock::move2(int nx, int ny) +{ + int cx, cy, tmp, xn=0; + if (xinerama==1) {xn=XinPreviousWidth;} + + cx=0; + if ((fOrientation & 2) == 2) {ny=0; cy=0;} else {ny=dh-h1; cy=dh-h0;} + if ((fOrientation & 1) == 1) + {rx=ny; ry=nx; + tmp=cx;cx=cy;cy=tmp;} + else + {rx=nx; ry=ny;} + //if (fHidden==0) clipw->move(cx,cy); + if (rx==x0 && ry==dh-h0 && fExpanded==FALSE && w1>dw) + { + if (w0>dw) + { + Offset=(w1-dw)*lastXPos/dw - rx; + if ((fOrientation & 1) == 1) ry=0; + move(xn,ry); + } + else + { + Offset=0; + if ((fOrientation & 1) == 1) {ry=0;} else {rx=0;} + move(rx+xn,ry); + } + } + else + { + if ((fOrientation & 1) == 1) {ry=0;} else {rx=0;} + move(rx+xn,ry); + } + rx+=xn; + //clipw->lower(); +} + +void KoolDock::resize2(int nw, int nh) +{ + int mw, mh; + //if (w1>dw && nw>w1) + nw=dw; + nh=h1; + if ((fOrientation & 1) == 1) {rw=nh; rh=nw;} else {rw=nw; rh=nh;} + if (w1resize(200, 200); + //clipw->lower(); +} +void KoolDock::getBottomBG() +{ + if (fHidden==0) return; + int p1,p2,p3,p4,pt; + p1=0; + if ((fOrientation & 2)==2) {p2=0;} else {p2=dh - h1;} + p3=dw; + p4=h1; + if ((fOrientation & 1)==1) + { + pt=p1; p1=p2; p2=pt; + pt=p3; p3=p4; p4=pt; + } + if (xinerama==1) p1+=XinPreviousWidth; + bottomBg = QPixmap::grabWindow(qt_xrootwin(), p1, p2, p3, p4); + //bottomBg = QPixmap::grabWindow(qt_xrootwin(), x1, dh - h1, w1, h1); +} + +void KoolDock::getTopBG() +{ + int p1,p2,p3,p4,pt; + p1=0; + if ((fOrientation & 2)==2) {p2=h0;} else {p2=dh - h1;} + p3=dw; + p4=h1 - h0; + if ((fOrientation & 1)==1) + { + pt=p1; p1=p2; p2=pt; + pt=p3; p3=p4; p4=pt; + } + if (xinerama==1) p1+=XinPreviousWidth; + topBg = QPixmap::grabWindow(qt_xrootwin(), p1, p2, p3, p4); + //topBg = QPixmap::grabWindow(qt_xrootwin(), x1, dh - h1, w1, h1 - h0); +} + +void KoolDock::setDesktopIconsArea(int left, int top, int width, int height) +{ + if (fClipIcons==0) return; + DCOPClient* client = KApplication::dcopClient(); + if (!client->isAttached()) { + client->attach(); + client->registerAs("KoolDock"); + } + + for (int i = 0; i < KWin::numberOfDesktops(); i++) { + QByteArray data; + QDataStream args(data, IO_WriteOnly); + args << left << top << width << height << i; + client->send("kdesktop", "KDesktopIface", "desktopIconsAreaChanged(QRect, int)", data); + } +} + +void KoolDock::setDockAbove() { + KWin::setState(winId(), NET::KeepAbove); + raise(); +} + +void KoolDock::setDockBelow() { + KWin::setState(winId(), NET::KeepBelow); + lower(); +} + +void KoolDock::menuShow() +{ + allApps=false; + int tcId; + if (iGroup && menuCount!=0) + { + tcId=appMenu->itemParameter(currMenu); + + if (tcId==currMenu && menuCount==1) + { + allApps=true; + deskpopup->setItemChecked(dIndex,false); + return; + } + cId=tcId; + KWin::WindowInfo info=KWin::windowInfo(cId,0,NET::WM2AllowedActions); + deskpopup->setItemChecked(dIndex,false); + dIndex=info.desktop(); + if (dIndex==-1) dIndex=0; + deskpopup->setItemChecked(dIndex,true); + advMenu->setItemChecked(1,info.state() & NET::KeepAbove); + advMenu->setItemChecked(2,info.state() & NET::KeepBelow); + advMenu->setItemChecked(3,info.state() & NET::FullScreen); + advMenu->setItemEnabled(3,info.actionSupported(NET::ActionFullScreen)); + } +} + +void KoolDock::menuX(int num) +{ + if (iGroup && menuCount!=0) + { + currMenu=num; + } +} + +void KoolDock::init1() +{ + initialization=true; + ptPart=5; + // Load the configuration + loadConf(); + + if (fStayBelow==0 || fHidden==1) + { + reparent (0, getWFlags() | WX11BypassWM, pos(),FALSE); + } + else + { + reparent (0, getWFlags() & !WX11BypassWM, pos(),FALSE); + } + hide(); + + // Lets initialize the systray counter + if (reloadIcons) numSystray=0; + + // first, we set our "nice" priority + if (fPriority > 19) fPriority = DEF_PRIORITY; + if (fPriority < 0) fPriority = DEF_PRIORITY; + setpriority(0, 0, fPriority); + debug(QString("Priority: %1").arg(fPriority)); + + iwBig2 = iwBig; + + lastX=0; + + iDist = iwSmall + iSpace; + funcW = (int)(iDist*fAmount/2); + funcH = iwBig - iwSmall; + iy = iSpace/ 2; + + + KWin::setOnAllDesktops(winId(), true); + KWin::setState(winId(), NET::SkipTaskbar | NET::SkipPager); + KWin::setType(winId(), NET::Dock); + + items.setAutoDelete(TRUE); + popups.setAutoDelete(TRUE); + desks.setAutoDelete(TRUE); + + if(fShowKMenu==1) + { + if (fUseKBFX==1) + { + if (reloadIcons) items.append(new Item("kmenu", "dcop kicker KBFXInterface showMenu", "KMenu", iwSmall, iwBig2)); + } + else + { + if (reloadIcons) items.append(new Item("kmenu", "dcop kicker kicker popupKMenu 0", "KMenu", iwSmall, iwBig2)); + } + } + + + //Lets load the menu entries + if (reloadIcons) loadMenu(); + if (items.count()==0) + { + items.append(new Item("kooldock", "kooldock -k; kooldock -o" , "K", iwSmall, iwBig2)); + } + // Create the "xosd" widget + xosdw = new xosd(); + rdh=QApplication::desktop()->height(); + xosdw->move(0,rdh); + + wm = new KWinModule(); + + info = new NETWinInfo( qt_xdisplay(), winId(), qt_xrootwin(), NET::WMState); + info->setDesktop( NETWinInfo::OnAllDesktops ); + info->setState(NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager, NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager); + setBackgroundMode(NoBackground); + + // Load the ignore List + loadIgnore(); + + xosd_st = 0; + xosdw->setFont(xosdFont); + if (xosdItalic == true) xosdw->setItalic(); + if (xosdBold == true) xosdw->setBold(); + xosdw->setSize(xosdSize); + xosdw->setShadowOffset(xosdShadowOffset); + xosdw->setColor(xosdColor); + xosdw->setShadowColor(xosdShadowColor); + + // Show task bar + if (fShowTaskbar) + { + //Lets add the necesary windows + if (reloadIcons) {firstTime=true;addWindows();} + connect(wm, SIGNAL(activeWindowChanged(WId)), SLOT(activeWindowChanged(WId))); + + } + connect(wm, SIGNAL(windowAdded(WId)), SLOT(windowAdded(WId))); + connect(wm, SIGNAL(windowRemoved(WId)), SLOT(windowRemoved(WId))); + connect(wm, SIGNAL(windowChanged(WId, unsigned int)), SLOT(windowChanged(WId, unsigned int))); + if (fSystray) + { + /* System Tray implementation (hope this works - Francisco) */ + connect(wm, SIGNAL(systemTrayWindowAdded(WId)), SLOT(systemTrayWindowAdded(WId))); + connect(wm, SIGNAL(systemTrayWindowRemoved(WId)), SLOT(systemTrayWindowRemoved(WId))); + + QCString screenstr; + screenstr.setNum(qt_xscreen()); + QCString trayatom = "_NET_SYSTEM_TRAY_S" + screenstr; + + Display *display = qt_xdisplay(); + + net_system_tray_selection = XInternAtom(display, trayatom, false); + net_system_tray_opcode = XInternAtom(display, "_NET_SYSTEM_TRAY_OPCODE", false); + + // Acquire system tray + XSetSelectionOwner(display, net_system_tray_selection, winId(), CurrentTime); + + //WId root = qt_xrootwin(); + + if (XGetSelectionOwner (display, net_system_tray_selection) == winId()) + { + XClientMessageEvent xev; + + xev.type = ClientMessage; + //xev.window = root; + + xev.message_type = XInternAtom (display, "MANAGER", False); + xev.format = 32; + xev.data.l[0] = CurrentTime; + xev.data.l[1] = net_system_tray_selection; + xev.data.l[2] = winId(); + xev.data.l[3] = 0; + xev.data.l[4] = 0; + + //XSendEvent (display, root, False, StructureNotifyMask, (XEvent *)&xev); + } + } + connect(wm, SIGNAL(currentDesktopChanged(int)), SLOT(currentDesktopChanged(int))); + connect(wm, SIGNAL(workAreaChanged()), SLOT(workAreaChanged())); + + // Pseudo-Transparency code + rootpix = new KRootPixmap(this); + rootpix->setCustomPainting(TRUE); + connect(rootpix, SIGNAL(backgroundUpdated (const QPixmap &)), SLOT(updateBackground(const QPixmap &))); + rootpix->start(); + + debug(QString("Items loaded: %1").arg(items.count())); + + //Simple work around to support xinerama (user defined) + if(xinerama==0) + { + dw=QApplication::desktop()->width(); + dh = QApplication::desktop()->height(); + } + else + { + dw=leftRes; + dh=XinDesiredHeight; + } + + xosdw->setClear(fCleaner); + xosdw->setOrientation(fOrientation & 1, dw, rdh); + + // All icons to small size + unsigned int i; + for (i=0; i < items.count() + 1; i++) + { + iSize[i] = iwSmall; + } + for (i=0; i < items.count() + 1; i++) + { + cx[i] = iSpace + i*iDist + iwSmall/2; + cur_cx[i] = cx[i]; + } + if ((fOrientation & 1)==1) + { + int tmpdw; + tmpdw=dw; + dw=dh; + dh=tmpdw; + } + if (fOrientation==2 || fOrientation==1) + { + QString tmpstr; + tmpstr=fLeftImg; + fLeftImg=fRightImg; + fRightImg=tmpstr; + } + + Offset=0; + + xosdw->move2(0,rdh); + xosdw->show(); + //setMouseTracking(TRUE); + fExpanded=FALSE; + // Timer to track the mouse position + // When the mouse pointer reaches the bottom of the screen, the bar should popup in a userdefined time (int hideTimer) + + track2active=FALSE; + trackTimer = new QTimer(this); + connect(trackTimer, SIGNAL(timeout()), this, SLOT(trackTimerEnd())); + + ii_first = 0; + ii_last = items.count() - 1; + + iOnClick = -1; + onChangeTimer = NULL; + Ybase = 0; + soffset=0; + eoffset=0; + last_ncx=0; + + /* For the the onscreen text (icon names) */ + nom = ""; + aux = ""; + + mTimer = new QTimer(this); + connect(mTimer, SIGNAL(timeout()), this, SLOT(mTimerEnd())); + + _filterData = new KURIFilterData(); + + mkbigTimer = new QTimer(this); + connect(mkbigTimer, SIGNAL(timeout()), this, SLOT(mkbigTimerDo())); + + mksmallTimer = new QTimer(this); + connect(mksmallTimer, SIGNAL(timeout()), this, SLOT(mksmallTimerDo())); + + QWMatrix m; + m.rotate( -90*fOrientation ); + if (!fLeftImg.isEmpty()) + { + LeftImg.load(fLeftImg); + LeftImg = LeftImg.xForm( m ); + } + if (!fRightImg.isEmpty()) + { + RightImg.load(fRightImg); + RightImg = RightImg.xForm( m ); + } + if (!fCenterImg.isEmpty()) + { + CenterImg.load(fCenterImg); + CenterImg = CenterImg.xForm( m ); + } + + if (fHidden==1) + { + move (0,rdh); + } + debug("Kooldock has started"); + + doUpdateGeometry(); + if ((fOrientation & 1)==1) {offscr = QPixmap(h1, dw); bottomBgf = QPixmap(h1, dw);} else {offscr = QPixmap(dw, h1); bottomBgf = QPixmap(dw, h1);} + + soffset = iwSmall/2 + func2(abs(1-funcW)) + func2(abs(iDist+1-funcW)) + func2(abs(2*iDist+1-funcW)) + func2(abs(3*iDist +1-funcW))/2 - ((int)((iwBig - iwSmall)*0.6*fAmount) + iSpace*2)/2 - 4*iwSmall - (int)((3*iDist+1-funcW)*(func(0) + func(iDist) - 2*iwSmall)/(2*iDist))+1; + eoffset=(int)((iwBig2-iwSmall)*fAmount/100); + doUpdateGeometry(); + +} + +void KoolDock::init2() +{ + clipw = new clip(); + + if (fHidden==1) + { + clipw->resize(0,0); + clipw->move(-10,-10); + } + else + { + int cx, cy; + cx=0; + if ((fOrientation & 2) == 2) {cy=0;} else {cy=dh-h0;} + if ((fOrientation & 1) == 1) + {clipw->move(cy,cx);clipw->resize(h0,dw);} + else + {clipw->move(cx,cy);clipw->resize(dw,h0);} + } + KWin::setOnAllDesktops(clipw->winId(), true); + KWin::setState(clipw->winId(), NET::KeepBelow); + clipw->lower(); + clipw->show(); + + animValue = 0; + animState = TRUE; + + if (fHidden==0) + { + resize2(w0,h0); + rootpix->repaint(true); + } + //Create desktop clipper widget + + if (fHidden==0 && fClipping==1) + { + //clipping desktop + if (fOrientation==0) {clipw->clipDesktop(0, 0, 0, 0, 0, 0, 0, 0, 0, h0, 0, dh);setDesktopIconsArea(0,0,dw,dh-h0);} + if (fOrientation==1) {clipw->clipDesktop(0, 0, 0, h0, 0, dh, 0, 0, 0, 0, 0, 0);setDesktopIconsArea(0,0,dh-h0,dw);} + if (fOrientation==2) {clipw->clipDesktop(0, 0, 0, 0, 0, 0, h0, 0, dh, 0, 0, 0);setDesktopIconsArea(0,h0,dw,dh);} + if (fOrientation==3) {clipw->clipDesktop(h0, 0, dh, 0, 0, 0, 0, 0, 0, 0, 0, 0);setDesktopIconsArea(h0,0,dh,dw);} + } + if (fStayBelow==1 && fHidden==0) setDockBelow(); + setAcceptDrops(TRUE); + useList=false; + if (fSpeed) ptPart=0; else ptPart=1; + if (fHidden==0) paintEvent(NULL); + if (ptPart==0) + enterEvent(NULL); + else + pTest(); +} + +void KoolDock::pTest() +{ + + if (ptPart==0) + { + onleaveEvent(NULL); ptPart=1; + return; + } + + //Finalize initialization + if(fHidden==1) + { + trackTimer->start(250, FALSE); + } + else + { + mTimer->start(250, FALSE); + } + oldDesktop=KWin::currentDesktop(); + initialization=false; + if (fShowTaskbar) addWindows(); + show(); + if (fHidden==0) paintEvent(NULL); + setupdlg->setEnabled(TRUE); + if (fFirstRun) editPref(); + updTaskList(); +} + +void KoolDock::refreshBackground() +{ + getBottomBG(); + getTopBG(); + if (dockOpacity > 0) {bitBlt(&bottomBgf,0,0,&bottomBg);KPixmapEffect::fade(bottomBgf, ((float)dockOpacity)*0.01, bgColor);} + show(); + paintEvent(NULL); +} + +void KoolDock::dragMoveEvent(QDragMoveEvent* event) +{ + if (mouseOnLauncher && QTextDrag::canDecode(event)) + { + event->accept(); + } + else + { + event->ignore(); + } +} + +void KoolDock::dropEvent(QDropEvent* event) +{ + QString strDrop; + QPoint pointer; + pointer = QCursor::pos(); + int px, py; + + px = pointer.x()-pos().x(); + py = pointer.y()-pos().y(); + + QTextDrag::decode(event, strDrop); + lstDrop=QStringList::split(QString("\n"),strDrop,false); + + useList=true; + mPress (px, py, Qt::LeftButton); + useList=false; +} + +void KoolDock::movetoback(WId id) +{ + int i; + Item *item; + int ic=-1,jc; + QCString cls; + + //find clicked item in witems list + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + if (item->getId()==id) {ic=i;break;} + + if (ic>=0) + { + jc=witems.at(ic)->getIndex(); //get item stack index + for (i=0, item = witems.at(0); item; i++, item = witems.next()) + { + if (item->getIndex()>jc) item->setIndex(item->getIndex()-1); + } + //move clicked item to last position in the stack + witems.at(ic)->setIndex(witems.count()-1); + cls = witems.at(ic)->getClass(); + for (i=numLaunchers, item = items.at(numLaunchers); item; i++, item = items.next()) + { + if (item->getClass()==cls) + { + item->setId(witems.at(ic)->getId()); + item->setName(witems.at(ic)->getName()); + break; + } + } + } +} + +int KoolDock::itemFromPoint(int x) +{ + int i, Xpos=-1; + for (i=0; i<(int)items.count(); i++) + { + Xpos=xFromIndex(i); + if ((x+iSpace/2)>Xpos && (x-iSpace)<(Xpos+iSize[i])) break; + } + currXPos=Xpos; + return i; +} + +int KoolDock::xFromIndex(int i) +{ + int Xpos; + if(i < ii_first){Xpos = cur_cx[i] - iwSmall/2 + SPACE_W;} + else if(i >= ii_first && i <= ii_last){Xpos = cur_cx[i] - iSize[i]/2 + adjust+soffset;} + else if(i > ii_last){Xpos = cur_cx[i] - iwSmall/2 + adjust + SPACE_W - 3+soffset*0;} + return Xpos; +} + +void KoolDock::aboutToShow() +{ + menuCount++; +} + +void KoolDock::aboutToHide() +{ + menuCount--; +} + +void KoolDock::createMenu(WId id, KPopupMenu* tmpMenu, KWin::WindowInfo * info) +{ + QString appTitle; + int menustate; + appTitle = info->visibleName(); + appTitle.truncate(30); + + tmpMenu->insertTitle(appTitle); + + tmpMenu->insertItem(i18n("Ad&vanced"), advMenu); + + menustate = tmpMenu->insertItem(SmallIcon("move"), i18n("&Move"), this, SLOT(moveApp())); + tmpMenu->setItemEnabled(menustate, info->actionSupported(NET::ActionMove)); + + menustate = tmpMenu->insertItem(i18n("Re&size"), this, SLOT(resizeApp())); + tmpMenu->setItemEnabled(menustate, info->actionSupported(NET::ActionMove)); + + menustate = tmpMenu->insertItem(i18n("Mi&nimize"), this, SLOT(minApp())); + if (info->isMinimized()) tmpMenu->setItemChecked(menustate, true); + tmpMenu->setItemEnabled(menustate, info->actionSupported(NET::ActionMinimize)); + + menustate = tmpMenu->insertItem(i18n("Ma&ximize"), this, SLOT(maxApp())); + if ((info->state() & NET::Max) && !info->isMinimized()) tmpMenu->setItemChecked(menustate, true); + tmpMenu->setItemEnabled(menustate, info->actionSupported(NET::ActionMax)); + + menustate = tmpMenu->insertItem(i18n("&Shade"), this, SLOT(shadeApp())); + if (info->state() & NET::Shaded) tmpMenu->setItemChecked(menustate, true); + tmpMenu->setItemEnabled(menustate, info->actionSupported(NET::ActionShade)); + + //menustate = tmpMenu->insertItem(i18n("&Restore"), this, SLOT(restApp())); + //if (!info->isMinimized() && info->state() != NET::Max) tmpMenu->setItemEnabled(menustate, false); + + tmpMenu->insertItem(SmallIcon("forward"), i18n("&Move to Desktop"), deskpopup); + tmpMenu->insertSeparator(); + tmpMenu->insertItem(SmallIcon("fileclose"), i18n("&Close"), this, SLOT(closeApp())); +} + +void KoolDock::updTaskList() +{ + + if (!fShowNav) return; + + desks.setAutoDelete (true); + + //tasklist; menu to access every window throught navigation menu + int j, index, incr, nDesks; + KWin::WindowInfo tmpinfo; + + nDesks=KWin::numberOfDesktops(); + + tasklist->clear(); + desks.clear(); + + for(index=0; index<=nDesks; index++) + { + desks.append (new dInfo); + } + + KWin::WindowInfo info; + QValueList::ConstIterator it; + for (it=wm->windows().begin(); it != wm->windows().end(); ++it) + { + tmpinfo=KWin::windowInfo(*it); + + const int SUPPORTED_WINDOW_TYPES = NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask; + QString name = tmpinfo.visibleName(); + + if (tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Normal || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Override || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Dialog || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Unknown) + { + if ((tmpinfo.state() & NET::SkipTaskbar) == 0) + { + if (ignored(tmpinfo.name()) == false) + { + index=tmpinfo.desktop(); + if (index==-1) index=0; + + incr=0; + + if (!desks.at(index)->gBool()) + { + desks.current()->sBool(true); + if (index==0) + {tasklist->insertTitle(i18n("All desktops"),-1,desks.current()->gInt());} + else + {tasklist->insertTitle(i18n("Desktop %1").arg(index),-1,desks.current()->gInt());} + incr++; + } + tasklist->insertItem(KWin::icon(*it), tmpinfo.visibleName(), *it, desks.current()->gInt()+incr); + incr++; + for(j=index; j<=nDesks; j++) + { + desks.at(j)->inc(incr); + } + } + } + } + } +} + +void KoolDock::addToTaskList(WId id) +{ + int i; + Item *item; + int index, rIndex, j, incr=0, decr=0; + KWin::WindowInfo tmpinfo; + tmpinfo=KWin::windowInfo(id); + nDesks=KWin::numberOfDesktops(); + rIndex = tmpinfo.desktop(); + + const int SUPPORTED_WINDOW_TYPES = NET::NormalMask | NET::DesktopMask | NET::DockMask | NET::ToolbarMask | NET::MenuMask | NET::DialogMask | NET::OverrideMask | NET::TopMenuMask | NET::UtilityMask | NET::SplashMask; + QString name = tmpinfo.visibleName(); + + if (tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Normal || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Override || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Dialog || tmpinfo.windowType(SUPPORTED_WINDOW_TYPES) == NET::Unknown) + { + if ((tmpinfo.state() & NET::SkipTaskbar) == 0) + { + if (ignored(tmpinfo.name()) == false) + { + + if (rIndex==0) return; + index=rIndex; + if (index==-1) index=0; + + if (!desks.at(index)->gBool()) + { + desks.at(index)->sBool(true); + if (index==0) + {tasklist->insertTitle(i18n("All desktops"),-1,desks.at(index)->gInt());} + else + {tasklist->insertTitle(i18n("Desktop %1").arg(index),-1,desks.at(index)->gInt());} + incr++; + } + else + { + if (fShowTaskbar) + { + for (i=witems.count(), item = witems.at(i); item; i--, item = witems.prev()) + { + if (item->getId()==id) break; + if (item->info.desktop()==rIndex) decr++; + } + } + } + tasklist->insertItem(KWin::icon(id), tmpinfo.visibleName(), id, desks.at(index)->gInt()+incr-decr); + incr++; + for(j=index; j<=nDesks; j++) + { + desks.at(j)->inc(incr); + } + } + } + } +} + +void KoolDock::rmFromTaskList(WId id) +{ + nDesks=KWin::numberOfDesktops(); + int i, j, k, dec=0; + int index=0; + i=tasklist->indexOf(id); + index=tasklist->idAt(i); + if (index==id) + { + tasklist->removeItem(id); + dec--; + for(j=0; j<=nDesks; j++) + { + if (desks.at(j)->gBool() && desks.at(j)->gInt()>=i+1) + { + if (desks.at(j)->gInt()==i+1) + { + if (tasklist->text(tasklist->idAt(i-1)).isNull() && tasklist->text(tasklist->idAt(i)).isNull()) + { + dec--; + desks.at(j)->sBool(false); + tasklist->removeItemAt(i-1); + } + } + for(k=j; k<=nDesks; k++) + { + desks.at(k)->inc(dec); + } + break; + } + } + } +} + diff --git a/src/kooldock.h b/src/kooldock.h new file mode 100644 index 0000000..af196bd --- /dev/null +++ b/src/kooldock.h @@ -0,0 +1,364 @@ +/*************************************************************************** + kooldock.h - description + ------------------- + begin : Tue Jun 10 22:18:34 BST 2003 + copyright : (C) 2003 by KoolDock team + email : + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef KOOLDOCK_H +#define KOOLDOCK_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include "item.h" +#include "xosd.h" +#include "clip.h" +#include "setupdialogprg.h" +#include "dinfo.h" + +const int MAX_ICONS = 150; // max number of icons +const int UPDATE_DIST = 1; // update when x - last_x <= UPDATE_DIST +const int DEF_SMALL_SIZE = 32; // default small icon size +const int DEF_BIG_SIZE = 90; // default big icon size +const int DEF_DOCK_OPACITY = 50; // default dock opacity +const int DEF_PRIORITY = 5; +const int DEF_HIDDEN = 1; // default hidden priority +const int ANIM_TOTAL_STEP = 6; // not in use yet + +const int SPACE_W = 1; // space between quick launchers and tasks (the seperator) + +const int ON_CHANGE_ANIM_INTERVAL = 50; // animation's interval + +/** KoolDock is the base class of the project */ +class KoolDock : public QWidget +{ + Q_OBJECT + public: + /** construtor */ + KoolDock(QWidget* parent=0, const char *name=0); + /** destructor */ + ~KoolDock(); + + //static bool writeIgnoreList(QString text); + void setMainPath(QString path); + void setArgs(QString param); + clip *clipw; + + private: + QTime *perf; + // configuration variables + int fShowTaskbar; // show-taskbar flag + int fMinimizedOnly; // show only minimized icons flag + int fShowNotification; // show-notification flag + int fShowBorders; // show-borders flag + int fShowKMenu; // show the K menu + int fUseKBFX; + int fPriority; // "nice" priority + int fMouseTimer; // Mouse timer interval + int fClipping; //window area clippig + int fClipIcons; //icon area clipping + long int fzoomSpeed, zoomStep, zoomStepB, zoomStepS, zoomVal; //speed of show/hide animation + int zoomTicksB, zoomTicksS; //counts timer ticks + int neededTicksB,neededTicksS; //sets how many ticks is necessary to calculate new speed + bool fSpeed; + QColor borderColor; + int fHidden; // hidden dockbar + int fStayBelow; + int fOrientation; //bottom/left/top/right + int fHideOnClick; + int fSteppy; + int fShowFrames; // frames to show the dock "growing from bottom" + int fGrowFrames; // frames to grow the icon when the mouse is over it. + int fHighLightTime; + bool fFirstRun; + bool fShowShot; + bool fGrouping; + int fRepaintInterval; + int xinerama; //whether we want xinerama + int hideTimer; //user define time to show dock + int Solid; //whether using backgroung Image or not (for preference controls) + int fShowNav; //whether we want the navigation menu (clock + desktop chooser) in kooldocks main menu + int numSystray; //for systray control + int fSystray; //whether we want the systray or not + int fCurrent; //whether to only show windows on current desktop + int oldDesktop; //number of previous desktop + bool firstTime; //to control certain things + QString curTheme; //for the background theme (to preserve changes) + int leftRes; //Left monitor resolution + int XinDesiredHeight; + int XinPreviousWidth; + int fpercentPos; + + bool noSet; + bool firstInit; + bool reloadIcons; + bool initialization; + int ptPart; + + bool mouseOnLauncher; + QStringList lstDrop; + bool useList; + + Atom net_system_tray_selection; + Atom net_system_tray_opcode; + + QString fLeftImg; + QString fRightImg; + QString fCenterImg; + bool fNWideBg; + bool scaleMax; + + QPixmap LeftImg; + QPixmap RightImg; + QPixmap CenterImg; + QPixmap TempScaledCenter; + QPixmap TestPix; + QImage TestIm; + + unsigned int oLeft, oRight; + + int iwSmall; + int iwBig; + int iwBig2; + + int firstX, tmpw; + int oldfirstX, oldtmpw; + int lastX; + + int dockOpacity; + QColor bgColor; + + QColor sepColor; // separator bar's color + + int Ybase; + + // normal variables + + QString progPath; + QString menuPath; + QString confFile; + QString iFilename; // right clicked item filename + QString mainPath; + QString args; + + QStringList ignoreList; + + + NETWinInfo *info; + KWinModule *wm; + SetupDialog *setupdlg; + + int Offset; + int numLaunchers; // number of quick launcher items + int x, y, w, h, h0, h1, w0, x0, w1, x1; + int rx, ry, rw, rh, uw; //current position + int ix, iy, iDist, iSpace; + int dw, dh, rdh; + int funcW, funcH; + int ii_first, ii_last; + int soffset, eoffset; //used in icon positioning + int sx, sw; + int adjust; + int fAmount; + int last_mx; + int last_ncx; + + QPtrList items;//currently visible items + QPtrList witems;//all windows on all desktops + int iSize[MAX_ICONS + 1];//icon sizes + int cx[MAX_ICONS + 1];//positions of small icons + int cur_cx[MAX_ICONS + 1];//positions of visible icons + QPixmap offscr;//drawing buffer + + KRootPixmap *rootpix; + KPixmap bottomBg; + KPixmap bottomBgf; + QPixmap topBg; + + KAboutDialog *aboutDlg; + QTimer *mkbigTimer; //zoom animation timers + QTimer *mksmallTimer; + QTimer *mTimer; //mouse move emulator (can't use normal event instead) + QTimer *onChangeTimer; // used when a window has changed and we need to notify user + QTimer *trackTimer; //checks whether mouse touches screen edge + + int animStep; // animation step, not in use yet + int iOnClick; // index of the quick launcher being clicked + WId cId; // id of the application (used in the right click menu over the taskbar) + QString cClass; + WId CurrentFocus; + int onChangeAnimStep; + KPopupMenu *deskpopup; + KPopupMenu *appMenu; + KPopupMenu *godesk; + KPopupMenu *tasklist; + KPopupMenu *popup; + KPopupMenu *advMenu; + int menuCount, currMenu; + bool allApps; + QPtrList popups; + bool iGroup; + int dIndex, nDesks; + QPtrList desks; + + bool fExpanded; + bool track2active; + /*Xosd Section */ + QString nom; + QString aux; + //xosd *osd; + int xosd_st; + int showNames; + int fCleaner; + int xosdShadowOffset; + QString xosdFont; + QString xosdColor; + QString xosdShadowColor; + bool xosdBold; + bool xosdItalic; + int xosdSize; + KURIFilterData *_filterData; + xosd *xosdw; + int animValue; + int animState; + + void run(QString cmd); + int func(int x); + int func2(int x); + void doUpdateGeometry(); + bool addTask(WId id, int iFound=-1); + bool rmTask(WId id, int iFound=-1); + void rmwTask(int iFound); + bool addwTask(WId id); + void movetoback(WId id); + void loadConf(); + void loadIgnore(); + void saveConf(); + void loadMenu(); + void addWindows(); + int itemFromPoint(int x); + int xFromIndex(int i); + void createMenu(WId id, KPopupMenu* tmpMenu, KWin::WindowInfo* info); + void updTaskList(); + void addToTaskList(WId id); + void rmFromTaskList(WId id); + bool doRepaint; + int currXPos; + int lastXPos; + int lastYPos; + void init1(); + void init2(); + + protected: + void paintEvent(QPaintEvent *); + void mousePressEvent( QMouseEvent * ); + void mMoveEvent( int ex, int ey); + void mPress( int mx, int my, ButtonState srcButton); + void wheelEvent(QWheelEvent *); + void enterEvent(QEvent*); + void onleaveEvent(QEvent*); + void mksmallTimerstop(); + void dragMoveEvent(QDragMoveEvent* event); + void dropEvent(QDropEvent* event); + + public slots: + void edit(); + void editPref(); + void about(); + void windowAdded(WId id); + void windowRemoved(WId id); + void windowChanged(WId id, unsigned int properties); + void activeWindowChanged(WId id); + void workAreaChanged(); + void currentDesktopChanged(int); + void onChangeTimerTicked(); + void updateBackground(const QPixmap&); + void moveApp(); + void resizeApp(); + void minApp(); + void maxApp(); + void restApp(); + void minAllApps(); + void maxAllApps(); + void restAllApps(); + void closeAllApps(); + void shadeApp(); + void activateApp(); + void closeApp(); + void editItem(); + void removeItem(); + void sendToDesktop(int); + void goToDesktop(int); + void goToWindow(int); + /* Systray support */ + void systemTrayWindowAdded(WId id); + void systemTrayWindowRemoved(WId id); + void aboutToShow(); + void aboutToHide(); + + void toggleAlwaysOnTop(); + void toggleKeptBelowOthers(); + void toggleFullScreen(); + + static void addFile(QString filename, QString iconname, QString execname, QString name, bool notify, bool terminal, bool tclose, bool, QString); + bool ignored(QString appname); + + #ifdef _ENABLE_DEBUG + static void debug(QString message); + #endif + #ifndef _ENABLE_DEBUG + static void debug(QString); + #endif + void mkbigTimerDo(); + void mksmallTimerDo(); + void endProg(); + void mTimerEnd(); + void trackTimerEnd(); + void trackTimer2End(); + void restart(); + void reload(); + void chkRestart(); + void refreshBackground(); + void unhighlight(); + void move2(int nx, int ny); + void resize2(int nw, int nh); + void getBottomBG(); + void getTopBG(); + void setDesktopIconsArea(int, int, int, int); + void setDockAbove(); + void setDockBelow(); + void menuX(int num); + void menuShow(); + void pTest(); +}; + +#endif diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..411fad6 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,114 @@ +/*************************************************************************** + main.cpp - description + ------------------- + begin : Thu Jun 19 14:43:55 BST 2003 + copyright : (C) 2003 by KoolDock team + email : + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "kooldock.h" + +#define KOOLDOCK_VERSION "0.4.7" +QString argv0; + +#ifndef _ENABLE_DEBUG +extern "C" +{ + static void crashHandler(int /*signal*/) + { + char cmd[1024]; + fprintf(stderr, "kooldock: crashHandler called\n"); + snprintf(cmd, 1025, "%s &", argv0.ascii()); + system(cmd); // try to restart according to argv[0] + } +} +#endif + +static const char *description = I18N_NOOP("
KoolDock
A Kool Dock for KDE

KoolDock is based upon the original work of Dang Viet Dung, Ksmoothdock 2.1

"); + +static KCmdLineOptions options[] = +{ + { "o", 0, 0 }, + { "options", I18N_NOOP("Show configuration window on start"), 0 }, + { "k", 0, 0 }, + { "kill", I18N_NOOP("Kills all processes called Kooldock"), 0 }, + {0, 0, 0} +}; + +int main(int argc, char *argv[]) +{ + argv0=QString("%1").arg(argv[0]); + + KAboutData aboutData( "kooldock", I18N_NOOP("KoolDock"), + KOOLDOCK_VERSION, description, KAboutData::License_GPL, + "(c) 2003, 2006 - KoolDock team", 0, "http://ktown.kde.cl/kooldock", "kooldock-devel@lists.kde.cl"); + aboutData.addAuthor("Matias Fernandez",0, "radix@kde.cl"); + aboutData.addAuthor("Francisco Guidi",0, "francisco@guidi.com", "http://francisco.guidi.com"); + aboutData.addAuthor("Blase Stanek", 0, "bisiek@op.pl"); + aboutData.addCredit("Mauricio Bahamonde", I18N_NOOP("Project Webmaster"), "elkrammer@kde.cl", "http://ktown.kde.cl/~elkrammer/"); + aboutData.addCredit("Sebastian Sariego Benitez", I18N_NOOP("Icon and artwork"), "segfault@powers.cl", "http://segfault.kde.cl"); + aboutData.setTranslator(I18N_NOOP("_: NAME OF TRANSLATORS\nYour names"), I18N_NOOP("_: EMAIL OF TRANSLATORS\nYour emails")); + KCmdLineArgs::init( argc, argv, &aboutData ); + KCmdLineArgs::addCmdLineOptions( options ); // Add our own options. + + #ifdef _ENABLE_DEBUG + KApplication::addCmdLineOptions(); + #endif + #ifndef _ENABLE_DEBUG + KUniqueApplication::addCmdLineOptions(); + #endif + if (QString("%1").arg(argv[1])=="-kill" || QString("%1").arg(argv[1])=="-k") + { + system("killall kooldock"); + exit(0); + } + + #ifndef _ENABLE_DEBUG + if (!KUniqueApplication::start()) + { + fprintf(stderr, "Kooldock is already running!\n"); + exit(0); + } + #endif + + #ifndef _ENABLE_DEBUG + KUniqueApplication a; + #endif + #ifdef _ENABLE_DEBUG + KApplication a; + #endif + KoolDock *kooldock = new KoolDock(); + a.setMainWidget(kooldock); + + #ifndef _ENABLE_DEBUG + if(KCrash::crashHandler()!=0) + { + kdDebug(0) << "Installing crash handler" << endl; + KCrash::setEmergencySaveFunction(crashHandler); // Try to restart on crash + } + #endif + + kooldock->setMainPath(argv0); + kooldock->setArgs(QString("%1").arg(argv[1])); + return a.exec(); +} diff --git a/src/setupdialog.ui b/src/setupdialog.ui new file mode 100644 index 0000000..f23cbaf --- /dev/null +++ b/src/setupdialog.ui @@ -0,0 +1,1990 @@ + +SetupDialog + + + SetupDialog + + + + 0 + 0 + 545 + 475 + + + + + 0 + 0 + + + + + 1024 + 768 + + + + + 0 + 0 + + + + KoolDock Configuration + + + true + + + false + + + + + + + + + + unnamed + + + + buttonCancel + + + &Cancel + + + + + + true + + + + + buttonOk + + + &OK + + + + + + true + + + true + + + + + toReloadIcons + + + + 0 + 0 + + + + checkBox11 + + + + + systray + + + false + + + + 0 + 0 + 0 + 0 + + + + + 0 + 0 + + + + Enable System Tray (Experimental!) + + + Enables KoolDock System Tray Support; it can be used instead of kicker's systray applet (its VERY experimental; do not use it unless you intend to help me get this working :P ) + + + + + tabWidget + + + + Widget2 + + + General + + + + unnamed + + + + groupBox3 + + + + 1 + 5 + 0 + 0 + + + + General options: + + + + unnamed + + + + line15 + + + HLine + + + Sunken + + + Horizontal + + + + + line1_3 + + + HLine + + + Sunken + + + Horizontal + + + + + line1_3_2 + + + HLine + + + Sunken + + + Horizontal + + + + + chk1 + + + Autohide + + + false + + + Start KoolDock hidden; if the mouse is not over KoolDock it will hide + + + + + chk5 + + + Enable Taskbar + + + Enables KoolDock taskbar; it can be used instead of Kicker's taskbar + + + + + chk6 + + + Enable Taskbar notification + + + Window icon in KoolDock's taskbar will blink when something happens on the given application + + + + + chkGrouping + + + Similar windows grouping + + + Enables grouping similar task icons into one icon. + + + + + chk7 + + + Show K Menu + + + Shows the KDE Menu in KoolDock's launcher. + + + + + Steppy + + + Don't scroll while mouse is on the same icon + + + Makes the scrolling not smooth, but automatically centered on current icon. + + + + + nav + + + Navigation Menu + + + Adds a clock into the Main Menu and a virtual desktop navigator. + + + + + chkUseKBFX + + + Use KBFX + + + Makes that KoolDock don't use KMenu, but uses alternative KBFX menu (widget is necessary). + + + + + cbMinimizedOnly + + + Show only minimized + + + That makes kooldock shows only the minimized application icons, and hides the other. + + + + + chkSshot + + + Screenshot of minimized windows + + + When a window is minimized a screenshot of the application will be use as an icon in KoolDock's Taskbar. + + + + + currentDesk + + + Only Manage Current Desktop + + + Only show in KoolDock's taskbar windows in the current desktop + + + + + hideOnClick + + + + 1 + 0 + 0 + 0 + + + + Hide on click + + + false + + + Hide KoolDock after clicking on a Launcher or Window icon. + + + + + cbStayBelow + + + Stay below windows when not used + + + Sends KoolDock before other windows, when it's collapsed. + + + + + + + + + TabPage + + + Icon text + + + + unnamed + + + + groupBox10 + + + Icon text + + + + unnamed + + + + textLabel1_4 + + + Text font: + + + + + xosdFont + + + + + textLabel1_2 + + + Shadow offset: + + + + + spinBox2 + + + 4 + + + 0 + + + + + textLabel1 + + + Text color: + + + + + kColorCombo1 + + + + + xosdSize + + + 99 + + + 1 + + + + + textLabel1_2_2 + + + Font size: + + + + + kColorCombo_shadow + + + + + textLabel1_8 + + + Shadow color: + + + + + line9 + + + HLine + + + Sunken + + + Horizontal + + + + + cbCleaner + + + Cleaner text (bigger memory and CPU usage) + + + + + frame3 + + + + 7 + 1 + 0 + 0 + + + + NoFrame + + + Raised + + + 0 + + + + unnamed + + + + xosdBold + + + Bold + + + false + + + + + spacer10 + + + Horizontal + + + Expanding + + + + 16 + 21 + + + + + + chk2 + + + Show text over icons + + + Moving the mouse over KoolDock's launcher or TaskBar will show the window/launcher name on the screen + + + + + spacer11 + + + Horizontal + + + Expanding + + + + 16 + 20 + + + + + + xosdItalic + + + Italic + + + false + + + + + spacer12 + + + Horizontal + + + Expanding + + + + 81 + 20 + + + + + + + + + + + + TabPage + + + Sizes + + + + unnamed + + + + groupBox9 + + + Sizes + + + + unnamed + + + + textLabel2 + + + Small icon size: + + + + + iwSmall + + + + + textLabel2_2 + + + Big icon size: + + + + + iwBig + + + 160 + + + + + textLabel1_13 + + + + 0 + 5 + 0 + 0 + + + + Amount of big icons: + + + + + fAmount + + + 10 + + + 4 + + + This box determines amout of zoomed icons. + + + + + textLabel1_6 + + + Space between icons + + + + + sbSpace + + + + + + + + + TabPage + + + Application List + + + + unnamed + + + + textLabel1_3 + + + + 3 + 5 + 0 + 0 + + + + Drag an application to add it or + + + + + buttonadd + + + + 5 + 0 + 0 + 0 + + + + Manually &add Application + + + Alt+A + + + Click here to manually add an application to the Launcher + + + + + applist + + + + 3 + 7 + 0 + 0 + + + + Select + + + Drag and Drop here any executable or desktop file for which you want an entry in KoolDock's Launcher + + + + + mLeft + + + + 0 + 0 + 0 + 0 + + + + Move Left + + + Moves selected item left + + + + + mRight + + + + 0 + 0 + 0 + 0 + + + + Move Right + + + Moves selected item right + + + + + spacer7 + + + Horizontal + + + Expanding + + + + 181 + 21 + + + + + + textLabel1_5 + + + + 3 + 5 + 0 + 0 + + + + Right click opens the icon menu. + + + + + + + TabPage + + + Ignore list + + + + unnamed + + + + grabWin + + + Grab Window + + + Click here to start grabbing windows names; click Add for each window you click on + + + + + textLabel1_7 + + + + 3 + 5 + 0 + 0 + + + + Click "Grab Window" and click over a Window, then click "Add" to append it to +the ignore list; you may also manually type or edit the window's name in the +box below. To stop grabbing just click "Grabbing...", "Ok" or "Cancel". + + + + + ignoreBox + + + + + + true + + + + + + + + + + TabPage + + + Background + + + + unnamed + + + + chkSolid + + + + 1 + 1 + 0 + 0 + + + + Solid Background: + + + true + + + + unnamed + + + + textLabel1_3_2_2 + + + Border color: + + + + + kColorCombo3 + + + + + textLabel1_3_3 + + + Dock opacity: + + + + + textLabel1_3_2 + + + Background color: + + + + + kColorCombo2 + + + + + chk4 + + + Show borders + + + When using a Solid Background you may tell KoolDock to draw its borders (rectangle) + + + + + spinBox1 + + + + + + 100 + + + Solid background level of transparency (0 means fully transparent) + + + + + + + groupBox6 + + + + 1 + 1 + 0 + 0 + + + + Sunken + + + 1 + + + 0 + + + TaskBar Separator + + + false + + + + unnamed + + + + kColorCombo4 + + + + 1 + 0 + 0 + 0 + + + + The separator is a line drawed between KoolDock's Launcher and Taskbar + + + + + textLabel1_3_2_2_2 + + + + 5 + 5 + 0 + 0 + + + + Separator color: + + + + + + + chkImg + + + + 1 + 1 + 0 + 0 + + + + Background Theme: + + + false + + + true + + + false + + + + unnamed + + + + nWideBg + + + Don't allow wider background than screen + + + Mkaes that the background ends don't go over the screen edges. + + + + + textLabel1_9 + + + + 1 + 5 + 0 + 0 + + + + Background Theme: + + + + + theme + + + + 7 + 0 + 0 + 0 + + + + + + buttonGroup2_2 + + + + 5 + 1 + 0 + 0 + + + + NoFrame + + + Plain + + + 0 + + + + + + false + + + false + + + false + + + false + + + true + + + + unnamed + + + + opScale1 + + + + 1 + 0 + 0 + 0 + + + + Corner scale: free + + + + + spacer8 + + + Horizontal + + + Expanding + + + + 146 + 20 + + + + + + opScale2 + + + + 3 + 0 + 0 + 0 + + + + Corner scale: min + + + + + spacer9 + + + Horizontal + + + Expanding + + + + 40 + 21 + + + + + + + + + + + + TabPage + + + Placement + + + + unnamed + + + + groupBox5 + + + + 3 + 3 + 0 + 0 + + + + Window placement + + + + unnamed + + + + textLabel1_11 + + + Window position on edge (%): + + + + + percentPos + + + 100 + + + 5 + + + 50 + + + Determines the position of expanded KoolDock's window on the selected screen edge. + + + + + xrma + + + Xinerama Support + + + false + + + If you are using xinerama you should enable this option for proper behaviour. + + + + + line4 + + + HLine + + + Sunken + + + Horizontal + + + + + textLabel1_10 + + + Desired Monitor Width + + + + + textLabel1_12 + + + Desired Monitor Height + + + + + SleftRes + + + 32768 + + + 0 + + + 1 + + + Width of monitor on which KoolDock should be shown. + + + + + SHeight + + + 32767 + + + 200 + + + Height of monitor on which kooldock should be shown. + + + + + PWidth + + + 32768 + + + Sum of widths of monitors before the desired one. + + + + + textLabel2_4 + + + Previous Monitors Width + + + + + textLabel2_5 + + + Window position: + + + + + buttonGroup2 + + + + 1 + 0 + 0 + 0 + + + + GroupBoxPanel + + + + + + + unnamed + + + + spacer3 + + + Horizontal + + + Expanding + + + + 31 + 21 + + + + + + op3 + + + + 0 + 0 + 0 + 0 + + + + false + + + Left + + + Makes that KoolDock's window will appear on left screen edge. + + + + + op1 + + + + 0 + 0 + 0 + 0 + + + + false + + + Right + + + Makes that KoolDock's window will appear on right screen edge. + + + + + spacer6 + + + Horizontal + + + Expanding + + + + 41 + 20 + + + + + + spacer5 + + + Horizontal + + + Expanding + + + + 21 + 21 + + + + + + op2 + + + + 0 + 0 + 0 + 0 + + + + false + + + Top + + + Makes that KoolDock's window will appear on top screen edge. + + + + + op0 + + + + 0 + 0 + 0 + 0 + + + + false + + + Bottom + + + Makes that KoolDock's window will appear on bottom screen edge. + + + + + spacer2 + + + Horizontal + + + Expanding + + + + 31 + 21 + + + + + + spacer4 + + + Horizontal + + + Expanding + + + + 21 + 21 + + + + + + + + + + + + TabPage + + + Other + + + + unnamed + + + + groupBox7 + + + CPU + + + + unnamed + + + + textLabel2_3 + + + Priority (0=max, 19=min) + + + + + Priority + + + 19 + + + 0 + + + 5 + + + + + + + groupBox8 + + + Desktop clipping + + + + unnamed + + + + chClipping + + + Clip desktop workspace + + + Makes desktop smaller that maximized windows don't cover KoolDock's window. + + + + + chClipIcons + + + Clip icon area (DCOP) + + + Makes KDE desktop smaller, that KoolDock's window don't cover the icons. + + + + + + + groupBox6_2 + + + Speed + + + + unnamed + + + + sejtanwodbycie + + + Zooming speed (ms) + + + + + zoomSpeed + + + + + + + + + + + + false + + + UpDownArrows + + + 1000 + + + 1 + + + 100 + + + Determines the speen of zooming animation + + + + + textLabel1_6_2 + + + Show after + + + + + hideTimer + + + msec + + + 5000 + + + Time before showing KoolDock if mouse reaches bottom of the screen + + + + + chkSpeed + + + Speed control + + + + + + + + + + + + + spacer1 + + + Horizontal + + + Expanding + + + + 300 + 21 + + + + + + btnApply + + + + 1 + 0 + 0 + 0 + + + + Apply + + + + + + + applist + dropped(QDropEvent*,const QValueList<QIconDragItem>&) + SetupDialog + applist_dropped(QDropEvent*,const QValueList<QIconDragItem>&) + + + buttonadd + clicked() + SetupDialog + buttonadd_clicked() + + + buttonOk + clicked() + SetupDialog + configOK() + + + buttonCancel + clicked() + SetupDialog + configCancel() + + + grabWin + clicked() + SetupDialog + grabWin_clicked() + + + applist + contextMenuRequested(QIconViewItem*,const QPoint&) + SetupDialog + applist_contextMenuRequested(QIconViewItem*,const QPoint&) + + + mLeft + clicked() + SetupDialog + left() + + + mRight + clicked() + SetupDialog + right() + + + applist + clicked(QIconViewItem*,const QPoint&) + SetupDialog + applist_clicked(QIconViewItem*,const QPoint&) + + + xrma + clicked() + SetupDialog + xrma_clicked() + + + chk1 + toggled(bool) + SetupDialog + chkHidden() + + + chk5 + clicked() + SetupDialog + chkTask() + + + btnApply + clicked() + SetupDialog + configApply() + + + cbMinimizedOnly + clicked() + SetupDialog + iconsChanged() + + + currentDesk + clicked() + SetupDialog + iconsChanged() + + + chk6 + clicked() + SetupDialog + iconsChanged() + + + chk7 + clicked() + SetupDialog + iconsChanged() + + + iwSmall + valueChanged(int) + SetupDialog + iconsChanged() + + + iwBig + valueChanged(int) + SetupDialog + iconsChanged() + + + ignoreBox + changed() + SetupDialog + iconsChanged() + + + chkUseKBFX + clicked() + SetupDialog + iconsChanged() + + + chkGrouping + clicked() + SetupDialog + iconsChanged() + + + chkImg + toggled(bool) + SetupDialog + chkImgSlot() + + + chkSolid + toggled(bool) + SetupDialog + chkSolidSlot() + + + + kiconview.h + + + configOK() + configCancel() + chooseFont() + SelectLeftClicked() + SelectCenterClicked() + SelectRightClicked() + applist_dropped( QDropEvent *, const QValueList<QIconDragItem> & ) + applist_clicked( QIconViewItem *, const QPoint & ) + buttonadd_clicked() + chk1_toggled( bool ) + chkHidden( bool ) + chkHidden() + buttonDefault_clicked() + configDefault() + chkFont() + chkTask() + grabWin_clicked() + applist_contextMenuRequested( QIconViewItem *, const QPoint & ) + xrma_clicked() + groupBox7_destroyed( QObject * ) + left() + right() + configApply() + iconsChanged() + appClear() + appFill() + chkImgSlot() + chkSolidSlot() + + + + kfontcombo.h + klineedit.h + kcolorcombo.h + kcolorcombo.h + kiconview.h + keditlistbox.h + klineedit.h + kcolorcombo.h + kcolorcombo.h + kcolorcombo.h + + diff --git a/src/setupdialogprg.cpp b/src/setupdialogprg.cpp new file mode 100644 index 0000000..e2b9c39 --- /dev/null +++ b/src/setupdialogprg.cpp @@ -0,0 +1,702 @@ +// +// C++ Implementation: setupdialogprg +// +// Description: +// +// +// Author: KoolDock team , (C) 2004 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "setupdialog.h" +#include "setupdialogprg.h" +#include "apppropprg.h" +#include "appProp.h" +#include "kooldock.h" + +SetupDialogPrg::SetupDialogPrg(QWidget *parent, const char *name) + : SetupDialog(parent, name) +{ + //Ignore list handlers + grabbing=0; + gwm=new KWinModule(); + connect(gwm, SIGNAL(activeWindowChanged(WId)), SLOT(activeWindowChanged(WId))); + gwm->blockSignals(true); + in=ignoreBox->lineEdit(); + //Remove useless buttons from widget + up=ignoreBox->upButton(); + down=ignoreBox->downButton(); + up->hide(); + down->hide(); + //End ignore list handlers + + // some configuration variables + progPath = locateLocal("data", "kooldock"); + menuPath = progPath + QString("/menu/"); + + KConfig *config = KGlobal::config(); + config->setGroup("kooldock"); + + appdlg=new appPropPrg(); + appdlg->user->setEnabled(false); + appdlg->cuser->setChecked(false); + appdlg->terminal->setChecked(false); + appdlg->tclose->setChecked(false); + appdlg->tclose->setEnabled(false); + connect(appdlg, SIGNAL(apply()), SLOT(appRestart())); + + //Lets load the theme List + KStandardDirs sys; + QStringList bgPath = sys.findDirs("data", "kooldock/backgrounds"); + for(unsigned int i=0; iinsertItem(theme_tmp[j]); + } +} + + +void SetupDialogPrg::appRestart() +{ + if(!appdlg) return; + iconsChanged(); + kdDebug(0) << "Refresh applist" << endl; + appClear(); + appFill(); +} + + +SetupDialogPrg::~SetupDialogPrg() +{ + if(appdlg) delete(appdlg); + if(in) delete(in); + kdDebug(0) << "Destroying..." << endl; +} + + +// Setup dialog implementation +void SetupDialogPrg::iconsChanged() +{ + toReloadIcons->setChecked(TRUE); +} +void SetupDialogPrg::configOK() +{ + this->hide(); + configApply(); +} + +void SetupDialogPrg::configApply() +{ + int fShowTaskbar=0; + int fMinimizedOnly=0; + int fShowNotification=0; + int fShowBorders=0; + int fShowKMenu=0; + int fUseKBFX=0; + int fHidden=0; + int showNames=0; + int fCleaner=0; + int fHideOnClick=0; + int fStayBelow = 0; + int fSteppy=0; + int xinerama=0; + int fhideTimer=5; + int fShowNav=0; + int fSystray=0; + int fCurrent=0; + int fPriority=0; + int fpercentPos=0; + int fOrientation=0; + int fClipping=0; + int fClipIcons=0; + int fSpeed=0; + + //Stop grabbing window + gwm->blockSignals(true); + grabbing=0; + grabWin->setText(i18n("Grab Window")); + + if (chk5->isChecked() == true) fShowTaskbar = 1; + if (cbMinimizedOnly->isChecked() == true) fMinimizedOnly = 1; + if (chk6->isChecked() == true) fShowNotification = 1; + if (chk4->isChecked() == true) fShowBorders = 1; + if (chk7->isChecked() == true) fShowKMenu = 1; + if (chkUseKBFX->isChecked() == true) fUseKBFX = 1; + if (chk1->isChecked() == true) + { + fHidden = 1; + } + fhideTimer = hideTimer->value(); + if (chk2->isChecked() == true) showNames = 1; + if (cbCleaner->isChecked() == true) fCleaner = 1; + if (hideOnClick->isChecked() == true) fHideOnClick = 1; + if (cbStayBelow->isChecked() == true) fStayBelow = 1; + if (Steppy->isChecked() == true) fSteppy = 1; + if (xrma->isChecked() == true) xinerama=1; + if (nav->isChecked()==true) fShowNav=1; + if (systray->isChecked()==true) fSystray=1; + if (currentDesk->isChecked()==true) fCurrent=1; + if (chClipping->isChecked()==true) fClipping=1; + if (chClipIcons->isChecked()==true) fClipIcons=1; + if (chkSpeed->isChecked()==true) fSpeed=1; + fPriority=Priority->value(); + fpercentPos=percentPos->value(); + + kdDebug(0) << "Saving preferences..." << endl; + KConfig *config = KGlobal::config(); + config->setGroup("kooldock"); + config->writeEntry("ShowTaskbar", fShowTaskbar); + config->writeEntry("MinimizedOnly", fMinimizedOnly); + config->writeEntry("ShowNotification", fShowNotification); + config->writeEntry("BorderColor", kColorCombo3->color().name()); + config->writeEntry("SmallIconSize", iwSmall->value()); + config->writeEntry("BigIconSize", iwBig->value()); + config->writeEntry("BigIconAmount", fAmount->value()); + config->writeEntry("iSpace", sbSpace->value()); + config->writeEntry("BackgroundColor", kColorCombo2->color().name()); + config->writeEntry("SeparatorColor", kColorCombo4->color().name()); + config->writeEntry("ShowKMenu", fShowKMenu); + config->writeEntry("KBFX", fUseKBFX); + config->writeEntry("Hidden", fHidden); + config->writeEntry("HideOnClick", fHideOnClick); + config->writeEntry("StayBelow", fStayBelow); + config->writeEntry("fSteppy", fSteppy); + config->writeEntry("Xinerama", xinerama); + config->writeEntry("nWideBg", nWideBg->isChecked()); + config->writeEntry("scaleMax", opScale2->isChecked()); + if(xinerama==1) {config->writeEntry("leftRes", SleftRes->value()); config->writeEntry("XinDesiredHeight", SHeight->value()); config->writeEntry("XinPreviousWidth", PWidth->value());} + config->writeEntry("hideTimer", fhideTimer); + config->writeEntry("Navigator", fShowNav); + config->writeEntry("Systray", fSystray); + config->writeEntry("currentDesktop", fCurrent); + + config->writeEntry("Priority", fPriority); + config->writeEntry("Clipping", fClipping); + config->writeEntry("ClipIconArea", fClipIcons); + config->writeEntry("percentPos", fpercentPos); + if (op1->isChecked()) fOrientation=1; + if (op2->isChecked()) fOrientation=2; + if (op3->isChecked()) fOrientation=3; + config->writeEntry("fOrientation", fOrientation); + config->writeEntry("zoomSpeed", zoomSpeed->value()); + config->writeEntry("speedControl", fSpeed); + + // kosd config + config->writeEntry("showNames", showNames); + config->writeEntry("Cleaner", fCleaner); + config->writeEntry("xosdFont", xosdFont->currentText()); + config->writeEntry("xosdColor", kColorCombo1->color().name()); + config->writeEntry("xosdShadowColor", kColorCombo_shadow->color().name()); + config->writeEntry("xosdShadowOffset", spinBox2->value()); + config->writeEntry("xosdSize", xosdSize->value()); + if (xosdBold->isChecked()) + { + config->writeEntry("xosdBold", 1); + } + else + { + config->writeEntry("xosdBold", 0); + } + if (xosdItalic->isChecked()) + { + config->writeEntry("xosdItalic", 1); + } + else + { + config->writeEntry("xosdItalic", 0); + } + + config->writeEntry("ShowSShot", chkSshot->isChecked()); + config->writeEntry("iconGrouping", chkGrouping->isChecked()); + + // save background configurations + if (chkImg->isChecked()) + { + //Lets find exactly where the selected theme is + KStandardDirs sys; + QString theme_dir="kooldock/backgrounds/"+theme->currentText(); + QStringList bgPath = sys.findDirs("data", theme_dir); + + //Lets set the images and write the config + QString LeftImg=(QString)bgPath[0]+"background-left.png"; + QString CenterImg=(QString)bgPath[0]+"background-center.png"; + QString RightImg=(QString)bgPath[0]+"background-right.png"; + + // background image enabled + config->writeEntry("Solid", 0); + config->writeEntry("Theme", theme->currentText()); + config->writeEntry("LeftImg", LeftImg); + config->writeEntry("RightImg", RightImg); + config->writeEntry("CenterImg", CenterImg); + config->writeEntry("ShowBorders", 0); + config->writeEntry("DockOpacity", 0); + } + else + { + // background image disabled + config->writeEntry("Solid", 1); + config->writeEntry("Theme", ""); + config->writeEntry("LeftImg", ""); + config->writeEntry("RightImg", ""); + config->writeEntry("CenterImg", ""); + config->writeEntry("ShowBorders", fShowBorders); + config->writeEntry("DockOpacity", spinBox1->value()); + } + + config->sync(); + + // write ignore list to file + QString progPath = locateLocal("data", "kooldock"); + QString menuPath = progPath + QString("/menu/"); + filepath = QString(progPath + "/ignorelist.conf"); + if(ignoreBox->count()>0) + { + QFile out(filepath); + if (out.open(IO_WriteOnly)) + { + QTextStream out_s(&out); + for(int i=0; icount(); i++) + { + out_s << ignoreBox->text(i) << "\n"; + } + out.close(); + } + } + else + { + QFile::remove(filepath); + } + emit apply(); +} + +void SetupDialogPrg::configCancel() +{ + //Stop grabbing Windows + gwm->blockSignals(true); + grabWin->setText(i18n("Grab Window")); + grabbing=0; + this->hide(); +} + +void SetupDialogPrg::closeEvent( QCloseEvent *e ) +{ + e->ignore(); + configCancel(); +} + +void SetupDialogPrg::chkFont() +{ + bool tmp; //just to save some code + + if(chk2->isChecked()) + { + tmp=true; + } + else + { + tmp=false; + } + xosdBold->setEnabled(tmp); + xosdItalic->setEnabled(tmp); + xosdSize->setEnabled(tmp); + spinBox2->setEnabled(tmp); + kColorCombo1->setEnabled(tmp); + kColorCombo_shadow->setEnabled(tmp); + xosdFont->setEnabled(tmp); + cbCleaner->setEnabled(tmp); +} + + +void SetupDialogPrg::xrma_clicked() +{ + if(xrma->isChecked()==true) {SleftRes->setEnabled(true); SHeight->setEnabled(true); PWidth->setEnabled(true);} + if(xrma->isChecked()==false) {SleftRes->setEnabled(false); SHeight->setEnabled(false); PWidth->setEnabled(false);} +} + +void SetupDialogPrg::chkTask() +{ + iconsChanged(); + bool tmp; + + if(chk5->isChecked()) + { + tmp=true; + } + else + { + tmp=false; + } + chk6->setEnabled(tmp); + currentDesk->setEnabled(tmp); + chkSshot->setEnabled(tmp); + chkGrouping->setEnabled(tmp); + cbMinimizedOnly->setEnabled(tmp); +} + +void SetupDialogPrg::chkHidden() +{ + bool tmp; + + if(chk1->isChecked()) + { + tmp=true; + } + else + { + tmp=false; + } + hideTimer->setEnabled(tmp); + hideOnClick->setEnabled(tmp); + cbStayBelow->setEnabled(!tmp); +} + +void SetupDialogPrg::applist_dropped(QDropEvent*e,const QValueList&) +{ + KIconLoader icon_obj; + QStringList lst; + QString name; + int pos; + + QUriDrag::decodeLocalFiles(e, lst); + name=lst[0]; + + //Lets see if it is a desktop file + pos=name.findRev(".desktop", -1); + if(pos!=-1) + { + KSimpleConfig *desktopfile; + kdDebug(0) << "Desktop file dropped!" << endl; + desktopfile = new KSimpleConfig(lst[0], TRUE); + desktopfile->setGroup("Desktop Entry"); + appdlg->cmdname->setText(desktopfile->readEntry("Name")); + appdlg->cmdpath->setText(desktopfile->readEntry("Exec")); + appdlg->iconbutton->setIcon(desktopfile->readEntry("Icon")); + delete(desktopfile); + } + else + { + //It was not a dekstop file, so lets create a new entry + //Lets set a default name based on the program name + pos=name.findRev("/", -1); + if(pos!=-1) + { + name.remove(1, pos); + name.remove("/", TRUE); + } + + //Now we create and show the appProp dialog + //appdlg=new appPropPrg(); + appdlg->cmdname->setText(name); + appdlg->cmdpath->setText(lst[0]); + + //Based on the program name, lets try to set an icon; if it does + //not exists, the system will set the "default" icon + appdlg->iconbutton->setIcon(name); + } + appdlg->show(); +} + +void SetupDialogPrg::removeLauncher() +{ + if(fileName!=NULL) + { + QString question=i18n("Do you want to remove ") + fileName + QString("?"); + int remove = KMessageBox::questionYesNo(0, question, i18n("Remove Launcher")); + if(remove!=KMessageBox::Yes) return; + KSimpleConfig *desktopfile; + QDir homeDir = QDir::home(); + + if (homeDir.exists(progPath)) + { + QDir dir(menuPath); + QStringList fileListRemove; + fileListRemove = dir.entryList("*.desktop"); + for ( QStringList::Iterator it = fileListRemove.begin(); it != fileListRemove.end(); ++it ) + { + if ( ((*it) != ".") && ((*it) != "..") ) + { + desktopfile = new KSimpleConfig( menuPath + (*it), TRUE); + desktopfile->setGroup("Desktop Entry"); + if(desktopfile->readEntry("Name")==fileName) + { + kdDebug(0) << "Removing " << menuPath + (*it) << endl; + delete(desktopfile); + if(QFile::remove(menuPath+(*it))==TRUE) + { + kdDebug(0) << "Item removed!" << endl; + + //Lets update the launchers index + QString preffix; + fileListRemove.clear(); + fileListRemove=dir.entryList("*.desktop"); + QStringList fileListRemove2=fileListRemove; + + //Not really sure why I couldn't do this within the other for, something like fileListRemove[i].remove(0,2).prepend(preffix), but hell it works + for(unsigned int i=0; i=10) preffix=QString("%1").arg(i); + + dir.rename(fileListRemove[i], QString("%1%2").arg(preffix).arg(fileListRemove2[i])); + } + //End updating + + appClear(); + appFill(); + iconsChanged(); + } + else + { + kdDebug(0) << "Unable to remove file!" << endl; + } + return; + } + delete(desktopfile); + } + } + } + } +} + + +void SetupDialogPrg::grabWin_clicked() +{ + if(grabbing==0) + { + grabbing=1; + grabWin->setText(i18n("Grabbing...")); + gwm->blockSignals(false); + } + else + { + grabbing=0; + grabWin->setText(i18n("Grab Window")); + gwm->blockSignals(true); + } +} + + +void SetupDialogPrg::activeWindowChanged(WId id) +{ + KWin::WindowInfo winfo; + winfo=KWin::windowInfo(id); + QString ninfo=winfo.visibleName(); + + if(ninfo!=caption()) + { + in->setText(ninfo); + } +} + +void SetupDialogPrg::buttonadd_clicked() +{ + appdlg->cmdpath->setText(""); + appdlg->cmdname->setText(""); + appdlg->iconbutton->setIcon("unknown"); + appdlg->show(); +} + +void SetupDialogPrg::showEvent(QShowEvent *) +{ + //Here we fill the applist + appFill(); +} + +void SetupDialogPrg::appFill() +{ + // fill the application list. + KSimpleConfig *desktopfile; + + QDir homeDir = QDir::home(); + KIconLoader icon_obj; + QPixmap pixm; + + if(homeDir.exists(progPath)) + { + QDir dir(menuPath); + + fileList.clear(); + fileList = dir.entryList("*.desktop"); + for ( QStringList::Iterator it = fileList.begin(); it != fileList.end(); ++it ) + { + if ( ((*it) != ".") && ((*it) != "..") ) + { + desktopfile = new KSimpleConfig( menuPath + (*it), TRUE); + desktopfile->setGroup("Desktop Entry"); + QPixmap pixm=icon_obj.loadIcon(desktopfile->readEntry("Icon") ,KIcon::Desktop,0,KIcon::DefaultState,0L,false); + new KIconViewItem(applist, desktopfile->readEntry("Name"), pixm); + delete(desktopfile); + } + } + } +} + +void SetupDialogPrg::hideEvent ( QHideEvent * ) +{ + // the application list is erased here. + appClear(); +} + +void SetupDialogPrg::appClear() +{ + applist->clear(); +} + +void SetupDialogPrg::left() +{ + if (oldPos>0) {setnewpos(oldPos-1); oldPos--;iconsChanged();} +} + +void SetupDialogPrg::right() +{ + if (oldPos!=-1 && oldPos < (int)fileList.count()-1) {setnewpos(oldPos+1); oldPos++;iconsChanged();} +} + +void SetupDialogPrg::applist_clicked(QIconViewItem *e, const QPoint&) +{ + if(e!=NULL) + {oldPos=e->index();} + else + {oldPos=-1;} +} +void SetupDialogPrg::applist_contextMenuRequested(QIconViewItem *e,const QPoint&) +{ + if(e!=NULL) + { + KPopupMenu *popup=new KPopupMenu(); + KPopupMenu *setpos=new KPopupMenu(); + + fileName=e->text(); + oldPos=e->index(); + connect(setpos, SIGNAL(activated(int)), this, SLOT(setnewpos(int))); + + //Load desktop data + KSimpleConfig *desktopfile; + + QDir dir(menuPath); + fileList.clear(); + fileList = dir.entryList("*.desktop"); + int i=0; + for ( QStringList::Iterator it = fileList.begin(); it != fileList.end(); ++it ) + { + if ( ((*it) != ".") && ((*it) != "..") ) + { + desktopfile = new KSimpleConfig( menuPath + (*it), TRUE); + desktopfile->setGroup("Desktop Entry"); + int menustate=setpos->insertItem(QString("%1").arg(desktopfile->readEntry("Name")),i); + if(i==oldPos) {setpos->setItemEnabled(menustate, false);filepath=menuPath + (*it);} + delete(desktopfile); + i++; + } + } + //End Load + + popup->insertTitle(e->text()); + popup->insertItem(i18n("Swap with"), setpos); + popup->insertItem(i18n("&Edit item"), this, SLOT(editItem())); + popup->insertItem(i18n("Remove"), this, SLOT(removeLauncher())); + popup->exec(QCursor::pos()); + if(popup) delete(popup); + if(setpos) delete(setpos); + } + else + { + oldPos=-1; + } +} + +void SetupDialogPrg::editItem() +{ + KRun::runCommand("kfmclient openProperties " + filepath, "kfmclient", ""); +} + +void SetupDialogPrg::setnewpos(int newpos) +{ + kdDebug(0) << "New pos " << QString("0%1").arg(newpos) << "requested for: " << fileName<< endl; + if(newpos==oldPos) return; //Nothing to be done + computeNewPos(newpos); +} + +void SetupDialogPrg::computeNewPos(int pos) +{ + QString preffix, preffix2; + QDir dir(menuPath); + + fileList.clear(); + fileList = dir.entryList("*.desktop"); + + //Lets remove the preffix of the files from fileList + for(unsigned int i=0; i=10) preffix=QString("%1").arg(oldPos); + + //Preffix for new position + if(pos<10) preffix2=QString("0%1").arg(pos); + if(pos>=10) preffix2=QString("%1").arg(pos); + + kdDebug(0) << "Old Position: " << oldPos << endl; + kdDebug(0) << "New Position: " << pos << endl; + + dir.rename(QString("%1%2").arg(preffix).arg(fileList[oldPos]), QString("%1%2").arg(preffix2).arg(fileList[oldPos])); + dir.rename(QString("%1%2").arg(preffix2).arg(fileList[pos]), QString("%1%2").arg(preffix).arg(fileList[pos])); + + appClear(); + appFill(); +} + +void SetupDialogPrg::chkImgSlot() +{ + if (chkImg->isChecked()) + { + chkSolid->setChecked(false); + } + else + { + chkSolid->setChecked(true); + } +} + +void SetupDialogPrg::chkSolidSlot() +{ + if (chkSolid->isChecked()) + { + chkImg->setChecked(false); + } + else + { + chkImg->setChecked(true); + }} + +#include "setupdialogprg.moc" diff --git a/src/setupdialogprg.h b/src/setupdialogprg.h new file mode 100644 index 0000000..5539c5a --- /dev/null +++ b/src/setupdialogprg.h @@ -0,0 +1,102 @@ +// +// C++ Interface: setupdialogprg +// +// Description: +// +// +// Author: KoolDock team , (C) 2004 +// +// Copyright: See COPYING file that comes with this distribution +// +// +#ifndef SETUPDIALOGPRG_H +#define SETUPDIALOGPRG_H + +#include "setupdialog.h" +#include "apppropprg.h" + +// QT includes +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// KDE includes +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/** +@author KoolDock team +*/ + +class KoolDock; + +class SetupDialogPrg : public SetupDialog +{ +Q_OBJECT + public: + SetupDialogPrg(QWidget *parent = 0, const char *name = 0); + ~SetupDialogPrg(); + appProp *appdlg; + QString progPath; + QString menuPath; + KWinModule *gwm; + KLineEdit *in; + QPushButton *up; + QPushButton *down; + int grabbing; + int oldPos; + QString fileName; + QStringList fileList; + QString filepath; + + public slots: + void editItem(); + void iconsChanged(); + void configOK(); + void configApply(); + void configCancel(); + void chkHidden(); + void chkImgSlot(); + void chkSolidSlot(); + void chkFont(); + void chkTask(); + void applist_dropped(QDropEvent*,const QValueList&); + void buttonadd_clicked(); + void applist_clicked(QIconViewItem *, const QPoint&); + void appRestart(); + void appFill(); + void appClear(); + void grabWin_clicked(); + void activeWindowChanged(WId id); + void applist_contextMenuRequested(QIconViewItem*,const QPoint&); + void removeLauncher(); + void setnewpos(int); + void xrma_clicked(); + void left(); + void right(); + signals: + void apply(); + + private: + void computeNewPos(int); + + protected: + void closeEvent( QCloseEvent* ); + void showEvent ( QShowEvent * ); + void hideEvent ( QHideEvent * ); +}; +#endif diff --git a/src/xosd.cpp b/src/xosd.cpp new file mode 100644 index 0000000..656be2d --- /dev/null +++ b/src/xosd.cpp @@ -0,0 +1,226 @@ +#include "xosd.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +xosd::xosd(QWidget *parent, const char *name) : QWidget(parent, name, WStyle_Customize | WRepaintNoErase | WStyle_NoBorder | WDestructiveClose | WResizeNoErase | WMouseNoMask | WStyle_StaysOnTop | WX11BypassWM) +{ + info = new NETWinInfo( qt_xdisplay(), winId(), qt_xrootwin(), NET::WMState); + info->setDesktop( NETWinInfo::OnAllDesktops ); + hide(); + KWin::setState(winId(), NET::SkipTaskbar | NET::SkipPager); + setCaption("kooldock xosd window"); +} + +xosd::~xosd() +{ +} + +void xosd::setColor(QString color) +{ + fontColor=color; +} + +void xosd::setShadowColor(QString color) +{ + shadowColor=color; +} + +void xosd::setOrientation(int orientation, int w, int mh) +{ + fOrientation=orientation; + dw=w; + rdh=mh; + if (fCleaner==1) + { + //font is set, so program can get its height to prepare background buffer + QFontMetrics *metrics = new QFontMetrics(f); + h = metrics->height(); + + bgBuffer = QPixmap(dw, h); + maskBuffer = QPixmap(dw, h, true); + bgBuffer = QPixmap::grabWindow(qt_xrootwin(), 0, 0, dw, h); + lastX=0; + lastY=0; + } + +} + +//Enables/disables dynamic background +void xosd::setClear(int nClean) +{ + fCleaner = nClean; +} + +void xosd::setShadowOffset(int off) +{ + shadowOffset=off; +} + +void xosd::setText(QString t) +{ + //setMask(QRegion(0,0,0,0)); + // NOTICE: it appears that with WX11BypassWM, resize() doesn't flick the widget anymore :) + // so, setMask() is no more needed. + // -- Matias + resize(0,0); + text = t; + QFontMetrics *metrics = new QFontMetrics(f); + w = metrics->width(text); + w = w + shadowOffset + 5; // 5 pixels more + h = metrics->height(); + yOffset = metrics->height()-metrics->descent(); + update(); +} + +void xosd::setFont(QString font) +{ + f.setFamily(font); +} + +void xosd::setItalic() +{ + f.setItalic(TRUE); +} + +void xosd::setBold() +{ + f.setBold(TRUE); +} + +void xosd::setSize(int size) +{ + f.setPointSize(size); + fontSize = size; +} + +/*int xosd::w() +{ + QFontMetrics *metrics = new QFontMetrics(f); + return (metrics->width(text) + shadowOffset + 5); + +} + +int xosd::h() +{ + QFontMetrics *metrics = new QFontMetrics(f); + return metrics->height(); +}*/ + +void xosd::paintEvent(QPaintEvent *) +{ + int i, j; + + resize(w,h); + + QPixmap pm(size()); + QBitmap bm(size()); + QPainter p; + + //Drawing text + p.begin(&pm, this); + if (fCleaner==1) + { + //Dynamic background - look cleaner + bitBlt(&pm, 0, 0, &bgBuffer, lastX, 0, w, h); + } + else + { + //One colour background - work faster + p.fillRect (rect(), QColor(shadowColor)); + } + + p.setPen( QColor(shadowColor) ); + p.setFont(f); + p.drawText(shadowOffset, yOffset + shadowOffset, text, AlignCenter); // draw shadow text + + // now, draw normal text + p.setPen( QColor(fontColor) ); + + p.drawText(1, yOffset, text, AlignCenter); // draw front text + + p.end(); + + //Drawing mask + p.begin(&bm, this); + // now we must draw the text with black color for making the mask + p.setPen( Qt::white ); + p.fillRect (rect(), Qt::black); + p.setFont(f); + for (i=-fCleaner;i<=fCleaner;i++) + { + for (j=-fCleaner;j<=fCleaner;j++) + { + p.drawText(shadowOffset+i, yOffset + shadowOffset+j, text, AlignCenter); // shadow + p.drawText(1+i, yOffset+j, text, AlignCenter); // front + } + } + p.end(); + bitBlt(this, 0, 0, &pm); // update the widget + if (fCleaner==1) bitBlt(&maskBuffer, 0, 0, &bm); + + info->setState(NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager, NETWinInfo::SkipTaskbar | NETWinInfo::SkipPager); + setMask(bm); +} + +void xosd::move2(int x, int y) +{ + + //bit block transfer don't work propertly with too less cursor position changes + if (abs(lastY-y)>2 || abs(lastX-x)>2) + { + if (fCleaner==1) + { + QPixmap tmpBuffer; + //window is not hidden + if (y!=rdh) + { + tmpBuffer = QPixmap::grabWindow(qt_xrootwin(), 0, y, dw, h); + if (lastY!=rdh) + { + //fill background covered with the text with cached version + if (fOrientation==0 ) //horizontal + { + bitBlt(&tmpBuffer, lastX, 0, &maskBuffer, 0, 0, w, h, Qt::AndROP);//copying part, which hides only the text + bitBlt(&bgBuffer, lastX, 0, &maskBuffer, 0, 0, w, h, Qt::NotAndROP);//so the background won't be covered by + bitBlt(&tmpBuffer, lastX, 0, &bgBuffer, lastX, 0, w, h, Qt::OrROP);//currently visible text. + } + if (fOrientation==1) //vertical + { + if (ylastY) + { + bitBlt(&tmpBuffer, lastX, lastY-y, &maskBuffer, 0, 0, w, h, Qt::AndROP); + bitBlt(&bgBuffer, lastX, 0, &maskBuffer, 0, 0, w, h, Qt::NotAndROP); + bitBlt(&tmpBuffer, lastX, lastY-y, &bgBuffer, lastX, 0, w, h, Qt::OrROP); + } + if (y>lastY && (y-lastY) +#endif + +#include +#include +#include +#include +#include + +#include +#include + +class xosd : public QWidget +{ +Q_OBJECT + public: + xosd(QWidget* parent=0, const char *name=0); + + virtual ~xosd(); + void setText(QString t); + void setFont(QString font); + void setItalic(); + void setBold(); + void setSize(int size); + void setColor(QString color); + void setShadowColor(QString color); + void setShadowOffset(int off); + void move2(int x, int y); + void setOrientation(int orientation, int w, int mh); + void setClear(int nClean); + int yOffset; + int w, h; + int fontSize; + int fontStyle; + QString fontFamily; + + private: + NETWinInfo *info; + QString text; + QFont f; + QString fontColor; + QString shadowColor; + int shadowOffset; + int fOrientation; + QPixmap bgBuffer; + int dw, rdh; + int lastX, lastY; + int fCleaner; + QPixmap maskBuffer; + + protected: + void paintEvent(QPaintEvent *); +}; +#endif // XOSD_H_ diff --git a/subdirs b/subdirs new file mode 100644 index 0000000..754582e --- /dev/null +++ b/subdirs @@ -0,0 +1,5 @@ +backgrounds +doc +icons +po +src