From e7495baff72166ad37010259e04c0a272d0898e8 Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 17 Feb 1999 11:06:40 +0000 Subject: [PATCH] 0.51.1 pre snapshot. Be careful, it may be buggy. It fixes some bugs though. --- AUTHORS | 9 +- BUGFORM | 2 +- BUGS | 2 - COPYING.OPL | 91 + ChangeLog | 39 + FAQ | 22 +- INSTALL | 61 +- Install | 11 +- MIRRORS | 8 + Makefile.am | 18 +- Makefile.in | 24 +- NEWS | 28 + README | 21 +- README.KDE | 10 +- TODO | 2 +- WINGs/ChangeLog | 15 + WINGs/Makefile.am | 17 +- WINGs/Makefile.in | 42 +- WINGs/Resources/Makefile.in | 4 +- WINGs/WINGs.h | 35 +- WINGs/WINGsP.h | 48 +- WINGs/WUtil.h | 16 +- WINGs/llist.c | 126 + WINGs/llist.h | 40 + WINGs/notification.c | 177 +- WINGs/testnot.c | 91 + WINGs/userdefaults.c | 12 +- WINGs/wbrowser.c | 431 +- WINGs/wcolorpanel.c | 5164 +++++++++-------- WINGs/wevent.c | 20 +- WINGs/wfilepanel.c | 245 +- WINGs/wfont.c | 6 + WINGs/widgets.c | 236 +- WINGs/wlist.c | 51 +- WINGs/wmfile.c | 62 +- WINGs/wpopupbutton.c | 12 +- WINGs/wscrollview.c | 2 +- WINGs/wslider.c | 2 + WINGs/wsplitview.c | 2 +- WINGs/wtest.c | 4 +- WINGs/wtextfield.c | 189 +- WINGs/wview.c | 67 +- WPrefs.app/Focus.c | 6 +- WPrefs.app/Icons.c | 2 + WPrefs.app/Makefile.am | 14 +- WPrefs.app/Makefile.in | 21 +- WPrefs.app/Menu.c | 44 +- WPrefs.app/MouseSettings.c | 43 +- WPrefs.app/NoMenuAlert.c | 127 + WPrefs.app/Paths.c | 3 + WPrefs.app/Preferences.c | 4 + WPrefs.app/README | 11 +- WPrefs.app/TexturePanel.c | 5 +- WPrefs.app/WPrefs.c | 32 +- WPrefs.app/WPrefs.h | 4 +- WPrefs.app/WPrefs.tiff | Bin 2550 -> 3674 bytes WPrefs.app/WPrefs.xpm | 659 ++- WPrefs.app/WindowHandling.c | 115 +- WPrefs.app/editmenu.c | 668 +++ WPrefs.app/editmenu.h | 40 + WPrefs.app/main.c | 4 +- WPrefs.app/po/Makefile.am | 18 +- WPrefs.app/po/Makefile.in | 22 +- WPrefs.app/po/README | 1 + WPrefs.app/po/cs.po | 363 +- WPrefs.app/po/ko.po | 2905 +++++----- WPrefs.app/po/zh_TW.Big5.po | 1455 +++++ WPrefs.app/tiff/Makefile.in | 4 +- WPrefs.app/xpm/Makefile.in | 4 +- WindowMaker.lsm.in | 2 +- WindowMaker/Backgrounds/Makefile.in | 4 +- WindowMaker/Defaults/Makefile.am | 11 +- WindowMaker/Defaults/Makefile.in | 15 +- WindowMaker/Defaults/WindowMaker | 5 +- WindowMaker/Defaults/WindowMaker.in | 5 +- WindowMaker/IconSets/Makefile.am | 2 +- WindowMaker/IconSets/Makefile.in | 6 +- WindowMaker/Icons/Makefile.in | 4 +- WindowMaker/Icons/README | 2 +- WindowMaker/Makefile.am | 1 + WindowMaker/Makefile.in | 6 +- WindowMaker/Pixmaps/Makefile.in | 4 +- WindowMaker/README | 2 +- WindowMaker/Styles/Makefile.in | 4 +- WindowMaker/Themes/Checker.themed/Makefile.in | 4 +- WindowMaker/Themes/Makefile.am | 2 +- WindowMaker/Themes/Makefile.in | 6 +- WindowMaker/Themes/Night.themed/Makefile.in | 4 +- WindowMaker/Themes/SteelBlueSilk.style | 47 + WindowMaker/menu | 18 +- WindowMaker/menu.ca | 18 +- WindowMaker/menu.dk | 18 +- WindowMaker/menu.el | 20 +- WindowMaker/menu.es | 16 +- WindowMaker/menu.fi | 16 +- WindowMaker/menu.fr | 18 +- WindowMaker/menu.he | 16 +- WindowMaker/menu.hr | 16 +- WindowMaker/menu.hu | Bin 7800 -> 7835 bytes WindowMaker/menu.ja | 16 +- WindowMaker/menu.ko | 22 +- WindowMaker/menu.no | 16 +- WindowMaker/menu.pt | 20 +- WindowMaker/menu.se | 18 +- WindowMaker/menu.sl | 18 +- WindowMaker/menu.tr | 18 +- WindowMaker/menu.zh_TW.Big5 | 205 + WindowMaker/plmenu | 14 +- WindowMaker/plmenu.fr | 12 +- WindowMaker/plmenu.hr | 12 +- acconfig.h | 9 +- acinclude.m4 | 176 + aclocal.m4 | 177 + config.guess | 174 +- config.sub | 52 +- configure | 1658 +++--- configure.in | 293 +- doc/Makefile.in | 4 +- doc/geticonset.1x | 11 +- doc/getstyle.1x | 27 +- doc/seticons.1x | 7 + doc/setstyle.1x | 22 +- doc/wdwrite.1x | 9 +- doc/wmaker.1x | 13 +- doc/wmsetbg.1x | 62 +- docklib-0.0.tar.gz | Bin 31330 -> 0 bytes docklib-0.2.tar.gz | Bin 0 -> 73928 bytes po/Makefile.am | 16 +- po/Makefile.in | 20 +- po/README | 1 + po/cs.po | 512 +- po/ko.po | 2675 ++++----- po/pl.po | 1458 +++-- po/ru.po | 627 +- po/zh_TW.Big5.po | 1380 +++++ src/Makefile.am | 11 +- src/Makefile.in | 10 +- src/WindowMaker.h | 9 +- src/actions.c | 93 +- src/client.c | 5 +- src/config.h | 23 +- src/config.h.in | 19 +- src/defaults.c | 43 +- src/dialog.c | 47 +- src/dock.c | 16 +- src/event.c | 298 +- src/framewin.c | 32 +- src/framewin.h | 2 + src/icon.c | 31 +- src/kwm.c | 2 +- src/main.c | 20 +- src/menu.c | 17 +- src/misc.c | 9 +- src/moveres.c | 909 ++- src/openlook.c | 2 - src/placement.c | 26 +- src/resources.c | 4 +- src/rootmenu.c | 116 +- src/screen.c | 1 - src/screen.h | 2 + src/session.c | 4 +- src/shutdown.c | 2 +- src/stacking.c | 2 +- src/stacking.h | 1 - src/startup.c | 100 +- src/superfluous.c | 7 +- src/switchmenu.c | 4 - src/wconfig.h | 28 +- src/wconfig.h.in | 28 +- src/window.c | 190 +- src/window.h | 11 +- src/winmenu.c | 16 +- src/winspector.c | 29 +- src/workspace.c | 6 +- test/Makefile.in | 4 +- util/Makefile.am | 22 +- util/Makefile.in | 25 +- util/README | 1 + util/getstyle.c | 12 +- util/wmaker.inst.in | 17 +- util/wmsetbg.c | 180 +- wmlib/Makefile.in | 4 +- wmlib/WMaker.h | 7 + wrlib/Makefile.am | 6 +- wrlib/Makefile.in | 10 +- wrlib/load.c | 60 +- wrlib/nxpm.c | 3 +- wrlib/testgrad.c | 9 +- wrlib/wraster.h | 15 +- 189 files changed, 16952 insertions(+), 9682 deletions(-) create mode 100644 COPYING.OPL create mode 100644 WINGs/llist.c create mode 100644 WINGs/llist.h create mode 100644 WINGs/testnot.c create mode 100644 WPrefs.app/NoMenuAlert.c create mode 100644 WPrefs.app/editmenu.c create mode 100644 WPrefs.app/editmenu.h create mode 100644 WPrefs.app/po/zh_TW.Big5.po create mode 100644 WindowMaker/Themes/SteelBlueSilk.style create mode 100644 WindowMaker/menu.zh_TW.Big5 create mode 100644 acinclude.m4 delete mode 100644 docklib-0.0.tar.gz create mode 100644 docklib-0.2.tar.gz create mode 100644 po/zh_TW.Big5.po diff --git a/AUTHORS b/AUTHORS index 20d68caa..112a3f7d 100644 --- a/AUTHORS +++ b/AUTHORS @@ -33,6 +33,9 @@ Text input field, 15bpp support George Clernon bug fix in browser widget +Omar Cornut / Zoop +SteelBlueSilk theme + Sylvain CORRE bug fix for MkLinux/PPC @@ -65,7 +68,7 @@ Better detection of gfx libraries, added IconTitleColor/IconTitleBack Greg Hayes Twisted miniaturization animation -Alban Hertroys +Alban Hertroys WINGs color panel HIDEKI Fujimoto @@ -193,6 +196,10 @@ xv.tiff David Wang edge resistance, 8bpp balloon bug fix, other 8bpp related fixes +Franck Wolff +various fixes/enhancements to WINGs + + Yoav Yerushalmi Fixed -visualid for screens that can do multiple depths. Another fix in libproplist. Chooses best depth in screen. diff --git a/BUGFORM b/BUGFORM index eb678836..cbbda9ec 100644 --- a/BUGFORM +++ b/BUGFORM @@ -4,7 +4,7 @@ If you find a bug please fill this form and send it to -developers@windowmaker.org +developers@windowmaker.org Please, USE THIS FORM!!! You can also report a bug in the WWW bug tracker at http://windowmaker.org/cgi-bin/bugs or by sending this report diff --git a/BUGS b/BUGS index 7779533e..13b1e079 100644 --- a/BUGS +++ b/BUGS @@ -1,8 +1,6 @@ - wmaker will not stop managing a screen even if another window manager requests that, through the ICCCM 2.0 manager selection stuff - the app menu does not update after a style/theme change without restart. -- during startup, transient windows should be miniaturized with their owners - not in their own icons - stacking code is buggy (or XFree is buggy) - save session doesnt work on some platforms (Alpha and Sparc) - texture pixmaps are being incorrectly freed somewhere. Either diff --git a/COPYING.OPL b/COPYING.OPL new file mode 100644 index 00000000..15d65187 --- /dev/null +++ b/COPYING.OPL @@ -0,0 +1,91 @@ + + OpenContent License (OPL) + Version 1.0, July 14, 1998. + + This document outlines the principles underlying the OpenContent + (OC) movement and may be redistributed provided it remains + unaltered. For legal purposes, this document is the license under + which OpenContent is made available for use. + + The original version of this document may be found at + http://www.opencontent.org/opl.shtml + + LICENSE + + Terms and Conditions for Copying, Distributing, and Modifying + + Items other than copying, distributing, and modifying the Content + with which this license was distributed (such as using, etc.) are + outside the scope of this license. + + 1. You may copy and distribute exact replicas of the OpenContent + (OC) 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 OC a copy of this + License along with the OC. You may at your option charge a fee for + the media and/or handling involved in creating a unique copy of the + OC for use offline, you may at your option offer instructional + support for the OC in exchange for a fee, or you may at your option + offer warranty in exchange for a fee. You may not charge a fee for + the OC itself. You may not charge a fee for the sole service of + providing access to and/or use of the OC via a network (e.g. the + Internet), whether it be via the world wide web, FTP, or any other + method. + + 2. You may modify your copy or copies of the OpenContent or any + portion of it, thus forming works based on the Content, 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 content to carry prominent notices + stating that you changed it, the exact nature and content of the + changes, 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 OC or any part + thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License, unless otherwise permitted + under applicable Fair Use law. + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the OC, 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 OC, 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. Exceptions are made to this requirement to release + modified works free of charge under this license only in compliance + with Fair Use law where applicable. + + 3. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to copy, + distribute or modify the OC. These actions are prohibited by law if + you do not accept this License. Therefore, by distributing or + translating the OC, or by deriving works herefrom, you indicate + your acceptance of this License to do so, and all its terms and + conditions for copying, distributing or translating the OC. + + NO WARRANTY + + 4. BECAUSE THE OPENCONTENT (OC) IS LICENSED FREE OF CHARGE, THERE + IS NO WARRANTY FOR THE OC, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS + AND/OR OTHER PARTIES PROVIDE THE OC "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 OF USE OF THE OC IS WITH YOU. + SHOULD THE OC PROVE FAULTY, INACCURATE, OR OTHERWISE UNACCEPTABLE + YOU ASSUME THE COST OF ALL NECESSARY REPAIR OR CORRECTION. + + 5. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY + MIRROR AND/OR REDISTRIBUTE THE OC 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 OC, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. diff --git a/ChangeLog b/ChangeLog index 41853be1..04870532 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,40 @@ +Changes since version 0.51.0: +............................. + +- icon explosion is stopped when clicking on anywhere +- fixed dont set xset stuff option in WPrefs +- fixed menu title messup in WPrefs +- fixed WPrefs message dialogs for invalid menus +- fixed workspace back setting in all screens +- fixed WorkspaceSpecificBack / wmsetbg +- added WindozeCycle patch (being rewritten) +- cleaned up focus/unfocus state transitions +- made WPrefs more robust +- fixed locale file (po) installation stuff +- fixed focus loss when dragging window across workspaces +- fixed workspace baby boom with nextworkspacekey +- removed ignore_next_unmap kluge +- install defaults data in /usr/local/etc +- added menu for miniwindow +- fixed remove resizebar from shaded window +- rewrote library/header search code in configure +- rewrote window move/edge resistance code +- added window border resistance +- changed EdgeResistance option to only YES/NO +- added workaround for glibc bug in sscanf("", bla, bla) +- hopefully fixed WM_COLORMAP_WINDOWS crash bug +- fixed searching of localized menus +- fixed --help option +- fixed handling of docked apps with . in their instance names +- RSupportedFileFormats() in wrlib will now return a static buffer +- fixed bug in StartHidden +- a little faster startup +- will rearrange icons after moving an icon if autoarrangeicons +- fixed icon overlap bug +- fixed crash with internal dialogs and multi-heads +- added standard colormap support to wrlib (taken from libXmu sources) +- fixed memory leak in attribute panel + Changes since version 0.50.2: ............................. @@ -35,6 +72,8 @@ Changes since version 0.50.2: - fixed bug in start maximized - added _WINDOWMAKER_NOTICEBOARD protocol - added docklib +- updated utility parameter format to GNU standards +- removed libPropList from distribution and merged with GNOME one Changes since version 0.50.1: ............................. diff --git a/FAQ b/FAQ index af233181..f267deb7 100644 --- a/FAQ +++ b/FAQ @@ -95,11 +95,13 @@ Summary of Contents: 5.6 What other apps exist for the dock? 5.7 How do I get an appicon for rxvt so I can dock it? 5.8 How do I get different icons for rxvt's (or xterms) running different - programs? + programs? 5.9 How do I launch multiple instances of XTerm from one appicon? 5.10 How do I allow Alt+# to work in an rxvt session? (with irc for example) 5.11 Window Maker breaks scilab + 5.12 Netscape icons show up in black and white + 5.13 Snow flakes from xsnow don't acumulate on titlebars! 6 - Programming 6.1 How do I get a normal X application to produce an appicon? @@ -1212,6 +1214,24 @@ with in routines/xsci/jpc_SGraph.c +5.12 Netscape shows black and white icons +---------------------------------- + +This is because Netscape uses monochrome icons when running under olwm +and you are using the OPEN LOOK emulation option. If you do not use any XView +apps anyway, recompile Window Maker without the --enable-openlook option. +If you need OPEN LOOK emulation, you will have to get used to the monochrome +icons or change then manually in the Attributes panel for each window. + + +5.13 Snow flakes from xsnow don't acumulate on titlebars! +---------------------------------- + +Because of the way xsnow is coded, it seems that it can't "see" +windows with the SaveUnder attribute turned on. So, if snow +accumulation on windows is vital for you, disable SaveUnders in +WPrefs, in the advanced options section. + -=-=-=-=-=-=- Programming: diff --git a/INSTALL b/INSTALL index 2797cf18..91bc05e0 100644 --- a/INSTALL +++ b/INSTALL @@ -66,11 +66,11 @@ The following is required to build Window Maker: Install it before building Window Maker. - autoconf, automake and libtool - These tools are not needed, but IF you have one or + These tools are NOT needed, but IF you have one or more of them installed, make sure you have ALL of the following with exactly these versions: - autoconf 2.12 - automake 1.3 + autoconf 2.13 + automake 1.4 libtool 1.2 If you have a different version, disable them by temporarily renaming them to something else or uninstalling them from your @@ -116,7 +116,7 @@ might work too. - GNU xgettext If you want to use translated messages, you will need GNU gettext. Other versions of gettext are not compatible and will not work. - Get the GNU version from ftp://prep.ai.mit.edu + Get the GNU version from ftp://ftp.gnu.org Most of these can be get from ftp.uu.net/pub/graphics @@ -135,6 +135,16 @@ support compiled in. To get a list of other options, run ./configure --help +--with-libs-from + specify additional paths for libraries to be searched. + The -L flag must precede each path, like: + --with-libs-from=-L/opt/libs -L/usr/local/lib + +--with-incs-from + specify additional paths for header files to be searched. + The -I flag must precede each paths, like: + --with-incs-from=-I/opt/headers -I/usr/local/include + --enable-kanji support to display Kanji characters, Korean, Chinese and other languagues that require special characters. @@ -202,6 +212,11 @@ To get a list of other options, run ./configure --help PLATFORM SPECIFIC NOTES: ======================== + +- DEC/Alpha machines + You might need to pass the --disable-shm flag to configure, like + ./configure --disable-shm + - SCO Unix - run configure like CFLAGS="-belf -DANSICPP" ./configure @@ -210,8 +225,10 @@ PLATFORM SPECIFIC NOTES: CPP_PATH="gcc -E -x c" ./configure Sun's cpp lacks some features needed by Window Maker and it can cause problems when parsing the config files. - You also might need to use the --with-gfx-libs and --with-gfx-incs + You also might need to use the --with-libs-from and --with-incs-from to supply the directory where libtiff is located. + Someone mailed me that you also must make /usr/local/lib be the + first path in LD_LIBRARY_PATH to make it work. If you have a Ultra Creator 3D or some other machine with high-end graphics, be sure to start the X server with the default visual @@ -221,17 +238,21 @@ PLATFORM SPECIFIC NOTES: - GNU/Linux in general Make sure you have /usr/local/lib in /etc/ld.so.conf and that you run ldconfig after installing. + Uninstall any packaged version of Window Maker before installing a new + version. - RedHat GNU/Linux RedHat systems have several annoying problems. If you use it, be sure to follow the steps below or Window Maker will not work: + * if you installed the Window Maker that comes with RedHat, uninstall + it before upgrading; + * make sure you don't have the LANG and LINGUAS environment variables set to en_RN; * make sure you have /usr/local/bin in your PATH environment - variable, as for some mysterious reason the folks at RedHat did not - include it in the default configuration files in RH 5.x; + variable; * make sure you have /usr/local/lib in /etc/ld.so.conf before running ldconfig; @@ -249,6 +270,15 @@ PLATFORM SPECIFIC NOTES: link from /usr/include/X11 to /usr/X11R6/include/X11 (if not, type ln -s /usr/X11R6/include/X11 /usr/include/X11 ) + * make sure you have /lib/cpp pointing to the cpp program + + If you have any doubts in doing any of the stuff above, please + don't exitate to contact the RedHat user support. They will + kindly answer to all your questions regarding their system. + They also know much more about their own system than us + (we don't use RedHat). + + - PowerPC MkLinux You will need to have the latest version of Xpmac. Older versions seem to have bugs that cause the system to hang. @@ -364,9 +394,14 @@ WPrefs.app Example: ./configure --prefix=/home/jshmoe --with-appspath=/home/jshmoe/GNUstep/Apps -Then make /home/jshmoe/bin be included in your search path and run +Then make /home/jshmoe/bin be included in your search PATH, add +/home/jshmoe/lib to your LD_LIBRARY_PATH environment variable and run bin/wmaker.inst +Of course, /home/jshmoe is supposed to be replaced with your actual home +directory path. + + UPGRADING ========= @@ -395,8 +430,8 @@ configure: error: libtool configure failed remove the --no-reexec option from aclocal.m4 and libPropList/aclocal.m4 and reconfigure Also make sure the autoconf and automake versions you have installed are: -autoconf 2.12 -automake 1.3 +autoconf 2.13 +automake 1.4 libtool 1.2 Note that it must not be libtool 1.2b, it must be libtool 1.2, @@ -412,11 +447,11 @@ somewhere else in this file. Delete config.cache, then rerun configure adding the following options to configure (among the other options you use): ---with-gfx-libs="-L/usr/local/lib" ---with-gfx-incs="-I/usr/local/include -I/usr/local/include/tiff" +--with-libs-from="-L/usr/local/lib" +--with-incs-from="-I/usr/local/include -I/usr/local/include/tiff" Put the paths where your graphic libs and their corresponding header files are located. You can put multiple paths in any of these options, as the example -of --with-gfx-incs shows. Just put a space between them. +of --with-incs-from shows. Just put a space between them. == configure doesn't detect libXpm. diff --git a/Install b/Install index ea9c153b..9a42b1d3 100755 --- a/Install +++ b/Install @@ -42,6 +42,11 @@ echo echo "Please read the INSTALL and FAQ files before e-mailing " echo "questions. (we are lazy to reply questions already answered " echo "there as much as you are lazy to read these ;) " +echo +perai +echo +echo "Did you install libPropList? If not, please install it now." +echo perai echo "Did you read the INSTALL file?" echo -n " " @@ -170,7 +175,7 @@ if [ "$NLS" = "y" -o "$NLS" = "Y" ]; then continue fi - if [ "$MB" = "" -a "$i" = "ja" -o "$i" = "kr" ]; then + if [ "$MB" = "" -a "$i" = "ja" -o "$i" = "ko" ]; then echo echo "A language you selected needs multi-byte character support" echo "Do you want to enable it?" @@ -217,8 +222,6 @@ while [ $done = 0 ]; do echo echo " $PREFIX/bin must be in the PATH environment variable" echo "of all users who will use Window Maker" - echo - echo " Make sure $PREFIX/lib is in the /etc/ld.so.conf file" perai done @@ -259,6 +262,8 @@ echo "--------------------------" perform make install if [ `uname -s` = "Linux" ]; then + echo + echo " Make sure $PREFIX/lib is in the /etc/ld.so.conf file" /sbin/ldconfig fi diff --git a/MIRRORS b/MIRRORS index 8b26a3c9..81e7468a 100644 --- a/MIRRORS +++ b/MIRRORS @@ -57,12 +57,20 @@ http://master.debian.org/~mmagallo/packages/wmaker/ RedHat GNU/Linux (RPM) ---------------------- +For Intel: + Contact: Jim Knoble Sites: ftp://ftp.windowmaker.org/pub/beta/compiled/linux/rpms/ ftp://ftp.redhat.com/pub/contrib/SRPMS/ ftp://ftp.redhat.com/pub/contrib/i386/ +For Alpha: + +Contact: Peter Petrakis +Site: +http://math.stcc.mass.edu/petrakis/downloads/X11 + HP-UX ----- diff --git a/Makefile.am b/Makefile.am index 31f9afb4..01b775eb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,15 +2,23 @@ SUBDIRS = wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc -EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h\ +EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS COPYING.OPL \ + Install acconfig.h\ mkpatch README.KDE README.GNOME WindowMaker.lsm.in\ - docklib-0.0.tar.gz + docklib-0.2.tar.gz - -windowmaker.lsm: +WindowMaker.lsm: WindowMaker.lsm.in size=`wc -c $(distdir).tar.gz|cut -d\ -f1`;\ size=`echo scale=2\;$$size/1048576|bc`;\ sed -e "s/VERSION/"$(VERSION)"/" \ -e "s/DATE/`date +%d%b%Y|tr a-z A-Z`/"\ -e "s/SIZE/$$size M/"\ - WindowMaker.lsm.in > WindowMaker.lsm + WindowMaker.lsm.in > WindowMaker-$(VERSION).lsm + +dist-hook: + touch `find -name configure.in -print` + touch `find -name aclocal.m4 -print` + touch `find -name Makefile.am -print` + touch `find -name Makefile.in -print` + touch `find -name configure -print` + diff --git a/Makefile.in b/Makefile.in index 07c39688..2437fcb8 100644 --- a/Makefile.in +++ b/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -89,15 +89,15 @@ wprefsdir = @wprefsdir@ SUBDIRS = wrlib WINGs src util po WindowMaker wmlib test WPrefs.app doc -EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS Install acconfig.h mkpatch README.KDE README.GNOME WindowMaker.lsm.in docklib-0.0.tar.gz +EXTRA_DIST = TODO BUGS BUGFORM FAQ FAQ.I18N MIRRORS COPYING.OPL Install acconfig.h mkpatch README.KDE README.GNOME WindowMaker.lsm.in docklib-0.2.tar.gz ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ./src/config.h CONFIG_CLEAN_FILES = DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ -Makefile.in NEWS TODO acconfig.h aclocal.m4 config.guess config.sub \ -configure configure.in install-sh ltconfig ltmain.sh missing \ +Makefile.in NEWS TODO acconfig.h acinclude.m4 aclocal.m4 config.guess \ +config.sub configure configure.in install-sh ltconfig ltmain.sh missing \ mkinstalldirs src/config.h.in src/stamp-h.in @@ -114,7 +114,7 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status -$(ACLOCAL_M4): configure.in +$(ACLOCAL_M4): configure.in acinclude.m4 cd $(srcdir) && $(ACLOCAL) config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) @@ -297,6 +297,7 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook info-am: info: info-recursive dvi-am: @@ -369,13 +370,20 @@ installdirs mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean -windowmaker.lsm: +WindowMaker.lsm: WindowMaker.lsm.in size=`wc -c $(distdir).tar.gz|cut -d\ -f1`;\ size=`echo scale=2\;$$size/1048576|bc`;\ sed -e "s/VERSION/"$(VERSION)"/" \ -e "s/DATE/`date +%d%b%Y|tr a-z A-Z`/"\ -e "s/SIZE/$$size M/"\ - WindowMaker.lsm.in > WindowMaker.lsm + WindowMaker.lsm.in > WindowMaker-$(VERSION).lsm + +dist-hook: + touch `find -name configure.in -print` + touch `find -name aclocal.m4 -print` + touch `find -name Makefile.am -print` + touch `find -name Makefile.in -print` + touch `find -name configure -print` # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. diff --git a/NEWS b/NEWS index e00ac06a..a8932ba6 100644 --- a/NEWS +++ b/NEWS @@ -3,6 +3,34 @@ NEWS for veteran Window Maker users ----------------------------------- +--- 0.51.1 + +KDE Application Menu script +--------------------------- + +wkdemenu.sh is a converter from KDE application menu structures to wmaker +menu that can be used as a piped menu. Look wkdemenu.sh for how to use it. + + +Window Edge Resistance +---------------------- + +Window edge resistance was now added. No, feature freeze hasn't been +removed. Its just part of the edge resistance rewrite ;) + + +New Theme +--------- + +Added SteelBlueSilk theme + +Installation Path Changes +------------------------- + +Default configuration data installed in /usr/local/etc/WindowMaker +or $(sysconfdir)/WindowMaker + + --- 0.51.0 Window Maker has become a GNU program (part of the GNU Project). diff --git a/README b/README index 4ce4a078..3f5d1357 100644 --- a/README +++ b/README @@ -1,9 +1,8 @@ - GNU Window Maker - X11 Window Manager - + GNU Window Maker + X11 Window Manager @@ -49,8 +48,8 @@ supposed to be relatively fast and small, feature rich, easy to configure and easy to use, with a simple and elegant appearance borrowed from NEXTSTEP(tm). Window Maker was designed keeping integration with GNUstep in mind and is the -"official" window manager for it. It is also, the window manager for the -GNU Project. Read more about GNUstep further on this file. +"official" window manager for it. It is also part of the GNU project +(www.gnu.org) Read more about GNUstep further on this file. Hints (information given by applications to integrate well with the window manager) for Motif(tm), OPEN LOOK(tm), KDE and GNOME are also supported. @@ -138,9 +137,9 @@ Mailing List ============ There is a mailing list for discussing Window Maker at -wmaker@linuxcenter.com To subscribe to it, send a message containing: +wm-user@windowmaker.org To subscribe to it, send a message containing: subscribe -in the body of the message to wmaker-request@linuxcenter.com +in the subject of the message to wm-user-request@windowmaker.org If you got a problem, ask there (after reading the docs, of course). The people there is more likely to be able to answer your questions than we are. @@ -210,8 +209,8 @@ To enable, use --enable-openlook when doing the configure. Note that not everything is implemented. Implemented stuff include decoration hints and the push-pin. Not implemented -stuff include _SUN_WINDOW_STATE (the compose led state stuff), header (not -sure what's it) and footer strings. +stuff include _SUN_WINDOW_STATE (the compose led state stuff), drag and drop +interest stuff, header (not sure what's it) and footer strings. Please give me feedback if something doesn't work. If the feature is already implemented, but is not working because of a bug, I'll try to @@ -328,6 +327,10 @@ Copyrights & Disclaimers Window Maker is copyrighted by Alfredo K. Kojima and is licensed through the GNU General Public License. Read the COPYING file for the complete license. +The icons that are distributed with this program and were made by Marco van +Hylckama Vlieg are licensed through the OpenContent License. Read the +COPYING.OPL file for the complete license. + NeXT, OpenStep and NEXTSTEP are a trademarks of NeXT Computer, Inc. All other trademarks are property of their respective owners. diff --git a/README.KDE b/README.KDE index 16fca368..8bfaffde 100644 --- a/README.KDE +++ b/README.KDE @@ -86,9 +86,11 @@ Enhancing Integration Window Maker adds some extensions to KDE's messaging stuff, so you can run Window Maker specific commands from places like kpanel, krootwm or even -kwmcom. If you want support for these in KDE, please go nag your favorite KDE -developers, not us. The added stuff are the following kwm like commands: +kwmcom. Recently KDE developers have kindly added support for these extensions +in the more recent KDE versions from CVS. The added stuff are the following +kwm like commands: +wm:wmaker - select Window Maker support mode wmaker:info - show info panel wmaker:legal - show legal panel wmaker:arrangeIcons - arrange icons @@ -124,3 +126,7 @@ windows present, restart them. * Wmaker opens windows by default under/over the panel, when the panel is at top or left of screen. Use the GUI configuration tool WPrefs to change this. + +* Some commands, such as cascade windows and rearrange windows are not +yet implemented. + diff --git a/TODO b/TODO index 052db696..bde63d4c 100644 --- a/TODO +++ b/TODO @@ -13,7 +13,7 @@ Do ASAP: Need to do: =========== - allow user to select/restore default root menu from wprefs -- fix and include the windoze cycle window patch +- fix windoze cycle window patch - support for X11R6.4 extension for getting extra visual info in wrlib's automatic best context guessing - docklet to control AccessX (keyboard accessibility) functions diff --git a/WINGs/ChangeLog b/WINGs/ChangeLog index 2fe8bafd..43c2bbbc 100644 --- a/WINGs/ChangeLog +++ b/WINGs/ChangeLog @@ -1,3 +1,18 @@ +changes since wmaker 0.51.0: +............................ + +- applied c++ compat header patch from Martynas Kunigelis +- added WMSetTextFieldBeveled() + +changes since wmaker 0.50.1: +............................ + +- fixed various bugs +- added patch from Franck Wolff , with + many fixes and enhancements +- added notification queues, asynchronous notifications etc. +- added WMSetBrowserDoubleAction() +- fixed list double click action changes since wmaker 0.50.2: ............................ diff --git a/WINGs/Makefile.am b/WINGs/Makefile.am index 5609767c..4a7568e8 100644 --- a/WINGs/Makefile.am +++ b/WINGs/Makefile.am @@ -6,7 +6,7 @@ SUBDIRS = Resources LIBLIST= $(top_builddir)/wrlib/libwraster.la\ - @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ \ + @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ \ -lm @LIBPL@ @@ -18,7 +18,8 @@ lib_LIBRARIES = libWINGs.a include_HEADERS = WINGs.h WUtil.h WINGsP.h -noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel +noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel \ + testnot testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h @@ -42,6 +43,10 @@ testcolorpanel_SOURCES = testcolorpanel.c testcolorpanel_LDADD = libWINGs.a $(LIBLIST) +testnot_SOURCES = testnot.c + +testnot_LDADD = libWINGs.a $(LIBLIST) + wmquery_SOURCES = wmquery.c @@ -55,6 +60,8 @@ libWINGs_a_SOURCES = \ WINGs.h \ WINGsP.h \ configuration.c \ + llist.h \ + llist.c \ international.c \ notification.c \ selection.c \ @@ -90,11 +97,7 @@ libWINGs_a_SOURCES = \ memory.c \ usleep.c -## -## Find a better way than $(GFXFLAGS) to inform widgets.c wich of -## tiff or xpm images should be used INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/src \ - -DRESOURCE_PATH=\"$(datadir)/WINGs\" $(GFXFLAGS) -DDEBUG \ - @XCFLAGS@ + -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG diff --git a/WINGs/Makefile.in b/WINGs/Makefile.in index 61532b37..107aaf3c 100644 --- a/WINGs/Makefile.in +++ b/WINGs/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -91,7 +91,7 @@ AUTOMAKE_OPTIONS = no-dependencies SUBDIRS = Resources -LIBLIST = $(top_builddir)/wrlib/libwraster.la @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm @LIBPL@ +LIBLIST = $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ -lm @LIBPL@ #lib_LTLIBRARIES = libWINGs.la @@ -102,7 +102,8 @@ lib_LIBRARIES = libWINGs.a include_HEADERS = WINGs.h WUtil.h WINGsP.h -noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel +noinst_PROGRAMS = wtest wmquery wmfile fontl testmywidget testcolorpanel testnot + testmywidget_SOURCES = testmywidget.c mywidget.c mywidget.h @@ -126,6 +127,10 @@ testcolorpanel_SOURCES = testcolorpanel.c testcolorpanel_LDADD = libWINGs.a $(LIBLIST) +testnot_SOURCES = testnot.c + +testnot_LDADD = libWINGs.a $(LIBLIST) + wmquery_SOURCES = wmquery.c wmquery_LDADD = libWINGs.a $(LIBLIST) @@ -133,10 +138,10 @@ wmquery_LDADD = libWINGs.a $(LIBLIST) EXTRA_DIST = logo.xpm # wbutton.c -libWINGs_a_SOURCES = WINGs.h WINGsP.h configuration.c international.c notification.c selection.c userdefaults.c wapplication.c wbrowser.c wbutton.c wcolor.c wcolorpanel.c wcolorwell.c wevent.c wfilepanel.c wframe.c wfont.c wfontpanel.c widgets.c wlabel.c wlist.c wmisc.c wpanel.c wpixmap.c wpopupbutton.c wscroller.c wscrollview.c wslider.c wsplitview.c wtextfield.c wwindow.c wview.c error.c findfile.c hashtable.c memory.c usleep.c +libWINGs_a_SOURCES = WINGs.h WINGsP.h configuration.c llist.h llist.c international.c notification.c selection.c userdefaults.c wapplication.c wbrowser.c wbutton.c wcolor.c wcolorpanel.c wcolorwell.c wevent.c wfilepanel.c wframe.c wfont.c wfontpanel.c widgets.c wlabel.c wlist.c wmisc.c wpanel.c wpixmap.c wpopupbutton.c wscroller.c wscrollview.c wslider.c wsplitview.c wtextfield.c wwindow.c wview.c error.c findfile.c hashtable.c memory.c usleep.c -INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/src -DRESOURCE_PATH=\"$(datadir)/WINGs\" $(GFXFLAGS) -DDEBUG @XCFLAGS@ +INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/src -DRESOURCE_PATH=\"$(datadir)/WINGs\" @HEADER_SEARCH_PATH@ -DDEBUG mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../src/config.h @@ -152,13 +157,13 @@ X_CFLAGS = @X_CFLAGS@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ libWINGs_a_LIBADD = -libWINGs_a_OBJECTS = configuration.o international.o notification.o \ -selection.o userdefaults.o wapplication.o wbrowser.o wbutton.o wcolor.o \ -wcolorpanel.o wcolorwell.o wevent.o wfilepanel.o wframe.o wfont.o \ -wfontpanel.o widgets.o wlabel.o wlist.o wmisc.o wpanel.o wpixmap.o \ -wpopupbutton.o wscroller.o wscrollview.o wslider.o wsplitview.o \ -wtextfield.o wwindow.o wview.o error.o findfile.o hashtable.o memory.o \ -usleep.o +libWINGs_a_OBJECTS = configuration.o llist.o international.o \ +notification.o selection.o userdefaults.o wapplication.o wbrowser.o \ +wbutton.o wcolor.o wcolorpanel.o wcolorwell.o wevent.o wfilepanel.o \ +wframe.o wfont.o wfontpanel.o widgets.o wlabel.o wlist.o wmisc.o \ +wpanel.o wpixmap.o wpopupbutton.o wscroller.o wscrollview.o wslider.o \ +wsplitview.o wtextfield.o wwindow.o wview.o error.o findfile.o \ +hashtable.o memory.o usleep.o AR = ar PROGRAMS = $(noinst_PROGRAMS) @@ -181,6 +186,9 @@ testcolorpanel_OBJECTS = testcolorpanel.o testcolorpanel_DEPENDENCIES = libWINGs.a \ $(top_builddir)/wrlib/libwraster.la testcolorpanel_LDFLAGS = +testnot_OBJECTS = testnot.o +testnot_DEPENDENCIES = libWINGs.a $(top_builddir)/wrlib/libwraster.la +testnot_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) @@ -195,8 +203,8 @@ DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = tar GZIP_ENV = --best -SOURCES = $(libWINGs_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES) $(testcolorpanel_SOURCES) -OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS) $(testcolorpanel_OBJECTS) +SOURCES = $(libWINGs_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES) $(testcolorpanel_SOURCES) $(testnot_SOURCES) +OBJECTS = $(libWINGs_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS) $(testcolorpanel_OBJECTS) $(testnot_OBJECTS) all: all-redirect .SUFFIXES: @@ -317,6 +325,10 @@ testcolorpanel: $(testcolorpanel_OBJECTS) $(testcolorpanel_DEPENDENCIES) @rm -f testcolorpanel $(LINK) $(testcolorpanel_LDFLAGS) $(testcolorpanel_OBJECTS) $(testcolorpanel_LDADD) $(LIBS) +testnot: $(testnot_OBJECTS) $(testnot_DEPENDENCIES) + @rm -f testnot + $(LINK) $(testnot_LDFLAGS) $(testnot_OBJECTS) $(testnot_LDADD) $(LIBS) + install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(includedir) diff --git a/WINGs/Resources/Makefile.in b/WINGs/Resources/Makefile.in index 644ddd3c..179a4139 100644 --- a/WINGs/Resources/Makefile.in +++ b/WINGs/Resources/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WINGs/WINGs.h b/WINGs/WINGs.h index fc033541..55c5c322 100644 --- a/WINGs/WINGs.h +++ b/WINGs/WINGs.h @@ -9,8 +9,12 @@ #define WINGS_H_VERSION 981220 - - +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ +#if 0 +} +#endif typedef unsigned long WMPixel; @@ -768,6 +772,10 @@ void WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment); void WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered); +void WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag); + +Bool WMGetTextFieldEnabled(WMTextField *tPtr); + void WMSetTextFieldEnabled(WMTextField *tPtr, Bool flag); void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag); @@ -776,8 +784,11 @@ void WMSelectTextFieldRange(WMTextField *tPtr, WMRange range); void WMSetTextFieldCursorPosition(WMTextField *tPtr, unsigned int position); +void WMSetTextFieldNextTextField(WMTextField *tPtr, WMTextField *next); + +void WMSetTextFieldPrevTextField(WMTextField *tPtr, WMTextField *prev); + -extern char *WMListDidScrollNotification; extern char *WMTextDidChangeNotification; extern char *WMTextDidBeginEditingNotification; extern char *WMTextDidEndEditingNotification; @@ -844,6 +855,7 @@ void WMSetListBottomPosition(WMList *lPtr, int row); int WMGetListPosition(WMList *lPtr); extern char *WMListDidScrollNotification; +extern char *WMListSelectionDidChangeNotification; /* ....................................................................... */ @@ -867,7 +879,8 @@ WMListItem *WMAddSortedBrowserItem(WMBrowser *bPtr, int column, char *text, Bool WMListItem *WMInsertBrowserItem(WMBrowser *bPtr, int column, int row, char *text, Bool isBranch); -Bool WMSetBrowserPath(WMBrowser *bPtr, char *path); +/* Don't free the returned string. */ +char* WMSetBrowserPath(WMBrowser *bPtr, char *path); /* you can free the returned string */ char *WMGetBrowserPath(WMBrowser *bPtr); @@ -878,6 +891,9 @@ void WMSetBrowserFillColumnProc(WMBrowser *bPtr,WMBrowserFillColumnProc *proc); void WMSetBrowserAction(WMBrowser *bPtr, WMAction *action, void *clientData); +void WMSetBrowserDoubleAction(WMBrowser *bPtr, WMAction *action, + void *clientData); + WMListItem *WMGetBrowserSelectedItemInColumn(WMBrowser *bPtr, int column); int WMGetBrowserFirstVisibleColumn(WMBrowser *bPtr); @@ -1057,11 +1073,8 @@ char *WMGetFilePanelFileName(WMFilePanel *panel); void WMFreeFilePanel(WMFilePanel *panel); -int WMRunModalOpenPanelForDirectory(WMFilePanel *panel, WMWindow *owner, - char *path, char *name, char **fileTypes); - -int WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner, - char *path, char *name); +int WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner, + char *path, char *name, char **fileTypes); void WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view); @@ -1084,5 +1097,9 @@ char *WMGetFontPanelFontName(WMFontPanel *panel); WMFont *WMGetFontPanelFont(WMFontPanel *panel); +#ifdef __cplusplus +} +#endif /* __cplusplus */ + #endif diff --git a/WINGs/WINGsP.h b/WINGs/WINGsP.h index ccf0edc7..0ce3a432 100644 --- a/WINGs/WINGsP.h +++ b/WINGs/WINGsP.h @@ -1,3 +1,6 @@ +#ifndef _WINGSP_H_ +#define _WINGSP_H_ + #include #include @@ -16,6 +19,10 @@ #include #include +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + #define DOUBLE_BUFFER @@ -177,25 +184,17 @@ typedef struct W_Screen { struct W_Pixmap *checkMark; struct W_Pixmap *homeIcon; - struct W_Pixmap *homeAltIcon; + struct W_Pixmap *altHomeIcon; - struct W_Pixmap *magnifyIcon; - struct W_Pixmap *wheelIcon; - struct W_Pixmap *grayIcon; - struct W_Pixmap *rgbIcon; - struct W_Pixmap *cmykIcon; - struct W_Pixmap *hsbIcon; - struct W_Pixmap *customPaletteIcon; - struct W_Pixmap *colorListIcon; - - struct W_Pixmap *magnifyAltIcon; - struct W_Pixmap *wheelAltIcon; - struct W_Pixmap *grayAltIcon; - struct W_Pixmap *rgbAltIcon; - struct W_Pixmap *cmykAltIcon; - struct W_Pixmap *hsbAltIcon; - struct W_Pixmap *customPaletteAltIcon; - struct W_Pixmap *colorListAltIcon; + struct W_Pixmap *magnifyIcon; + struct W_Pixmap *altMagnifyIcon; + struct W_Pixmap *wheelIcon; + struct W_Pixmap *grayIcon; + struct W_Pixmap *rgbIcon; + struct W_Pixmap *cmykIcon; + struct W_Pixmap *hsbIcon; + struct W_Pixmap *customPaletteIcon; + struct W_Pixmap *colorListIcon; struct W_Pixmap *defaultObjectIcon; @@ -346,7 +345,7 @@ void W_DestroyView(W_View *view); void W_RealizeView(W_View *view); -void W_ReparentView(W_View *view, W_View *newParent); +void W_ReparentView(W_View *view, W_View *newParent, int x, int y); void W_MapView(W_View *view); @@ -416,3 +415,14 @@ Bool W_ApplicationInitialized(void); char *W_GetTextSelection(WMScreen *scr, Atom selection); void W_HandleSelectionEvent(XEvent *event); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _WINGSP_H_ */ + +void W_FlushASAPNotificationQueue(); + +void W_FlushIdleNotificationQueue(); + diff --git a/WINGs/WUtil.h b/WINGs/WUtil.h index f462adf0..a2abc77a 100644 --- a/WINGs/WUtil.h +++ b/WINGs/WUtil.h @@ -61,6 +61,10 @@ #endif /* !NDEBUG */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + typedef enum { WMPostWhenIdle = 1, @@ -227,9 +231,12 @@ WMNotificationQueue *WMGetDefaultNotificationQueue(void); WMNotificationQueue *WMCreateNotificationQueue(void); -void WMDequeueNotificationMatching(WMNotificationQueue *queue, unsigned mask); +void WMDequeueNotificationMatching(WMNotificationQueue *queue, + WMNotification *notification, + unsigned mask); -void WMEnqueueNotification(WMNotificationQueue *queue, WMNotification *notification, +void WMEnqueueNotification(WMNotificationQueue *queue, + WMNotification *notification, WMPostingStyle postingStyle); void WMEnqueueCoalesceNotification(WMNotificationQueue *queue, @@ -254,7 +261,7 @@ char *WMGetUDStringForKey(WMUserDefaults *database, char *defaultName); int WMGetUDIntegerForKey(WMUserDefaults *database, char *defaultName); -int WMGetUDFloatForKey(WMUserDefaults *database, char *defaultName); +float WMGetUDFloatForKey(WMUserDefaults *database, char *defaultName); Bool WMGetUDBoolForKey(WMUserDefaults *database, char *defaultName); @@ -274,6 +281,9 @@ proplist_t WMGetUDSearchList(WMUserDefaults *database); void WMSetUDSearchList(WMUserDefaults *database, proplist_t list); +#ifdef __cplusplus +} +#endif /* __cplusplus */ #endif diff --git a/WINGs/llist.c b/WINGs/llist.c new file mode 100644 index 00000000..ea2e68a9 --- /dev/null +++ b/WINGs/llist.c @@ -0,0 +1,126 @@ + +#include "WUtil.h" +#include + +#include "llist.h" + + + +WINLINE void* +lhead(list_t *list) +{ + if (!list) + return NULL; + + return list->head; +} + + +WINLINE list_t* +ltail(list_t *list) +{ + if (!list) + return NULL; + + return list->tail; +} + + +WINLINE list_t* +lcons(void *newHead, list_t *list) +{ + list_t *newNode; + + newNode = wmalloc(sizeof(list_t)); + newNode->head = newHead; + newNode->tail = list; + + return newNode; +} + + +WINLINE list_t* +lappend(list_t *list, list_t *tail) +{ + list_t *ptr; + + if (!list) + return tail; + + for (ptr = list; ptr->tail == NULL; ptr = ptr->tail); + + ptr->tail = tail; + + return ptr; +} + + +WINLINE void +lfree(list_t *list) +{ + if (list) { + lfree(list->tail); + free(list); + } +} + + +WINLINE void* +lfind(void *objeto, list_t *list, int (*compare)(void*, void*)) +{ + while (list) { + if ((*compare)(list->head, objeto)==0) { + return list->head; + } + list = list->tail; + } + return NULL; +} + + +WINLINE int +llength(list_t *list) +{ + int i = 0; + + while (list) { + list = list->tail; + i++; + } + + return i; +} + + +WINLINE list_t* +lremove(list_t *list, void *object) +{ + if (!list) + return NULL; + + if (list->head == object) { + list_t *tmp = list->tail; + + free(list); + + return tmp; + } + + list->tail = lremove(list->tail, object); + + return list; +} + + +WINLINE list_t* +lremovehead(list_t *list) +{ + list_t *tmp = NULL; + + if (list) { + tmp = list->tail; + free(list); + } + return tmp; +} + diff --git a/WINGs/llist.h b/WINGs/llist.h new file mode 100644 index 00000000..d956ae55 --- /dev/null +++ b/WINGs/llist.h @@ -0,0 +1,40 @@ + + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +# define WINLINE inline +#else +# define WINLINE +#endif + +typedef struct list_t { + void *head; + struct list_t *tail; +} list_t; + + +WINLINE void *lhead(list_t *list); + + +WINLINE list_t *ltail(list_t *list); + + +WINLINE list_t *lcons(void *newHead, list_t *list); + + +WINLINE list_t *lappend(list_t *list, list_t *tail); + + +WINLINE void lfree(list_t *list); + + +WINLINE void *lfind(void *object, list_t *list, int (*compare)(void*, void*)); + + +WINLINE int llength(list_t *list); + + +WINLINE list_t *lremove(list_t *list, void *object); + + +WINLINE list_t *lremovehead(list_t *list); + diff --git a/WINGs/notification.c b/WINGs/notification.c index 130718db..c70e9800 100644 --- a/WINGs/notification.c +++ b/WINGs/notification.c @@ -6,6 +6,7 @@ #include "WUtil.h" +#include "llist.h" typedef struct W_Notification { char *name; @@ -15,6 +16,8 @@ typedef struct W_Notification { } Notification; +extern void W_FlushASAPNotificationQueue(); + char* WMGetNotificationName(WMNotification *notification) @@ -214,17 +217,16 @@ WMPostNotification(WMNotification *notification) } WMReleaseNotification(notification); + + W_FlushASAPNotificationQueue(); } - - void WMRemoveNotificationObserver(void *observer) { NotificationObserver *orec, *tmp, *rec; - /* get the list of actions the observer is doing */ orec = WMHashGet(notificationCenter->observerTable, observer); @@ -285,10 +287,15 @@ void WMRemoveNotificationObserverWithName(void *observer, char *name, void *object) { NotificationObserver *orec, *tmp, *rec; + NotificationObserver *newList = NULL; /* get the list of actions the observer is doing */ orec = WMHashGet(notificationCenter->observerTable, observer); + WMHashRemove(notificationCenter->observerTable, observer); + + /* rebuild the list of actions for the observer */ + while (orec) { tmp = orec->nextAction; if (orec->name == name && orec->object == object) { @@ -301,8 +308,8 @@ WMRemoveNotificationObserverWithName(void *observer, char *name, void *object) assert(rec->prev==NULL); /* replace table entry */ if (orec->next) { - WMHashInsert(notificationCenter->objectTable, orec->object, - orec->next); + WMHashInsert(notificationCenter->objectTable, + orec->object, orec->next); } else { WMHashRemove(notificationCenter->objectTable, orec->object); @@ -314,34 +321,42 @@ WMRemoveNotificationObserverWithName(void *observer, char *name, void *object) assert(rec->prev==NULL); /* replace table entry */ if (orec->next) { - WMHashInsert(notificationCenter->nameTable, orec->name, - orec->next); + WMHashInsert(notificationCenter->nameTable, + orec->name, orec->next); } else { - WMHashRemove(notificationCenter->nameTable, orec->name); + WMHashRemove(notificationCenter->nameTable, + orec->name); } } } - - /* update the action list for the observer */ - rec = WMHashGet(notificationCenter->observerTable, observer); - - if (rec == orec) { - if (orec->nextAction) { - WMHashInsert(notificationCenter->nameTable, observer, - orec->nextAction); - } else { - WMHashRemove(notificationCenter->nameTable, observer); - } - } if (orec->prev) orec->prev->next = orec->next; if (orec->next) orec->next->prev = orec->prev; free(orec); + } else { + /* append this action in the new action list */ + orec->nextAction = NULL; + if (!newList) { + newList = orec; + } else { + NotificationObserver *p; + + p = newList; + while (p->nextAction) { + p = p->nextAction; + } + p->nextAction = orec; + } } orec = tmp; } + + /* reinsert the list to the table */ + if (newList) { + WMHashInsert(notificationCenter->observerTable, observer, newList); + } } @@ -363,18 +378,25 @@ WMPostNotificationName(char *name, void *object, void *clientData) typedef struct W_NotificationQueue { - NotificationCenter *center; - void *asapQueue; - void *idleQueue; + list_t *asapQueue; + list_t *idleQueue; + + struct W_NotificationQueue *next; } NotificationQueue; +static WMNotificationQueue *notificationQueueList = NULL; + /* default queue */ static WMNotificationQueue *notificationQueue = NULL; + WMNotificationQueue* WMGetDefaultNotificationQueue(void) { + if (!notificationQueue) + notificationQueue = WMCreateNotificationQueue(); + return notificationQueue; } @@ -382,20 +404,76 @@ WMGetDefaultNotificationQueue(void) WMNotificationQueue* WMCreateNotificationQueue(void) { - return NULL; + NotificationQueue *queue; + + queue = wmalloc(sizeof(NotificationQueue)); + + queue->asapQueue = NULL; + queue->idleQueue = NULL; + queue->next = notificationQueueList; + + notificationQueueList = queue; + + return queue; } -void -WMDequeueNotificationMatching(WMNotificationQueue *queue, unsigned mask) -{ -} - void WMEnqueueNotification(WMNotificationQueue *queue, WMNotification *notification, WMPostingStyle postingStyle) { + WMEnqueueCoalesceNotification(queue, notification, postingStyle, + WNCOnName|WNCOnSender); +} + + +static int +matchName(void *a, void *b) +{ + WMNotification *n1 = (WMNotification*)a; + WMNotification *n2 = (WMNotification*)b; + + return strcmp(n1->name, n2->name); +} + + +static int +matchSender(void *a, void *b) +{ + WMNotification *n1 = (WMNotification*)a; + WMNotification *n2 = (WMNotification*)b; + + return (n1->object == n2->object); +} + + +void +WMDequeueNotificationMatching(WMNotificationQueue *queue, + WMNotification *notification, unsigned mask) +{ + void *n; + + if (mask & WNCOnName) { + while ((n = lfind(notification->name, queue->asapQueue, matchName))) { + queue->asapQueue = lremove(queue->asapQueue, n); + WMReleaseNotification((WMNotification*)n); + } + while ((n = lfind(notification->name, queue->idleQueue, matchName))) { + queue->idleQueue = lremove(queue->idleQueue, n); + WMReleaseNotification((WMNotification*)n); + } + } + if (mask & WNCOnSender) { + while ((n = lfind(notification->name, queue->asapQueue, matchSender))) { + queue->asapQueue = lremove(queue->asapQueue, n); + WMReleaseNotification((WMNotification*)n); + } + while ((n = lfind(notification->name, queue->idleQueue, matchSender))) { + queue->idleQueue = lremove(queue->idleQueue, n); + WMReleaseNotification((WMNotification*)n); + } + } } @@ -405,10 +483,51 @@ WMEnqueueCoalesceNotification(WMNotificationQueue *queue, WMPostingStyle postingStyle, unsigned coalesceMask) { + if (coalesceMask != WNCNone) + WMDequeueNotificationMatching(queue, notification, coalesceMask); + + switch (postingStyle) { + case WMPostNow: + WMPostNotification(notification); + break; + + case WMPostASAP: + queue->asapQueue = lappend(queue->asapQueue, + lcons(notification, NULL)); + break; + + case WMPostWhenIdle: + queue->idleQueue = lappend(queue->idleQueue, + lcons(notification, NULL)); + break; + } } +void +W_FlushASAPNotificationQueue() +{ + WMNotificationQueue *queue = notificationQueueList; + + while (queue) { + while (queue->asapQueue) { + WMPostNotification((WMNotification*)lhead(queue->asapQueue)); + queue->asapQueue = lremovehead(queue->asapQueue); + } + } +} +void +W_FlushIdleNotificationQueue() +{ + WMNotificationQueue *queue = notificationQueueList; + while (queue) { + while (queue->idleQueue) { + WMPostNotification((WMNotification*)lhead(queue->idleQueue)); + queue->idleQueue = lremovehead(queue->idleQueue); + } + } +} diff --git a/WINGs/testnot.c b/WINGs/testnot.c new file mode 100644 index 00000000..a745801c --- /dev/null +++ b/WINGs/testnot.c @@ -0,0 +1,91 @@ + +/* + * test notifications + */ + + +#include "WUtil.h" +#include +#include + + +char *notificationA = "notificationA"; +char *notificationB = "notificationB"; +char *notificationC = "notificationC"; + +void +observer1(void *data, WMNotification *notification) +{ + printf("ObserverAction 1 got %s with object=%s, clientdata=%s\n", + WMGetNotificationName(notification), + (char*)WMGetNotificationObject(notification), + (char*)WMGetNotificationClientData(notification)); +} + +void +observer3(void *data, WMNotification *notification) +{ + printf("ObserverAction 3 got %s with object=%s, clientdata=%s\n", + WMGetNotificationName(notification), + (char*)WMGetNotificationObject(notification), + (char*)WMGetNotificationClientData(notification)); +} + +void +observer2(void *data, WMNotification *notification) +{ + printf("ObserverAction 2 got %s with object=%s, clientdata=%s\n", + WMGetNotificationName(notification), + (char*)WMGetNotificationObject(notification), + (char*)WMGetNotificationClientData(notification)); +} + + + + + + +main(int argc, char **argv) +{ + int i; + char *obser1 = "obser1"; + char *obser2 = "obser2"; + char *obser3 = "obser3"; + char *obj1 = "obj1"; + char *obj2 = "obj2"; + char *obj3 = "obj3"; + char *cdata1 = "client data1"; + char *cdata2 = "client data2"; + char *cdata3 = "client data3"; + + WMInitializeApplication("test", &argc, argv); + + WMAddNotificationObserver(observer1, obser1, notificationA, obj1); + + WMAddNotificationObserver(observer1, obser1, notificationA, obj2); + + WMAddNotificationObserver(observer1, obser1, notificationA, obj3); + + puts("post1"); + WMPostNotificationName(notificationA, obj3, cdata1); + puts("post2"); + WMPostNotificationName(notificationA, obj2, cdata2); + puts("post3"); + WMPostNotificationName(notificationA, obj1, cdata3); + + puts("REMOVE1"); + WMRemoveNotificationObserverWithName(obser1, notificationA, obj2); + + puts("REMOVE2"); + WMRemoveNotificationObserverWithName(obser1, notificationA, obj2); + + puts("post1"); + WMPostNotificationName(notificationA, obj3, cdata1); + puts("post2"); + WMPostNotificationName(notificationA, obj2, cdata2); + puts("post3"); + WMPostNotificationName(notificationA, obj1, cdata3); + + return 0; +} + diff --git a/WINGs/userdefaults.c b/WINGs/userdefaults.c index ae8fe5fd..c97dbd62 100644 --- a/WINGs/userdefaults.c +++ b/WINGs/userdefaults.c @@ -279,7 +279,7 @@ WMGetUDIntegerForKey(WMUserDefaults *database, char *defaultName) -int +float WMGetUDFloatForKey(WMUserDefaults *database, char *defaultName) { proplist_t val; @@ -288,16 +288,12 @@ WMGetUDFloatForKey(WMUserDefaults *database, char *defaultName) val = WMGetUDObjectForKey(database, defaultName); - if (!val) + if (!val || !PLIsString(val)) return 0.0; - if (!PLIsString(val)) + if (!(str = PLGetString(val))) return 0.0; - - str = PLGetString(val); - if (!str) - return 0.0; - + if (sscanf(str, "%f", &value)!=1) return 0.0; diff --git a/WINGs/wbrowser.c b/WINGs/wbrowser.c index 3054cf50..b2eaaec6 100644 --- a/WINGs/wbrowser.c +++ b/WINGs/wbrowser.c @@ -3,6 +3,7 @@ #include "WINGsP.h" +#include /* for : double rint (double) */ char *WMBrowserDidScrollNotification = "WMBrowserDidScrollNotification"; @@ -55,11 +56,17 @@ typedef struct W_Browser { #define COLUMN_SPACING 4 #define TITLE_SPACING 2 -#define DEFAULT_WIDTH 305 -#define DEFAULT_HEIGHT 200 -#define DEFAULT_HAS_SCROLLER True +#define DEFAULT_WIDTH 305 +#define DEFAULT_HEIGHT 200 +#define DEFAULT_HAS_SCROLLER True +#define DEFAULT_TITLE_HEIGHT 20 +#define DEFAULT_IS_TITLED True +#define DEFAULT_MAX_VISIBLE_COLUMNS 2 +#define DEFAULT_SEPARATOR "/" + +#define MIN_VISIBLE_COLUMNS 1 +#define MAX_VISIBLE_COLUMNS 32 -#define DEFAULT_SEPARATOR "/" #define COLUMN_IS_VISIBLE(b, c) ((c) >= (b)->firstVisibleColumn \ && (c) < (b)->firstVisibleColumn + (b)->maxVisibleColumns) @@ -70,13 +77,17 @@ static void destroyBrowser(WMBrowser *bPtr); static void setupScroller(WMBrowser *bPtr); -static void scrollToColumn(WMBrowser *bPtr, int column); +static void scrollToColumn(WMBrowser *bPtr, int column, Bool updateScroller); static void paintItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect); static void loadColumn(WMBrowser *bPtr, int column); +static void removeColumn(WMBrowser *bPtr, int column); + +static char* +createTruncatedString(WMFont *font, char *text, int *textLen, int width); static void resizeBrowser(WMWidget*, unsigned int, unsigned int); @@ -94,6 +105,8 @@ WMCreateBrowser(WMWidget *parent) WMBrowser *bPtr; int i; + wassertrv(parent, NULL); + bPtr = wmalloc(sizeof(WMBrowser)); memset(bPtr, 0, sizeof(WMBrowser)); @@ -112,9 +125,9 @@ WMCreateBrowser(WMWidget *parent) /* default configuration */ bPtr->flags.hasScroller = DEFAULT_HAS_SCROLLER; - bPtr->titleHeight = 20; - bPtr->flags.isTitled = 1; - bPtr->maxVisibleColumns = 2; + bPtr->titleHeight = DEFAULT_TITLE_HEIGHT; + bPtr->flags.isTitled = DEFAULT_IS_TITLED; + bPtr->maxVisibleColumns = DEFAULT_MAX_VISIBLE_COLUMNS; resizeBrowser(bPtr, DEFAULT_WIDTH, DEFAULT_HEIGHT); @@ -137,24 +150,58 @@ WMCreateBrowser(WMWidget *parent) void WMSetBrowserMaxVisibleColumns(WMBrowser *bPtr, int columns) { - if (columns > bPtr->maxVisibleColumns) { + int curMaxVisibleColumns; + int newFirstVisibleColumn = 0; + assert ((int) bPtr); + + columns = (columns < MIN_VISIBLE_COLUMNS) ? MIN_VISIBLE_COLUMNS : columns; + columns = (columns > MAX_VISIBLE_COLUMNS) ? MAX_VISIBLE_COLUMNS : columns; + if (columns == bPtr->maxVisibleColumns) { + return; + } + curMaxVisibleColumns = bPtr->maxVisibleColumns; + bPtr->maxVisibleColumns = columns; + /* browser not loaded */ + if (!bPtr->flags.loaded) { + if ((columns > curMaxVisibleColumns) && (columns > bPtr->columnCount)) { + int i = columns - bPtr->columnCount; + bPtr->usedColumnCount = bPtr->columnCount; + while (i--) { + WMAddBrowserColumn(bPtr); + } + bPtr->usedColumnCount = 0; + } + /* browser loaded and columns > curMaxVisibleColumns */ + } else if (columns > curMaxVisibleColumns) { + if (bPtr->usedColumnCount > columns) { + newFirstVisibleColumn = bPtr->usedColumnCount - columns; + } + if (newFirstVisibleColumn > bPtr->firstVisibleColumn) { + newFirstVisibleColumn = bPtr->firstVisibleColumn; + } if (columns > bPtr->columnCount) { int i = columns - bPtr->columnCount; - + int curUsedColumnCount = bPtr->usedColumnCount; + bPtr->usedColumnCount = bPtr->columnCount; while (i--) { WMAddBrowserColumn(bPtr); } + bPtr->usedColumnCount = curUsedColumnCount; + } + /* browser loaded and columns < curMaxVisibleColumns */ + } else { + newFirstVisibleColumn = bPtr->firstVisibleColumn; + if (newFirstVisibleColumn + columns >= bPtr->usedColumnCount) { + removeColumn(bPtr, newFirstVisibleColumn + columns); } - - resizeBrowser(bPtr, bPtr->view->size.width, bPtr->view->size.height); - - } else if (columns < bPtr->maxVisibleColumns) { - - resizeBrowser(bPtr, bPtr->view->size.width, bPtr->view->size.height); } - - bPtr->maxVisibleColumns = columns; + resizeBrowser(bPtr, bPtr->view->size.width, bPtr->view->size.height); + if (bPtr->flags.loaded) { + XClearArea(bPtr->view->screen->display, bPtr->view->window, 0, 0, + bPtr->view->size.width, bPtr->titleHeight, False); + scrollToColumn (bPtr, newFirstVisibleColumn, True); + } } @@ -187,11 +234,27 @@ drawTitleOfColumn(WMBrowser *bPtr, int column) W_DrawRelief(scr, bPtr->view->window, x, 0, bPtr->columnSize.width, bPtr->titleHeight, WRSunken); - if (column < bPtr->usedColumnCount && bPtr->titles[column]) - W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x, - (bPtr->titleHeight-WMFontHeight(scr->boldFont))/2, - bPtr->columnSize.width, WACenter, W_GC(scr->white), - False, bPtr->titles[column], strlen(bPtr->titles[column])); + if (column < bPtr->usedColumnCount && bPtr->titles[column]) { + int titleLen = strlen(bPtr->titles[column]); + int widthC = bPtr->columnSize.width-8; + + if (WMWidthOfString(scr->boldFont, bPtr->titles[column], titleLen) + > widthC) { + char *titleBuf = createTruncatedString(scr->boldFont, + bPtr->titles[column], + &titleLen, widthC); + W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x, + (bPtr->titleHeight-WMFontHeight(scr->boldFont))/2, + bPtr->columnSize.width, WACenter, W_GC(scr->white), + False, titleBuf, titleLen); + free (titleBuf); + } else { + W_PaintText(bPtr->view, bPtr->view->window, scr->boldFont, x, + (bPtr->titleHeight-WMFontHeight(scr->boldFont))/2, + bPtr->columnSize.width, WACenter, W_GC(scr->white), + False, bPtr->titles[column], titleLen); + } + } } @@ -239,70 +302,50 @@ WMGetBrowserFirstVisibleColumn(WMBrowser *bPtr) static void removeColumn(WMBrowser *bPtr, int column) { - int i; + int i, clearEnd, destroyEnd; WMList **clist; char **tlist; - - if (column >= bPtr->usedColumnCount) + + assert ((int) bPtr); + + column = (column < 0) ? 0 : column; + if (column >= bPtr->columnCount) { return; - - if (column < bPtr->maxVisibleColumns) { - int tmp; -#if 0 - /* this code causes bugs */ - int limit; - - if(bPtr->usedColumnCount < bPtr->maxVisibleColumns) - limit = bPtr->usedColumnCount; - else - limit = bPtr->maxVisibleColumns; - - for (i=column; i < limit; i++) { - if (bPtr->titles[i]) - free(bPtr->titles[i]); - bPtr->titles[i] = NULL; - - WMClearList(bPtr->columns[i]); - bPtr->usedColumnCount--; - } -#else - for (i=column; i < bPtr->maxVisibleColumns; i++) { - if (bPtr->titles[i]) - free(bPtr->titles[i]); - bPtr->titles[i] = NULL; - - WMClearList(bPtr->columns[i]); - bPtr->usedColumnCount--; - } - tmp = bPtr->columnCount; - for (i=bPtr->maxVisibleColumns; i < tmp; i++) { - if (bPtr->titles[i]) - free(bPtr->titles[i]); - bPtr->titles[i] = NULL; - - WMDestroyWidget(bPtr->columns[i]); - bPtr->columns[i] = NULL; - bPtr->columnCount--; - bPtr->usedColumnCount--; - } -#endif - } else { - int tmp = bPtr->columnCount; - for (i=column; i < tmp; i++) { - if (bPtr->titles[i]) - free(bPtr->titles[i]); - bPtr->titles[i] = NULL; - - WMDestroyWidget(bPtr->columns[i]); - bPtr->columns[i] = NULL; - bPtr->columnCount--; - bPtr->usedColumnCount--; - } } - clist = wmalloc(sizeof(WMList*)*bPtr->columnCount); - tlist = wmalloc(sizeof(char*)*bPtr->columnCount); - memcpy(clist, bPtr->columns, sizeof(WMList*)*bPtr->columnCount); - memcpy(tlist, bPtr->titles, sizeof(char*)*bPtr->columnCount); + if (column < bPtr->maxVisibleColumns) { + clearEnd = bPtr->maxVisibleColumns; + destroyEnd = bPtr->columnCount; + bPtr->columnCount = bPtr->maxVisibleColumns; + } else { + clearEnd = column; + destroyEnd = bPtr->columnCount; + bPtr->columnCount = column; + } + if (column < bPtr->usedColumnCount) { + bPtr->usedColumnCount = column; + } + for (i=column; i < clearEnd; i++) { + if (bPtr->titles[i]) { + free(bPtr->titles[i]); + bPtr->titles[i] = NULL; + } + WMClearList(bPtr->columns[i]); + } + for (;i < destroyEnd; i++) { + if (bPtr->titles[i]) { + free(bPtr->titles[i]); + bPtr->titles[i] = NULL; + } + WMRemoveNotificationObserverWithName(bPtr, + WMListSelectionDidChangeNotification, + bPtr->columns[i]); + WMDestroyWidget(bPtr->columns[i]); + bPtr->columns[i] = NULL; + } + clist = wmalloc(sizeof(WMList*) * (bPtr->columnCount)); + tlist = wmalloc(sizeof(char*) * (bPtr->columnCount)); + memcpy(clist, bPtr->columns, sizeof(WMList*) * (bPtr->columnCount)); + memcpy(tlist, bPtr->titles, sizeof(char*) * (bPtr->columnCount)); free(bPtr->titles); free(bPtr->columns); bPtr->titles = tlist; @@ -310,11 +353,10 @@ removeColumn(WMBrowser *bPtr, int column) } - WMListItem* WMGetBrowserSelectedItemInColumn(WMBrowser *bPtr, int column) { - if ((column < 0) || (column > bPtr->columnCount)) + if ((column < 0) || (column >= bPtr->usedColumnCount)) return NULL; return WMGetListSelectedItem(bPtr->columns[column]); @@ -430,8 +472,8 @@ resizeBrowser(WMWidget *w, unsigned int width, unsigned int height) bPtr->columnSize.height = height; if (bPtr->flags.isTitled) { - bPtr->columnSize.height -= TITLE_SPACING + bPtr->titleHeight; colY = TITLE_SPACING + bPtr->titleHeight; + bPtr->columnSize.height -= colY; } else { colY = 0; } @@ -481,8 +523,19 @@ paintItem(WMList *lPtr, int index, Drawable d, char *text, int state, XClearArea(scr->display, d, x, y, width, height, False); if (text) { - W_PaintText(view, d, scr->normalFont, x+4, y, width, - WALeft, W_GC(scr->black), False, text, strlen(text)); + /* Avoid overlaping... */ + int textLen = strlen(text); + int widthC = (state & WLDSIsBranch) ? width-20 : width-8; + if (WMWidthOfString(scr->normalFont, text, textLen) > widthC) { + char *textBuf = createTruncatedString(scr->normalFont, + text, &textLen, widthC); + W_PaintText(view, d, scr->normalFont, x+4, y, widthC, + WALeft, W_GC(scr->black), False, textBuf, textLen); + free(textBuf); + } else { + W_PaintText(view, d, scr->normalFont, x+4, y, widthC, + WALeft, W_GC(scr->black), False, text, textLen); + } } if (state & WLDSIsBranch) { @@ -511,7 +564,7 @@ scrollCallback(WMWidget *scroller, void *self) switch (WMGetScrollerHitPart(sPtr)) { case WSDecrementLine: if (bPtr->firstVisibleColumn > 0) { - scrollToColumn(bPtr, bPtr->firstVisibleColumn-1); + scrollToColumn(bPtr, bPtr->firstVisibleColumn-1, True); } break; @@ -519,44 +572,45 @@ scrollCallback(WMWidget *scroller, void *self) if (bPtr->firstVisibleColumn > 0) { newFirst = bPtr->firstVisibleColumn - bPtr->maxVisibleColumns; - scrollToColumn(bPtr, newFirst); + scrollToColumn(bPtr, newFirst, True); } break; case WSIncrementLine: - if (LAST_VISIBLE_COLUMN < bPtr->columnCount) { - scrollToColumn(bPtr, bPtr->firstVisibleColumn+1); + if (LAST_VISIBLE_COLUMN < bPtr->usedColumnCount) { + scrollToColumn(bPtr, bPtr->firstVisibleColumn+1, True); } break; case WSIncrementPage: - if (LAST_VISIBLE_COLUMN < bPtr->columnCount) { + if (LAST_VISIBLE_COLUMN < bPtr->usedColumnCount) { newFirst = bPtr->firstVisibleColumn + bPtr->maxVisibleColumns; if (newFirst+bPtr->maxVisibleColumns >= bPtr->columnCount) newFirst = bPtr->columnCount - bPtr->maxVisibleColumns; - scrollToColumn(bPtr, newFirst); + scrollToColumn(bPtr, newFirst, True); } break; case WSKnob: { - float floatValue; - float value = bPtr->columnCount - bPtr->maxVisibleColumns; - + double floatValue; + double value = bPtr->columnCount - bPtr->maxVisibleColumns; + floatValue = WMGetScrollerValue(bPtr->scroller); - + floatValue = (floatValue*value)/value; - - newFirst = floatValue*(float)(bPtr->columnCount - bPtr->maxVisibleColumns); + + newFirst = rint(floatValue*(float)(bPtr->columnCount - bPtr->maxVisibleColumns)); if (bPtr->firstVisibleColumn != newFirst) - scrollToColumn(bPtr, newFirst); - else + scrollToColumn(bPtr, newFirst, False); +/* else WMSetScrollerParameters(bPtr->scroller, floatValue, bPtr->maxVisibleColumns/(float)bPtr->columnCount); + */ } break; @@ -597,6 +651,14 @@ WMSetBrowserAction(WMBrowser *bPtr, WMAction *action, void *clientData) } +void +WMSetBrowserDoubleAction(WMBrowser *bPtr, WMAction *action, void *clientData) +{ + bPtr->doubleAction = action; + bPtr->doubleClientData = clientData; +} + + void WMSetBrowserHasScroller(WMBrowser *bPtr, int hasScroller) { @@ -605,30 +667,34 @@ WMSetBrowserHasScroller(WMBrowser *bPtr, int hasScroller) -Bool +char* WMSetBrowserPath(WMBrowser *bPtr, char *path) { int i; char *str = wstrdup(path); - char *tmp; + char *tmp, *retPtr = NULL; int item; - Bool ok = True; WMListItem *listItem; + /* WMLoadBrowserColumnZero must be call first */ + if (!bPtr->flags.loaded) { + return False; + } + removeColumn(bPtr, 1); i = 0; tmp = strtok(str, bPtr->pathSeparator); while (tmp) { /* select it in the column */ - item = WMFindRowOfListItemWithTitle(bPtr->columns[i], tmp); + item = WMFindRowOfListItemWithTitle(bPtr->columns[i], tmp); if (item<0) { - ok = False; + retPtr = &path[(int)(tmp - str)]; break; } WMSelectListItem(bPtr->columns[i], item); WMSetListPosition(bPtr->columns[i], item); - + listItem = WMGetListItem(bPtr->columns[i], item); if (!listItem || !listItem->isBranch) { break; @@ -645,11 +711,25 @@ WMSetBrowserPath(WMBrowser *bPtr, char *path) } free(str); - bPtr->selectedColumn = bPtr->usedColumnCount - 1; + for (i = bPtr->usedColumnCount - 1; + (i > -1) && !WMGetListSelectedItem(bPtr->columns[i]); + i--); - scrollToColumn(bPtr, bPtr->columnCount-bPtr->maxVisibleColumns); + bPtr->selectedColumn = i; + + if (bPtr->columnCount < bPtr->maxVisibleColumns) { + int i = bPtr->maxVisibleColumns - bPtr->columnCount; + int curUsedColumnCount = bPtr->usedColumnCount; + bPtr->usedColumnCount = bPtr->columnCount; + while (i--) { + WMAddBrowserColumn(bPtr); + } + bPtr->usedColumnCount = curUsedColumnCount; + } - return ok; + scrollToColumn(bPtr, bPtr->columnCount - bPtr->maxVisibleColumns, True); + + return retPtr; } @@ -669,7 +749,11 @@ WMGetBrowserPathToColumn(WMBrowser *bPtr, int column) if (column >= bPtr->usedColumnCount) column = bPtr->usedColumnCount-1; - + + if (column < 0) { + return wstrdup(bPtr->pathSeparator); + } + /* calculate size of buffer */ size = 0; for (i = 0; i <= column; i++) { @@ -749,7 +833,7 @@ handleEvents(XEvent *event, void *data) static void -scrollToColumn(WMBrowser *bPtr, int column) +scrollToColumn(WMBrowser *bPtr, int column, Bool updateScroller) { int i; int x; @@ -764,7 +848,7 @@ scrollToColumn(WMBrowser *bPtr, int column) x = 0; bPtr->firstVisibleColumn = column; - for (i = 0; i < bPtr->usedColumnCount; i++) { + for (i = 0; i < bPtr->columnCount; i++) { if (COLUMN_IS_VISIBLE(bPtr, i)) { WMMoveWidget(bPtr->columns[i], x, WMWidgetView(bPtr->columns[i])->pos.y); @@ -778,15 +862,17 @@ scrollToColumn(WMBrowser *bPtr, int column) } /* update the scroller */ - if (bPtr->columnCount > bPtr->maxVisibleColumns) { - float value, proportion; + if (updateScroller) { + if (bPtr->columnCount > bPtr->maxVisibleColumns) { + float value, proportion; - value = bPtr->firstVisibleColumn - /(float)(bPtr->columnCount-bPtr->maxVisibleColumns); - proportion = bPtr->maxVisibleColumns/(float)bPtr->columnCount; - WMSetScrollerParameters(bPtr->scroller, value, proportion); - } else { - WMSetScrollerParameters(bPtr->scroller, 0, 1); + value = bPtr->firstVisibleColumn + /(float)(bPtr->columnCount-bPtr->maxVisibleColumns); + proportion = bPtr->maxVisibleColumns/(float)bPtr->columnCount; + WMSetScrollerParameters(bPtr->scroller, value, proportion); + } else { + WMSetScrollerParameters(bPtr->scroller, 0, 1); + } } if (bPtr->view->flags.mapped) @@ -803,10 +889,11 @@ listCallback(void *self, void *clientData) WMBrowser *bPtr = (WMBrowser*)clientData; WMList *lPtr = (WMList*)self; WMListItem *item; + static WMListItem *oldItem = NULL; int i; item = WMGetListSelectedItem(lPtr); - if (!item) + if (!item || oldItem == item) return; for (i=0; icolumnCount; i++) { @@ -815,8 +902,6 @@ listCallback(void *self, void *clientData) } assert(icolumnCount); - bPtr->selectedColumn = i; - /* columns at right must be cleared */ removeColumn(bPtr, i+1); /* open directory */ @@ -828,11 +913,30 @@ listCallback(void *self, void *clientData) i = 0; else i = bPtr->usedColumnCount-bPtr->maxVisibleColumns; - scrollToColumn(bPtr, i); + scrollToColumn(bPtr, i, True); /* call callback for click */ if (bPtr->action) (*bPtr->action)(bPtr, bPtr->clientData); + + oldItem = item; +} + + +static void +listDoubleCallback(void *self, void *clientData) +{ + WMBrowser *bPtr = (WMBrowser*)clientData; + WMList *lPtr = (WMList*)self; + WMListItem *item; + + item = WMGetListSelectedItem(lPtr); + if (!item) + return; + + /* call callback for double click */ + if (bPtr->doubleAction) + (*bPtr->doubleAction)(bPtr, bPtr->doubleClientData); } @@ -846,7 +950,7 @@ WMLoadBrowserColumnZero(WMBrowser *bPtr) loadColumn(bPtr, 0); /* make column 0 visible */ - scrollToColumn(bPtr, 0); + scrollToColumn(bPtr, 0, True); bPtr->flags.loaded = 1; } @@ -857,25 +961,50 @@ void WMRemoveBrowserItem(WMBrowser *bPtr, int column, int row) { WMList *list; - + if (column < 0 || column >= bPtr->usedColumnCount) return; - + list = WMGetBrowserListInColumn(bPtr, column); - + if (row < 0 || row >= WMGetListNumberOfRows(list)) return; - + removeColumn(bPtr, column+1); if (bPtr->usedColumnCount < bPtr->maxVisibleColumns) - scrollToColumn(bPtr, 0); + scrollToColumn(bPtr, 0, True); else - scrollToColumn(bPtr, bPtr->usedColumnCount-bPtr->maxVisibleColumns); - + scrollToColumn(bPtr, bPtr->usedColumnCount-bPtr->maxVisibleColumns, + True); + WMRemoveListItem(list, row); } +static void +listSelectionObserver(void *observerData, WMNotification *notification) +{ + WMBrowser *bPtr = (WMBrowser*)observerData; + int column, item = (int)WMGetNotificationClientData(notification); + WMList *lPtr = (WMList*)WMGetNotificationObject(notification); + + for (column=0; columnusedColumnCount; column++) + if (bPtr->columns[column] == lPtr) + break; + + /* this can happen when a list is being cleared with WMClearList + * after the column was removed */ + if (column >= bPtr->usedColumnCount) { + return; + } + + if (item < 0) + column--; + + bPtr->selectedColumn = column; +} + + int WMAddBrowserColumn(WMBrowser *bPtr) { @@ -915,7 +1044,11 @@ WMAddBrowserColumn(WMBrowser *bPtr) list = WMCreateList(bPtr); WMSetListAction(list, listCallback, bPtr); + WMSetListDoubleAction(list, listDoubleCallback, bPtr); WMSetListUserDrawProc(list, paintItem); + WMAddNotificationObserver(listSelectionObserver, bPtr, + WMListSelectionDidChangeNotification, list); + bPtr->columns[index] = list; WMResizeWidget(list, bPtr->columnSize.width, bPtr->columnSize.height); @@ -951,7 +1084,37 @@ destroyBrowser(WMBrowser *bPtr) free(bPtr->pathSeparator); + WMRemoveNotificationObserver(bPtr); + free(bPtr); } +static char* +createTruncatedString(WMFont *font, char *text, int *textLen, int width) +{ + int dLen = WMWidthOfString(font, ".", 1); + char *textBuf = (char*)wmalloc((*textLen)+4); + + if (width >= 3*dLen) { + int dddLen = 3*dLen; + int tmpTextLen = *textLen; + + strcpy(textBuf, text); + while (tmpTextLen + && (WMWidthOfString(font, textBuf, tmpTextLen)+dddLen > width)) + tmpTextLen--; + strcpy(textBuf+tmpTextLen, "..."); + *textLen = tmpTextLen+3; + } else if (width >= 2*dLen) { + strcpy(textBuf, ".."); + *textLen = 2; + } else if (width >= dLen) { + strcpy(textBuf, "."); + *textLen = 1; + } else { + *textBuf = '\0'; + *textLen = 0; + } + return textBuf; +} diff --git a/WINGs/wcolorpanel.c b/WINGs/wcolorpanel.c index 0d89f81b..dd46186a 100644 --- a/WINGs/wcolorpanel.c +++ b/WINGs/wcolorpanel.c @@ -1,13 +1,20 @@ /* * ColorPanel for WINGs * - * by ]d : Original idea and basic initial code - * Pascal Hofstee : Code for wheeldrawing and calculating colors from it - * Alban Hertroys : Suggesting optimizations for algorithms for color- - * wheel, and implementation of final algorithm. - * Alfredo K. Kojima : For pointing out some memory-allocation problems. - * Marco van Hylckama-Vlieg : For once again doing the artwork ;-) -*/ + * by ]d : Original idea and basic initial code + * Pascal Hofstee : Code for wheeldrawing and calculating colors from it + * Alban Hertroys : Suggesting optimizations for algorithms for color- + * wheel, and implementation of final algorithm. + * Alfredo K. Kojima : For pointing out some memory-allocation problems. + * Marco van Hylckama-Vlieg : For once again doing the artwork ;-) + * + * + * Changes: + * fixed absurd wstrdup() uses, gazillion memory leaks, buffer overruns etc etc + */ + + + #include "WINGsP.h" @@ -22,166 +29,232 @@ #ifndef PATH_MAX -#define PATH_MAX 1024 +# define PATH_MAX 1024 #endif +#define mglass_width 20 +#define mglass_height 20 + +#define magnify_hotspot_x 17 +#define magnify_hotspot_y 10 +#define magnify_cursor_width 46 +#define magnify_cursor_height 36 +static char magnify_cursor_bits[] = { + 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x70, 0x00, 0x00, 0x00, 0xc0, + 0x18, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x80, 0x01, 0x00, 0x00, 0xc0, + 0x06, 0x00, 0x01, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, + 0x03, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x06, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, + 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x03, 0x00, 0x00, 0xc0, + 0x0c, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x18, 0xc0, 0x03, 0x00, 0x00, 0xc0, + 0x70, 0x60, 0x04, 0x00, 0x00, 0xc0, 0x80, 0x1f, 0x01, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x0a, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x10, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x24, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x08, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x40, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x90, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x20, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x40, 0x01, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x02, 0x00, 0xc0, 0x00, 0x00, 0x80, 0x04, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0}; + + +#define magnify_mask_width 46 +#define magnify_mask_height 36 +static char magnify_mask_bits[] = { + 0xc0, 0x0f, 0x00, 0x00, 0x00, 0xc0, 0x70, 0x70, 0x00, 0x00, 0x00, 0xc0, + 0x18, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0x04, 0x80, 0x01, 0x00, 0x00, 0xc0, + 0x06, 0x00, 0x01, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, + 0x03, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x06, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, + 0x01, 0x00, 0x04, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, + 0x02, 0x00, 0x02, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x03, 0x00, 0x00, 0xc0, + 0x0c, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x18, 0xc0, 0x03, 0x00, 0x00, 0xc0, + 0x70, 0x60, 0x07, 0x00, 0x00, 0xc0, 0x80, 0x1f, 0x07, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x0e, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x1c, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x3c, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xf0, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0xe0, 0x00, 0x00, 0xc0, 0x00, 0x00, 0xc0, 0x01, 0x00, 0xc0, + 0x00, 0x00, 0x80, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x80, 0x07, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0}; + + +typedef struct MovingView { + WMView *view; /* The view this is all about */ + Pixmap pixmap; /* What's under the view */ + Pixmap mask; /* Pixmap mask for view-contents */ + int valid; /* Are contents still valid ? */ + RColor color; /* Color of a pixel in the image */ +} MovingView; typedef struct WheelMatrix { - unsigned int width, height; /* Size of the colorwheel */ - unsigned char *data[3]; /* Wheel data (R,G,B) */ - unsigned char values[256]; /* Precalculated values for R,G & B values 0..255 */ + unsigned int width, height; /* Size of the colorwheel */ + unsigned char *data[3]; /* Wheel data (R,G,B) */ + unsigned char values[256]; /* Precalculated values for R,G & B values 0..255 */ } wheelMatrix; typedef struct W_ColorPanel { - WMWindow *win; - - /* Common Stuff */ - WMColorWell *colorWell; - WMButton *magnifyBtn; - WMButton *wheelBtn; - WMButton *slidersBtn; - WMButton *customPaletteBtn; - WMButton *colorListBtn; - - - /* ColorWheel Panel */ - WMFrame *wheelFrm; - WMSlider *wheelBrightnessS; - WMView *wheelView; - - /* Slider Panels */ - WMFrame *slidersFrm; - WMFrame *seperatorFrm; - WMButton *grayBtn; - WMButton *rgbBtn; - WMButton *cmykBtn; - WMButton *hsbBtn; - /* Gray Scale Panel */ - WMFrame *grayFrm; - WMLabel *grayMinL; - WMLabel *grayMaxL; - WMSlider *grayBrightnessS; - WMTextField *grayBrightnessT; - WMButton *grayPresetBtn[7]; - - /* RGB Panel */ - WMFrame *rgbFrm; - WMLabel *rgbMinL; - WMLabel *rgbMaxL; - WMSlider *rgbRedS; - WMSlider *rgbGreenS; - WMSlider *rgbBlueS; - WMTextField *rgbRedT; - WMTextField *rgbGreenT; - WMTextField *rgbBlueT; - - /* CMYK Panel */ - WMFrame *cmykFrm; - WMLabel *cmykMinL; - WMLabel *cmykMaxL; - WMSlider *cmykCyanS; - WMSlider *cmykMagentaS; - WMSlider *cmykYellowS; - WMSlider *cmykBlackS; - WMTextField *cmykCyanT; - WMTextField *cmykMagentaT; - WMTextField *cmykYellowT; - WMTextField *cmykBlackT; - - /* HSB Panel */ - WMFrame *hsbFrm; - WMSlider *hsbHueS; - WMSlider *hsbSaturationS; - WMSlider *hsbBrightnessS; - WMTextField *hsbHueT; - WMTextField *hsbSaturationT; - WMTextField *hsbBrightnessT; - - /* Custom Palette Panel*/ - WMFrame *customPaletteFrm; - WMPopUpButton *customPaletteHistoryBtn; - WMFrame *customPaletteContentFrm; - WMPopUpButton *customPaletteMenuBtn; - WMView *customPaletteContentView; - - /* Color List Panel */ - WMFrame *colorListFrm; - WMPopUpButton *colorListHistoryBtn; - WMList *colorListContentLst; - WMPopUpButton *colorListColorMenuBtn; - WMPopUpButton *colorListListMenuBtn; - - /* Look-Up Tables and Images */ - wheelMatrix *wheelMtrx; - Pixmap wheelImg; - Pixmap selectionImg; - Pixmap selectionBackImg; - RImage *customPaletteImg; - char *lastBrowseDir; - - /* Common Data Fields */ - RColor color; /* Current color */ - RHSVColor hsvcolor; /* Backup HSV Color */ - WMColorPanelMode mode; /* Current color selection mode */ - WMColorPanelMode slidersmode; /* Current color selection mode at sliders panel */ - WMColorPanelMode lastChanged; /* Panel that last changed the color */ - int colx, coly; /* (x,y) of selection-marker in WheelMode */ - int palx, paly; /* (x,y) of selection-marker in CustomPaletteMode */ - float palXRatio, palYRatio; /* Ratios in x & y between original and scaled palettesize */ - int currentPalette; - char *configurationPath; - - struct { - unsigned int dragging:1; - unsigned int done:1; - } flags; + WMWindow *win; + WMFont *font8; + WMFont *font12; + + /* Common Stuff */ + WMColorWell *colorWell; + WMButton *magnifyBtn; + WMButton *wheelBtn; + WMButton *slidersBtn; + WMButton *customPaletteBtn; + WMButton *colorListBtn; + + /* Magnifying Glass */ + MovingView *magnifyGlass; + + /* ColorWheel Panel */ + WMFrame *wheelFrm; + WMSlider *wheelBrightnessS; + WMView *wheelView; + + /* Slider Panels */ + WMFrame *slidersFrm; + WMFrame *seperatorFrm; + WMButton *grayBtn; + WMButton *rgbBtn; + WMButton *cmykBtn; + WMButton *hsbBtn; + /* Gray Scale Panel */ + WMFrame *grayFrm; + WMLabel *grayMinL; + WMLabel *grayMaxL; + WMSlider *grayBrightnessS; + WMTextField *grayBrightnessT; + WMButton *grayPresetBtn[7]; + + /* RGB Panel */ + WMFrame *rgbFrm; + WMLabel *rgbMinL; + WMLabel *rgbMaxL; + WMSlider *rgbRedS; + WMSlider *rgbGreenS; + WMSlider *rgbBlueS; + WMTextField *rgbRedT; + WMTextField *rgbGreenT; + WMTextField *rgbBlueT; + + /* CMYK Panel */ + WMFrame *cmykFrm; + WMLabel *cmykMinL; + WMLabel *cmykMaxL; + WMSlider *cmykCyanS; + WMSlider *cmykMagentaS; + WMSlider *cmykYellowS; + WMSlider *cmykBlackS; + WMTextField *cmykCyanT; + WMTextField *cmykMagentaT; + WMTextField *cmykYellowT; + WMTextField *cmykBlackT; + + /* HSB Panel */ + WMFrame *hsbFrm; + WMSlider *hsbHueS; + WMSlider *hsbSaturationS; + WMSlider *hsbBrightnessS; + WMTextField *hsbHueT; + WMTextField *hsbSaturationT; + WMTextField *hsbBrightnessT; + + /* Custom Palette Panel*/ + WMFrame *customPaletteFrm; + WMPopUpButton *customPaletteHistoryBtn; + WMFrame *customPaletteContentFrm; + WMPopUpButton *customPaletteMenuBtn; + WMView *customPaletteContentView; + + /* Color List Panel */ + WMFrame *colorListFrm; + WMPopUpButton *colorListHistoryBtn; + WMList *colorListContentLst; + WMPopUpButton *colorListColorMenuBtn; + WMPopUpButton *colorListListMenuBtn; + + /* Look-Up Tables and Images */ + wheelMatrix *wheelMtrx; + Pixmap wheelImg; + Pixmap selectionImg; + Pixmap selectionBackImg; + RImage *customPaletteImg; + char *lastBrowseDir; + + /* Common Data Fields */ + RColor color; /* Current color */ + RHSVColor hsvcolor; /* Backup HSV Color */ + WMColorPanelMode mode; /* Current color selection mode */ + WMColorPanelMode slidersmode; /* Current color selection mode at sliders panel */ + WMColorPanelMode lastChanged; /* Panel that last changed the color */ + int colx, coly; /* (x,y) of selection-marker in WheelMode */ + int palx, paly; /* (x,y) of selection-marker in CustomPaletteMode */ + float palXRatio, palYRatio; /* Ratios in x & y between original and scaled palettesize */ + int currentPalette; + char *configurationPath; + + struct { + unsigned int dragging:1; + unsigned int done:1; + } flags; } W_ColorPanel; enum { - menuNewFromFile, + menuNewFromFile, menuRename, menuRemove, menuCopy, menuNewFromClipboard } customPaletteMenuItem; -#define PWIDTH 194 -#define PHEIGHT 266 -#define colorWheelSize 150 -#define customPaletteWidth 182 -#define customPaletteHeight 106 -#define knobThickness 8 +#define PWIDTH 194 +#define PHEIGHT 266 +#define colorWheelSize 150 +#define customPaletteWidth 182 +#define customPaletteHeight 106 +#define knobThickness 8 -#define SPECTRUM_WIDTH 511 -#define SPECTRUM_HEIGHT 360 +#define SPECTRUM_WIDTH 511 +#define SPECTRUM_HEIGHT 360 -#define COLORWHEEL_PART 1 -#define CUSTOMPALETTE_PART 2 -#define BUFSIZE 1024 +#define COLORWHEEL_PART 1 +#define CUSTOMPALETTE_PART 2 +#define BUFSIZE 1024 -#undef EASTEREGG +#undef EASTEREGG #define RGBTXT "/usr/X11R6/lib/X11/rgb.txt" #define MAX_LENGTH 1024 +static void wAbort(); +static int fetchImageFile(char* toPath, char *imageSrcFile, char *imageDestFileName); +char *generateNewFilename(char *curName); -WMFont *globalFont; - - -static int fetchImageFile(char* toPath, char *imageSrcFile, char *imageDestFileName); -char *generateNewFilename(char *Path, char *curName); - -static void modeButtonCallback(WMWidget *w, void *data); -static int getPickerPart(W_ColorPanel *panel, int x, int y); +static void modeButtonCallback(WMWidget *w, void *data); +static int getPickerPart(W_ColorPanel *panel, int x, int y); static void readConfiguration(W_ColorPanel *panel); static void readXColors(W_ColorPanel *panel); -static wheelMatrix* wheelCreateMatrix(unsigned int width , unsigned int height); -static void wheelDestroyMatrix(wheelMatrix *matrix); -static wheelMatrix* wheelInitMatrix(W_ColorPanel *panel); -static void wheelRender(W_ColorPanel *panel); -static Bool wheelInsideColorWheel(W_ColorPanel *panel, unsigned long ofs); -static void wheelPaint(W_ColorPanel *panel); +static Cursor magnifyGrabPointer(W_ColorPanel *panel); +static WMPoint magnifyInitialize(W_ColorPanel *panel); +static void magnifyPutCursor(WMWidget *w, void *data); +static Pixmap magnifyCreatePixmap(WMColorPanel *panel); +static Pixmap magnifyGetStorePixmap(W_ColorPanel *panel, int x1, int y1, int x2, int y2); +static Pixmap magnifyGetImage(WMScreen *scr, int x, int y); + +static wheelMatrix* wheelCreateMatrix(unsigned int width , unsigned int height); +static void wheelDestroyMatrix(wheelMatrix *matrix); +static wheelMatrix* wheelInitMatrix(W_ColorPanel *panel); +static void wheelRender(W_ColorPanel *panel); +static Bool wheelInsideColorWheel(W_ColorPanel *panel, unsigned long ofs); +static void wheelPaint(W_ColorPanel *panel); static void wheelHandleEvents(XEvent *event, void *data); static void wheelHandleActionEvents(XEvent *event, void *data); @@ -191,13 +264,13 @@ static void wheelUndrawSelection(W_ColorPanel *panel); static void wheelPositionSelection(W_ColorPanel *panel, int x, int y); static void wheelPositionSelectionOutBounds(W_ColorPanel *panel, int x, int y); -static void wheelUpdateBrightnessGradientFromHSV (W_ColorPanel *panel, RHSVColor topColor); +static void wheelUpdateBrightnessGradientFromHSV (W_ColorPanel *panel, RHSVColor topColor); static void wheelUpdateBrightnessGradientFromLocation (W_ColorPanel *panel); static void wheelUpdateBrightnessGradient(W_ColorPanel *panel, RColor topColor); -static void grayBrightnessSliderCallback(WMWidget *w, void *data); +static void grayBrightnessSliderCallback(WMWidget *w, void *data); static void grayPresetButtonCallback(WMWidget *w, void *data); -static void grayBrightnessTextFieldCallback(void *observerData, WMNotification *notification); +static void grayBrightnessTextFieldCallback(void *observerData, WMNotification *notification); static void rgbSliderCallback(WMWidget *w, void *data); static void rgbTextFieldCallback(void *observerData, WMNotification *notification); @@ -207,9 +280,9 @@ static void cmykTextFieldCallback(void *observerData, WMNotification *notificati static void hsbSliderCallback(WMWidget *w, void *data); static void hsbTextFieldCallback(void *observerData, WMNotification *notification); -static void hsbUpdateBrightnessGradient(W_ColorPanel *panel); -static void hsbUpdateSaturationGradient(W_ColorPanel *panel); -static void hsbUpdateHueGradient(W_ColorPanel *panel); +static void hsbUpdateBrightnessGradient(W_ColorPanel *panel); +static void hsbUpdateSaturationGradient(W_ColorPanel *panel); +static void hsbUpdateHueGradient(W_ColorPanel *panel); static void customRenderSpectrum(W_ColorPanel *panel); static void customSetPalette(W_ColorPanel *panel); @@ -227,724 +300,738 @@ static void customPaletteMenuRemove(W_ColorPanel *panel); static void colorListPaintItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect); static void colorListSelect(WMWidget *w, void *data); -static void wheelInit(W_ColorPanel *panel); -static void grayInit(W_ColorPanel *panel); -static void rgbInit(W_ColorPanel *panel); -static void cmykInit(W_ColorPanel *panel); +static void wheelInit(W_ColorPanel *panel); +static void grayInit(W_ColorPanel *panel); +static void rgbInit(W_ColorPanel *panel); +static void cmykInit(W_ColorPanel *panel); static void hsbInit(W_ColorPanel *panel); +static void +wAbort () +{ + exit(1); +} + static WMColorPanel* makeColorPanel(WMScreen *scrPtr, char *name) { - WMColorPanel *panel; - RImage *image; - WMPixmap *pixmap; - RColor from; - RColor to; - int i; - int x,y; - - - globalFont = WMSystemFontOfSize(scrPtr, 12); - panel = wmalloc(sizeof(WMColorPanel)); - memset(panel, 0, sizeof(WMColorPanel)); - - panel->win = WMCreateWindowWithStyle(scrPtr, name, WMTitledWindowMask | WMClosableWindowMask | WMResizableWindowMask); - WMResizeWidget(panel->win, PWIDTH, PHEIGHT); - WMSetWindowTitle(panel->win, "Colors"); - - - /* Set Default ColorPanel Mode(s) */ - panel->mode = WMWheelModeColorPanel; - panel->lastChanged = WMWheelModeColorPanel; - panel->slidersmode = WMRGBModeColorPanel; - panel->configurationPath = wstrappend(wusergnusteppath(), "/Library/Colors/"); - - /* Some Generic Purpose Widgets */ - panel->colorWell = WMCreateColorWell(panel->win); - WMResizeWidget(panel->colorWell, 134, 36); - WSetColorWellBordered(panel->colorWell, False); - WMMoveWidget(panel->colorWell, 56, 4); - - panel->magnifyBtn = WMCreateCommandButton(panel->win); - WMResizeWidget(panel->magnifyBtn, 46, 36); - WMMoveWidget(panel->magnifyBtn, 6,4); - WMSetButtonImagePosition(panel->magnifyBtn, WIPImageOnly); - WMSetButtonImage(panel->magnifyBtn, scrPtr->magnifyIcon); - WMSetButtonAltImage(panel->magnifyBtn, scrPtr->magnifyAltIcon); - - panel->wheelBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->wheelBtn, 46, 32); - WMMoveWidget(panel->wheelBtn, 6, 44); - WMSetButtonAction(panel->wheelBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->wheelBtn, WIPImageOnly); - WMSetButtonImage(panel->wheelBtn, scrPtr->wheelIcon); - WMSetButtonAltImage(panel->wheelBtn, scrPtr->wheelAltIcon); - - panel->slidersBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->slidersBtn, 46, 32); - WMMoveWidget(panel->slidersBtn, 52, 44); - WMSetButtonAction(panel->slidersBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->slidersBtn, WIPImageOnly); - WMSetButtonImage(panel->slidersBtn, scrPtr->rgbIcon); - WMSetButtonAltImage(panel->slidersBtn, scrPtr->rgbAltIcon); - - panel->customPaletteBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->customPaletteBtn, 46, 32); - WMMoveWidget(panel->customPaletteBtn, 98, 44); - WMSetButtonAction(panel->customPaletteBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->customPaletteBtn, WIPImageOnly); - WMSetButtonImage(panel->customPaletteBtn, scrPtr->customPaletteIcon); - WMSetButtonAltImage(panel->customPaletteBtn, scrPtr->customPaletteAltIcon); - - panel->colorListBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->colorListBtn, 46, 32); - WMMoveWidget(panel->colorListBtn, 144, 44); - WMSetButtonAction(panel->colorListBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->colorListBtn, WIPImageOnly); - WMSetButtonImage(panel->colorListBtn, scrPtr->colorListIcon); - WMSetButtonAltImage(panel->colorListBtn, scrPtr->colorListAltIcon); - - /* Let's Group some of them together */ - WMGroupButtons(panel->wheelBtn, panel->slidersBtn); - WMGroupButtons(panel->wheelBtn, panel->customPaletteBtn); - WMGroupButtons(panel->wheelBtn, panel->colorListBtn); - - /* Widgets for the ColorWheel Panel */ - panel->wheelFrm = WMCreateFrame(panel->win); - WMSetFrameRelief(panel->wheelFrm, WRFlat); - WMResizeWidget(panel->wheelFrm, PWIDTH - 8, PHEIGHT - 80 - 26); - WMMoveWidget(panel->wheelFrm, 5, 80); - - panel->wheelView = W_CreateView(W_VIEW(panel->wheelFrm)); - /* XXX Can we create a view ? */ - W_ResizeView(panel->wheelView, colorWheelSize+4, colorWheelSize+4); - W_MoveView(panel->wheelView, 0, 0); - - /* Create an event handler to handle expose/click events in the ColorWheel */ - WMCreateEventHandler(panel->wheelView, ButtonPressMask|ButtonReleaseMask|EnterWindowMask - |LeaveWindowMask|ButtonMotionMask, wheelHandleActionEvents, panel); - - WMCreateEventHandler(panel->wheelView, ExposureMask, wheelHandleEvents, panel); - - panel->wheelBrightnessS = WMCreateSlider(panel->wheelFrm); - WMResizeWidget(panel->wheelBrightnessS, 16, 153); - WMMoveWidget(panel->wheelBrightnessS, 5+colorWheelSize+14, 1); - WMSetSliderMinValue(panel->wheelBrightnessS, 0); - WMSetSliderMaxValue(panel->wheelBrightnessS, 255); - WMSetSliderAction(panel->wheelBrightnessS, wheelBrightnessSliderCallback, panel); - WMSetSliderKnobThickness(panel->wheelBrightnessS, knobThickness); - - - /* Widgets for the Slider Panels */ - panel->slidersFrm = WMCreateFrame(panel->win); - WMSetFrameRelief(panel->slidersFrm, WRFlat); - WMResizeWidget(panel->slidersFrm, PWIDTH - 8, PHEIGHT - 80 - 26); - WMMoveWidget(panel->slidersFrm, 4, 80); - - panel->seperatorFrm = WMCreateFrame(panel->slidersFrm); - WMSetFrameRelief(panel->seperatorFrm, WRPushed); - WMResizeWidget(panel->seperatorFrm, PWIDTH - 8, 2); - WMMoveWidget(panel->seperatorFrm, 0, 1); - - panel->grayBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->grayBtn, 46, 24); - WMMoveWidget(panel->grayBtn, 1, 8); - WMSetButtonAction(panel->grayBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->grayBtn, WIPImageOnly); - WMSetButtonImage(panel->grayBtn, scrPtr->grayIcon); - WMSetButtonAltImage(panel->grayBtn, scrPtr->grayAltIcon); - - panel->rgbBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->rgbBtn, 46, 24); - WMMoveWidget(panel->rgbBtn, 47, 8); - WMSetButtonAction(panel->rgbBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->rgbBtn, WIPImageOnly); - WMSetButtonImage(panel->rgbBtn, scrPtr->rgbIcon); - WMSetButtonAltImage(panel->rgbBtn, scrPtr->rgbAltIcon); - - panel->cmykBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->cmykBtn, 46, 24); - WMMoveWidget(panel->cmykBtn, 93, 8); - WMSetButtonAction(panel->cmykBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->cmykBtn, WIPImageOnly); - WMSetButtonImage(panel->cmykBtn, scrPtr->cmykIcon); - WMSetButtonAltImage(panel->cmykBtn, scrPtr->cmykAltIcon); - - panel->hsbBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); - WMResizeWidget(panel->hsbBtn, 46, 24); - WMMoveWidget(panel->hsbBtn, 139, 8); - WMSetButtonAction(panel->hsbBtn, modeButtonCallback, panel); - WMSetButtonImagePosition(panel->hsbBtn, WIPImageOnly); - WMSetButtonImage(panel->hsbBtn, scrPtr->hsbIcon); - WMSetButtonAltImage(panel->hsbBtn, scrPtr->hsbAltIcon); - - /* Let's Group the Slider Panel Buttons Together */ - WMGroupButtons(panel->grayBtn, panel->rgbBtn); - WMGroupButtons(panel->grayBtn, panel->cmykBtn); - WMGroupButtons(panel->grayBtn, panel->hsbBtn); - - /* Widgets for GrayScale Panel */ - panel->grayFrm = WMCreateFrame(panel->slidersFrm); - WMSetFrameRelief(panel->grayFrm, WRFlat); - WMResizeWidget(panel->grayFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); - WMMoveWidget(panel->grayFrm, 0, 34); - - panel->grayMinL = WMCreateLabel(panel->grayFrm); - WMResizeWidget(panel->grayMinL, 20, 10); - WMMoveWidget(panel->grayMinL, 2, 2); - WMSetLabelText(panel->grayMinL, "0"); - WMSetLabelTextAlignment(panel->grayMinL, WALeft); - WMSetLabelTextColor(panel->grayMinL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->grayMinL, WMSystemFontOfSize(scrPtr, 8)); - - panel->grayMaxL = WMCreateLabel(panel->grayFrm); - WMResizeWidget(panel->grayMaxL, 40, 10); - WMMoveWidget(panel->grayMaxL, 104, 2); - WMSetLabelText(panel->grayMaxL, "100"); - WMSetLabelTextAlignment(panel->grayMaxL, WARight); - WMSetLabelTextColor(panel->grayMaxL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->grayMaxL, WMSystemFontOfSize(scrPtr, 8)); - - panel->grayBrightnessS = WMCreateSlider(panel->grayFrm); - WMResizeWidget(panel->grayBrightnessS, 141, 16); - WMMoveWidget(panel->grayBrightnessS, 2, 14); - WMSetSliderMinValue(panel->grayBrightnessS, 0); - WMSetSliderMaxValue(panel->grayBrightnessS, 100); - WMSetSliderKnobThickness(panel->grayBrightnessS, knobThickness); - WMSetSliderAction(panel->grayBrightnessS, grayBrightnessSliderCallback, panel); - - from.red = 0; - from.green = 0; - from.blue = 0; - - to.red = 255; - to.green = 255; - to.blue = 255; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - RDestroyImage(image); - W_PaintText(W_VIEW(panel->grayBrightnessS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Brightness", strlen("Brightness")); - WMSetSliderImage(panel->grayBrightnessS, pixmap); - WMReleasePixmap(pixmap); - - panel->grayBrightnessT = WMCreateTextField(panel->grayFrm); - WMResizeWidget(panel->grayBrightnessT, 40, 18); - WMMoveWidget(panel->grayBrightnessT, 146, 13); - WMSetTextFieldAlignment(panel->grayBrightnessT, WALeft); - WMAddNotificationObserver(grayBrightnessTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->grayBrightnessT); - - image = RCreateImage(13,13,False); - for (i=0; i < 7; i++) { - for (x=0; x < 13; x++) { - for (y=0; y < 13; y++) { - image->data[0][y*13+x] = 255/6*i; - image->data[1][y*13+x] = 255/6*i; - image->data[2][y*13+x] = 255/6*i; - } - } - panel->grayPresetBtn[i] = WMCreateCommandButton(panel->grayFrm); - WMResizeWidget(panel->grayPresetBtn[i], 20, 24); - WMMoveWidget(panel->grayPresetBtn[i], 2+(i*20), 34); - WMSetButtonAction(panel->grayPresetBtn[i], grayPresetButtonCallback, panel); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - WMSetButtonImage(panel->grayPresetBtn[i], pixmap); - WMSetButtonImagePosition(panel->grayPresetBtn[i], WIPImageOnly); - WMReleasePixmap(pixmap); - } - RDestroyImage(image); - /* End of GrayScale Panel */ - - /* Widgets for RGB Panel */ - panel->rgbFrm = WMCreateFrame(panel->slidersFrm); - WMSetFrameRelief(panel->rgbFrm, WRFlat); - WMResizeWidget(panel->rgbFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); - WMMoveWidget(panel->rgbFrm, 0, 34); - - panel->rgbMinL = WMCreateLabel(panel->rgbFrm); - WMResizeWidget(panel->rgbMinL, 20, 10); - WMMoveWidget(panel->rgbMinL, 2, 2); - WMSetLabelText(panel->rgbMinL, "0"); - WMSetLabelTextAlignment(panel->rgbMinL, WALeft); - WMSetLabelTextColor(panel->rgbMinL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->rgbMinL, WMSystemFontOfSize(scrPtr, 8)); - - panel->rgbMaxL = WMCreateLabel(panel->rgbFrm); - WMResizeWidget(panel->rgbMaxL, 40, 10); - WMMoveWidget(panel->rgbMaxL, 104, 2); - WMSetLabelText(panel->rgbMaxL, "255"); - WMSetLabelTextAlignment(panel->rgbMaxL, WARight); - WMSetLabelTextColor(panel->rgbMaxL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->rgbMaxL, WMSystemFontOfSize(scrPtr, 8)); - - panel->rgbRedS = WMCreateSlider(panel->rgbFrm); - WMResizeWidget(panel->rgbRedS, 141, 16); - WMMoveWidget(panel->rgbRedS, 2, 14); - WMSetSliderMinValue(panel->rgbRedS, 0); - WMSetSliderMaxValue(panel->rgbRedS, 255); - WMSetSliderKnobThickness(panel->rgbRedS, knobThickness); - WMSetSliderAction(panel->rgbRedS, rgbSliderCallback, panel); - - to.red = 255; - to.green = 0; - to.blue = 0; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->rgbRedS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Red", strlen("Red")); - RDestroyImage(image); - WMSetSliderImage(panel->rgbRedS, pixmap); - WMReleasePixmap(pixmap); - - panel->rgbRedT = WMCreateTextField(panel->rgbFrm); - WMResizeWidget(panel->rgbRedT, 40, 18); - WMMoveWidget(panel->rgbRedT, 146, 13); - WMSetTextFieldAlignment(panel->rgbRedT, WALeft); - WMAddNotificationObserver(rgbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->rgbRedT); - - - panel->rgbGreenS = WMCreateSlider(panel->rgbFrm); - WMResizeWidget(panel->rgbGreenS, 141, 16); - WMMoveWidget(panel->rgbGreenS, 2, 36); - WMSetSliderMinValue(panel->rgbGreenS, 0); - WMSetSliderMaxValue(panel->rgbGreenS, 255); - WMSetSliderKnobThickness(panel->rgbGreenS, knobThickness); - WMSetSliderAction(panel->rgbGreenS, rgbSliderCallback, panel); - - to.red = 0; - to.green = 255; - to.blue = 0; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->rgbGreenS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Green", strlen("Green")); - RDestroyImage(image); - WMSetSliderImage(panel->rgbGreenS, pixmap); - WMReleasePixmap(pixmap); - - panel->rgbGreenT = WMCreateTextField(panel->rgbFrm); - WMResizeWidget(panel->rgbGreenT, 40, 18); - WMMoveWidget(panel->rgbGreenT, 146, 35); - WMSetTextFieldAlignment(panel->rgbGreenT, WALeft); - WMAddNotificationObserver(rgbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->rgbGreenT); - - - panel->rgbBlueS = WMCreateSlider(panel->rgbFrm); - WMResizeWidget(panel->rgbBlueS, 141, 16); - WMMoveWidget(panel->rgbBlueS, 2, 58); - WMSetSliderMinValue(panel->rgbBlueS, 0); - WMSetSliderMaxValue(panel->rgbBlueS, 255); - WMSetSliderKnobThickness(panel->rgbBlueS, knobThickness); - WMSetSliderAction(panel->rgbBlueS, rgbSliderCallback, panel); - - to.red = 0; - to.green = 0; - to.blue = 255; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->rgbBlueS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Blue", strlen("Blue")); - RDestroyImage(image); - WMSetSliderImage(panel->rgbBlueS, pixmap); - WMReleasePixmap(pixmap); - - panel->rgbBlueT = WMCreateTextField(panel->rgbFrm); - WMResizeWidget(panel->rgbBlueT, 40, 18); - WMMoveWidget(panel->rgbBlueT, 146, 57); - WMSetTextFieldAlignment(panel->rgbBlueT, WALeft); - WMAddNotificationObserver(rgbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->rgbBlueT); - /* End of RGB Panel */ - - /* Widgets for CMYK Panel */ - panel->cmykFrm = WMCreateFrame(panel->slidersFrm); - WMSetFrameRelief(panel->cmykFrm, WRFlat); - WMResizeWidget(panel->cmykFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); - WMMoveWidget(panel->cmykFrm, 0, 34); - - panel->cmykMinL = WMCreateLabel(panel->cmykFrm); - WMResizeWidget(panel->cmykMinL, 20, 10); - WMMoveWidget(panel->cmykMinL, 2, 2); - WMSetLabelText(panel->cmykMinL, "0"); - WMSetLabelTextAlignment(panel->cmykMinL, WALeft); - WMSetLabelTextColor(panel->cmykMinL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->cmykMinL, WMSystemFontOfSize(scrPtr, 8)); - - panel->cmykMaxL = WMCreateLabel(panel->cmykFrm); - WMResizeWidget(panel->cmykMaxL, 40, 10); - WMMoveWidget(panel->cmykMaxL, 104, 2); - WMSetLabelText(panel->cmykMaxL, "100"); - WMSetLabelTextAlignment(panel->cmykMaxL, WARight); - WMSetLabelTextColor(panel->cmykMaxL, WMDarkGrayColor(scrPtr)); - WMSetLabelFont(panel->cmykMaxL, WMSystemFontOfSize(scrPtr, 8)); - - panel->cmykCyanS = WMCreateSlider(panel->cmykFrm); - WMResizeWidget(panel->cmykCyanS, 141, 16); - WMMoveWidget(panel->cmykCyanS, 2, 14); - WMSetSliderMinValue(panel->cmykCyanS, 0); - WMSetSliderMaxValue(panel->cmykCyanS, 100); - WMSetSliderKnobThickness(panel->cmykCyanS, knobThickness); - WMSetSliderAction(panel->cmykCyanS, cmykSliderCallback, panel); - - from.red = 255; - from.green = 255; - from.blue = 255; - - to.red = 0; - to.green = 255; - to.blue = 255; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->cmykCyanS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Cyan", strlen("Cyan")); - RDestroyImage(image); - WMSetSliderImage(panel->cmykCyanS, pixmap); - WMReleasePixmap(pixmap); - - panel->cmykCyanT = WMCreateTextField(panel->cmykFrm); - WMResizeWidget(panel->cmykCyanT, 40, 18); - WMMoveWidget(panel->cmykCyanT, 146, 13); - WMSetTextFieldAlignment(panel->cmykCyanT, WALeft); - WMAddNotificationObserver(cmykTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->cmykCyanT); - - - panel->cmykMagentaS = WMCreateSlider(panel->cmykFrm); - WMResizeWidget(panel->cmykMagentaS, 141, 16); - WMMoveWidget(panel->cmykMagentaS, 2, 36); - WMSetSliderMinValue(panel->cmykMagentaS, 0); - WMSetSliderMaxValue(panel->cmykMagentaS, 100); - WMSetSliderKnobThickness(panel->cmykMagentaS, knobThickness); - WMSetSliderAction(panel->cmykMagentaS, cmykSliderCallback, panel); - - to.red = 255; - to.green = 0; - to.blue = 255; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->cmykMagentaS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Magenta", strlen("Magenta")); - RDestroyImage(image); - WMSetSliderImage(panel->cmykMagentaS, pixmap); - WMReleasePixmap(pixmap); - - panel->cmykMagentaT = WMCreateTextField(panel->cmykFrm); - WMResizeWidget(panel->cmykMagentaT, 40, 18); - WMMoveWidget(panel->cmykMagentaT, 146, 35); - WMSetTextFieldAlignment(panel->cmykMagentaT, WALeft); - WMAddNotificationObserver(cmykTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->cmykMagentaT); - - - panel->cmykYellowS = WMCreateSlider(panel->cmykFrm); - WMResizeWidget(panel->cmykYellowS, 141, 16); - WMMoveWidget(panel->cmykYellowS, 2, 58); - WMSetSliderMinValue(panel->cmykYellowS, 0); - WMSetSliderMaxValue(panel->cmykYellowS, 100); - WMSetSliderKnobThickness(panel->cmykYellowS, knobThickness); - WMSetSliderAction(panel->cmykYellowS, cmykSliderCallback, panel); - - to.red = 255; - to.green = 255; - to.blue = 0; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->cmykYellowS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Yellow", strlen("Yellow")); - RDestroyImage(image); - WMSetSliderImage(panel->cmykYellowS, pixmap); - WMReleasePixmap(pixmap); - - panel->cmykYellowT = WMCreateTextField(panel->cmykFrm); - WMResizeWidget(panel->cmykYellowT, 40, 18); - WMMoveWidget(panel->cmykYellowT, 146, 57); - WMSetTextFieldAlignment(panel->cmykYellowT, WALeft); - WMAddNotificationObserver(cmykTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->cmykYellowT); - - - panel->cmykBlackS = WMCreateSlider(panel->cmykFrm); - WMResizeWidget(panel->cmykBlackS, 141, 16); - WMMoveWidget(panel->cmykBlackS, 2, 80); - WMSetSliderMinValue(panel->cmykBlackS, 0); - WMSetSliderMaxValue(panel->cmykBlackS, 100); - WMSetSliderValue(panel->cmykBlackS, 0); - WMSetSliderKnobThickness(panel->cmykBlackS, knobThickness); - WMSetSliderAction(panel->cmykBlackS, cmykSliderCallback, panel); - - to.red = 0; - to.green = 0; - to.blue = 0; - - image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); - W_PaintText(W_VIEW(panel->cmykBlackS), pixmap->pixmap, WMSystemFontOfSize(scrPtr, 12), 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Black", strlen("Black")); - RDestroyImage(image); - WMSetSliderImage(panel->cmykBlackS, pixmap); - WMReleasePixmap(pixmap); - - panel->cmykBlackT = WMCreateTextField(panel->cmykFrm); - WMResizeWidget(panel->cmykBlackT, 40, 18); - WMMoveWidget(panel->cmykBlackT, 146, 79); - WMSetTextFieldAlignment(panel->cmykBlackT, WALeft); - WMAddNotificationObserver(cmykTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->cmykBlackT); - /* End of CMYK Panel */ - - /* Widgets for HSB Panel */ - panel->hsbFrm = WMCreateFrame(panel->slidersFrm); - WMSetFrameRelief(panel->hsbFrm, WRFlat); - WMResizeWidget(panel->hsbFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); - WMMoveWidget(panel->hsbFrm, 0, 34); - - panel->hsbHueS = WMCreateSlider(panel->hsbFrm); - WMResizeWidget(panel->hsbHueS, 141, 16); - WMMoveWidget(panel->hsbHueS, 2, 14); - WMSetSliderMinValue(panel->hsbHueS, 0); - WMSetSliderMaxValue(panel->hsbHueS, 359); - WMSetSliderKnobThickness(panel->hsbHueS, knobThickness); - WMSetSliderAction(panel->hsbHueS, hsbSliderCallback, panel); - - panel->hsbHueT = WMCreateTextField(panel->hsbFrm); - WMResizeWidget(panel->hsbHueT, 40, 18); - WMMoveWidget(panel->hsbHueT, 146, 13); - WMSetTextFieldAlignment(panel->hsbHueT, WALeft); - WMAddNotificationObserver(hsbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->hsbHueT); - - - panel->hsbSaturationS = WMCreateSlider(panel->hsbFrm); - WMResizeWidget(panel->hsbSaturationS, 141, 16); - WMMoveWidget(panel->hsbSaturationS, 2, 36); - WMSetSliderMinValue(panel->hsbSaturationS, 0); - WMSetSliderMaxValue(panel->hsbSaturationS, 100); - WMSetSliderKnobThickness(panel->hsbSaturationS, knobThickness); - WMSetSliderAction(panel->hsbSaturationS, hsbSliderCallback, panel); - - panel->hsbSaturationT = WMCreateTextField(panel->hsbFrm); - WMResizeWidget(panel->hsbSaturationT, 40, 18); - WMMoveWidget(panel->hsbSaturationT, 146, 35); - WMSetTextFieldAlignment(panel->hsbSaturationT, WALeft); - WMAddNotificationObserver(hsbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->hsbSaturationT); - - - panel->hsbBrightnessS = WMCreateSlider(panel->hsbFrm); - WMResizeWidget(panel->hsbBrightnessS, 141, 16); - WMMoveWidget(panel->hsbBrightnessS, 2, 58); - WMSetSliderMinValue(panel->hsbBrightnessS, 0); - WMSetSliderMaxValue(panel->hsbBrightnessS, 100); - WMSetSliderKnobThickness(panel->hsbBrightnessS, knobThickness); - WMSetSliderAction(panel->hsbBrightnessS, hsbSliderCallback, panel); - - panel->hsbBrightnessT = WMCreateTextField(panel->hsbFrm); - WMResizeWidget(panel->hsbBrightnessT, 40, 18); - WMMoveWidget(panel->hsbBrightnessT, 146, 57); - WMSetTextFieldAlignment(panel->hsbBrightnessT, WALeft); - WMAddNotificationObserver(hsbTextFieldCallback, panel, \ - WMTextDidEndEditingNotification, panel->hsbBrightnessT); - /* End of HSB Panel */ - - /* Widgets for the CustomPalette Panel */ - panel->customPaletteFrm = WMCreateFrame(panel->win); - WMSetFrameRelief(panel->customPaletteFrm, WRFlat); - WMResizeWidget(panel->customPaletteFrm, PWIDTH - 8, PHEIGHT - 80 - 26); - WMMoveWidget(panel->customPaletteFrm, 5, 80); - - panel->customPaletteHistoryBtn = WMCreatePopUpButton(panel->customPaletteFrm); - WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, "Spectrum"); - WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)-1); - WMSetPopUpButtonAction(panel->customPaletteHistoryBtn, customPaletteHistoryCallback, panel); - WMResizeWidget(panel->customPaletteHistoryBtn, PWIDTH - 8, 20); - WMMoveWidget(panel->customPaletteHistoryBtn, 0, 0); - - panel->customPaletteContentFrm = WMCreateFrame(panel->customPaletteFrm); - WMSetFrameRelief(panel->customPaletteContentFrm, WRSunken); - WMResizeWidget(panel->customPaletteContentFrm, PWIDTH - 8, PHEIGHT - 156); - WMMoveWidget(panel->customPaletteContentFrm, 0, 23); - - panel->customPaletteContentView = W_CreateView(W_VIEW(panel->customPaletteContentFrm)); - /* XXX Can we create a view ? */ - W_ResizeView(panel->customPaletteContentView, customPaletteWidth, customPaletteHeight); - W_MoveView(panel->customPaletteContentView, 2, 2); - - /* Create an event handler to handle expose/click events in the CustomPalette */ - WMCreateEventHandler(panel->customPaletteContentView, ButtonPressMask|ButtonReleaseMask|EnterWindowMask - |LeaveWindowMask|ButtonMotionMask, customPaletteHandleActionEvents, panel); - - WMCreateEventHandler(panel->customPaletteContentView, ExposureMask, customPaletteHandleEvents, panel); - - panel->customPaletteMenuBtn = WMCreatePopUpButton(panel->customPaletteFrm); - WMSetPopUpButtonPullsDown(panel->customPaletteMenuBtn, 1); - WMSetPopUpButtonText(panel->customPaletteMenuBtn, "Palette"); - WMSetPopUpButtonAction(panel->customPaletteMenuBtn, customPaletteMenuCallback, panel); - WMResizeWidget(panel->customPaletteMenuBtn, PWIDTH - 8, 20); - WMMoveWidget(panel->customPaletteMenuBtn, 0, PHEIGHT - 130); - - WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "New from File..."); /* item 0 */ - WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Rename..."); /* item 1 */ - WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Remove"); /* item 2 */ - WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Copy"); /* item 3 */ - WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "New from Clipboard"); /* item 4 */ - - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 1, 0); - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 2, 0); - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 3, 0); - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 4, 0); - - customRenderSpectrum(panel); - panel->currentPalette = 0; - - - /* Widgets for the ColorList Panel */ - panel->colorListFrm = WMCreateFrame(panel->win); - WMSetFrameRelief(panel->colorListFrm, WRFlat); - WMResizeWidget(panel->colorListFrm, PWIDTH - 8, PHEIGHT - 80 - 26); - WMMoveWidget(panel->colorListFrm, 5, 80); - - panel->colorListHistoryBtn = WMCreatePopUpButton(panel->colorListFrm); - WMAddPopUpButtonItem(panel->colorListHistoryBtn, "X11-Colors"); - WMSetPopUpButtonSelectedItem(panel->colorListHistoryBtn, WMGetPopUpButtonNumberOfItems(panel->colorListHistoryBtn)-1); -// WMSetPopUpButtonAction(panel->colorListHistoryBtn, colorListHistoryCallback, panel); - WMResizeWidget(panel->colorListHistoryBtn, PWIDTH - 8, 20); - WMMoveWidget(panel->colorListHistoryBtn, 0, 0); - - panel->colorListContentLst = WMCreateList(panel->colorListFrm); - WMSetListAction(panel->colorListContentLst, colorListSelect, panel); - WMSetListUserDrawProc(panel->colorListContentLst, colorListPaintItem); - WMResizeWidget(panel->colorListContentLst, PWIDTH - 8, PHEIGHT - 156); - WMMoveWidget(panel->colorListContentLst, 0, 23); - - panel->colorListColorMenuBtn = WMCreatePopUpButton(panel->colorListFrm); - WMSetPopUpButtonPullsDown(panel->colorListColorMenuBtn, 1); - WMSetPopUpButtonText(panel->colorListColorMenuBtn, "Color"); -// WMSetPopUpButtonAction(panel->colorListColorMenuBtn, colorListColorMenuCallback, panel); - WMResizeWidget(panel->colorListColorMenuBtn, (PWIDTH - 16)/2, 20); - WMMoveWidget(panel->colorListColorMenuBtn, 0, PHEIGHT - 130); - - panel->colorListListMenuBtn = WMCreatePopUpButton(panel->colorListFrm); - WMSetPopUpButtonPullsDown(panel->colorListListMenuBtn, 1); - WMSetPopUpButtonText(panel->colorListListMenuBtn, "List"); -// WMSetPopUpButtonAction(panel->colorListListMenuBtn, colorListListMenuCallback, panel); - WMResizeWidget(panel->colorListListMenuBtn, (PWIDTH - 16)/2, 20); - WMMoveWidget(panel->colorListListMenuBtn, (PWIDTH - 16)/2 + 8, PHEIGHT - 130); - - - WMRealizeWidget(panel->win); - WMMapSubwidgets(panel->win); - - WMMapSubwidgets(panel->wheelFrm); - WMMapSubwidgets(panel->slidersFrm); - WMMapSubwidgets(panel->grayFrm); - WMMapSubwidgets(panel->rgbFrm); - WMMapSubwidgets(panel->cmykFrm); - WMMapSubwidgets(panel->hsbFrm); - WMMapSubwidgets(panel->customPaletteFrm); - WMMapSubwidgets(panel->customPaletteContentFrm); - WMMapSubwidgets(panel->colorListFrm); - - readConfiguration(panel); - readXColors(panel); - - return panel; + WMColorPanel *panel; + RImage *image; + WMPixmap *pixmap; + RColor from; + RColor to; + WMColor *textcolor; + int i; + int x,y; + + + panel = wmalloc(sizeof(WMColorPanel)); + memset(panel, 0, sizeof(WMColorPanel)); + + panel->font8 = WMSystemFontOfSize(scrPtr, 8); + panel->font12 = WMSystemFontOfSize(scrPtr, 12); + + panel->win = WMCreateWindowWithStyle(scrPtr, name, WMTitledWindowMask | WMClosableWindowMask | WMResizableWindowMask); + WMResizeWidget(panel->win, PWIDTH, PHEIGHT); + WMSetWindowTitle(panel->win, "Colors"); + + + /* Set Default ColorPanel Mode(s) */ + panel->mode = WMWheelModeColorPanel; + panel->lastChanged = WMWheelModeColorPanel; + panel->slidersmode = WMRGBModeColorPanel; + panel->configurationPath = wstrappend(wusergnusteppath(), "/Library/Colors/"); + + /* Some Generic Purpose Widgets */ + panel->colorWell = WMCreateColorWell(panel->win); + WMResizeWidget(panel->colorWell, 134, 36); + WSetColorWellBordered(panel->colorWell, False); + WMMoveWidget(panel->colorWell, 56, 4); + + panel->magnifyBtn = WMCreateCommandButton(panel->win); + WMResizeWidget(panel->magnifyBtn, 46, 36); + WMMoveWidget(panel->magnifyBtn, 6,4); + WMSetButtonAction(panel->magnifyBtn, magnifyPutCursor, panel); + WMSetButtonImagePosition(panel->magnifyBtn, WIPImageOnly); + WMSetButtonImage(panel->magnifyBtn, scrPtr->magnifyIcon); + WMSetButtonAltImage(panel->magnifyBtn, scrPtr->altMagnifyIcon); + + panel->wheelBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->wheelBtn, 46, 32); + WMMoveWidget(panel->wheelBtn, 6, 44); + WMSetButtonAction(panel->wheelBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->wheelBtn, WIPImageOnly); + WMSetButtonImage(panel->wheelBtn, scrPtr->wheelIcon); + + panel->slidersBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->slidersBtn, 46, 32); + WMMoveWidget(panel->slidersBtn, 52, 44); + WMSetButtonAction(panel->slidersBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->slidersBtn, WIPImageOnly); + WMSetButtonImage(panel->slidersBtn, scrPtr->rgbIcon); + + panel->customPaletteBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->customPaletteBtn, 46, 32); + WMMoveWidget(panel->customPaletteBtn, 98, 44); + WMSetButtonAction(panel->customPaletteBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->customPaletteBtn, WIPImageOnly); + WMSetButtonImage(panel->customPaletteBtn, scrPtr->customPaletteIcon); + + panel->colorListBtn = WMCreateCustomButton(panel->win, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->colorListBtn, 46, 32); + WMMoveWidget(panel->colorListBtn, 144, 44); + WMSetButtonAction(panel->colorListBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->colorListBtn, WIPImageOnly); + WMSetButtonImage(panel->colorListBtn, scrPtr->colorListIcon); + + /* Let's Group some of them together */ + WMGroupButtons(panel->wheelBtn, panel->slidersBtn); + WMGroupButtons(panel->wheelBtn, panel->customPaletteBtn); + WMGroupButtons(panel->wheelBtn, panel->colorListBtn); + + /* Widgets for the ColorWheel Panel */ + panel->wheelFrm = WMCreateFrame(panel->win); + WMSetFrameRelief(panel->wheelFrm, WRFlat); + WMResizeWidget(panel->wheelFrm, PWIDTH - 8, PHEIGHT - 80 - 26); + WMMoveWidget(panel->wheelFrm, 5, 80); + + panel->wheelView = W_CreateView(W_VIEW(panel->wheelFrm)); + /* XXX Can we create a view ? */ + W_ResizeView(panel->wheelView, colorWheelSize+4, colorWheelSize+4); + W_MoveView(panel->wheelView, 0, 0); + + /* Create an event handler to handle expose/click events in the ColorWheel */ + WMCreateEventHandler(panel->wheelView, ButtonPressMask|ButtonReleaseMask|EnterWindowMask + |LeaveWindowMask|ButtonMotionMask, wheelHandleActionEvents, panel); + + WMCreateEventHandler(panel->wheelView, ExposureMask, wheelHandleEvents, panel); + + panel->wheelBrightnessS = WMCreateSlider(panel->wheelFrm); + WMResizeWidget(panel->wheelBrightnessS, 16, 153); + WMMoveWidget(panel->wheelBrightnessS, 5+colorWheelSize+14, 1); + WMSetSliderMinValue(panel->wheelBrightnessS, 0); + WMSetSliderMaxValue(panel->wheelBrightnessS, 255); + WMSetSliderAction(panel->wheelBrightnessS, wheelBrightnessSliderCallback, panel); + WMSetSliderKnobThickness(panel->wheelBrightnessS, knobThickness); + + + /* Widgets for the Slider Panels */ + panel->slidersFrm = WMCreateFrame(panel->win); + WMSetFrameRelief(panel->slidersFrm, WRFlat); + WMResizeWidget(panel->slidersFrm, PWIDTH - 8, PHEIGHT - 80 - 26); + WMMoveWidget(panel->slidersFrm, 4, 80); + + panel->seperatorFrm = WMCreateFrame(panel->slidersFrm); + WMSetFrameRelief(panel->seperatorFrm, WRPushed); + WMResizeWidget(panel->seperatorFrm, PWIDTH - 8, 2); + WMMoveWidget(panel->seperatorFrm, 0, 1); + + panel->grayBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->grayBtn, 46, 24); + WMMoveWidget(panel->grayBtn, 1, 8); + WMSetButtonAction(panel->grayBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->grayBtn, WIPImageOnly); + WMSetButtonImage(panel->grayBtn, scrPtr->grayIcon); + + panel->rgbBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->rgbBtn, 46, 24); + WMMoveWidget(panel->rgbBtn, 47, 8); + WMSetButtonAction(panel->rgbBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->rgbBtn, WIPImageOnly); + WMSetButtonImage(panel->rgbBtn, scrPtr->rgbIcon); + + panel->cmykBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->cmykBtn, 46, 24); + WMMoveWidget(panel->cmykBtn, 93, 8); + WMSetButtonAction(panel->cmykBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->cmykBtn, WIPImageOnly); + WMSetButtonImage(panel->cmykBtn, scrPtr->cmykIcon); + + panel->hsbBtn = WMCreateCustomButton(panel->slidersFrm, WBBStateLightMask|WBBStateChangeMask); + WMResizeWidget(panel->hsbBtn, 46, 24); + WMMoveWidget(panel->hsbBtn, 139, 8); + WMSetButtonAction(panel->hsbBtn, modeButtonCallback, panel); + WMSetButtonImagePosition(panel->hsbBtn, WIPImageOnly); + WMSetButtonImage(panel->hsbBtn, scrPtr->hsbIcon); + + /* Let's Group the Slider Panel Buttons Together */ + WMGroupButtons(panel->grayBtn, panel->rgbBtn); + WMGroupButtons(panel->grayBtn, panel->cmykBtn); + WMGroupButtons(panel->grayBtn, panel->hsbBtn); + + textcolor = WMDarkGrayColor(scrPtr); + + /* Widgets for GrayScale Panel */ + panel->grayFrm = WMCreateFrame(panel->slidersFrm); + WMSetFrameRelief(panel->grayFrm, WRFlat); + WMResizeWidget(panel->grayFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); + WMMoveWidget(panel->grayFrm, 0, 34); + + panel->grayMinL = WMCreateLabel(panel->grayFrm); + WMResizeWidget(panel->grayMinL, 20, 10); + WMMoveWidget(panel->grayMinL, 2, 2); + WMSetLabelText(panel->grayMinL, "0"); + WMSetLabelTextAlignment(panel->grayMinL, WALeft); + WMSetLabelTextColor(panel->grayMinL, textcolor); + WMSetLabelFont(panel->grayMinL, panel->font8); + + panel->grayMaxL = WMCreateLabel(panel->grayFrm); + WMResizeWidget(panel->grayMaxL, 40, 10); + WMMoveWidget(panel->grayMaxL, 104, 2); + WMSetLabelText(panel->grayMaxL, "100"); + WMSetLabelTextAlignment(panel->grayMaxL, WARight); + WMSetLabelTextColor(panel->grayMaxL, textcolor); + WMSetLabelFont(panel->grayMaxL, panel->font8); + + panel->grayBrightnessS = WMCreateSlider(panel->grayFrm); + WMResizeWidget(panel->grayBrightnessS, 141, 16); + WMMoveWidget(panel->grayBrightnessS, 2, 14); + WMSetSliderMinValue(panel->grayBrightnessS, 0); + WMSetSliderMaxValue(panel->grayBrightnessS, 100); + WMSetSliderKnobThickness(panel->grayBrightnessS, knobThickness); + WMSetSliderAction(panel->grayBrightnessS, grayBrightnessSliderCallback, panel); + + from.red = 0; + from.green = 0; + from.blue = 0; + + to.red = 255; + to.green = 255; + to.blue = 255; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + RDestroyImage(image); + W_PaintText(W_VIEW(panel->grayBrightnessS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Brightness", strlen("Brightness")); + WMSetSliderImage(panel->grayBrightnessS, pixmap); + WMReleasePixmap(pixmap); + + panel->grayBrightnessT = WMCreateTextField(panel->grayFrm); + WMResizeWidget(panel->grayBrightnessT, 40, 18); + WMMoveWidget(panel->grayBrightnessT, 146, 13); + WMSetTextFieldAlignment(panel->grayBrightnessT, WALeft); + WMAddNotificationObserver(grayBrightnessTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->grayBrightnessT); + + image = RCreateImage(13,13,False); + for (i=0; i < 7; i++) { + for (x=0; x < 13; x++) { + for (y=0; y < 13; y++) { + image->data[0][y*13+x] = 255/6*i; + image->data[1][y*13+x] = 255/6*i; + image->data[2][y*13+x] = 255/6*i; + } + } + panel->grayPresetBtn[i] = WMCreateCommandButton(panel->grayFrm); + WMResizeWidget(panel->grayPresetBtn[i], 20, 24); + WMMoveWidget(panel->grayPresetBtn[i], 2+(i*20), 34); + WMSetButtonAction(panel->grayPresetBtn[i], grayPresetButtonCallback, panel); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + WMSetButtonImage(panel->grayPresetBtn[i], pixmap); + WMSetButtonImagePosition(panel->grayPresetBtn[i], WIPImageOnly); + WMReleasePixmap(pixmap); + } + RDestroyImage(image); + /* End of GrayScale Panel */ + + /* Widgets for RGB Panel */ + panel->rgbFrm = WMCreateFrame(panel->slidersFrm); + WMSetFrameRelief(panel->rgbFrm, WRFlat); + WMResizeWidget(panel->rgbFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); + WMMoveWidget(panel->rgbFrm, 0, 34); + + panel->rgbMinL = WMCreateLabel(panel->rgbFrm); + WMResizeWidget(panel->rgbMinL, 20, 10); + WMMoveWidget(panel->rgbMinL, 2, 2); + WMSetLabelText(panel->rgbMinL, "0"); + WMSetLabelTextAlignment(panel->rgbMinL, WALeft); + WMSetLabelTextColor(panel->rgbMinL, textcolor); + WMSetLabelFont(panel->rgbMinL, panel->font8); + + panel->rgbMaxL = WMCreateLabel(panel->rgbFrm); + WMResizeWidget(panel->rgbMaxL, 40, 10); + WMMoveWidget(panel->rgbMaxL, 104, 2); + WMSetLabelText(panel->rgbMaxL, "255"); + WMSetLabelTextAlignment(panel->rgbMaxL, WARight); + WMSetLabelTextColor(panel->rgbMaxL, textcolor); + WMSetLabelFont(panel->rgbMaxL, panel->font8); + + panel->rgbRedS = WMCreateSlider(panel->rgbFrm); + WMResizeWidget(panel->rgbRedS, 141, 16); + WMMoveWidget(panel->rgbRedS, 2, 14); + WMSetSliderMinValue(panel->rgbRedS, 0); + WMSetSliderMaxValue(panel->rgbRedS, 255); + WMSetSliderKnobThickness(panel->rgbRedS, knobThickness); + WMSetSliderAction(panel->rgbRedS, rgbSliderCallback, panel); + + to.red = 255; + to.green = 0; + to.blue = 0; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->rgbRedS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Red", strlen("Red")); + RDestroyImage(image); + WMSetSliderImage(panel->rgbRedS, pixmap); + WMReleasePixmap(pixmap); + + panel->rgbRedT = WMCreateTextField(panel->rgbFrm); + WMResizeWidget(panel->rgbRedT, 40, 18); + WMMoveWidget(panel->rgbRedT, 146, 13); + WMSetTextFieldAlignment(panel->rgbRedT, WALeft); + WMAddNotificationObserver(rgbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->rgbRedT); + + + panel->rgbGreenS = WMCreateSlider(panel->rgbFrm); + WMResizeWidget(panel->rgbGreenS, 141, 16); + WMMoveWidget(panel->rgbGreenS, 2, 36); + WMSetSliderMinValue(panel->rgbGreenS, 0); + WMSetSliderMaxValue(panel->rgbGreenS, 255); + WMSetSliderKnobThickness(panel->rgbGreenS, knobThickness); + WMSetSliderAction(panel->rgbGreenS, rgbSliderCallback, panel); + + to.red = 0; + to.green = 255; + to.blue = 0; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->rgbGreenS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Green", strlen("Green")); + RDestroyImage(image); + WMSetSliderImage(panel->rgbGreenS, pixmap); + WMReleasePixmap(pixmap); + + panel->rgbGreenT = WMCreateTextField(panel->rgbFrm); + WMResizeWidget(panel->rgbGreenT, 40, 18); + WMMoveWidget(panel->rgbGreenT, 146, 35); + WMSetTextFieldAlignment(panel->rgbGreenT, WALeft); + WMAddNotificationObserver(rgbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->rgbGreenT); + + + panel->rgbBlueS = WMCreateSlider(panel->rgbFrm); + WMResizeWidget(panel->rgbBlueS, 141, 16); + WMMoveWidget(panel->rgbBlueS, 2, 58); + WMSetSliderMinValue(panel->rgbBlueS, 0); + WMSetSliderMaxValue(panel->rgbBlueS, 255); + WMSetSliderKnobThickness(panel->rgbBlueS, knobThickness); + WMSetSliderAction(panel->rgbBlueS, rgbSliderCallback, panel); + + to.red = 0; + to.green = 0; + to.blue = 255; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->rgbBlueS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->white), False, "Blue", strlen("Blue")); + RDestroyImage(image); + WMSetSliderImage(panel->rgbBlueS, pixmap); + WMReleasePixmap(pixmap); + + panel->rgbBlueT = WMCreateTextField(panel->rgbFrm); + WMResizeWidget(panel->rgbBlueT, 40, 18); + WMMoveWidget(panel->rgbBlueT, 146, 57); + WMSetTextFieldAlignment(panel->rgbBlueT, WALeft); + WMAddNotificationObserver(rgbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->rgbBlueT); + /* End of RGB Panel */ + + /* Widgets for CMYK Panel */ + panel->cmykFrm = WMCreateFrame(panel->slidersFrm); + WMSetFrameRelief(panel->cmykFrm, WRFlat); + WMResizeWidget(panel->cmykFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); + WMMoveWidget(panel->cmykFrm, 0, 34); + + panel->cmykMinL = WMCreateLabel(panel->cmykFrm); + WMResizeWidget(panel->cmykMinL, 20, 10); + WMMoveWidget(panel->cmykMinL, 2, 2); + WMSetLabelText(panel->cmykMinL, "0"); + WMSetLabelTextAlignment(panel->cmykMinL, WALeft); + WMSetLabelTextColor(panel->cmykMinL, textcolor); + WMSetLabelFont(panel->cmykMinL, panel->font8); + + panel->cmykMaxL = WMCreateLabel(panel->cmykFrm); + WMResizeWidget(panel->cmykMaxL, 40, 10); + WMMoveWidget(panel->cmykMaxL, 104, 2); + WMSetLabelText(panel->cmykMaxL, "100"); + WMSetLabelTextAlignment(panel->cmykMaxL, WARight); + WMSetLabelTextColor(panel->cmykMaxL, textcolor); + WMSetLabelFont(panel->cmykMaxL, panel->font8); + + panel->cmykCyanS = WMCreateSlider(panel->cmykFrm); + WMResizeWidget(panel->cmykCyanS, 141, 16); + WMMoveWidget(panel->cmykCyanS, 2, 14); + WMSetSliderMinValue(panel->cmykCyanS, 0); + WMSetSliderMaxValue(panel->cmykCyanS, 100); + WMSetSliderKnobThickness(panel->cmykCyanS, knobThickness); + WMSetSliderAction(panel->cmykCyanS, cmykSliderCallback, panel); + + from.red = 255; + from.green = 255; + from.blue = 255; + + to.red = 0; + to.green = 255; + to.blue = 255; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->cmykCyanS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Cyan", strlen("Cyan")); + RDestroyImage(image); + WMSetSliderImage(panel->cmykCyanS, pixmap); + WMReleasePixmap(pixmap); + + panel->cmykCyanT = WMCreateTextField(panel->cmykFrm); + WMResizeWidget(panel->cmykCyanT, 40, 18); + WMMoveWidget(panel->cmykCyanT, 146, 13); + WMSetTextFieldAlignment(panel->cmykCyanT, WALeft); + WMAddNotificationObserver(cmykTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->cmykCyanT); + + + panel->cmykMagentaS = WMCreateSlider(panel->cmykFrm); + WMResizeWidget(panel->cmykMagentaS, 141, 16); + WMMoveWidget(panel->cmykMagentaS, 2, 36); + WMSetSliderMinValue(panel->cmykMagentaS, 0); + WMSetSliderMaxValue(panel->cmykMagentaS, 100); + WMSetSliderKnobThickness(panel->cmykMagentaS, knobThickness); + WMSetSliderAction(panel->cmykMagentaS, cmykSliderCallback, panel); + + to.red = 255; + to.green = 0; + to.blue = 255; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->cmykMagentaS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Magenta", strlen("Magenta")); + RDestroyImage(image); + WMSetSliderImage(panel->cmykMagentaS, pixmap); + WMReleasePixmap(pixmap); + + panel->cmykMagentaT = WMCreateTextField(panel->cmykFrm); + WMResizeWidget(panel->cmykMagentaT, 40, 18); + WMMoveWidget(panel->cmykMagentaT, 146, 35); + WMSetTextFieldAlignment(panel->cmykMagentaT, WALeft); + WMAddNotificationObserver(cmykTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->cmykMagentaT); + + + panel->cmykYellowS = WMCreateSlider(panel->cmykFrm); + WMResizeWidget(panel->cmykYellowS, 141, 16); + WMMoveWidget(panel->cmykYellowS, 2, 58); + WMSetSliderMinValue(panel->cmykYellowS, 0); + WMSetSliderMaxValue(panel->cmykYellowS, 100); + WMSetSliderKnobThickness(panel->cmykYellowS, knobThickness); + WMSetSliderAction(panel->cmykYellowS, cmykSliderCallback, panel); + + to.red = 255; + to.green = 255; + to.blue = 0; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->cmykYellowS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Yellow", strlen("Yellow")); + RDestroyImage(image); + WMSetSliderImage(panel->cmykYellowS, pixmap); + WMReleasePixmap(pixmap); + + panel->cmykYellowT = WMCreateTextField(panel->cmykFrm); + WMResizeWidget(panel->cmykYellowT, 40, 18); + WMMoveWidget(panel->cmykYellowT, 146, 57); + WMSetTextFieldAlignment(panel->cmykYellowT, WALeft); + WMAddNotificationObserver(cmykTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->cmykYellowT); + + + panel->cmykBlackS = WMCreateSlider(panel->cmykFrm); + WMResizeWidget(panel->cmykBlackS, 141, 16); + WMMoveWidget(panel->cmykBlackS, 2, 80); + WMSetSliderMinValue(panel->cmykBlackS, 0); + WMSetSliderMaxValue(panel->cmykBlackS, 100); + WMSetSliderValue(panel->cmykBlackS, 0); + WMSetSliderKnobThickness(panel->cmykBlackS, knobThickness); + WMSetSliderAction(panel->cmykBlackS, cmykSliderCallback, panel); + + to.red = 0; + to.green = 0; + to.blue = 0; + + image = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + pixmap = WMCreatePixmapFromRImage(scrPtr, image, 0); + W_PaintText(W_VIEW(panel->cmykBlackS), pixmap->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scrPtr->black), False, "Black", strlen("Black")); + RDestroyImage(image); + WMSetSliderImage(panel->cmykBlackS, pixmap); + WMReleasePixmap(pixmap); + + panel->cmykBlackT = WMCreateTextField(panel->cmykFrm); + WMResizeWidget(panel->cmykBlackT, 40, 18); + WMMoveWidget(panel->cmykBlackT, 146, 79); + WMSetTextFieldAlignment(panel->cmykBlackT, WALeft); + WMAddNotificationObserver(cmykTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->cmykBlackT); + /* End of CMYK Panel */ + + /* Widgets for HSB Panel */ + panel->hsbFrm = WMCreateFrame(panel->slidersFrm); + WMSetFrameRelief(panel->hsbFrm, WRFlat); + WMResizeWidget(panel->hsbFrm, PWIDTH - 8, PHEIGHT - 80 - 26 - 32); + WMMoveWidget(panel->hsbFrm, 0, 34); + + panel->hsbHueS = WMCreateSlider(panel->hsbFrm); + WMResizeWidget(panel->hsbHueS, 141, 16); + WMMoveWidget(panel->hsbHueS, 2, 14); + WMSetSliderMinValue(panel->hsbHueS, 0); + WMSetSliderMaxValue(panel->hsbHueS, 359); + WMSetSliderKnobThickness(panel->hsbHueS, knobThickness); + WMSetSliderAction(panel->hsbHueS, hsbSliderCallback, panel); + + panel->hsbHueT = WMCreateTextField(panel->hsbFrm); + WMResizeWidget(panel->hsbHueT, 40, 18); + WMMoveWidget(panel->hsbHueT, 146, 13); + WMSetTextFieldAlignment(panel->hsbHueT, WALeft); + WMAddNotificationObserver(hsbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->hsbHueT); + + + panel->hsbSaturationS = WMCreateSlider(panel->hsbFrm); + WMResizeWidget(panel->hsbSaturationS, 141, 16); + WMMoveWidget(panel->hsbSaturationS, 2, 36); + WMSetSliderMinValue(panel->hsbSaturationS, 0); + WMSetSliderMaxValue(panel->hsbSaturationS, 100); + WMSetSliderKnobThickness(panel->hsbSaturationS, knobThickness); + WMSetSliderAction(panel->hsbSaturationS, hsbSliderCallback, panel); + + panel->hsbSaturationT = WMCreateTextField(panel->hsbFrm); + WMResizeWidget(panel->hsbSaturationT, 40, 18); + WMMoveWidget(panel->hsbSaturationT, 146, 35); + WMSetTextFieldAlignment(panel->hsbSaturationT, WALeft); + WMAddNotificationObserver(hsbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->hsbSaturationT); + + + panel->hsbBrightnessS = WMCreateSlider(panel->hsbFrm); + WMResizeWidget(panel->hsbBrightnessS, 141, 16); + WMMoveWidget(panel->hsbBrightnessS, 2, 58); + WMSetSliderMinValue(panel->hsbBrightnessS, 0); + WMSetSliderMaxValue(panel->hsbBrightnessS, 100); + WMSetSliderKnobThickness(panel->hsbBrightnessS, knobThickness); + WMSetSliderAction(panel->hsbBrightnessS, hsbSliderCallback, panel); + + panel->hsbBrightnessT = WMCreateTextField(panel->hsbFrm); + WMResizeWidget(panel->hsbBrightnessT, 40, 18); + WMMoveWidget(panel->hsbBrightnessT, 146, 57); + WMSetTextFieldAlignment(panel->hsbBrightnessT, WALeft); + WMAddNotificationObserver(hsbTextFieldCallback, panel, \ +WMTextDidEndEditingNotification, panel->hsbBrightnessT); + /* End of HSB Panel */ + + + WMReleaseColor(textcolor); + + /* Widgets for the CustomPalette Panel */ + panel->customPaletteFrm = WMCreateFrame(panel->win); + WMSetFrameRelief(panel->customPaletteFrm, WRFlat); + WMResizeWidget(panel->customPaletteFrm, PWIDTH - 8, PHEIGHT - 80 - 26); + WMMoveWidget(panel->customPaletteFrm, 5, 80); + + panel->customPaletteHistoryBtn = WMCreatePopUpButton(panel->customPaletteFrm); + WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, "Spectrum"); + WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)-1); + WMSetPopUpButtonAction(panel->customPaletteHistoryBtn, customPaletteHistoryCallback, panel); + WMResizeWidget(panel->customPaletteHistoryBtn, PWIDTH - 8, 20); + WMMoveWidget(panel->customPaletteHistoryBtn, 0, 0); + + panel->customPaletteContentFrm = WMCreateFrame(panel->customPaletteFrm); + WMSetFrameRelief(panel->customPaletteContentFrm, WRSunken); + WMResizeWidget(panel->customPaletteContentFrm, PWIDTH - 8, PHEIGHT - 156); + WMMoveWidget(panel->customPaletteContentFrm, 0, 23); + + panel->customPaletteContentView = W_CreateView(W_VIEW(panel->customPaletteContentFrm)); + /* XXX Can we create a view ? */ + W_ResizeView(panel->customPaletteContentView, customPaletteWidth, customPaletteHeight); + W_MoveView(panel->customPaletteContentView, 2, 2); + + /* Create an event handler to handle expose/click events in the CustomPalette */ + WMCreateEventHandler(panel->customPaletteContentView, ButtonPressMask|ButtonReleaseMask|EnterWindowMask + |LeaveWindowMask|ButtonMotionMask, customPaletteHandleActionEvents, panel); + + WMCreateEventHandler(panel->customPaletteContentView, ExposureMask, customPaletteHandleEvents, panel); + + panel->customPaletteMenuBtn = WMCreatePopUpButton(panel->customPaletteFrm); + WMSetPopUpButtonPullsDown(panel->customPaletteMenuBtn, 1); + WMSetPopUpButtonText(panel->customPaletteMenuBtn, "Palette"); + WMSetPopUpButtonAction(panel->customPaletteMenuBtn, customPaletteMenuCallback, panel); + WMResizeWidget(panel->customPaletteMenuBtn, PWIDTH - 8, 20); + WMMoveWidget(panel->customPaletteMenuBtn, 0, PHEIGHT - 130); + + WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "New from File..."); /* item 0 */ + WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Rename..."); /* item 1 */ + WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Remove"); /* item 2 */ + WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "Copy"); /* item 3 */ + WMAddPopUpButtonItem(panel->customPaletteMenuBtn, "New from Clipboard"); /* item 4 */ + + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 1, 0); + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 2, 0); + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 3, 0); + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, 4, 0); + + customRenderSpectrum(panel); + panel->currentPalette = 0; + + + /* Widgets for the ColorList Panel */ + panel->colorListFrm = WMCreateFrame(panel->win); + WMSetFrameRelief(panel->colorListFrm, WRFlat); + WMResizeWidget(panel->colorListFrm, PWIDTH - 8, PHEIGHT - 80 - 26); + WMMoveWidget(panel->colorListFrm, 5, 80); + + panel->colorListHistoryBtn = WMCreatePopUpButton(panel->colorListFrm); + WMAddPopUpButtonItem(panel->colorListHistoryBtn, "X11-Colors"); + WMSetPopUpButtonSelectedItem(panel->colorListHistoryBtn, WMGetPopUpButtonNumberOfItems(panel->colorListHistoryBtn)-1); + /* WMSetPopUpButtonAction(panel->colorListHistoryBtn, colorListHistoryCallback, panel); */ + WMResizeWidget(panel->colorListHistoryBtn, PWIDTH - 8, 20); + WMMoveWidget(panel->colorListHistoryBtn, 0, 0); + + panel->colorListContentLst = WMCreateList(panel->colorListFrm); + WMSetListAction(panel->colorListContentLst, colorListSelect, panel); + WMSetListUserDrawProc(panel->colorListContentLst, colorListPaintItem); + WMResizeWidget(panel->colorListContentLst, PWIDTH - 8, PHEIGHT - 156); + WMMoveWidget(panel->colorListContentLst, 0, 23); + WMHangData(panel->colorListContentLst, panel); + + panel->colorListColorMenuBtn = WMCreatePopUpButton(panel->colorListFrm); + WMSetPopUpButtonPullsDown(panel->colorListColorMenuBtn, 1); + WMSetPopUpButtonText(panel->colorListColorMenuBtn, "Color"); + /* WMSetPopUpButtonAction(panel->colorListColorMenuBtn, colorListColorMenuCallback, panel); */ + WMResizeWidget(panel->colorListColorMenuBtn, (PWIDTH - 16)/2, 20); + WMMoveWidget(panel->colorListColorMenuBtn, 0, PHEIGHT - 130); + + panel->colorListListMenuBtn = WMCreatePopUpButton(panel->colorListFrm); + WMSetPopUpButtonPullsDown(panel->colorListListMenuBtn, 1); + WMSetPopUpButtonText(panel->colorListListMenuBtn, "List"); + /* WMSetPopUpButtonAction(panel->colorListListMenuBtn, colorListListMenuCallback, panel); */ + WMResizeWidget(panel->colorListListMenuBtn, (PWIDTH - 16)/2, 20); + WMMoveWidget(panel->colorListListMenuBtn, (PWIDTH - 16)/2 + 8, PHEIGHT - 130); + + + WMRealizeWidget(panel->win); + WMMapSubwidgets(panel->win); + + WMMapSubwidgets(panel->wheelFrm); + WMMapSubwidgets(panel->slidersFrm); + WMMapSubwidgets(panel->grayFrm); + WMMapSubwidgets(panel->rgbFrm); + WMMapSubwidgets(panel->cmykFrm); + WMMapSubwidgets(panel->hsbFrm); + WMMapSubwidgets(panel->customPaletteFrm); + WMMapSubwidgets(panel->customPaletteContentFrm); + WMMapSubwidgets(panel->colorListFrm); + + readConfiguration(panel); + readXColors(panel); + + return panel; } WMColorPanel* WMGetColorPanel(WMScreen *scrPtr) { - WMColorPanel *panel; - - if (scrPtr->sharedColorPanel) - return scrPtr->sharedColorPanel; - - panel = makeColorPanel(scrPtr, "colorPanel"); - - scrPtr->sharedColorPanel = panel; - - return panel; + WMColorPanel *panel; + + if (scrPtr->sharedColorPanel) + return scrPtr->sharedColorPanel; + + panel = makeColorPanel(scrPtr, "colorPanel"); + + scrPtr->sharedColorPanel = panel; + + return panel; } void WMFreeColorPanel(WMColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - - if (panel == scr->sharedColorPanel) { - WMWidgetScreen(panel->win)->sharedColorPanel = NULL; - } - WMRemoveNotificationObserver(panel); /* XXX */ - WMUnmapWidget(panel->win); - WMDestroyWidget(panel->win); - if (panel->wheelMtrx) - wheelDestroyMatrix(panel->wheelMtrx); - if (panel->wheelImg) - XFreePixmap(scr->display, panel->wheelImg); - if (panel->selectionImg) - XFreePixmap(scr->display, panel->selectionImg); - if (panel->selectionBackImg) - XFreePixmap(scr->display, panel->selectionBackImg); - if (panel->customPaletteImg) - RDestroyImage(panel->customPaletteImg); - if (panel->lastBrowseDir) - free(panel->lastBrowseDir); - if (panel->configurationPath) - free(panel->configurationPath); - - free(panel); + W_Screen *scr = WMWidgetScreen(panel->win); + + if (panel == scr->sharedColorPanel) { + WMWidgetScreen(panel->win)->sharedColorPanel = NULL; + } + WMRemoveNotificationObserver(panel); + WMUnmapWidget(panel->win); + WMDestroyWidget(panel->win); + if (panel->font8) + WMReleaseFont(panel->font8); + if (panel->font12) + WMReleaseFont(panel->font12); + if (panel->magnifyGlass->pixmap) + XFreePixmap(scr->display, panel->magnifyGlass->pixmap); + if (panel->wheelMtrx) + wheelDestroyMatrix(panel->wheelMtrx); + if (panel->wheelImg) + XFreePixmap(scr->display, panel->wheelImg); + if (panel->selectionImg) + XFreePixmap(scr->display, panel->selectionImg); + if (panel->selectionBackImg) + XFreePixmap(scr->display, panel->selectionBackImg); + if (panel->customPaletteImg) + RDestroyImage(panel->customPaletteImg); + if (panel->lastBrowseDir) + free(panel->lastBrowseDir); + if (panel->configurationPath) + free(panel->configurationPath); + + free(panel); } int WMRunColorPanel(WMColorPanel *panel, WMWindow *owner, RColor color) { - WMScreen *scr = WMWidgetScreen(panel->win); - XEvent event; - RHSVColor hsvcolor; - GC bgc = W_GC(scr->black); - GC wgc = W_GC(scr->white); - float W_PI = 4*atan(1); - - WMChangePanelOwner(panel->win, owner); - - WMSetColorPanelColor(panel, color); - panel->wheelMtrx = wheelInitMatrix(panel); /* Needs to be done After Color is set */ - - /* Maybe put this in sub-function ... Initialising selection images */ - RRGBtoHSV(&color, &hsvcolor); - panel->colx = 2 + rint((colorWheelSize / 2.0) * (1 + (hsvcolor.saturation/255.0) * cos( hsvcolor.hue*W_PI/180.0))); - panel->coly = 2 + rint((colorWheelSize / 2.0) * (1 + (hsvcolor.saturation/255.0) * sin(-hsvcolor.hue*W_PI/180.0))); - wheelUpdateBrightnessGradientFromHSV(panel, hsvcolor); - WMSetSliderValue(panel->wheelBrightnessS, 255 - hsvcolor.value); - - panel->selectionImg = XCreatePixmap(scr->display, W_VIEW(panel->wheelFrm)->window, 4, 4, scr->depth); - XFillRectangle(scr->display, panel->selectionImg, bgc, 0, 0, 4, 4); - XFillRectangle(scr->display, panel->selectionImg, wgc, 1, 1, 2, 2); - /* End of initialisation section */ - - panel->palx = customPaletteWidth/2; - panel->paly = customPaletteHeight/2; - - WMSetPickerMode(panel, WMWheelModeColorPanel); - - panel->flags.done = 0; - - WMMapWidget(panel->win); - - while (!panel->flags.done) { - WMNextEvent(scr->display, &event); - WMHandleEvent(&event); - } - - WMCloseWindow(panel->win); - - return 0; + WMScreen *scr = WMWidgetScreen(panel->win); + XEvent event; + RHSVColor hsvcolor; + GC bgc = W_GC(scr->black); + GC wgc = W_GC(scr->white); + float W_PI = 4*atan(1); + + WMChangePanelOwner(panel->win, owner); + + WMSetColorPanelColor(panel, color); + panel->wheelMtrx = wheelInitMatrix(panel); /* Needs to be done After Color is set */ + + /* Maybe put this in sub-function ... Initialising selection images */ + RRGBtoHSV(&color, &hsvcolor); + panel->colx = 2 + rint((colorWheelSize / 2.0) * (1 + (hsvcolor.saturation/255.0) * cos( hsvcolor.hue*W_PI/180.0))); + panel->coly = 2 + rint((colorWheelSize / 2.0) * (1 + (hsvcolor.saturation/255.0) * sin(-hsvcolor.hue*W_PI/180.0))); + wheelUpdateBrightnessGradientFromHSV(panel, hsvcolor); + WMSetSliderValue(panel->wheelBrightnessS, 255 - hsvcolor.value); + + panel->selectionImg = XCreatePixmap(scr->display, W_VIEW(panel->wheelFrm)->window, 4, 4, scr->depth); + XFillRectangle(scr->display, panel->selectionImg, bgc, 0, 0, 4, 4); + XFillRectangle(scr->display, panel->selectionImg, wgc, 1, 1, 2, 2); + /* End of initialisation section */ + + panel->palx = customPaletteWidth/2; + panel->paly = customPaletteHeight/2; + + WMSetPickerMode(panel, WMWheelModeColorPanel); + + panel->flags.done = 0; + + WMMapWidget(panel->win); + + while (!panel->flags.done) { + WMNextEvent(scr->display, &event); + WMHandleEvent(&event); + } + + WMCloseWindow(panel->win); + + return 0; } @@ -952,368 +1039,735 @@ WMRunColorPanel(WMColorPanel *panel, WMWindow *owner, RColor color) static void readConfiguration(W_ColorPanel *panel) { - /* XXX Doesn't take care of "invalid" files */ - - DIR *dPtr; - struct dirent *dp; - struct stat stat_buf; - - - if (stat(panel->configurationPath, &stat_buf)!=0) { - if (mkdir(panel->configurationPath, S_IRWXU|S_IRGRP|S_IROTH|S_IXGRP|S_IXOTH)!=0) { - wfatal("ColorPanel could not create directory %s needed to store configurations", panel->configurationPath); - WMFreeColorPanel(panel); - wAbort(); - } - return; - } - - dPtr = opendir(panel->configurationPath); - while ((dp = readdir(dPtr)) != NULL) { - if (dp->d_name[0] != '.') - WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, dp->d_name); - } - (void)closedir(dPtr); + /* XXX Doesn't take care of "invalid" files */ + + DIR *dPtr; + struct dirent *dp; + struct stat stat_buf; + + + if (stat(panel->configurationPath, &stat_buf)!=0) { + if (mkdir(panel->configurationPath, S_IRWXU|S_IRGRP|S_IROTH|S_IXGRP|S_IXOTH)!=0) { + wsyserror("ColorPanel could not create directory %s needed to store configurations", panel->configurationPath); + WMFreeColorPanel(panel); + wAbort(); + } + return; + } + + dPtr = opendir(panel->configurationPath); + while ((dp = readdir(dPtr)) != NULL) { + if (dp->d_name[0] != '.') + WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, dp->d_name); + } + (void)closedir(dPtr); } static void readXColors(W_ColorPanel *panel) { - struct stat stat_buf; - FILE *rgbtxt; - char line[MAX_LENGTH]; - int red, green, blue; - char name[48]; - RColor *color; - WMListItem *item; - - if (stat(RGBTXT, &stat_buf) != 0) { - wwarning("Cannot find file %s", RGBTXT); - return; - } - else { - rgbtxt = fopen(RGBTXT, "r"); - if (rgbtxt) { - while (fgets(line, MAX_LENGTH, rgbtxt)) { - if (sscanf(line, "%d%d%d %[^\n]", &red, &green, &blue, name)) { - color = wmalloc(sizeof(RColor)); - color->red = (unsigned char)red; - color->green = (unsigned char)green; - color->blue = (unsigned char)blue; - item = WMAddListItem(panel->colorListContentLst, name); - item->clientData = (void *)color; - } - } - fclose(rgbtxt); - } - else { - wwarning("Unable to open file %s for reading", RGBTXT); - } - } + struct stat stat_buf; + FILE *rgbtxt; + char line[MAX_LENGTH]; + int red, green, blue; + char name[48]; + RColor *color; + WMListItem *item; + + if (stat(RGBTXT, &stat_buf) != 0) { + wwarning("Cannot find file %s", RGBTXT); + return; + } + else { + rgbtxt = fopen(RGBTXT, "r"); + if (rgbtxt) { + while (fgets(line, MAX_LENGTH, rgbtxt)) { + if (sscanf(line, "%d%d%d %[^\n]", &red, &green, &blue, name)) { + color = wmalloc(sizeof(RColor)); + color->red = (unsigned char)red; + color->green = (unsigned char)green; + color->blue = (unsigned char)blue; + item = WMAddListItem(panel->colorListContentLst, name); + item->clientData = (void *)color; + } + } + fclose(rgbtxt); + } + else { + wsyserror("Unable to open file %s for reading", RGBTXT); + } + } } void WMSetPickerMode(WMColorPanel *panel, WMColorPanelMode mode) { - W_Screen *scr = WMWidgetScreen(panel->win); - - if (mode != WMWheelModeColorPanel) { - WMUnmapWidget(panel->wheelFrm); - if (panel->selectionBackImg) { - XFreePixmap(WMWidgetScreen(panel->win)->display, panel->selectionBackImg); - panel->selectionBackImg = None; - } - } - if (mode != WMGrayModeColorPanel) - WMUnmapWidget(panel->grayFrm); - if (mode != WMRGBModeColorPanel) - WMUnmapWidget(panel->rgbFrm); - if (mode != WMCMYKModeColorPanel) - WMUnmapWidget(panel->cmykFrm); - if (mode != WMHSBModeColorPanel) - WMUnmapWidget(panel->hsbFrm); - if (mode != WMCustomPaletteModeColorPanel) { - WMUnmapWidget(panel->customPaletteFrm); - if (panel->selectionBackImg) { - XFreePixmap(WMWidgetScreen(panel->win)->display, panel->selectionBackImg); - panel->selectionBackImg = None; - } - } - if (mode != WMColorListModeColorPanel) - WMUnmapWidget(panel->colorListFrm); - if ((mode != WMGrayModeColorPanel) && (mode != WMRGBModeColorPanel) && \ - (mode != WMCMYKModeColorPanel) && (mode != WMHSBModeColorPanel)) - WMUnmapWidget(panel->slidersFrm); - else - panel->slidersmode = mode; - - if (mode == WMWheelModeColorPanel) { - WMMapWidget(panel->wheelFrm); - WMSetButtonSelected(panel->wheelBtn, True); - if (panel->lastChanged != WMWheelModeColorPanel) - wheelInit(panel); - wheelRender(panel); - wheelPaint(panel); - } else if (mode == WMGrayModeColorPanel) { - WMMapWidget(panel->slidersFrm); - WMSetButtonSelected(panel->slidersBtn, True); - WMMapWidget(panel->grayFrm); - WMSetButtonSelected(panel->grayBtn, True); - WMSetButtonImage(panel->slidersBtn, scr->grayIcon); - WMSetButtonAltImage(panel->slidersBtn,scr->grayAltIcon); - if (panel->lastChanged != WMGrayModeColorPanel) - grayInit(panel); - } else if (mode == WMRGBModeColorPanel) { - WMMapWidget(panel->slidersFrm); - WMSetButtonSelected(panel->slidersBtn, True); - WMMapWidget(panel->rgbFrm); - WMSetButtonSelected(panel->rgbBtn, True); - WMSetButtonImage(panel->slidersBtn, scr->rgbIcon); - WMSetButtonAltImage(panel->slidersBtn, scr->rgbAltIcon); - if (panel->lastChanged != WMRGBModeColorPanel) - rgbInit(panel); - } else if (mode == WMCMYKModeColorPanel) { - WMMapWidget(panel->slidersFrm); - WMSetButtonSelected(panel->slidersBtn, True); - WMMapWidget(panel->cmykFrm); - WMSetButtonSelected(panel->cmykBtn, True); - WMSetButtonImage(panel->slidersBtn, scr->cmykIcon); - WMSetButtonAltImage(panel->slidersBtn, scr->cmykAltIcon); - if (panel->lastChanged != WMCMYKModeColorPanel) - cmykInit(panel); - } else if (mode == WMHSBModeColorPanel) { - WMMapWidget(panel->slidersFrm); - WMSetButtonSelected(panel->slidersBtn, True); - WMMapWidget(panel->hsbFrm); - WMSetButtonSelected(panel->hsbBtn, True); - WMSetButtonImage(panel->slidersBtn, scr->hsbIcon); - WMSetButtonAltImage(panel->slidersBtn, scr->hsbAltIcon); - if (panel->lastChanged != WMHSBModeColorPanel) - hsbInit(panel); - } else if (mode == WMCustomPaletteModeColorPanel) { - WMMapWidget(panel->customPaletteFrm); - WMSetButtonSelected(panel->customPaletteBtn, True); - customSetPalette(panel); - } else if (mode == WMColorListModeColorPanel) { - WMMapWidget(panel->colorListFrm); - WMSetButtonSelected(panel->colorListBtn, True); - } - - - panel->mode = mode; + W_Screen *scr = WMWidgetScreen(panel->win); + + if (mode != WMWheelModeColorPanel) { + WMUnmapWidget(panel->wheelFrm); + if (panel->selectionBackImg) { + XFreePixmap(WMWidgetScreen(panel->win)->display, panel->selectionBackImg); + panel->selectionBackImg = None; + } + } + if (mode != WMGrayModeColorPanel) + WMUnmapWidget(panel->grayFrm); + if (mode != WMRGBModeColorPanel) + WMUnmapWidget(panel->rgbFrm); + if (mode != WMCMYKModeColorPanel) + WMUnmapWidget(panel->cmykFrm); + if (mode != WMHSBModeColorPanel) + WMUnmapWidget(panel->hsbFrm); + if (mode != WMCustomPaletteModeColorPanel) { + WMUnmapWidget(panel->customPaletteFrm); + if (panel->selectionBackImg) { + XFreePixmap(WMWidgetScreen(panel->win)->display, panel->selectionBackImg); + panel->selectionBackImg = None; + } + } + if (mode != WMColorListModeColorPanel) + WMUnmapWidget(panel->colorListFrm); + if ((mode != WMGrayModeColorPanel) && (mode != WMRGBModeColorPanel) && \ +(mode != WMCMYKModeColorPanel) && (mode != WMHSBModeColorPanel)) + WMUnmapWidget(panel->slidersFrm); + else + panel->slidersmode = mode; + + if (mode == WMWheelModeColorPanel) { + WMMapWidget(panel->wheelFrm); + WMSetButtonSelected(panel->wheelBtn, True); + if (panel->lastChanged != WMWheelModeColorPanel) + wheelInit(panel); + wheelRender(panel); + wheelPaint(panel); + } else if (mode == WMGrayModeColorPanel) { + WMMapWidget(panel->slidersFrm); + WMSetButtonSelected(panel->slidersBtn, True); + WMMapWidget(panel->grayFrm); + WMSetButtonSelected(panel->grayBtn, True); + WMSetButtonImage(panel->slidersBtn, scr->grayIcon); + if (panel->lastChanged != WMGrayModeColorPanel) + grayInit(panel); + } else if (mode == WMRGBModeColorPanel) { + WMMapWidget(panel->slidersFrm); + WMSetButtonSelected(panel->slidersBtn, True); + WMMapWidget(panel->rgbFrm); + WMSetButtonSelected(panel->rgbBtn, True); + WMSetButtonImage(panel->slidersBtn, scr->rgbIcon); + if (panel->lastChanged != WMRGBModeColorPanel) + rgbInit(panel); + } else if (mode == WMCMYKModeColorPanel) { + WMMapWidget(panel->slidersFrm); + WMSetButtonSelected(panel->slidersBtn, True); + WMMapWidget(panel->cmykFrm); + WMSetButtonSelected(panel->cmykBtn, True); + WMSetButtonImage(panel->slidersBtn, scr->cmykIcon); + if (panel->lastChanged != WMCMYKModeColorPanel) + cmykInit(panel); + } else if (mode == WMHSBModeColorPanel) { + WMMapWidget(panel->slidersFrm); + WMSetButtonSelected(panel->slidersBtn, True); + WMMapWidget(panel->hsbFrm); + WMSetButtonSelected(panel->hsbBtn, True); + WMSetButtonImage(panel->slidersBtn, scr->hsbIcon); + if (panel->lastChanged != WMHSBModeColorPanel) + hsbInit(panel); + } else if (mode == WMCustomPaletteModeColorPanel) { + WMMapWidget(panel->customPaletteFrm); + WMSetButtonSelected(panel->customPaletteBtn, True); + customSetPalette(panel); + } else if (mode == WMColorListModeColorPanel) { + WMMapWidget(panel->colorListFrm); + WMSetButtonSelected(panel->colorListBtn, True); + } + + + panel->mode = mode; } void WMSetColorPanelColor(WMColorPanel *panel, RColor color) { - WMScreen *scr = WMWidgetScreen(panel->win); - WMColor *wellcolor; - - wellcolor = WMCreateRGBColor(scr, color.red << 8, color.green << 8, color.blue << 8, True); - WMSetColorWellColor(panel->colorWell, wellcolor); - WMReleaseColor(wellcolor); + WMScreen *scr = WMWidgetScreen(panel->win); + WMColor *wellcolor; + int originalHue; + + wellcolor = WMCreateRGBColor(scr, color.red << 8, color.green << 8, color.blue << 8, True); + WMSetColorWellColor(panel->colorWell, wellcolor); + WMReleaseColor(wellcolor); + + panel->color = color; + + /* If color was set by HSB-Panel do not convert back to hsv */ + if (panel->lastChanged != WMHSBModeColorPanel) { - panel->color = color; - if (panel->lastChanged != WMHSBModeColorPanel) /* If color was set by HSB-Panel do not convert back to hsv */ - RRGBtoHSV(&panel->color, &panel->hsvcolor); + /* if color is black, hue is undetermined, so it must be restored */ + if ((panel->color.red == 0) && + (panel->color.green == 0) && + (panel->color.blue == 0) && + (panel->hsvcolor.hue <= 359)) + { + originalHue = panel->hsvcolor.hue; + RRGBtoHSV(&panel->color, &panel->hsvcolor); + panel->hsvcolor.hue = originalHue; + } else { + RRGBtoHSV(&panel->color, &panel->hsvcolor); + } + } } static void modeButtonCallback(WMWidget *w, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)(data); - - if (w == panel->wheelBtn) - WMSetPickerMode(panel, WMWheelModeColorPanel); - else if (w == panel->slidersBtn) - WMSetPickerMode(panel, panel->slidersmode); - else if (w == panel->customPaletteBtn) - WMSetPickerMode(panel, WMCustomPaletteModeColorPanel); - else if (w == panel->colorListBtn) - WMSetPickerMode(panel, WMColorListModeColorPanel); - else if (w == panel->grayBtn) - WMSetPickerMode(panel, WMGrayModeColorPanel); - else if (w == panel->rgbBtn) - WMSetPickerMode(panel, WMRGBModeColorPanel); - else if (w == panel->cmykBtn) - WMSetPickerMode(panel, WMCMYKModeColorPanel); - else if (w == panel->hsbBtn) - WMSetPickerMode(panel, WMHSBModeColorPanel); + W_ColorPanel *panel = (W_ColorPanel*)(data); + + if (w == panel->wheelBtn) + WMSetPickerMode(panel, WMWheelModeColorPanel); + else if (w == panel->slidersBtn) + WMSetPickerMode(panel, panel->slidersmode); + else if (w == panel->customPaletteBtn) + WMSetPickerMode(panel, WMCustomPaletteModeColorPanel); + else if (w == panel->colorListBtn) + WMSetPickerMode(panel, WMColorListModeColorPanel); + else if (w == panel->grayBtn) + WMSetPickerMode(panel, WMGrayModeColorPanel); + else if (w == panel->rgbBtn) + WMSetPickerMode(panel, WMRGBModeColorPanel); + else if (w == panel->cmykBtn) + WMSetPickerMode(panel, WMCMYKModeColorPanel); + else if (w == panel->hsbBtn) + WMSetPickerMode(panel, WMHSBModeColorPanel); } + +/****************** Magnifying Cursor Functions *******************/ +static Pixmap +magnifyGetImage(WMScreen *scr, int x, int y) +{ + XImage *image; + Pixmap pixmap; + int x0, y0, w0, h0; + int displayWidth = DisplayWidth(scr->display, scr->screen); + int displayHeight = DisplayHeight(scr->display, scr->screen); + + /* Coordinate correction for back pixmap */ + x0 = 0; y0 = 0; w0 = mglass_width; h0 = mglass_height; + + if (x < mglass_width/2) { + if (x < 0) x = 0; + x0 = mglass_width/2 - x; + w0 = mglass_width - x0; + } + + if (x > displayWidth - (mglass_width+1)/2) { + if (x > displayWidth) x = displayWidth; + w0 = mglass_width - ((mglass_width+1)/2 - (displayWidth - x)); + } + + if (y < mglass_height/2) { + if (y < 0) y = 0; + y0 = mglass_height/2 - y; + h0 = mglass_height - y0; + } + + if (y > displayHeight - (mglass_height+1)/2) { + if (y > displayHeight) y = displayHeight; + h0 = mglass_height - ((mglass_height+1)/2 - (displayHeight - y)); + } + + image = XGetImage(scr->display, scr->rootWin, x + x0 - mglass_width/2, + y + y0 - mglass_height/2, w0, h0, AllPlanes, ZPixmap); + + pixmap = XCreatePixmap(scr->display, W_DRAWABLE(scr), + mglass_width, mglass_height, scr->depth); + XPutImage(scr->display, pixmap, scr->copyGC, image, 0, 0, x0, y0, w0, h0); + + return pixmap; +} + + +static Pixmap +magnifyGetStorePixmap(WMColorPanel *panel, int x1, int y1, int x2, int y2) +{ + /* + * (x1, y1) = topleft corner of existing rectangle + * (x2, y2) = topleft corner of new position + */ + + W_Screen *scr = WMWidgetScreen(panel->win); + Pixmap pixmap; + int xa, ya, xb, yb, w, h; + + if (x1 < x2) { + xa = x2 - x1; + xb = 0; + } else { + xa = 0; + xb = x1 - x2; + } + + if (y1 < y2) { + ya = y2 - y1; + yb = 0; + } else { + ya = 0; + yb = y1 - y2; + } + + w = mglass_width - abs(x1-x2); + h = mglass_height - abs(y1-y2); + + /* Get pixmap from screen */ + pixmap = magnifyGetImage(scr, x2, y2); + + /* Copy previously stored pixmap on covered part of above pixmap */ + if (panel->magnifyGlass->valid) { + XCopyArea(scr->display, panel->magnifyGlass->pixmap, pixmap, + scr->copyGC, xa, ya, w, h, xb, yb); + + /* Free it, so we can reuse it */ + XFreePixmap(scr->display, panel->magnifyGlass->pixmap); + } + + return pixmap; +} + + +static Pixmap +magnifyCreatePixmap(WMColorPanel *panel) +{ + W_Screen *scr = WMWidgetScreen(panel->win); + int u, v; + int i, j; + int ofs; + Pixmap magPix; + Pixmap backPix; + RImage *pixelImg; + + /* + * Get image + */ + + /* Rectangle that's going to be the background */ + backPix = XCreatePixmap(scr->display, W_DRAWABLE(scr), mglass_width, + mglass_height, scr->depth); + XCopyArea(scr->display, panel->magnifyGlass->pixmap, backPix, scr->copyGC, + 0, 0, mglass_width, mglass_height, 0, 0); + + /* + * Magnify image + */ + + magPix = XCreatePixmap(scr->display, W_DRAWABLE(scr), mglass_width, + mglass_height, scr->depth); + + for (u=0; u<=3; u++) + for (v=0; v<=3; v++) + for (i=u*6; i < (u+1)*6; i++) + for (j=v*6; j < (v+1)*6; j++) + if (((i >= 0) && (i < mglass_width)) + && ((j >= 0) && (j < mglass_height))) + XCopyArea(scr->display, backPix, magPix, scr->copyGC, + u + 4, v + 4, 1, 1, i, j); + + /* Get color under hotspot */ + ofs = mglass_width/2 + (mglass_height/2)*mglass_width; + pixelImg = RCreateImageFromDrawable(scr->rcontext, backPix, backPix); + panel->magnifyGlass->color.red = pixelImg->data[0][ofs]; + panel->magnifyGlass->color.green = pixelImg->data[1][ofs]; + panel->magnifyGlass->color.blue = pixelImg->data[2][ofs]; + RDestroyImage(pixelImg); + + /* Copy the magnified pixmap, with the clip mask, to the background pixmap */ + XSetClipMask(scr->display, scr->clipGC, panel->magnifyGlass->mask); + XSetClipOrigin(scr->display, scr->clipGC, 0, 0); + + XCopyArea(scr->display, magPix, backPix, scr->clipGC, 0, 0, + mglass_width, mglass_height, 0, 0); + + XFreePixmap(scr->display, magPix); + + return backPix; +} + + +static WMView* +magnifyCreateView(W_ColorPanel *panel) +{ + W_Screen *scr = WMWidgetScreen(panel->win); + WMView *magView; + + magView = W_CreateTopView(scr); + magView->self = panel; + + W_ResizeView(magView, mglass_width, mglass_height); + + magView->attribFlags |= CWOverrideRedirect | CWSaveUnder; + magView->attribs.event_mask = StructureNotifyMask; + magView->attribs.override_redirect = True; + magView->attribs.save_under = True; + + W_RealizeView(magView); + W_MapView(magView); + + return magView; +} + + +static Cursor +magnifyGrabPointer(W_ColorPanel *panel) +{ + W_Screen *scr = WMWidgetScreen(panel->win); + Pixmap magPixmap; + Pixmap magPixmap2; + Cursor magCursor; + XColor fgColor = {0,0,0,0,DoRed|DoGreen|DoBlue}; + XColor bgColor = {0,0xbd00,0xa500,0x5200,DoRed|DoGreen|DoBlue}; + + /* Cursor creation stuff */ + magPixmap = XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), + magnify_cursor_bits, + magnify_cursor_width, + magnify_cursor_height, 1, 0, 1); + magPixmap2 = XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), + magnify_mask_bits, + magnify_mask_width, + magnify_mask_height, 1, 0, 1); + magCursor = XCreatePixmapCursor(scr->display, magPixmap, magPixmap2, + &fgColor, &bgColor, magnify_hotspot_x, + magnify_hotspot_y); + XFreePixmap(scr->display, magPixmap); + XFreePixmap(scr->display, magPixmap2); + + XRecolorCursor(scr->display, magCursor, &fgColor, &bgColor); + + /* Set up Pointer */ + XGrabPointer (scr->display, panel->magnifyGlass->view->window, True, + PointerMotionMask | ButtonPressMask, + GrabModeAsync, GrabModeAsync, + scr->rootWin, magCursor, CurrentTime); + + return magCursor; +} + +static WMPoint +magnifyInitialize(W_ColorPanel *panel) +{ + W_Screen *scr = WMWidgetScreen(panel->win); + int x, y, u, v; + unsigned int mask; + Pixmap pixmap; + WMPoint point; + + XQueryPointer(scr->display, scr->rootWin, &scr->rootWin, + &W_VIEW(panel->win)->window, &x, &y, &u, &v, &mask); + + + /* Clipmask to make magnified view-contents circular */ + panel->magnifyGlass->mask = + XCreatePixmapFromBitmapData(scr->display, W_DRAWABLE(scr), + magnify_mask_bits, mglass_width, + mglass_height, 1, 0, 1); + + /* Draw initial magnified part */ + panel->magnifyGlass->valid = False; + /* also free's magnifyGlass->pixmap */ + panel->magnifyGlass->pixmap = magnifyGetStorePixmap(panel, x, y, x, y); + panel->magnifyGlass->valid = True; + + pixmap = magnifyCreatePixmap(panel); + W_MoveView(panel->magnifyGlass->view, x - magnify_hotspot_x, + y - magnify_hotspot_y); + + XSetWindowBackgroundPixmap(scr->display, panel->magnifyGlass->view->window, + pixmap); + XClearWindow(scr->display, panel->magnifyGlass->view->window); + XFlush(scr->display); + + XFreePixmap(scr->display, pixmap); + + point.x = x; + point.y = y; + + return point; +} + + +static void +magnifyPutCursor(WMWidget *w, void *data) +{ + W_ColorPanel *panel = (W_ColorPanel*)(data); + W_Screen *scr = WMWidgetScreen(panel->win); + Cursor magCursor; + int x, y; + Pixmap pixmap; + XEvent event; + WMPoint initialPosition; + + panel->magnifyGlass = wmalloc(sizeof(MovingView)); + + panel->magnifyGlass->view = magnifyCreateView(panel); + magCursor = magnifyGrabPointer(panel); + + initialPosition = magnifyInitialize(panel); + x = initialPosition.x; + y = initialPosition.y; + + + while(panel->magnifyGlass->valid) + { + WMNextEvent(scr->display, &event); + + switch (event.type) + { + case ButtonPress: + if (event.xbutton.button == Button1) { + WMSetColorPanelColor(panel, panel->magnifyGlass->color); + switch (panel->mode) { + case WMWheelModeColorPanel: + wheelInit(panel); + wheelRender(panel); + wheelPaint(panel); + break; + case WMGrayModeColorPanel: + grayInit(panel); + break; + case WMRGBModeColorPanel: + rgbInit(panel); + break; + case WMCMYKModeColorPanel: + cmykInit(panel); + break; + case WMHSBModeColorPanel: + hsbInit(panel); + break; + default: + break; + } + panel->lastChanged = panel->mode; + } + + panel->magnifyGlass->valid = False; + WMSetButtonSelected(panel->magnifyBtn, False); + break; + + case MotionNotify: + /* Get a "dirty rectangle" */ + panel->magnifyGlass->pixmap = magnifyGetStorePixmap( + panel, x, y, /* Cool, a circular reference ! */ + event.xmotion.x_root, + event.xmotion.y_root); /* also free's magnifyGlass->pixmap */ + + /* Update coordinates */ + x = event.xmotion.x_root; + y = event.xmotion.y_root; + + /* Move view */ + W_MoveView(panel->magnifyGlass->view, x - magnify_hotspot_x, + y - magnify_hotspot_y); + + /* Put new image (with magn.) in view */ + pixmap = magnifyCreatePixmap(panel); + XSetWindowBackgroundPixmap(scr->display, + panel->magnifyGlass->view->window, + pixmap); + XClearWindow(scr->display, panel->magnifyGlass->view->window); + + XFreePixmap(scr->display, pixmap); + break; + + default: + WMHandleEvent(&event); + break; + } /* of switch */ + } + panel->magnifyGlass->valid = False; + + XUngrabPointer(scr->display, CurrentTime); + XFreeCursor(scr->display, magCursor); + W_DestroyView(panel->magnifyGlass->view); + + XFreePixmap(scr->display, panel->magnifyGlass->mask); + XFreePixmap(scr->display, panel->magnifyGlass->pixmap); + free(panel->magnifyGlass); +} + + + /****************** WheelMatrix Functions ************************/ static wheelMatrix* wheelCreateMatrix(unsigned int width, unsigned int height) { - wheelMatrix *matrix = NULL; - int i; - - assert((width > 0) && (height > 0)); - - matrix = malloc(sizeof(wheelMatrix)); - if (!matrix) { - RErrorCode = RERR_NOMEMORY; - return NULL; - } - - memset(matrix, 0, sizeof(wheelMatrix)); - matrix->width = width; - matrix->height = height; - for (i = 0; i < 3; i++) { - matrix->data[i] = malloc(width*height*sizeof(unsigned char)); - if (!matrix->data[i]) - goto error; - } - - return matrix; - -error: - for (i = 0; i < 3; i++) { - if (matrix->data[i]) - free(matrix->data[i]); - } - if (matrix) - free(matrix); - RErrorCode = RERR_NOMEMORY; - return NULL; + wheelMatrix *matrix = NULL; + int i; + + assert((width > 0) && (height > 0)); + + matrix = malloc(sizeof(wheelMatrix)); + if (!matrix) { + RErrorCode = RERR_NOMEMORY; + return NULL; + } + + memset(matrix, 0, sizeof(wheelMatrix)); + matrix->width = width; + matrix->height = height; + for (i = 0; i < 3; i++) { + matrix->data[i] = malloc(width*height*sizeof(unsigned char)); + if (!matrix->data[i]) + goto error; + } + + return matrix; + + error: + for (i = 0; i < 3; i++) { + if (matrix->data[i]) + free(matrix->data[i]); + } + if (matrix) + free(matrix); + RErrorCode = RERR_NOMEMORY; + return NULL; } static void wheelDestroyMatrix(wheelMatrix *matrix) { - int i; - - assert (matrix!=NULL); - - for (i = 0; i < 3; i++) { - if (matrix->data[i]) - free(matrix->data[i]); - } - free(matrix); + int i; + + assert (matrix!=NULL); + + for (i = 0; i < 3; i++) { + if (matrix->data[i]) + free(matrix->data[i]); + } + free(matrix); } static wheelMatrix* wheelInitMatrix(W_ColorPanel *panel) { - int i; - int x,y; - wheelMatrix *matrix; - unsigned char *rp, *gp, *bp; - RHSVColor cur_hsv; - RColor cur_rgb; - long ofs[4]; - float hue; - int sat; - float xcor, ycor; - float W_PI = 4 *atan(1); - int dhue[4]; + int i; + int x,y; + wheelMatrix *matrix; + unsigned char *rp, *gp, *bp; + RHSVColor cur_hsv; + RColor cur_rgb; + long ofs[4]; + float hue; + int sat; + float xcor, ycor; + float W_PI = 4 *atan(1); + int dhue[4]; + + matrix = wheelCreateMatrix(colorWheelSize+4, colorWheelSize+4); + if (!matrix) + return NULL; + + RRGBtoHSV(&panel->color, &cur_hsv); + + for (i = 0; i < 256; i++) + matrix->values[i] = (unsigned char)(rint(i*cur_hsv.value/255)); + + cur_hsv.value = 255; + + ofs[0] = -1; + ofs[1] = -(colorWheelSize + 4); + /* ofs[2] = 0; superfluous + ofs[3] = 0; + */ + for (y = 0; y < (colorWheelSize+4)/2; y++) { + for (x = y; x < (colorWheelSize+4-y); x++) { + xcor = ((float)(2.0*x - 4.0) / colorWheelSize) - 1; + ycor = ((float)(2.0*y - 4.0) / colorWheelSize) - 1; + + sat = rint(255.0 * sqrt((xcor*xcor) + (ycor*ycor))); + + + + /* offsets are counterclockwise (in triangles) */ + if (y < (colorWheelSize+4)/2) + ofs[0]++; + /* top quarter */ + ofs[1] += colorWheelSize + 4; /* left quarter */ + + + ofs[2] = (colorWheelSize + 4) * (colorWheelSize + 4) - 1 - ofs[0]; /* bottom quarter */ + ofs[3] = (colorWheelSize + 4) * (colorWheelSize + 4) - 1 - ofs[1]; /* right quarter */ + + if (sat < 256) { + cur_hsv.saturation = (unsigned char)sat; + + if (xcor != 0) + hue = atan(ycor/xcor); + else { + if (ycor > 0) + hue = W_PI * 0.5; + else + hue = W_PI * 1.5; + } + + if (xcor < 0) + hue += W_PI; + if ((xcor > 0) && (ycor < 0)) + hue += W_PI * 2.0; + + hue = -hue; /* Reverse direction of ColorWheel */ + + if (hue < 0) + hue += W_PI * 2.0; + + dhue[0] = (hue*360) / (W_PI * 2.0); + + for (i = 0; i < 4; i++) { + + if (i > 0) + dhue[i] = (dhue[i-1] + 90) % 360; + + if ((i == 1) || (i == 3)) + dhue[i] = 360 - dhue[i]; + + if (i == 2) + dhue[i] = 360 - dhue[i] + 180; + + rp = matrix->data[0] + (ofs[i] * sizeof(unsigned char)); + gp = matrix->data[1] + (ofs[i] * sizeof(unsigned char)); + bp = matrix->data[2] + (ofs[i] * sizeof(unsigned char)); + + cur_hsv.hue = dhue[i]; + RHSVtoRGB(&cur_hsv, &cur_rgb); + + *rp = (unsigned char)(cur_rgb.red); + *gp = (unsigned char)(cur_rgb.green); + *bp = (unsigned char)(cur_rgb.blue); + } + } + else { + for (i = 0; i < 4; i++) { + rp = matrix->data[0] + (ofs[i] * sizeof(unsigned char)); + gp = matrix->data[1] + (ofs[i] * sizeof(unsigned char)); + bp = matrix->data[2] + (ofs[i] * sizeof(unsigned char)); + + *rp = (unsigned char)(0); + *gp = (unsigned char)(0); + *bp = (unsigned char)(0); + } + } + } + if (y < (colorWheelSize+4)/2) + ofs[0] += 2*y+1; - matrix = wheelCreateMatrix(colorWheelSize+4, colorWheelSize+4); - if (!matrix) - return NULL; - - RRGBtoHSV(&panel->color, &cur_hsv); - - for (i = 0; i < 256; i++) - matrix->values[i] = (unsigned char)(rint(i*cur_hsv.value/255)); - - cur_hsv.value = 255; - - ofs[0] = -1; - ofs[1] = -(colorWheelSize + 4); -/* ofs[2] = 0; superfluous - ofs[3] = 0; -*/ - for (y = 0; y < (colorWheelSize+4)/2; y++) { - for (x = y; x < (colorWheelSize+4-y); x++) { - xcor = ((float)(2.0*x - 4.0) / colorWheelSize) - 1; - ycor = ((float)(2.0*y - 4.0) / colorWheelSize) - 1; - - sat = rint(255.0 * sqrt((xcor*xcor) + (ycor*ycor))); - - - - /* offsets are counterclockwise (in triangles) */ - if (y < (colorWheelSize+4)/2) - ofs[0]++; - /* top quarter */ - ofs[1] += colorWheelSize + 4; /* left quarter */ - - - ofs[2] = (colorWheelSize + 4) * (colorWheelSize + 4) - 1 - ofs[0]; /* bottom quarter */ - ofs[3] = (colorWheelSize + 4) * (colorWheelSize + 4) - 1 - ofs[1]; /* right quarter */ - - if (sat < 256) { - cur_hsv.saturation = (unsigned char)sat; - - if (xcor != 0) - hue = atan(ycor/xcor); - else { - if (ycor > 0) - hue = W_PI * 0.5; - else - hue = W_PI * 1.5; - } - - if (xcor < 0) - hue += W_PI; - if ((xcor > 0) && (ycor < 0)) - hue += W_PI * 2.0; - - hue = -hue; /* Reverse direction of ColorWheel */ - - if (hue < 0) - hue += W_PI * 2.0; - - dhue[0] = (hue*360) / (W_PI * 2.0); - - for (i = 0; i < 4; i++) { - - if (i > 0) - dhue[i] = (dhue[i-1] + 90) % 360; - - if ((i == 1) || (i == 3)) - dhue[i] = 360 - dhue[i]; - - if (i == 2) - dhue[i] = 360 - dhue[i] + 180; - - rp = matrix->data[0] + (ofs[i] * sizeof(unsigned char)); - gp = matrix->data[1] + (ofs[i] * sizeof(unsigned char)); - bp = matrix->data[2] + (ofs[i] * sizeof(unsigned char)); - - cur_hsv.hue = dhue[i]; - RHSVtoRGB(&cur_hsv, &cur_rgb); - - *rp = (unsigned char)(cur_rgb.red); - *gp = (unsigned char)(cur_rgb.green); - *bp = (unsigned char)(cur_rgb.blue); - } - } - else { - for (i = 0; i < 4; i++) { - rp = matrix->data[0] + (ofs[i] * sizeof(unsigned char)); - gp = matrix->data[1] + (ofs[i] * sizeof(unsigned char)); - bp = matrix->data[2] + (ofs[i] * sizeof(unsigned char)); - - *rp = (unsigned char)(0); - *gp = (unsigned char)(0); - *bp = (unsigned char)(0); - } - } - } - if (y < (colorWheelSize+4)/2) - ofs[0] += 2*y+1; - - ofs[1] += 1 - (colorWheelSize + 4) * (colorWheelSize + 4 - 1 - 2*y); - } - - return matrix; + ofs[1] += 1 - (colorWheelSize + 4) * (colorWheelSize + 4 - 1 - 2*y); + } + + return matrix; } /****************** ColorWheel Functions *******************/ @@ -1321,320 +1775,324 @@ wheelInitMatrix(W_ColorPanel *panel) static void wheelRender(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - int x,y; - RImage *image; - unsigned char *rp, *gp, *bp; - RColor gray; - unsigned long ofs; - - image = RCreateImage(colorWheelSize+4, colorWheelSize+4, False); - if (!image) - return; - - gray.red = gray.green = gray.blue = 0xaa; - - for (x = 0; x < colorWheelSize+4; x++) { - for (y = 0; y < colorWheelSize+4; y++) { - - ofs = (y * image->width) + x; - rp = image->data[0] + ofs; - gp = image->data[1] + ofs; - bp = image->data[2] + ofs; - - if (wheelInsideColorWheel(panel, ofs)) { - *rp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]); - *gp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]); - *bp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]); - } - else { - *rp = (unsigned char)(gray.red); - *gp = (unsigned char)(gray.green); - *bp = (unsigned char)(gray.blue); - } - } - } - - if (panel->wheelImg) - XFreePixmap(scr->display, panel->wheelImg); - - panel->wheelImg = XCreatePixmap(scr->display, W_DRAWABLE(scr), colorWheelSize+4, colorWheelSize+4, scr->depth); - RConvertImage(scr->rcontext, image, &panel->wheelImg); - - /* Check backimage existence. If it doesn't exist, allocate it and fill it */ - if (!panel->selectionBackImg) { - panel->selectionBackImg = XCreatePixmap(scr->display, W_VIEW(panel->wheelFrm)->window, 4, 4, scr->depth); - XCopyArea(scr->display, panel->wheelImg, panel->selectionBackImg, scr->copyGC, panel->colx -2, panel->coly -2, 4, 4, 0, 0); /* -2 is for hot spot correction */ - } - - RDestroyImage(image); + W_Screen *scr = WMWidgetScreen(panel->win); + int x,y; + RImage *image; + unsigned char *rp, *gp, *bp; + RColor gray; + unsigned long ofs; + + image = RCreateImage(colorWheelSize+4, colorWheelSize+4, False); + if (!image) + return; + + gray.red = gray.green = gray.blue = 0xaa; + + for (x = 0; x < colorWheelSize+4; x++) { + for (y = 0; y < colorWheelSize+4; y++) { + + ofs = (y * image->width) + x; + rp = image->data[0] + ofs; + gp = image->data[1] + ofs; + bp = image->data[2] + ofs; + + if (wheelInsideColorWheel(panel, ofs)) { + *rp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]); + *gp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]); + *bp = (unsigned int)(panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]); + } + else { + *rp = (unsigned char)(gray.red); + *gp = (unsigned char)(gray.green); + *bp = (unsigned char)(gray.blue); + } + } + } + + if (panel->wheelImg) + XFreePixmap(scr->display, panel->wheelImg); + + panel->wheelImg = XCreatePixmap(scr->display, W_DRAWABLE(scr), colorWheelSize+4, colorWheelSize+4, scr->depth); + RConvertImage(scr->rcontext, image, &panel->wheelImg); + + /* Check backimage existence. If it doesn't exist, allocate it and fill it */ + if (!panel->selectionBackImg) { + panel->selectionBackImg = XCreatePixmap(scr->display, W_VIEW(panel->wheelFrm)->window, 4, 4, scr->depth); + XCopyArea(scr->display, panel->wheelImg, panel->selectionBackImg, scr->copyGC, + panel->colx -2, panel->coly -2, 4, 4, 0, 0); /* -2 is for hot spot correction */ + } + + RDestroyImage(image); } static Bool wheelInsideColorWheel(W_ColorPanel *panel, unsigned long ofs) { - if ((panel->wheelMtrx->data[0][ofs] != 0) && - (panel->wheelMtrx->data[1][ofs] != 0) && - (panel->wheelMtrx->data[2][ofs] != 0)) - return True; - return False; + return ((panel->wheelMtrx->data[0][ofs] != 0) && + (panel->wheelMtrx->data[1][ofs] != 0) && + (panel->wheelMtrx->data[2][ofs] != 0)); } static void wheelPaint (W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - - XCopyArea(scr->display, panel->wheelImg, panel->wheelView->window, scr->copyGC, 0, 0, colorWheelSize+4, colorWheelSize+4, 0, 0); - - /* Draw selection image */ - XCopyArea(scr->display, panel->selectionImg, panel->wheelView->window, scr->copyGC, 0 , 0, 4, 4, panel->colx -2, panel->coly -2); + W_Screen *scr = WMWidgetScreen(panel->win); + + XCopyArea(scr->display, panel->wheelImg, panel->wheelView->window, scr->copyGC, + 0, 0, colorWheelSize+4, colorWheelSize+4, 0, 0); + + /* Draw selection image */ + XCopyArea(scr->display, panel->selectionImg, panel->wheelView->window, scr->copyGC, + 0, 0, 4, 4, panel->colx -2, panel->coly -2); } static void wheelHandleEvents(XEvent *event, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - - switch (event->type) { - case Expose: - if (event->xexpose.count != 0) - break; - wheelPaint(panel); - break; - } + W_ColorPanel *panel = (W_ColorPanel*)data; + + switch (event->type) { + case Expose: + if (event->xexpose.count != 0) + break; + wheelPaint(panel); + break; + } } static void wheelHandleActionEvents(XEvent *event, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - - switch (event->type) { - case ButtonPress: - if (getPickerPart(panel, event->xbutton.x, event->xbutton.y) == COLORWHEEL_PART) { - panel->flags.dragging = 1; - wheelPositionSelection(panel, event->xbutton.x, event->xbutton.y); - } - break; - - case ButtonRelease: - panel->flags.dragging = 0; - break; - - case MotionNotify: - if (panel->flags.dragging) { - if (getPickerPart(panel, event->xmotion.x, event->xmotion.y) == COLORWHEEL_PART) { - wheelPositionSelection(panel, event->xmotion.x, event->xmotion.y); - } - else - wheelPositionSelectionOutBounds(panel, event->xmotion.x, event->xmotion.y); - } - break; + W_ColorPanel *panel = (W_ColorPanel*)data; + + switch (event->type) { + case ButtonPress: + if (getPickerPart(panel, event->xbutton.x, event->xbutton.y) == COLORWHEEL_PART) { + panel->flags.dragging = 1; + wheelPositionSelection(panel, event->xbutton.x, event->xbutton.y); } + break; + + case ButtonRelease: + panel->flags.dragging = 0; + break; + + case MotionNotify: + if (panel->flags.dragging) { + if (getPickerPart(panel, event->xmotion.x, event->xmotion.y) == COLORWHEEL_PART) { + wheelPositionSelection(panel, event->xmotion.x, event->xmotion.y); + } + else + wheelPositionSelectionOutBounds(panel, event->xmotion.x, event->xmotion.y); + } + break; + } } static int getPickerPart(W_ColorPanel *panel, int x, int y) { - int lx, ly; - unsigned long ofs; - - lx = x; - ly = y; - - if (panel->mode == WMWheelModeColorPanel) { - if ((lx >= 2) && (lx <= 2+colorWheelSize) && (ly >= 2) && (ly <= 2+colorWheelSize)) { - ofs = ly*panel->wheelMtrx->width+lx; - - if (wheelInsideColorWheel(panel, ofs)) - return COLORWHEEL_PART; - } - } - - if (panel->mode == WMCustomPaletteModeColorPanel) { - if ((lx >= 2) && (lx < customPaletteWidth-2) && (ly >= 2) && (ly < customPaletteHeight-2)) { - return CUSTOMPALETTE_PART; - } - } - - return 0; + int lx, ly; + unsigned long ofs; + + lx = x; + ly = y; + + if (panel->mode == WMWheelModeColorPanel) { + if ((lx >= 2) && (lx <= 2+colorWheelSize) && (ly >= 2) && (ly <= 2+colorWheelSize)) { + ofs = ly*panel->wheelMtrx->width+lx; + + if (wheelInsideColorWheel(panel, ofs)) + return COLORWHEEL_PART; + } + } + + if (panel->mode == WMCustomPaletteModeColorPanel) { + if ((lx >= 2) && (lx < customPaletteWidth-2) && (ly >= 2) && (ly < customPaletteHeight-2)) { + return CUSTOMPALETTE_PART; + } + } + + return 0; } - - static void wheelBrightnessSliderCallback(WMWidget *w, void *data) { - int i; - unsigned int v; - int value; - unsigned long ofs; - RColor cur_rgb; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - value = 255-WMGetSliderValue(panel->wheelBrightnessS); - - for (i = 0; i < 256; i++) { - /* We divide by 128 in advance, and check whether that number divides - * by 2 properly. If not, we add one to round the number correctly - */ - v = (i*value) >> 7; + int i; + unsigned int v; + int value; + unsigned long ofs; + RColor cur_rgb; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + value = 255-WMGetSliderValue(panel->wheelBrightnessS); + + for (i = 0; i < 256; i++) { + /* We divide by 128 in advance, and check whether that number divides + * by 2 properly. If not, we add one to round the number correctly + */ + v = (i*value) >> 7; #ifdef EASTEREGG - panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) + v); + panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) + v); #else - panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) +(v & 0x01)); + panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) +(v & 0x01)); #endif - } + } + + ofs = (panel->coly * panel->wheelMtrx->width) + panel->colx; + + if (!wheelInsideColorWheel(panel, ofs)) { + panel->hsvcolor.saturation = 255; + panel->hsvcolor.value = value; + RHSVtoRGB(&panel->hsvcolor, &cur_rgb); - ofs = (panel->coly * panel->wheelMtrx->width) + panel->colx; - - if (!wheelInsideColorWheel(panel, ofs)) { - panel->hsvcolor.saturation = 255; - panel->hsvcolor.value = value; - RHSVtoRGB(&panel->hsvcolor, &cur_rgb); - - panel->color = cur_rgb; - } - else { - panel->color.red = panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]; - panel->color.green = panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]; - panel->color.blue = panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]; - } - - wheelRender(panel); - wheelPaint(panel); - wheelUpdateSelection(panel); + panel->color = cur_rgb; + } + else { + panel->color.red = panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]; + panel->color.green = panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]; + panel->color.blue = panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]; + } + + wheelRender(panel); + wheelPaint(panel); + wheelUpdateSelection(panel); } + static void wheelUpdateSelection(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - WMSetColorPanelColor(panel, panel->color); - panel->lastChanged = WMWheelModeColorPanel; - - /* Redraw color selector (and make a backup of the part it will cover) */ - XCopyArea(scr->display, panel->wheelImg, panel->selectionBackImg, scr->copyGC, panel->colx -2, panel->coly -2, 4, 4, 0, 0); /* "-2" is correction for hotspot location */ - XCopyArea(scr->display, panel->selectionImg, panel->wheelView->window, scr->copyGC, 0, 0, 4, 4, panel->colx -2, panel->coly -2); /* see above */ + W_Screen *scr = WMWidgetScreen(panel->win); + + WMSetColorPanelColor(panel, panel->color); + panel->lastChanged = WMWheelModeColorPanel; + + /* Redraw color selector (and make a backup of the part it will cover) */ + XCopyArea(scr->display, panel->wheelImg, panel->selectionBackImg, scr->copyGC, + panel->colx -2, panel->coly -2, 4, 4, 0, 0); /* "-2" is correction for hotspot location */ + XCopyArea(scr->display, panel->selectionImg, panel->wheelView->window, scr->copyGC, + 0, 0, 4, 4, panel->colx -2, panel->coly -2); /* see above */ } static void wheelUndrawSelection(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - - XCopyArea(scr->display, panel->selectionBackImg, panel->wheelView->window, scr->copyGC, 0, 0, 4, 4, panel->colx -2, panel->coly -2); /* see above */ + W_Screen *scr = WMWidgetScreen(panel->win); + + XCopyArea(scr->display, panel->selectionBackImg, panel->wheelView->window, scr->copyGC, + 0, 0, 4, 4, panel->colx -2, panel->coly -2); /* see above */ } static void wheelPositionSelection(W_ColorPanel *panel, int x, int y) { - unsigned long ofs = (y * panel->wheelMtrx->width)+ x; - - - panel->color.red = panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]; - panel->color.green = panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]; - panel->color.blue = panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]; - - wheelUndrawSelection(panel); - - panel->colx = x; - panel->coly = y; - - wheelUpdateSelection(panel); - wheelUpdateBrightnessGradientFromLocation(panel); + unsigned long ofs = (y * panel->wheelMtrx->width)+ x; + + + panel->color.red = panel->wheelMtrx->values[ panel->wheelMtrx->data[0][ofs] ]; + panel->color.green = panel->wheelMtrx->values[ panel->wheelMtrx->data[1][ofs] ]; + panel->color.blue = panel->wheelMtrx->values[ panel->wheelMtrx->data[2][ofs] ]; + + wheelUndrawSelection(panel); + + panel->colx = x; + panel->coly = y; + + wheelUpdateSelection(panel); + wheelUpdateBrightnessGradientFromLocation(panel); } static void wheelPositionSelectionOutBounds(W_ColorPanel *panel, int x, int y) { - RHSVColor cur_hsv; - float hue; - float xcor, ycor; - float W_PI = 4*atan(1); - - xcor = ((x*2.0) / (colorWheelSize+4)) - 1.0; - ycor = ((y*2.0) / (colorWheelSize+4)) - 1.0; - - cur_hsv.saturation = 255; - cur_hsv.value = 255 - WMGetSliderValue(panel->wheelBrightnessS); - - if (xcor != 0) - hue = atan(ycor/xcor); - else { - if (ycor > 0) - hue = W_PI * 0.5; - else - hue = W_PI * 1.5; - } - - if (xcor < 0) - hue += W_PI; - if ((xcor > 0) && (ycor < 0)) - hue += W_PI * 2.0; - - hue = -hue; - - if (hue < 0) - hue += W_PI * 2.0; - - cur_hsv.hue = (hue*360.0)/(W_PI*2.0); - RHSVtoRGB(&cur_hsv, &panel->color); - - wheelUndrawSelection(panel); - - panel->colx = 2 + rint((colorWheelSize * (1.0 + cos( cur_hsv.hue*W_PI/180))) /2.0); /* "+2" because of "colorWheelSize + 4" */ - panel->coly = 2 + rint((colorWheelSize * (1.0 + sin(-cur_hsv.hue*W_PI/180))) /2.0); - - wheelUpdateSelection(panel); - wheelUpdateBrightnessGradientFromHSV(panel, cur_hsv); + RHSVColor cur_hsv; + float hue; + float xcor, ycor; + float W_PI = 4*atan(1); + + xcor = ((x*2.0) / (colorWheelSize+4)) - 1.0; + ycor = ((y*2.0) / (colorWheelSize+4)) - 1.0; + + cur_hsv.saturation = 255; + cur_hsv.value = 255 - WMGetSliderValue(panel->wheelBrightnessS); + + if (xcor != 0) + hue = atan(ycor/xcor); + else { + if (ycor > 0) + hue = W_PI * 0.5; + else + hue = W_PI * 1.5; + } + + if (xcor < 0) + hue += W_PI; + if ((xcor > 0) && (ycor < 0)) + hue += W_PI * 2.0; + + hue = -hue; + + if (hue < 0) + hue += W_PI * 2.0; + + cur_hsv.hue = (hue*360.0)/(W_PI*2.0); + RHSVtoRGB(&cur_hsv, &panel->color); + + wheelUndrawSelection(panel); + + panel->colx = 2 + rint((colorWheelSize * (1.0 + cos( cur_hsv.hue*W_PI/180))) /2.0); /* "+2" because of "colorWheelSize + 4" */ + panel->coly = 2 + rint((colorWheelSize * (1.0 + sin(-cur_hsv.hue*W_PI/180))) /2.0); + + wheelUpdateSelection(panel); + wheelUpdateBrightnessGradientFromHSV(panel, cur_hsv); } static void wheelUpdateBrightnessGradientFromHSV(W_ColorPanel *panel, RHSVColor topColor) { - RColor from; - - /* Update Brightness-Slider */ - topColor.value = 255; - RHSVtoRGB(&topColor, &from); - - wheelUpdateBrightnessGradient(panel, from); + RColor from; + + /* Update Brightness-Slider */ + topColor.value = 255; + RHSVtoRGB(&topColor, &from); + + wheelUpdateBrightnessGradient(panel, from); } static void wheelUpdateBrightnessGradientFromLocation(W_ColorPanel *panel) { - RColor from; - unsigned long ofs; - - ofs = panel->coly * panel->wheelMtrx->width + panel->colx; - - from.red = panel->wheelMtrx->data[0][ofs]; - from.green = panel->wheelMtrx->data[1][ofs]; - from.blue = panel->wheelMtrx->data[2][ofs]; - - wheelUpdateBrightnessGradient(panel, from); + RColor from; + unsigned long ofs; + + ofs = panel->coly * panel->wheelMtrx->width + panel->colx; + + from.red = panel->wheelMtrx->data[0][ofs]; + from.green = panel->wheelMtrx->data[1][ofs]; + from.blue = panel->wheelMtrx->data[2][ofs]; + + wheelUpdateBrightnessGradient(panel, from); } static void wheelUpdateBrightnessGradient(W_ColorPanel *panel, RColor topColor) { - RColor to; - RImage *sliderImg; - WMPixmap *sliderPxmp; - - to.red = to.green = to.blue = 0; - - sliderImg = RRenderGradient(16, 153, &topColor, &to, RGRD_VERTICAL); - sliderPxmp = WMCreatePixmapFromRImage(WMWidgetScreen(panel->win), sliderImg, 0); - RDestroyImage(sliderImg); - WMSetSliderImage(panel->wheelBrightnessS, sliderPxmp); - WMReleasePixmap(sliderPxmp); + RColor to; + RImage *sliderImg; + WMPixmap *sliderPxmp; + + to.red = to.green = to.blue = 0; + + sliderImg = RRenderGradient(16, 153, &topColor, &to, RGRD_VERTICAL); + sliderPxmp = WMCreatePixmapFromRImage(WMWidgetScreen(panel->win), sliderImg, 0); + RDestroyImage(sliderImg); + WMSetSliderImage(panel->wheelBrightnessS, sliderPxmp); + WMReleasePixmap(sliderPxmp); } /****************** Grayscale Panel Functions ***************/ @@ -1642,72 +2100,72 @@ wheelUpdateBrightnessGradient(W_ColorPanel *panel, RColor topColor) static void grayBrightnessSliderCallback(WMWidget *w, void *data) { - RColor color; - int value; - char tmp[3]; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - value = WMGetSliderValue(panel->grayBrightnessS); - - sprintf(tmp, "%d", value); - - WMSetTextFieldText(panel->grayBrightnessT, tmp); - color.red = color.green = color.blue = rint(2.55*value); - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMGrayModeColorPanel; + RColor color; + int value; + char tmp[4]; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + value = WMGetSliderValue(panel->grayBrightnessS); + + sprintf(tmp, "%d", value); + + WMSetTextFieldText(panel->grayBrightnessT, tmp); + color.red = color.green = color.blue = rint(2.55*value); + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMGrayModeColorPanel; } static void grayPresetButtonCallback(WMWidget *w, void *data) { - RColor color; - char tmp[3]; - int value; - int i=0; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - while (i < 7) { - if (w == panel->grayPresetBtn[i]) - break; - i++; - } - - value = rint(100.0/6.0*i); - sprintf(tmp, "%d", value); - - WMSetTextFieldText(panel->grayBrightnessT, tmp); - color.red = color.green = color.blue = rint(255.0*i/6.0); - - WMSetSliderValue(panel->grayBrightnessS, rint(100.0*i/6.0)); - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMGrayModeColorPanel; + RColor color; + char tmp[4]; + int value; + int i=0; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + while (i < 7) { + if (w == panel->grayPresetBtn[i]) + break; + i++; + } + + value = rint(100.0/6.0*i); + sprintf(tmp, "%d", value); + + WMSetTextFieldText(panel->grayBrightnessT, tmp); + color.red = color.green = color.blue = rint(255.0*i/6.0); + + WMSetSliderValue(panel->grayBrightnessS, rint(100.0*i/6.0)); + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMGrayModeColorPanel; } static void grayBrightnessTextFieldCallback(void *observerData, WMNotification *notification) { - RColor color; - char tmp[3]; - int value; - W_ColorPanel *panel = (W_ColorPanel*)observerData; - - value = atoi(WMGetTextFieldText(panel->grayBrightnessT)); - if (value > 100) - value = 100; - if (value < 0) - value = 0; - - sprintf(tmp, "%d", value); - WMSetTextFieldText(panel->grayBrightnessT, tmp); - WMSetSliderValue(panel->grayBrightnessS, value); - - color.red = color.green = color.blue = rint(255.0*value/100.0); - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMGrayModeColorPanel; + RColor color; + char tmp[4]; + int value; + W_ColorPanel *panel = (W_ColorPanel*)observerData; + + value = atoi(WMGetTextFieldText(panel->grayBrightnessT)); + if (value > 100) + value = 100; + if (value < 0) + value = 0; + + sprintf(tmp, "%d", value); + WMSetTextFieldText(panel->grayBrightnessT, tmp); + WMSetSliderValue(panel->grayBrightnessS, value); + + color.red = color.green = color.blue = rint(255.0*value/100.0); + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMGrayModeColorPanel; } /******************* RGB Panel Functions *****************/ @@ -1715,68 +2173,68 @@ grayBrightnessTextFieldCallback(void *observerData, WMNotification *notification static void rgbSliderCallback(WMWidget *w, void *data) { - RColor color; - int value[3]; - char tmp[3]; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - value[0] = WMGetSliderValue(panel->rgbRedS); - value[1] = WMGetSliderValue(panel->rgbGreenS); - value[2] = WMGetSliderValue(panel->rgbBlueS); - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->rgbRedT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->rgbGreenT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->rgbBlueT, tmp); - - color.red = value[0]; - color.green = value[1]; - color.blue = value[2]; - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMRGBModeColorPanel; + RColor color; + int value[3]; + char tmp[4]; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + value[0] = WMGetSliderValue(panel->rgbRedS); + value[1] = WMGetSliderValue(panel->rgbGreenS); + value[2] = WMGetSliderValue(panel->rgbBlueS); + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->rgbRedT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->rgbGreenT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->rgbBlueT, tmp); + + color.red = value[0]; + color.green = value[1]; + color.blue = value[2]; + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMRGBModeColorPanel; } static void rgbTextFieldCallback(void *observerData, WMNotification *notification) { - RColor color; - char tmp[3]; - int value[3]; - int n; - W_ColorPanel *panel = (W_ColorPanel*)observerData; - - value[0] = atoi(WMGetTextFieldText(panel->rgbRedT)); - value[1] = atoi(WMGetTextFieldText(panel->rgbGreenT)); - value[2] = atoi(WMGetTextFieldText(panel->rgbBlueT)); - - for (n=0; n < 3; n++) { - if (value[n] > 255) - value[n] = 255; - if (value[n] < 0) - value[n] = 0; - } - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->rgbRedT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->rgbGreenT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->rgbBlueT, tmp); - - WMSetSliderValue(panel->rgbRedS, value[0]); - WMSetSliderValue(panel->rgbGreenS, value[1]); - WMSetSliderValue(panel->rgbBlueS, value[2]); - - color.red = value[0]; - color.green = value[1]; - color.blue = value[2]; - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMRGBModeColorPanel; + RColor color; + char tmp[4]; + int value[3]; + int n; + W_ColorPanel *panel = (W_ColorPanel*)observerData; + + value[0] = atoi(WMGetTextFieldText(panel->rgbRedT)); + value[1] = atoi(WMGetTextFieldText(panel->rgbGreenT)); + value[2] = atoi(WMGetTextFieldText(panel->rgbBlueT)); + + for (n=0; n < 3; n++) { + if (value[n] > 255) + value[n] = 255; + if (value[n] < 0) + value[n] = 0; + } + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->rgbRedT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->rgbGreenT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->rgbBlueT, tmp); + + WMSetSliderValue(panel->rgbRedS, value[0]); + WMSetSliderValue(panel->rgbGreenS, value[1]); + WMSetSliderValue(panel->rgbBlueS, value[2]); + + color.red = value[0]; + color.green = value[1]; + color.blue = value[2]; + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMRGBModeColorPanel; } @@ -1785,75 +2243,75 @@ rgbTextFieldCallback(void *observerData, WMNotification *notification) static void cmykSliderCallback(WMWidget *w, void *data) { - RColor color; - int value[4]; - char tmp[3]; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - value[0] = WMGetSliderValue(panel->cmykCyanS); - value[1] = WMGetSliderValue(panel->cmykMagentaS); - value[2] = WMGetSliderValue(panel->cmykYellowS); - value[3] = WMGetSliderValue(panel->cmykBlackS); - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->cmykCyanT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->cmykMagentaT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->cmykYellowT, tmp); - sprintf(tmp, "%d", value[3]); - WMSetTextFieldText(panel->cmykBlackT, tmp); - - color.red = rint((255.0 - (value[0] * 2.55)) * (1.0 - (value[3] / 100.0))); - color.green = rint((255.0 - (value[1] * 2.55)) * (1.0 - (value[3] / 100.0))); - color.blue = rint((255.0 - (value[2] * 2.55)) * (1.0 - (value[3] / 100.0))); - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMCMYKModeColorPanel; + RColor color; + int value[4]; + char tmp[4]; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + value[0] = WMGetSliderValue(panel->cmykCyanS); + value[1] = WMGetSliderValue(panel->cmykMagentaS); + value[2] = WMGetSliderValue(panel->cmykYellowS); + value[3] = WMGetSliderValue(panel->cmykBlackS); + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->cmykCyanT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->cmykMagentaT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->cmykYellowT, tmp); + sprintf(tmp, "%d", value[3]); + WMSetTextFieldText(panel->cmykBlackT, tmp); + + color.red = rint((255.0 - (value[0] * 2.55)) * (1.0 - (value[3] / 100.0))); + color.green = rint((255.0 - (value[1] * 2.55)) * (1.0 - (value[3] / 100.0))); + color.blue = rint((255.0 - (value[2] * 2.55)) * (1.0 - (value[3] / 100.0))); + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMCMYKModeColorPanel; } static void cmykTextFieldCallback(void *observerData, WMNotification *notification) { - RColor color; - char tmp[3]; - int value[4]; - int n; - W_ColorPanel *panel = (W_ColorPanel*)observerData; - - value[0] = atoi(WMGetTextFieldText(panel->cmykCyanT)); - value[1] = atoi(WMGetTextFieldText(panel->cmykMagentaT)); - value[2] = atoi(WMGetTextFieldText(panel->cmykYellowT)); - value[3] = atoi(WMGetTextFieldText(panel->cmykBlackT)); - - for (n=0; n < 4; n++) { - if (value[n] > 100) - value[n] = 100; - if (value[n] < 0) - value[n] = 0; - } - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->cmykCyanT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->cmykMagentaT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->cmykYellowT, tmp); - sprintf(tmp, "%d", value[3]); - WMSetTextFieldText(panel->cmykBlackT, tmp); - - WMSetSliderValue(panel->cmykCyanS, value[0]); - WMSetSliderValue(panel->cmykMagentaS, value[1]); - WMSetSliderValue(panel->cmykYellowS, value[2]); - WMSetSliderValue(panel->cmykBlackS, value[3]); - - color.red = rint((255.0 - (value[0] * 2.55)) * (1.0 - (value[3] / 100.0))); - color.green = rint((255.0 - (value[1] * 2.55)) * (1.0 - (value[3] / 100.0))); - color.blue = rint((255.0 - (value[2] * 2.55)) * (1.0 - (value[3] / 100.0))); - - WMSetColorPanelColor(panel, color); - panel->lastChanged = WMCMYKModeColorPanel; + RColor color; + char tmp[4]; + int value[4]; + int n; + W_ColorPanel *panel = (W_ColorPanel*)observerData; + + value[0] = atoi(WMGetTextFieldText(panel->cmykCyanT)); + value[1] = atoi(WMGetTextFieldText(panel->cmykMagentaT)); + value[2] = atoi(WMGetTextFieldText(panel->cmykYellowT)); + value[3] = atoi(WMGetTextFieldText(panel->cmykBlackT)); + + for (n=0; n < 4; n++) { + if (value[n] > 100) + value[n] = 100; + if (value[n] < 0) + value[n] = 0; + } + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->cmykCyanT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->cmykMagentaT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->cmykYellowT, tmp); + sprintf(tmp, "%d", value[3]); + WMSetTextFieldText(panel->cmykBlackT, tmp); + + WMSetSliderValue(panel->cmykCyanS, value[0]); + WMSetSliderValue(panel->cmykMagentaS, value[1]); + WMSetSliderValue(panel->cmykYellowS, value[2]); + WMSetSliderValue(panel->cmykBlackS, value[3]); + + color.red = rint((255.0 - (value[0] * 2.55)) * (1.0 - (value[3] / 100.0))); + color.green = rint((255.0 - (value[1] * 2.55)) * (1.0 - (value[3] / 100.0))); + color.blue = rint((255.0 - (value[2] * 2.55)) * (1.0 - (value[3] / 100.0))); + + WMSetColorPanelColor(panel, color); + panel->lastChanged = WMCMYKModeColorPanel; } /********************** HSB Panel Functions ***********************/ @@ -1861,180 +2319,180 @@ cmykTextFieldCallback(void *observerData, WMNotification *notification) static void hsbSliderCallback(WMWidget *w, void *data) { - RColor color; - int value[3]; - char tmp[3]; - - W_ColorPanel *panel = (W_ColorPanel*)data; - - value[0] = WMGetSliderValue(panel->hsbHueS); - value[1] = WMGetSliderValue(panel->hsbSaturationS); - value[2] = WMGetSliderValue(panel->hsbBrightnessS); - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->hsbHueT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->hsbSaturationT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->hsbBrightnessT, tmp); - - panel->hsvcolor.hue = value[0]; - panel->hsvcolor.saturation = value[1]*2.55; - panel->hsvcolor.value = value[2]*2.55; - - RHSVtoRGB(&panel->hsvcolor, &color); - - panel->lastChanged = WMHSBModeColorPanel; - WMSetColorPanelColor(panel, color); - - if (w != panel->hsbBrightnessS) - hsbUpdateBrightnessGradient(panel); - if (w != panel->hsbSaturationS) - hsbUpdateSaturationGradient(panel); - if (w != panel->hsbHueS) - hsbUpdateHueGradient(panel); + RColor color; + int value[3]; + char tmp[4]; + + W_ColorPanel *panel = (W_ColorPanel*)data; + + value[0] = WMGetSliderValue(panel->hsbHueS); + value[1] = WMGetSliderValue(panel->hsbSaturationS); + value[2] = WMGetSliderValue(panel->hsbBrightnessS); + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->hsbHueT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->hsbSaturationT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->hsbBrightnessT, tmp); + + panel->hsvcolor.hue = value[0]; + panel->hsvcolor.saturation = value[1]*2.55; + panel->hsvcolor.value = value[2]*2.55; + + RHSVtoRGB(&panel->hsvcolor, &color); + + panel->lastChanged = WMHSBModeColorPanel; + WMSetColorPanelColor(panel, color); + + if (w != panel->hsbBrightnessS) + hsbUpdateBrightnessGradient(panel); + if (w != panel->hsbSaturationS) + hsbUpdateSaturationGradient(panel); + if (w != panel->hsbHueS) + hsbUpdateHueGradient(panel); } static void hsbTextFieldCallback(void *observerData, WMNotification *notification) { - RColor color; - char tmp[3]; - int value[3]; - int n; - W_ColorPanel *panel = (W_ColorPanel*)observerData; - - value[0] = atoi(WMGetTextFieldText(panel->hsbHueT)); - value[1] = atoi(WMGetTextFieldText(panel->hsbSaturationT)); - value[2] = atoi(WMGetTextFieldText(panel->hsbBrightnessT)); - - if (value[0] > 359) - value[0] = 359; - if (value[0] < 0) - value[0] = 0; - - for (n=1; n < 3; n++) { - if (value[n] > 100) - value[n] = 100; - if (value[n] < 0) - value[n] = 0; - } - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->hsbHueT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->hsbSaturationT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->hsbBrightnessT, tmp); - - WMSetSliderValue(panel->hsbHueS, value[0]); - WMSetSliderValue(panel->hsbSaturationS, value[1]); - WMSetSliderValue(panel->hsbBrightnessS, value[2]); - - panel->hsvcolor.hue = value[0]; - panel->hsvcolor.saturation = value[1]*2.55; - panel->hsvcolor.value = value[2]*2.55; - - RHSVtoRGB(&panel->hsvcolor, &color); - - panel->lastChanged = WMHSBModeColorPanel; - WMSetColorPanelColor(panel, color); - - hsbUpdateBrightnessGradient(panel); - hsbUpdateSaturationGradient(panel); - hsbUpdateHueGradient(panel); + RColor color; + char tmp[4]; + int value[3]; + int n; + W_ColorPanel *panel = (W_ColorPanel*)observerData; + + value[0] = atoi(WMGetTextFieldText(panel->hsbHueT)); + value[1] = atoi(WMGetTextFieldText(panel->hsbSaturationT)); + value[2] = atoi(WMGetTextFieldText(panel->hsbBrightnessT)); + + if (value[0] > 359) + value[0] = 359; + if (value[0] < 0) + value[0] = 0; + + for (n=1; n < 3; n++) { + if (value[n] > 100) + value[n] = 100; + if (value[n] < 0) + value[n] = 0; + } + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->hsbHueT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->hsbSaturationT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->hsbBrightnessT, tmp); + + WMSetSliderValue(panel->hsbHueS, value[0]); + WMSetSliderValue(panel->hsbSaturationS, value[1]); + WMSetSliderValue(panel->hsbBrightnessS, value[2]); + + panel->hsvcolor.hue = value[0]; + panel->hsvcolor.saturation = value[1]*2.55; + panel->hsvcolor.value = value[2]*2.55; + + RHSVtoRGB(&panel->hsvcolor, &color); + + panel->lastChanged = WMHSBModeColorPanel; + WMSetColorPanelColor(panel, color); + + hsbUpdateBrightnessGradient(panel); + hsbUpdateSaturationGradient(panel); + hsbUpdateHueGradient(panel); } static void hsbUpdateBrightnessGradient(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - RColor from; - RColor to; - RHSVColor hsvcolor; - RImage *sliderImg; - WMPixmap *sliderPxmp; - - from.red = from.green = from.blue = 0; - hsvcolor = panel->hsvcolor; - hsvcolor.value = 255; - - RHSVtoRGB(&hsvcolor, &to); - - sliderImg = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); - RDestroyImage(sliderImg); - W_PaintText(W_VIEW(panel->hsbBrightnessS), sliderPxmp->pixmap, WMSystemFontOfSize(scr, 12), 2, 0, 100, WALeft, W_GC(scr->white), False, "Brightness", strlen("Brightness")); - WMSetSliderImage(panel->hsbBrightnessS, sliderPxmp); - WMReleasePixmap(sliderPxmp); + W_Screen *scr = WMWidgetScreen(panel->win); + RColor from; + RColor to; + RHSVColor hsvcolor; + RImage *sliderImg; + WMPixmap *sliderPxmp; + + from.red = from.green = from.blue = 0; + hsvcolor = panel->hsvcolor; + hsvcolor.value = 255; + + RHSVtoRGB(&hsvcolor, &to); + + sliderImg = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); + RDestroyImage(sliderImg); + W_PaintText(W_VIEW(panel->hsbBrightnessS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scr->white), False, "Brightness", strlen("Brightness")); + WMSetSliderImage(panel->hsbBrightnessS, sliderPxmp); + WMReleasePixmap(sliderPxmp); } static void hsbUpdateSaturationGradient(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - RColor from; - RColor to; - RHSVColor hsvcolor; - RImage *sliderImg; - WMPixmap *sliderPxmp; - - hsvcolor = panel->hsvcolor; - hsvcolor.saturation = 0; - RHSVtoRGB(&hsvcolor, &from); - - hsvcolor.saturation = 255; - RHSVtoRGB(&hsvcolor, &to); - - sliderImg = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); - sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); - RDestroyImage(sliderImg); - if (hsvcolor.value < 128) - W_PaintText(W_VIEW(panel->hsbSaturationS), sliderPxmp->pixmap, WMSystemFontOfSize(scr, 12), 2, 0, 100, WALeft, W_GC(scr->white), False, "Saturation", strlen("Saturation")); - else - W_PaintText(W_VIEW(panel->hsbSaturationS), sliderPxmp->pixmap, WMSystemFontOfSize(scr, 12), 2, 0, 100, WALeft, W_GC(scr->black), False, "Saturation", strlen("Saturation")); - - WMSetSliderImage(panel->hsbSaturationS, sliderPxmp); - WMReleasePixmap(sliderPxmp); + W_Screen *scr = WMWidgetScreen(panel->win); + RColor from; + RColor to; + RHSVColor hsvcolor; + RImage *sliderImg; + WMPixmap *sliderPxmp; + + hsvcolor = panel->hsvcolor; + hsvcolor.saturation = 0; + RHSVtoRGB(&hsvcolor, &from); + + hsvcolor.saturation = 255; + RHSVtoRGB(&hsvcolor, &to); + + sliderImg = RRenderGradient(141, 16, &from, &to, RGRD_HORIZONTAL); + sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); + RDestroyImage(sliderImg); + if (hsvcolor.value < 128) + W_PaintText(W_VIEW(panel->hsbSaturationS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scr->white), False, "Saturation", strlen("Saturation")); + else + W_PaintText(W_VIEW(panel->hsbSaturationS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scr->black), False, "Saturation", strlen("Saturation")); + + WMSetSliderImage(panel->hsbSaturationS, sliderPxmp); + WMReleasePixmap(sliderPxmp); } static void hsbUpdateHueGradient(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - RColor **colors = NULL; - RHSVColor hsvcolor; - RImage *sliderImg; - WMPixmap *sliderPxmp; - int i; - - hsvcolor = panel->hsvcolor; - - colors = malloc(sizeof(RColor*)*(8)); - for (i=0; i<7; i++) { - hsvcolor.hue = (360*i)/6; - colors[i] = malloc(sizeof(RColor)); - RHSVtoRGB(&hsvcolor, colors[i]); - } - colors[7] = NULL; - - sliderImg = RRenderMultiGradient(141, 16, colors, RGRD_HORIZONTAL); - sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); - RDestroyImage(sliderImg); - if (hsvcolor.value < 128) - W_PaintText(W_VIEW(panel->hsbHueS), sliderPxmp->pixmap, WMSystemFontOfSize(scr, 12), 2, 0, 100, WALeft, W_GC(scr->white), False, "Hue", strlen("Hue")); - else - W_PaintText(W_VIEW(panel->hsbHueS), sliderPxmp->pixmap, WMSystemFontOfSize(scr, 12), 2, 0, 100, WALeft, W_GC(scr->black), False, "Hue", strlen("Hue")); - - WMSetSliderImage(panel->hsbHueS, sliderPxmp); - WMReleasePixmap(sliderPxmp); - - for (i=0; i<7; i++) { - if (colors[i]) - free(colors[i]); - } - if (colors) - free(colors); + W_Screen *scr = WMWidgetScreen(panel->win); + RColor **colors = NULL; + RHSVColor hsvcolor; + RImage *sliderImg; + WMPixmap *sliderPxmp; + int i; + + hsvcolor = panel->hsvcolor; + + colors = malloc(sizeof(RColor*)*(8)); + for (i=0; i<7; i++) { + hsvcolor.hue = (360*i)/6; + colors[i] = malloc(sizeof(RColor)); + RHSVtoRGB(&hsvcolor, colors[i]); + } + colors[7] = NULL; + + sliderImg = RRenderMultiGradient(141, 16, colors, RGRD_HORIZONTAL); + sliderPxmp = WMCreatePixmapFromRImage(scr, sliderImg, 0); + RDestroyImage(sliderImg); + if (hsvcolor.value < 128) + W_PaintText(W_VIEW(panel->hsbHueS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scr->white), False, "Hue", strlen("Hue")); + else + W_PaintText(W_VIEW(panel->hsbHueS), sliderPxmp->pixmap, panel->font12, 2, 0, 100, WALeft, W_GC(scr->black), False, "Hue", strlen("Hue")); + + WMSetSliderImage(panel->hsbHueS, sliderPxmp); + WMReleasePixmap(sliderPxmp); + + for (i=0; i<7; i++) { + if (colors[i]) + free(colors[i]); + } + if (colors) + free(colors); } /*************** Custom Palette Functions ****************/ @@ -2042,49 +2500,49 @@ hsbUpdateHueGradient(W_ColorPanel *panel) static void customRenderSpectrum(W_ColorPanel *panel) { - RImage *spectrum; - int hue, sat, val; - int x,y; - unsigned long ofs; - unsigned char *rp, *gp, *bp; - RColor color; - RHSVColor cur_hsv; - - spectrum = RCreateImage(SPECTRUM_WIDTH, SPECTRUM_HEIGHT, 0); - - for (y=0; y<360; y++) { - val = 255; - sat = 0; - hue = y; - for (x=0; x<511; x++) { - ofs = (y * 511) + x; - - cur_hsv.hue = hue; - cur_hsv.saturation = sat; - cur_hsv.value = val; - - RHSVtoRGB (&cur_hsv, &color); - - rp = spectrum->data[0] + ofs; - gp = spectrum->data[1] + ofs; - bp = spectrum->data[2] + ofs; - - *rp = (unsigned char)color.red; - *gp = (unsigned char)color.green; - *bp = (unsigned char)color.blue; - - if (x<255) - sat++; - - if (x>255) - val--; - } - } - if (panel->customPaletteImg) { - RDestroyImage(panel->customPaletteImg); - panel->customPaletteImg = NULL; - } - panel->customPaletteImg = spectrum; + RImage *spectrum; + int hue, sat, val; + int x,y; + unsigned long ofs; + unsigned char *rp, *gp, *bp; + RColor color; + RHSVColor cur_hsv; + + spectrum = RCreateImage(SPECTRUM_WIDTH, SPECTRUM_HEIGHT, 0); + + for (y=0; y<360; y++) { + val = 255; + sat = 0; + hue = y; + for (x=0; x<511; x++) { + ofs = (y * 511) + x; + + cur_hsv.hue = hue; + cur_hsv.saturation = sat; + cur_hsv.value = val; + + RHSVtoRGB (&cur_hsv, &color); + + rp = spectrum->data[0] + ofs; + gp = spectrum->data[1] + ofs; + bp = spectrum->data[2] + ofs; + + *rp = (unsigned char)color.red; + *gp = (unsigned char)color.green; + *bp = (unsigned char)color.blue; + + if (x<255) + sat++; + + if (x>255) + val--; + } + } + if (panel->customPaletteImg) { + RDestroyImage(panel->customPaletteImg); + panel->customPaletteImg = NULL; + } + panel->customPaletteImg = spectrum; } @@ -2092,408 +2550,405 @@ customRenderSpectrum(W_ColorPanel *panel) static void customSetPalette(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - RImage *scaledImg; - Pixmap image; - int item; - - image = XCreatePixmap(scr->display, W_DRAWABLE(scr), customPaletteWidth, customPaletteHeight, scr->depth); - - scaledImg = RScaleImage(panel->customPaletteImg, customPaletteWidth, customPaletteHeight); - RConvertImage(scr->rcontext, scaledImg, &image); - RDestroyImage(scaledImg); - - XCopyArea(scr->display, image, panel->customPaletteContentView->window, scr->copyGC, 0, 0, customPaletteWidth, customPaletteHeight, 0, 0); - - /* Check backimage existence. If it doesn't exist, allocate it and fill it */ - if (!panel->selectionBackImg) { - panel->selectionBackImg = XCreatePixmap(scr->display, panel->customPaletteContentView->window, 4, 4, scr->depth); - } - - XCopyArea(scr->display, image, panel->selectionBackImg, scr->copyGC, panel->palx-2, panel->paly-2, 4, 4, 0, 0); - XCopyArea(scr->display, panel->selectionImg, panel->customPaletteContentView->window, scr->copyGC, 0 , 0, 4, 4, panel->palx-2, panel->paly-2); - XFreePixmap(scr->display, image); - - panel->palXRatio = (float)(panel->customPaletteImg->width) / (float)(customPaletteWidth); - panel->palYRatio = (float)(panel->customPaletteImg->height) / (float)(customPaletteHeight); - - item = WMGetPopUpButtonSelectedItem (panel->customPaletteHistoryBtn); - - /* if palette != "Spectrum", we are allowed to rename and remove it */ - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, menuRename, (item > 0) ); - WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, menuRemove, (item > 0) ); + W_Screen *scr = WMWidgetScreen(panel->win); + RImage *scaledImg; + Pixmap image; + int item; + + image = XCreatePixmap(scr->display, W_DRAWABLE(scr), customPaletteWidth, customPaletteHeight, scr->depth); + + scaledImg = RScaleImage(panel->customPaletteImg, customPaletteWidth, customPaletteHeight); + RConvertImage(scr->rcontext, scaledImg, &image); + RDestroyImage(scaledImg); + + XCopyArea(scr->display, image, panel->customPaletteContentView->window, scr->copyGC, 0, 0, customPaletteWidth, customPaletteHeight, 0, 0); + + /* Check backimage existence. If it doesn't exist, allocate it and fill it */ + if (!panel->selectionBackImg) { + panel->selectionBackImg = XCreatePixmap(scr->display, panel->customPaletteContentView->window, 4, 4, scr->depth); + } + + XCopyArea(scr->display, image, panel->selectionBackImg, scr->copyGC, panel->palx-2, panel->paly-2, 4, 4, 0, 0); + XCopyArea(scr->display, panel->selectionImg, panel->customPaletteContentView->window, scr->copyGC, 0 , 0, 4, 4, panel->palx-2, panel->paly-2); + XFreePixmap(scr->display, image); + + panel->palXRatio = (float)(panel->customPaletteImg->width) / (float)(customPaletteWidth); + panel->palYRatio = (float)(panel->customPaletteImg->height) / (float)(customPaletteHeight); + + item = WMGetPopUpButtonSelectedItem (panel->customPaletteHistoryBtn); + + /* if palette != "Spectrum", we are allowed to rename and remove it */ + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, menuRename, (item > 0) ); + WMSetPopUpButtonItemEnabled(panel->customPaletteMenuBtn, menuRemove, (item > 0) ); } static void customPalettePositionSelection(W_ColorPanel *panel, int x, int y) { - W_Screen *scr = WMWidgetScreen(panel->win); - unsigned long ofs; - - - /* undraw selection */ - XCopyArea(scr->display, panel->selectionBackImg, panel->customPaletteContentView->window, scr->copyGC, 0, 0, 4, 4, panel->palx-2, panel->paly-2); - - panel->palx = x; - panel->paly = y; - - ofs = rint(x * panel->palXRatio) + rint(y * panel->palYRatio) * panel->customPaletteImg->width; - - panel->color.red = panel->customPaletteImg->data[0][ofs]; - panel->color.green = panel->customPaletteImg->data[1][ofs]; - panel->color.blue = panel->customPaletteImg->data[2][ofs]; - - WMSetColorPanelColor(panel, panel->color); - panel->lastChanged = WMCustomPaletteModeColorPanel; - - /* Redraw color selector (and make a backup of the part it will cover) */ - XCopyArea(scr->display, panel->customPaletteContentView->window, panel->selectionBackImg, scr->copyGC, panel->palx-2, panel->paly-2, 4, 4, 0, 0); /* "-2" is correction for hotspot location */ - XCopyArea(scr->display, panel->selectionImg, panel->customPaletteContentView->window, scr->copyGC, 0, 0, 4, 4, panel->palx-2, panel->paly-2); /* see above */ + W_Screen *scr = WMWidgetScreen(panel->win); + unsigned long ofs; + + + /* undraw selection */ + XCopyArea(scr->display, panel->selectionBackImg, panel->customPaletteContentView->window, scr->copyGC, 0, 0, 4, 4, panel->palx-2, panel->paly-2); + + panel->palx = x; + panel->paly = y; + + ofs = rint(x * panel->palXRatio) + rint(y * panel->palYRatio) * panel->customPaletteImg->width; + + panel->color.red = panel->customPaletteImg->data[0][ofs]; + panel->color.green = panel->customPaletteImg->data[1][ofs]; + panel->color.blue = panel->customPaletteImg->data[2][ofs]; + + WMSetColorPanelColor(panel, panel->color); + panel->lastChanged = WMCustomPaletteModeColorPanel; + + /* Redraw color selector (and make a backup of the part it will cover) */ + XCopyArea(scr->display, panel->customPaletteContentView->window, panel->selectionBackImg, scr->copyGC, panel->palx-2, panel->paly-2, 4, 4, 0, 0); /* "-2" is correction for hotspot location */ + XCopyArea(scr->display, panel->selectionImg, panel->customPaletteContentView->window, scr->copyGC, 0, 0, 4, 4, panel->palx-2, panel->paly-2); /* see above */ } static void customPalettePositionSelectionOutBounds(W_ColorPanel *panel, int x, int y) { - if (x < 2) - x = 2; - if (y < 2) - y = 2; - if (x >= customPaletteWidth) - x = customPaletteWidth -2; - if (y >= customPaletteHeight) - y = customPaletteHeight -2; - - customPalettePositionSelection(panel, x, y); + if (x < 2) + x = 2; + if (y < 2) + y = 2; + if (x >= customPaletteWidth) + x = customPaletteWidth -2; + if (y >= customPaletteHeight) + y = customPaletteHeight -2; + + customPalettePositionSelection(panel, x, y); } static void customPaletteHandleEvents(XEvent *event, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - - switch (event->type) { - case Expose: - if (event->xexpose.count != 0) - break; - customSetPalette(panel); - break; - } + W_ColorPanel *panel = (W_ColorPanel*)data; + + switch (event->type) { + case Expose: + if (event->xexpose.count != 0) + break; + customSetPalette(panel); + break; + } } static void customPaletteHandleActionEvents(XEvent *event, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - int x, y; - - switch (event->type) { - case ButtonPress: - x = event->xbutton.x; - y = event->xbutton.y; - - if (getPickerPart(panel, x, y) == CUSTOMPALETTE_PART) { - panel->flags.dragging = 1; - customPalettePositionSelection(panel, x, y); - } - break; - - case ButtonRelease: - panel->flags.dragging = 0; - break; - - case MotionNotify: - x = event->xmotion.x; - y = event->xmotion.y; - - if (panel->flags.dragging) { - if (getPickerPart(panel, x, y) == CUSTOMPALETTE_PART) { - customPalettePositionSelection(panel, x, y); - } - else - customPalettePositionSelectionOutBounds(panel, x, y); - } - break; + W_ColorPanel *panel = (W_ColorPanel*)data; + int x, y; + + switch (event->type) { + case ButtonPress: + x = event->xbutton.x; + y = event->xbutton.y; + + if (getPickerPart(panel, x, y) == CUSTOMPALETTE_PART) { + panel->flags.dragging = 1; + customPalettePositionSelection(panel, x, y); } + break; + + case ButtonRelease: + panel->flags.dragging = 0; + break; + + case MotionNotify: + x = event->xmotion.x; + y = event->xmotion.y; + + if (panel->flags.dragging) { + if (getPickerPart(panel, x, y) == CUSTOMPALETTE_PART) { + customPalettePositionSelection(panel, x, y); + } + else + customPalettePositionSelectionOutBounds(panel, x, y); + } + break; + } } static void customPaletteMenuCallback(WMWidget *w, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - int item; - - item = WMGetPopUpButtonSelectedItem(panel->customPaletteMenuBtn); - - switch (item) { - case menuNewFromFile: - customPaletteMenuNewFromFile(panel); - break; - case menuRename: - customPaletteMenuRename(panel); - break; - case menuRemove: - customPaletteMenuRemove(panel); - break; - case menuCopy: - break; - case menuNewFromClipboard: - break; - } + W_ColorPanel *panel = (W_ColorPanel*)data; + int item; + + item = WMGetPopUpButtonSelectedItem(panel->customPaletteMenuBtn); + + switch (item) { + case menuNewFromFile: + customPaletteMenuNewFromFile(panel); + break; + case menuRename: + customPaletteMenuRename(panel); + break; + case menuRemove: + customPaletteMenuRemove(panel); + break; + case menuCopy: + break; + case menuNewFromClipboard: + break; + } } static void customPaletteMenuNewFromFile(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - WMOpenPanel *browseP; - char *filepath; - char *filename = NULL; - char path[PATH_MAX] = "\0"; - char *spath; - char *tmp; - int i; - RImage *tmpImg = NULL; + W_Screen *scr = WMWidgetScreen(panel->win); + WMOpenPanel *browseP; + char *filepath; + char *filename = NULL; + char *spath; + char *tmp; + int i; + RImage *tmpImg = NULL; + + if ((!panel->lastBrowseDir) || (strcmp(panel->lastBrowseDir,"\0") == 0)) + spath = wexpandpath(wgethomedir()); + else + spath = wexpandpath(panel->lastBrowseDir); + + browseP = WMGetOpenPanel(scr); + WMSetFilePanelCanChooseDirectories(browseP, 0); + WMSetFilePanelCanChooseFiles(browseP, 1); + + /* Get a filename */ + if (WMRunModalFilePanelForDirectory(browseP, panel->win, spath, + "Open Palette", + RSupportedFileFormats())) { + filepath = WMGetFilePanelFileName(browseP); - if ((!panel->lastBrowseDir) || (strcmp(panel->lastBrowseDir,"\0") == 0)) { - strcpy(path, wgethomedir()); - spath = wmalloc(strlen(path)+2); - strcpy(spath, path); - } - else { - spath = wmalloc(strlen(panel->lastBrowseDir)+2); - strcpy(spath, panel->lastBrowseDir); - } + /* Get seperation position between path and filename */ + i = strrchr(filepath, '/') - filepath + 1; + if (i > strlen(filepath)) + i = strlen(filepath); + /* Store last browsed path */ + if (panel->lastBrowseDir) + free(panel->lastBrowseDir); + panel->lastBrowseDir = wmalloc((i+1)*sizeof(char)); + strncpy(panel->lastBrowseDir, filepath, i); + panel->lastBrowseDir[i] = '\0'; + + /* Get filename from path */ + filename = wstrdup(filepath + i); + + /* Check for duplicate files, and rename it if there are any */ + tmp = wstrappend(panel->configurationPath, filename); + while (access(tmp, F_OK) == 0) { + char *newName; - browseP = WMGetOpenPanel(scr); - WMSetFilePanelCanChooseDirectories(browseP, 0); - WMSetFilePanelCanChooseFiles(browseP, 1); + free(tmp); - /* Get a filename */ - if (WMRunModalOpenPanelForDirectory(browseP, panel->win, wexpandpath(spath), "Open Palette", RSupportedFileFormats()) ) { - filepath = WMGetFilePanelFileName(browseP); + newName = generateNewFilename(filename); + free(filename); + filename = newName; - /* Get seperation position between path and filename */ - i = strrchr(filepath, '/') - filepath + 1; - if (i > strlen(filepath)) - i = strlen(filepath); + tmp = wstrappend(panel->configurationPath, filename); + } + free(tmp); + + /* Copy the image to $(gnustepdir)/Library/Colors/ & Add the filename to the history menu */ + if (!fetchImageFile (panel->configurationPath, filepath, filename)) { /* error = -1 */ + + /* filepath is a "local" path now the file has been copied */ + free(filepath); + filepath = wstrappend(panel->configurationPath, filename); + + /* load the image & add menu entries */ + tmpImg = RLoadImage(scr->rcontext, filepath, 0); + if (tmpImg) { + if (panel->customPaletteImg) + RDestroyImage(panel->customPaletteImg); + panel->customPaletteImg = tmpImg; + + customSetPalette(panel); + WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, filename); + + panel->currentPalette = + WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)-1; + + WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, + panel->currentPalette); + } + } else { + tmp = wstrappend(panel->configurationPath, filename); + + i = remove(tmp); /* Delete the file, it doesn't belong here */ + WMRunAlertPanel(scr, panel->win, "File Error", "Invalid file format !", "OK", NULL, NULL); + if (i != 0) { + wsyserror("can't remove file %s", tmp); + WMRunAlertPanel(scr, panel->win, "File Error", "Couldn't remove file from Configuration Directory !", "OK", NULL, NULL); + } - /* Store last browsed path */ - if (panel->lastBrowseDir) - free(panel->lastBrowseDir); - panel->lastBrowseDir = wmalloc((i+1)*sizeof(char)); - memset(panel->lastBrowseDir, 0, (i+1)*sizeof(char)); - strncpy(panel->lastBrowseDir, filepath, i); + free(tmp); + } + free(filepath); + free(filename); + } + WMFreeFilePanel(browseP); - /* Get filename from path */ - filename = wstrdup(filepath + i); - - /* Check for duplicate files, and rename it if there are any */ - tmp = wstrappend(panel->configurationPath, filename); - while (access (tmp, F_OK) == 0) { - free(tmp); - tmp = generateNewFilename(panel->configurationPath, filename); - filename = wstrdup(tmp); - - free(tmp); - tmp = wstrappend(panel->configurationPath, filename); - } - free(tmp); - - /* Copy the image to $(gnustepdir)/Library/Colors/ & Add the filename to the history menu */ - if (!fetchImageFile (panel->configurationPath, filepath, filename)) { /* error = -1 */ - - /* filepath is a "local" path now the file has been copied */ - free(filepath); - filepath = wstrappend(panel->configurationPath, filename); - - /* load the image & add menu entries */ - tmpImg = RLoadImage(scr->rcontext, filepath, 0); - if (tmpImg) { - if (panel->customPaletteImg) - RDestroyImage(panel->customPaletteImg); - panel->customPaletteImg = tmpImg; - - customSetPalette(panel); - WMAddPopUpButtonItem(panel->customPaletteHistoryBtn, filename); - WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)-1); - - panel->currentPalette = WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)-1; - } - } - else - { - tmp = wstrappend(panel->configurationPath, filename); - - i = remove(tmp); /* Delete the file, it doesn't belong here */ - WMRunAlertPanel(scr, panel->win, "File Error", "Invalid file format !", "OK", NULL, NULL); - if (i != 0) - WMRunAlertPanel(scr, panel->win, "File Error", "Couldn't remove file from Configuration Directory !", "OK", NULL, NULL); - - free(tmp); - } - free(filepath); - free(filename); - } - WMFreeFilePanel(browseP); + free(spath); } static void customPaletteMenuRename(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - char *toName = NULL; - char *fromName; - char *toPath, *fromPath; - int item; - int index; - - item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); - fromName = WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item); - - toName = WMRunInputPanel(scr, panel->win, "Rename", "Rename palette to:", - fromName, "OK", "Cancel"); - - if (toName) { - - /* As some people do certain stupid things... */ - if (strcmp(toName, fromName) == 0) { - free(toName); - return; - } - - /* For normal people */ - fromPath = wstrappend(panel->configurationPath, fromName); - toPath = wstrappend(panel->configurationPath, toName); - - if (access (toPath, F_OK) == 0) { /* Careful, this palette exists already */ - if (WMRunAlertPanel(scr, panel->win, "Warning", - "Palette already exists !\n\nOverwrite ?", "No", "Yes", NULL) == 1) { - /* "No" = 0, "Yes" = 1 */ - - remove(toPath); - - /* Remove from History list too */ - - /* - * XXX This code is not functional yet !!! (And not really necessary) - */ - - /* - index = 1; - while ((index < WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)) && - (strcmp(WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, index), toName) != 0 )) - index++; - - if (index < WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn)) { - WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, index); - if (index < item) - item--; - } - */ - - } else { - free(fromPath); - free(toName); - free(toPath); - - return; - } - } - - if ( rename(fromPath, toPath) != 0) - wwarning("Couldn't rename palette %s to %s\n", fromName, toName); - else { - WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); - WMInsertPopUpButtonItem(panel->customPaletteHistoryBtn, item, toName); - - WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item); - } - free(fromPath); - free(toPath); - free(toName); - } + W_Screen *scr = WMWidgetScreen(panel->win); + char *toName = NULL; + char *fromName; + char *toPath, *fromPath; + int item; + int index; + + item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); + fromName = WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item); + + toName = WMRunInputPanel(scr, panel->win, "Rename", "Rename palette to:", + fromName, "OK", "Cancel"); + + if (toName) { + + /* As some people do certain stupid things... */ + if (strcmp(toName, fromName) == 0) { + free(toName); + return; + } + + /* For normal people */ + fromPath = wstrappend(panel->configurationPath, fromName); + toPath = wstrappend(panel->configurationPath, toName); + + if (access (toPath, F_OK) == 0) { /* Careful, this palette exists already */ + if (WMRunAlertPanel(scr, panel->win, "Warning", + "Palette already exists !\n\nOverwrite ?", "No", "Yes", NULL) == 1) { + /* "No" = 0, "Yes" = 1 */ + int items = WMGetPopUpButtonNumberOfItems(panel->customPaletteHistoryBtn); + + remove(toPath); + + /* Remove from History list too */ + index = 1; + while ((index < items) && + (strcmp(WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, index), toName) != 0 )) + index++; + + if (index < items) { + WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, index); + if (index < item) + item--; + } + + } else { + free(fromPath); + free(toName); + free(toPath); + + return; + } + } + + if ( rename(fromPath, toPath) != 0) + wsyserror("Couldn't rename palette %s to %s\n", fromName, toName); + else { + WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); + WMInsertPopUpButtonItem(panel->customPaletteHistoryBtn, item, toName); + + WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item); + } + free(fromPath); + free(toPath); + free(toName); + } } static void customPaletteMenuRemove(W_ColorPanel *panel) { - W_Screen *scr = WMWidgetScreen(panel->win); - char *text; - char *tmp; - int choice; - int item; - - item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); - - tmp = wstrappend( "This will permanently remove the palette ", - WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item )); - text = wstrappend( tmp, ".\n\nAre you sure you want to remove this palette ?"); - free(tmp); - - choice = WMRunAlertPanel(scr, panel->win, NULL, text, "Yes", "No", NULL); - /* returns 0 (= "Yes") or 1 (="No") */ - free(text); - - if (choice == 0) { - - tmp = wstrappend(panel->configurationPath, - WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item )); - - if ( remove(tmp) != 0) - wwarning("Couldn't remove palette %s\n", tmp); - free(tmp); - - WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item-1); /* item -1 always exists */ - customPaletteHistoryCallback(panel->customPaletteHistoryBtn, panel); - customSetPalette(panel); - - WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); - } + W_Screen *scr = WMWidgetScreen(panel->win); + char *text; + char *tmp; + int choice; + int item; + + item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); + + tmp = wstrappend( "This will permanently remove the palette ", + WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item )); + text = wstrappend( tmp, ".\n\nAre you sure you want to remove this palette ?"); + free(tmp); + + choice = WMRunAlertPanel(scr, panel->win, NULL, text, "Yes", "No", NULL); + /* returns 0 (= "Yes") or 1 (="No") */ + free(text); + + if (choice == 0) { + + tmp = wstrappend(panel->configurationPath, + WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item )); + + if ( remove(tmp) != 0) + wsyserror("Couldn't remove palette %s\n", tmp); + free(tmp); + + WMSetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn, item-1); /* item -1 always exists */ + customPaletteHistoryCallback(panel->customPaletteHistoryBtn, panel); + customSetPalette(panel); + + WMRemovePopUpButtonItem(panel->customPaletteHistoryBtn, item); + } } static void customPaletteHistoryCallback(WMWidget *w, void *data) { - W_ColorPanel *panel = (W_ColorPanel*)data; - W_Screen *scr = WMWidgetScreen(panel->win); - int item; - char *filename; - RImage *tmp = NULL; - - item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); - if (item == panel->currentPalette) - return; - - if (item == 0) - customRenderSpectrum(panel); - else { - /* Load file from configpath */ - filename = wstrappend( panel->configurationPath, WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item) ); - - /* XXX To do: Check existence of file and remove it from the history if it doesn't exist */ - - tmp = RLoadImage(scr->rcontext, filename, 0); - if (tmp) { - if (panel->customPaletteImg) { - RDestroyImage(panel->customPaletteImg); - panel->customPaletteImg = NULL; - } - panel->customPaletteImg = tmp; - } - free(filename); - } - customSetPalette(panel); - - panel->currentPalette = item; + W_ColorPanel *panel = (W_ColorPanel*)data; + W_Screen *scr = WMWidgetScreen(panel->win); + int item; + char *filename; + RImage *tmp = NULL; + + item = WMGetPopUpButtonSelectedItem(panel->customPaletteHistoryBtn); + if (item == panel->currentPalette) + return; + + if (item == 0) + customRenderSpectrum(panel); + else { + /* Load file from configpath */ + filename = wstrappend( panel->configurationPath, WMGetPopUpButtonItem(panel->customPaletteHistoryBtn, item) ); + + /* XXX To do: Check existence of file and remove it from the history if it doesn't exist */ + + tmp = RLoadImage(scr->rcontext, filename, 0); + if (tmp) { + if (panel->customPaletteImg) { + RDestroyImage(panel->customPaletteImg); + panel->customPaletteImg = NULL; + } + panel->customPaletteImg = tmp; + } + free(filename); + } + customSetPalette(panel); + + panel->currentPalette = item; } @@ -2502,109 +2957,109 @@ customPaletteHistoryCallback(WMWidget *w, void *data) static void wheelInit(W_ColorPanel *panel) { - RHSVColor cur_hsv; - float W_PI = 4 * atan(1); - int i; - int v; - - RRGBtoHSV(&panel->color, &cur_hsv); - - WMSetSliderValue(panel->wheelBrightnessS, 255-cur_hsv.value); - wheelUpdateBrightnessGradientFromHSV(panel, cur_hsv); - - panel->colx = 2 + rint((colorWheelSize / 2.0) * (1 + (cur_hsv.saturation/255.0) * cos( cur_hsv.hue*W_PI/180.0))); - panel->coly = 2 + rint((colorWheelSize / 2.0) * (1 + (cur_hsv.saturation/255.0) * sin(-cur_hsv.hue*W_PI/180.0))); - - for (i = 0; i < 256; i++) { - /* We divide by 128 in advance, and check whether that number divides - * by 2 properly. If not, we add one to round the number correctly - */ - v = (i*cur_hsv.value) >> 7; - panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) + (v & 1)); - } + RHSVColor cur_hsv; + float W_PI = 4 * atan(1); + int i; + int v; + + RRGBtoHSV(&panel->color, &cur_hsv); + + WMSetSliderValue(panel->wheelBrightnessS, 255-cur_hsv.value); + wheelUpdateBrightnessGradientFromHSV(panel, cur_hsv); + + panel->colx = 2 + rint((colorWheelSize / 2.0) * (1 + (cur_hsv.saturation/255.0) * cos( cur_hsv.hue*W_PI/180.0))); + panel->coly = 2 + rint((colorWheelSize / 2.0) * (1 + (cur_hsv.saturation/255.0) * sin(-cur_hsv.hue*W_PI/180.0))); + + for (i = 0; i < 256; i++) { + /* We divide by 128 in advance, and check whether that number divides + * by 2 properly. If not, we add one to round the number correctly + */ + v = (i*cur_hsv.value) >> 7; + panel->wheelMtrx->values[i] = (unsigned char)((v >> 1) + (v & 1)); + } } static void grayInit(W_ColorPanel *panel) { - RHSVColor cur_hsv; - int value; - char tmp[3]; - - RRGBtoHSV(&panel->color, &cur_hsv); - - value = rint(cur_hsv.value/2.55); - WMSetSliderValue(panel->grayBrightnessS, value); - - sprintf(tmp, "%d", value); - WMSetTextFieldText(panel->grayBrightnessT, tmp); + RHSVColor cur_hsv; + int value; + char tmp[4]; + + RRGBtoHSV(&panel->color, &cur_hsv); + + value = rint(cur_hsv.value/2.55); + WMSetSliderValue(panel->grayBrightnessS, value); + + sprintf(tmp, "%d", value); + WMSetTextFieldText(panel->grayBrightnessT, tmp); } static void rgbInit(W_ColorPanel *panel) { - char tmp[3]; - - WMSetSliderValue(panel->rgbRedS,panel->color.red); - WMSetSliderValue(panel->rgbGreenS,panel->color.green); - WMSetSliderValue(panel->rgbBlueS,panel->color.blue); - - sprintf(tmp, "%d", panel->color.red); - WMSetTextFieldText(panel->rgbRedT, tmp); - sprintf(tmp, "%d", panel->color.green); - WMSetTextFieldText(panel->rgbGreenT, tmp); - sprintf(tmp, "%d", panel->color.blue); - WMSetTextFieldText(panel->rgbBlueT, tmp); + char tmp[4]; + + WMSetSliderValue(panel->rgbRedS,panel->color.red); + WMSetSliderValue(panel->rgbGreenS,panel->color.green); + WMSetSliderValue(panel->rgbBlueS,panel->color.blue); + + sprintf(tmp, "%d", panel->color.red); + WMSetTextFieldText(panel->rgbRedT, tmp); + sprintf(tmp, "%d", panel->color.green); + WMSetTextFieldText(panel->rgbGreenT, tmp); + sprintf(tmp, "%d", panel->color.blue); + WMSetTextFieldText(panel->rgbBlueT, tmp); } static void cmykInit(W_ColorPanel *panel) { - int value[3]; - char tmp[3]; - - value[0] = rint((255-panel->color.red)/2.55); - value[1] = rint((255-panel->color.green)/2.55); - value[2] = rint((255-panel->color.blue)/2.55); - - WMSetSliderValue(panel->cmykCyanS, value[0]); - WMSetSliderValue(panel->cmykMagentaS, value[1]); - WMSetSliderValue(panel->cmykYellowS, value[2]); - WMSetSliderValue(panel->cmykBlackS, 0); - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->cmykCyanT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->cmykMagentaT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->cmykYellowT, tmp); - WMSetTextFieldText(panel->cmykBlackT, "0"); + int value[3]; + char tmp[4]; + + value[0] = rint((255-panel->color.red)/2.55); + value[1] = rint((255-panel->color.green)/2.55); + value[2] = rint((255-panel->color.blue)/2.55); + + WMSetSliderValue(panel->cmykCyanS, value[0]); + WMSetSliderValue(panel->cmykMagentaS, value[1]); + WMSetSliderValue(panel->cmykYellowS, value[2]); + WMSetSliderValue(panel->cmykBlackS, 0); + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->cmykCyanT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->cmykMagentaT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->cmykYellowT, tmp); + WMSetTextFieldText(panel->cmykBlackT, "0"); } static void hsbInit(W_ColorPanel *panel) { - int value[3]; - char tmp[3]; - - value[0] = panel->hsvcolor.hue; - value[1] = rint(panel->hsvcolor.saturation/2.55); - value[2] = rint(panel->hsvcolor.value/2.55); - - WMSetSliderValue(panel->hsbHueS,value[0]); - WMSetSliderValue(panel->hsbSaturationS,value[1]); - WMSetSliderValue(panel->hsbBrightnessS,value[2]); - - sprintf(tmp, "%d", value[0]); - WMSetTextFieldText(panel->hsbHueT, tmp); - sprintf(tmp, "%d", value[1]); - WMSetTextFieldText(panel->hsbSaturationT, tmp); - sprintf(tmp, "%d", value[2]); - WMSetTextFieldText(panel->hsbBrightnessT, tmp); - - hsbUpdateBrightnessGradient(panel); - hsbUpdateSaturationGradient(panel); - hsbUpdateHueGradient(panel); + int value[3]; + char tmp[4]; + + value[0] = panel->hsvcolor.hue; + value[1] = rint(panel->hsvcolor.saturation/2.55); + value[2] = rint(panel->hsvcolor.value/2.55); + + WMSetSliderValue(panel->hsbHueS,value[0]); + WMSetSliderValue(panel->hsbSaturationS,value[1]); + WMSetSliderValue(panel->hsbBrightnessS,value[2]); + + sprintf(tmp, "%d", value[0]); + WMSetTextFieldText(panel->hsbHueT, tmp); + sprintf(tmp, "%d", value[1]); + WMSetTextFieldText(panel->hsbSaturationT, tmp); + sprintf(tmp, "%d", value[2]); + WMSetTextFieldText(panel->hsbBrightnessT, tmp); + + hsbUpdateBrightnessGradient(panel); + hsbUpdateSaturationGradient(panel); + hsbUpdateHueGradient(panel); } @@ -2615,49 +3070,56 @@ hsbInit(W_ColorPanel *panel) static void colorListPaintItem(WMList *lPtr, int index, Drawable d, char *text, int state, WMRect *rect) { - int width, height, x, y; - RColor color = *((RColor *)WMGetListItem(lPtr, index)->clientData); - WMScreen *scr = WMWidgetScreen(lPtr); - Display *dpy = WMScreenDisplay(scr); - RImage *image; - WMPixmap *pixmap; - int i, j; + int width, height, x, y; + RColor color = *((RColor *)WMGetListItem(lPtr, index)->clientData); + WMScreen *scr = WMWidgetScreen(lPtr); + Display *dpy = WMScreenDisplay(scr); + RImage *image; + WMPixmap *pixmap; + int i, j; + W_ColorPanel *panel = WMGetHangedData(lPtr); + WMColor *white = WMWhiteColor(scr); + WMColor *black = WMBlackColor(scr); + + width = rect->size.width; + height = rect->size.height; + x = rect->pos.x; + y = rect->pos.y; + + if (state & WLDSSelected) + XFillRectangle(dpy, d, WMColorGC(white), x, y, width, height); + else + XClearArea(dpy, d, x, y, width, height, False); + + image = RCreateImage(15, 15, False); + for (i=0; i < 15 ; i++) { + for (j=0; j < 15; j++) { + image->data[0][j*15+i] = color.red; + image->data[1][j*15+i] = color.green; + image->data[2][j*15+i] = color.blue; + } + } + + pixmap = WMCreatePixmapFromRImage(scr, image, 0); + RDestroyImage(image); + WMDrawPixmap(pixmap, d, x, y); + WMReleasePixmap(pixmap); + WMDrawString(scr, d, WMColorGC(black), panel->font12, x+18, y, text, + strlen(text)); - width = rect->size.width; - height = rect->size.height; - x = rect->pos.x; - y = rect->pos.y; - - if (state & WLDSSelected) - XFillRectangle(dpy, d, WMColorGC(WMWhiteColor(scr)), x, y, width, height); - else - XClearArea(dpy, d, x, y, width, height, False); - - image = RCreateImage(15, 15, False); - for (i=0; i < 15 ; i++) { - for (j=0; j < 15; j++) { - image->data[0][j*15+i] = color.red; - image->data[1][j*15+i] = color.green; - image->data[2][j*15+i] = color.blue; - } - } - - pixmap = WMCreatePixmapFromRImage(scr, image, 0); - RDestroyImage(image); - WMDrawPixmap(pixmap, d, x, y); - WMReleasePixmap(pixmap); - WMDrawString(scr, d, WMColorGC(WMBlackColor(scr)), globalFont, x+18, y, text, strlen(text)); + WMReleaseColor(white); + WMReleaseColor(black); } static void colorListSelect(WMWidget *w, void *data) { - W_ColorPanel *panel = (W_ColorPanel *)data; - RColor color = *((RColor *)WMGetListSelectedItem(w)->clientData); - - panel->lastChanged = WMColorListModeColorPanel; - WMSetColorPanelColor(panel, color); + W_ColorPanel *panel = (W_ColorPanel *)data; + RColor color = *((RColor *)WMGetListSelectedItem(w)->clientData); + + panel->lastChanged = WMColorListModeColorPanel; + WMSetColorPanelColor(panel, color); } @@ -2668,125 +3130,139 @@ colorListSelect(WMWidget *w, void *data) static int fetchImageFile(char *toPath, char *imageSrcFile, char *imageDestFile) { - int src, dest; - int n; - char *tmp; - char buf[BUFSIZE]; + int src, dest; + int n; + char *tmp; + char buf[BUFSIZE]; + + if ((src = open(imageSrcFile, O_RDONLY)) < 0) { + wsyserror("Could not open %s", imageSrcFile); + return -1; + } + + tmp = wstrappend(toPath, imageDestFile); + if ((dest = open( tmp, O_RDWR|O_CREAT, S_IRWXU|S_IRGRP|S_IROTH)) < 0) { + wsyserror("Could not create %s", tmp); + free(tmp); + return -1; + } + free(tmp); + + + /* Copy the file */ + while ((n = read(src, buf, BUFSIZE)) > 0) + { + if (write(dest, buf, n) != n) { + wsyserror("Write error on file %s", imageDestFile); + return -1; + } + } - if ((src = open(imageSrcFile, O_RDONLY)) == 0) { - wwarning("Could not open %s", imageSrcFile); - return -1; - } - - tmp = wstrappend(toPath, imageDestFile); - if ((dest = open( tmp, O_RDWR|O_CREAT, S_IRWXU|S_IRGRP|S_IROTH)) == 0) { - wwarning("Could not create %s", tmp); - free(tmp); - return -1; - } - free(tmp); - - - /* Copy the file */ - while ((n = read(src, buf, BUFSIZE)) > 0) - { - if (write (dest, buf, n) != n) { - wwarning("Write error on file %s", imageDestFile); - return -1; - } - } - - return 0; + return 0; } char* -generateNewFilename(char *Path, char *curName) +generateNewFilename(char *curName) { - char *newName; - char *numStart, *numEnd; - char *pre, *num, *post; - int n, numLength; - char *tmp; +#if 1 + int n; + int baseLen; + char *ptr; + char *newName; - newName = wstrdup(curName); + ptr = strrchr(curName, '{'); + if (!ptr || sscanf(ptr, "{%i}", &n)!=1) { + return wstrappend(curName, " {1}"); + } - if (newName == NULL) - return wstrdup("Unnamed"); + baseLen = ptr - curName; - /* - * Modify the name to contain a number to make it unique + newName = wmalloc(baseLen + 16); + strncpy(newName, curName, baseLen); + newName[baseLen] = 0; + + sprintf(&newName[baseLen], " {%i}", n+1); + + return newName; +#else + char *newName; + char *numStart, *numEnd; + char *pre, *num, *post; + int n, numLength; + char *tmp; + + newName = wstrdup(curName); + + if (newName == NULL) + return wstrdup("Unnamed"); + + /* + * Modify the name to contain a number to make it unique + */ + + /* Get number-string from filename. */ + numStart = strrchr(newName, '-'); + if (numStart) { + if (strlen(numStart) > 1) + numStart++; /* Next character, please */ + + + numEnd = strrchr(numStart, '-'); /* Already past "numbers" */ + + if (numEnd) { + /* Now it gets interesting */ + + pre = wmalloc((numStart - newName +1) * sizeof(char)); /* a trailing '\0' is useful here */ + strncpy (pre, newName, numStart-newName); + pre[numStart - newName] = '\0'; + + num = wmalloc((numEnd - numStart +1) * sizeof(char)); + strncpy (num, numStart, numEnd-numStart); + num[numEnd - numStart] = '\0'; + + post = wstrdup( numEnd); + + free(newName); /* We don't need it anymore */ + + if (strcspn(num, "0123456789") == 0) { + n = (int)strtol(num, NULL, 10); + + /* Increase number between brackets (in filename); This is what it all is about */ + n++; + + free(num); + num = wmalloc(3 * sizeof(char)); /* Nobody uses more than 999 duplicate filenames, do you ? */ + numLength = sprintf(num, "%d", n); + + free(num); + num = wmalloc(numLength * sizeof(char)); + sprintf(num, "%d", n); + + tmp = wstrappend (num, post); + newName = wstrappend (pre, tmp); + + free(pre); + free(num); + free(post); + free(tmp); + } + } + } + + if (strcmp( curName, newName) == 0) { + /* The name is still unchanged, so there was no number (between brackets) in it. + Add a number 1 to the end. */ - - - /* Get number-string from filename. */ - numStart = strrchr(newName, '('); - if (numStart) { - if (strlen(numStart) > 1) - numStart++; /* Next character, please */ - - - numEnd = strrchr(numStart, ')'); /* Already past "numbers" */ - - if (numEnd) { - /* Now it gets interesting */ - - pre = wmalloc((numStart - newName +1) * sizeof(char)); /* a trailing '\0' is useful here */ - memset(pre, 0, (numStart - newName +1) * sizeof(char)); - - strncpy (pre, newName, numStart-newName); - - num = wmalloc((numEnd - numStart +1) * sizeof(char)); - memset (num, 0, (numEnd - numStart +1) * sizeof(char)); - - strncpy (num, numStart, numEnd-numStart); - - post = wstrdup( numEnd); - - free(newName); /* We don't need it anymore */ - - if (strcspn(num, "0123456789") == 0) { - n = (int)strtol(num, NULL, 10); - - /* Increase number between brackets (in filename); This is what it all is about */ - n++; - - free(num); - num = wmalloc(3 * sizeof(char)); /* Nobody uses more than 999 duplicate filenames, do you ? */ - memset(num, 0, 3 * sizeof(char)); - - numLength = sprintf(num, "%d", n); - - free(num); - num = wmalloc(numLength * sizeof(char)); - memset(num, 0, numLength * sizeof(char)); - - sprintf(num, "%d", n); - - tmp = wstrappend (num, post); - newName = wstrappend (pre, tmp); - - free (pre); - free (num); - free (post); - free (tmp); - } - } - } - - - if (strcmp( curName, newName) == 0) { - /* The name is still unchanged, so there was no number (between brackets) in it. - Add a number 1 to the end. - */ - tmp = wstrdup(newName); - if (newName) - free(newName); - newName = wstrappend(tmp, " (1)"); - free(tmp); - } - - return newName; + tmp = wstrdup(newName); + if (newName) + free(newName); + newName = wstrappend(tmp, " -1-"); + free(tmp); + } + + return newName; +#endif } diff --git a/WINGs/wevent.c b/WINGs/wevent.c index 8f4f3a68..e38cf551 100644 --- a/WINGs/wevent.c +++ b/WINGs/wevent.c @@ -328,8 +328,10 @@ checkIdleHandlers() { IdleHandler *handler, *tmp; - if (!idleHandler) - return; + if (!idleHandler) { + W_FlushIdleNotificationQueue(); + return; + } handler = idleHandler; @@ -344,6 +346,7 @@ checkIdleHandlers() handler = tmp; } + W_FlushIdleNotificationQueue(); } @@ -353,7 +356,7 @@ checkTimerHandlers() { TimerHandler *handler; struct timeval now; - + rightNow(&now); while (timerHandler && IS_AFTER(now, timerHandler->when)) { @@ -363,6 +366,8 @@ checkTimerHandlers() (*handler->callback)(handler->clientData); free(handler); } + + W_FlushASAPNotificationQueue(); } @@ -797,7 +802,9 @@ W_WaitForEvent(Display *dpy, unsigned long xeventmask) retval = fds[0].revents & (POLLIN|POLLRDNORM|POLLRDBAND|POLLPRI); free(fds); - + + W_FlushASAPNotificationQueue(); + return retval; #else /* not HAVE_POLL */ #ifdef HAVE_SELECT @@ -882,7 +889,9 @@ W_WaitForEvent(Display *dpy, unsigned long xeventmask) handler = handler->next; } } - + + W_FlushASAPNotificationQueue(); + return FD_ISSET(ConnectionNumber(dpy), &rset); #else /* not HAVE_SELECT, not HAVE_POLL */ Neither select nor poll. You lose. @@ -890,6 +899,7 @@ Neither select nor poll. You lose. #endif /* HAVE_POLL */ } + void WMNextEvent(Display *dpy, XEvent *event) { diff --git a/WINGs/wfilepanel.c b/WINGs/wfilepanel.c index da99ef9b..4a445f85 100644 --- a/WINGs/wfilepanel.c +++ b/WINGs/wfilepanel.c @@ -1,7 +1,4 @@ - - - #include "WINGsP.h" #include @@ -47,15 +44,24 @@ typedef struct W_FilePanel { unsigned int showAllFiles:1; unsigned int canFreeFileTypes:1; unsigned int fileMustExist:1; + unsigned int panelType:1; + + /**/ + unsigned int ignoreTextChangeNotification:1; } flags; } W_FilePanel; +/* Type of panel */ +#define WP_OPEN 0 +#define WP_SAVE 1 + #define PWIDTH 320 #define PHEIGHT 360 static void listDirectoryOnColumn(WMFilePanel *panel, int column, char *path); static void browserClick(); +static void browserDClick(); static void fillColumn(WMBrowser *bPtr, int column); @@ -65,6 +71,7 @@ static void buttonClick(); static char *getCurrentFileName(WMFilePanel *panel); +static void handleEvents(XEvent *event, void *data); static int @@ -94,14 +101,24 @@ static void textChangedObserver(void *observerData, WMNotification *notification) { W_FilePanel *panel = (W_FilePanel*)observerData; - char *text, *text1; + char *text; WMList *list; int col = WMGetBrowserNumberOfColumns(panel->browser) - 1; int i, j, textEvent = (int)WMGetNotificationClientData(notification); + static int running = 0; + + if (running) + return; + + running = 1; + + if (panel->flags.ignoreTextChangeNotification) + return; list = WMGetBrowserListInColumn(panel->browser, col); if (!list) return; + text = WMGetTextFieldText(panel->fileField); if (panel->flags.autoCompletion && textEvent!=WMDeleteTextEvent) @@ -110,45 +127,28 @@ textChangedObserver(void *observerData, WMNotification *notification) i = closestListItem(list, text, True); WMSelectListItem(list, i); - if (i>=0) { + if (i>=0 && panel->flags.autoCompletion) { WMListItem *item = WMGetListItem(list, i); int textLen = strlen(text), itemTextLen = strlen(item->text); - - WMSetListPosition(list, i); - - if (panel->flags.autoCompletion) { - /* Be careful with the '<' condition below. Changing it can drop - * you into an endless loop. We call here, inside a function - * called from a notification observer, to a function that - * generates notification events. So make sure we do not call it - * recursively for ever. - * '<' means we only update text field if it is really not yet - * complete. -Dan - */ - if (textLen < itemTextLen && textEvent!=WMDeleteTextEvent) { - WMRange range; - - WMInsertTextFieldText(panel->fileField, &item->text[textLen], - textLen); - WMSetTextFieldCursorPosition(panel->fileField, itemTextLen); - range.position = textLen; - range.count = itemTextLen - textLen; - WMSelectTextFieldRange(panel->fileField, range); - } - - text1 = WMGetTextFieldText(panel->fileField); - j = closestListItem(list, text1, True); - if (i != j) { - WMSelectListItem(list, j); - if (j>=0) { - WMSetListPosition(list, j); - } - } - free(text1); - } + int visibleItems = WMWidgetHeight(list)/WMGetListItemHeight(list); + + if (textEvent!=WMSetTextEvent || textLenfileField, &item->text[textLen], + textLen); + WMSetTextFieldCursorPosition(panel->fileField, itemTextLen); + range.position = textLen; + range.count = itemTextLen - textLen; + WMSelectTextFieldRange(panel->fileField, range); + } } free(text); + running = 0; } @@ -178,6 +178,11 @@ makeFilePanel(WMScreen *scrPtr, char *name, char *title) WMResizeWidget(fPtr->win, PWIDTH, PHEIGHT); WMSetWindowTitle(fPtr->win, ""); + WMCreateEventHandler(WMWidgetView(fPtr->win), StructureNotifyMask, + handleEvents, fPtr); + WMSetWindowMinSize(fPtr->win, PWIDTH, PHEIGHT); + + fPtr->iconLabel = WMCreateLabel(fPtr->win); WMResizeWidget(fPtr->iconLabel, 64, 64); WMMoveWidget(fPtr->iconLabel, 0, 0); @@ -200,6 +205,7 @@ makeFilePanel(WMScreen *scrPtr, char *name, char *title) fPtr->browser = WMCreateBrowser(fPtr->win); WMSetBrowserFillColumnProc(fPtr->browser, fillColumn); WMSetBrowserAction(fPtr->browser, browserClick, fPtr); + WMSetBrowserDoubleAction(fPtr->browser, browserDClick, fPtr); WMMoveWidget(fPtr->browser, 7, 72); WMHangData(fPtr->browser, fPtr); @@ -238,12 +244,15 @@ makeFilePanel(WMScreen *scrPtr, char *name, char *title) WMResizeWidget(fPtr->homeButton, 28, 28); WMSetButtonImagePosition(fPtr->homeButton, WIPImageOnly); WMSetButtonImage(fPtr->homeButton, scrPtr->homeIcon); - WMSetButtonAltImage(fPtr->homeButton, scrPtr->homeAltIcon); + WMSetButtonAltImage(fPtr->homeButton, scrPtr->altHomeIcon); WMSetButtonAction(fPtr->homeButton, goHome, fPtr); WMRealizeWidget(fPtr->win); WMMapSubwidgets(fPtr->win); + WMSetFocusToWidget(fPtr->fileField); + WMSetTextFieldCursorPosition(fPtr->fileField, 0); + WMLoadBrowserColumnZero(fPtr->browser); fPtr->flags.canChooseFiles = 1; @@ -264,6 +273,7 @@ WMGetOpenPanel(WMScreen *scrPtr) panel = makeFilePanel(scrPtr, "openFilePanel", "Open"); panel->flags.fileMustExist = 1; + panel->flags.panelType = WP_OPEN; scrPtr->sharedOpenPanel = panel; @@ -281,6 +291,7 @@ WMGetSavePanel(WMScreen *scrPtr) panel = makeFilePanel(scrPtr, "saveFilePanel", "Save"); panel->flags.fileMustExist = 0; + panel->flags.panelType = WP_SAVE; scrPtr->sharedSavePanel = panel; @@ -305,20 +316,40 @@ WMFreeFilePanel(WMFilePanel *panel) int -WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner, - char *path, char *name) +WMRunModalFilePanelForDirectory(WMFilePanel *panel, WMWindow *owner, + char *path, char *name, char **fileTypes) { WMScreen *scr = WMWidgetScreen(panel->win); XEvent event; WMChangePanelOwner(panel->win, owner); + if (name && !owner) { + WMSetWindowTitle(panel->win, name); + } + WMSetFilePanelDirectory(panel, path); panel->flags.done = 0; - panel->fileTypes = NULL; + switch(panel->flags.panelType) { + case WP_OPEN: + if (fileTypes) + panel->flags.filtered = 1; + panel->fileTypes = fileTypes; + if (name == NULL) + name = "Open"; + break; + case WP_SAVE: + panel->fileTypes = NULL; + panel->flags.filtered = 0; + if (name == NULL) + name = "Save"; + break; + default: + break; + } - panel->flags.filtered = 0; + WMSetLabelText(panel->titleLabel, name); WMMapWidget(panel->win); @@ -337,35 +368,6 @@ WMRunModalSavePanelForDirectory(WMFilePanel *panel, WMWindow *owner, -int -WMRunModalOpenPanelForDirectory(WMFilePanel *panel, WMWindow *owner, - char *path, char *name, char **fileTypes) -{ - WMScreen *scr = WMWidgetScreen(panel->win); - XEvent event; - - WMChangePanelOwner(panel->win, owner); - - WMSetFilePanelDirectory(panel, path); - - panel->flags.done = 0; - - if (fileTypes) - panel->flags.filtered = 1; - panel->fileTypes = fileTypes; - - WMMapWidget(panel->win); - - while (!panel->flags.done) { - WMNextEvent(scr->display, &event); - WMHandleEvent(&event); - } - - WMCloseWindow(panel->win); - - return (panel->flags.canceled ? False : True); -} - void WMSetFilePanelDirectory(WMFilePanel *panel, char *path) @@ -373,18 +375,22 @@ WMSetFilePanelDirectory(WMFilePanel *panel, char *path) WMList *list; WMListItem *item; int col; - - WMSetBrowserPath(panel->browser, path); - col = WMGetBrowserNumberOfColumns(panel->browser) - 1; + char *rest; + + rest = WMSetBrowserPath(panel->browser, path); + if (strcmp(path, "/")==0) + rest = NULL; + + col = WMGetBrowserSelectedColumn(panel->browser); list = WMGetBrowserListInColumn(panel->browser, col); if (list && (item = WMGetListSelectedItem(list))) { - if (item->isBranch) { - WMSetTextFieldText(panel->fileField, NULL); - } else { - WMSetTextFieldText(panel->fileField, item->text); - } + if (item->isBranch) { + WMSetTextFieldText(panel->fileField, rest); + } else { + WMSetTextFieldText(panel->fileField, item->text); + } } else { - WMSetTextFieldText(panel->fileField, path); + WMSetTextFieldText(panel->fileField, rest); } } @@ -425,7 +431,7 @@ WMSetFilePanelAccessoryView(WMFilePanel *panel, WMView *view) v = WMWidgetView(panel->win); - W_ReparentView(view, v); + W_ReparentView(view, v, 0, 0); W_MoveView(view, (v->size.width - v->size.width)/2, 300); } @@ -541,18 +547,27 @@ fillColumn(WMBrowser *bPtr, int column) } +static void +browserDClick(WMBrowser *bPtr, WMFilePanel *panel) +{ + WMPerformButtonClick(panel->okButton); +} static void browserClick(WMBrowser *bPtr, WMFilePanel *panel) { int col = WMGetBrowserSelectedColumn(bPtr); WMListItem *item = WMGetBrowserSelectedItemInColumn(bPtr, col); - + + panel->flags.ignoreTextChangeNotification = 1; + if (!item || item->isBranch) WMSetTextFieldText(panel->fileField, NULL); else { WMSetTextFieldText(panel->fileField, item->text); } + + panel->flags.ignoreTextChangeNotification = 0; } @@ -570,6 +585,39 @@ goHome(WMButton *bPtr, WMFilePanel *panel) } +static void +handleEvents(XEvent *event, void *data) +{ + W_FilePanel *pPtr = (W_FilePanel*)data; + W_View *view = WMWidgetView(pPtr->win); + + if (event->type == ConfigureNotify) { + if (event->xconfigure.width != view->size.width + || event->xconfigure.height != view->size.height) { + unsigned int newWidth = event->xconfigure.width; + unsigned int newHeight = event->xconfigure.height; + int newColumnCount; + + W_ResizeView(view, newWidth, newHeight); + WMResizeWidget(pPtr->line, newWidth, 2); + WMResizeWidget(pPtr->browser, newWidth-14, + newHeight-(PHEIGHT-200)); + WMResizeWidget(pPtr->fileField, newWidth-60-10, 24); + WMMoveWidget(pPtr->nameLabel, 7, newHeight-(PHEIGHT-282)); + WMMoveWidget(pPtr->fileField, 60, newHeight-(PHEIGHT-278)); + WMMoveWidget(pPtr->okButton, newWidth-(PWIDTH-230), + newHeight-(PHEIGHT-325)); + WMMoveWidget(pPtr->cancelButton, newWidth-(PWIDTH-140), + newHeight-(PHEIGHT-325)); + WMMoveWidget(pPtr->homeButton, 55, newHeight-(PHEIGHT-325)); + + newColumnCount = (newWidth - 14) / 140; + WMSetBrowserMaxVisibleColumns(pPtr->browser, newColumnCount); + } + } +} + + static char* getCurrentFileName(WMFilePanel *panel) { @@ -604,23 +652,30 @@ static Bool validOpenFile(WMFilePanel *panel) { WMListItem *item; - int col; + int col, haveFile = 0; + char *file = WMGetTextFieldText(panel->fileField); - /*col = WMGetBrowserSelectedColumn(panel->browser);*/ - col = WMGetBrowserNumberOfColumns(panel->browser) - 1; + if (file[0] != '\0') + haveFile = 1; + free(file); + + col = WMGetBrowserSelectedColumn(panel->browser); item = WMGetBrowserSelectedItemInColumn(panel->browser, col); if (item) { - if (item->isBranch && !panel->flags.canChooseDirectories) + if (item->isBranch && !panel->flags.canChooseDirectories && !haveFile) return False; else if (!item->isBranch && !panel->flags.canChooseFiles) return False; else return True; + } else { + /* we compute for / here */ + if (!panel->flags.canChooseDirectories && !haveFile) + return False; + else + return True; } - if (!panel->flags.canChooseDirectories) - return False; - else - return True; + return True; } @@ -628,11 +683,13 @@ validOpenFile(WMFilePanel *panel) static void buttonClick(WMButton *bPtr, WMFilePanel *panel) { + WMRange range; + if (bPtr == panel->okButton) { + if (!validOpenFile(panel)) + return; if (panel->flags.fileMustExist) { char *file; - if (!validOpenFile(panel)) - return; file = getCurrentFileName(panel); if (access(file, F_OK)!=0) { @@ -648,6 +705,8 @@ buttonClick(WMButton *bPtr, WMFilePanel *panel) } else panel->flags.canceled = 1; + range.count = range.position = 0; + WMSelectTextFieldRange(panel->fileField, range); panel->flags.done = 1; } diff --git a/WINGs/wfont.c b/WINGs/wfont.c index 7671f42e..91c9feb7 100644 --- a/WINGs/wfont.c +++ b/WINGs/wfont.c @@ -140,6 +140,9 @@ WMSystemFontOfSize(WMScreen *scrPtr, int size) if (!font) { wwarning("could not load font set %s. Trying fixed.", fontSpec); font = WMCreateFont(scrPtr, "fixed"); + if (!font) { + font = WMCreateFont(scrPtr, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*"); + } if (!font) { wwarning("could not load fixed font!"); free(fontSpec); @@ -165,6 +168,9 @@ WMBoldSystemFontOfSize(WMScreen *scrPtr, int size) if (!font) { wwarning("could not load font set %s. Trying fixed.", fontSpec); font = WMCreateFont(scrPtr, "fixed"); + if (!font) { + font = WMCreateFont(scrPtr, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*"); + } if (!font) { wwarning("could not load fixed font!"); free(fontSpec); diff --git a/WINGs/widgets.c b/WINGs/widgets.c index 896056eb..b0f409d8 100644 --- a/WINGs/widgets.c +++ b/WINGs/widgets.c @@ -421,196 +421,96 @@ makePixmap(W_Screen *sPtr, char **data, int width, int height, int masked) sPtr->depth); } -#ifdef USE_TIFF -#define WINGS_IMAGES_FILE RESOURCE_PATH"/Images.tiff" -#define DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.tiff" -#else -#define WINGS_IMAGES_FILE RESOURCE_PATH"/Images.xpm" -#define DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.xpm" -#endif + +#define T_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.tiff" +#define T_DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.tiff" + +#define X_WINGS_IMAGES_FILE RESOURCE_PATH"/Images.xpm" +#define X_DEFAULT_OBJECT_ICON_FILE RESOURCE_PATH"/defaultIcon.xpm" + static Bool loadPixmaps(WMScreen *scr) { RImage *image, *tmp; - Pixmap pixmap; RColor gray; - - image = RLoadImage(scr->rcontext, WINGS_IMAGES_FILE, 0); - if (!image) { - wwarning("WINGs: could not load widget images file: %s", - RMessageForError(RErrorCode)); - return False; - } - /* make it have a gray background */ + RColor white; + gray.red = 0xae; gray.green = 0xaa; gray.blue = 0xae; - RCombineImageWithColor(image, &gray); - tmp = RGetSubImage(image, 0, 0, 24, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->homeIcon = NULL; - } else { - scr->homeIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, - scr->depth); - } - RDestroyImage(tmp); - /* Magnifying Glass Icon for ColorPanel */ - tmp = RGetSubImage(image, 24, 0, 40, 32); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->magnifyIcon = NULL; - } else { - scr->magnifyIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 32, scr->depth); - } - RDestroyImage(tmp); - /* ColorWheel Icon for ColorPanel */ - tmp = RGetSubImage(image, 0, 25, 24, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->wheelIcon = NULL; - } else { - scr->wheelIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, scr->depth); - } - RDestroyImage(tmp); - /* GrayScale Icon for ColorPanel */ - tmp = RGetSubImage(image, 65, 0, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->grayIcon = NULL; - } else { - scr->grayIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* RGB Icon for ColorPanel */ - tmp = RGetSubImage(image, 25, 33, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->rgbIcon = NULL; - } else { - scr->rgbIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* CMYK Icon for ColorPanel */ - tmp = RGetSubImage(image, 65, 25, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->cmykIcon = NULL; - } else { - scr->cmykIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* HSB Icon for ColorPanel */ - tmp = RGetSubImage(image, 0, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->hsbIcon = NULL; - } else { - scr->hsbIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* CustomColorPalette Icon for ColorPanel */ - tmp = RGetSubImage(image, 81, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->customPaletteIcon = NULL; - } else { - scr->customPaletteIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* ColorList Icon for ColorPanel */ - tmp = RGetSubImage(image, 41, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->colorListIcon = NULL; - } else { - scr->colorListIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - RDestroyImage(image); + white.red = 0xff; + white.green = 0xff; + white.blue = 0xff; - image = RLoadImage(scr->rcontext, WINGS_IMAGES_FILE, 0); + image = RLoadImage(scr->rcontext, T_WINGS_IMAGES_FILE, 0); + if (!image) + image = RLoadImage(scr->rcontext, X_WINGS_IMAGES_FILE, 0); if (!image) { wwarning("WINGs: could not load widget images file: %s", RMessageForError(RErrorCode)); return False; } - /* make it have a white background */ - gray.red = 0xff; - gray.green = 0xff; - gray.blue = 0xff; - RCombineImageWithColor(image, &gray); + /* home icon */ + /* make it have a gray background */ tmp = RGetSubImage(image, 0, 0, 24, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->homeAltIcon = NULL; - } else { - scr->homeAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, - scr->depth); - } + RCombineImageWithColor(tmp, &gray); + scr->homeIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* make it have a white background */ + tmp = RGetSubImage(image, 0, 0, 24, 24); + RCombineImageWithColor(tmp, &white); + scr->altHomeIcon = WMCreatePixmapFromRImage(scr, tmp, 128); RDestroyImage(tmp); - /* Magnifying Glass Icon for ColorPanel */ - tmp = RGetSubImage(image, 25, 0, 40, 32); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->magnifyAltIcon = NULL; - } else { - scr->magnifyAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 32, scr->depth); - } - RDestroyImage(tmp); - /* ColorWheel Icon for ColorPanel */ - tmp = RGetSubImage(image, 0, 25, 24, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->wheelAltIcon = NULL; - } else { - scr->wheelAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 24, 24, scr->depth); - } - RDestroyImage(tmp); - /* GrayScale Icon for ColorPanel */ - tmp = RGetSubImage(image, 65, 0, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->grayAltIcon = NULL; - } else { - scr->grayAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* RGB Icon for ColorPanel */ - tmp = RGetSubImage(image, 25, 33, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->rgbAltIcon = NULL; - } else { - scr->rgbAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* CMYK Icon for ColorPanel */ - tmp = RGetSubImage(image, 65, 25, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->cmykAltIcon = NULL; - } else { - scr->cmykAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* HSB Icon for ColorPanel */ - tmp = RGetSubImage(image, 0, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->hsbAltIcon = NULL; - } else { - scr->hsbAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* CustomColorPalette Icon for ColorPanel */ - tmp = RGetSubImage(image, 81, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->customPaletteAltIcon = NULL; - } else { - scr->customPaletteAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - /* ColorList Icon for ColorPanel */ - tmp = RGetSubImage(image, 41, 57, 40, 24); - if (!RConvertImage(scr->rcontext, tmp, &pixmap)) { - scr->colorListAltIcon = NULL; - } else { - scr->colorListAltIcon = WMCreatePixmapFromXPixmaps(scr, pixmap, None, 40, 24, scr->depth); - } - RDestroyImage(tmp); - RDestroyImage(image); + /* Magnifying Glass Icon for ColorPanel */ + tmp = RGetSubImage(image, 24, 0, 40, 32); + RCombineImageWithColor(tmp, &gray); + scr->magnifyIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + tmp = RGetSubImage(image, 24, 0, 40, 32); + RCombineImageWithColor(tmp, &white); + scr->altMagnifyIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* ColorWheel Icon for ColorPanel */ + tmp = RGetSubImage(image, 0, 25, 24, 24); + scr->wheelIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* GrayScale Icon for ColorPanel */ + tmp = RGetSubImage(image, 65, 0, 40, 24); + scr->grayIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* RGB Icon for ColorPanel */ + tmp = RGetSubImage(image, 25, 33, 40, 24); + scr->rgbIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* CMYK Icon for ColorPanel */ + tmp = RGetSubImage(image, 65, 25, 40, 24); + scr->cmykIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* HSB Icon for ColorPanel */ + tmp = RGetSubImage(image, 0, 57, 40, 24); + scr->hsbIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* CustomColorPalette Icon for ColorPanel */ + tmp = RGetSubImage(image, 81, 57, 40, 24); + scr->customPaletteIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + /* ColorList Icon for ColorPanel */ + tmp = RGetSubImage(image, 41, 57, 40, 24); + scr->colorListIcon = WMCreatePixmapFromRImage(scr, tmp, 128); + RDestroyImage(tmp); + + RDestroyImage(image); #if 0 scr->defaultObjectIcon = - WMCreatePixmapFromFile(scr, DEFAULT_OBJECT_ICON_FILE); + WMCreatePixmapFromFile(scr, T_DEFAULT_OBJECT_ICON_FILE); + if (!scr->defaultObjectIcon) { + scr->defaultObjectIcon = + WMCreatePixmapFromFile(scr, X_DEFAULT_OBJECT_ICON_FILE); + } if (!scr->defaultObjectIcon) { wwarning("WINGs: could not load default icon file"); return False; diff --git a/WINGs/wlist.c b/WINGs/wlist.c index 2ec55a07..c9a02573 100644 --- a/WINGs/wlist.c +++ b/WINGs/wlist.c @@ -5,7 +5,7 @@ #include "WINGsP.h" char *WMListDidScrollNotification = "WMListDidScrollNotification"; - +char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification"; typedef struct W_List { W_Class widgetClass; @@ -227,16 +227,19 @@ WMRemoveListItem(WMList *lPtr, int row) WMListItem *llist; WMListItem *tmp; int topItem = lPtr->topItem; + int selNotify = 0; CHECK_CLASS(lPtr, WC_List); if (row < 0 || row >= lPtr->itemCount) return; - if (lPtr->selectedItem == row) - lPtr->selectedItem = -1; - else if (lPtr->selectedItem > row) - lPtr->selectedItem--; + if (lPtr->selectedItem == row) { + lPtr->selectedItem = -1; + selNotify = 1; + } else if (lPtr->selectedItem > row) { + lPtr->selectedItem--; + } if (row <= lPtr->topItem+lPtr->fullFitLines+lPtr->flags.dontFitAll) lPtr->topItem--; @@ -271,6 +274,9 @@ WMRemoveListItem(WMList *lPtr, int row) } if (lPtr->topItem != topItem) WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL); + if (selNotify) + WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, + (void*)((int)lPtr->selectedItem)); } @@ -312,7 +318,8 @@ void WMClearList(WMList *lPtr) { WMListItem *item, *tmp; - + int oldSelected = lPtr->selectedItem; + item = lPtr->items; while (item) { free(item->text); @@ -332,6 +339,9 @@ WMClearList(WMList *lPtr) if (lPtr->view->flags.realized) { updateScroller(lPtr); } + if (oldSelected != -1) + WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, + (void*)-1); } @@ -654,11 +664,19 @@ void WMSelectListItem(WMList *lPtr, int row) { WMListItem *itemPtr; - int i; + int i, notify = 0; if (row >= lPtr->itemCount) return; - + + /* the check below must be changed when the multiple selection is + * implemented. -Dan + */ + if (!lPtr->flags.allowMultipleSelection && row == lPtr->selectedItem) + notify = 0; + else + notify = 1; + if (!lPtr->flags.allowMultipleSelection) { /* unselect previous selected item */ if (lPtr->selectedItem >= 0) { @@ -676,8 +694,12 @@ WMSelectListItem(WMList *lPtr, int row) } if (row < 0) { - if (!lPtr->flags.allowMultipleSelection) + if (!lPtr->flags.allowMultipleSelection) { lPtr->selectedItem = -1; + if (notify) + WMPostNotificationName(WMListSelectionDidChangeNotification, + lPtr, (void*)((int)lPtr->selectedItem)); + } return; } @@ -700,6 +722,9 @@ WMSelectListItem(WMList *lPtr, int row) WRSunken); } lPtr->selectedItem = row; + if (notify) + WMPostNotificationName(WMListSelectionDidChangeNotification, lPtr, + (void*)((int)lPtr->selectedItem)); } @@ -732,7 +757,6 @@ handleActionEvents(XEvent *event, void *data) tmp = getItemIndexAt(lPtr, event->xbutton.y); if (tmp == lPtr->selectedItem && tmp >= 0) { - if (lPtr->action) (*lPtr->action)(lPtr, lPtr->clientData); } @@ -751,16 +775,16 @@ handleActionEvents(XEvent *event, void *data) case ButtonPress: if (event->xbutton.x > WMWidgetWidth(lPtr->vScroller)) { tmp = getItemIndexAt(lPtr, event->xbutton.y); - lPtr->flags.buttonPressed = 1; if (tmp >= 0) { - WMSelectListItem(lPtr, tmp); if (tmp == lPtr->selectedItem && WMIsDoubleClick(event)) { + WMSelectListItem(lPtr, tmp); if (lPtr->doubleAction) (*lPtr->doubleAction)(lPtr, lPtr->doubleClientData); + } else { + WMSelectListItem(lPtr, tmp); } - lPtr->selectedItem = tmp; } } break; @@ -770,7 +794,6 @@ handleActionEvents(XEvent *event, void *data) tmp = getItemIndexAt(lPtr, event->xmotion.y); if (tmp>=0 && tmp != lPtr->selectedItem) { WMSelectListItem(lPtr, tmp); - lPtr->selectedItem = tmp; } } break; diff --git a/WINGs/wmfile.c b/WINGs/wmfile.c index d3a1a51c..2bb11782 100644 --- a/WINGs/wmfile.c +++ b/WINGs/wmfile.c @@ -1,7 +1,16 @@ - /* * Author: Len Trigg */ + +/* + Update: Franck Wolff +----------------------------------------------------------------------- + List of updated functions : + - main : + add -s option for a save panel... +----------------------------------------------------------------------- +*/ + #include "WINGs.h" @@ -29,6 +38,7 @@ void usage(void) "\t%s [-options]\n" "\n" "options:\n" + " -s\t\tSave panel (default open panel)\n" " -i \tInitial directory (default /)\n" " -t \tQuery window title (default none)\n" "\n" @@ -42,16 +52,21 @@ void usage(void) exit(0); } +#define OPEN_PANEL_TYPE 0 +#define SAVE_PANEL_TYPE 1 + int main(int argc, char **argv) { Display *dpy = XOpenDisplay(""); WMScreen *scr; WMPixmap *pixmap; - WMOpenPanel *panel; + WMOpenPanel *oPanel; + WMSavePanel *sPanel; /* RImage *image;*/ char *title = NULL; char *initial = "/"; int ch; + int panelType = OPEN_PANEL_TYPE; extern char *optarg; extern int optind; @@ -63,9 +78,12 @@ int main(int argc, char **argv) puts("could not open display"); exit(1); } - while((ch = getopt(argc, argv, "i:ht:")) != -1) + while((ch = getopt(argc, argv, "si:ht:")) != -1) switch(ch) { + case 's': + panelType = SAVE_PANEL_TYPE; + break; case 'i': initial = optarg; break; @@ -76,24 +94,30 @@ int main(int argc, char **argv) usage(); } - for(; optind flags.pullsDown = flag; if (!flag) { - bPtr->selectedItem = bPtr->items; + /* This code causes bugs. It should not select any item, + * since it was not asked to. -Dan + bPtr->selectedItem = bPtr->items; if (bPtr->selectedItem) bPtr->selectedItemIndex = 0; else - bPtr->selectedItemIndex = -1; + bPtr->selectedItemIndex = -1; + */ + bPtr->selectedItem = NULL; + /* the drawing routine, still draws things wrong if we put + * the index to -1 (i.e. not selected). + * Find out why. -Dan */ + bPtr->selectedItemIndex = 0; } else bPtr->selectedItemIndex = -1; diff --git a/WINGs/wscrollview.c b/WINGs/wscrollview.c index cbbcb4c8..d64950f8 100644 --- a/WINGs/wscrollview.c +++ b/WINGs/wscrollview.c @@ -398,7 +398,7 @@ WMSetScrollViewContentView(WMScrollView *sPtr, WMView *view) sPtr->contentView = view; - W_ReparentView(sPtr->contentView, sPtr->viewport); + W_ReparentView(sPtr->contentView, sPtr->viewport, 0, 0); if (sPtr->flags.hasHScroller) { float prop; diff --git a/WINGs/wslider.c b/WINGs/wslider.c index f4ee461f..d73b693a 100644 --- a/WINGs/wslider.c +++ b/WINGs/wslider.c @@ -533,6 +533,8 @@ destroySlider(Slider *sPtr) if (sPtr->backPixmap) WMReleasePixmap(sPtr->backPixmap); + WMRemoveNotificationObserver(sPtr); + free(sPtr); } diff --git a/WINGs/wsplitview.c b/WINGs/wsplitview.c index e79b9fce..4e14c101 100644 --- a/WINGs/wsplitview.c +++ b/WINGs/wsplitview.c @@ -144,7 +144,7 @@ WMAddSplitViewSubview(WMSplitView *sPtr, WMView *subview) W_UnmapView(subview); } - W_ReparentView(subview, sPtr->view); + W_ReparentView(subview, sPtr->view, 0, 0); #if 0 if (sPtr->resizeSubviewsProc && subviewCount(sPtr)>1) { diff --git a/WINGs/wtest.c b/WINGs/wtest.c index d79a1a83..05ca39df 100644 --- a/WINGs/wtest.c +++ b/WINGs/wtest.c @@ -46,10 +46,10 @@ testOpenFilePanel(WMScreen *scr) /* get the shared Open File panel */ panel = WMGetOpenPanel(scr); - WMRunModalOpenPanelForDirectory(panel, NULL, "/usr/local", NULL, NULL); + WMRunModalFilePanelForDirectory(panel, NULL, "/usr/local", NULL, NULL); /* free the panel to save some memory. Not needed otherwise. */ - WMFreeFilePanel(panel); + WMFreeFilePanel(WMGetOpenPanel(scr)); } diff --git a/WINGs/wtextfield.c b/WINGs/wtextfield.c index 235bad38..47043f79 100644 --- a/WINGs/wtextfield.c +++ b/WINGs/wtextfield.c @@ -22,8 +22,10 @@ typedef struct W_TextField { W_Class widgetClass; W_View *view; +#if 0 struct W_TextField *nextField; /* next textfield in the chain */ struct W_TextField *prevField; +#endif char *text; int textLen; /* size of text */ @@ -39,6 +41,8 @@ typedef struct W_TextField { WMRange selection; WMRange prevselection; + WMFont *font; + #if 0 WMHandlerID timerID; /* for cursor blinking */ #endif @@ -46,13 +50,15 @@ typedef struct W_TextField { WMAlignment alignment:2; unsigned int bordered:1; - + + unsigned int beveled:1; + unsigned int enabled:1; - + unsigned int focused:1; unsigned int cursorOn:1; - + unsigned int secure:1; /* password entry style */ /**/ @@ -97,11 +103,11 @@ struct W_ViewProcedureTable _TextFieldViewProcedures = { }; -#define TEXT_WIDTH(tPtr, start) (WMWidthOfString((tPtr)->view->screen->normalFont, \ - &((tPtr)->text[(start)]), (tPtr)->textLen - (start) + 1)) +#define TEXT_WIDTH(tPtr, start) (WMWidthOfString((tPtr)->font, \ + &((tPtr)->text[(start)]), (tPtr)->textLen - (start) + 1)) -#define TEXT_WIDTH2(tPtr, start, end) (WMWidthOfString((tPtr)->view->screen->normalFont, \ - &((tPtr)->text[(start)]), (end) - (start) + 1)) +#define TEXT_WIDTH2(tPtr, start, end) (WMWidthOfString((tPtr)->font, \ + &((tPtr)->text[(start)]), (end) - (start) + 1)) static void @@ -163,7 +169,6 @@ WMCreateTextField(WMWidget *parent) { TextField *tPtr; - tPtr = wmalloc(sizeof(TextField)); memset(tPtr, 0, sizeof(TextField)); @@ -185,24 +190,28 @@ WMCreateTextField(WMWidget *parent) tPtr->text[0] = 0; tPtr->textLen = 0; tPtr->bufferSize = MIN_TEXT_BUFFER; - + tPtr->flags.enabled = 1; WMCreateEventHandler(tPtr->view, ExposureMask|StructureNotifyMask |FocusChangeMask, handleEvents, tPtr); W_ResizeView(tPtr->view, DEFAULT_WIDTH, DEFAULT_HEIGHT); - WMSetTextFieldBordered(tPtr, DEFAULT_BORDERED); + + tPtr->font = WMRetainFont(tPtr->view->screen->normalFont); + + tPtr->flags.bordered = DEFAULT_BORDERED; + tPtr->flags.beveled = True; tPtr->flags.alignment = DEFAULT_ALIGNMENT; - tPtr->offsetWidth = (tPtr->view->size.height - - WMFontHeight(tPtr->view->screen->normalFont))/2; + tPtr->offsetWidth = + WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font))/2, 1); WMCreateEventHandler(tPtr->view, EnterWindowMask|LeaveWindowMask |ButtonPressMask|KeyPressMask|Button1MotionMask, handleTextFieldActionEvents, tPtr); tPtr->flags.cursorOn = 1; - + return tPtr; } @@ -311,10 +320,6 @@ WMGetTextFieldText(WMTextField *tPtr) void WMSetTextFieldText(WMTextField *tPtr, char *text) { - /* We do not set text if it's the same. This will also help - * to avoid some infinite loops if this function is called from - * a function called by a notification observer. -Dan - */ if ((text && strcmp(tPtr->text, text) == 0) || (!text && tPtr->textLen == 0)) return; @@ -347,6 +352,14 @@ WMSetTextFieldText(WMTextField *tPtr, char *text) } +void +WMSetTextFieldFont(WMTextField *tPtr, WMFont *font) +{ + /* TODO: update font change after field is mapped */ + WMReleaseFont(tPtr->font); + tPtr->font = WMRetainFont(font); +} + void WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment) { @@ -373,6 +386,17 @@ WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered) } +void +WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag) +{ + tPtr->flags.beveled = flag; + + if (tPtr->view->flags.realized) { + paintTextField(tPtr); + } +} + + void WMSetTextFieldSecure(WMTextField *tPtr, Bool flag) @@ -385,6 +409,13 @@ WMSetTextFieldSecure(WMTextField *tPtr, Bool flag) } +Bool +WMGetTextFieldEnabled(WMTextField *tPtr) +{ + return tPtr->flags.enabled; +} + + void WMSetTextFieldEnabled(WMTextField *tPtr, Bool flag) { @@ -438,15 +469,61 @@ WMSetTextFieldCursorPosition(WMTextField *tPtr, unsigned int position) } +void +WMSetTextFieldNextTextField(WMTextField *tPtr, WMTextField *next) +{ + CHECK_CLASS(tPtr, WC_TextField); + if (next == NULL) { + if (tPtr->view->nextFocusChain) + tPtr->view->nextFocusChain->prevFocusChain = NULL; + tPtr->view->nextFocusChain = NULL; + return; + } + + CHECK_CLASS(next, WC_TextField); + + if (tPtr->view->nextFocusChain) + tPtr->view->nextFocusChain->prevFocusChain = NULL; + if (next->view->prevFocusChain) + next->view->prevFocusChain->nextFocusChain = NULL; + + tPtr->view->nextFocusChain = next->view; + next->view->prevFocusChain = tPtr->view; +} + + +void +WMSetTextFieldPrevTextField(WMTextField *tPtr, WMTextField *prev) +{ + CHECK_CLASS(tPtr, WC_TextField); + if (prev == NULL) { + if (tPtr->view->prevFocusChain) + tPtr->view->prevFocusChain->nextFocusChain = NULL; + tPtr->view->prevFocusChain = NULL; + return; + } + + CHECK_CLASS(prev, WC_TextField); + + if (tPtr->view->prevFocusChain) + tPtr->view->prevFocusChain->nextFocusChain = NULL; + if (prev->view->nextFocusChain) + prev->view->nextFocusChain->prevFocusChain = NULL; + + tPtr->view->prevFocusChain = prev->view; + prev->view->nextFocusChain = tPtr->view; +} + + static void resizeTextField(WMTextField *tPtr, unsigned int width, unsigned int height) { W_ResizeView(tPtr->view, width, height); - - tPtr->offsetWidth = (tPtr->view->size.height - - WMFontHeight(tPtr->view->screen->normalFont))/2; - - tPtr->usableWidth = tPtr->view->size.width - 2*tPtr->offsetWidth; + + tPtr->offsetWidth = + WMAX((tPtr->view->size.height - WMFontHeight(tPtr->font))/2, 1); + + tPtr->usableWidth = tPtr->view->size.width - 2*tPtr->offsetWidth + 2; } @@ -457,27 +534,24 @@ paintCursor(TextField *tPtr) WMScreen *screen = tPtr->view->screen; int textWidth; - cx = WMWidthOfString(screen->normalFont, - &(tPtr->text[tPtr->viewPosition]), + cx = WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->cursorPosition-tPtr->viewPosition); switch (tPtr->flags.alignment) { case WARight: - textWidth = WMWidthOfString(screen->normalFont, tPtr->text, - tPtr->textLen); + textWidth = WMWidthOfString(tPtr->font, tPtr->text, tPtr->textLen); if (textWidth < tPtr->usableWidth) - cx += tPtr->offsetWidth + tPtr->usableWidth - textWidth; + cx += tPtr->offsetWidth + tPtr->usableWidth - textWidth + 1; else - cx += tPtr->offsetWidth; + cx += tPtr->offsetWidth + 1; break; case WALeft: - cx += tPtr->offsetWidth; + cx += tPtr->offsetWidth + 1; break; case WAJustified: /* not supported */ case WACenter: - textWidth = WMWidthOfString(screen->normalFont, tPtr->text, - tPtr->textLen); + textWidth = WMWidthOfString(tPtr->font, tPtr->text, tPtr->textLen); if (textWidth < tPtr->usableWidth) cx += tPtr->offsetWidth + (tPtr->usableWidth-textWidth)/2; else @@ -497,7 +571,7 @@ paintCursor(TextField *tPtr) static void -drawRelief(WMView *view) +drawRelief(WMView *view, Bool beveled) { WMScreen *scr = view->screen; Display *dpy = scr->display; @@ -507,8 +581,14 @@ drawRelief(WMView *view) int width = view->size.width; int height = view->size.height; - wgc = W_GC(scr->white); dgc = W_GC(scr->darkGray); + + if (!beveled) { + XDrawRectangle(dpy, view->window, dgc, 0, 0, width-1, height-1); + + return; + } + wgc = W_GC(scr->white); lgc = W_GC(scr->gray); /* top left */ @@ -550,16 +630,15 @@ paintTextField(TextField *tPtr) totalWidth = tPtr->view->size.width - 2*bd; if (tPtr->textLen > 0) { - tw = WMWidthOfString(screen->normalFont, - &(tPtr->text[tPtr->viewPosition]), + tw = WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->textLen - tPtr->viewPosition); - th = WMFontHeight(screen->normalFont); + th = WMFontHeight(tPtr->font); ty = tPtr->offsetWidth; switch (tPtr->flags.alignment) { case WALeft: - tx = tPtr->offsetWidth; + tx = tPtr->offsetWidth + 1; if (tw < tPtr->usableWidth) XClearArea(screen->display, view->window, bd+tw, bd, totalWidth-tw, view->size.height-2*bd, @@ -575,7 +654,7 @@ paintTextField(TextField *tPtr) default: case WARight: - tx = tPtr->offsetWidth + tPtr->usableWidth - tw; + tx = tPtr->offsetWidth + tPtr->usableWidth - tw - 1; if (tw < tPtr->usableWidth) XClearArea(screen->display, view->window, bd, bd, totalWidth-tw, view->size.height-2*bd, False); @@ -587,7 +666,7 @@ paintTextField(TextField *tPtr) WMSetColorInGC(screen->darkGray, screen->textFieldGC); WMDrawImageString(screen, view->window, screen->textFieldGC, - screen->normalFont, tx, ty, + tPtr->font, tx, ty, &(tPtr->text[tPtr->viewPosition]), tPtr->textLen - tPtr->viewPosition); @@ -598,7 +677,7 @@ paintTextField(TextField *tPtr) ? tPtr->selection.position + tPtr->selection.count : tPtr->selection.position; - rx = tx + WMWidthOfString(screen->normalFont, + rx = tx + WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), count); @@ -606,8 +685,7 @@ paintTextField(TextField *tPtr) screen->gray->color.pixel); WMDrawImageString(screen, view->window, screen->textFieldGC, - screen->normalFont, rx, ty, - &(tPtr->text[count]), + tPtr->font, rx, ty, &(tPtr->text[count]), abs(tPtr->selection.count)); XSetBackground(screen->display, screen->textFieldGC, @@ -630,7 +708,7 @@ paintTextField(TextField *tPtr) /* draw relief */ if (tPtr->flags.bordered) { - drawRelief(view); + drawRelief(view, tPtr->flags.beveled); } } @@ -715,7 +793,6 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) KeySym ksym; int count, refresh = 0; int control_pressed = 0; - WMScreen *scr = tPtr->view->screen; if (((XKeyEvent *) event)->state & WM_EMACSKEYMASK) { control_pressed = 1; @@ -733,9 +810,9 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) } /* Be careful in any case in this switch statement, never to call - * to more than 2 functions at the same time, that can generate text - * change notifications. Only one text change notification should be sent - * in any case. Else hazardous things can happen. + * to more than a function that can generate text change notifications. + * Only one text change notification should be sent in any case. + * Else hazardous things can happen. * Maybe we need a better solution than the function wrapper to inform * functions that change text in text fields, if they need to send a * change notification or not. -Dan @@ -811,7 +888,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) } else { tPtr->cursorPosition++; } - while (WMWidthOfString(scr->normalFont, + while (WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->cursorPosition-tPtr->viewPosition) > tPtr->usableWidth) { @@ -851,7 +928,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) paintCursor(tPtr); tPtr->cursorPosition = tPtr->textLen; tPtr->viewPosition = 0; - while (WMWidthOfString(scr->normalFont, + while (WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->textLen-tPtr->viewPosition) > tPtr->usableWidth) { @@ -870,6 +947,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) case XK_BackSpace: if (tPtr->cursorPosition > 0) { WMRange range; + if (tPtr->prevselection.count) { range.position = tPtr->prevselection.count < 0 ? tPtr->prevselection.position + tPtr->prevselection.count @@ -892,6 +970,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) case XK_Delete: if (tPtr->cursorPosition < tPtr->textLen || tPtr->prevselection.count) { WMRange range; + if (tPtr->prevselection.count) { range.position = tPtr->prevselection.count < 0 ? tPtr->prevselection.position + tPtr->prevselection.count @@ -910,6 +989,7 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) default: if (count > 0 && !iscntrl(buffer[0])) { WMRange range; + if (tPtr->prevselection.count) { range.position = tPtr->prevselection.count < 0 ? tPtr->prevselection.position + tPtr->prevselection.count @@ -944,7 +1024,6 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event) static int pointToCursorPosition(TextField *tPtr, int x) { - WMFont *font = tPtr->view->screen->normalFont; int a, b, mid; int tw; @@ -953,13 +1032,13 @@ pointToCursorPosition(TextField *tPtr, int x) a = tPtr->viewPosition; b = tPtr->viewPosition + tPtr->textLen; - if (WMWidthOfString(font, &(tPtr->text[tPtr->viewPosition]), + if (WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), tPtr->textLen-tPtr->viewPosition) < x) return tPtr->textLen; while (a < b && b-a>1) { mid = (a+b)/2; - tw = WMWidthOfString(font, &(tPtr->text[tPtr->viewPosition]), + tw = WMWidthOfString(tPtr->font, &(tPtr->text[tPtr->viewPosition]), mid - tPtr->viewPosition); if (tw > x) b = mid; @@ -981,7 +1060,7 @@ handleTextFieldActionEvents(XEvent *event, void *data) switch (event->type) { case KeyPress: - if (tPtr->flags.enabled) + if (tPtr->flags.enabled && tPtr->flags.focused) handleTextFieldKeyPress(tPtr, event); break; @@ -1045,7 +1124,9 @@ destroyTextField(TextField *tPtr) if (tPtr->timerID) WMDeleteTimerHandler(tPtr->timerID); #endif - + + WMReleaseFont(tPtr->font); + if (tPtr->text) free(tPtr->text); diff --git a/WINGs/wview.c b/WINGs/wview.c index 8b7e5b3b..c0a3adaa 100644 --- a/WINGs/wview.c +++ b/WINGs/wview.c @@ -102,6 +102,32 @@ adoptChildView(W_View *view, W_View *child) } +static void +getPosition(Display *dpy, Window win, int *x_ret, int *y_ret) +{ + unsigned foo; + Window bar; + Window parent; + Window *childs; + int x, y; + + XGetGeometry(dpy, win, &bar, &x, &y, &foo, &foo, &foo, &foo); + if (XQueryTree(dpy, win, &bar, &parent, &childs, &foo)) { + int px, py; + + XFree(childs); + if (parent != bar) { + getPosition(dpy, parent, &px, &py); + + x += px; + y += py; + } + } + + *x_ret = x; + *y_ret = y; +} + static void handleEvents(XEvent *event, void *data) @@ -109,17 +135,29 @@ handleEvents(XEvent *event, void *data) W_View *view = (W_View*)data; if (event->type == ConfigureNotify) { - + if (event->xconfigure.width != view->size.width || event->xconfigure.height != view->size.height) { - + + view->size.width = event->xconfigure.width; + view->size.height = event->xconfigure.height; + if (view->flags.notifySizeChanged) { - view->size.width = event->xconfigure.width; - view->size.height = event->xconfigure.height; WMPostNotificationName(WMViewSizeDidChangeNotification, view, NULL); } } + if (event->xconfigure.x != view->pos.x + || event->xconfigure.y != view->pos.y) { + + if (event->xconfigure.send_event) { + view->pos.x = event->xconfigure.x; + view->pos.y = event->xconfigure.y; + } else { + getPosition(view->screen->display, view->window, + &view->pos.x, &view->pos.y); + } + } } } @@ -265,34 +303,26 @@ W_CheckInternalMessage(W_Screen *scr, XClientMessageEvent *cev, int event) void -W_ReparentView(W_View *view, W_View *newParent) +W_ReparentView(W_View *view, W_View *newParent, int x, int y) { - int wasMapped; Display *dpy = view->screen->display; assert(!view->flags.topLevel); - - wasMapped = view->flags.mapped; - if (wasMapped) - W_UnmapView(view); unparentView(view); adoptChildView(newParent, view); if (view->flags.realized) { if (newParent->flags.realized) { - XReparentWindow(dpy, view->window, newParent->window, 0, 0); + XReparentWindow(dpy, view->window, newParent->window, x, y); } else { wwarning("trying to reparent realized view to unrealized parent"); return; } } - view->pos.x = 0; - view->pos.y = 0; - - if (wasMapped) - W_MapView(view); + view->pos.x = x; + view->pos.y = y; } @@ -382,6 +412,11 @@ destroyView(W_View *view) return; view->flags.alreadyDead = 1; + if (view->nextFocusChain) + view->nextFocusChain->prevFocusChain = view->prevFocusChain; + if (view->prevFocusChain) + view->prevFocusChain->nextFocusChain = view->nextFocusChain; + /* Do not leave focus in a inexisting control */ if (W_FocusedViewOfToplevel(W_TopLevelOfView(view))==view) W_SetFocusOfTopLevel(W_TopLevelOfView(view), NULL); diff --git a/WPrefs.app/Focus.c b/WPrefs.app/Focus.c index e81093b7..75aed5a2 100644 --- a/WPrefs.app/Focus.c +++ b/WPrefs.app/Focus.c @@ -69,6 +69,8 @@ showData(_Panel *panel) char buffer[32]; str = GetStringForKey("FocusMode"); + if (!str) + str = "manual"; if (strcasecmp(str, "manual")==0 || strcasecmp(str, "clicktofocus")==0) WMSetPopUpButtonSelectedItem(panel->kfocP, 0); else if (strcasecmp(str, "auto")==0 || strcasecmp(str, "focusfollowsmouse")==0) @@ -84,12 +86,14 @@ showData(_Panel *panel) /**/ str = GetStringForKey("ColormapMode"); + if (!str) + str = "auto"; if (strcasecmp(str, "manual")==0 || strcasecmp(str, "clicktofocus")==0) { WMPerformButtonClick(panel->manB); } else if (strcasecmp(str, "auto")==0 || strcasecmp(str, "focusfollowsmouse")==0) { WMPerformButtonClick(panel->autB); } else { - wwarning(_("bad option value %s for option ColormapMode. Using default Manual"), + wwarning(_("bad option value %s for option ColormapMode. Using default Auto"), str); WMPerformButtonClick(panel->manB); } diff --git a/WPrefs.app/Icons.c b/WPrefs.app/Icons.c index c0c43ec5..e5841ea7 100644 --- a/WPrefs.app/Icons.c +++ b/WPrefs.app/Icons.c @@ -145,6 +145,8 @@ showData(_Panel *panel) WMSetPopUpButtonSelectedItem(panel->sizeP, i); str = GetStringForKey("IconificationStyle"); + if (!str) + str = "zoom"; if (strcasecmp(str, "none")==0) WMPerformButtonClick(panel->animB[3]); else if (strcasecmp(str, "twist")==0) diff --git a/WPrefs.app/Makefile.am b/WPrefs.app/Makefile.am index 0106bfea..7982c2f6 100644 --- a/WPrefs.app/Makefile.am +++ b/WPrefs.app/Makefile.am @@ -1,7 +1,5 @@ SUBDIRS = xpm tiff po -nlsdir = @NLSDIR@ - AUTOMAKE_OPTIONS = no-dependencies wpexecbindir = @wprefsdir@ @@ -28,6 +26,7 @@ WPrefs_SOURCES = \ Menu.c \ MenuPreferences.c \ MouseSettings.c \ + NoMenuAlert.c \ Paths.c \ Preferences.c \ Text.c \ @@ -39,26 +38,25 @@ WPrefs_SOURCES = \ Workspace.c \ double.c \ double.h \ + editmenu.c \ + editmenu.h \ MenuGuru.c \ xmodifier.c -CPPFLAGS = \ - @CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\" INCLUDES = \ -I$(top_srcdir)/wrlib \ - -I$(top_srcdir)/WINGs \ - @XCFLAGS@ + -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a WPrefs_LDADD = \ $(top_builddir)/WINGs/libWINGs.a\ $(top_builddir)/wrlib/libwraster.la \ + @LIBRARY_SEARCH_PATH@ \ @LIBPL@ \ - @GFXLFLAGS@ \ - @XLFLAGS@ \ @GFXLIBS@ \ @XLIBS@ \ @X_EXTRA_LIBS@ \ diff --git a/WPrefs.app/Makefile.in b/WPrefs.app/Makefile.in index 289d53f2..0e163ad1 100644 --- a/WPrefs.app/Makefile.in +++ b/WPrefs.app/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -89,8 +89,6 @@ wprefsdir = @wprefsdir@ SUBDIRS = xpm tiff po -nlsdir = @NLSDIR@ - AUTOMAKE_OPTIONS = no-dependencies wpexecbindir = @wprefsdir@ @@ -103,18 +101,17 @@ wpdata_DATA = WPrefs.tiff WPrefs.xpm EXTRA_DIST = $(wpdata_DATA) TexturePanel.icons -WPrefs_SOURCES = main.c WPrefs.c WPrefs.h Appearance.c Configurations.c Expert.c Focus.c Icons.c KeyboardSettings.c KeyboardShortcuts.c Menu.c MenuPreferences.c MouseSettings.c Paths.c Preferences.c Text.c TextureAndColor.c TexturePanel.c TexturePanel.h Themes.c WindowHandling.c Workspace.c double.c double.h MenuGuru.c xmodifier.c +WPrefs_SOURCES = main.c WPrefs.c WPrefs.h Appearance.c Configurations.c Expert.c Focus.c Icons.c KeyboardSettings.c KeyboardShortcuts.c Menu.c MenuPreferences.c MouseSettings.c NoMenuAlert.c Paths.c Preferences.c Text.c TextureAndColor.c TexturePanel.c TexturePanel.h Themes.c WindowHandling.c Workspace.c double.c double.h editmenu.c editmenu.h MenuGuru.c xmodifier.c -CPPFLAGS = @CPPFLAGS@ +CPPFLAGS = @CPPFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\" - -INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @XCFLAGS@ +INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.a -WPrefs_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBPL@ @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ @X_EXTRA_LIBS@ @INTLIBS@ -lm +WPrefs_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @LIBPL@ @GFXLIBS@ @XLIBS@ @X_EXTRA_LIBS@ @INTLIBS@ -lm mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../src/config.h @@ -130,9 +127,9 @@ X_LIBS = @X_LIBS@ X_PRE_LIBS = @X_PRE_LIBS@ WPrefs_OBJECTS = main.o WPrefs.o Appearance.o Configurations.o Expert.o \ Focus.o Icons.o KeyboardSettings.o KeyboardShortcuts.o Menu.o \ -MenuPreferences.o MouseSettings.o Paths.o Preferences.o Text.o \ -TextureAndColor.o TexturePanel.o Themes.o WindowHandling.o Workspace.o \ -double.o MenuGuru.o xmodifier.o +MenuPreferences.o MouseSettings.o NoMenuAlert.o Paths.o Preferences.o \ +Text.o TextureAndColor.o TexturePanel.o Themes.o WindowHandling.o \ +Workspace.o double.o editmenu.o MenuGuru.o xmodifier.o WPrefs_LDFLAGS = CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) diff --git a/WPrefs.app/Menu.c b/WPrefs.app/Menu.c index 5e224c44..9d580725 100644 --- a/WPrefs.app/Menu.c +++ b/WPrefs.app/Menu.c @@ -83,7 +83,7 @@ typedef struct _Panel { extern char *OpenMenuGuru(WMWindow *mainWindow); - +extern Bool AskMenuCopy(WMWindow *wwin); /* must match the indexes of the commands popup */ @@ -631,16 +631,21 @@ fillBrowserColumn(WMBrowser *bPtr, int column) if (column > 0) { menuList = getItemOfSelectedEntry(panel->browser); + + WMHangData(WMGetBrowserListInColumn(bPtr, column), menuList); + if (column > WMGetBrowserFirstVisibleColumn(bPtr)) WMSetTextFieldText(panel->tit2T, getItemTitle(menuList)); else WMSetTextFieldText(panel->tit1T, getItemTitle(menuList)); } else { menuList = panel->menu; + + WMHangData(WMGetBrowserListInColumn(bPtr, column), menuList); + WMSetTextFieldText(panel->tit1T, getItemTitle(panel->menu)); } - WMHangData(WMGetBrowserListInColumn(bPtr, column), menuList); for (i=1; iwin), panel->win, - _("Error"), _("Could not copy default plmenu file " - "from ~/GNUstep/Library/WindowMaker"), - _("OK"), NULL, NULL); - return NULL; + _("Error"), buffer, _("OK"), NULL, NULL); } } free(gspath); free(menuPath); - pmenu = preProcessMenu(menu, hasWSMenu); - PLRelease(menu); + if (menu) { + pmenu = preProcessMenu(menu, hasWSMenu); + PLRelease(menu); + } else { + pmenu = NULL; + } return pmenu; } @@ -1322,8 +1332,7 @@ showData(_Panel *panel) char *gspath; char *menuPath; proplist_t menu, pmenu, plPath; - char buffer[512]; - int hasWSMenu=0; + int hasWSMenu = 0; gspath = wusergnusteppath(); @@ -1336,22 +1345,13 @@ showData(_Panel *panel) pmenu = NULL; if (!menu || !PLIsArray(menu)) { - sprintf(buffer, _("The format of the menu in ~/G/D/WMRootMenu is " - "not recognized by WPrefs. It might be in a format different " - "than the one supported by WPrefs or contain a syntax error. " - "Do you want to continue using the current menu to edit " - "it by hand later or replace it with a default menu in the new " - "format?")); - if (WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win, - _("Warning"), buffer, _("Keep current menu"), - _("Install default menu"), NULL)!=WAPRDefault) { + if (AskMenuCopy(panel->win)) { panel->dontSave = 0; pmenu = getDefaultMenu(panel, &hasWSMenu); } else { - WMRunAlertPanel(WMWidgetScreen(panel->win), panel->win, - _("Warning"), _("Any changes made in this section will not be saved"), - _("OK"), NULL, NULL); + WMSetPopUpButtonEnabled(panel->cmd1P, False); + WMSetPopUpButtonEnabled(panel->cmd2P, False); panel->dontSave = 1; } if (!pmenu) { diff --git a/WPrefs.app/MouseSettings.c b/WPrefs.app/MouseSettings.c index ca1e1d69..bfaaaa58 100644 --- a/WPrefs.app/MouseSettings.c +++ b/WPrefs.app/MouseSettings.c @@ -253,6 +253,8 @@ showData(_Panel *panel) Display *dpy = WMScreenDisplay(WMWidgetScreen(panel->win)); str = GetStringForKey("SelectWindowsMouseButton"); + if (!str) + str = "left"; i = getbutton(str); if (i==-1) { a = 0; @@ -264,6 +266,8 @@ showData(_Panel *panel) } str = GetStringForKey("WindowListMouseButton"); + if (!str) + str = "middle"; i = getbutton(str); if (i==-1) { b = 0; @@ -275,6 +279,8 @@ showData(_Panel *panel) } str = GetStringForKey("ApplicationMenuMouseButton"); + if (!str) + str = "right"; i = getbutton(str); if (i==-1) { c = 0; @@ -319,9 +325,10 @@ showData(_Panel *panel) /**/ str = GetStringForKey("ModifierKey"); - + if (!str) + str = "mod1"; a = ModifierFromKey(dpy, str); - + if (a != -1) { str = modifierNames[a]; @@ -334,7 +341,7 @@ showData(_Panel *panel) } } } - + if (a < 1) { sscanf(WMGetPopUpButtonItem(panel->grabP, 0), "%s", buffer); WMSetPopUpButtonSelectedItem(panel->grabP, 0); @@ -528,8 +535,8 @@ createPanel(Panel *p) free(path); } - buf1 = wmalloc(strlen(SPEED_IMAGE)+1); - buf2 = wmalloc(strlen(SPEED_IMAGE_S)+1); + buf1 = wmalloc(strlen(SPEED_IMAGE)+2); + buf2 = wmalloc(strlen(SPEED_IMAGE_S)+2); for (i = 0; i < 5; i++) { panel->speedB[i] = WMCreateCustomButton(panel->speedF, @@ -601,8 +608,8 @@ createPanel(Panel *p) WMMoveWidget(panel->ddelaF, 15, 125); WMSetFrameTitle(panel->ddelaF, _("Double-Click Delay")); - buf1 = wmalloc(strlen(DELAY_ICON)+1); - buf2 = wmalloc(strlen(DELAY_ICON_S)+1); + buf1 = wmalloc(strlen(DELAY_ICON)+2); + buf2 = wmalloc(strlen(DELAY_ICON_S)+2); for (i = 0; i < 5; i++) { panel->ddelaB[i] = WMCreateCustomButton(panel->ddelaF, @@ -855,18 +862,22 @@ storeData(_Panel *panel) int i; char *tmp, *p; static char *button[3] = {"left", "middle", "right"}; + WMUserDefaults *udb = WMGetStandardUserDefaults(); + + if (!WMGetUDBoolForKey(udb, "NoXSetStuff")) { + tmp = WMGetTextFieldText(panel->threT); + if (strlen(tmp)==0) { + free(tmp); + tmp = wstrdup("4"); + } + + sprintf(buffer, XSET" m %i/%i %s\n", (int)(panel->acceleration*10), + 10, tmp); + storeCommandInScript(XSET" m", buffer); - tmp = WMGetTextFieldText(panel->threT); - if (strlen(tmp)==0) { free(tmp); - tmp = wstrdup("0"); } - sprintf(buffer, XSET" m %i/%i %s\n", (int)(panel->acceleration*10),10, tmp); - storeCommandInScript(XSET" m", buffer); - - free(tmp); - for (i=0; i<5; i++) { if (WMGetButtonSelected(panel->ddelaB[i])) break; @@ -874,7 +885,7 @@ storeData(_Panel *panel) SetIntegerForKey(DELAY(i), "DoubleClickTime"); SetBoolForKey(WMGetButtonSelected(panel->disaB), "DisableWSMouseActions"); - + for (i=0; i<3; i++) { if (WMGetButtonSelected(panel->amb[i])) break; diff --git a/WPrefs.app/NoMenuAlert.c b/WPrefs.app/NoMenuAlert.c new file mode 100644 index 00000000..fd8809f7 --- /dev/null +++ b/WPrefs.app/NoMenuAlert.c @@ -0,0 +1,127 @@ +/* NoMenuAlert.c - warn user that menu can't be edited with WPrefs + * + * WPrefs - Window Maker Preferences Program + * + * Copyright (c) 1999 Alfredo K. Kojima + * + * 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 "WPrefs.h" + + +typedef struct NoMenuPanel { + WMWindow *wwin; + + WMLabel *text; + + WMButton *copyBtn; + WMButton *keepBtn; + + int finished; + int copy; +} NoMenuPanel; + + +#define MESSAGE_TEXT \ + " The menu that is being used now could not be opened. "\ + "This either means that there is a syntax error in it or that "\ + "the menu is in a format not supported by WPrefs (WPrefs only "\ + "supports property list menus).\n"\ + " If you want to change the current menu, please read "\ + "the '%s' file, press 'Keep Current Menu' and edit it with a "\ + "text editor.\n"\ + " If you want to use this editor, press 'Copy Default Menu'. "\ + "It will copy the default menu and will instruct Window Maker "\ + "to use it instead of the current one.\n"\ + " If you want more flexibility, keep using the current one "\ + "as it allows you to use C preprocessor (cpp) macros, while being "\ + "easy to edit." + + +static void +closeCallback(WMWidget *self, void *data) +{ + NoMenuPanel *panel = (NoMenuPanel*)data; + + panel->finished = True; +} + + +static void +buttonCallback(WMWidget *self, void *data) +{ + NoMenuPanel *panel = (NoMenuPanel*)data; + + panel->finished = True; + if (self == panel->keepBtn) + panel->copy = False; + else + panel->copy = True; +} + + +Bool +AskMenuCopy(WMWindow *wwin) +{ + NoMenuPanel panel; + char buffer[1024]; + + panel.wwin = WMCreatePanelForWindow(wwin, "noMenuAlert"); + WMResizeWidget(panel.wwin, 430, 260); + WMSetWindowTitle(panel.wwin, "Warning"); + WMSetWindowCloseAction(panel.wwin, closeCallback, &panel); + + panel.text = WMCreateLabel(panel.wwin); + WMResizeWidget(panel.text, 370, 200); + WMMoveWidget(panel.text, 30, 20); + + sprintf(buffer, _(MESSAGE_TEXT), "shit/ewq/ewq/rweq"); + WMSetLabelText(panel.text, buffer); + + panel.copyBtn = WMCreateCommandButton(panel.wwin); + WMResizeWidget(panel.copyBtn, 180, 24); + WMMoveWidget(panel.copyBtn, 30, 225); + WMSetButtonText(panel.copyBtn, _("Copy Default Menu")); + WMSetButtonAction(panel.copyBtn, buttonCallback, &panel); + + panel.keepBtn = WMCreateCommandButton(panel.wwin); + WMResizeWidget(panel.keepBtn, 180, 24); + WMMoveWidget(panel.keepBtn, 225, 225); + WMSetButtonText(panel.keepBtn, _("Keep Current Menu")); + WMSetButtonAction(panel.keepBtn, buttonCallback, &panel); + + WMMapSubwidgets(panel.wwin); + WMRealizeWidget(panel.wwin); + WMMapWidget(panel.wwin); + + panel.finished = False; + panel.copy = False; + + while (!panel.finished) { + XEvent event; + + WMNextEvent(WMScreenDisplay(WMWidgetScreen(panel.wwin)), &event); + WMHandleEvent(&event); + } + + WMDestroyWidget(panel.wwin); + + return panel.copy; +} + + diff --git a/WPrefs.app/Paths.c b/WPrefs.app/Paths.c index 88e9fee7..bf4bcf1f 100644 --- a/WPrefs.app/Paths.c +++ b/WPrefs.app/Paths.c @@ -365,6 +365,9 @@ createPanel(Panel *p) WMAddNotificationObserver(textBeginObserver, panel, WMTextDidBeginEditingNotification, panel->pixT); + WMSetTextFieldNextTextField(panel->pixT, panel->icoT); + WMSetTextFieldPrevTextField(panel->pixT, panel->icoT); + WMMapSubwidgets(panel->pixF); WMRealizeWidget(panel->frame); diff --git a/WPrefs.app/Preferences.c b/WPrefs.app/Preferences.c index a8f181aa..ddfac4e3 100644 --- a/WPrefs.app/Preferences.c +++ b/WPrefs.app/Preferences.c @@ -60,6 +60,8 @@ showData(_Panel *panel) char *str; str = GetStringForKey("ResizeDisplay"); + if (!str) + str = "corner"; if (strcasecmp(str, "corner")==0) WMSetPopUpButtonSelectedItem(panel->sizeP, 0); else if (strcasecmp(str, "center")==0) @@ -70,6 +72,8 @@ showData(_Panel *panel) WMSetPopUpButtonSelectedItem(panel->sizeP, 3); str = GetStringForKey("MoveDisplay"); + if (!str) + str = "corner"; if (strcasecmp(str, "corner")==0) WMSetPopUpButtonSelectedItem(panel->posiP, 0); else if (strcasecmp(str, "center")==0) diff --git a/WPrefs.app/README b/WPrefs.app/README index 0aa844e0..618fb303 100644 --- a/WPrefs.app/README +++ b/WPrefs.app/README @@ -37,12 +37,11 @@ License ------- Like Window Maker, WPrefs is distributed with through the General Public -License (as stated in the file COPYING). As an exception, the icons and -original graphical artwork included with WPrefs has the additional -restriction that they must not be redistributed without the rest of the -Window Maker distribution. In other words, you can use and distribute the -WPrefs icons freely, as long as they are distributed for use with Window -Maker (ripping the icons and putting them in your program is prohibited). +License (as stated in the file COPYING). + +The graphical artwork included with WPrefs is NOT licensed through the GPL. +It is licensed through the OpenContent License, instead. Please read the +COPYING.OPL file for the detailed license. Notes diff --git a/WPrefs.app/TexturePanel.c b/WPrefs.app/TexturePanel.c index 1f6c049c..47f359b5 100644 --- a/WPrefs.app/TexturePanel.c +++ b/WPrefs.app/TexturePanel.c @@ -245,9 +245,8 @@ buttonCallback(WMWidget *self, void *data) /* Pixmap Panel Buttons */ } else if (self == panel->pbrowB) { - - op = WMGetOpenPanel(WMWidgetScreen(panel->pbrowB)); - if (WMRunModalOpenPanelForDirectory(op, NULL, "/usr/local", NULL, NULL)) { + op = WMGetOpenPanel(WMWidgetScreen(panel->pbrowB)); + if (WMRunModalFilePanelForDirectory(op, NULL, "/usr/local", NULL, NULL)) { char *path; path = WMGetFilePanelFileName(op); WMSetTextFieldText(panel->pimagT, path); diff --git a/WPrefs.app/WPrefs.c b/WPrefs.app/WPrefs.c index 20b5292a..9f900775 100644 --- a/WPrefs.app/WPrefs.c +++ b/WPrefs.app/WPrefs.c @@ -460,7 +460,6 @@ Initialize(WMScreen *scr) break; } } - RFreeStringList(list); if (TIFFOK) path = WMPathForResourceOfType("WPrefs.tiff", NULL); @@ -495,7 +494,7 @@ Initialize(WMScreen *scr) loadConfigurations(scr, WPrefs.win); WMSetLabelText(WPrefs.statusL, _("Initializing configuration panels...")); - +#if 1 InitWindowHandling(scr, WPrefs.win); InitFocus(scr, WPrefs.win); InitMenuPreferences(scr, WPrefs.win); @@ -505,7 +504,9 @@ Initialize(WMScreen *scr) InitPaths(scr, WPrefs.win); InitWorkspace(scr, WPrefs.win); InitConfigurations(scr, WPrefs.win); +#endif InitMenu(scr, WPrefs.win); +#if 1 #ifdef not_yet_fully_implemented InitKeyboardSettings(scr, WPrefs.win); #endif @@ -518,15 +519,14 @@ Initialize(WMScreen *scr) InitThemes(scr, WPrefs.win); #endif InitExpert(scr, WPrefs.win); - +#endif WMRealizeWidget(WPrefs.scrollV); WMSetLabelText(WPrefs.statusL, - _("WPrefs is free software and is distributed WITHOUT ANY " - "WARRANTY under the terms of the GNU General Public License. " - "Redistribution of the icons in this program separately " - "from the program is prohibited.")); - + _("WPrefs is free software and is distributed WITHOUT ANY\n" + "WARRANTY under the terms of the GNU General Public License.\n" + "The icons in this program are licensed through the\n" + "OpenContent License.")); } @@ -580,8 +580,10 @@ loadConfigurations(WMScreen *scr, WMWindow *mainw) if (sscanf(buffer, "Window Maker %i.%i.%i",&v1,&v2,&v3)!=3 && sscanf(buffer, "WindowMaker %i.%i.%i",&v1,&v2,&v3)!=3) { WMRunAlertPanel(scr, mainw, _("Error"), - _("Could not extract version from Window Maker. Make sure it is correctly installed."), - _("OK"), NULL, NULL); + _("Could not extract version from Window Maker. " + "Make sure it is correctly installed and the path " + "where it installed is in the PATH environment " + "variable."), _("OK"), NULL, NULL); exit(1); } if (v1 == 0 && (v2 < 18 || v3 < 0)) { @@ -601,7 +603,14 @@ loadConfigurations(WMScreen *scr, WMWindow *mainw) if (!file || !fgets(buffer, 1023, file)) { wsyserror(_("could not run \"wmaker --global_defaults_path\".")); exit(1); + } else { + char *ptr; + ptr = strchr(buffer, '\n'); + if (ptr) + *ptr = 0; + strcat(buffer, "/WindowMaker"); } + if (file) pclose(file); @@ -849,6 +858,9 @@ GetSpeedForKey(char *defaultName) int i; str = GetStringForKey(defaultName); + if (!str) + return 2; + if (strcasecmp(str, "ultraslow")==0) i = 0; else if (strcasecmp(str, "slow")==0) diff --git a/WPrefs.app/WPrefs.h b/WPrefs.app/WPrefs.h index 6939658e..35a245dc 100644 --- a/WPrefs.app/WPrefs.h +++ b/WPrefs.app/WPrefs.h @@ -42,8 +42,8 @@ /****/ -#define WVERSION "0.10" -#define WMVERSION "0.50.x" +#define WVERSION "0.11" +#define WMVERSION "0.51.x" typedef struct _Panel Panel; diff --git a/WPrefs.app/WPrefs.tiff b/WPrefs.app/WPrefs.tiff index 1435461016324b1ff0c3e2b6869bf5e1004ff8be..9038572a91ae893b5f3e573457a792d5b729ff4f 100644 GIT binary patch delta 3588 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 delta 2473 zcmV;a30C&n9QG4`Nl7XI`Un630bp_gz$H+SU_k?i3?3>(xUdnzL<$`xeB@|RBgTv# zD@MGy3F0J*og@T+FOS-H%Qf1GXCq|wex$|c&SSVwWqUnp5 zNS&{ArXc0AWv-Z^R22Z#s+6ssyk-U{KpJ8O+ypZyP@rjllTeJ_KLrX@{1Ycmwo{jG zT|4*e-pfB}(&YUkx_pmg&8VTs1^4o;~yI~T>ht{^B>HA zie<@H09dtV`MQ-$7x_oG#X%FmcuSAp6{}8)QqT_aqC$nnLR4t{g98VC?S{bTR)c0t}o1z!PHpfTkM?f z)C;M9()of@sVXYVNve_mnro@Gw%WO=Q#-2REZ@%xMOH!s4XI7hziOMPruru9^E>q# zNvgf2mTRSif1>$E3oZ1UZ9o+HfdB$X%s>Sd^n#k@pE?jhbh*crdIl> z86%AN=N+148KHs-{yXhF`Sy$t1VHe>00T^a27PP1DgHU@fx{kf)V$|rdTGq>7W(Wn zJuV;sn}2+JKpACJ^B*D@88y?wpDI!TzbEcM@0`O<`Nz}Uu}AKuw-zU?jbn~$h9Yf_ z!RVYwZ}~@iCH_HP)y3%&6$)(J0HQS7^`m!zAf$lipG`XE=N8Vi=>%;{dcXpWe?)MBgMS!_0W-QaC6*Olco8gg z7QbolhJVUU;h#tk_-Agl@w!}SB>pE@v{p3H4kH zWmy&E^R9P|{dv#@5=j2x0u)gGxtVi+foq#t_@-KOY8`gi`Ns?iDEa3#X`5}ij7TD# za@wjj1eWue0-@KCf1ck0E*0G9!K+?(zIQa|dN-O7D_Bvp!0``S;L8r?D1);BXQT z0E2&I;Q>Kv_A&n96bk$!B$C1PmfS-~)(~?I3lT??i@1iFh$F?Nz=aZE@ei8la~xE@ zVKJyxbz1^&T=Sf|NQSExgsn;;Bfw=pkzF|Z%q@Q(uE0@tT7gIT15PfmG| zAqrB#qqiUlFy(O#)h9v*3}FXm?$*}_=jXh66$AD3v&3nf1|0s;n!EI9BYr4BQUge533{?Uao*aa0Nz|$3yp&b4Q;vZ}9hcx~%4+C(srug_rB_0u?U*MSxaKN&u zd_^GyXOcyxvOsQslE zJfs6QK!`3Lnpz`$#wRPmuv$am(JcHj-NP}1S4--eUbW&2Okl!)KP=6!f=u8Q*g(f8 zUJZ*^{23O1_%$qk+YOBNCKY`3W;rf_=Qwld9Mi526Tfi^7O*JVu~~MSG(e{2ns(h6 z`0ob(0~<7ul(GkS2D$98jbaqD2A}EZgzoZT5c6QUk1fliTJQjV@GG@B&BB8@@laWy z0JOT?C_(ywM zJgh_fL(E0N^z^8e?V|AFA4p^34v@UeLC0ZWoN9(2{Dz-Y7+4L=6Vi(P(ujLqK}1$V zcN_`<&sivqJV1C35FV!j0DuDkuM#8qn1BK^K6`uE##a-6_CY7v$#E9Cvue89>!uYr z&H?|kz(1K>;ja0mleMo)Ldc zV849ib2eI@-LkY~KiI$q4%*GcqDaFNl4C6(OIcdWmpk{qtWHa?#7OC8pgO-u1TI1b z0OHrZUZJdie?4Ll6aGPpfbeZ>6C2;?rZ>5n@WBDoK`GZ(N|cAKZ?z=b+&T*J6Asv7 zf{qoni_6}y}Qt%&a)b1`gyWis;_KfqrZ+(r+UTux=y+8b;|A2YV=c+X6 zmt81?r88hQ{xNyDWi4l4IoMD35rY^c9C(JEIe4ajyz5z3@&SY{Mmfr}f5ao5Ty1;D zIsOrgSS_wC%wgo$aYA&+<10{_T|>cn@Q?lT>lg2M-{+C~e8CH!ANzUA^SShT4%4p0 z^oczCnfW7A^&;?^_=g)7p_}^aXHN;&zs~ipi9q~cJ)pWC1fN9zybm0RYVFd+1{x{@6!8{t=Jbz!RVPxTini;g5dC zlb-g>=RbKp&wFkN^0UsD3-OgNd)3Zf@#@#V_BAW5uU`dA-77Ka9lWB#+umNkcfRMn zZ%+8TsP$1QCV~kc|I`QH_F?V4_kC}C!|T2<{I#!s<4xcC%4-M+4*&oG0{{U4001oj z000320{{U4001oj000630{{d7006WJlX49z9wYz&0K5qR01g2H02TlM0N@D#01*KM z0096100;n+x(y-@EdT%j7XbtS0RR91@(7da4JSEub8;_eZ*65SW?^(;Y%gJKW^!d@ nZ!dRkaB^j4b1rmgW&lHSWnpw>WFU8GbZ8({Xk{QrNlj1yZ?<|d diff --git a/WPrefs.app/WPrefs.xpm b/WPrefs.app/WPrefs.xpm index d6d9c917..6d03f461 100644 --- a/WPrefs.app/WPrefs.xpm +++ b/WPrefs.app/WPrefs.xpm @@ -1,237 +1,426 @@ /* XPM */ -static char * image_name[] = { -"45 45 189 2", +static char * WPrefs3D_xpm[] = { +"48 48 375 2", " c None", -". c #186175D60000", -"X c #000000000000", -"o c #082004100820", -"O c #082008200820", -"+ c #4924A28930C2", -"@ c #514451445144", -"# c #492449244924", -"$ c #49244D344924", -"% c #208179E70820", -"& c #104010401040", -"* c #28A22CB228A2", -"= c #38E338E338E3", -"- c #28A228A228A2", -"; c #30C22CB230C2", -": c #186114511861", -"> c #514455555965", -", c #10400C301040", -"< c #186118611861", -"1 c #208120812081", -"2 c #2081249228A2", -"3 c #186171C60000", -"4 c #28A282071040", -"5 c #28A27DF70820", -"6 c #28A2249228A2", -"7 c #30C230C230C2", -"8 c #410341034103", -"9 c #30C292482081", -"0 c #30C234D338E3", -"q c #79E77DF78617", -"w c #C71BC71BC71B", -"e c #71C675D671C6", -"r c #965892489658", -"t c #FFFFFFFFFFFF", -"y c #EFBEEFBEEFBE", -"u c #5144AAAA38E3", -"i c #A699FFFF8E38", -"p c #596559656185", -"a c #AEBA10401040", -"s c #E79D14511861", -"d c #208104100000", -"f c #FFFF61856185", -"g c #F7DE2CB22081", -"h c #C71BAAAAA699", -"j c #DF7D14511861", -"k c #71C608200820", -"l c #FFFF30C230C2", -"z c #E79D20811861", -"x c #79E714511861", -"c c #28A204100000", -"v c #EFBE18611861", -"b c #79E70C300820", -"n c #FFFFE38DE79D", -"m c #FFFF28A228A2", -"M c #E79D18611861", -"N c #8E381C711861", -"B c #596559655965", -"V c #861749240820", -"C c #D75C24921040", -"Z c #B6DA10401040", -"A c #B6DA14511040", -"S c #10403CF30000", -"D c #69A6C30B5144", -"F c #CF3C96585144", -"G c #EFBE38E328A2", -"H c #BEFB18611861", -"J c #410375D638E3", -"K c #30C28E381861", -"L c #38E33CF34103", -"P c #A69910401040", -"I c #8E380C300820", -"U c #CF3C14511040", -"Y c #FFFF59655965", -"T c #D75C41034103", -"R c #965820811861", -"E c #DF7D20812081", -"W c #596508200820", -"Q c #38E304100820", -"! c #FFFF34D338E3", -"~ c #8E3838E338E3", -"^ c #6185492428A2", -"/ c #F7DE20812081", -"( c #8E388A288E38", -") c #30C204100000", -"_ c #104000000000", -"` c #FFFFD34CD75C", -"' c #FFFF20812081", -"] c #28A220812081", -"[ c #69A6A2895965", -"{ c #F7DE24922081", -"} c #492414511040", -"| c #AEBAAEBAAEBA", -" . c #86170C300820", -".. c #69A608200820", -"X. c #104059650000", -"o. c #FFFF8A288E38", -"O. c #F7DE38E338E3", -"+. c #9E79EFBE8617", -"@. c #71C614511040", -"#. c #861786178617", -"$. c #965810401040", -"%. c #208151441040", -"&. c #FFFF45144103", -"*. c #D75C34D338E3", -"=. c #FFFF49244924", -"-. c #9E791C712081", -";. c #618565956185", -":. c #492404100820", -">. c #38E35D7528A2", -",. c #C71BC30BC71B", -"<. c #8617E38D69A6", -"1. c #FFFF249228A2", -"2. c #69A628A228A2", -"3. c #FFFF65956185", -"4. c #C71B20812081", -"5. c #28A26DB60000", -"6. c #FFFF18611861", -"7. c #E79D1C711861", -"8. c #30C2492428A2", -"9. c #FFFFF3CEEFBE", -"0. c #B6DAB6DAB6DA", -"q. c #FFFFA2899E79", -"w. c #E79D20812081", -"e. c #51445D750820", -"r. c #F7DE1C711861", -"t. c #618549240820", -"y. c #18616DB60000", -"u. c #9E7941031040", -"i. c #A69934D31040", -"p. c #186120811040", -"a. c #BEFBC71B69A6", -"s. c #AEBA92485144", -"d. c #D75C7DF74924", -"f. c #CF3C618538E3", -"g. c #AEBAF3CE8617", -"h. c #104018610820", -"j. c #F7DE1C712081", -"k. c #18610C300820", -"l. c #AEBAA289A699", -"z. c #BEFB45144103", -"x. c #618561856185", -"c. c #104004100820", -"v. c #EFBE28A228A2", -"b. c #69A610401040", -"n. c #79E718611861", -"m. c #51442CB228A2", -"M. c #79E779E779E7", -"N. c #F7DE30C230C2", -"B. c #F7DE18611861", -"V. c #410304100820", -"C. c #E79D34D330C2", -"Z. c #C71B18611861", -"A. c #F7DE28A22081", -"S. c #DF7DA289A699", -"D. c #F7DE28A228A2", -"F. c #E79D30C230C2", -"G. c #D75CD34CD75C", -"H. c #EFBE41034103", -"J. c #C71B14511040", -"K. c #000014510000", -"L. c #514408200820", -"P. c #C71B59655965", -"I. c #B6DA249228A2", -"U. c #492410401040", -"Y. c #208110401040", -"T. c #082010400820", -"R. c #FFFF7DF779E7", -"E. c #618514511040", -"W. c #AEBA45144103", -"Q. c #000008200000", -"!. c #DF7D2CB22081", -"~. c #59655D755965", -"^. c #71C671C671C6", -"/. c #AEBAAAAAAEBA", -"(. c #69A66DB671C6", -"). c #28A282070820", -"_. c #71C6CB2B5965", -"`. c #A699FBEE8E38", -"'. c #69A6C71B5144", -"]. c #E79DE79DE79D", -"[. c #FFFFFBEEFFFF", -"{. c #BEFBBEFBBEFB", -"}. c #8E388E389658", -"|. c #A699A699A699", -" X c #9E79A2899E79", -".X c #DF7DDF7DDF7D", -"XX c #F7DEF7DEF7DE", -"oX c #861782078617", -"OX c #71C6D34C5965", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . ", -". . . . . . ", -". . . . . . ", -". . o X O + @ # # # # # # $ % X . . ", -". . & * $ = - . X X X X X X X X . ; ; o . . ", -". . : > - , X X . X X X X X X X X . X o O , X . . ", -". . < 1 , X X X X . X X X X X X X X . X X X o X 2 . . ", -". . . . . . . . 3 % 4 . . . . . . . . . . . . . . . . . . . . . % 5 . . . . . . . . . . . ", -". % 2 X X X X X X X . X X X X X X X X . X 6 7 ; 7 ; = 8 9 0 0 0 0 . ", -". < % X X X X X X X X . X X X X X X X X . X q w w w w w e % X X X X . ", -". < 6 . X X X X X X X X . X X X X X X X X . X r t t t t t y u X X X X . ", -". X o X . X X X X X X X X . X X X X X X X X . X r t t t t t t i p X X X . ", -". O : X . X X X X a s d X . X X X X X X X X . X r t t t t t f g h : X X . ", -". X < X X . X X X X s j k X . X X X X X X X X . X r t t t t t l z x > X X . ", -". X O X X . X X X c v j b X . X X X X X X X X . X r t t t t n m M N B & X . ", -". . . . . . . . . . . . V C Z A S . . . . . . . . . . . D i i i i F G A H J K . . . . . . ", -". L X X X . X X X Z P I U X . X X X X X X X X . X r t t t t Y T R E 8 @ X . ", -". : X X X . X X X j W Q v X . X X X X X X X X . X r t t t t ! ~ ^ / ; ( , . ", -". X X X X . X X ) v _ X v Q . X X X X X X X X . X r t t t ` ' ] [ { } | : . ", -". X X X X . X X .U X X j ..X.X X X X X X X X . X r t t t o.O., +.! @.#.: . ", -". X X X X . X X U Z X X U $.%.; * ; * * ; ; - K ; | t t t &.*.; i =.-.;.< . ", -". X X X X . X X v :.X X a H >.w ,.w w w w w w <.w y t t t 1.2.$ i 3.4.# : . ", -". X X X ) 5.X ) 6.X X X ..7.8.t t t t t t t t i t ` 9.t ` 6., 0.i q.w.7 : . ", -". . . . % . e.r.t.y.u.i.X . . 5.r.p.i i i i i i i i i a.{ s.+.d.f.X i i g.r.h.5 . . . . . ", -". = X v v s _ U .X X X X j.k.t t t t t t t t i m ' s l.&.z.x.t i t ' c.X . ", -". 6 W 6.Q 6...s c X X X X v.b.y t t t t t t t i 6.} 6.n.m m.M.t i t N...X . ", -"r.B.6.6.6.6.V.X 7.v U X X X X X C.Z.6.1.m m m ' { { A.S.X D.v F.: G.t i t H.J.6.v v v v . ", -"K.X X X X X X X u.v L.X X X X X P.v I.L.U.} } Y., & T.: ,.R.v E.7 t t i y W.v P L.Q Q Q Q.", -". & , X . X X X X X X X r !., ~.t t t t t t i t t t ^.& /.t t i ,.: U X X X X X X.", -". o < X . X X X X X X X r i 7 t t t t t t t i t t t t t t t t i (.X X X . ", -". X X . X X X X X X X r i t t t t t t t t i t t t t t t t t D , X X X . ", -". . . . 3 3 3 . . % ).).).).).)._.i i i i i i i i i i i i i i i i `.'.% . . . . . . . . . ", -". X X X X . - r | | | | | ].i t t t t t t t t i t t t t t [.{.7 . X X X X . ", -". X X X X . , $ w t t t t t i t t t t t t t t i t t t t t }.7 X . X X X X . ", -". X X X X . X X 1 |.t t t t i t t t t t t t t i t t t ].}., X X . X X X X . ", -". X X X X . X X X X 6 X.XXXi t t t t t t t t i XX.X X6 X X X X . X X X X . ", -". X X X X . X X X X X X = oXOXw w t t t t w w OXoX= X X X X X X . X X X X . ", -". X X X X . X X X X X X X X % 7 ; ;.;.;.;.; ; % X X X X X X X X . X X X X . ", -". X X X X 3 X X X X X X X X . X X X X X X X X . X X X X X X X X . X X X X . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . ", -". . . . . . ", -". . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . "}; +". c #A3FF84", +"+ c #77B563", +"@ c #4A4A4A", +"# c #39393B", +"$ c #353537", +"% c #323234", +"& c #2E2E31", +"* c #2C2C2E", +"= c #29292B", +"- c #262628", +"; c #73B15F", +"> c #393939", +", c #6C6C6C", +"' c #626266", +") c #83A479", +"! c #808080", +"~ c #6F6F70", +"{ c #626263", +"] c #585859", +"^ c #4E4E4F", +"/ c #444446", +"( c #3C3C3D", +"_ c #303031", +": c #4D6F42", +"< c #242427", +"[ c #292929", +"} c #1C1C1C", +"| c #9A9A9B", +"1 c #9C9C9E", +"2 c #949495", +"3 c #878787", +"4 c #88A67D", +"5 c #6D6D6D", +"6 c #606060", +"7 c #545454", +"8 c #3F3F3F", +"9 c #353535", +"0 c #2C2C2C", +"a c #1F1F1F", +"b c #44633A", +"c c #0D0D0D", +"d c #030303", +"e c #000000", +"f c #7AB765", +"g c #96B88B", +"h c #A0BE97", +"i c #9EBC94", +"j c #91AF87", +"k c #84A37A", +"l c #7D9B73", +"m c #75936B", +"n c #6C8B62", +"o c #66845B", +"p c #607E55", +"q c #59774F", +"r c #537149", +"s c #4E6C43", +"t c #46653C", +"u c #405F36", +"v c #3B5931", +"w c #35542B", +"x c #538144", +"y c #70AD5B", +"z c #1C1C1D", +"A c #8F8F91", +"B c #ADADAD", +"C c #9A9A9A", +"D c #888888", +"E c #777777", +"F c #666666", +"G c #749269", +"H c #525252", +"I c #474747", +"J c #373737", +"K c #2D2D2D", +"L c #262626", +"M c #1D1D1D", +"N c #141414", +"O c #3D5B33", +"P c #020202", +"Q c #050505", +"R c #9F9FA3", +"S c #A9A9A9", +"T c #9D9D9D", +"U c #828282", +"V c #727272", +"W c #5B5B5B", +"X c #6D8B63", +"Y c #414141", +"Z c #303030", +"` c #272727", +" . c #171717", +".. c #39572F", +"+. c #040404", +"@. c #060606", +"#. c #070707", +"$. c #080808", +"%. c #111111", +"&. c #29292D", +"*. c #506E48", +"=. c #28282C", +"-. c #28282B", +";. c #1F1F22", +">. c #050506", +",. c #79B765", +"'. c #939393", +"). c #A5A5A5", +"!. c #999999", +"~. c #737373", +"{. c #696969", +"]. c #565656", +"^. c #6A885F", +"/. c #464646", +"(. c #3C3C3C", +"_. c #232323", +":. c #1B1B1B", +"<. c #090909", +"[. c #37552C", +"}. c #181818", +"|. c #797979", +"1. c #757575", +"2. c #6B6B6B", +"3. c #6F6F6F", +"4. c #0F0F0F", +"5. c #1E1E1E", +"6. c #98B98C", +"7. c #ABABAB", +"8. c #8B8B8B", +"9. c #FF1818", +"0. c #5C5C5C", +"a. c #67855D", +"b. c #424242", +"c. c #313131", +"d. c #202020", +"e. c #505050", +"f. c #DFDFDF", +"g. c #F4F4F4", +"h. c #F1F1F1", +"i. c #ECECEC", +"j. c #BFBFBF", +"k. c #454546", +"l. c #A6C49C", +"m. c #9F9F9F", +"n. c #7D7D7D", +"o. c #717171", +"p. c #4C0000", +"q. c #4D4D4D", +"r. c #64835A", +"s. c #3D3D3D", +"t. c #343434", +"u. c #242424", +"v. c #1A1A1A", +"w. c #131313", +"x. c #0A0A0A", +"y. c #585858", +"z. c #EAEAEA", +"A. c #FFFFFF", +"B. c #FEFEFE", +"C. c #FBFBFB", +"D. c #E9E9E9", +"E. c #A0BE96", +"F. c #919191", +"G. c #818181", +"H. c #494949", +"I. c #617F57", +"J. c #282828", +"K. c #E6E6E6", +"L. c #F5F5F5", +"M. c #E8E8E8", +"N. c #D8D8D8", +"O. c #4E4E51", +"P. c #A3A3A3", +"Q. c #9BBA91", +"R. c #8A8A8A", +"S. c #7B7B7B", +"T. c #707070", +"U. c #5E7D54", +"V. c #363636", +"W. c #555555", +"X. c #E4E4E4", +"Y. c #D9D9D9", +"Z. c #CECECE", +"`. c #747474", +" + c #94B38A", +".+ c #5C7A51", +"++ c #0E0E0E", +"@+ c #E1E1E1", +"#+ c #FAFAFA", +"$+ c #D0D0D0", +"%+ c #77B463", +"&+ c #92B387", +"*+ c #9BB991", +"=+ c #92B188", +"-+ c #89A77F", +";+ c #809E75", +">+ c #7B9971", +",+ c #547249", +"'+ c #4D6B43", +")+ c #47663D", +"!+ c #436139", +"~+ c #3C5B32", +"{+ c #37562D", +"]+ c #CAE8C0", +"^+ c #D9F8CF", +"/+ c #C9E7BF", +"(+ c #BDDCB3", +"_+ c #6CAA58", +":+ c #484849", +"<+ c #929292", +"[+ c #8EAD84", +"}+ c #646464", +"|+ c #56754C", +"1+ c #515151", +"2+ c #EEEEEE", +"3+ c #D6D6D6", +"4+ c #C5C5C5", +"5+ c #9FBD95", +"6+ c #404040", +"7+ c #8D8D8D", +"8+ c #8AA87F", +"9+ c #676767", +"0+ c #5F5F5F", +"a+ c #506E45", +"b+ c #D3D3D3", +"c+ c #E7E7E7", +"d+ c #BDBDBD", +"e+ c #9EBD94", +"f+ c #898989", +"g+ c #86A57C", +"h+ c #636363", +"i+ c #48673E", +"j+ c #161616", +"k+ c #101010", +"l+ c #4E4E4E", +"m+ c #CCCCCC", +"n+ c #E0E0E0", +"o+ c #C8C8C8", +"p+ c #9AB990", +"q+ c #868686", +"r+ c #858585", +"s+ c #84A279", +"t+ c #3B3B3B", +"u+ c #0C0C0C", +"v+ c #010101", +"w+ c #4F4F4F", +"x+ c #C3C3C3", +"y+ c #96B58C", +"z+ c #333333", +"A+ c #809F76", +"B+ c #5A5A5A", +"C+ c #3A3A3A", +"D+ c #3E3E3E", +"E+ c #5B7951", +"F+ c #484848", +"G+ c #DEDEDE", +"H+ c #BABABA", +"I+ c #989898", +"J+ c #92B088", +"K+ c #7E9C73", +"L+ c #CACACA", +"M+ c #D1D1D1", +"N+ c #CBCBCB", +"O+ c #D7D7D7", +"P+ c #C9C9C9", +"Q+ c #BEDCB4", +"R+ c #EDEDED", +"S+ c #E5E5E5", +"T+ c #8EAC84", +"U+ c #7C7C7C", +"V+ c #2B2B2B", +"W+ c #DBF9D0", +"X+ c #F2F2F2", +"Y+ c #B3B3B3", +"Z+ c #86A47B", +"`+ c #2F2F30", +" @ c #191919", +".@ c #F3F3F3", +"+@ c #FCFCFC", +"@@ c #F9F9F9", +"#@ c #EBEBEB", +"$@ c #C7E6BD", +"%@ c #A8A8A8", +"&@ c #5C7A52", +"*@ c #54724A", +"=@ c #4D6B42", +"-@ c #44623A", +";@ c #79976F", +">@ c #6B8961", +",@ c #2A2A2A", +"'@ c #2E2E2F", +")@ c #535353", +"!@ c #EFEFEF", +"~@ c #D5D5D5", +"{@ c #CDCDCD", +"]@ c #C6C6C6", +"^@ c #AFCDA4", +"/@ c #A4A4A4", +"(@ c #9C9C9C", +"_@ c #626262", +":@ c #66845C", +"<@ c #4B4B4C", +"[@ c #323232", +"}@ c #212121", +"|@ c #CFCFCF", +"1@ c #C0C0C0", +"2@ c #B6B6B6", +"3@ c #ABC9A0", +"4@ c #A7A7A7", +"5@ c #9E9E9E", +"6@ c #969696", +"7@ c #8F8F8F", +"8@ c #6E6E6E", +"9@ c #58764E", +"0@ c #5E7C53", +"a@ c #121212", +"b@ c #F8F8F8", +"c@ c #E3E3E3", +"d@ c #C2C2C2", +"e@ c #B1B1B1", +"f@ c #A7C59C", +"g@ c #A1A1A1", +"h@ c #7E7E7E", +"i@ c #416037", +"j@ c #679C56", +"k@ c #87A57D", +"l@ c #DBDBDB", +"m@ c #AAAAAA", +"n@ c #A2C098", +"o@ c #7F7F7F", +"p@ c #679457", +"q@ c #222222", +"r@ c #BCBCBC", +"s@ c #B5B5B5", +"t@ c #949494", +"u@ c #656565", +"v@ c #2A2A2B", +"w@ c #6D6D6E", +"x@ c #B7B7B7", +"y@ c #D2F0C8", +"z@ c #AFAFAF", +"A@ c #98B78E", +"B@ c #575757", +"C@ c #4C4C4C", +"D@ c #F6F6F6", +"E@ c #D7F6CD", +"F@ c #B8B8B8", +"G@ c #B0B0B0", +"H@ c #8E8E8E", +"I@ c #616161", +"J@ c #669356", +"K@ c #6C8A61", +"L@ c #628058", +"M@ c #5A784F", +"N@ c #527148", +"O@ c #4C6B42", +"P@ c #45643B", +"Q@ c #3E5C34", +"R@ c #4F6E45", +"S@ c #739169", +"T@ c #AECCA4", +"U@ c #ADCCA3", +"V@ c #A0BF96", +"W@ c #9CBA92", +"X@ c #97B68D", +"Y@ c #78966D", +"Z@ c #638159", +"`@ c #537249", +" # c #506F46", +".# c #787878", +"+# c #5C7B52", +"@# c #0B0B0B", +"## c #252525", +"$# c #3A5930", +"%# c #517E41", +" ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . + @ # $ % & * = - ; . . ", +" . . > , ' ) ! ~ { ] ^ / ( _ : < [ . . ", +" . . } | 1 2 3 4 5 6 7 @ 8 9 0 a b c d e e . . ", +" . . . . . . . . . . . . f g h i j k l m n o p q r s t u v w w w x y . . . . . . . . . . . . ", +" . . z A B C D E F G H I 8 J K L M N O d e e e P Q e . . ", +" . . a R S T U V F W X @ Y > Z ` a .c ..e e +.@.#.$.%.&.*.=.-.;.>. . ", +" . ,.'.).!.D ~.{.6 ].^./.(.9 K _.:.N <.[.e }.W |.1.2.3.4.w e e e e . ", +" . 5.6.7.T 8.|.9.9.0.H a.b.> c.[ d. .4.@.w e e.f.g.h.i.j.9.9.e e e e . ", +" . k.l.m.8.n.o.9.9.p.q.r.s.t.0 u.v.w.x.P w e y.z.A.B.C.D.9.9.p.e e e . ", +" . 1 E.F.G.1.5 9.9.p.H.I.> Z J.d. .4.#.e w e ].K.A.L.M.N.9.9.p.e e e . ", +" . O.P.Q.R.S.T.{.9.9.9./.U.V.0 u.} w.x.d e w e W.X.A.z.Y.Z.9.9.9.e e e . ", +" . `.!. +U `., 9.9.9.9.p..+Z ` a .++@.e e w e 7 @+#+@+$+9.9.9.9.p.e e . ", +" . . . . . . %+&+*+=+-+;+>+9.p.p.9.p.q ,+'+)+!+~+{+w w w w n ]+^+/+(+9.p.p.9.p.w _+. . . . . ", +" . :+C <+[+E , }+9.p.@ 9.p.|+[ d. .4.@.e e e w e 1+Y.2+3+4+9.p.5+9.p.e e . ", +" . 6+7+R.8+o.9+0+9.p./.9.p.a+d.}.%.<.P e e e w e e.b+c+Z.d+9.p.e+9.p.5.e . ", +" . J 3 f+g+5 h+9.9.p.Y 9.9.i+j+k+x.+.e e e e w e l+m+n+o+9.9.p.p+9.9.} e . ", +" . t.q+r+s+{.0+9.p.p.t+9.9.p.u+$.+.v+e e e e w e w+b+f.x+9.p.p.y+9.9.p.e . ", +" . z+r+! A+}+B+9.p.8 c.a 9.p.C+Y D+C+D+z+/.c.E+F+m.D.G+H+9.p.I+J+~.9.p.e . ", +" . t.U S.K+6 9.9.p.t+K M 9.p.L+$+$+M+m+N+O+P+Q+G+R+S+o+9.9.p.<+T+3.9.p.e . ", +" . z+U+9.>+0.9.9.p.J V+} 9.p.g.B.B.B.B.B.B.C.W+X+9.L+Y+9.9.p.8.Z+}+9.p.e . ", +" . `+9.9.9.y.9.p.p.z+L @9.p..@B.B.+@@@X+#@n+$@9.9.9.%@9.p.p.G.l y.9.p.e . ", +" . 9.9.9.9.9.9.9.p.9.p.9.p.&@*@=@-@9.p.9.9.9.9.9.9.9.9.9.9.p.9.p.9.p.j Z+;@>@9.p.9.9.9.9.9.. ", +" . p.p.p.p.p.p.p.p.9.9.9.p.V.,@d.N 9.9.9.p.p.p.p.p.p.p.p.p.p.9.9.9.p.G.3.G C+9.9.9.p.p.p.p.. ", +" . '@)@n 9.p.p.Z L :.k+k+9.p.p.!@f.~@{@]@d+^@B /@(@9.p.p.E _@:@a e 9.p.p. . ", +" . <@a.I p.[@,@}@}.++4.-+p.C.M.Y.|@o+1@2@3@4@5@6@7@p.S.8@W.9@$.e e p. . ", +" . } 0@s.t.[ d. @a@x.++4 h.b@c@b+P+d@H+e@f@g@I+F.D h@T.0.t.i@P e e e . ", +" . j@(.V+ @%.u+<.Q u+k@h.X+l@m+x+H+Y+m@n@C F.f+o@T.F H } [.e e e e . ", +" . @9 c.p@t+` } %.%.k+4.q@e+b@X+3+]@r@s@B P.i t@R.! 3.W e.K x.w e e e e . ", +" . [@u@0.>@s.v@w@m@Y+).m.x@y@B.S+{@1@2@z@4@5@A@8.n.8@B+V.q@<.e w e e e e . ", +" . 0 B@C@I.t.L }., |@K.g.D@E@G+x+F@G@4@m.I+H@8+`.I@W.Z @.e e e w e e e e . ", +" . . . . . . J@K@L@M@N@O@P@Q@R@S@5+T@U@3@V@W@X@=+T+8+s+Y@S@Z@`@Q@w w w w w w w w _+. . . . . ", +" . J.@ V. #d. @w.u+Q #.v.C@A+U ! U+.#o.2.F W +#Z .@.v+e e e e w e e e e . ", +" . v.0 }.i@++@##.+.v+e e e w @} q@` ##_.M .$#e e e e e e e e w e e e e . ", +" . P P e %#e e e e e e e e %#e e e e e e e e %#e e e e e e e e %#e e e e . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" "}; diff --git a/WPrefs.app/WindowHandling.c b/WPrefs.app/WindowHandling.c index 252c0b2a..d7c10174 100644 --- a/WPrefs.app/WindowHandling.c +++ b/WPrefs.app/WindowHandling.c @@ -41,7 +41,11 @@ typedef struct _Panel { WMSlider *vsli; WMSlider *hsli; - + + WMFrame *resF; + WMSlider *resS; + WMLabel *resL; + WMFrame *maxiF; WMButton *miconB; WMButton *mdockB; @@ -93,9 +97,31 @@ sliderCallback(WMWidget *w, void *data) } + +static void +resistanceCallback(WMWidget *w, void *data) +{ + _Panel *panel = (_Panel*)data; + char buffer[64]; + int i; + + i = WMGetSliderValue(panel->resS); + + if (i == 0) + WMSetLabelText(panel->resL, "OFF"); + else { + sprintf(buffer, "%i", i); + WMSetLabelText(panel->resL, buffer); + } +} + + static int getPlacement(char *str) { + if (!str) + return 0; + if (strcasecmp(str, "auto")==0 || strcasecmp(str, "smart")==0) return 0; else if (strcasecmp(str, "random")==0) @@ -139,7 +165,11 @@ showData(_Panel *panel) WMSetSliderValue(panel->vsli, y); sliderCallback(NULL, panel); - + + x = GetIntegerForKey("EdgeResistance"); + WMSetSliderValue(panel->resS, x); + resistanceCallback(NULL, panel); + WMSetButtonSelected(panel->tranB, GetBoolForKey("OpenTransientOnOwnerWorkspace")); WMSetButtonSelected(panel->opaqB, GetBoolForKey("OpaqueMove")); @@ -166,6 +196,7 @@ storeData(_Panel *panel) sprintf(y, "%i", WMGetSliderValue(panel->vsli)); arr = PLMakeArrayFromElements(PLMakeString(x), PLMakeString(y), NULL); SetObjectForKey(arr, "WindowPlaceOrigin"); + SetIntegerForKey(WMGetSliderValue(panel->resS), "EdgeResistance"); PLRelease(arr); } @@ -187,27 +218,27 @@ createPanel(Panel *p) /************** Window Placement ***************/ panel->placF = WMCreateFrame(panel->frame); - WMResizeWidget(panel->placF, 270, 150); - WMMoveWidget(panel->placF, 20, 15); + WMResizeWidget(panel->placF, 270, 110); + WMMoveWidget(panel->placF, 20, 10); WMSetFrameTitle(panel->placF, _("Window Placement")); panel->placP = WMCreatePopUpButton(panel->placF); - WMResizeWidget(panel->placP, 195, 20); - WMMoveWidget(panel->placP, 35, 20); + WMResizeWidget(panel->placP, 120, 20); + WMMoveWidget(panel->placP, 15, 20); WMAddPopUpButtonItem(panel->placP, _("Automatic")); WMAddPopUpButtonItem(panel->placP, _("Random")); WMAddPopUpButtonItem(panel->placP, _("Manual")); WMAddPopUpButtonItem(panel->placP, _("Cascade")); panel->porigL = WMCreateLabel(panel->placF); - WMResizeWidget(panel->porigL, 118, 32); - WMMoveWidget(panel->porigL, 5, 60); + WMResizeWidget(panel->porigL, 138, 32); + WMMoveWidget(panel->porigL, 5, 45); WMSetLabelTextAlignment(panel->porigL, WACenter); WMSetLabelText(panel->porigL, _("Placement Origin")); panel->porigvL = WMCreateLabel(panel->placF); - WMResizeWidget(panel->porigvL, 70, 20); - WMMoveWidget(panel->porigvL, 25, 95); + WMResizeWidget(panel->porigvL, 80, 20); + WMMoveWidget(panel->porigvL, 30, 75); WMSetLabelTextAlignment(panel->porigvL, WACenter); color = WMCreateRGBColor(scr, 0x5100, 0x5100, 0x7100, True); @@ -219,16 +250,16 @@ createPanel(Panel *p) swidth = WidthOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); sheight = HeightOfScreen(DefaultScreenOfDisplay(WMScreenDisplay(scr))); - if (120*sheight/swidth < 80*swidth/sheight) { - width = 80*swidth/sheight; - height = 80; + if (120*sheight/swidth < 70*swidth/sheight) { + width = 70*swidth/sheight; + height = 70; } else { height = 120*sheight/swidth; width = 120; } WMResizeWidget(panel->porigF, width, height); - WMMoveWidget(panel->porigF, 125+(120-width)/2, 45+(80-height)/2); - + WMMoveWidget(panel->porigF, 135+(120-width)/2, 20+(70-height)/2); + panel->porigW = WMCreateLabel(panel->porigF); WMResizeWidget(panel->porigW, THUMB_SIZE, THUMB_SIZE); WMMoveWidget(panel->porigW, 2, 2); @@ -237,14 +268,14 @@ createPanel(Panel *p) panel->hsli = WMCreateSlider(panel->placF); WMResizeWidget(panel->hsli, width, 12); - WMMoveWidget(panel->hsli, 125+(120-width)/2, 45+(80-height)/2+height+2); + WMMoveWidget(panel->hsli, 135+(120-width)/2, 20+(70-height)/2+height+2); WMSetSliderAction(panel->hsli, sliderCallback, panel); WMSetSliderMinValue(panel->hsli, 0); WMSetSliderMaxValue(panel->hsli, swidth); panel->vsli = WMCreateSlider(panel->placF); WMResizeWidget(panel->vsli, 12, height); - WMMoveWidget(panel->vsli, 125+(120-width)/2+width+2, 45+(80-height)/2); + WMMoveWidget(panel->vsli, 135+(120-width)/2+width+2, 20+(70-height)/2); WMSetSliderAction(panel->vsli, sliderCallback, panel); WMSetSliderMinValue(panel->vsli, 0); WMSetSliderMaxValue(panel->vsli, sheight); @@ -255,13 +286,13 @@ createPanel(Panel *p) /************** Opaque Move ***************/ panel->opaqF = WMCreateFrame(panel->frame); - WMMoveWidget(panel->opaqF, 300, 15); - WMResizeWidget(panel->opaqF, 205, 125); + WMResizeWidget(panel->opaqF, 205, 110); + WMMoveWidget(panel->opaqF, 300, 10); WMSetFrameTitle(panel->opaqF, _("Opaque Move")); panel->opaqB = WMCreateButton(panel->opaqF, WBTToggle); WMResizeWidget(panel->opaqB, 64, 64); - WMMoveWidget(panel->opaqB, 70, 35); + WMMoveWidget(panel->opaqB, 70, 25); WMSetButtonImagePosition(panel->opaqB, WIPImageOnly); path = LocateImage(NON_OPAQUE_MOVE_PIXMAP); @@ -291,33 +322,53 @@ createPanel(Panel *p) /**************** Account for Icon/Dock ***************/ panel->maxiF = WMCreateFrame(panel->frame); - WMResizeWidget(panel->maxiF, 205, 70); - WMMoveWidget(panel->maxiF, 300, 145); + WMResizeWidget(panel->maxiF, 205, 95); + WMMoveWidget(panel->maxiF, 300, 125); WMSetFrameTitle(panel->maxiF, _("When maximizing...")); panel->miconB = WMCreateSwitchButton(panel->maxiF); - WMResizeWidget(panel->miconB, 185, 20); - WMMoveWidget(panel->miconB, 10, 15); - WMSetButtonText(panel->miconB, _("...do not resize over icons")); + WMResizeWidget(panel->miconB, 185, 30); + WMMoveWidget(panel->miconB, 10, 18); + WMSetButtonText(panel->miconB, _("...do not cover icons")); panel->mdockB = WMCreateSwitchButton(panel->maxiF); - WMResizeWidget(panel->mdockB, 185, 20); - WMMoveWidget(panel->mdockB, 10, 40); + WMResizeWidget(panel->mdockB, 185, 30); + WMMoveWidget(panel->mdockB, 10, 53); - WMSetButtonText(panel->mdockB, _("...do not resize over dock")); + WMSetButtonText(panel->mdockB, _("...do not cover dock")); WMMapSubwidgets(panel->maxiF); - - /**************** Transients On Top ****************/ + + /**************** Edge Resistance ****************/ + + panel->resF = WMCreateFrame(panel->frame); + WMResizeWidget(panel->resF, 270, 45); + WMMoveWidget(panel->resF, 20, 125); + WMSetFrameTitle(panel->resF, _("Edge Resistance")); + + panel->resS = WMCreateSlider(panel->resF); + WMResizeWidget(panel->resS, 200, 15); + WMMoveWidget(panel->resS, 10, 20); + WMSetSliderMinValue(panel->resS, 0); + WMSetSliderMaxValue(panel->resS, 200); + WMSetSliderAction(panel->resS, resistanceCallback, panel); + + panel->resL = WMCreateLabel(panel->resF); + WMResizeWidget(panel->resL, 40, 15); + WMMoveWidget(panel->resL, 220, 20); + + WMMapSubwidgets(panel->resF); + + /**************** Transients on Parent Workspace ****************/ panel->tranF = WMCreateFrame(panel->frame); WMResizeWidget(panel->tranF, 270, 40); - WMMoveWidget(panel->tranF, 20, 175); + WMMoveWidget(panel->tranF, 20, 180); panel->tranB = WMCreateSwitchButton(panel->tranF); WMMoveWidget(panel->tranB, 10, 5); WMResizeWidget(panel->tranB, 250, 30); - WMSetButtonText(panel->tranB, _("Open transients in same workspace as their owners")); + WMSetButtonText(panel->tranB, _("Open dialogs in same workspace as their owners")); WMMapSubwidgets(panel->tranF); diff --git a/WPrefs.app/editmenu.c b/WPrefs.app/editmenu.c new file mode 100644 index 00000000..01948129 --- /dev/null +++ b/WPrefs.app/editmenu.c @@ -0,0 +1,668 @@ +/* editmenu.c - editable menus + * + * WPrefs - Window Maker Preferences Program + * + * Copyright (c) 1999 Alfredo K. Kojima + * + * 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 +#include +#include +#include +#include + +#include "editmenu.h" + +typedef struct W_EditMenuItem { + W_Class widgetClass; + WMView *view; + + struct W_EditMenu *menu; + + char *label; + + WMTextField *textField; + + struct W_EditMenu *submenu; /* if it's a cascade, NULL otherwise */ +} EditMenuItem; + + +typedef struct W_EditMenu { + W_Class widgetClass; + WMView *view; + + struct W_EditMenu *parent; + + char *label; + + int itemCount; + int itemsAlloced; + struct W_EditMenuItem **items; + + int titleHeight; + int itemHeight; + + struct W_EditMenu *next; + struct W_EditMenu *prev; + + /* item dragging */ + int draggedItem; + int dragX, dragY; +} EditMenu; + + + +/******************** WEditMenuItem ********************/ + +static void destroyEditMenuItem(WEditMenuItem *iPtr); +static void paintEditMenuItem(WEditMenuItem *iPtr); + +static void handleItemEvents(XEvent *event, void *data); +static void handleItemActionEvents(XEvent *event, void *data); + + +static W_ViewProcedureTable WEditMenuItemViewProcedures = { + NULL, + NULL, + NULL +}; + + +static W_Class EditMenuItemClass = 0; + + +W_Class +InitEditMenuItem(WMScreen *scr) +{ + /* register our widget with WINGs and get our widget class ID */ + if (!EditMenuItemClass) { + EditMenuItemClass = W_RegisterUserWidget(&WEditMenuItemViewProcedures); + } + + return EditMenuItemClass; +} + + +WEditMenuItem* +WCreateEditMenuItem(WMWidget *parent, char *title) +{ + WEditMenuItem *iPtr; + + if (!EditMenuItemClass) + InitEditMenuItem(WMWidgetScreen(parent)); + + + iPtr = wmalloc(sizeof(WEditMenuItem)); + + memset(iPtr, 0, sizeof(WEditMenuItem)); + + iPtr->widgetClass = EditMenuItemClass; + + iPtr->view = W_CreateView(W_VIEW(parent)); + if (!iPtr->view) { + free(iPtr); + return NULL; + } + iPtr->view->self = iPtr; + + iPtr->label = wstrdup(title); + + WMCreateEventHandler(iPtr->view, ExposureMask|StructureNotifyMask, + handleItemEvents, iPtr); + + WMCreateEventHandler(iPtr->view, ButtonPressMask, handleItemActionEvents, + iPtr); + + return iPtr; +} + + + +static void +paintEditMenuItem(WEditMenuItem *iPtr) +{ + WMScreen *scr = WMWidgetScreen(iPtr); + WMColor *black = scr->black; + Window win = W_VIEW(iPtr)->window; + int w = W_VIEW(iPtr)->size.width; + int h = WMFontHeight(scr->normalFont) + 6; + + if (!iPtr->view->flags.realized) + return; + + XClearWindow(scr->display, win); + + W_DrawRelief(scr, win, 0, 0, w+1, h, WRRaised); + + WMDrawString(scr, win, W_GC(black), scr->normalFont, 5, 3, iPtr->label, + strlen(iPtr->label)); +} + + +static void +handleItemEvents(XEvent *event, void *data) +{ + WEditMenuItem *iPtr = (WEditMenuItem*)data; + + + switch (event->type) { + case Expose: + if (event->xexpose.count!=0) + break; + paintEditMenuItem(iPtr); + break; + + case DestroyNotify: + destroyEditMenuItem(iPtr); + break; + + } +} + + +static void +handleItemActionEvents(XEvent *event, void *data) +{ + WEditMenuItem *iPtr = (WEditMenuItem*)data; + + switch (event->type) { + case ButtonPress: + break; + } +} + + + +static void +destroyEditMenuItem(WEditMenuItem *iPtr) +{ + if (iPtr->label) + free(iPtr->label); + + free(iPtr); +} + + + +/******************** WEditMenu *******************/ + + +static WEditMenu *EditMenuList = NULL; + +static void destroyEditMenu(WEditMenu *mPtr); +static void paintEditMenu(WEditMenu *mPtr, int y); + +static void updateMenuContents(WEditMenu *mPtr); + +static void handleEvents(XEvent *event, void *data); +static void handleActionEvents(XEvent *event, void *data); + +static void handleItemDrag(XEvent *event, void *data); + + +static W_ViewProcedureTable WEditMenuViewProcedures = { + NULL, + NULL, + NULL +}; + + +static W_Class EditMenuClass = 0; + + +W_Class +InitEditMenu(WMScreen *scr) +{ + /* register our widget with WINGs and get our widget class ID */ + if (!EditMenuClass) { + + EditMenuClass = W_RegisterUserWidget(&WEditMenuViewProcedures); + } + + return EditMenuClass; +} + + + +typedef struct { + int flags; + int window_style; + int window_level; + int reserved; + Pixmap miniaturize_pixmap; /* pixmap for miniaturize button */ + Pixmap close_pixmap; /* pixmap for close button */ + Pixmap miniaturize_mask; /* miniaturize pixmap mask */ + Pixmap close_mask; /* close pixmap mask */ + int extra_flags; +} GNUstepWMAttributes; + + +#define GSWindowStyleAttr (1<<0) +#define GSWindowLevelAttr (1<<1) + + +static void +writeGNUstepWMAttr(WMScreen *scr, Window window, GNUstepWMAttributes *attr) +{ + unsigned long data[9]; + + /* handle idiot compilers where array of CARD32 != struct of CARD32 */ + data[0] = attr->flags; + data[1] = attr->window_style; + data[2] = attr->window_level; + data[3] = 0; /* reserved */ + /* The X protocol says XIDs are 32bit */ + data[4] = attr->miniaturize_pixmap; + data[5] = attr->close_pixmap; + data[6] = attr->miniaturize_mask; + data[7] = attr->close_mask; + data[8] = attr->extra_flags; + XChangeProperty(scr->display, window, scr->attribsAtom, scr->attribsAtom, + 32, PropModeReplace, (unsigned char *)data, 9); +} + + +static void +realizeObserver(void *self, WMNotification *not) +{ + WEditMenu *menu = (WEditMenu*)self; + GNUstepWMAttributes attribs; + + memset(&attribs, 0, sizeof(GNUstepWMAttributes)); + attribs.flags = GSWindowStyleAttr|GSWindowLevelAttr; + attribs.window_style = WMBorderlessWindowMask; + attribs.window_level = WMSubmenuWindowLevel; + + writeGNUstepWMAttr(WMWidgetScreen(menu), menu->view->window, &attribs); +} + + +WEditMenu* +WCreateEditMenu(WMScreen *scr, char *title) +{ + WEditMenu *mPtr; + + if (!EditMenuClass) + InitEditMenu(scr); + + + mPtr = wmalloc(sizeof(WEditMenu)); + + memset(mPtr, 0, sizeof(WEditMenu)); + + mPtr->widgetClass = EditMenuClass; + + mPtr->view = W_CreateTopView(scr); + if (!mPtr->view) { + free(mPtr); + return NULL; + } + mPtr->view->self = mPtr; + + WMAddNotificationObserver(realizeObserver, mPtr, + WMViewRealizedNotification, mPtr->view); + + W_SetViewBackgroundColor(mPtr->view, mPtr->view->screen->darkGray); + + mPtr->label = wstrdup(title); + + mPtr->itemsAlloced = 10; + mPtr->items = wmalloc(sizeof(WEditMenuItem*)*mPtr->itemsAlloced); + + WMCreateEventHandler(mPtr->view, ExposureMask|StructureNotifyMask, + handleEvents, mPtr); + + WMCreateEventHandler(mPtr->view, ButtonPressMask,handleActionEvents, mPtr); + + updateMenuContents(mPtr); + + + mPtr->itemHeight = WMFontHeight(scr->normalFont) + 6; + mPtr->titleHeight = WMFontHeight(scr->boldFont) + 8; + + mPtr->draggedItem = -1; + + mPtr->next = EditMenuList; + if (EditMenuList) + EditMenuList->prev = mPtr; + EditMenuList = mPtr; + + return mPtr; +} + + +WEditMenuItem* +WInsertMenuItemWithTitle(WEditMenu *mPtr, char *title, int index) +{ + WEditMenuItem *item; + + item = WCreateEditMenuItem(mPtr, title); + item->menu = mPtr; + + WMCreateEventHandler(item->view, ButtonPressMask|ButtonReleaseMask + |Button1MotionMask, handleItemDrag, item); + + WMMapWidget(item); + + if (index < 0) + index = 0; + else if (index > mPtr->itemCount) + index = mPtr->itemCount; + + if (mPtr->itemCount == mPtr->itemsAlloced) { + WEditMenuItem *newList; + + newList = wmalloc(sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10)); + memset(newList, 0, sizeof(WEditMenuItem*)*(mPtr->itemsAlloced+10)); + + memcpy(newList, mPtr->items, mPtr->itemsAlloced*sizeof(WEditMenuItem*)); + + mPtr->itemsAlloced += 10; + + free(mPtr->items); + + mPtr->items = newList; + } + + if (index < mPtr->itemCount) { + memmove(&mPtr->items[index+1], &mPtr->items[index], + sizeof(WEditMenuItem*)); + mPtr->items[index] = item; + mPtr->itemCount++; + } else { + mPtr->items[mPtr->itemCount++] = item; + } + + updateMenuContents(mPtr); + + return item; +} + + +void +WSetMenuSubmenu(WEditMenu *mPtr, WEditMenu *submenu, WEditMenuItem *item) +{ + item->submenu = submenu; + submenu->parent = mPtr; + + paintEditMenuItem(item); +} + + +void +WRemoveMenuItem(WEditMenu *mPtr, WEditMenuItem *item) +{ + +} + + +static void +updateMenuContents(WEditMenu *mPtr) +{ + WMScreen *scr = WMWidgetScreen(mPtr); + int i; + int newW, newH; + int w; + int iheight = mPtr->itemHeight; + + newW = WMWidthOfString(scr->boldFont, mPtr->label, + strlen(mPtr->label)) + 12 + iheight; + + newH = mPtr->titleHeight; + + for (i = 0; i < mPtr->itemCount; i++) { + w = WMWidthOfString(scr->normalFont, mPtr->items[i]->label, + strlen(mPtr->items[i]->label)) + 5; + if (w > newW) + newW = w; + + W_MoveView(mPtr->items[i]->view, 0, newH); + newH += iheight; + } + + newH--; + + W_ResizeView(mPtr->view, newW, newH); + + for (i = 0; i < mPtr->itemCount; i++) { + W_ResizeView(mPtr->items[i]->view, newW, iheight); + } + + paintEditMenu(mPtr, -1); +} + + +static void +paintMenuTitle(WEditMenu *mPtr) +{ + WMScreen *scr = WMWidgetScreen(mPtr); + WMColor *black = scr->black; + WMColor *white = scr->white; + Window win = W_VIEW(mPtr)->window; + int w = W_VIEW(mPtr)->size.width; + int h = mPtr->titleHeight; + + XFillRectangle(scr->display, win, W_GC(black), 0, 0, w, h); + + W_DrawRelief(scr, win, 0, 0, w+1, h, WRRaised); + + WMDrawString(scr, win, W_GC(white), scr->boldFont, 5, 4, mPtr->label, + strlen(mPtr->label)); +} + + +static void +paintEditMenu(WEditMenu *mPtr, int y) +{ + if (!mPtr->view->flags.realized) + return; + + if (y < mPtr->titleHeight || y < 0) + paintMenuTitle(mPtr); +} + + + +static void +handleEvents(XEvent *event, void *data) +{ + WEditMenu *mPtr = (WEditMenu*)data; + + + switch (event->type) { + case Expose: + paintEditMenu(mPtr, event->xexpose.y); + break; + + case DestroyNotify: + destroyEditMenu(mPtr); + break; + + } +} + + + + +static void +handleActionEvents(XEvent *event, void *data) +{ + WEditMenu *mPtr = (WEditMenu*)data; + + switch (event->type) { + case ButtonPress: + break; + } +} + + +static void +editItemLabel(WEditMenuItem *iPtr) +{ + WMTextField *tPtr; + + tPtr = WMCreateTextField(iPtr); + WMResizeWidget(tPtr, iPtr->view->size.width - 20, + iPtr->view->size.height - 3); + WMMoveWidget(tPtr, 4, 1); + WMSetTextFieldBeveled(tPtr, False); + WMMapWidget(tPtr); + + WMRealizeWidget(tPtr); + + iPtr->textField = tPtr; +} + + +static void +handleItemDrag(XEvent *event, void *data) +{ + WEditMenuItem *iPtr = (WEditMenuItem*)data; + WEditMenu *mPtr = iPtr->menu; + WMScreen *scr = WMWidgetScreen(mPtr); + Bool done = False; + int y; + int i; + int newIdx, oldIdx; + int newY; + + switch (event->type) { + case ButtonPress: + if (WMIsDoubleClick(event)) { + + editItemLabel(iPtr); + + } else if (event->xbutton.button == Button1) { + mPtr->draggedItem = 1; + mPtr->dragX = event->xbutton.x; + mPtr->dragY = event->xbutton.y; + } + return; + case ButtonRelease: + if (event->xbutton.button == Button1) { + mPtr->draggedItem = -1; + } + return; + case MotionNotify: + if (mPtr->draggedItem >= 0) { + if (abs(event->xmotion.y - mPtr->dragY) > 3 + || abs(event->xmotion.x - mPtr->dragX) > 3) { + mPtr->draggedItem = -1; + } else { + return; + } + } else { + return; + } + break; + default: + return; + } + + XRaiseWindow(scr->display, iPtr->view->window); + + XGrabPointer(scr->display, mPtr->view->window, False, + PointerMotionMask|ButtonReleaseMask|ButtonPressMask + |ButtonPressMask, + GrabModeAsync, GrabModeAsync, None, None, CurrentTime); + + y = iPtr->view->pos.y; + + while (!done) { + XEvent ev; + + WMMaskEvent(scr->display, ButtonReleaseMask|PointerMotionMask + |ExposureMask, &ev); + + switch (ev.type) { + case ButtonRelease: + if (ev.xbutton.button == Button1) + done = True; + break; + + case MotionNotify: + y = ev.xbutton.y - mPtr->dragY; + + if (y < mPtr->titleHeight) + y = mPtr->titleHeight; + else if (y > mPtr->view->size.height - mPtr->itemHeight + 1) + y = mPtr->view->size.height - mPtr->itemHeight + 1; + + W_MoveView(iPtr->view, 0, y); + break; + + default: + WMHandleEvent(&ev); + break; + } + } + XUngrabPointer(scr->display, CurrentTime); + + for (oldIdx = 0; oldIdx < mPtr->itemCount; oldIdx++) { + if (mPtr->items[oldIdx] == iPtr) { + break; + } + } + assert(oldIdx < mPtr->itemCount); + + newIdx = (y - mPtr->titleHeight + mPtr->itemHeight/2) / mPtr->itemHeight; + + if (newIdx < 0) + newIdx = 0; + else if (newIdx >= mPtr->itemCount) + newIdx = mPtr->itemCount - 1; + + newY = mPtr->titleHeight + newIdx * mPtr->itemHeight; + for (i = 0; i <= 15; i++) { + W_MoveView(iPtr->view, 0, ((newY*i)/15 + (y - (y*i)/15))); + XFlush(scr->display); + } + + if (oldIdx != newIdx) { + WEditMenuItem *item; + + item = mPtr->items[oldIdx]; + mPtr->items[oldIdx] = mPtr->items[newIdx]; + mPtr->items[newIdx] = item; + + updateMenuContents(mPtr); + } +} + + +static void +destroyEditMenu(WEditMenu *mPtr) +{ + WMRemoveNotificationObserver(mPtr); + + if (mPtr->next) + mPtr->next->prev = mPtr->prev; + if (mPtr->prev) + mPtr->prev->next = mPtr->next; + if (EditMenuList == mPtr) + EditMenuList = mPtr->next; + + if (mPtr->label) + free(mPtr->label); + + if (mPtr->items) + free(mPtr->items); + + free(mPtr); +} diff --git a/WPrefs.app/editmenu.h b/WPrefs.app/editmenu.h new file mode 100644 index 00000000..1d9c76bf --- /dev/null +++ b/WPrefs.app/editmenu.h @@ -0,0 +1,40 @@ +/* editmenu.h - editable menus + * + * WPrefs - Window Maker Preferences Program + * + * Copyright (c) 1999 Alfredo K. Kojima + * + * 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. + */ + + + +typedef struct W_EditMenu WEditMenu; + +typedef struct W_EditMenuItem WEditMenuItem; + + +WEditMenuItem *WCreateEditMenuItem(WMWidget *parent, char *title); + + +WEditMenu *WCreateEditMenu(WMScreen *scr, char *title); + +WEditMenuItem *WInsertMenuItemWithTitle(WEditMenu *mPtr, char *title, + int index); + +void WSetMenuSubmenu(WEditMenu *mPtr, WEditMenu *submenu, WEditMenuItem *item); + +void WRemoveMenuItem(WEditMenu *mPtr, WEditMenuItem *item); diff --git a/WPrefs.app/main.c b/WPrefs.app/main.c index 59cebde7..fc7e8870 100644 --- a/WPrefs.app/main.c +++ b/WPrefs.app/main.c @@ -149,7 +149,7 @@ main(int argc, char **argv) if (getenv("NLSPATH")) bindtextdomain("WPrefs", getenv("NLSPATH")); else - bindtextdomain("WPrefs", NLSDIR); + bindtextdomain("WPrefs", LOCALEDIR); textdomain("WPrefs"); if (!XSupportsLocale()) { @@ -165,7 +165,7 @@ main(int argc, char **argv) wfatal(_("could not open display %s"), XDisplayName(display_name)); exit(0); } -#if 0 +#if 1 XSynchronize(dpy, 1); #endif scr = WMCreateScreen(dpy, DefaultScreen(dpy)); diff --git a/WPrefs.app/po/Makefile.am b/WPrefs.app/po/Makefile.am index 0ea7e291..3c4b5af6 100644 --- a/WPrefs.app/po/Makefile.am +++ b/WPrefs.app/po/Makefile.am @@ -1,10 +1,10 @@ -nlsdir = @NLSDIR@ - CATALOGS = @WPMOFILES@ +nlsdir = $(DESTDIR)$(NLSDIR) + CLEANFILES = $(CATALOGS) -EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po +EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po zh_TW.Big5.po POTFILES = \ $(top_builddir)/WPrefs.app/Configurations.c \ @@ -45,15 +45,15 @@ WPrefs.pot: $(POTFILES) install-data-local: $(CATALOGS) - $(mkinstalldirs) $(DESTDIR)$(nlsdir) - chmod 755 $(DESTDIR)$(nlsdir) + $(mkinstalldirs) $(nlsdir) + chmod 755 $(nlsdir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ - $(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - $(INSTALL) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \ + $(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \ + chmod 755 $(nlsdir)/$$l; \ + chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \ fi; \ done diff --git a/WPrefs.app/po/Makefile.in b/WPrefs.app/po/Makefile.in index e9cd4b81..ef43f81e 100644 --- a/WPrefs.app/po/Makefile.in +++ b/WPrefs.app/po/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -87,13 +87,13 @@ XLIBS = @XLIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ wprefsdir = @wprefsdir@ -nlsdir = @NLSDIR@ - CATALOGS = @WPMOFILES@ +nlsdir = $(DESTDIR)$(NLSDIR) + CLEANFILES = $(CATALOGS) -EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po +EXTRA_DIST = pt.po hr.po fr.po ko.po cs.po ja.po zh_TW.Big5.po POTFILES = $(top_builddir)/WPrefs.app/Configurations.c $(top_builddir)/WPrefs.app/Expert.c $(top_builddir)/WPrefs.app/Focus.c $(top_builddir)/WPrefs.app/Icons.c $(top_builddir)/WPrefs.app/KeyboardSettings.c $(top_builddir)/WPrefs.app/KeyboardShortcuts.c $(top_builddir)/WPrefs.app/Menu.c $(top_builddir)/WPrefs.app/MenuGuru.c $(top_builddir)/WPrefs.app/MenuPreferences.c $(top_builddir)/WPrefs.app/MouseSettings.c $(top_builddir)/WPrefs.app/Paths.c $(top_builddir)/WPrefs.app/Preferences.c $(top_builddir)/WPrefs.app/Text.c $(top_builddir)/WPrefs.app/TextureAndColor.c $(top_builddir)/WPrefs.app/Themes.c $(top_builddir)/WPrefs.app/WPrefs.c $(top_builddir)/WPrefs.app/WindowHandling.c $(top_builddir)/WPrefs.app/Workspace.c $(top_builddir)/WPrefs.app/main.c $(top_builddir)/WPrefs.app/xmodifier.c @@ -219,15 +219,15 @@ WPrefs.pot: $(POTFILES) fi install-data-local: $(CATALOGS) - $(mkinstalldirs) $(DESTDIR)$(nlsdir) - chmod 755 $(DESTDIR)$(nlsdir) + $(mkinstalldirs) $(nlsdir) + chmod 755 $(nlsdir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ - $(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - $(INSTALL) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \ + $(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \ + chmod 755 $(nlsdir)/$$l; \ + chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WPrefs.mo; \ fi; \ done diff --git a/WPrefs.app/po/README b/WPrefs.app/po/README index 2d23710a..f68f5ef9 100644 --- a/WPrefs.app/po/README +++ b/WPrefs.app/po/README @@ -10,3 +10,4 @@ fr.po French Bastien NOCERA ko.po Korean Byeong-Chan, Kim cs.po Czech David ©auer ja.po Japanese Kazuhide Takahashi +zh_TW.Big5.po Chinese Li Wei Jih diff --git a/WPrefs.app/po/cs.po b/WPrefs.app/po/cs.po index b9003332..50836884 100644 --- a/WPrefs.app/po/cs.po +++ b/WPrefs.app/po/cs.po @@ -5,8 +5,8 @@ # Èt pro 3 20:38:36 CET 1998 David Sauer msgid "" msgstr "" -"Project-Id-Version: WPrefs 0.9 (WindowMaker 0.50.x)\n" -"POT-Creation-Date: 1999-01-11 07:20+0100\n" +"Project-Id-Version: WPrefs 0.10 (WindowMaker 0.51.0)\n" +"POT-Creation-Date: 1999-01-29 06:48+0100\n" "PO-Revision-Date: 1999-01-11 07:37+01:00\n" "Last-Translator: David Sauer \n" "Language-Team: czech \n" @@ -15,7 +15,7 @@ msgstr "" "Content-Transfer-Encoding: unknown\n" #: ../../WPrefs.app/Configurations.c:142 ../../WPrefs.app/Configurations.c:148 -#: ../../WPrefs.app/MouseSettings.c:510 ../../WPrefs.app/WindowHandling.c:274 +#: ../../WPrefs.app/MouseSettings.c:526 ../../WPrefs.app/WindowHandling.c:274 #: ../../WPrefs.app/WindowHandling.c:286 ../../WPrefs.app/Workspace.c:71 #: ../../WPrefs.app/Workspace.c:77 #, c-format @@ -45,10 +45,10 @@ msgstr "Rychlost zm #: ../../WPrefs.app/MenuPreferences.c:135 #: ../../WPrefs.app/MenuPreferences.c:146 #: ../../WPrefs.app/MenuPreferences.c:174 -#: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:538 -#: ../../WPrefs.app/MouseSettings.c:549 ../../WPrefs.app/MouseSettings.c:604 -#: ../../WPrefs.app/MouseSettings.c:615 ../../WPrefs.app/MouseSettings.c:651 -#: ../../WPrefs.app/MouseSettings.c:666 ../../WPrefs.app/MouseSettings.c:682 +#: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:554 +#: ../../WPrefs.app/MouseSettings.c:565 ../../WPrefs.app/MouseSettings.c:627 +#: ../../WPrefs.app/MouseSettings.c:638 ../../WPrefs.app/MouseSettings.c:674 +#: ../../WPrefs.app/MouseSettings.c:689 ../../WPrefs.app/MouseSettings.c:705 #: ../../WPrefs.app/WPrefs.c:403 ../../WPrefs.app/WPrefs.c:421 #, c-format msgid "could not load icon file %s" @@ -84,7 +84,7 @@ msgstr "Ditherovat na 8bpp" #: ../../WPrefs.app/Configurations.c:369 msgid "Disable dithering in any visual/depth" -msgstr "Zaka¾ jakékoli ditherování" +msgstr "Zakázat jakékoli ditherování" #: ../../WPrefs.app/Configurations.c:390 msgid "More colors for applications" @@ -112,7 +112,7 @@ msgstr "Pou #: ../../WPrefs.app/Expert.c:73 msgid "Disable cycling color highlighting of icons." -msgstr "Zaka¾ rotaci barev pøi zvýraznìní ikon" +msgstr "Zakázat rotaci barev pro zvýraznìní ikon" #: ../../WPrefs.app/Expert.c:103 msgid "Expert User Preferences" @@ -132,9 +132,7 @@ msgstr "chybn msgid "" "Click on the window to set\n" "keyboard input focus." -msgstr "" -"Click on the window to set\n" -"keyboard input focus." +msgstr "«uk my¹í zamìøí okno." #: ../../WPrefs.app/Focus.c:194 msgid "" @@ -142,7 +140,7 @@ msgid "" "the window under the mouse pointer,\n" "including the root window." msgstr "" -"Nastav zamìøení vstupu\n" +"Nastaví zamìøení vstupu\n" "na okno pod ukazatelem my¹i.\n" "(vèetnì hlavního okna)" @@ -152,7 +150,7 @@ msgid "" "the window under the mouse pointer,\n" "except the root window." msgstr "" -"Nastav zamìøení vstupu\n" +"Nastaví zamìøení vstupu\n" "na okno pod ukazatelem my¹i.\n" "(mimo hlavního okna)" @@ -222,7 +220,7 @@ msgstr "V #: ../../WPrefs.app/Icons.c:238 msgid "3D-flipping" -msgstr "3D-salta" +msgstr "3D salta" #: ../../WPrefs.app/Icons.c:239 msgid "None" @@ -230,7 +228,7 @@ msgstr " #: ../../WPrefs.app/Icons.c:247 msgid "Icon Display" -msgstr "Zobrazení Ikony" +msgstr "Zobrazení ikon" #: ../../WPrefs.app/Icons.c:252 msgid "Auto-arrange icons" @@ -258,14 +256,14 @@ msgstr "Rychlost opakov #: ../../WPrefs.app/KeyboardSettings.c:153 msgid "Type here to test" -msgstr "Zkuste klávesnici zde" +msgstr "Zkuste zde" #: ../../WPrefs.app/KeyboardSettings.c:172 msgid "Keyboard Preferences" msgstr "Nastavení klávesnice" -#: ../../WPrefs.app/KeyboardShortcuts.c:183 ../../WPrefs.app/Menu.c:932 -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/MenuGuru.c:263 +#: ../../WPrefs.app/KeyboardShortcuts.c:183 ../../WPrefs.app/Menu.c:934 +#: ../../WPrefs.app/MenuGuru.c:263 msgid "Cancel" msgstr "Nic" @@ -274,8 +272,8 @@ msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." msgstr "Stisknìte po¾adované klávesy nebo pou¾ijete \"Nic\"." #: ../../WPrefs.app/KeyboardShortcuts.c:204 -#: ../../WPrefs.app/KeyboardShortcuts.c:444 ../../WPrefs.app/Menu.c:944 -#: ../../WPrefs.app/Menu.c:1166 +#: ../../WPrefs.app/KeyboardShortcuts.c:444 ../../WPrefs.app/Menu.c:946 +#: ../../WPrefs.app/Menu.c:1168 msgid "Capture" msgstr "Snímat" @@ -342,7 +340,7 @@ msgstr "P #: ../../WPrefs.app/KeyboardShortcuts.c:388 msgid "Select active window" -msgstr "Vyber okno" +msgstr "Vybrat okno" #: ../../WPrefs.app/KeyboardShortcuts.c:389 msgid "Focus next window" @@ -370,43 +368,43 @@ msgstr "P #: ../../WPrefs.app/KeyboardShortcuts.c:395 msgid "Switch to workspace 1" -msgstr "Pøepni na plochu 1" +msgstr "Pøepnout na plochu 1" #: ../../WPrefs.app/KeyboardShortcuts.c:396 msgid "Switch to workspace 2" -msgstr "Pøepni na plochu 2" +msgstr "Pøepnout na plochu 2" #: ../../WPrefs.app/KeyboardShortcuts.c:397 msgid "Switch to workspace 3" -msgstr "Pøepni na plochu 3" +msgstr "Pøepnout na plochu 3" #: ../../WPrefs.app/KeyboardShortcuts.c:398 msgid "Switch to workspace 4" -msgstr "Pøepni na plochu 4" +msgstr "Pøepnout na plochu 4" #: ../../WPrefs.app/KeyboardShortcuts.c:399 msgid "Switch to workspace 5" -msgstr "Pøepni na plochu 5" +msgstr "Pøepnout na plochu 5" #: ../../WPrefs.app/KeyboardShortcuts.c:400 msgid "Switch to workspace 6" -msgstr "Pøepni na plochu 6" +msgstr "Pøepnout na plochu 6" #: ../../WPrefs.app/KeyboardShortcuts.c:401 msgid "Switch to workspace 7" -msgstr "Pøepni na plochu 7" +msgstr "Pøepnout na plochu 7" #: ../../WPrefs.app/KeyboardShortcuts.c:402 msgid "Switch to workspace 8" -msgstr "Pøepni na plochu 8" +msgstr "Pøepnout na plochu 8" #: ../../WPrefs.app/KeyboardShortcuts.c:403 msgid "Switch to workspace 9" -msgstr "Pøepni na plochu 9" +msgstr "Pøepnout na plochu 9" #: ../../WPrefs.app/KeyboardShortcuts.c:404 msgid "Switch to workspace 10" -msgstr "Pøepni na plochu 10" +msgstr "Pøepnout na plochu 10" #: ../../WPrefs.app/KeyboardShortcuts.c:405 msgid "Shortcut for window 1" @@ -438,15 +436,15 @@ msgstr "Sponku v #: ../../WPrefs.app/KeyboardShortcuts.c:413 msgid "Toggle keyboard language" -msgstr "Nastavit jazyk pro klávesnici" +msgstr "Zmìnit klávesnici" -#: ../../WPrefs.app/KeyboardShortcuts.c:427 ../../WPrefs.app/Menu.c:1155 +#: ../../WPrefs.app/KeyboardShortcuts.c:427 ../../WPrefs.app/Menu.c:1157 msgid "Shortcut" msgstr "Zkratka" #: ../../WPrefs.app/KeyboardShortcuts.c:438 msgid "Clear" -msgstr "Vyma¾" +msgstr "Vymazat" #: ../../WPrefs.app/KeyboardShortcuts.c:499 msgid "Keyboard Shortcut Preferences" @@ -460,7 +458,7 @@ msgstr "Mana msgid "Program to open files" msgstr "Program na otvírání souborù" -#: ../../WPrefs.app/Menu.c:377 ../../WPrefs.app/Menu.c:1142 +#: ../../WPrefs.app/Menu.c:377 ../../WPrefs.app/Menu.c:1144 msgid "Program to Run" msgstr "Spustit program" @@ -481,150 +479,175 @@ msgstr "Extern msgid "Workspaces" msgstr "Pracovní plochy" -#: ../../WPrefs.app/Menu.c:1026 ../../WPrefs.app/Menu.c:1041 +#: ../../WPrefs.app/Menu.c:1028 ../../WPrefs.app/Menu.c:1043 msgid "Commands" msgstr "Pøíkazy" -#: ../../WPrefs.app/Menu.c:1027 ../../WPrefs.app/Menu.c:1042 +#: ../../WPrefs.app/Menu.c:1029 ../../WPrefs.app/Menu.c:1044 msgid "Add Command" msgstr "Pøidat pøíkaz" -#: ../../WPrefs.app/Menu.c:1028 ../../WPrefs.app/Menu.c:1043 +#: ../../WPrefs.app/Menu.c:1030 ../../WPrefs.app/Menu.c:1045 msgid "Add Submenu" msgstr "Pøidat podmenu" -#: ../../WPrefs.app/Menu.c:1029 ../../WPrefs.app/Menu.c:1044 +#: ../../WPrefs.app/Menu.c:1031 ../../WPrefs.app/Menu.c:1046 msgid "Add External Menu" msgstr "Pøidat externí menu" -#: ../../WPrefs.app/Menu.c:1030 ../../WPrefs.app/Menu.c:1045 +#: ../../WPrefs.app/Menu.c:1032 ../../WPrefs.app/Menu.c:1047 msgid "Add Workspace Menu" msgstr "Pøidat menu ploch" -#: ../../WPrefs.app/Menu.c:1031 ../../WPrefs.app/Menu.c:1046 -msgid "Remove Item" -msgstr "Odstraò polo¾ku" - -#: ../../WPrefs.app/Menu.c:1032 ../../WPrefs.app/Menu.c:1047 -msgid "Cut Item" -msgstr "Vyøízni polo¾ku" - #: ../../WPrefs.app/Menu.c:1033 ../../WPrefs.app/Menu.c:1048 -msgid "Copy Item" -msgstr "Zkopíruj polo¾ku" +msgid "Remove Item" +msgstr "Odstranit polo¾ku" #: ../../WPrefs.app/Menu.c:1034 ../../WPrefs.app/Menu.c:1049 -msgid "Paste Item" -msgstr "Vlo¾ polo¾ku" +msgid "Cut Item" +msgstr "Vyøíznout polo¾ku" -#: ../../WPrefs.app/Menu.c:1078 +#: ../../WPrefs.app/Menu.c:1035 ../../WPrefs.app/Menu.c:1050 +msgid "Copy Item" +msgstr "Zkopírovat polo¾ku" + +#: ../../WPrefs.app/Menu.c:1036 ../../WPrefs.app/Menu.c:1051 +msgid "Paste Item" +msgstr "Vlo¾it polo¾ku" + +#: ../../WPrefs.app/Menu.c:1080 msgid "Label" msgstr "Oznaèení" -#: ../../WPrefs.app/Menu.c:1091 +#: ../../WPrefs.app/Menu.c:1093 msgid "Command" msgstr "Pøíkaz" -#: ../../WPrefs.app/Menu.c:1096 -msgid "Run Program" -msgstr "Spus» program" - -#: ../../WPrefs.app/Menu.c:1097 -msgid "Arrange Icons" -msgstr "Srovnej ikony" - #: ../../WPrefs.app/Menu.c:1098 -msgid "Hide Others" -msgstr "Skryj ostatní" +msgid "Run Program" +msgstr "Spustit program" #: ../../WPrefs.app/Menu.c:1099 -msgid "Show All Windows" -msgstr "Uka¾ v¹echna okna" +msgid "Arrange Icons" +msgstr "Srovnat ikony" #: ../../WPrefs.app/Menu.c:1100 +msgid "Hide Others" +msgstr "Skrýt ostatní" + +#: ../../WPrefs.app/Menu.c:1101 +msgid "Show All Windows" +msgstr "Ukázat v¹echna okna" + +#: ../../WPrefs.app/Menu.c:1102 msgid "Exit WindowMaker" msgstr "Ukonèit mana¾era oken" -#: ../../WPrefs.app/Menu.c:1101 +#: ../../WPrefs.app/Menu.c:1103 msgid "Exit X Session" msgstr "Ukonèit sezení X" -#: ../../WPrefs.app/Menu.c:1102 -msgid "Start window manager" -msgstr "Odstartovat mana¾er oken" - -#: ../../WPrefs.app/Menu.c:1103 -msgid "Restart WindowMaker" -msgstr "RestartWindowMakeru" - #: ../../WPrefs.app/Menu.c:1104 +msgid "Start window manager" +msgstr "Odstartovat jiný mana¾er" + +#: ../../WPrefs.app/Menu.c:1105 +msgid "Restart WindowMaker" +msgstr "Restart WindowMakeru" + +#: ../../WPrefs.app/Menu.c:1106 msgid "Save Session" msgstr "Ulo¾it stav sezení" -#: ../../WPrefs.app/Menu.c:1105 +#: ../../WPrefs.app/Menu.c:1107 msgid "Clear Session" msgstr "Vymazat sezení" -#: ../../WPrefs.app/Menu.c:1106 +#: ../../WPrefs.app/Menu.c:1108 msgid "Refresh Screen" msgstr "Obnovit obrazovku" -#: ../../WPrefs.app/Menu.c:1107 +#: ../../WPrefs.app/Menu.c:1109 msgid "Info Panel" msgstr "Informace" -#: ../../WPrefs.app/Menu.c:1108 +#: ../../WPrefs.app/Menu.c:1110 msgid "Legal Panel" msgstr "Copyright" -#: ../../WPrefs.app/Menu.c:1116 +#: ../../WPrefs.app/Menu.c:1118 msgid "Open workspace menu" msgstr "Otevøít menu ploch" -#: ../../WPrefs.app/Menu.c:1123 +#: ../../WPrefs.app/Menu.c:1125 msgid "No confirmation panel" msgstr "Bez ukonèovacího dialogu" -#: ../../WPrefs.app/Menu.c:1129 +#: ../../WPrefs.app/Menu.c:1131 msgid "Menu Path/Directory List" msgstr "Cesta k menu/adresáø" -#: ../../WPrefs.app/Menu.c:1174 +#: ../../WPrefs.app/Menu.c:1176 msgid "Ask help to the Guru" msgstr "Zeptat se Mistra" -#: ../../WPrefs.app/Menu.c:1294 -msgid "" -"The format of the current menu in ~/G/D/WMRootMenu is not supported by " -"WPrefs. A new menu will be created.\n" -"You can also replace ~/G/D/WMRootMenu with ~/G/L/W/plmenu to get the default " -"menu." -msgstr "" -"Aktuální formát menu v ~/G/D/WMRootMenu není podporován programem WPrefs. " -"Bude vytvoøeno nové menu.\n" -"Standardní menu získáte pøíkazem \"cp ~/G/L/W/plmenu ~/G/D/WMRootMenu\"." +#. if there is a localized plmenu for the tongue put it's filename here +#: ../../WPrefs.app/Menu.c:1287 ../../WPrefs.app/Menu.c:1294 +#, c-format +msgid "%s/Library/WindowMaker/plmenu" +msgstr "%s/Library/WindowMaker/plmenu" -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/Menu.c:1304 +#: ../../WPrefs.app/Menu.c:1302 ../../WPrefs.app/MouseSettings.c:146 +#: ../../WPrefs.app/MouseSettings.c:169 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:572 +#: ../../WPrefs.app/WPrefs.c:582 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 +msgid "Error" +msgstr "Chyba" + +#: ../../WPrefs.app/Menu.c:1302 +msgid "Could not copy default plmenu file from ~/GNUstep/Library/WindowMaker" +msgstr "Standardní menu nelze ze souboru plmenu z adresáøe ~/GNUstep/Library/WindowMaker nainstalovat" + +#: ../../WPrefs.app/Menu.c:1304 ../../WPrefs.app/Menu.c:1354 +#: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 +#: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:148 +#: ../../WPrefs.app/MouseSettings.c:171 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:574 +#: ../../WPrefs.app/WPrefs.c:584 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:597 ../../WPrefs.app/WPrefs.c:614 +#: ../../WPrefs.app/WPrefs.c:619 +msgid "OK" +msgstr "OK" + +#: ../../WPrefs.app/Menu.c:1339 +msgid "" +"The format of the menu in ~/G/D/WMRootMenu is not recognized by WPrefs. It " +"might be in a format different than the one supported by WPrefs or contain a " +"syntax error. Do you want to continue using the current menu to edit it by " +"hand later or replace it with a default menu in the new format?" +msgstr "Formát menu v souboru ~/G/D/WMRootMenu nebyl rozposnán. Mù¾e být rozdílný od podporovaných formátù, nebo mù¾e obsahovat syntaktickou chybu. Chcete pokraèovat s pou¾itím souèasného menu a opravit ho pozdìji, nebo má být nainstalováno menu v novém formátu ?" + +#: ../../WPrefs.app/Menu.c:1346 ../../WPrefs.app/Menu.c:1353 #: ../../WPrefs.app/WPrefs.c:597 msgid "Warning" msgstr "Varování" -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/Menu.c:1305 -#: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 -#: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:156 -#: ../../WPrefs.app/Text.c:181 ../../WPrefs.app/Themes.c:98 -#: ../../WPrefs.app/WPrefs.c:558 ../../WPrefs.app/WPrefs.c:563 -#: ../../WPrefs.app/WPrefs.c:574 ../../WPrefs.app/WPrefs.c:584 -#: ../../WPrefs.app/WPrefs.c:590 ../../WPrefs.app/WPrefs.c:597 -#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 -msgid "OK" -msgstr "OK" +#: ../../WPrefs.app/Menu.c:1346 +msgid "Keep current menu" +msgstr "Ponechat aktuální menu" -#: ../../WPrefs.app/Menu.c:1304 +#: ../../WPrefs.app/Menu.c:1347 +msgid "Install default menu" +msgstr "Instalovat standardní menu" + +#: ../../WPrefs.app/Menu.c:1353 msgid "Any changes made in this section will not be saved" msgstr "Jakékoli zmìny v této sekci budou zru¹eny" -#: ../../WPrefs.app/Menu.c:1369 +#: ../../WPrefs.app/Menu.c:1419 msgid "Applications Menu Definition" msgstr "Definice menu aplikací" @@ -754,7 +777,7 @@ msgstr "Rychlost posunu menu" #: ../../WPrefs.app/MenuPreferences.c:161 msgid "Submenu Alignment" -msgstr "Zarovnání submenu" +msgstr "Zarovnání podmenu" #: ../../WPrefs.app/MenuPreferences.c:204 msgid "" @@ -772,20 +795,11 @@ msgstr "Posouvat menu p msgid "Menu Preferences" msgstr "Nastavení menu" -#: ../../WPrefs.app/MouseSettings.c:148 -#, c-format -msgid "Accel.: %.2f" -msgstr "Zrychl.: %.2f" +#: ../../WPrefs.app/MouseSettings.c:147 +msgid "Invalid mouse acceleration value. Must be a positive real value." +msgstr "Chybná hodnota pro zrychlení my¹i. Má být kladné reálné èíslo." -#: ../../WPrefs.app/MouseSettings.c:154 ../../WPrefs.app/Text.c:181 -#: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:558 -#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:572 -#: ../../WPrefs.app/WPrefs.c:582 ../../WPrefs.app/WPrefs.c:590 -#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 -msgid "Error" -msgstr "Chyba" - -#: ../../WPrefs.app/MouseSettings.c:155 +#: ../../WPrefs.app/MouseSettings.c:170 msgid "" "Invalid mouse acceleration threshold value. Must be the number of pixels to " "travel before accelerating." @@ -793,18 +807,18 @@ msgstr "" "Chybná hodnota pro práh zrychlení my¹i. Zadejte èíslo oznaèující poèet " "pixelù pøed akcelarecí." -#: ../../WPrefs.app/MouseSettings.c:209 +#: ../../WPrefs.app/MouseSettings.c:225 #, c-format msgid "mouse button %s not supported by WPrefs." msgstr "tlaèítko my¹i %s není podporováno." -#: ../../WPrefs.app/MouseSettings.c:243 ../../WPrefs.app/MouseSettings.c:254 -#: ../../WPrefs.app/MouseSettings.c:265 +#: ../../WPrefs.app/MouseSettings.c:259 ../../WPrefs.app/MouseSettings.c:270 +#: ../../WPrefs.app/MouseSettings.c:281 #, c-format msgid "bad value %s for option %s" msgstr "chybná hodnota %s pro volbu %s" -#: ../../WPrefs.app/MouseSettings.c:325 +#: ../../WPrefs.app/MouseSettings.c:341 #, c-format msgid "" "modifier key %s for option ModifierKey was not recognized. Using %s as " @@ -812,66 +826,70 @@ msgid "" msgstr "" "modifikátor klávesy %s pro volbu \"ModifierKey\" není znám. Pou¾ívám %s." -#: ../../WPrefs.app/MouseSettings.c:350 +#: ../../WPrefs.app/MouseSettings.c:366 msgid "could not retrieve keyboard modifier mapping" msgstr "nelze pøevzít mapování modifikátorù kláves" -#: ../../WPrefs.app/MouseSettings.c:497 +#: ../../WPrefs.app/MouseSettings.c:513 msgid "Mouse Speed" msgstr "Rychlost my¹i" -#: ../../WPrefs.app/MouseSettings.c:564 +#: ../../WPrefs.app/MouseSettings.c:575 +msgid "Acceler.:" +msgstr "Zrychl.:" + +#: ../../WPrefs.app/MouseSettings.c:587 msgid "Threshold:" msgstr "Mez:" -#: ../../WPrefs.app/MouseSettings.c:579 +#: ../../WPrefs.app/MouseSettings.c:602 msgid "Double-Click Delay" msgstr "Prodleva pro dvojité »uknutí" -#: ../../WPrefs.app/MouseSettings.c:623 +#: ../../WPrefs.app/MouseSettings.c:646 msgid "Test" msgstr "Test" -#: ../../WPrefs.app/MouseSettings.c:633 +#: ../../WPrefs.app/MouseSettings.c:656 msgid "Workspace Mouse Actions" msgstr "Akce my¹í" -#: ../../WPrefs.app/MouseSettings.c:638 +#: ../../WPrefs.app/MouseSettings.c:661 msgid "Disable mouse actions" msgstr "Zaka¾ akce my¹í" -#: ../../WPrefs.app/MouseSettings.c:691 +#: ../../WPrefs.app/MouseSettings.c:714 msgid "Applications menu" msgstr "Menu aplikací" -#: ../../WPrefs.app/MouseSettings.c:697 +#: ../../WPrefs.app/MouseSettings.c:720 msgid "Window list menu" msgstr "Seznam oken" -#: ../../WPrefs.app/MouseSettings.c:703 +#: ../../WPrefs.app/MouseSettings.c:726 msgid "Select windows" -msgstr "Vyber okna" +msgstr "Vyberte okna" -#: ../../WPrefs.app/MouseSettings.c:738 +#: ../../WPrefs.app/MouseSettings.c:761 msgid "Mouse Grab Modifier" msgstr "Modifikátor pro my¹" -#: ../../WPrefs.app/MouseSettings.c:772 +#: ../../WPrefs.app/MouseSettings.c:795 #, c-format msgid "could not create %s" msgstr "nelze vytvoøit \"%s\"" -#: ../../WPrefs.app/MouseSettings.c:788 +#: ../../WPrefs.app/MouseSettings.c:811 #, c-format msgid "could not create temporary file %s" msgstr "nelze vytvoøit doèasný soubor %s" -#: ../../WPrefs.app/MouseSettings.c:813 +#: ../../WPrefs.app/MouseSettings.c:836 #, c-format msgid "could not rename file %s to %s\n" msgstr "soubor %s nelze pøejmenovat na %s\n" -#: ../../WPrefs.app/MouseSettings.c:896 +#: ../../WPrefs.app/MouseSettings.c:919 msgid "Mouse Preferences" msgstr "Nastavení my¹i" @@ -937,7 +955,7 @@ msgstr "nekompletn #: ../../WPrefs.app/Preferences.c:190 msgid "miniwindow titles" -msgstr "ikony" +msgstr "titulky minioken" #: ../../WPrefs.app/Preferences.c:191 msgid "application/dock icons" @@ -949,7 +967,7 @@ msgstr "P #: ../../WPrefs.app/Preferences.c:210 msgid "Keep keyboard language status for each window." -msgstr "Pro ka¾dé okno pamatovat nastavení jazyka." +msgstr "Pro ka¾dé okno pamatovat nastavení klávesnice." #: ../../WPrefs.app/Preferences.c:231 msgid "Miscellaneous Ergonomic Preferences" @@ -978,7 +996,7 @@ msgstr "Font polo #: ../../WPrefs.app/Text.c:265 msgid "Icon Title Font" -msgstr "Font titulkù ikon" +msgstr "Font titulku ikon" #: ../../WPrefs.app/Text.c:266 msgid "Clip Title Font" @@ -1185,11 +1203,11 @@ msgstr "V #: ../../WPrefs.app/WPrefs.c:237 msgid "Save" -msgstr "Ulo¾" +msgstr "Ulo¾it" #: ../../WPrefs.app/WPrefs.c:243 msgid "Close" -msgstr "Uzavøi" +msgstr "Uzavøít" #: ../../WPrefs.app/WPrefs.c:260 msgid "Window Maker Preferences Utility" @@ -1222,11 +1240,11 @@ msgstr "nelze naj #: ../../WPrefs.app/WPrefs.c:474 #, c-format msgid "could not load image file %s:%s" -msgstr "nelze naèíst soubor sobrázkem %s:%s" +msgstr "nelze naèíst soubor s obrázkem %s:%s" #: ../../WPrefs.app/WPrefs.c:493 msgid "Loading Window Maker configuration files..." -msgstr "Ètu konfiguraèní soubory Window Makeru" +msgstr "Konfiguraèní soubory Window Makeru se naèítají..." #: ../../WPrefs.app/WPrefs.c:497 msgid "Initializing configuration panels..." @@ -1237,7 +1255,10 @@ msgid "" "WPrefs is free software and is distributed WITHOUT ANY WARRANTY under the " "terms of the GNU General Public License. Redistribution of the icons in this " "program separately from the program is prohibited." -msgstr "Program WPrefs je volnì ¹iøitelný software, který je distribuován BEZ JAKÉKOLI ZÁRUKY pod Obecnou Veøejnou Licencí GNU. Redistribuce ikon z tohoto programu bez programu samotného je zakázána." +msgstr "" +"Program WPrefs je volnì ¹iøitelný software, který je distribuován BEZ " +"JAKÉKOLI ZÁRUKY pod Obecnou Veøejnou Licencí GNU. Redistribuce ikon z tohoto " +"programu bez programu samotného není povolena." #: ../../WPrefs.app/WPrefs.c:557 ../../WPrefs.app/WPrefs.c:613 #, c-format @@ -1261,7 +1282,9 @@ msgstr "Zajist msgid "" "Could not extract version from Window Maker. Make sure it is correctly " "installed and is in your PATH environment variable." -msgstr "Od Window Makeru nelze získat èíslo verze. Zjistìte, je-li správnì instalován a je v prohledávaných adresáøích." +msgstr "" +"Od Window Makeru nelze získat èíslo verze. Zjistìte, je-li správnì " +"instalován a je v prohledávaných adresáøích." #: ../../WPrefs.app/WPrefs.c:583 msgid "" @@ -1290,8 +1313,8 @@ msgstr "" "podporován." #: ../../WPrefs.app/WPrefs.c:602 -msgid "could not run \"wmaker -global_defaults_path\"." -msgstr "nelze provést \"wmaker -global_defaults_path\"" +msgid "could not run \"wmaker --global_defaults_path\"." +msgstr "nelze provést \"wmaker --global_defaults_path\"" #: ../../WPrefs.app/WPrefs.c:617 #, c-format @@ -1357,8 +1380,8 @@ msgid "...do not resize over dock" msgstr "... nezvìt¹ovat pøes dok" #: ../../WPrefs.app/WindowHandling.c:320 -msgid "Keep transients above their owners" -msgstr "Dialogy dr¾et nad vlastníky" +msgid "Open transients in same workspace as their owners" +msgstr "Otevøít dialogy na stejné plo¹e, jako je vlastník" #: ../../WPrefs.app/WindowHandling.c:347 msgid "Window Handling Preferences" @@ -1376,11 +1399,11 @@ msgstr "t msgid "" "switch to first workspace when switching past the last workspace and " "vice-versa" -msgstr "za poslední plochou pøepni opìt na první a opaènì" +msgstr "za poslední plochou pøepnout na první a opaènì" #: ../../WPrefs.app/Workspace.c:210 msgid "create a new workspace when switching past the last workspace." -msgstr "za poslední plochou vytvoø pøi pøepnutí novou." +msgstr "za poslední plochou vytvoøit pøi pøepnutí novou." #: ../../WPrefs.app/Workspace.c:218 msgid "Dock/Clip" @@ -1388,43 +1411,47 @@ msgstr "Dok/Sponka" #: ../../WPrefs.app/Workspace.c:287 msgid "Workspace Preferences" -msgstr "Nastavení pracovní plochy " +msgstr "Nastavení pracovní plochy" -#: ../../WPrefs.app/main.c:72 +#: ../../WPrefs.app/main.c:71 #, c-format msgid "usage: %s [options]\n" msgstr "pou¾ití: %s [volby]\n" -#: ../../WPrefs.app/main.c:73 +#: ../../WPrefs.app/main.c:72 msgid "options:" msgstr "volby:" -#: ../../WPrefs.app/main.c:74 +#: ../../WPrefs.app/main.c:73 msgid " -display \tdisplay to be used" msgstr " -display \tkterý display pou¾ít" -#: ../../WPrefs.app/main.c:75 -msgid " -version\t\tprint version number and exit" -msgstr " -version\t\tzobraz verzi a konec" +#: ../../WPrefs.app/main.c:74 +msgid " --version\t\tprint version number and exit" +msgstr " --version\t\tzobraz verzi a konec" -#: ../../WPrefs.app/main.c:132 +#: ../../WPrefs.app/main.c:75 +msgid " --help\t\tprint this message and exit" +msgstr " --help\t\tzobraz nápovìdu a konec" + +#: ../../WPrefs.app/main.c:134 #, c-format msgid "too few arguments for %s" msgstr "nedostatek argumetù pro %s" -#: ../../WPrefs.app/main.c:154 +#: ../../WPrefs.app/main.c:156 msgid "X server does not support locale" msgstr "X server nepodporuje nastavení místních zvyklostí" -#: ../../WPrefs.app/main.c:157 +#: ../../WPrefs.app/main.c:159 msgid "cannot set locale modifiers" msgstr "nelze nastavit modifikátory místních zvyklostí" -#: ../../WPrefs.app/main.c:163 +#: ../../WPrefs.app/main.c:165 #, c-format msgid "could not open display %s" msgstr "nelze otevøít displej %s" -#: ../../WPrefs.app/main.c:171 +#: ../../WPrefs.app/main.c:173 msgid "could not initialize application" msgstr "nelze inicializovat aplikaci" diff --git a/WPrefs.app/po/ko.po b/WPrefs.app/po/ko.po index 21f79b3b..fcda53cf 100644 --- a/WPrefs.app/po/ko.po +++ b/WPrefs.app/po/ko.po @@ -1,1439 +1,1466 @@ -# WPrefs.app po file for Korean. -# Copyright (C) 1998 Free Software Foundation, Inc. -# Byeong-Chan Kim , 1998. -# Update: CHOI Junho , 1998/12. -# -msgid "" -msgstr "" -"Project-Id-Version: 0.10\n" -"POT-Creation-Date: 1999-01-11 06:34+0900\n" -"PO-Revision-Date: 1999-01-11 06:20+0900\n" -"Last-Translator: Byeong-Chan Kim \n" -"Language-Team: Korean\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-KR\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: ../../WPrefs.app/Configurations.c:142 ../../WPrefs.app/Configurations.c:148 -#: ../../WPrefs.app/MouseSettings.c:510 ../../WPrefs.app/WindowHandling.c:274 -#: ../../WPrefs.app/WindowHandling.c:286 ../../WPrefs.app/Workspace.c:71 -#: ../../WPrefs.app/Workspace.c:77 -#, c-format -msgid "could not load icon %s" -msgstr "¾ÆÀÌÄÜ %s¸¦ ÀоîµéÀÏ ¼ö ¾øÀ½" - -#: ../../WPrefs.app/Configurations.c:156 ../../WPrefs.app/Workspace.c:85 -#, c-format -msgid "could not process icon %s:" -msgstr "¾ÆÀÌÄÜ %s¸¦ ó¸®ÇÒ ¼ö ¾øÀ½:" - -#: ../../WPrefs.app/Configurations.c:181 ../../WPrefs.app/Workspace.c:124 -#, c-format -msgid "could not load image file %s" -msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" - -#: ../../WPrefs.app/Configurations.c:195 -msgid "Icon Slide Speed" -msgstr "¾ÆÀÌÄÜ ½½¶óÀÌµå ¼Óµµ" - -#: ../../WPrefs.app/Configurations.c:201 -msgid "Shade Animation Speed" -msgstr "½¦ÀÌµå ¾Ö´Ï¸ÞÀÌ¼Ç ¼Óµµ" - -#: ../../WPrefs.app/Configurations.c:234 ../../WPrefs.app/Configurations.c:246 -#: ../../WPrefs.app/Focus.c:310 ../../WPrefs.app/Focus.c:321 -#: ../../WPrefs.app/MenuPreferences.c:135 -#: ../../WPrefs.app/MenuPreferences.c:146 -#: ../../WPrefs.app/MenuPreferences.c:174 -#: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:538 -#: ../../WPrefs.app/MouseSettings.c:549 ../../WPrefs.app/MouseSettings.c:604 -#: ../../WPrefs.app/MouseSettings.c:615 ../../WPrefs.app/MouseSettings.c:651 -#: ../../WPrefs.app/MouseSettings.c:666 ../../WPrefs.app/MouseSettings.c:682 -#: ../../WPrefs.app/WPrefs.c:403 ../../WPrefs.app/WPrefs.c:421 -#, c-format -msgid "could not load icon file %s" -msgstr "¾ÆÀÌÄÜ ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" - -#: ../../WPrefs.app/Configurations.c:262 -msgid "Titlebar Style" -msgstr "ŸÀÌÆ²¹Ù ½ºÅ¸ÀÏ" - -#: ../../WPrefs.app/Configurations.c:299 -msgid "Animations and Sound" -msgstr "¾Ö´Ï¸ÞÀ̼ǰú À½ÇâÈ¿°ú" - -#: ../../WPrefs.app/Configurations.c:305 -msgid "Animations" -msgstr "¾Ö´Ï¸ÞÀ̼Ç" - -#: ../../WPrefs.app/Configurations.c:321 -msgid "Superfluous" -msgstr "Superfluous" - -#: ../../WPrefs.app/Configurations.c:337 -msgid "Sounds" -msgstr "À½ÇâÈ¿°ú" - -#: ../../WPrefs.app/Configurations.c:354 -msgid "Note: sound requires a module distributed separately" -msgstr "ÁÖÀÇ: À½ÇâÈ¿°ú´Â µû·ÎÀÌ ¹èÆ÷µÇ´Â ¸ðµâÀÌ ÇÊ¿äÇÕ´Ï´Ù" - -#: ../../WPrefs.app/Configurations.c:364 -msgid "Dithering colormap for 8bpp" -msgstr "256»ö¿ë Ä÷¯¸Ê µð´õ¸µ" - -#: ../../WPrefs.app/Configurations.c:369 -msgid "Disable dithering in any visual/depth" -msgstr "¸ðµç ºñÁÖ¾ó/»ö»ó ±íÀÌ¿¡¼­ µð´õ¸µ »ç¿ëÇÏÁö ¾ÊÀ½" - -#: ../../WPrefs.app/Configurations.c:390 -msgid "More colors for applications" -msgstr "¾ÖÇø®ÄÉÀ̼ǿ¡ ´õ ¸¹Àº Ä÷¯ ºÎ¿©" - -#: ../../WPrefs.app/Configurations.c:397 -msgid "More colors for WindowMaker" -msgstr "Window Maker¿¡ ´õ ¸¹Àº Ä÷¯ ºÎ¿©" - -#: ../../WPrefs.app/Configurations.c:450 -msgid "Other Configurations" -msgstr "±× ¿Ü ¼³Á¤" - -#: ../../WPrefs.app/Expert.c:70 -msgid "Do not set non-WindowMaker specific parameters (do not use xset)" -msgstr "Window MakerÀÇ ±â´ÉÀÌ ¾Æ´Ñ °ÍÀº ¼³Á¤ÇÏÁö ¾ÊÀ½(xsetÀ» »ç¿ëÇÏÁö ¾ÊÀ½)" - -#: ../../WPrefs.app/Expert.c:71 -msgid "Automatically save session when exiting WindowMaker" -msgstr "Window Maker Á¾·á½Ã ¼¼¼Ç ÀÚµ¿ ÀúÀå" - -#: ../../WPrefs.app/Expert.c:72 -msgid "Use SaveUnder in window frames, icons, menus and other objects" -msgstr "â ÇÁ·¹ÀÓ, ¾ÆÀÌÄÜ, ¸Þ´º µî¿¡¼­ SaveUnder »ç¿ëÇÔ" - -#: ../../WPrefs.app/Expert.c:73 -msgid "Disable cycling color highlighting of icons." -msgstr "¾ÆÀÌÄÜ¿¡ »ö»ó ÇÏÀ̶óÀÌÆÃ ¼øÈ¯ »ç¿ë ¾ÊÀ½." - -#: ../../WPrefs.app/Expert.c:103 -msgid "Expert User Preferences" -msgstr "°í±Þ »ç¿ëÀÚ¿ë ¼³Á¤" - -#: ../../WPrefs.app/Focus.c:79 -#, c-format -msgid "bad option value %s for option FocusMode. Using default Manual" -msgstr "FocusMode ¿É¼Ç¿¡ À߸øµÈ °ª %s. ±âº»°ªÀÎ ManualÀ» »ç¿ë" - -#: ../../WPrefs.app/Focus.c:92 -#, c-format -msgid "bad option value %s for option ColormapMode. Using default Manual" -msgstr "ColormapMode ¿É¼Ç¿¡ À߸øµÈ °ª %s. ±âº»°ªÀÎ ManualÀ» »ç¿ë" - -#: ../../WPrefs.app/Focus.c:190 -msgid "" -"Click on the window to set\n" -"keyboard input focus." -msgstr "" -"âÀ» Ŭ¸¯ÇÏ¸é ±× Ã¢ÀÌ È°¼ºÈ­\n" -"µË´Ï´Ù." - -#: ../../WPrefs.app/Focus.c:194 -msgid "" -"Set keyboard input focus to\n" -"the window under the mouse pointer,\n" -"including the root window." -msgstr "" -"¸¶¿ì½º Æ÷ÀÎÅ͸¦ ·çÆ® âÀ»\n" -"Æ÷ÇÔÇÑ ¸ðµç ⠾Ʒ¡¿¡ ³õÀ¸¸é\n" -"±× âÀÌ È°¼ºÈ­µË´Ï´Ù." - -#: ../../WPrefs.app/Focus.c:199 -msgid "" -"Set keyboard input focus to\n" -"the window under the mouse pointer,\n" -"except the root window." -msgstr "" -"¸¶¿ì½º Æ÷ÀÎÅ͸¦ ·çÆ® âÀ»\n" -"Á¦¿ÜÇÑ ¸ðµç ⠾Ʒ¡¿¡ ³õÀ¸¸é\n" -"±× âÀÌ È°¼ºÈ­µË´Ï´Ù." - -#: ../../WPrefs.app/Focus.c:243 -msgid "Input Focus Mode" -msgstr "ÀԷ Ȱ¼ºÈ­ ¸ðµå" - -#: ../../WPrefs.app/Focus.c:248 -msgid "Click window to focus" -msgstr "Ȱ¼ºÈ­Çϱâ À§ÇØ Ã¢À» Ŭ¸¯" - -#: ../../WPrefs.app/Focus.c:249 -msgid "Focus follows mouse" -msgstr "¸¶¿ì½º¸¦ µû¸£´Â Ȱ¼ºÈ­ ¸ðµå" - -#: ../../WPrefs.app/Focus.c:250 -msgid "\"Sloppy\" focus" -msgstr "\"´À½¼ÇÑ\" Ȱ¼ºÈ­ ¸ðµå" - -#: ../../WPrefs.app/Focus.c:265 -msgid "Install colormap in the window..." -msgstr "Ä÷¯¸ÊÀÇ ¼³Ä¡´Â..." - -#: ../../WPrefs.app/Focus.c:270 -msgid "...that has the input focus." -msgstr "...ÀԷ Ȱ¼ºÈ­°¡ µÈ â." - -#: ../../WPrefs.app/Focus.c:275 -msgid "...that is under the mouse pointer." -msgstr "...¸¶¿ì½º Æ÷ÀÎÅÍ ¾Æ·¡ÀÇ Ã¢." - -#: ../../WPrefs.app/Focus.c:284 -msgid "Automatic Window Raise Delay" -msgstr "ÀÚµ¿ ⠿ø®±â Áö¿¬ ½Ã°£" - -#: ../../WPrefs.app/Focus.c:341 -msgid "msec" -msgstr "msec" - -#: ../../WPrefs.app/Focus.c:358 -msgid "Do not let applications receive the click used to focus windows." -msgstr "¾îÇø®ÄÉÀ̼ÇÀÌ Ã¢À» Ȱ¼ºÈ­Çϴ Ŭ¸¯À» ¹ÞÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù." - -#: ../../WPrefs.app/Focus.c:364 -msgid "Automatically focus new windows." -msgstr "»õ·Î¿î âÀ» ÀÚµ¿ Ȱ¼ºÈ­ÇÕ´Ï´Ù." - -#: ../../WPrefs.app/Focus.c:385 -msgid "Window Focus Preferences" -msgstr "â Ȱ¼ºÈ­ ¼³Á¤" - -#: ../../WPrefs.app/Icons.c:178 -msgid "Icon Positioning" -msgstr "¾ÆÀÌÄÜ À§Ä¡" - -#: ../../WPrefs.app/Icons.c:225 -msgid "Iconification Animation" -msgstr "¾ÆÀÌÄÜÈ­½Ã ¾Ö´Ï¸ÞÀ̼Ç" - -#: ../../WPrefs.app/Icons.c:236 -msgid "Shrinking/Zooming" -msgstr "Ãà¼Ò/È®´ë" - -#: ../../WPrefs.app/Icons.c:237 -msgid "Spinning/Twisting" -msgstr "ȸÀü/Æ®À§½ºÆ®" - -#: ../../WPrefs.app/Icons.c:238 -msgid "3D-flipping" -msgstr "3Â÷¿ø ȸÀü" - -#: ../../WPrefs.app/Icons.c:239 -msgid "None" -msgstr "¾øÀ½" - -#: ../../WPrefs.app/Icons.c:247 -msgid "Icon Display" -msgstr "¾ÆÀÌÄÜ Ç¥½Ã ¹æ¹ý" - -#: ../../WPrefs.app/Icons.c:252 -msgid "Auto-arrange icons" -msgstr "¾ÆÀÌÄÜ ÀÚµ¿ Á¤·Ä" - -#: ../../WPrefs.app/Icons.c:257 -msgid "Omnipresent miniwindows" -msgstr "¾ÆÀÌÄÜ Ç×»ó º¸ÀÓ" - -#: ../../WPrefs.app/Icons.c:265 -msgid "Icon Size" -msgstr "¾ÆÀÌÄÜ Å©±â" - -#: ../../WPrefs.app/Icons.c:335 -msgid "Icon Preferences" -msgstr "¾ÆÀÌÄÜ ¼³Á¤" - -#: ../../WPrefs.app/KeyboardSettings.c:72 -msgid "Initial Key Repeat" -msgstr "Ãʱâ Ű ¹Ýº¹ ¼Óµµ" - -#: ../../WPrefs.app/KeyboardSettings.c:113 -msgid "Key Repeat Rate" -msgstr "Ű ¹Ýº¹À²" - -#: ../../WPrefs.app/KeyboardSettings.c:153 -msgid "Type here to test" -msgstr "¿©±â¼­ ½ÃÇèÇϼ¼¿ä" - -#: ../../WPrefs.app/KeyboardSettings.c:172 -msgid "Keyboard Preferences" -msgstr "Űº¸µå ¼³Á¤" - -#: ../../WPrefs.app/KeyboardShortcuts.c:183 ../../WPrefs.app/Menu.c:932 -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/MenuGuru.c:263 -msgid "Cancel" -msgstr "Ãë¼Ò" - -#: ../../WPrefs.app/KeyboardShortcuts.c:184 -msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." -msgstr "¿øÇÏ´Â ´ÜÃà۸¦ ´©¸£½Ê½Ã¿À. Ãë¼Ò¸¦ ´©¸£¸é ĸÃİ¡ Áߴܵ˴ϴÙ." - -#: ../../WPrefs.app/KeyboardShortcuts.c:204 -#: ../../WPrefs.app/KeyboardShortcuts.c:444 ../../WPrefs.app/Menu.c:944 -#: ../../WPrefs.app/Menu.c:1166 -msgid "Capture" -msgstr "ĸÃÄ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:205 -#: ../../WPrefs.app/KeyboardShortcuts.c:451 -msgid "Click Capture to interactively define the shortcut key." -msgstr "ĸÃÄ ¹öưÀ» ´­·¯ ´ÜÃà۸¦ ½±°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù." - -#: ../../WPrefs.app/KeyboardShortcuts.c:359 -msgid "Actions" -msgstr "µ¿ÀÛ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:375 -msgid "Open applications menu" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º ¿­±â" - -#: ../../WPrefs.app/KeyboardShortcuts.c:376 -msgid "Open window list menu" -msgstr "â ¸ñ·Ï ¸Þ´º ¿­±â" - -#: ../../WPrefs.app/KeyboardShortcuts.c:377 -msgid "Open window commands menu" -msgstr "â ¸í·É ¸Þ´º ¿­±â" - -#: ../../WPrefs.app/KeyboardShortcuts.c:378 -msgid "Hide active application" -msgstr "Ȱ¼ºÈ­µÈ ¾ÖÇø®ÄÉÀÌ¼Ç ¼û±è" - -#: ../../WPrefs.app/KeyboardShortcuts.c:379 -msgid "Miniaturize active window" -msgstr "Ȱ¼ºÈ­µÈ â ÃÖ¼ÒÈ­" - -#: ../../WPrefs.app/KeyboardShortcuts.c:380 -msgid "Close active window" -msgstr "Ȱ¼ºÈ­µÈ ⠴ݱâ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:381 -msgid "Maximize active window" -msgstr "Ȱ¼ºÈ­µÈ â ÃÖ´ëÈ­" - -#: ../../WPrefs.app/KeyboardShortcuts.c:382 -msgid "Maximize active window vertically" -msgstr "âÀ» ¼¼·Î·Î ÃÖ´ëÈ­" - -#: ../../WPrefs.app/KeyboardShortcuts.c:383 -msgid "Raise active window" -msgstr "Ȱ¼ºÈ­µÈ âÀ» À§·Î" - -#: ../../WPrefs.app/KeyboardShortcuts.c:384 -msgid "Lower active window" -msgstr "Ȱ¼ºÈ­µÈ âÀ» ¾Æ·¡·Î" - -#: ../../WPrefs.app/KeyboardShortcuts.c:385 -msgid "Raise/Lower window under mouse pointer" -msgstr "¸¶¿ì½º°¡ À§Ä¡ÇÑ Ã¢ ¿Ã¸²/³»¸²" - -#: ../../WPrefs.app/KeyboardShortcuts.c:386 -msgid "Shade active window" -msgstr "Ȱ¼ºÈ­µÈ â ½¦À̵ùÇϱâ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:387 -msgid "Move/Resize active window" -msgstr "Ȱ¼ºÈ­µÈ â À̵¿/Å©±â¹Ù²Þ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:388 -msgid "Select active window" -msgstr "Ȱ¼ºÈ­ â ¼±ÅÃ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:389 -msgid "Focus next window" -msgstr "´ÙÀ½ â Ȱ¼ºÈ­" - -#: ../../WPrefs.app/KeyboardShortcuts.c:390 -msgid "Focus previous window" -msgstr "ÀÌÀü â Ȱ¼ºÈ­" - -#: ../../WPrefs.app/KeyboardShortcuts.c:391 -msgid "Switch to next workspace" -msgstr "´ÙÀ½ ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:392 -msgid "Switch to previous workspace" -msgstr "ÀÌÀü ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:393 -msgid "Switch to next ten workspaces" -msgstr "10°³ ´ÙÀ½ ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:394 -msgid "Switch to previous ten workspaces" -msgstr "10°³ ÀÌÀü ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:395 -msgid "Switch to workspace 1" -msgstr "1¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:396 -msgid "Switch to workspace 2" -msgstr "2¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:397 -msgid "Switch to workspace 3" -msgstr "3¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:398 -msgid "Switch to workspace 4" -msgstr "4¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:399 -msgid "Switch to workspace 5" -msgstr "5¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:400 -msgid "Switch to workspace 6" -msgstr "6¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:401 -msgid "Switch to workspace 7" -msgstr "7¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:402 -msgid "Switch to workspace 8" -msgstr "8¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:403 -msgid "Switch to workspace 9" -msgstr "9¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:404 -msgid "Switch to workspace 10" -msgstr "10¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:405 -msgid "Shortcut for window 1" -msgstr "1¹ø â ´ÜÃàŰ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:406 -msgid "Shortcut for window 2" -msgstr "2¹ø â ´ÜÃàŰ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:407 -msgid "Shortcut for window 3" -msgstr "3¹ø â ´ÜÃàŰ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:408 -msgid "Shortcut for window 4" -msgstr "4¹ø â ´ÜÃàŰ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:409 -msgid "Raise Clip" -msgstr "Ŭ¸³ ¿Ã¸²" - -#: ../../WPrefs.app/KeyboardShortcuts.c:410 -msgid "Lower Clip" -msgstr "Ŭ¸³ ³»¸²" - -#: ../../WPrefs.app/KeyboardShortcuts.c:411 -msgid "Raise/Lower Clip" -msgstr "Ŭ¸³ ¿Ã¸²/³»¸²" - -#: ../../WPrefs.app/KeyboardShortcuts.c:413 -msgid "Toggle keyboard language" -msgstr "Űº¸µå ¾ð¾î ¼±ÅÃ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:427 ../../WPrefs.app/Menu.c:1155 -msgid "Shortcut" -msgstr "´ÜÃàŰ" - -#: ../../WPrefs.app/KeyboardShortcuts.c:438 -msgid "Clear" -msgstr "Áö¿ò" - -#: ../../WPrefs.app/KeyboardShortcuts.c:499 -msgid "Keyboard Shortcut Preferences" -msgstr "Űº¸µå ´ÜÃàŰ ¼³Á¤" - -#: ../../WPrefs.app/Menu.c:373 -msgid "Window Manager" -msgstr "â °ü¸®ÀÚ" - -#: ../../WPrefs.app/Menu.c:375 -msgid "Program to open files" -msgstr "ÆÄÀÏÀ» ¿­ ÇÁ·Î±×·¥" - -#: ../../WPrefs.app/Menu.c:377 ../../WPrefs.app/Menu.c:1142 -msgid "Program to Run" -msgstr "½ÇÇàÇÒ ÇÁ·Î±×·¥" - -#: ../../WPrefs.app/Menu.c:427 ../../WPrefs.app/Menu.c:428 -#, c-format -msgid "New Command %i" -msgstr "»õ ¸í·É %i" - -#: ../../WPrefs.app/Menu.c:435 -msgid "New Submenu" -msgstr "»õ ÇϺθ޴º" - -#: ../../WPrefs.app/Menu.c:440 -msgid "External Menu" -msgstr "¿ÜºÎ ¸Þ´º" - -#: ../../WPrefs.app/Menu.c:447 -msgid "Workspaces" -msgstr "ÀÛ¾÷ °ø°£" - -#: ../../WPrefs.app/Menu.c:1026 ../../WPrefs.app/Menu.c:1041 -msgid "Commands" -msgstr "¸í·É" - -#: ../../WPrefs.app/Menu.c:1027 ../../WPrefs.app/Menu.c:1042 -msgid "Add Command" -msgstr "¸í·É Ãß°¡" - -#: ../../WPrefs.app/Menu.c:1028 ../../WPrefs.app/Menu.c:1043 -msgid "Add Submenu" -msgstr "ÇϺθ޴º Ãß°¡" - -#: ../../WPrefs.app/Menu.c:1029 ../../WPrefs.app/Menu.c:1044 -msgid "Add External Menu" -msgstr "¿ÜºÎ ¸Þ´º Ãß°¡" - -#: ../../WPrefs.app/Menu.c:1030 ../../WPrefs.app/Menu.c:1045 -msgid "Add Workspace Menu" -msgstr "ÀÛ¾÷°ø°£ ¸Þ´º Ãß°¡" - -#: ../../WPrefs.app/Menu.c:1031 ../../WPrefs.app/Menu.c:1046 -msgid "Remove Item" -msgstr "Ç׸ñ »èÁ¦" - -#: ../../WPrefs.app/Menu.c:1032 ../../WPrefs.app/Menu.c:1047 -msgid "Cut Item" -msgstr "Ç׸ñ Àß¶ó³»±â" - -#: ../../WPrefs.app/Menu.c:1033 ../../WPrefs.app/Menu.c:1048 -msgid "Copy Item" -msgstr "Ç׸ñ º¹»ç" - -#: ../../WPrefs.app/Menu.c:1034 ../../WPrefs.app/Menu.c:1049 -msgid "Paste Item" -msgstr "Ç׸ñ ºÙÀ̱â" - -#: ../../WPrefs.app/Menu.c:1078 -msgid "Label" -msgstr "·¹À̺í" - -#: ../../WPrefs.app/Menu.c:1091 -msgid "Command" -msgstr "¸í·É" - -#: ../../WPrefs.app/Menu.c:1096 -msgid "Run Program" -msgstr "ÇÁ·Î±×·¥ ½ÇÇà" - -#: ../../WPrefs.app/Menu.c:1097 -msgid "Arrange Icons" -msgstr "¾ÆÀÌÄÜ Á¤·Ä" - -#: ../../WPrefs.app/Menu.c:1098 -msgid "Hide Others" -msgstr "´Ù¸¥ â ¼û±â±â" - -#: ../../WPrefs.app/Menu.c:1099 -msgid "Show All Windows" -msgstr "¸ðµç â º¸À̱â" - -#: ../../WPrefs.app/Menu.c:1100 -msgid "Exit WindowMaker" -msgstr "Window Maker Á¾·á" - -#: ../../WPrefs.app/Menu.c:1101 -msgid "Exit X Session" -msgstr "X ¼¼¼Ç Á¾·á" - -#: ../../WPrefs.app/Menu.c:1102 -msgid "Start window manager" -msgstr "â °ü¸®ÀÚ ½ÃÀÛ " - -#: ../../WPrefs.app/Menu.c:1103 -msgid "Restart WindowMaker" -msgstr "Window Maker Àç½ÃÀÛ" - -#: ../../WPrefs.app/Menu.c:1104 -msgid "Save Session" -msgstr "¼¼¼Ç ÀúÀå" - -#: ../../WPrefs.app/Menu.c:1105 -msgid "Clear Session" -msgstr "¼¼¼Ç Áö¿ì±â" - -#: ../../WPrefs.app/Menu.c:1106 -msgid "Refresh Screen" -msgstr "´Ù½Ã ±×¸®±â" - -#: ../../WPrefs.app/Menu.c:1107 -msgid "Info Panel" -msgstr "Á¤º¸ ÆÐ³Î" - -#: ../../WPrefs.app/Menu.c:1108 -msgid "Legal Panel" -msgstr "¹ýÀû Á¤º¸ ÆÐ³Î" - -#: ../../WPrefs.app/Menu.c:1116 -msgid "Open workspace menu" -msgstr "ÀÛ¾÷°ø°£ ¸Þ´º ¿­±â" - -#: ../../WPrefs.app/Menu.c:1123 -msgid "No confirmation panel" -msgstr "È®ÀÎ ÆÐ³Î ¾øÀ½" - -#: ../../WPrefs.app/Menu.c:1129 -msgid "Menu Path/Directory List" -msgstr "¸Þ´º °æ·Î/µð·ºÅ丮 ¸ñ·Ï" - -#: ../../WPrefs.app/Menu.c:1174 -msgid "Ask help to the Guru" -msgstr "Guru¿¡°Ô µµ¿ò ¿äû" - -#: ../../WPrefs.app/Menu.c:1294 -msgid "" -"The format of the current menu in ~/G/D/WMRootMenu is not supported by " -"WPrefs. A new menu will be created.\n" -"You can also replace ~/G/D/WMRootMenu with ~/G/L/W/plmenu to get the default " -"menu." -msgstr "" -"~/Gnustep/Defaults/WMRootMenÀÇ ¸Þ´º´Â WPrefs°¡ Áö¿øÇÏ´Â Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù. " -"»õ·Î¿î ¸Þ´º¸¦ ¸¸µì´Ï´Ù.\n" -"±âº» ¸Þ´º·Î »ç¿ëÇÏ·Á¸é ~/G/D/WMRootMenu¸¦ ~/G/L/W/plmenu.ko·Î ¹Ù²Ù¸é µË´Ï´Ù." - -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/Menu.c:1304 -#: ../../WPrefs.app/WPrefs.c:597 -msgid "Warning" -msgstr "°æ°í" - -#: ../../WPrefs.app/Menu.c:1299 ../../WPrefs.app/Menu.c:1305 -#: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 -#: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:156 -#: ../../WPrefs.app/Text.c:181 ../../WPrefs.app/Themes.c:98 -#: ../../WPrefs.app/WPrefs.c:558 ../../WPrefs.app/WPrefs.c:563 -#: ../../WPrefs.app/WPrefs.c:574 ../../WPrefs.app/WPrefs.c:584 -#: ../../WPrefs.app/WPrefs.c:590 ../../WPrefs.app/WPrefs.c:597 -#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 -msgid "OK" -msgstr "È®ÀÎ" - -#: ../../WPrefs.app/Menu.c:1304 -msgid "Any changes made in this section will not be saved" -msgstr "ÀÌ ¼½¼Ç¿¡¼­ ¼öÁ¤ÇÑ ³»¿ëÀº ÀúÀåµÇÁö ¾Ê½À´Ï´Ù" - -#: ../../WPrefs.app/Menu.c:1369 -msgid "Applications Menu Definition" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º Á¤ÀÇ" - -#: ../../WPrefs.app/MenuGuru.c:106 -msgid "Menu Guru - Select Type" -msgstr "¸Þ´º Guru - ÇüŸ¦ ¼±ÅÃÇϼ¼¿ä" - -#: ../../WPrefs.app/MenuGuru.c:111 ../../WPrefs.app/MenuGuru.c:133 -#: ../../WPrefs.app/MenuGuru.c:251 -msgid "Next" -msgstr "´ÙÀ½" - -#: ../../WPrefs.app/MenuGuru.c:114 -msgid "Menu Guru - Select Menu File" -msgstr "¸Þ´º Guru - ¸Þ´º ÆÄÀÏÀ» ¼±ÅÃÇϼ¼¿ä" - -#: ../../WPrefs.app/MenuGuru.c:122 -msgid "Menu Guru - Select Pipe Command" -msgstr "¸Þ´º Guru - ÆÄÀÌÇÁ ¸í·ÉÀ» ¼±ÅÃÇϼ¼¿ä" - -#: ../../WPrefs.app/MenuGuru.c:129 -msgid "Menu Guru - Select Directories" -msgstr "¸Þ´º Guru - µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä" - -#: ../../WPrefs.app/MenuGuru.c:136 -msgid "Menu Guru - Select Command" -msgstr "¸Þ´º Guru - ¸í·ÉÀ» ¼±ÅÃÇϼ¼¿ä" - -#: ../../WPrefs.app/MenuGuru.c:257 -msgid "Back" -msgstr "¾ÕÀ¸·Î" - -#: ../../WPrefs.app/MenuGuru.c:271 -msgid "" -"This process will help you create a submenu which definition is located in " -"another file or is created dynamically.\n" -"What do you want to use as the contents of the submenu?" -msgstr "" -"ÀÌ °úÁ¤Àº ´Ù¸¥ ÆÄÀÏ¿¡ Á¤Àǰ¡ Àְųª ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÇ´Â ÇϺθ޴º¸¦ ¸¸µå´Â µ¥ " -"µµ¿òÀ» ÁÝ´Ï´Ù.\n" -"ºÎ¸Þ´ºÀÇ ³»¿ëÀ¸·Î ¾î¶² °ÍÀ» »ç¿ëÇÏ°í ½Í½À´Ï±î?" - -#: ../../WPrefs.app/MenuGuru.c:279 -msgid "" -"A file containing the menu definition in the plain text (non-property list) " -"menu format." -msgstr "¸Þ´º Á¤ÀǸ¦ º¸Åë ÅØ½ºÆ®·Î(Ư¼º ¾ø´Â ¸ñ·Ï) ¾´ ÆÄÀÏ." - -#: ../../WPrefs.app/MenuGuru.c:285 -msgid "The menu definition generated by a script/program read through a pipe." -msgstr "½ºÅ©¸³Æ®/ÇÁ·Î±×·¥À¸·Î »ý¼ºÇÏ¿© ÆÄÀÌÇÁ·Î ÀоîµéÀÌ´Â ¸Þ´º Á¤ÀÇ." - -#: ../../WPrefs.app/MenuGuru.c:291 -msgid "The files in one or more directories." -msgstr "Çϳª ÀÌ»óÀÇ µð·ºÅ丮ÀÇ ÆÄÀÏ." - -#: ../../WPrefs.app/MenuGuru.c:303 -msgid "Type the path for the menu file:" -msgstr "¸Þ´º ÆÄÀÏÀÇ °æ·Î¸¦ ÀûÀ¸¼¼¿ä:" - -#: ../../WPrefs.app/MenuGuru.c:318 -msgid "" -"The menu file must contain a menu in the plain text menu file format. This " -"format is described in the menu files included with WindowMaker, probably at " -"~/GNUstep/Library/WindowMaker/menu" -msgstr "" -"¸Þ´º ÆÄÀÏÀÇ ³»¿ëÀº º¸Åë ÅØ½ºÆ®·Î µÈ ¸Þ´º ÆÄÀÏ Çü½ÄÀÇ ¸Þ´ºÀÔ´Ï´Ù. ÀÌ Çü½ÄÀº " -"WindowMaker¿¡ Æ÷ÇÔµÈ ¸Þ´º ÆÄÀÏÀ» º¸¸é µÇ¸ç, º¸Åë " -"~/GNUstep/Library/WindowMaker/menu.koÀÔ´Ï´Ù." - -#: ../../WPrefs.app/MenuGuru.c:328 -msgid "Type the command that will generate the menu definition:" -msgstr "¸Þ´º Á¤ÀǸ¦ ¸¸µé¾î³¾ ¸í·ÉÀ» ÀÔ·ÂÇϼ¼¿ä:" - -#: ../../WPrefs.app/MenuGuru.c:338 -msgid "" -"The command supplied must generate and output a valid menu definition to " -"stdout. This definition should be in the plain text menu file format, " -"described in the menu files included with WindowMaker, usually at " -"~/GNUstep/Library/WindowMaker/menu" -msgstr "" -"ÀÌ ¸í·ÉÀº À¯È¿ÇÑ ¸Þ´º Á¤ÀǸ¦ ¸¸µé¾î¼­ Ç¥ÁØ Ãâ·ÂÀ¸·Î ³»º¸³»¾ß ÇÕ´Ï´Ù. ÀÌ " -"Á¤ÀÇ´Â º¸Åë ÅØ½ºÆ®·Î µÈ ¸Þ´º ÆÄÀÏ Çü½ÄÀ̾î¾ß Çϸç, WindowMaker¿¡ Æ÷ÇÔµÈ ¸Þ´º " -"ÆÄÀÏ¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. º¸Åë ~/GNUstep/Library/WindowMaker/menu.ko ÀÔ´Ï´Ù" - -#: ../../WPrefs.app/MenuGuru.c:350 ../../WPrefs.app/MenuGuru.c:372 -#: ../../WPrefs.app/MenuGuru.c:394 -msgid "" -"Type the path for the directory. You can type more than one path by " -"separating them with spaces." -msgstr "" -"µð·ºÅ丮ÀÇ °æ·Î¸¦ ÀÔ·ÂÇϼ¼¿ä. ºóÄ­À¸·Î ºÐ¸®Çؼ­ Çϳª ÀÌ»óÀÇ °æ·Î¸¦ ¾µ ¼ö " -"ÀÖ½À´Ï´Ù." - -#: ../../WPrefs.app/MenuGuru.c:361 ../../WPrefs.app/MenuGuru.c:383 -#: ../../WPrefs.app/MenuGuru.c:405 -msgid "" -"The menu generated will have an item for each file in the directory. The " -"directories can contain program executables or data files (such as jpeg " -"images)." -msgstr "" -"»ý¼ºµÇ´Â ¸Þ´º´Â µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ¿¡ ´ëÇØ Ç׸ñÀ» °®½À´Ï´Ù. µð·ºÅ丮¿¡´Â " -"ÇÁ·Î±×·¥ ½ÇÇà ÆÄÀÏÀ̳ª µ¥ÀÌÅÍ ÆÄÀÏÀ» ³ÖÀ¸¸é µË´Ï´Ù.(jpeg À̹ÌÁö °°Àº °Íµé)" - -#: ../../WPrefs.app/MenuGuru.c:415 -msgid "" -"If the directory contain data files, type the command used to open these " -"files. Otherwise, leave it in blank." -msgstr "" -"µð·ºÅ丮¿¡ µ¥ÀÌÅÍ ÆÄÀÏÀÌ ÀÖ´Â °æ¿ì, ÀÌ ÆÄÀÏÀ» ¿­±â À§ÇØ »ç¿ëÇÒ ¸í·ÉÀ» " -"ÀÔ·ÂÇϼ¼¿ä. ±×·¸Áö ¾ÊÀ¸¸é ºóÄ­À¸·Î µÎ¼¼¿ä." - -#: ../../WPrefs.app/MenuGuru.c:426 -msgid "" -"Each file in the directory will have an item and they will be opened with " -"the supplied command.For example, if the directory contains image files and " -"the command is \"xv -root\", each file in the directory will have a menu " -"item like \"xv -root imagefile\"." -msgstr "" -"µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ¿¡´Â Ç׸ñÀÌ ÀÖÀ¸¸ç Á¦°øµÈ ¸í·ÉÀ¸·Î ¿­ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ " -"µé¸é, ÀÌ µð·ºÅ丮¿¡ À̹ÌÁö ÆÄÀÏÀÌ ÀÖ°í ¸í·ÉÀÌ \"xv -root\"À̸é, µð·ºÅ丮ÀÇ " -"°¢ ÆÄÀÏÀº \"xv -root À̹ÌÁöÆÄÀÏ\"°ú °°Àº ¸Þ´º Ç׸ñÀ» °®½À´Ï´Ù." - -#: ../../WPrefs.app/MenuPreferences.c:112 -msgid "Menu Scrolling Speed" -msgstr "¸Þ´º ½ºÅ©·Ñ ¼Óµµ" - -#: ../../WPrefs.app/MenuPreferences.c:161 -msgid "Submenu Alignment" -msgstr "ºÎ¸Þ´º Á¤·Ä" - -#: ../../WPrefs.app/MenuPreferences.c:204 -msgid "" -"Always open submenus inside the screen, instead of scrolling.\n" -"Note: this can be an annoyance at some circumstances." -msgstr "" -"½ºÅ©·ÑÇÏ´Â ´ë½Å Ç×»ó È­¸é ³»¿¡ ºÎ¸Þ´º¸¦ ¿±´Ï´Ù.\n" -"ÁÖÀÇ: ¾î¶² ȯ°æ¿¡¼­´Â ±ÍÂúÀ»Áöµµ ¸ð¸¨´Ï´Ù." - -#: ../../WPrefs.app/MenuPreferences.c:209 -msgid "Scroll off-screen menus when pointer is moved over them." -msgstr "È­¸é ¹ÛÀ¸·Î ³ª°£ ¸Þ´º ÂÊÀ¸·Î ¸¶¿ì½º¸¦ ¿òÁ÷ÀÌ¸é ½ºÅ©·ÑÇÕ´Ï´Ù." - -#: ../../WPrefs.app/MenuPreferences.c:229 -msgid "Menu Preferences" -msgstr "¸Þ´º ¼³Á¤" - -#: ../../WPrefs.app/MouseSettings.c:148 -#, c-format -msgid "Accel.: %.2f" -msgstr "°¡¼Ó.: %.2f" - -#: ../../WPrefs.app/MouseSettings.c:154 ../../WPrefs.app/Text.c:181 -#: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:558 -#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:572 -#: ../../WPrefs.app/WPrefs.c:582 ../../WPrefs.app/WPrefs.c:590 -#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 -msgid "Error" -msgstr "¿¡·¯" - -#: ../../WPrefs.app/MouseSettings.c:155 -msgid "" -"Invalid mouse acceleration threshold value. Must be the number of pixels to " -"travel before accelerating." -msgstr "" -"À߸øµÈ ¸¶¿ì½º °¡¼Ó ÀÓ°èÄ¡ °ªÀÔ´Ï´Ù. °¡¼Ó Àü¿¡ ¿òÁ÷ÀÏ Çȼ¿ÀÇ ¼ö°¡ µÇ¾î¾ß " -"ÇÕ´Ï´Ù." - -#: ../../WPrefs.app/MouseSettings.c:209 -#, c-format -msgid "mouse button %s not supported by WPrefs." -msgstr "¸¶¿ì½º ¹öư %s ´Â WPrefs¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù." - -#: ../../WPrefs.app/MouseSettings.c:243 ../../WPrefs.app/MouseSettings.c:254 -#: ../../WPrefs.app/MouseSettings.c:265 -#, c-format -msgid "bad value %s for option %s" -msgstr "%s ¿É¼Ç¿¡ À߸øµÈ °ª %s" - -#: ../../WPrefs.app/MouseSettings.c:325 -#, c-format -msgid "" -"modifier key %s for option ModifierKey was not recognized. Using %s as " -"default" -msgstr "" -"ModifierKey ÀÇ ¼öÁ¤ÀÚ Å° °ª %s ¸¦ ÀνÄÇÒ ¼ö ¾ø½À´Ï´Ù. ±âº»°ªÀÎ %s ¸¦ " -"»ç¿ëÇÕ´Ï´Ù." - -#: ../../WPrefs.app/MouseSettings.c:350 -msgid "could not retrieve keyboard modifier mapping" -msgstr "Űº¸µå ¼öÁ¤ÀÚ ¸ÅÇÎÀ» ¾òÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../../WPrefs.app/MouseSettings.c:497 -msgid "Mouse Speed" -msgstr "¸¶¿ì½º ¼Óµµ" - -#: ../../WPrefs.app/MouseSettings.c:564 -msgid "Threshold:" -msgstr "ÀÓ°èÄ¡:" - -#: ../../WPrefs.app/MouseSettings.c:579 -msgid "Double-Click Delay" -msgstr "´õºí Ŭ¸¯ Áö¿¬" - -#: ../../WPrefs.app/MouseSettings.c:623 -msgid "Test" -msgstr "½ÃÇè" - -#: ../../WPrefs.app/MouseSettings.c:633 -msgid "Workspace Mouse Actions" -msgstr "ÀÛ¾÷°ø°£ ¸¶¿ì½º µ¿ÀÛ" - -#: ../../WPrefs.app/MouseSettings.c:638 -msgid "Disable mouse actions" -msgstr "¸¶¿ì½º µ¿ÀÛ »ç¿ë ¾ÊÀ½" - -#: ../../WPrefs.app/MouseSettings.c:691 -msgid "Applications menu" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º" - -#: ../../WPrefs.app/MouseSettings.c:697 -msgid "Window list menu" -msgstr "â ¸ñ·Ï ¸Þ´º" - -#: ../../WPrefs.app/MouseSettings.c:703 -msgid "Select windows" -msgstr "â ¼±ÅÃ" - -#: ../../WPrefs.app/MouseSettings.c:738 -msgid "Mouse Grab Modifier" -msgstr "¸¶¿ì½º Àâ±â ¼öÁ¤ÀÚ(Modifier)" - -#: ../../WPrefs.app/MouseSettings.c:772 -#, c-format -msgid "could not create %s" -msgstr "%s ¸¦ ¸¸µé ¼ö ¾øÀ½" - -#: ../../WPrefs.app/MouseSettings.c:788 -#, c-format -msgid "could not create temporary file %s" -msgstr "Àӽà ÆÄÀÏ %s ¸¦ ¸¸µé ¼ö ¾øÀ½" - -#: ../../WPrefs.app/MouseSettings.c:813 -#, c-format -msgid "could not rename file %s to %s\n" -msgstr "%s ÆÄÀϸíÀ» %s ·Î ¹Ù²Ü ¼ö ¾øÀ½\n" - -#: ../../WPrefs.app/MouseSettings.c:896 -msgid "Mouse Preferences" -msgstr "¸¶¿ì½º ¼³Á¤" - -#: ../../WPrefs.app/Paths.c:82 -msgid "bad value in option IconPath. Using default path list" -msgstr "IconPath ¿¡ À߸øµÈ °ª. ±âº» °æ·Î ¸ñ·Ï »ç¿ë" - -#: ../../WPrefs.app/Paths.c:99 -msgid "bad value in option PixmapPath. Using default path list" -msgstr "PixmapPath ¿¡ À߸øµÈ °ª. ±âº» °æ·Î ¸ñ·Ï »ç¿ë" - -#: ../../WPrefs.app/Paths.c:302 -msgid "Icon Search Paths" -msgstr "¾ÆÀÌÄÜ °Ë»ö °æ·Î" - -#: ../../WPrefs.app/Paths.c:314 ../../WPrefs.app/Paths.c:350 -msgid "Add" -msgstr "Ãß°¡" - -#: ../../WPrefs.app/Paths.c:321 ../../WPrefs.app/Paths.c:357 -msgid "Remove" -msgstr "»èÁ¦" - -#: ../../WPrefs.app/Paths.c:338 -msgid "Pixmap Search Paths" -msgstr "Pixmap °Ë»ö °æ·Î" - -#: ../../WPrefs.app/Paths.c:386 -msgid "Search Path Configuration" -msgstr "°Ë»ö °æ·Î ¼³Á¤" - -#: ../../WPrefs.app/Preferences.c:151 -msgid "Size Display" -msgstr "Å©±â Á¶Á¤ Ç¥½Ã ¹æ¹ý" - -#: ../../WPrefs.app/Preferences.c:156 ../../WPrefs.app/Preferences.c:172 -msgid "Corner of screen" -msgstr "È­¸é ±¸¼®" - -#: ../../WPrefs.app/Preferences.c:157 ../../WPrefs.app/Preferences.c:173 -msgid "Center of screen" -msgstr "È­¸é °¡¿îµ¥" - -#: ../../WPrefs.app/Preferences.c:158 ../../WPrefs.app/Preferences.c:174 -msgid "Center of resized window" -msgstr "ÇöÀç â °¡¿îµ¥" - -#: ../../WPrefs.app/Preferences.c:159 -msgid "Technical drawing-like" -msgstr "Á¦µµ Å©±â Ç¥½Ã ¹æ¹ýó·³" - -#: ../../WPrefs.app/Preferences.c:167 -msgid "Position Display" -msgstr "â À§Ä¡ Ç¥½Ã ¹æ¹ý" - -#: ../../WPrefs.app/Preferences.c:182 -msgid "Show balloon text for..." -msgstr "dz¼± µµ¿ò¸»Àº..." - -#: ../../WPrefs.app/Preferences.c:189 -msgid "incomplete window titles" -msgstr "ºÒ¿ÏÀüÇÑ Ã¢ ŸÀÌÆ²¿¡ Ç¥½Ã" - -#: ../../WPrefs.app/Preferences.c:190 -msgid "miniwindow titles" -msgstr "¾ÆÀÌÄÜ Å¸ÀÌÆ²¿¡ Ç¥½Ã" - -#: ../../WPrefs.app/Preferences.c:191 -msgid "application/dock icons" -msgstr "¾ÖÇø®ÄÉÀ̼Ç/dock ¾ÆÀÌÄÜ" - -#: ../../WPrefs.app/Preferences.c:204 -msgid "Raise window when switching focus with keyboard (CirculateRaise)." -msgstr "Űº¸µå·Î Æ÷Ä¿½º Àüȯ½Ã ⠿ø²(CirculateRaise)." - -#: ../../WPrefs.app/Preferences.c:210 -msgid "Keep keyboard language status for each window." -msgstr "ÇöÀç âÀÇ Å°º¸µå ¾ð¾î »óÅ À¯Áö." - -#: ../../WPrefs.app/Preferences.c:231 -msgid "Miscellaneous Ergonomic Preferences" -msgstr "±âŸ Àΰ£ ȯ°æ °øÇÐÀû ¼³Á¤" - -#: ../../WPrefs.app/Text.c:179 -#, c-format -msgid "Invalid font %s." -msgstr "À߸øµÈ ±Û²Ã %s" - -#: ../../WPrefs.app/Text.c:256 -msgid "Set Font..." -msgstr "±Û²Ã ÁöÁ¤" - -#: ../../WPrefs.app/Text.c:262 -msgid "Window Title Font" -msgstr "â Á¦¸ñ ±Û²Ã" - -#: ../../WPrefs.app/Text.c:263 -msgid "Menu Title Font" -msgstr "¸Þ´º Á¦¸ñ ±Û²Ã" - -#: ../../WPrefs.app/Text.c:264 -msgid "Menu Item Font" -msgstr "¸Þ´º Ç׸ñ ±Û²Ã" - -#: ../../WPrefs.app/Text.c:265 -msgid "Icon Title Font" -msgstr "¾ÆÀÌÄÜ Á¦¸ñ ±Û²Ã" - -#: ../../WPrefs.app/Text.c:266 -msgid "Clip Title Font" -msgstr "Ŭ¸³ Á¦¸ñ ±Û²Ã" - -#: ../../WPrefs.app/Text.c:267 -msgid "Geometry Display Font" -msgstr "À§Ä¡/Å©±â Ç¥½Ã ±Û²Ã" - -#: ../../WPrefs.app/Text.c:280 -msgid "" -"Sample Text\n" -"abcdefghijklmnopqrstuvxywz\n" -"ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" -"0123456789" -msgstr "" -"Sample Text\n" -"abcdefghijklmnopqrstuvxywz\n" -"ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" -"°¡³ª´Ù¶ó¸¶¹Ù»ç\n" -"0123456789" - -#: ../../WPrefs.app/Text.c:285 -msgid "Alignment" -msgstr "Á¤·Ä" - -#: ../../WPrefs.app/Text.c:290 -msgid "Left" -msgstr "¿ÞÂÊ" - -#: ../../WPrefs.app/Text.c:296 -msgid "Center" -msgstr "Áß¾Ó" - -#: ../../WPrefs.app/Text.c:303 -msgid "Right" -msgstr "¿À¸¥ÂÊ" - -#: ../../WPrefs.app/Text.c:325 -msgid "Text Preferences" -msgstr "ÅØ½ºÆ® ¼³Á¤" - -#: ../../WPrefs.app/TextureAndColor.c:384 -msgid "Window Title Bar" -msgstr "â Á¦¸ñ ¹Ù" - -#: ../../WPrefs.app/TextureAndColor.c:385 -msgid "Menu Title Bar" -msgstr "¸Þ´º Á¦¸ñ ¹Ù" - -#: ../../WPrefs.app/TextureAndColor.c:386 -msgid "Menu Items" -msgstr "¸Þ´º Ç׸ñ" - -#: ../../WPrefs.app/TextureAndColor.c:387 -msgid "Workspace/Clip" -msgstr "ÀÛ¾÷°ø°£/Ŭ¸³" - -#: ../../WPrefs.app/TextureAndColor.c:388 -msgid "Icons" -msgstr "¾ÆÀÌÄÜ" - -#: ../../WPrefs.app/TextureAndColor.c:399 -msgid "Focused Window" -msgstr "Ȱ¼º â" - -#: ../../WPrefs.app/TextureAndColor.c:412 -#: ../../WPrefs.app/TextureAndColor.c:443 -#: ../../WPrefs.app/TextureAndColor.c:474 -msgid "Texture" -msgstr "ÅØ½ºÃ³" - -#: ../../WPrefs.app/TextureAndColor.c:418 -#: ../../WPrefs.app/TextureAndColor.c:449 -#: ../../WPrefs.app/TextureAndColor.c:480 -msgid "Text Color" -msgstr "ÅØ½ºÆ® »ö" - -#: ../../WPrefs.app/TextureAndColor.c:423 -#: ../../WPrefs.app/TextureAndColor.c:454 -#: ../../WPrefs.app/TextureAndColor.c:485 -#: ../../WPrefs.app/TextureAndColor.c:509 -#: ../../WPrefs.app/TextureAndColor.c:575 -#: ../../WPrefs.app/TextureAndColor.c:652 -msgid "Set..." -msgstr "ÁöÁ¤..." - -#: ../../WPrefs.app/TextureAndColor.c:430 -msgid "Unfocused Window" -msgstr "ºñȰ¼º â" - -#: ../../WPrefs.app/TextureAndColor.c:461 -msgid "Owner of Focused Window" -msgstr "Ȱ¼º âÀÇ ¼ÒÀ¯ÀÚ" - -#: ../../WPrefs.app/TextureAndColor.c:494 -msgid "Unselected Items" -msgstr "¼±ÅõÇÁö ¾ÊÀº Ç׸ñ" - -#: ../../WPrefs.app/TextureAndColor.c:504 -#: ../../WPrefs.app/TextureAndColor.c:558 -msgid "Background" -msgstr "¹è°æ" - -#: ../../WPrefs.app/TextureAndColor.c:519 -msgid "Normal Text" -msgstr "º¸Åë ÅØ½ºÆ®" - -#: ../../WPrefs.app/TextureAndColor.c:529 -msgid "Disabled Text" -msgstr "»ç¿ë ºÒ°¡´ÉÇÑ ÅØ½ºÆ®" - -#: ../../WPrefs.app/TextureAndColor.c:538 -msgid "Selected Items" -msgstr "¼±ÅÃµÈ Ç׸ñ" - -#: ../../WPrefs.app/TextureAndColor.c:548 -msgid "Text" -msgstr "ÅØ½ºÆ®" - -#: ../../WPrefs.app/TextureAndColor.c:566 -msgid "Menu Title Background" -msgstr "¸Þ´º Á¦¸ñ ¹è°æ" - -#: ../../WPrefs.app/TextureAndColor.c:584 -msgid "Menu Title Text" -msgstr "¸Þ´º Á¦¸ñ ÅØ½ºÆ®" - -#: ../../WPrefs.app/TextureAndColor.c:596 -msgid "Workspace Background" -msgstr "ÀÛ¾÷°ø°£ ¹è°æ" - -#: ../../WPrefs.app/TextureAndColor.c:605 -msgid "Change" -msgstr "º¯°æ" - -#: ../../WPrefs.app/TextureAndColor.c:611 -msgid "Clip Title Text" -msgstr "Ŭ¸³ Á¦¸ñ ÅØ½ºÆ®" - -#: ../../WPrefs.app/TextureAndColor.c:621 -msgid "Normal" -msgstr "º¸Åë" - -#: ../../WPrefs.app/TextureAndColor.c:631 -msgid "Collapsed" -msgstr "Á¢Èû" - -#: ../../WPrefs.app/TextureAndColor.c:643 -msgid "Icon Background" -msgstr "¾ÆÀÌÄÜ ¹è°æ" - -#: ../../WPrefs.app/TextureAndColor.c:677 -msgid "Texture and Color Preferences" -msgstr "ÅØ½ºÃ³¿Í »ö»ó ¼³Á¤" - -#: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 -msgid "Set" -msgstr "ÁöÁ¤" - -#: ../../WPrefs.app/Themes.c:132 -msgid "Stop" -msgstr "ÁßÁö" - -#: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:205 -#: ../../WPrefs.app/Themes.c:225 -msgid "Download" -msgstr "´Ù¿î·Îµå" - -#: ../../WPrefs.app/Themes.c:173 -msgid "Save Current Theme" -msgstr "ÇöÀç Å׸¶ ÀúÀå" - -#: ../../WPrefs.app/Themes.c:182 -msgid "Load" -msgstr "ºÒ·¯¿À±â" - -#: ../../WPrefs.app/Themes.c:187 -msgid "Install" -msgstr "¼³Ä¡" - -#: ../../WPrefs.app/Themes.c:195 -msgid "Tile of The Day" -msgstr "¿À´ÃÀÇ Å¸ÀÏ(Tile)" - -#: ../../WPrefs.app/Themes.c:215 -msgid "Bar of The Day" -msgstr "¿À´ÃÀÇ ¹Ù(Bar)" - -#: ../../WPrefs.app/Themes.c:252 -msgid "Themes" -msgstr "Å׸¶" - -#: ../../WPrefs.app/WPrefs.c:201 -msgid "Window Maker Preferences" -msgstr "Window Maker ¼³Á¤" - -#: ../../WPrefs.app/WPrefs.c:225 -msgid "Revert Page" -msgstr "ÆäÀÌÁö º¹±¸" - -#: ../../WPrefs.app/WPrefs.c:231 -msgid "Revert All" -msgstr "¸ðµÎ º¹±¸" - -#: ../../WPrefs.app/WPrefs.c:237 -msgid "Save" -msgstr "ÀúÀå" - -#: ../../WPrefs.app/WPrefs.c:243 -msgid "Close" -msgstr "´Ý±â" - -#: ../../WPrefs.app/WPrefs.c:260 -msgid "Window Maker Preferences Utility" -msgstr "Window Maker ¼³Á¤ À¯Æ¿¸®Æ¼" - -#: ../../WPrefs.app/WPrefs.c:267 -#, c-format -msgid "Version %s for Window Maker %s" -msgstr "¹öÀü %s - Window Maker %s" - -#: ../../WPrefs.app/WPrefs.c:274 -msgid "Starting..." -msgstr "½ÃÀÛÇÕ´Ï´Ù..." - -#: ../../WPrefs.app/WPrefs.c:280 -msgid "" -"Programming/Design: Alfredo K. Kojima\n" -"Artwork: Marco van Hylckama Vlieg\n" -"More Programming: James Thompson" -msgstr "" -"ÇÁ·Î±×·¡¹Ö/µðÀÚÀÎ: Alfredo K. Kojima\n" -"¾ÆÆ®¿÷: Macro van Hylckama Vlieg\n" -"Ãß°¡ ÇÁ·Î±×·¡¹Ö: James Thompson" - -#: ../../WPrefs.app/WPrefs.c:368 -#, c-format -msgid "could not locate image file %s\n" -msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ãÀ» ¼ö ¾øÀ½\n" - -#: ../../WPrefs.app/WPrefs.c:474 -#, c-format -msgid "could not load image file %s:%s" -msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" - -#: ../../WPrefs.app/WPrefs.c:493 -msgid "Loading Window Maker configuration files..." -msgstr "Window Maker ¼³Á¤ ÆÄÀÏÀ» Àд Áß..." - -#: ../../WPrefs.app/WPrefs.c:497 -msgid "Initializing configuration panels..." -msgstr "¼³Á¤ ÆÐ³Î ÃʱâÈ­ Áß..." - -#: ../../WPrefs.app/WPrefs.c:525 -msgid "" -"WPrefs is free software and is distributed WITHOUT ANY WARRANTY under the " -"terms of the GNU General Public License. Redistribution of the icons in this " -"program without the program is prohibited." -msgstr "" -"WPrefs´Â °ø°³ ¼ÒÇÁÆ®¿þ¾îÀ̸ç GNU General Public License¸¦ µû¸£¸ç ¹èÆ÷¿¡ µû¸¥ " -"¾î¶°ÇÑ Ã¥ÀÓµµ ÁöÁö ¾Ê½À´Ï´Ù. ¾ÆÀÌÄÜÀÇ °æ¿ì WPrefs¿Í ÇÔ²²°¡ ¾Æ´Ï¸é ¹èÆ÷ÇÒ ¼ö " -"¾ø½À´Ï´Ù." - -#: ../../WPrefs.app/WPrefs.c:557 ../../WPrefs.app/WPrefs.c:613 -#, c-format -msgid "Window Maker domain (%s) is corrupted!" -msgstr "Window Maker µµ¸ÞÀÎ(%s)ÀÌ ±úÁ³½À´Ï´Ù!" - -#: ../../WPrefs.app/WPrefs.c:561 -#, c-format -msgid "Could not load Window Maker domain (%s) from defaults database." -msgstr "±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ Window Maker µµ¸ÞÀÎ(%s)À» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù." - -#: ../../WPrefs.app/WPrefs.c:569 -msgid "could not extract version information from Window Maker" -msgstr "Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../../WPrefs.app/WPrefs.c:570 -msgid "Make sure wmaker is in your search path." -msgstr "wmaker°¡ °Ë»ö °æ·Î¿¡ ÀÖ´ÂÁö È®ÀÎÇϼ¼¿ä." - -#: ../../WPrefs.app/WPrefs.c:573 -msgid "" -"Could not extract version from Window Maker. Make sure it is correctly " -"installed and is in your PATH environment variable." -msgstr "" -"Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù. PATH ȯ°æ º¯¼ö¿¡ ÁöÁ¤µÈ °÷¿¡ " -"Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϼ¼¿ä." - -#: ../../WPrefs.app/WPrefs.c:583 -msgid "" -"Could not extract version from Window Maker. Make sure it is correctly " -"installed." -msgstr "" -"Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù. Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö " -"È®ÀÎÇϼ¼¿ä." - -#: ../../WPrefs.app/WPrefs.c:588 -#, c-format -msgid "" -"WPrefs only supports Window Maker 0.18.0 or newer.\n" -"The version installed is %i.%i.%i\n" -msgstr "" -"WPrefs ´Â Window Maker 0.18.0 ÀÌ»ó¸¸À» Áö¿øÇÕ´Ï´Ù.\n" -"¼³Ä¡µÈ ¹öÁ¯Àº %i.%i.%i ÀÔ´Ï´Ù.\n" - -#: ../../WPrefs.app/WPrefs.c:595 -#, c-format -msgid "" -"Window Maker %i.%i.%i, which is installed in your system, is not fully " -"supported by this version of WPrefs." -msgstr "" -"½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ Window Maker %i.%i.%i´Â WPrefs¿¡¼­ Á¦´ë·Î Áö¿øÇÏ´Â ¹öÀüÀÌ " -"¾Æ´Õ´Ï´Ù." - -#: ../../WPrefs.app/WPrefs.c:602 -msgid "could not run \"wmaker -global_defaults_path\"." -msgstr "\"wmaker -global_defaults_path\"¸¦ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù." - -#: ../../WPrefs.app/WPrefs.c:617 -#, c-format -msgid "Could not load global Window Maker domain (%s)." -msgstr "Àü¿ª Window Maker µµ¸ÞÀÎ (%s)¸¦ ÀоîµéÀÏ ¼ö ¾ø½À´Ï´Ù." - -#: ../../WPrefs.app/WPrefs.c:863 -#, c-format -msgid "" -"bad speed value for option %s\n" -". Using default Medium" -msgstr "" -"¿É¼Ç %s¿¡ À߸øµÈ ¼Óµµ °ªÀ» ÁÖ¾ú½À´Ï´Ù.\n" -"±âº»°ª MediumÀ» »ç¿ëÇÕ´Ï´Ù" - -#: ../../WPrefs.app/WindowHandling.c:108 -#, c-format -msgid "bad option value %s in WindowPlacement. Using default value" -msgstr "WindowPlacement¿¡ À߸øµÈ ¿É¼Ç °ª %sÀÔ´Ï´Ù. ±âº»°ªÀ» »ç¿ëÇÕ´Ï´Ù" - -#: ../../WPrefs.app/WindowHandling.c:130 -msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" -msgstr "" -"WindowPlaceOrigin ¿É¼Ç¿¡ À߸øµÈ µ¥ÀÌÅÍÀÔ´Ï´Ù. ±âº»°ª (0,0)À» »ç¿ëÇÕ´Ï´Ù" - -#: ../../WPrefs.app/WindowHandling.c:192 -msgid "Window Placement" -msgstr "â ¹èÄ¡" - -#: ../../WPrefs.app/WindowHandling.c:197 -msgid "Automatic" -msgstr "ÀÚµ¿" - -#: ../../WPrefs.app/WindowHandling.c:198 -msgid "Random" -msgstr "ÀÓÀÇ" - -#: ../../WPrefs.app/WindowHandling.c:199 -msgid "Manual" -msgstr "¼öµ¿" - -#: ../../WPrefs.app/WindowHandling.c:200 -msgid "Cascade" -msgstr "°è´Ü½Ä" - -#: ../../WPrefs.app/WindowHandling.c:206 -msgid "Placement Origin" -msgstr "±âº» À§Ä¡" - -#: ../../WPrefs.app/WindowHandling.c:260 -msgid "Opaque Move" -msgstr "À̵¿½Ã â ³»¿ë º¸À̱â" - -#: ../../WPrefs.app/WindowHandling.c:296 -msgid "When maximizing..." -msgstr "ÃÖ´ëÈ­½Ã¿¡´Â..." - -#: ../../WPrefs.app/WindowHandling.c:301 -msgid "...do not resize over icons" -msgstr "¾ÆÀÌÄÜÀ» µ¤Áö ¾ÊÀ½" - -#: ../../WPrefs.app/WindowHandling.c:307 -msgid "...do not resize over dock" -msgstr "DockÀ» µ¤Áö ¾ÊÀ½" - -#: ../../WPrefs.app/WindowHandling.c:320 -msgid "Keep transients above their owners" -msgstr "¼ÒÀ¯ÀÚ À§¿¡¼­´Â ÀϽÃÀûÀ¸·Î âÀ» À¯Áö" - -#: ../../WPrefs.app/WindowHandling.c:347 -msgid "Window Handling Preferences" -msgstr "â ó¸® ¼³Á¤" - -#: ../../WPrefs.app/Workspace.c:137 -msgid "Workspace Navigation" -msgstr "ÀÛ¾÷°ø°£ Àüȯ" - -#: ../../WPrefs.app/Workspace.c:161 -msgid "drag windows between workspaces." -msgstr "ÀÛ¾÷°ø°£°£¿¡ â ²ø±â" - -#: ../../WPrefs.app/Workspace.c:186 -msgid "" -"switch to first workspace when switching past the last workspace and " -"vice-versa" -msgstr "" -"¸¶Áö¸· ÀÛ¾÷°ø°£ ´ÙÀ½À¸·Î ÀüȯÇÒ¶§¿¡ óÀ½ ÀÛ¾÷°ø°£À¸·Î À̵¿ (¹Ý´ëµµ ¸¶Âù°¡Áö)" - -#: ../../WPrefs.app/Workspace.c:210 -msgid "create a new workspace when switching past the last workspace." -msgstr "¸¶Áö¸· ÀÛ¾÷°ø°£ ´ÙÀ½À¸·Î Àüȯ½Ã »õ·Î¿î ÀÛ¾÷°ø°£ »ý¼º" - -#: ../../WPrefs.app/Workspace.c:218 -msgid "Dock/Clip" -msgstr "Dock/Ŭ¸³" - -#: ../../WPrefs.app/Workspace.c:287 -msgid "Workspace Preferences" -msgstr "ÀÛ¾÷°ø°£ ¼³Á¤" - -#: ../../WPrefs.app/main.c:72 -#, c-format -msgid "usage: %s [options]\n" -msgstr "»ç¿ë¹ý: %s [¿É¼Ç]\n" - -#: ../../WPrefs.app/main.c:73 -msgid "options:" -msgstr "¿É¼Ç:" - -#: ../../WPrefs.app/main.c:74 -msgid " -display \tdisplay to be used" -msgstr "-display \t»ç¿ëÇÒ µð½ºÇ÷¹ÀÌ" - -#: ../../WPrefs.app/main.c:75 -msgid " -version\t\tprint version number and exit" -msgstr "-version\t\t¹öÁ¯ Ãâ·ÂÈÄ Á¾·á" - -#: ../../WPrefs.app/main.c:132 -#, c-format -msgid "too few arguments for %s" -msgstr "%s ÀÇ Àμö°¡ ³Ê¹« ÀûÀ½" - -#: ../../WPrefs.app/main.c:154 -msgid "X server does not support locale" -msgstr "X ¼­¹ö°¡ ·ÎÄÉÀÏÀ» Áö¿øÇÏÁö ¾ÊÀ½" - -#: ../../WPrefs.app/main.c:157 -msgid "cannot set locale modifiers" -msgstr "·ÎÄÉÀÏ ¼öÁ¤ÀÚ(modifier)¸¦ ¼³Á¤ÇÒ ¼ö ¾øÀ½" - -#: ../../WPrefs.app/main.c:163 -#, c-format -msgid "could not open display %s" -msgstr "µð½ºÇ÷¹ÀÌ %s¸¦ ¿­ ¼ö ¾øÀ½" - -#: ../../WPrefs.app/main.c:171 -msgid "could not initialize application" -msgstr "¾ÖÇø®ÄÉÀ̼ÇÀ» ÃʱâÈ­ ÇÒ ¼ö ¾øÀ½" +# WPrefs.app po file for Korean. +# Copyright (C) 1998 Free Software Foundation, Inc. +# Byeong-Chan Kim , 1998. +# Update: CHOI Junho , 1998/12. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.10\n" +"POT-Creation-Date: 1999-01-29 08:50+0900\n" +"PO-Revision-Date: 1999-01-29 08:55+0900\n" +"Last-Translator: Byeong-Chan Kim \n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-KR\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: ../../WPrefs.app/Configurations.c:142 ../../WPrefs.app/Configurations.c:148 +#: ../../WPrefs.app/MouseSettings.c:526 ../../WPrefs.app/WindowHandling.c:274 +#: ../../WPrefs.app/WindowHandling.c:286 ../../WPrefs.app/Workspace.c:71 +#: ../../WPrefs.app/Workspace.c:77 +#, c-format +msgid "could not load icon %s" +msgstr "¾ÆÀÌÄÜ %s¸¦ ÀоîµéÀÏ ¼ö ¾øÀ½" + +#: ../../WPrefs.app/Configurations.c:156 ../../WPrefs.app/Workspace.c:85 +#, c-format +msgid "could not process icon %s:" +msgstr "¾ÆÀÌÄÜ %s¸¦ ó¸®ÇÒ ¼ö ¾øÀ½:" + +#: ../../WPrefs.app/Configurations.c:181 ../../WPrefs.app/Workspace.c:124 +#, c-format +msgid "could not load image file %s" +msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" + +#: ../../WPrefs.app/Configurations.c:195 +msgid "Icon Slide Speed" +msgstr "¾ÆÀÌÄÜ ½½¶óÀÌµå ¼Óµµ" + +#: ../../WPrefs.app/Configurations.c:201 +msgid "Shade Animation Speed" +msgstr "½¦ÀÌµå ¾Ö´Ï¸ÞÀÌ¼Ç ¼Óµµ" + +#: ../../WPrefs.app/Configurations.c:234 ../../WPrefs.app/Configurations.c:246 +#: ../../WPrefs.app/Focus.c:310 ../../WPrefs.app/Focus.c:321 +#: ../../WPrefs.app/MenuPreferences.c:135 +#: ../../WPrefs.app/MenuPreferences.c:146 +#: ../../WPrefs.app/MenuPreferences.c:174 +#: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:554 +#: ../../WPrefs.app/MouseSettings.c:565 ../../WPrefs.app/MouseSettings.c:627 +#: ../../WPrefs.app/MouseSettings.c:638 ../../WPrefs.app/MouseSettings.c:674 +#: ../../WPrefs.app/MouseSettings.c:689 ../../WPrefs.app/MouseSettings.c:705 +#: ../../WPrefs.app/WPrefs.c:403 ../../WPrefs.app/WPrefs.c:421 +#, c-format +msgid "could not load icon file %s" +msgstr "¾ÆÀÌÄÜ ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" + +#: ../../WPrefs.app/Configurations.c:262 +msgid "Titlebar Style" +msgstr "ŸÀÌÆ²¹Ù ½ºÅ¸ÀÏ" + +#: ../../WPrefs.app/Configurations.c:299 +msgid "Animations and Sound" +msgstr "¾Ö´Ï¸ÞÀ̼ǰú À½ÇâÈ¿°ú" + +#: ../../WPrefs.app/Configurations.c:305 +msgid "Animations" +msgstr "¾Ö´Ï¸ÞÀ̼Ç" + +#: ../../WPrefs.app/Configurations.c:321 +msgid "Superfluous" +msgstr "Superfluous" + +#: ../../WPrefs.app/Configurations.c:337 +msgid "Sounds" +msgstr "À½ÇâÈ¿°ú" + +#: ../../WPrefs.app/Configurations.c:354 +msgid "Note: sound requires a module distributed separately" +msgstr "ÁÖÀÇ: À½ÇâÈ¿°ú´Â µû·ÎÀÌ ¹èÆ÷µÇ´Â ¸ðµâÀÌ ÇÊ¿äÇÕ´Ï´Ù" + +#: ../../WPrefs.app/Configurations.c:364 +msgid "Dithering colormap for 8bpp" +msgstr "256»ö¿ë Ä÷¯¸Ê µð´õ¸µ" + +#: ../../WPrefs.app/Configurations.c:369 +msgid "Disable dithering in any visual/depth" +msgstr "¸ðµç ºñÁÖ¾ó/»ö»ó ±íÀÌ¿¡¼­ µð´õ¸µ »ç¿ëÇÏÁö ¾ÊÀ½" + +#: ../../WPrefs.app/Configurations.c:390 +msgid "More colors for applications" +msgstr "¾ÖÇø®ÄÉÀ̼ǿ¡ ´õ ¸¹Àº Ä÷¯ ºÎ¿©" + +#: ../../WPrefs.app/Configurations.c:397 +msgid "More colors for WindowMaker" +msgstr "Window Maker¿¡ ´õ ¸¹Àº Ä÷¯ ºÎ¿©" + +#: ../../WPrefs.app/Configurations.c:450 +msgid "Other Configurations" +msgstr "±× ¿Ü ¼³Á¤" + +#: ../../WPrefs.app/Expert.c:70 +msgid "Do not set non-WindowMaker specific parameters (do not use xset)" +msgstr "Window MakerÀÇ ±â´ÉÀÌ ¾Æ´Ñ °ÍÀº ¼³Á¤ÇÏÁö ¾ÊÀ½(xsetÀ» »ç¿ëÇÏÁö ¾ÊÀ½)" + +#: ../../WPrefs.app/Expert.c:71 +msgid "Automatically save session when exiting WindowMaker" +msgstr "Window Maker Á¾·á½Ã ¼¼¼Ç ÀÚµ¿ ÀúÀå" + +#: ../../WPrefs.app/Expert.c:72 +msgid "Use SaveUnder in window frames, icons, menus and other objects" +msgstr "â ÇÁ·¹ÀÓ, ¾ÆÀÌÄÜ, ¸Þ´º µî¿¡¼­ SaveUnder »ç¿ëÇÔ" + +#: ../../WPrefs.app/Expert.c:73 +msgid "Disable cycling color highlighting of icons." +msgstr "¾ÆÀÌÄÜ¿¡ »ö»ó ÇÏÀ̶óÀÌÆÃ ¼øÈ¯ »ç¿ë ¾ÊÀ½." + +#: ../../WPrefs.app/Expert.c:103 +msgid "Expert User Preferences" +msgstr "°í±Þ »ç¿ëÀÚ¿ë ¼³Á¤" + +#: ../../WPrefs.app/Focus.c:79 +#, c-format +msgid "bad option value %s for option FocusMode. Using default Manual" +msgstr "FocusMode ¿É¼Ç¿¡ À߸øµÈ °ª %s. ±âº»°ªÀÎ ManualÀ» »ç¿ë" + +#: ../../WPrefs.app/Focus.c:92 +#, c-format +msgid "bad option value %s for option ColormapMode. Using default Manual" +msgstr "ColormapMode ¿É¼Ç¿¡ À߸øµÈ °ª %s. ±âº»°ªÀÎ ManualÀ» »ç¿ë" + +#: ../../WPrefs.app/Focus.c:190 +msgid "" +"Click on the window to set\n" +"keyboard input focus." +msgstr "" +"âÀ» Ŭ¸¯ÇÏ¸é ±× Ã¢ÀÌ È°¼ºÈ­\n" +"µË´Ï´Ù." + +#: ../../WPrefs.app/Focus.c:194 +msgid "" +"Set keyboard input focus to\n" +"the window under the mouse pointer,\n" +"including the root window." +msgstr "" +"¸¶¿ì½º Æ÷ÀÎÅ͸¦ ·çÆ® âÀ»\n" +"Æ÷ÇÔÇÑ ¸ðµç ⠾Ʒ¡¿¡ ³õÀ¸¸é\n" +"±× âÀÌ È°¼ºÈ­µË´Ï´Ù." + +#: ../../WPrefs.app/Focus.c:199 +msgid "" +"Set keyboard input focus to\n" +"the window under the mouse pointer,\n" +"except the root window." +msgstr "" +"¸¶¿ì½º Æ÷ÀÎÅ͸¦ ·çÆ® âÀ»\n" +"Á¦¿ÜÇÑ ¸ðµç ⠾Ʒ¡¿¡ ³õÀ¸¸é\n" +"±× âÀÌ È°¼ºÈ­µË´Ï´Ù." + +#: ../../WPrefs.app/Focus.c:243 +msgid "Input Focus Mode" +msgstr "ÀԷ Ȱ¼ºÈ­ ¸ðµå" + +#: ../../WPrefs.app/Focus.c:248 +msgid "Click window to focus" +msgstr "Ȱ¼ºÈ­Çϱâ À§ÇØ Ã¢À» Ŭ¸¯" + +#: ../../WPrefs.app/Focus.c:249 +msgid "Focus follows mouse" +msgstr "¸¶¿ì½º¸¦ µû¸£´Â Ȱ¼ºÈ­ ¸ðµå" + +#: ../../WPrefs.app/Focus.c:250 +msgid "\"Sloppy\" focus" +msgstr "\"´À½¼ÇÑ\" Ȱ¼ºÈ­ ¸ðµå" + +#: ../../WPrefs.app/Focus.c:265 +msgid "Install colormap in the window..." +msgstr "Ä÷¯¸ÊÀÇ ¼³Ä¡´Â..." + +#: ../../WPrefs.app/Focus.c:270 +msgid "...that has the input focus." +msgstr "...ÀԷ Ȱ¼ºÈ­°¡ µÈ â." + +#: ../../WPrefs.app/Focus.c:275 +msgid "...that is under the mouse pointer." +msgstr "...¸¶¿ì½º Æ÷ÀÎÅÍ ¾Æ·¡ÀÇ Ã¢." + +#: ../../WPrefs.app/Focus.c:284 +msgid "Automatic Window Raise Delay" +msgstr "ÀÚµ¿ ⠿ø®±â Áö¿¬ ½Ã°£" + +#: ../../WPrefs.app/Focus.c:341 +msgid "msec" +msgstr "msec" + +#: ../../WPrefs.app/Focus.c:358 +msgid "Do not let applications receive the click used to focus windows." +msgstr "¾îÇø®ÄÉÀ̼ÇÀÌ Ã¢À» Ȱ¼ºÈ­Çϴ Ŭ¸¯À» ¹ÞÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù." + +#: ../../WPrefs.app/Focus.c:364 +msgid "Automatically focus new windows." +msgstr "»õ·Î¿î âÀ» ÀÚµ¿ Ȱ¼ºÈ­ÇÕ´Ï´Ù." + +#: ../../WPrefs.app/Focus.c:385 +msgid "Window Focus Preferences" +msgstr "â Ȱ¼ºÈ­ ¼³Á¤" + +#: ../../WPrefs.app/Icons.c:178 +msgid "Icon Positioning" +msgstr "¾ÆÀÌÄÜ À§Ä¡" + +#: ../../WPrefs.app/Icons.c:225 +msgid "Iconification Animation" +msgstr "¾ÆÀÌÄÜÈ­½Ã ¾Ö´Ï¸ÞÀ̼Ç" + +#: ../../WPrefs.app/Icons.c:236 +msgid "Shrinking/Zooming" +msgstr "Ãà¼Ò/È®´ë" + +#: ../../WPrefs.app/Icons.c:237 +msgid "Spinning/Twisting" +msgstr "ȸÀü/Æ®À§½ºÆ®" + +#: ../../WPrefs.app/Icons.c:238 +msgid "3D-flipping" +msgstr "3Â÷¿ø ȸÀü" + +#: ../../WPrefs.app/Icons.c:239 +msgid "None" +msgstr "¾øÀ½" + +#: ../../WPrefs.app/Icons.c:247 +msgid "Icon Display" +msgstr "¾ÆÀÌÄÜ Ç¥½Ã ¹æ¹ý" + +#: ../../WPrefs.app/Icons.c:252 +msgid "Auto-arrange icons" +msgstr "¾ÆÀÌÄÜ ÀÚµ¿ Á¤·Ä" + +#: ../../WPrefs.app/Icons.c:257 +msgid "Omnipresent miniwindows" +msgstr "¾ÆÀÌÄÜ Ç×»ó º¸ÀÓ" + +#: ../../WPrefs.app/Icons.c:265 +msgid "Icon Size" +msgstr "¾ÆÀÌÄÜ Å©±â" + +#: ../../WPrefs.app/Icons.c:335 +msgid "Icon Preferences" +msgstr "¾ÆÀÌÄÜ ¼³Á¤" + +#: ../../WPrefs.app/KeyboardSettings.c:72 +msgid "Initial Key Repeat" +msgstr "Ãʱâ Ű ¹Ýº¹ ¼Óµµ" + +#: ../../WPrefs.app/KeyboardSettings.c:113 +msgid "Key Repeat Rate" +msgstr "Ű ¹Ýº¹À²" + +#: ../../WPrefs.app/KeyboardSettings.c:153 +msgid "Type here to test" +msgstr "¿©±â¼­ ½ÃÇèÇϼ¼¿ä" + +#: ../../WPrefs.app/KeyboardSettings.c:172 +msgid "Keyboard Preferences" +msgstr "Űº¸µå ¼³Á¤" + +#: ../../WPrefs.app/KeyboardShortcuts.c:183 ../../WPrefs.app/Menu.c:934 +#: ../../WPrefs.app/MenuGuru.c:263 +msgid "Cancel" +msgstr "Ãë¼Ò" + +#: ../../WPrefs.app/KeyboardShortcuts.c:184 +msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." +msgstr "¿øÇÏ´Â ´ÜÃà۸¦ ´©¸£½Ê½Ã¿À. Ãë¼Ò¸¦ ´©¸£¸é ĸÃİ¡ Áߴܵ˴ϴÙ." + +#: ../../WPrefs.app/KeyboardShortcuts.c:204 +#: ../../WPrefs.app/KeyboardShortcuts.c:444 ../../WPrefs.app/Menu.c:946 +#: ../../WPrefs.app/Menu.c:1168 +msgid "Capture" +msgstr "ĸÃÄ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:205 +#: ../../WPrefs.app/KeyboardShortcuts.c:451 +msgid "Click Capture to interactively define the shortcut key." +msgstr "ĸÃÄ ¹öưÀ» ´­·¯ ´ÜÃà۸¦ ½±°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù." + +#: ../../WPrefs.app/KeyboardShortcuts.c:359 +msgid "Actions" +msgstr "µ¿ÀÛ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:375 +msgid "Open applications menu" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º ¿­±â" + +#: ../../WPrefs.app/KeyboardShortcuts.c:376 +msgid "Open window list menu" +msgstr "â ¸ñ·Ï ¸Þ´º ¿­±â" + +#: ../../WPrefs.app/KeyboardShortcuts.c:377 +msgid "Open window commands menu" +msgstr "â ¸í·É ¸Þ´º ¿­±â" + +#: ../../WPrefs.app/KeyboardShortcuts.c:378 +msgid "Hide active application" +msgstr "Ȱ¼ºÈ­µÈ ¾ÖÇø®ÄÉÀÌ¼Ç ¼û±è" + +#: ../../WPrefs.app/KeyboardShortcuts.c:379 +msgid "Miniaturize active window" +msgstr "Ȱ¼ºÈ­µÈ â ÃÖ¼ÒÈ­" + +#: ../../WPrefs.app/KeyboardShortcuts.c:380 +msgid "Close active window" +msgstr "Ȱ¼ºÈ­µÈ ⠴ݱâ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:381 +msgid "Maximize active window" +msgstr "Ȱ¼ºÈ­µÈ â ÃÖ´ëÈ­" + +#: ../../WPrefs.app/KeyboardShortcuts.c:382 +msgid "Maximize active window vertically" +msgstr "âÀ» ¼¼·Î·Î ÃÖ´ëÈ­" + +#: ../../WPrefs.app/KeyboardShortcuts.c:383 +msgid "Raise active window" +msgstr "Ȱ¼ºÈ­µÈ âÀ» À§·Î" + +#: ../../WPrefs.app/KeyboardShortcuts.c:384 +msgid "Lower active window" +msgstr "Ȱ¼ºÈ­µÈ âÀ» ¾Æ·¡·Î" + +#: ../../WPrefs.app/KeyboardShortcuts.c:385 +msgid "Raise/Lower window under mouse pointer" +msgstr "¸¶¿ì½º°¡ À§Ä¡ÇÑ Ã¢ ¿Ã¸²/³»¸²" + +#: ../../WPrefs.app/KeyboardShortcuts.c:386 +msgid "Shade active window" +msgstr "Ȱ¼ºÈ­µÈ â ½¦À̵ùÇϱâ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:387 +msgid "Move/Resize active window" +msgstr "Ȱ¼ºÈ­µÈ â À̵¿/Å©±â¹Ù²Þ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:388 +msgid "Select active window" +msgstr "Ȱ¼ºÈ­ â ¼±ÅÃ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:389 +msgid "Focus next window" +msgstr "´ÙÀ½ â Ȱ¼ºÈ­" + +#: ../../WPrefs.app/KeyboardShortcuts.c:390 +msgid "Focus previous window" +msgstr "ÀÌÀü â Ȱ¼ºÈ­" + +#: ../../WPrefs.app/KeyboardShortcuts.c:391 +msgid "Switch to next workspace" +msgstr "´ÙÀ½ ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:392 +msgid "Switch to previous workspace" +msgstr "ÀÌÀü ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:393 +msgid "Switch to next ten workspaces" +msgstr "10°³ ´ÙÀ½ ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:394 +msgid "Switch to previous ten workspaces" +msgstr "10°³ ÀÌÀü ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:395 +msgid "Switch to workspace 1" +msgstr "1¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:396 +msgid "Switch to workspace 2" +msgstr "2¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:397 +msgid "Switch to workspace 3" +msgstr "3¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:398 +msgid "Switch to workspace 4" +msgstr "4¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:399 +msgid "Switch to workspace 5" +msgstr "5¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:400 +msgid "Switch to workspace 6" +msgstr "6¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:401 +msgid "Switch to workspace 7" +msgstr "7¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:402 +msgid "Switch to workspace 8" +msgstr "8¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:403 +msgid "Switch to workspace 9" +msgstr "9¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:404 +msgid "Switch to workspace 10" +msgstr "10¹ø ÀÛ¾÷°ø°£À¸·Î Àüȯ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:405 +msgid "Shortcut for window 1" +msgstr "1¹ø â ´ÜÃàŰ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:406 +msgid "Shortcut for window 2" +msgstr "2¹ø â ´ÜÃàŰ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:407 +msgid "Shortcut for window 3" +msgstr "3¹ø â ´ÜÃàŰ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:408 +msgid "Shortcut for window 4" +msgstr "4¹ø â ´ÜÃàŰ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:409 +msgid "Raise Clip" +msgstr "Ŭ¸³ ¿Ã¸²" + +#: ../../WPrefs.app/KeyboardShortcuts.c:410 +msgid "Lower Clip" +msgstr "Ŭ¸³ ³»¸²" + +#: ../../WPrefs.app/KeyboardShortcuts.c:411 +msgid "Raise/Lower Clip" +msgstr "Ŭ¸³ ¿Ã¸²/³»¸²" + +#: ../../WPrefs.app/KeyboardShortcuts.c:413 +msgid "Toggle keyboard language" +msgstr "Űº¸µå ¾ð¾î ¼±ÅÃ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:427 ../../WPrefs.app/Menu.c:1157 +msgid "Shortcut" +msgstr "´ÜÃàŰ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:438 +msgid "Clear" +msgstr "Áö¿ò" + +#: ../../WPrefs.app/KeyboardShortcuts.c:499 +msgid "Keyboard Shortcut Preferences" +msgstr "Űº¸µå ´ÜÃàŰ ¼³Á¤" + +#: ../../WPrefs.app/Menu.c:373 +msgid "Window Manager" +msgstr "â °ü¸®ÀÚ" + +#: ../../WPrefs.app/Menu.c:375 +msgid "Program to open files" +msgstr "ÆÄÀÏÀ» ¿­ ÇÁ·Î±×·¥" + +#: ../../WPrefs.app/Menu.c:377 ../../WPrefs.app/Menu.c:1144 +msgid "Program to Run" +msgstr "½ÇÇàÇÒ ÇÁ·Î±×·¥" + +#: ../../WPrefs.app/Menu.c:427 ../../WPrefs.app/Menu.c:428 +#, c-format +msgid "New Command %i" +msgstr "»õ ¸í·É %i" + +#: ../../WPrefs.app/Menu.c:435 +msgid "New Submenu" +msgstr "»õ ÇϺθ޴º" + +#: ../../WPrefs.app/Menu.c:440 +msgid "External Menu" +msgstr "¿ÜºÎ ¸Þ´º" + +#: ../../WPrefs.app/Menu.c:447 +msgid "Workspaces" +msgstr "ÀÛ¾÷ °ø°£" + +#: ../../WPrefs.app/Menu.c:1028 ../../WPrefs.app/Menu.c:1043 +msgid "Commands" +msgstr "¸í·É" + +#: ../../WPrefs.app/Menu.c:1029 ../../WPrefs.app/Menu.c:1044 +msgid "Add Command" +msgstr "¸í·É Ãß°¡" + +#: ../../WPrefs.app/Menu.c:1030 ../../WPrefs.app/Menu.c:1045 +msgid "Add Submenu" +msgstr "ÇϺθ޴º Ãß°¡" + +#: ../../WPrefs.app/Menu.c:1031 ../../WPrefs.app/Menu.c:1046 +msgid "Add External Menu" +msgstr "¿ÜºÎ ¸Þ´º Ãß°¡" + +#: ../../WPrefs.app/Menu.c:1032 ../../WPrefs.app/Menu.c:1047 +msgid "Add Workspace Menu" +msgstr "ÀÛ¾÷°ø°£ ¸Þ´º Ãß°¡" + +#: ../../WPrefs.app/Menu.c:1033 ../../WPrefs.app/Menu.c:1048 +msgid "Remove Item" +msgstr "Ç׸ñ »èÁ¦" + +#: ../../WPrefs.app/Menu.c:1034 ../../WPrefs.app/Menu.c:1049 +msgid "Cut Item" +msgstr "Ç׸ñ Àß¶ó³»±â" + +#: ../../WPrefs.app/Menu.c:1035 ../../WPrefs.app/Menu.c:1050 +msgid "Copy Item" +msgstr "Ç׸ñ º¹»ç" + +#: ../../WPrefs.app/Menu.c:1036 ../../WPrefs.app/Menu.c:1051 +msgid "Paste Item" +msgstr "Ç׸ñ ºÙÀ̱â" + +#: ../../WPrefs.app/Menu.c:1080 +msgid "Label" +msgstr "·¹À̺í" + +#: ../../WPrefs.app/Menu.c:1093 +msgid "Command" +msgstr "¸í·É" + +#: ../../WPrefs.app/Menu.c:1098 +msgid "Run Program" +msgstr "ÇÁ·Î±×·¥ ½ÇÇà" + +#: ../../WPrefs.app/Menu.c:1099 +msgid "Arrange Icons" +msgstr "¾ÆÀÌÄÜ Á¤·Ä" + +#: ../../WPrefs.app/Menu.c:1100 +msgid "Hide Others" +msgstr "´Ù¸¥ â ¼û±â±â" + +#: ../../WPrefs.app/Menu.c:1101 +msgid "Show All Windows" +msgstr "¸ðµç â º¸À̱â" + +#: ../../WPrefs.app/Menu.c:1102 +msgid "Exit WindowMaker" +msgstr "Window Maker Á¾·á" + +#: ../../WPrefs.app/Menu.c:1103 +msgid "Exit X Session" +msgstr "X ¼¼¼Ç Á¾·á" + +#: ../../WPrefs.app/Menu.c:1104 +msgid "Start window manager" +msgstr "â °ü¸®ÀÚ ½ÃÀÛ " + +#: ../../WPrefs.app/Menu.c:1105 +msgid "Restart WindowMaker" +msgstr "Window Maker Àç½ÃÀÛ" + +#: ../../WPrefs.app/Menu.c:1106 +msgid "Save Session" +msgstr "¼¼¼Ç ÀúÀå" + +#: ../../WPrefs.app/Menu.c:1107 +msgid "Clear Session" +msgstr "¼¼¼Ç Áö¿ì±â" + +#: ../../WPrefs.app/Menu.c:1108 +msgid "Refresh Screen" +msgstr "´Ù½Ã ±×¸®±â" + +#: ../../WPrefs.app/Menu.c:1109 +msgid "Info Panel" +msgstr "Á¤º¸ ÆÐ³Î" + +#: ../../WPrefs.app/Menu.c:1110 +msgid "Legal Panel" +msgstr "¹ýÀû Á¤º¸ ÆÐ³Î" + +#: ../../WPrefs.app/Menu.c:1118 +msgid "Open workspace menu" +msgstr "ÀÛ¾÷°ø°£ ¸Þ´º ¿­±â" + +#: ../../WPrefs.app/Menu.c:1125 +msgid "No confirmation panel" +msgstr "È®ÀÎ ÆÐ³Î ¾øÀ½" + +#: ../../WPrefs.app/Menu.c:1131 +msgid "Menu Path/Directory List" +msgstr "¸Þ´º °æ·Î/µð·ºÅ丮 ¸ñ·Ï" + +#: ../../WPrefs.app/Menu.c:1176 +msgid "Ask help to the Guru" +msgstr "Guru¿¡°Ô µµ¿ò ¿äû" + +#. if there is a localized plmenu for the tongue put it's filename here +#: ../../WPrefs.app/Menu.c:1287 ../../WPrefs.app/Menu.c:1294 +#, c-format +msgid "%s/Library/WindowMaker/plmenu" +msgstr "%s/Library/WindowMaker/plmenu.ko" + +#: ../../WPrefs.app/Menu.c:1302 ../../WPrefs.app/MouseSettings.c:146 +#: ../../WPrefs.app/MouseSettings.c:169 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:572 +#: ../../WPrefs.app/WPrefs.c:582 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 +msgid "Error" +msgstr "¿¡·¯" + +#: ../../WPrefs.app/Menu.c:1302 +msgid "Could not copy default plmenu file from ~/GNUstep/Library/WindowMaker" +msgstr "±âº» plmenu ÆÄÀÏÀ» ~/GNUstep/Library/WindowMAker¿¡¼­ º¹»çÇÒ ¼ö ¾øÀ½" + +#: ../../WPrefs.app/Menu.c:1304 ../../WPrefs.app/Menu.c:1354 +#: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 +#: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:148 +#: ../../WPrefs.app/MouseSettings.c:171 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:574 +#: ../../WPrefs.app/WPrefs.c:584 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:597 ../../WPrefs.app/WPrefs.c:614 +#: ../../WPrefs.app/WPrefs.c:619 +msgid "OK" +msgstr "È®ÀÎ" + +#: ../../WPrefs.app/Menu.c:1339 +msgid "" +"The format of the menu in ~/G/D/WMRootMenu is not recognized by WPrefs. It " +"might be in a format different than the one supported by WPrefs or contain a " +"syntax error. Do you want to continue using the current menu to edit it by " +"hand later or replace it with a default menu in the new format?" +msgstr "" +"~/G/D/WMRootMenuÀÇ ¸Þ´º´Â WPrefs°¡ ÀνÄÇÒ ¼ö ÀÖ´Â Çü½ÄÀÌ ¾Æ´Õ´Ï´Ù. WPrefs°¡ " +"Áö¿øÇÏ´Â Çü½Ä°ú ´Ù¸£°Å³ª ±¸¹® ¿¡·¯ÀÎ °Í °°½À´Ï´Ù. ÇöÀç »õ·ÎÀÌ ÆíÁýÇÏ´Â " +"¸Þ´º¸¦ ±âº» ¸Þ´º·Î »ç¿ëÇϽðڽÀ´Ï±î?" + +#: ../../WPrefs.app/Menu.c:1346 ../../WPrefs.app/Menu.c:1353 +#: ../../WPrefs.app/WPrefs.c:597 +msgid "Warning" +msgstr "°æ°í" + +#: ../../WPrefs.app/Menu.c:1346 +msgid "Keep current menu" +msgstr "ÇöÀç ¸Þ´º À¯Áö" + +#: ../../WPrefs.app/Menu.c:1347 +msgid "Install default menu" +msgstr "±âº» ¸Þ´º ¼³Ä¡" + +#: ../../WPrefs.app/Menu.c:1353 +msgid "Any changes made in this section will not be saved" +msgstr "ÀÌ ¼½¼Ç¿¡¼­ ¼öÁ¤ÇÑ ³»¿ëÀº ÀúÀåµÇÁö ¾Ê½À´Ï´Ù" + +#: ../../WPrefs.app/Menu.c:1419 +msgid "Applications Menu Definition" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º Á¤ÀÇ" + +#: ../../WPrefs.app/MenuGuru.c:106 +msgid "Menu Guru - Select Type" +msgstr "¸Þ´º Guru - ÇüŸ¦ ¼±ÅÃÇϼ¼¿ä" + +#: ../../WPrefs.app/MenuGuru.c:111 ../../WPrefs.app/MenuGuru.c:133 +#: ../../WPrefs.app/MenuGuru.c:251 +msgid "Next" +msgstr "´ÙÀ½" + +#: ../../WPrefs.app/MenuGuru.c:114 +msgid "Menu Guru - Select Menu File" +msgstr "¸Þ´º Guru - ¸Þ´º ÆÄÀÏÀ» ¼±ÅÃÇϼ¼¿ä" + +#: ../../WPrefs.app/MenuGuru.c:122 +msgid "Menu Guru - Select Pipe Command" +msgstr "¸Þ´º Guru - ÆÄÀÌÇÁ ¸í·ÉÀ» ¼±ÅÃÇϼ¼¿ä" + +#: ../../WPrefs.app/MenuGuru.c:129 +msgid "Menu Guru - Select Directories" +msgstr "¸Þ´º Guru - µð·ºÅ丮¸¦ ¼±ÅÃÇϼ¼¿ä" + +#: ../../WPrefs.app/MenuGuru.c:136 +msgid "Menu Guru - Select Command" +msgstr "¸Þ´º Guru - ¸í·ÉÀ» ¼±ÅÃÇϼ¼¿ä" + +#: ../../WPrefs.app/MenuGuru.c:257 +msgid "Back" +msgstr "¾ÕÀ¸·Î" + +#: ../../WPrefs.app/MenuGuru.c:271 +msgid "" +"This process will help you create a submenu which definition is located in " +"another file or is created dynamically.\n" +"What do you want to use as the contents of the submenu?" +msgstr "" +"ÀÌ °úÁ¤Àº ´Ù¸¥ ÆÄÀÏ¿¡ Á¤Àǰ¡ Àְųª ÀÚµ¿ÀûÀ¸·Î »ý¼ºµÇ´Â ÇϺθ޴º¸¦ ¸¸µå´Â µ¥ " +"µµ¿òÀ» ÁÝ´Ï´Ù.\n" +"ºÎ¸Þ´ºÀÇ ³»¿ëÀ¸·Î ¾î¶² °ÍÀ» »ç¿ëÇÏ°í ½Í½À´Ï±î?" + +#: ../../WPrefs.app/MenuGuru.c:279 +msgid "" +"A file containing the menu definition in the plain text (non-property list) " +"menu format." +msgstr "¸Þ´º Á¤ÀǸ¦ º¸Åë ÅØ½ºÆ®·Î(Ư¼º ¾ø´Â ¸ñ·Ï) ¾´ ÆÄÀÏ." + +#: ../../WPrefs.app/MenuGuru.c:285 +msgid "The menu definition generated by a script/program read through a pipe." +msgstr "½ºÅ©¸³Æ®/ÇÁ·Î±×·¥À¸·Î »ý¼ºÇÏ¿© ÆÄÀÌÇÁ·Î ÀоîµéÀÌ´Â ¸Þ´º Á¤ÀÇ." + +#: ../../WPrefs.app/MenuGuru.c:291 +msgid "The files in one or more directories." +msgstr "Çϳª ÀÌ»óÀÇ µð·ºÅ丮ÀÇ ÆÄÀÏ." + +#: ../../WPrefs.app/MenuGuru.c:303 +msgid "Type the path for the menu file:" +msgstr "¸Þ´º ÆÄÀÏÀÇ °æ·Î¸¦ ÀûÀ¸¼¼¿ä:" + +#: ../../WPrefs.app/MenuGuru.c:318 +msgid "" +"The menu file must contain a menu in the plain text menu file format. This " +"format is described in the menu files included with WindowMaker, probably at " +"~/GNUstep/Library/WindowMaker/menu" +msgstr "" +"¸Þ´º ÆÄÀÏÀÇ ³»¿ëÀº º¸Åë ÅØ½ºÆ®·Î µÈ ¸Þ´º ÆÄÀÏ Çü½ÄÀÇ ¸Þ´ºÀÔ´Ï´Ù. ÀÌ Çü½ÄÀº " +"WindowMaker¿¡ Æ÷ÇÔµÈ ¸Þ´º ÆÄÀÏÀ» º¸¸é µÇ¸ç, º¸Åë " +"~/GNUstep/Library/WindowMaker/menu.koÀÔ´Ï´Ù." + +#: ../../WPrefs.app/MenuGuru.c:328 +msgid "Type the command that will generate the menu definition:" +msgstr "¸Þ´º Á¤ÀǸ¦ ¸¸µé¾î³¾ ¸í·ÉÀ» ÀÔ·ÂÇϼ¼¿ä:" + +#: ../../WPrefs.app/MenuGuru.c:338 +msgid "" +"The command supplied must generate and output a valid menu definition to " +"stdout. This definition should be in the plain text menu file format, " +"described in the menu files included with WindowMaker, usually at " +"~/GNUstep/Library/WindowMaker/menu" +msgstr "" +"ÀÌ ¸í·ÉÀº À¯È¿ÇÑ ¸Þ´º Á¤ÀǸ¦ ¸¸µé¾î¼­ Ç¥ÁØ Ãâ·ÂÀ¸·Î ³»º¸³»¾ß ÇÕ´Ï´Ù. ÀÌ " +"Á¤ÀÇ´Â º¸Åë ÅØ½ºÆ®·Î µÈ ¸Þ´º ÆÄÀÏ Çü½ÄÀ̾î¾ß Çϸç, WindowMaker¿¡ Æ÷ÇÔµÈ ¸Þ´º " +"ÆÄÀÏ¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. º¸Åë ~/GNUstep/Library/WindowMaker/menu.ko ÀÔ´Ï´Ù" + +#: ../../WPrefs.app/MenuGuru.c:350 ../../WPrefs.app/MenuGuru.c:372 +#: ../../WPrefs.app/MenuGuru.c:394 +msgid "" +"Type the path for the directory. You can type more than one path by " +"separating them with spaces." +msgstr "" +"µð·ºÅ丮ÀÇ °æ·Î¸¦ ÀÔ·ÂÇϼ¼¿ä. ºóÄ­À¸·Î ºÐ¸®Çؼ­ Çϳª ÀÌ»óÀÇ °æ·Î¸¦ ¾µ ¼ö " +"ÀÖ½À´Ï´Ù." + +#: ../../WPrefs.app/MenuGuru.c:361 ../../WPrefs.app/MenuGuru.c:383 +#: ../../WPrefs.app/MenuGuru.c:405 +msgid "" +"The menu generated will have an item for each file in the directory. The " +"directories can contain program executables or data files (such as jpeg " +"images)." +msgstr "" +"»ý¼ºµÇ´Â ¸Þ´º´Â µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ¿¡ ´ëÇØ Ç׸ñÀ» °®½À´Ï´Ù. µð·ºÅ丮¿¡´Â " +"ÇÁ·Î±×·¥ ½ÇÇà ÆÄÀÏÀ̳ª µ¥ÀÌÅÍ ÆÄÀÏÀ» ³ÖÀ¸¸é µË´Ï´Ù.(jpeg À̹ÌÁö °°Àº °Íµé)" + +#: ../../WPrefs.app/MenuGuru.c:415 +msgid "" +"If the directory contain data files, type the command used to open these " +"files. Otherwise, leave it in blank." +msgstr "" +"µð·ºÅ丮¿¡ µ¥ÀÌÅÍ ÆÄÀÏÀÌ ÀÖ´Â °æ¿ì, ÀÌ ÆÄÀÏÀ» ¿­±â À§ÇØ »ç¿ëÇÒ ¸í·ÉÀ» " +"ÀÔ·ÂÇϼ¼¿ä. ±×·¸Áö ¾ÊÀ¸¸é ºóÄ­À¸·Î µÎ¼¼¿ä." + +#: ../../WPrefs.app/MenuGuru.c:426 +msgid "" +"Each file in the directory will have an item and they will be opened with " +"the supplied command.For example, if the directory contains image files and " +"the command is \"xv -root\", each file in the directory will have a menu " +"item like \"xv -root imagefile\"." +msgstr "" +"µð·ºÅ丮ÀÇ °¢ ÆÄÀÏ¿¡´Â Ç׸ñÀÌ ÀÖÀ¸¸ç Á¦°øµÈ ¸í·ÉÀ¸·Î ¿­ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ " +"µé¸é, ÀÌ µð·ºÅ丮¿¡ À̹ÌÁö ÆÄÀÏÀÌ ÀÖ°í ¸í·ÉÀÌ \"xv -root\"À̸é, µð·ºÅ丮ÀÇ " +"°¢ ÆÄÀÏÀº \"xv -root À̹ÌÁöÆÄÀÏ\"°ú °°Àº ¸Þ´º Ç׸ñÀ» °®½À´Ï´Ù." + +#: ../../WPrefs.app/MenuPreferences.c:112 +msgid "Menu Scrolling Speed" +msgstr "¸Þ´º ½ºÅ©·Ñ ¼Óµµ" + +#: ../../WPrefs.app/MenuPreferences.c:161 +msgid "Submenu Alignment" +msgstr "ºÎ¸Þ´º Á¤·Ä" + +#: ../../WPrefs.app/MenuPreferences.c:204 +msgid "" +"Always open submenus inside the screen, instead of scrolling.\n" +"Note: this can be an annoyance at some circumstances." +msgstr "" +"½ºÅ©·ÑÇÏ´Â ´ë½Å Ç×»ó È­¸é ³»¿¡ ºÎ¸Þ´º¸¦ ¿±´Ï´Ù.\n" +"ÁÖÀÇ: ¾î¶² ȯ°æ¿¡¼­´Â ±ÍÂúÀ»Áöµµ ¸ð¸¨´Ï´Ù." + +#: ../../WPrefs.app/MenuPreferences.c:209 +msgid "Scroll off-screen menus when pointer is moved over them." +msgstr "È­¸é ¹ÛÀ¸·Î ³ª°£ ¸Þ´º ÂÊÀ¸·Î ¸¶¿ì½º¸¦ ¿òÁ÷ÀÌ¸é ½ºÅ©·ÑÇÕ´Ï´Ù." + +#: ../../WPrefs.app/MenuPreferences.c:229 +msgid "Menu Preferences" +msgstr "¸Þ´º ¼³Á¤" + +#: ../../WPrefs.app/MouseSettings.c:147 +msgid "Invalid mouse acceleration value. Must be a positive real value." +msgstr "À߸øµÈ ¸¶¿ì½º °¡¼Ó ÀÓ°èÄ¡ °ª. °¡¼Ó Àü¿¡ ¿òÁ÷ÀÏ Çȼ¿ÀÇ ¼ö¿©¾ß ÇÔ." + +#: ../../WPrefs.app/MouseSettings.c:170 +msgid "" +"Invalid mouse acceleration threshold value. Must be the number of pixels to " +"travel before accelerating." +msgstr "" +"À߸øµÈ ¸¶¿ì½º °¡¼Ó ÀÓ°èÄ¡ °ªÀÔ´Ï´Ù. °¡¼Ó Àü¿¡ ¿òÁ÷ÀÏ Çȼ¿ÀÇ ¼ö°¡ µÇ¾î¾ß " +"ÇÕ´Ï´Ù." + +#: ../../WPrefs.app/MouseSettings.c:225 +#, c-format +msgid "mouse button %s not supported by WPrefs." +msgstr "¸¶¿ì½º ¹öư %s ´Â WPrefs¿¡¼­ Áö¿øÇÏÁö ¾Ê½À´Ï´Ù." + +#: ../../WPrefs.app/MouseSettings.c:259 ../../WPrefs.app/MouseSettings.c:270 +#: ../../WPrefs.app/MouseSettings.c:281 +#, c-format +msgid "bad value %s for option %s" +msgstr "%s ¿É¼Ç¿¡ À߸øµÈ °ª %s" + +#: ../../WPrefs.app/MouseSettings.c:341 +#, c-format +msgid "" +"modifier key %s for option ModifierKey was not recognized. Using %s as " +"default" +msgstr "" +"ModifierKey ÀÇ ¼öÁ¤ÀÚ Å° °ª %s ¸¦ ÀνÄÇÒ ¼ö ¾ø½À´Ï´Ù. ±âº»°ªÀÎ %s ¸¦ " +"»ç¿ëÇÕ´Ï´Ù." + +#: ../../WPrefs.app/MouseSettings.c:366 +msgid "could not retrieve keyboard modifier mapping" +msgstr "Űº¸µå ¼öÁ¤ÀÚ ¸ÅÇÎÀ» ¾òÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../../WPrefs.app/MouseSettings.c:513 +msgid "Mouse Speed" +msgstr "¸¶¿ì½º ¼Óµµ" + +#: ../../WPrefs.app/MouseSettings.c:575 +msgid "Acceler.:" +msgstr "°¡¼Ó.:" + +#: ../../WPrefs.app/MouseSettings.c:587 +msgid "Threshold:" +msgstr "ÀÓ°èÄ¡:" + +#: ../../WPrefs.app/MouseSettings.c:602 +msgid "Double-Click Delay" +msgstr "´õºí Ŭ¸¯ Áö¿¬" + +#: ../../WPrefs.app/MouseSettings.c:646 +msgid "Test" +msgstr "½ÃÇè" + +#: ../../WPrefs.app/MouseSettings.c:656 +msgid "Workspace Mouse Actions" +msgstr "ÀÛ¾÷°ø°£ ¸¶¿ì½º µ¿ÀÛ" + +#: ../../WPrefs.app/MouseSettings.c:661 +msgid "Disable mouse actions" +msgstr "¸¶¿ì½º µ¿ÀÛ »ç¿ë ¾ÊÀ½" + +#: ../../WPrefs.app/MouseSettings.c:714 +msgid "Applications menu" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º" + +#: ../../WPrefs.app/MouseSettings.c:720 +msgid "Window list menu" +msgstr "â ¸ñ·Ï ¸Þ´º" + +#: ../../WPrefs.app/MouseSettings.c:726 +msgid "Select windows" +msgstr "â ¼±ÅÃ" + +#: ../../WPrefs.app/MouseSettings.c:761 +msgid "Mouse Grab Modifier" +msgstr "¸¶¿ì½º Àâ±â ¼öÁ¤ÀÚ(Modifier)" + +#: ../../WPrefs.app/MouseSettings.c:795 +#, c-format +msgid "could not create %s" +msgstr "%s ¸¦ ¸¸µé ¼ö ¾øÀ½" + +#: ../../WPrefs.app/MouseSettings.c:811 +#, c-format +msgid "could not create temporary file %s" +msgstr "Àӽà ÆÄÀÏ %s ¸¦ ¸¸µé ¼ö ¾øÀ½" + +#: ../../WPrefs.app/MouseSettings.c:836 +#, c-format +msgid "could not rename file %s to %s\n" +msgstr "%s ÆÄÀϸíÀ» %s ·Î ¹Ù²Ü ¼ö ¾øÀ½\n" + +#: ../../WPrefs.app/MouseSettings.c:919 +msgid "Mouse Preferences" +msgstr "¸¶¿ì½º ¼³Á¤" + +#: ../../WPrefs.app/Paths.c:82 +msgid "bad value in option IconPath. Using default path list" +msgstr "IconPath ¿¡ À߸øµÈ °ª. ±âº» °æ·Î ¸ñ·Ï »ç¿ë" + +#: ../../WPrefs.app/Paths.c:99 +msgid "bad value in option PixmapPath. Using default path list" +msgstr "PixmapPath ¿¡ À߸øµÈ °ª. ±âº» °æ·Î ¸ñ·Ï »ç¿ë" + +#: ../../WPrefs.app/Paths.c:302 +msgid "Icon Search Paths" +msgstr "¾ÆÀÌÄÜ °Ë»ö °æ·Î" + +#: ../../WPrefs.app/Paths.c:314 ../../WPrefs.app/Paths.c:350 +msgid "Add" +msgstr "Ãß°¡" + +#: ../../WPrefs.app/Paths.c:321 ../../WPrefs.app/Paths.c:357 +msgid "Remove" +msgstr "»èÁ¦" + +#: ../../WPrefs.app/Paths.c:338 +msgid "Pixmap Search Paths" +msgstr "Pixmap °Ë»ö °æ·Î" + +#: ../../WPrefs.app/Paths.c:386 +msgid "Search Path Configuration" +msgstr "°Ë»ö °æ·Î ¼³Á¤" + +#: ../../WPrefs.app/Preferences.c:151 +msgid "Size Display" +msgstr "Å©±â Á¶Á¤ Ç¥½Ã ¹æ¹ý" + +#: ../../WPrefs.app/Preferences.c:156 ../../WPrefs.app/Preferences.c:172 +msgid "Corner of screen" +msgstr "È­¸é ±¸¼®" + +#: ../../WPrefs.app/Preferences.c:157 ../../WPrefs.app/Preferences.c:173 +msgid "Center of screen" +msgstr "È­¸é °¡¿îµ¥" + +#: ../../WPrefs.app/Preferences.c:158 ../../WPrefs.app/Preferences.c:174 +msgid "Center of resized window" +msgstr "ÇöÀç â °¡¿îµ¥" + +#: ../../WPrefs.app/Preferences.c:159 +msgid "Technical drawing-like" +msgstr "Á¦µµ Å©±â Ç¥½Ã ¹æ¹ýó·³" + +#: ../../WPrefs.app/Preferences.c:167 +msgid "Position Display" +msgstr "â À§Ä¡ Ç¥½Ã ¹æ¹ý" + +#: ../../WPrefs.app/Preferences.c:182 +msgid "Show balloon text for..." +msgstr "dz¼± µµ¿ò¸»Àº..." + +#: ../../WPrefs.app/Preferences.c:189 +msgid "incomplete window titles" +msgstr "ºÒ¿ÏÀüÇÑ Ã¢ ŸÀÌÆ²¿¡ Ç¥½Ã" + +#: ../../WPrefs.app/Preferences.c:190 +msgid "miniwindow titles" +msgstr "¾ÆÀÌÄÜ Å¸ÀÌÆ²¿¡ Ç¥½Ã" + +#: ../../WPrefs.app/Preferences.c:191 +msgid "application/dock icons" +msgstr "¾ÖÇø®ÄÉÀ̼Ç/dock ¾ÆÀÌÄÜ" + +#: ../../WPrefs.app/Preferences.c:204 +msgid "Raise window when switching focus with keyboard (CirculateRaise)." +msgstr "Űº¸µå·Î Æ÷Ä¿½º Àüȯ½Ã ⠿ø²(CirculateRaise)." + +#: ../../WPrefs.app/Preferences.c:210 +msgid "Keep keyboard language status for each window." +msgstr "ÇöÀç âÀÇ Å°º¸µå ¾ð¾î »óÅ À¯Áö." + +#: ../../WPrefs.app/Preferences.c:231 +msgid "Miscellaneous Ergonomic Preferences" +msgstr "±âŸ Àΰ£ ȯ°æ °øÇÐÀû ¼³Á¤" + +#: ../../WPrefs.app/Text.c:179 +#, c-format +msgid "Invalid font %s." +msgstr "À߸øµÈ ±Û²Ã %s" + +#: ../../WPrefs.app/Text.c:256 +msgid "Set Font..." +msgstr "±Û²Ã ÁöÁ¤" + +#: ../../WPrefs.app/Text.c:262 +msgid "Window Title Font" +msgstr "â Á¦¸ñ ±Û²Ã" + +#: ../../WPrefs.app/Text.c:263 +msgid "Menu Title Font" +msgstr "¸Þ´º Á¦¸ñ ±Û²Ã" + +#: ../../WPrefs.app/Text.c:264 +msgid "Menu Item Font" +msgstr "¸Þ´º Ç׸ñ ±Û²Ã" + +#: ../../WPrefs.app/Text.c:265 +msgid "Icon Title Font" +msgstr "¾ÆÀÌÄÜ Á¦¸ñ ±Û²Ã" + +#: ../../WPrefs.app/Text.c:266 +msgid "Clip Title Font" +msgstr "Ŭ¸³ Á¦¸ñ ±Û²Ã" + +#: ../../WPrefs.app/Text.c:267 +msgid "Geometry Display Font" +msgstr "À§Ä¡/Å©±â Ç¥½Ã ±Û²Ã" + +#: ../../WPrefs.app/Text.c:280 +msgid "" +"Sample Text\n" +"abcdefghijklmnopqrstuvxywz\n" +"ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" +"0123456789" +msgstr "" +"Sample Text\n" +"abcdefghijklmnopqrstuvxywz\n" +"ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" +"°¡³ª´Ù¶ó¸¶¹Ù»ç\n" +"0123456789" + +#: ../../WPrefs.app/Text.c:285 +msgid "Alignment" +msgstr "Á¤·Ä" + +#: ../../WPrefs.app/Text.c:290 +msgid "Left" +msgstr "¿ÞÂÊ" + +#: ../../WPrefs.app/Text.c:296 +msgid "Center" +msgstr "Áß¾Ó" + +#: ../../WPrefs.app/Text.c:303 +msgid "Right" +msgstr "¿À¸¥ÂÊ" + +#: ../../WPrefs.app/Text.c:325 +msgid "Text Preferences" +msgstr "ÅØ½ºÆ® ¼³Á¤" + +#: ../../WPrefs.app/TextureAndColor.c:384 +msgid "Window Title Bar" +msgstr "â Á¦¸ñ ¹Ù" + +#: ../../WPrefs.app/TextureAndColor.c:385 +msgid "Menu Title Bar" +msgstr "¸Þ´º Á¦¸ñ ¹Ù" + +#: ../../WPrefs.app/TextureAndColor.c:386 +msgid "Menu Items" +msgstr "¸Þ´º Ç׸ñ" + +#: ../../WPrefs.app/TextureAndColor.c:387 +msgid "Workspace/Clip" +msgstr "ÀÛ¾÷°ø°£/Ŭ¸³" + +#: ../../WPrefs.app/TextureAndColor.c:388 +msgid "Icons" +msgstr "¾ÆÀÌÄÜ" + +#: ../../WPrefs.app/TextureAndColor.c:399 +msgid "Focused Window" +msgstr "Ȱ¼º â" + +#: ../../WPrefs.app/TextureAndColor.c:412 +#: ../../WPrefs.app/TextureAndColor.c:443 +#: ../../WPrefs.app/TextureAndColor.c:474 +msgid "Texture" +msgstr "ÅØ½ºÃ³" + +#: ../../WPrefs.app/TextureAndColor.c:418 +#: ../../WPrefs.app/TextureAndColor.c:449 +#: ../../WPrefs.app/TextureAndColor.c:480 +msgid "Text Color" +msgstr "ÅØ½ºÆ® »ö" + +#: ../../WPrefs.app/TextureAndColor.c:423 +#: ../../WPrefs.app/TextureAndColor.c:454 +#: ../../WPrefs.app/TextureAndColor.c:485 +#: ../../WPrefs.app/TextureAndColor.c:509 +#: ../../WPrefs.app/TextureAndColor.c:575 +#: ../../WPrefs.app/TextureAndColor.c:652 +msgid "Set..." +msgstr "ÁöÁ¤..." + +#: ../../WPrefs.app/TextureAndColor.c:430 +msgid "Unfocused Window" +msgstr "ºñȰ¼º â" + +#: ../../WPrefs.app/TextureAndColor.c:461 +msgid "Owner of Focused Window" +msgstr "Ȱ¼º âÀÇ ¼ÒÀ¯ÀÚ" + +#: ../../WPrefs.app/TextureAndColor.c:494 +msgid "Unselected Items" +msgstr "¼±ÅõÇÁö ¾ÊÀº Ç׸ñ" + +#: ../../WPrefs.app/TextureAndColor.c:504 +#: ../../WPrefs.app/TextureAndColor.c:558 +msgid "Background" +msgstr "¹è°æ" + +#: ../../WPrefs.app/TextureAndColor.c:519 +msgid "Normal Text" +msgstr "º¸Åë ÅØ½ºÆ®" + +#: ../../WPrefs.app/TextureAndColor.c:529 +msgid "Disabled Text" +msgstr "»ç¿ë ºÒ°¡´ÉÇÑ ÅØ½ºÆ®" + +#: ../../WPrefs.app/TextureAndColor.c:538 +msgid "Selected Items" +msgstr "¼±ÅÃµÈ Ç׸ñ" + +#: ../../WPrefs.app/TextureAndColor.c:548 +msgid "Text" +msgstr "ÅØ½ºÆ®" + +#: ../../WPrefs.app/TextureAndColor.c:566 +msgid "Menu Title Background" +msgstr "¸Þ´º Á¦¸ñ ¹è°æ" + +#: ../../WPrefs.app/TextureAndColor.c:584 +msgid "Menu Title Text" +msgstr "¸Þ´º Á¦¸ñ ÅØ½ºÆ®" + +#: ../../WPrefs.app/TextureAndColor.c:596 +msgid "Workspace Background" +msgstr "ÀÛ¾÷°ø°£ ¹è°æ" + +#: ../../WPrefs.app/TextureAndColor.c:605 +msgid "Change" +msgstr "º¯°æ" + +#: ../../WPrefs.app/TextureAndColor.c:611 +msgid "Clip Title Text" +msgstr "Ŭ¸³ Á¦¸ñ ÅØ½ºÆ®" + +#: ../../WPrefs.app/TextureAndColor.c:621 +msgid "Normal" +msgstr "º¸Åë" + +#: ../../WPrefs.app/TextureAndColor.c:631 +msgid "Collapsed" +msgstr "Á¢Èû" + +#: ../../WPrefs.app/TextureAndColor.c:643 +msgid "Icon Background" +msgstr "¾ÆÀÌÄÜ ¹è°æ" + +#: ../../WPrefs.app/TextureAndColor.c:677 +msgid "Texture and Color Preferences" +msgstr "ÅØ½ºÃ³¿Í »ö»ó ¼³Á¤" + +#: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 +msgid "Set" +msgstr "ÁöÁ¤" + +#: ../../WPrefs.app/Themes.c:132 +msgid "Stop" +msgstr "ÁßÁö" + +#: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:205 +#: ../../WPrefs.app/Themes.c:225 +msgid "Download" +msgstr "´Ù¿î·Îµå" + +#: ../../WPrefs.app/Themes.c:173 +msgid "Save Current Theme" +msgstr "ÇöÀç Å׸¶ ÀúÀå" + +#: ../../WPrefs.app/Themes.c:182 +msgid "Load" +msgstr "ºÒ·¯¿À±â" + +#: ../../WPrefs.app/Themes.c:187 +msgid "Install" +msgstr "¼³Ä¡" + +#: ../../WPrefs.app/Themes.c:195 +msgid "Tile of The Day" +msgstr "¿À´ÃÀÇ Å¸ÀÏ(Tile)" + +#: ../../WPrefs.app/Themes.c:215 +msgid "Bar of The Day" +msgstr "¿À´ÃÀÇ ¹Ù(Bar)" + +#: ../../WPrefs.app/Themes.c:252 +msgid "Themes" +msgstr "Å׸¶" + +#: ../../WPrefs.app/WPrefs.c:201 +msgid "Window Maker Preferences" +msgstr "Window Maker ¼³Á¤" + +#: ../../WPrefs.app/WPrefs.c:225 +msgid "Revert Page" +msgstr "ÆäÀÌÁö º¹±¸" + +#: ../../WPrefs.app/WPrefs.c:231 +msgid "Revert All" +msgstr "¸ðµÎ º¹±¸" + +#: ../../WPrefs.app/WPrefs.c:237 +msgid "Save" +msgstr "ÀúÀå" + +#: ../../WPrefs.app/WPrefs.c:243 +msgid "Close" +msgstr "´Ý±â" + +#: ../../WPrefs.app/WPrefs.c:260 +msgid "Window Maker Preferences Utility" +msgstr "Window Maker ¼³Á¤ À¯Æ¿¸®Æ¼" + +#: ../../WPrefs.app/WPrefs.c:267 +#, c-format +msgid "Version %s for Window Maker %s" +msgstr "¹öÀü %s - Window Maker %s" + +#: ../../WPrefs.app/WPrefs.c:274 +msgid "Starting..." +msgstr "½ÃÀÛÇÕ´Ï´Ù..." + +#: ../../WPrefs.app/WPrefs.c:280 +msgid "" +"Programming/Design: Alfredo K. Kojima\n" +"Artwork: Marco van Hylckama Vlieg\n" +"More Programming: James Thompson" +msgstr "" +"ÇÁ·Î±×·¡¹Ö/µðÀÚÀÎ: Alfredo K. Kojima\n" +"¾ÆÆ®¿÷: Macro van Hylckama Vlieg\n" +"Ãß°¡ ÇÁ·Î±×·¡¹Ö: James Thompson" + +#: ../../WPrefs.app/WPrefs.c:368 +#, c-format +msgid "could not locate image file %s\n" +msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ãÀ» ¼ö ¾øÀ½\n" + +#: ../../WPrefs.app/WPrefs.c:474 +#, c-format +msgid "could not load image file %s:%s" +msgstr "À̹ÌÁö ÆÄÀÏ %s¸¦ ÀÐÀ» ¼ö ¾øÀ½" + +#: ../../WPrefs.app/WPrefs.c:493 +msgid "Loading Window Maker configuration files..." +msgstr "Window Maker ¼³Á¤ ÆÄÀÏÀ» Àд Áß..." + +#: ../../WPrefs.app/WPrefs.c:497 +msgid "Initializing configuration panels..." +msgstr "¼³Á¤ ÆÐ³Î ÃʱâÈ­ Áß..." + +#: ../../WPrefs.app/WPrefs.c:525 +msgid "" +"WPrefs is free software and is distributed WITHOUT ANY WARRANTY under the " +"terms of the GNU General Public License. Redistribution of the icons in this " +"program separately from the program is prohibited." +msgstr "" +"WPrefs´Â °ø°³ ¼ÒÇÁÆ®¿þ¾îÀ̸ç GNU General Public License¸¦ µû¸£¸ç ¹èÆ÷¿¡ µû¸¥ " +"¾î¶°ÇÑ Ã¥ÀÓµµ ÁöÁö ¾Ê½À´Ï´Ù. ¾ÆÀÌÄÜÀÇ °æ¿ì WPrefs¿Í ÇÔ²²°¡ ¾Æ´Ï¸é ¹èÆ÷ÇÒ ¼ö " +"¾ø½À´Ï´Ù." + +#: ../../WPrefs.app/WPrefs.c:557 ../../WPrefs.app/WPrefs.c:613 +#, c-format +msgid "Window Maker domain (%s) is corrupted!" +msgstr "Window Maker µµ¸ÞÀÎ(%s)ÀÌ ±úÁ³½À´Ï´Ù!" + +#: ../../WPrefs.app/WPrefs.c:561 +#, c-format +msgid "Could not load Window Maker domain (%s) from defaults database." +msgstr "±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ Window Maker µµ¸ÞÀÎ(%s)À» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù." + +#: ../../WPrefs.app/WPrefs.c:569 +msgid "could not extract version information from Window Maker" +msgstr "Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../../WPrefs.app/WPrefs.c:570 +msgid "Make sure wmaker is in your search path." +msgstr "wmaker°¡ °Ë»ö °æ·Î¿¡ ÀÖ´ÂÁö È®ÀÎÇϼ¼¿ä." + +#: ../../WPrefs.app/WPrefs.c:573 +msgid "" +"Could not extract version from Window Maker. Make sure it is correctly " +"installed and is in your PATH environment variable." +msgstr "" +"Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù. PATH ȯ°æ º¯¼ö¿¡ ÁöÁ¤µÈ °÷¿¡ " +"Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö È®ÀÎÇϼ¼¿ä." + +#: ../../WPrefs.app/WPrefs.c:583 +msgid "" +"Could not extract version from Window Maker. Make sure it is correctly " +"installed." +msgstr "" +"Window Maker¿¡¼­ ¹öÀü Á¤º¸¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù. Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö " +"È®ÀÎÇϼ¼¿ä." + +#: ../../WPrefs.app/WPrefs.c:588 +#, c-format +msgid "" +"WPrefs only supports Window Maker 0.18.0 or newer.\n" +"The version installed is %i.%i.%i\n" +msgstr "" +"WPrefs ´Â Window Maker 0.18.0 ÀÌ»ó¸¸À» Áö¿øÇÕ´Ï´Ù.\n" +"¼³Ä¡µÈ ¹öÁ¯Àº %i.%i.%i ÀÔ´Ï´Ù.\n" + +#: ../../WPrefs.app/WPrefs.c:595 +#, c-format +msgid "" +"Window Maker %i.%i.%i, which is installed in your system, is not fully " +"supported by this version of WPrefs." +msgstr "" +"½Ã½ºÅÛ¿¡ ¼³Ä¡µÈ Window Maker %i.%i.%i´Â WPrefs¿¡¼­ Á¦´ë·Î Áö¿øÇÏ´Â ¹öÀüÀÌ " +"¾Æ´Õ´Ï´Ù." + +#: ../../WPrefs.app/WPrefs.c:602 +msgid "could not run \"wmaker --global_defaults_path\"." +msgstr "\"wmaker --global_defaults_path\"¸¦ ¼öÇàÇÒ ¼ö ¾ø½À´Ï´Ù." + +#: ../../WPrefs.app/WPrefs.c:617 +#, c-format +msgid "Could not load global Window Maker domain (%s)." +msgstr "Àü¿ª Window Maker µµ¸ÞÀÎ (%s)¸¦ ÀоîµéÀÏ ¼ö ¾ø½À´Ï´Ù." + +#: ../../WPrefs.app/WPrefs.c:863 +#, c-format +msgid "" +"bad speed value for option %s\n" +". Using default Medium" +msgstr "" +"¿É¼Ç %s¿¡ À߸øµÈ ¼Óµµ °ªÀ» ÁÖ¾ú½À´Ï´Ù.\n" +"±âº»°ª MediumÀ» »ç¿ëÇÕ´Ï´Ù" + +#: ../../WPrefs.app/WindowHandling.c:108 +#, c-format +msgid "bad option value %s in WindowPlacement. Using default value" +msgstr "WindowPlacement¿¡ À߸øµÈ ¿É¼Ç °ª %sÀÔ´Ï´Ù. ±âº»°ªÀ» »ç¿ëÇÕ´Ï´Ù" + +#: ../../WPrefs.app/WindowHandling.c:130 +msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" +msgstr "" +"WindowPlaceOrigin ¿É¼Ç¿¡ À߸øµÈ µ¥ÀÌÅÍÀÔ´Ï´Ù. ±âº»°ª (0,0)À» »ç¿ëÇÕ´Ï´Ù" + +#: ../../WPrefs.app/WindowHandling.c:192 +msgid "Window Placement" +msgstr "â ¹èÄ¡" + +#: ../../WPrefs.app/WindowHandling.c:197 +msgid "Automatic" +msgstr "ÀÚµ¿" + +#: ../../WPrefs.app/WindowHandling.c:198 +msgid "Random" +msgstr "ÀÓÀÇ" + +#: ../../WPrefs.app/WindowHandling.c:199 +msgid "Manual" +msgstr "¼öµ¿" + +#: ../../WPrefs.app/WindowHandling.c:200 +msgid "Cascade" +msgstr "°è´Ü½Ä" + +#: ../../WPrefs.app/WindowHandling.c:206 +msgid "Placement Origin" +msgstr "±âº» À§Ä¡" + +#: ../../WPrefs.app/WindowHandling.c:260 +msgid "Opaque Move" +msgstr "À̵¿½Ã â ³»¿ë º¸À̱â" + +#: ../../WPrefs.app/WindowHandling.c:296 +msgid "When maximizing..." +msgstr "ÃÖ´ëÈ­½Ã¿¡´Â..." + +#: ../../WPrefs.app/WindowHandling.c:301 +msgid "...do not resize over icons" +msgstr "¾ÆÀÌÄÜÀ» µ¤Áö ¾ÊÀ½" + +#: ../../WPrefs.app/WindowHandling.c:307 +msgid "...do not resize over dock" +msgstr "DockÀ» µ¤Áö ¾ÊÀ½" + +#: ../../WPrefs.app/WindowHandling.c:320 +msgid "Open transients in same workspace as their owners" +msgstr "¼ÒÀ¯ÀÚ À§¿¡¼­´Â ÀϽÃÀûÀ¸·Î âÀ» À¯Áö" + +#: ../../WPrefs.app/WindowHandling.c:347 +msgid "Window Handling Preferences" +msgstr "â ó¸® ¼³Á¤" + +#: ../../WPrefs.app/Workspace.c:137 +msgid "Workspace Navigation" +msgstr "ÀÛ¾÷°ø°£ Àüȯ" + +#: ../../WPrefs.app/Workspace.c:161 +msgid "drag windows between workspaces." +msgstr "ÀÛ¾÷°ø°£°£¿¡ â ²ø±â" + +#: ../../WPrefs.app/Workspace.c:186 +msgid "" +"switch to first workspace when switching past the last workspace and " +"vice-versa" +msgstr "" +"¸¶Áö¸· ÀÛ¾÷°ø°£ ´ÙÀ½À¸·Î ÀüȯÇÒ¶§¿¡ óÀ½ ÀÛ¾÷°ø°£À¸·Î À̵¿ (¹Ý´ëµµ ¸¶Âù°¡Áö)" + +#: ../../WPrefs.app/Workspace.c:210 +msgid "create a new workspace when switching past the last workspace." +msgstr "¸¶Áö¸· ÀÛ¾÷°ø°£ ´ÙÀ½À¸·Î Àüȯ½Ã »õ·Î¿î ÀÛ¾÷°ø°£ »ý¼º" + +#: ../../WPrefs.app/Workspace.c:218 +msgid "Dock/Clip" +msgstr "Dock/Ŭ¸³" + +#: ../../WPrefs.app/Workspace.c:287 +msgid "Workspace Preferences" +msgstr "ÀÛ¾÷°ø°£ ¼³Á¤" + +#: ../../WPrefs.app/main.c:71 +#, c-format +msgid "usage: %s [options]\n" +msgstr "»ç¿ë¹ý: %s [¿É¼Ç]\n" + +#: ../../WPrefs.app/main.c:72 +msgid "options:" +msgstr "¿É¼Ç:" + +#: ../../WPrefs.app/main.c:73 +msgid " -display \tdisplay to be used" +msgstr "-display \t»ç¿ëÇÒ µð½ºÇ÷¹ÀÌ" + +#: ../../WPrefs.app/main.c:74 +msgid " --version\t\tprint version number and exit" +msgstr "--version\t\t¹öÁ¯ Ãâ·ÂÈÄ Á¾·á" + +#: ../../WPrefs.app/main.c:75 +msgid " --help\t\tprint this message and exit" +msgstr "--help\t\tÇöÀç ¸Þ½ÃÁö Ãâ·Â ÈÄ Á¾·á" + +#: ../../WPrefs.app/main.c:134 +#, c-format +msgid "too few arguments for %s" +msgstr "%s ÀÇ Àμö°¡ ³Ê¹« ÀûÀ½" + +#: ../../WPrefs.app/main.c:156 +msgid "X server does not support locale" +msgstr "X ¼­¹ö°¡ ·ÎÄÉÀÏÀ» Áö¿øÇÏÁö ¾ÊÀ½" + +#: ../../WPrefs.app/main.c:159 +msgid "cannot set locale modifiers" +msgstr "·ÎÄÉÀÏ ¼öÁ¤ÀÚ(modifier)¸¦ ¼³Á¤ÇÒ ¼ö ¾øÀ½" + +#: ../../WPrefs.app/main.c:165 +#, c-format +msgid "could not open display %s" +msgstr "µð½ºÇ÷¹ÀÌ %s¸¦ ¿­ ¼ö ¾øÀ½" + +#: ../../WPrefs.app/main.c:173 +msgid "could not initialize application" +msgstr "¾ÖÇø®ÄÉÀ̼ÇÀ» ÃʱâÈ­ ÇÒ ¼ö ¾øÀ½" diff --git a/WPrefs.app/po/zh_TW.Big5.po b/WPrefs.app/po/zh_TW.Big5.po new file mode 100644 index 00000000..03311b68 --- /dev/null +++ b/WPrefs.app/po/zh_TW.Big5.po @@ -0,0 +1,1455 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 1999 Free Software Foundation, Inc. +# Li Wei Jih , 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: Window Maker-0.51.0\n" +"POT-Creation-Date: 1999-02-09 13:00+0800\n" +"PO-Revision-Date: 1999-02-09 13:00+0800\n" +"Last-Translator: Li Wei Jih \n" +"Language-Team: chinese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=big5\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: ../../WPrefs.app/Configurations.c:142 ../../WPrefs.app/Configurations.c:148 +#: ../../WPrefs.app/MouseSettings.c:526 ../../WPrefs.app/WindowHandling.c:274 +#: ../../WPrefs.app/WindowHandling.c:286 ../../WPrefs.app/Workspace.c:71 +#: ../../WPrefs.app/Workspace.c:77 +#, c-format +msgid "could not load icon %s" +msgstr "µLªk¸ü¤J¹Ï¥Ü %s" + +#: ../../WPrefs.app/Configurations.c:156 ../../WPrefs.app/Workspace.c:85 +#, c-format +msgid "could not process icon %s:" +msgstr "µLªk³B²z¹Ï¥Ü %s:" + +#: ../../WPrefs.app/Configurations.c:181 ../../WPrefs.app/Workspace.c:124 +#, c-format +msgid "could not load image file %s" +msgstr "µLªk¸ü¤J¼v¹³ÀÉ %s" + +#: ../../WPrefs.app/Configurations.c:195 +msgid "Icon Slide Speed" +msgstr "¹Ï¥Ü²¾°Ê³t«×" + +#: ../../WPrefs.app/Configurations.c:201 +msgid "Shade Animation Speed" +msgstr "¾B½ª°Êµe³t«×" + +#: ../../WPrefs.app/Configurations.c:234 ../../WPrefs.app/Configurations.c:246 +#: ../../WPrefs.app/Focus.c:310 ../../WPrefs.app/Focus.c:321 +#: ../../WPrefs.app/MenuPreferences.c:135 +#: ../../WPrefs.app/MenuPreferences.c:146 +#: ../../WPrefs.app/MenuPreferences.c:174 +#: ../../WPrefs.app/MenuPreferences.c:189 ../../WPrefs.app/MouseSettings.c:554 +#: ../../WPrefs.app/MouseSettings.c:565 ../../WPrefs.app/MouseSettings.c:627 +#: ../../WPrefs.app/MouseSettings.c:638 ../../WPrefs.app/MouseSettings.c:674 +#: ../../WPrefs.app/MouseSettings.c:689 ../../WPrefs.app/MouseSettings.c:705 +#: ../../WPrefs.app/WPrefs.c:403 ../../WPrefs.app/WPrefs.c:421 +#, c-format +msgid "could not load icon file %s" +msgstr "µLªk¸ü¤J¹Ï¥ÜÀÉ %s" + +#: ../../WPrefs.app/Configurations.c:262 +msgid "Titlebar Style" +msgstr "¼ÐÃD¦C­·®æ" + +#: ../../WPrefs.app/Configurations.c:299 +msgid "Animations and Sound" +msgstr "°Êµe»P­µ®Ä" + +#: ../../WPrefs.app/Configurations.c:305 +msgid "Animations" +msgstr "°Êµe" + +#: ../../WPrefs.app/Configurations.c:321 +msgid "Superfluous" +msgstr "¦h¾lªº" + +#: ../../WPrefs.app/Configurations.c:337 +msgid "Sounds" +msgstr "­µ®Ä" + +#: ../../WPrefs.app/Configurations.c:354 +msgid "Note: sound requires a module distributed separately" +msgstr "µù¡G­µ®Ä»Ý­n³æ¿Wµo°eªº¼Ò²Õ" + +#: ../../WPrefs.app/Configurations.c:364 +msgid "Dithering colormap for 8bpp" +msgstr "¬° 8bpp ¦â½L´î¦â" + +#: ../../WPrefs.app/Configurations.c:369 +msgid "Disable dithering in any visual/depth" +msgstr "¨Ï¥ô¦óµøÄ±/²`«×¤¤ªº´î¦â¥¢®Ä" + +#: ../../WPrefs.app/Configurations.c:390 +msgid "More colors for applications" +msgstr "" +"À³¥Îµ{¦¡\n" +"¨Ï¥Î§ó¦h¦â±m" + +#: ../../WPrefs.app/Configurations.c:397 +msgid "More colors for WindowMaker" +msgstr "" +"WindowMaker\n" +"¨Ï¥Î§ó¦h¦â±m" + +#: ../../WPrefs.app/Configurations.c:450 +msgid "Other Configurations" +msgstr "¨ä¥L³]©w" + +#: ../../WPrefs.app/Expert.c:70 +msgid "Do not set non-WindowMaker specific parameters (do not use xset)" +msgstr "¤£­n³]«D WindowMaker «ü©w°Ñ¼Æ¡]¤£­n¨Ï¥Î xset¡^" + +#: ../../WPrefs.app/Expert.c:71 +msgid "Automatically save session when exiting WindowMaker" +msgstr "Â÷¶} WindowMaker ®É¦Û°ÊÀx¦s¶¥¬qª¬ºA" + +#: ../../WPrefs.app/Expert.c:72 +msgid "Use SaveUnder in window frames, icons, menus and other objects" +msgstr "¦bµøµ¡®Ø¬[¡A¹Ï¥Ü¡A¿ï³æ»P¨ä¥Lª«¥ó¨Ï¥Î SaveUnder" + +#: ../../WPrefs.app/Expert.c:73 +msgid "Disable cycling color highlighting of icons." +msgstr "¨Ï¹Ï¥Üªº´`Àô¦â±m±j½Õ¥¢®Ä" + +#: ../../WPrefs.app/Expert.c:103 +msgid "Expert User Preferences" +msgstr "¼ô½m¨Ï¥ÎªÌ³]©w" + +#: ../../WPrefs.app/Focus.c:79 +#, c-format +msgid "bad option value %s for option FocusMode. Using default Manual" +msgstr "FocusMode ¿ï¶µ­È %s ¿ù»~¡C¨Ï¥Î¹w³]­È" + +#: ../../WPrefs.app/Focus.c:92 +#, c-format +msgid "bad option value %s for option ColormapMode. Using default Manual" +msgstr "ColormapMode ¿ï¶µ­È %s ¿ù»~¡C¨Ï¥Î¹w³]­È" + +#: ../../WPrefs.app/Focus.c:190 +msgid "" +"Click on the window to set\n" +"keyboard input focus." +msgstr "¦bµøµ¡¤W«ö¤@¤U³]©wÁä½L¿é¤JµJÂI¡C" + +#: ../../WPrefs.app/Focus.c:194 +msgid "" +"Set keyboard input focus to\n" +"the window under the mouse pointer,\n" +"including the root window." +msgstr "" +"³]©wÁä½L¿é¤JµJÂI¦Ü\n" +"·Æ¹««ü¼Ð¤U­±ªºµøµ¡¡A\n" +"¥]§t®Úµøµ¡¡C" + +#: ../../WPrefs.app/Focus.c:199 +msgid "" +"Set keyboard input focus to\n" +"the window under the mouse pointer,\n" +"except the root window." +msgstr "" +"³]©wÁä½L¿é¤JµJÂI¦Ü\n" +"·Æ¹««ü¼Ð¤U­±ªºµøµ¡¡A\n" +"®Úµøµ¡°£¥~¡C" + +#: ../../WPrefs.app/Focus.c:243 +msgid "Input Focus Mode" +msgstr "¿é¤JµJÂI¼Ò¦¡" + +#: ../../WPrefs.app/Focus.c:248 +msgid "Click window to focus" +msgstr "«öµøµ¡¨ú±oµJÂI" + +#: ../../WPrefs.app/Focus.c:249 +msgid "Focus follows mouse" +msgstr "µJÂI¸òµÛ·Æ¹«" + +#: ../../WPrefs.app/Focus.c:250 +msgid "\"Sloppy\" focus" +msgstr "\"Sloppy\" µJÂI" + +#: ../../WPrefs.app/Focus.c:265 +msgid "Install colormap in the window..." +msgstr "¦w¸Ë¦â½L..." + +#: ../../WPrefs.app/Focus.c:270 +msgid "...that has the input focus." +msgstr "...¿é¤JµJÂI©Ò¦bµøµ¡¡C" + +#: ../../WPrefs.app/Focus.c:275 +msgid "...that is under the mouse pointer." +msgstr "...·Æ¹««ü¼Ð¤U­±ªºµøµ¡¡C" + +#: ../../WPrefs.app/Focus.c:284 +msgid "Automatic Window Raise Delay" +msgstr "¦Û°Ê¤É°_µøµ¡©µ¿ð" + +#: ../../WPrefs.app/Focus.c:341 +msgid "msec" +msgstr "²@¬í" + +#: ../../WPrefs.app/Focus.c:358 +msgid "Do not let applications receive the click used to focus windows." +msgstr "" +"¤£­nÅýÀ³¥Îµ{¦¡±o¨ì¥Î¨Ó³]©w\n" +"µøµ¡µJÂIªº·Æ¹««öÁä°Ê§@¡C" + +#: ../../WPrefs.app/Focus.c:364 +msgid "Automatically focus new windows." +msgstr "·sµøµ¡¦Û°Ê±o¨ìµJÂI¡C" + +#: ../../WPrefs.app/Focus.c:385 +msgid "Window Focus Preferences" +msgstr "µøµ¡µJÂI³]©w" + +#: ../../WPrefs.app/Icons.c:178 +msgid "Icon Positioning" +msgstr "¹Ï¥Ü¦ì¸m" + +#: ../../WPrefs.app/Icons.c:225 +msgid "Iconification Animation" +msgstr "ÁY¦¨¹Ï¥Ü°Êµe" + +#: ../../WPrefs.app/Icons.c:236 +msgid "Shrinking/Zooming" +msgstr "ÁY¤p/©ñ¤j" + +#: ../../WPrefs.app/Icons.c:237 +msgid "Spinning/Twisting" +msgstr "°jÂà/Âà¦V" + +#: ../../WPrefs.app/Icons.c:238 +msgid "3D-flipping" +msgstr "¥ßÅé½Âà" + +#: ../../WPrefs.app/Icons.c:239 +msgid "None" +msgstr "µL" + +#: ../../WPrefs.app/Icons.c:247 +msgid "Icon Display" +msgstr "¹Ï¥ÜÅã¥Ü" + +#: ../../WPrefs.app/Icons.c:252 +msgid "Auto-arrange icons" +msgstr "¦Û°Ê±Æ¦C¹Ï¥Ü" + +#: ../../WPrefs.app/Icons.c:257 +msgid "Omnipresent miniwindows" +msgstr "³Ì¤pµøµ¡µL©Ò¤£¦b" + +#: ../../WPrefs.app/Icons.c:265 +msgid "Icon Size" +msgstr "¹Ï¥Ü¤j¤p" + +#: ../../WPrefs.app/Icons.c:335 +msgid "Icon Preferences" +msgstr "¹Ï¥Ü³]©w" + +#: ../../WPrefs.app/KeyboardSettings.c:72 +msgid "Initial Key Repeat" +msgstr "±Ò©l«öÁä­«½Æ" + +#: ../../WPrefs.app/KeyboardSettings.c:113 +msgid "Key Repeat Rate" +msgstr "«öÁä­«½Æ³t²v" + +#: ../../WPrefs.app/KeyboardSettings.c:153 +msgid "Type here to test" +msgstr "¦b¦¹¥´¦r´ú¸Õ" + +#: ../../WPrefs.app/KeyboardSettings.c:172 +msgid "Keyboard Preferences" +msgstr "Áä½L³]©w" + +#: ../../WPrefs.app/KeyboardShortcuts.c:183 ../../WPrefs.app/Menu.c:934 +#: ../../WPrefs.app/MenuGuru.c:263 +msgid "Cancel" +msgstr "¨ú®ø" + +#: ../../WPrefs.app/KeyboardShortcuts.c:184 +msgid "Press the desired shortcut key(s) or click Cancel to stop capturing." +msgstr "«ö¤U·Q­nªº±¶®|Áä©Î«ö¤U¨ú®ø°±¤î§ì¨ú¡C" + +#: ../../WPrefs.app/KeyboardShortcuts.c:204 +#: ../../WPrefs.app/KeyboardShortcuts.c:444 ../../WPrefs.app/Menu.c:946 +#: ../../WPrefs.app/Menu.c:1168 +msgid "Capture" +msgstr "§ì¨ú" + +#: ../../WPrefs.app/KeyboardShortcuts.c:205 +#: ../../WPrefs.app/KeyboardShortcuts.c:451 +msgid "Click Capture to interactively define the shortcut key." +msgstr "«ö¤U§ì¨ú¥i¤¬°Ê¦¡©w¸q±¶®|Áä¡C" + +#: ../../WPrefs.app/KeyboardShortcuts.c:359 +msgid "Actions" +msgstr "°Ê§@" + +#: ../../WPrefs.app/KeyboardShortcuts.c:375 +msgid "Open applications menu" +msgstr "¶}±ÒÀ³¥Îµ{¦¡¿ï³æ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:376 +msgid "Open window list menu" +msgstr "¶}±Òµøµ¡²M³æ¿ï³æ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:377 +msgid "Open window commands menu" +msgstr "¶}±Òµøµ¡©R¥O¿ï³æ" + +#: ../../WPrefs.app/KeyboardShortcuts.c:378 +msgid "Hide active application" +msgstr "ÁôÂ조ʤ¤ªºÀ³¥Îµ{¦¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:379 +msgid "Miniaturize active window" +msgstr "³Ì¤p¤Æ¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:380 +msgid "Close active window" +msgstr "Ãö³¬¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:381 +msgid "Maximize active window" +msgstr "³Ì¤j¤Æ¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:382 +msgid "Maximize active window vertically" +msgstr "««ª½³Ì¤j¤Æ¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:383 +msgid "Raise active window" +msgstr "¤É°_¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:384 +msgid "Lower active window" +msgstr "­°¤U¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:385 +msgid "Raise/Lower window under mouse pointer" +msgstr "¤É°_/­°¤U·Æ¹««ü¼Ð¤U­±ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:386 +msgid "Shade active window" +msgstr "¾B½ª¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:387 +msgid "Move/Resize active window" +msgstr "¬¡°Ê¤¤ªºµøµ¡²¾°Ê/¤j¤pÅܧó" + +#: ../../WPrefs.app/KeyboardShortcuts.c:388 +msgid "Select active window" +msgstr "¿ï¨ú¬¡°Ê¤¤ªºµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:389 +msgid "Focus next window" +msgstr "µJÂI²¾¦Ü¤U¤@­Óµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:390 +msgid "Focus previous window" +msgstr "µJÂI²¾¦Ü¤W¤@­Óµøµ¡" + +#: ../../WPrefs.app/KeyboardShortcuts.c:391 +msgid "Switch to next workspace" +msgstr "¤Á´«¦Ü¤U¤@­Ó¤u§@°Ï" + +#: ../../WPrefs.app/KeyboardShortcuts.c:392 +msgid "Switch to previous workspace" +msgstr "¤Á´«¦Ü¤W¤@­Ó¤u§@°Ï" + +#: ../../WPrefs.app/KeyboardShortcuts.c:393 +msgid "Switch to next ten workspaces" +msgstr "¤Á´«¦Ü«á¤Q­Ó¤u§@°Ï" + +#: ../../WPrefs.app/KeyboardShortcuts.c:394 +msgid "Switch to previous ten workspaces" +msgstr "¤Á´«¦Ü«e¤Q­Ó¤u§@°Ï" + +#: ../../WPrefs.app/KeyboardShortcuts.c:395 +msgid "Switch to workspace 1" +msgstr "¤Á´«¦Ü¤u§@°Ï 1" + +#: ../../WPrefs.app/KeyboardShortcuts.c:396 +msgid "Switch to workspace 2" +msgstr "¤Á´«¦Ü¤u§@°Ï 2" + +#: ../../WPrefs.app/KeyboardShortcuts.c:397 +msgid "Switch to workspace 3" +msgstr "¤Á´«¦Ü¤u§@°Ï 3" + +#: ../../WPrefs.app/KeyboardShortcuts.c:398 +msgid "Switch to workspace 4" +msgstr "¤Á´«¦Ü¤u§@°Ï 4" + +#: ../../WPrefs.app/KeyboardShortcuts.c:399 +msgid "Switch to workspace 5" +msgstr "¤Á´«¦Ü¤u§@°Ï 5" + +#: ../../WPrefs.app/KeyboardShortcuts.c:400 +msgid "Switch to workspace 6" +msgstr "¤Á´«¦Ü¤u§@°Ï 6" + +#: ../../WPrefs.app/KeyboardShortcuts.c:401 +msgid "Switch to workspace 7" +msgstr "¤Á´«¦Ü¤u§@°Ï 7" + +#: ../../WPrefs.app/KeyboardShortcuts.c:402 +msgid "Switch to workspace 8" +msgstr "¤Á´«¦Ü¤u§@°Ï 8" + +#: ../../WPrefs.app/KeyboardShortcuts.c:403 +msgid "Switch to workspace 9" +msgstr "¤Á´«¦Ü¤u§@°Ï 9" + +#: ../../WPrefs.app/KeyboardShortcuts.c:404 +msgid "Switch to workspace 10" +msgstr "¤Á´«¦Ü¤u§@°Ï 10" + +#: ../../WPrefs.app/KeyboardShortcuts.c:405 +msgid "Shortcut for window 1" +msgstr "µøµ¡ 1 ªº±¶®|" + +#: ../../WPrefs.app/KeyboardShortcuts.c:406 +msgid "Shortcut for window 2" +msgstr "µøµ¡ 2 ªº±¶®|" + +#: ../../WPrefs.app/KeyboardShortcuts.c:407 +msgid "Shortcut for window 3" +msgstr "µøµ¡ 3 ªº±¶®|" + +#: ../../WPrefs.app/KeyboardShortcuts.c:408 +msgid "Shortcut for window 4" +msgstr "µøµ¡ 4 ªº±¶®|" + +#: ../../WPrefs.app/KeyboardShortcuts.c:409 +msgid "Raise Clip" +msgstr "¤É°_°j¯¾°w" + +#: ../../WPrefs.app/KeyboardShortcuts.c:410 +msgid "Lower Clip" +msgstr "­°¤U°j¯¾°w" + +#: ../../WPrefs.app/KeyboardShortcuts.c:411 +msgid "Raise/Lower Clip" +msgstr "¤É°_/­°¤U°j¯¾°w" + +#: ../../WPrefs.app/KeyboardShortcuts.c:413 +msgid "Toggle keyboard language" +msgstr "¤Á´«Áä½L»y¨¥" + +#: ../../WPrefs.app/KeyboardShortcuts.c:427 ../../WPrefs.app/Menu.c:1157 +msgid "Shortcut" +msgstr "±¶®|" + +#: ../../WPrefs.app/KeyboardShortcuts.c:438 +msgid "Clear" +msgstr "²M°£" + +#: ../../WPrefs.app/KeyboardShortcuts.c:499 +msgid "Keyboard Shortcut Preferences" +msgstr "Áä½L±¶®|³]©w" + +#: ../../WPrefs.app/Menu.c:373 +msgid "Window Manager" +msgstr "µøµ¡ºÞ²z­û" + +#: ../../WPrefs.app/Menu.c:375 +msgid "Program to open files" +msgstr "¶}±ÒÀɮפ§µ{¦¡" + +#: ../../WPrefs.app/Menu.c:377 ../../WPrefs.app/Menu.c:1144 +msgid "Program to Run" +msgstr "°õ¦æ¤§µ{¦¡" + +#: ../../WPrefs.app/Menu.c:427 ../../WPrefs.app/Menu.c:428 +#, c-format +msgid "New Command %i" +msgstr "·s¼W©R¥O %i" + +#: ../../WPrefs.app/Menu.c:435 +msgid "New Submenu" +msgstr "·s¼W°Æ¿ï³æ" + +#: ../../WPrefs.app/Menu.c:440 +msgid "External Menu" +msgstr "¥~³¡¿ï³æ" + +#: ../../WPrefs.app/Menu.c:447 +msgid "Workspaces" +msgstr "¤u§@°Ï" + +#: ../../WPrefs.app/Menu.c:1028 ../../WPrefs.app/Menu.c:1043 +msgid "Commands" +msgstr "©R¥O" + +#: ../../WPrefs.app/Menu.c:1029 ../../WPrefs.app/Menu.c:1044 +msgid "Add Command" +msgstr "·s¼W©R¥O" + +#: ../../WPrefs.app/Menu.c:1030 ../../WPrefs.app/Menu.c:1045 +msgid "Add Submenu" +msgstr "¼W¥[°Æ¿ï³æ" + +#: ../../WPrefs.app/Menu.c:1031 ../../WPrefs.app/Menu.c:1046 +msgid "Add External Menu" +msgstr "¼W¥[¥~³¡¿ï³æ" + +#: ../../WPrefs.app/Menu.c:1032 ../../WPrefs.app/Menu.c:1047 +msgid "Add Workspace Menu" +msgstr "¼W¥[¤u§@°Ï" + +#: ../../WPrefs.app/Menu.c:1033 ../../WPrefs.app/Menu.c:1048 +msgid "Remove Item" +msgstr "§R°£¶µ¥Ø" + +#: ../../WPrefs.app/Menu.c:1034 ../../WPrefs.app/Menu.c:1049 +msgid "Cut Item" +msgstr "°Å¤U¶µ¥Ø" + +#: ../../WPrefs.app/Menu.c:1035 ../../WPrefs.app/Menu.c:1050 +msgid "Copy Item" +msgstr "½Æ»s¶µ¥Ø" + +#: ../../WPrefs.app/Menu.c:1036 ../../WPrefs.app/Menu.c:1051 +msgid "Paste Item" +msgstr "¶K¤W¶µ¥Ø" + +#: ../../WPrefs.app/Menu.c:1080 +msgid "Label" +msgstr "¼ÐÅÒ" + +#: ../../WPrefs.app/Menu.c:1093 +msgid "Command" +msgstr "©R¥O" + +#: ../../WPrefs.app/Menu.c:1098 +msgid "Run Program" +msgstr "°õ¦æµ{¦¡" + +#: ../../WPrefs.app/Menu.c:1099 +msgid "Arrange Icons" +msgstr "±Æ¦C¹Ï¥Ü" + +#: ../../WPrefs.app/Menu.c:1100 +msgid "Hide Others" +msgstr "ÁôÂèä¥L" + +#: ../../WPrefs.app/Menu.c:1101 +msgid "Show All Windows" +msgstr "Åã¥Ü©Ò¦³µøµ¡" + +#: ../../WPrefs.app/Menu.c:1102 +msgid "Exit WindowMaker" +msgstr "Â÷¶} WindowMaker" + +#: ../../WPrefs.app/Menu.c:1103 +msgid "Exit X Session" +msgstr "Â÷¶} X µøµ¡¨t²Î" + +#: ../../WPrefs.app/Menu.c:1104 +msgid "Start window manager" +msgstr "±Ò°Êµøµ¡ºÞ²z­û" + +#: ../../WPrefs.app/Menu.c:1105 +msgid "Restart WindowMaker" +msgstr "­«·s±Ò°Ê WindowMaker" + +#: ../../WPrefs.app/Menu.c:1106 +msgid "Save Session" +msgstr "Àx¦s¶¥¬qª¬ºA" + +#: ../../WPrefs.app/Menu.c:1107 +msgid "Clear Session" +msgstr "²M°£¶¥¬qª¬ºA" + +#: ../../WPrefs.app/Menu.c:1108 +msgid "Refresh Screen" +msgstr "§ó·s¿Ã¹õ" + +#: ../../WPrefs.app/Menu.c:1109 +msgid "Info Panel" +msgstr "¸ê°T­±ªO" + +#: ../../WPrefs.app/Menu.c:1110 +msgid "Legal Panel" +msgstr "ªk«ß­±ªO" + +#: ../../WPrefs.app/Menu.c:1118 +msgid "Open workspace menu" +msgstr "¶}±Ò¤u§@°Ï¿ï³æ" + +#: ../../WPrefs.app/Menu.c:1125 +msgid "No confirmation panel" +msgstr "µL½T»{­±ªO" + +#: ../../WPrefs.app/Menu.c:1131 +msgid "Menu Path/Directory List" +msgstr "¿ï³æ¸ô®|/¥Ø¿ý²M³æ" + +#: ../../WPrefs.app/Menu.c:1176 +msgid "Ask help to the Guru" +msgstr "¦V±M®a¨D§U" + +#. if there is a localized plmenu for the tongue put it's filename here +#: ../../WPrefs.app/Menu.c:1287 ../../WPrefs.app/Menu.c:1294 +#, c-format +msgid "%s/Library/WindowMaker/plmenu" +msgstr "%s/Library/WindowMaker/plmenu" + +#: ../../WPrefs.app/Menu.c:1302 ../../WPrefs.app/MouseSettings.c:146 +#: ../../WPrefs.app/MouseSettings.c:169 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:96 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:572 +#: ../../WPrefs.app/WPrefs.c:582 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:614 ../../WPrefs.app/WPrefs.c:619 +msgid "Error" +msgstr "¿ù»~" + +#: ../../WPrefs.app/Menu.c:1302 +msgid "Could not copy default plmenu file from ~/GNUstep/Library/WindowMaker" +msgstr "¦b ~/GNUstep/Library/WindowMaker ©³¤U§ä¤£¨ì¹w³]ªº plmenu ÀÉ®×" + +#: ../../WPrefs.app/Menu.c:1304 ../../WPrefs.app/Menu.c:1354 +#: ../../WPrefs.app/MenuGuru.c:119 ../../WPrefs.app/MenuGuru.c:126 +#: ../../WPrefs.app/MenuGuru.c:140 ../../WPrefs.app/MouseSettings.c:148 +#: ../../WPrefs.app/MouseSettings.c:171 ../../WPrefs.app/Text.c:181 +#: ../../WPrefs.app/Themes.c:98 ../../WPrefs.app/WPrefs.c:558 +#: ../../WPrefs.app/WPrefs.c:563 ../../WPrefs.app/WPrefs.c:574 +#: ../../WPrefs.app/WPrefs.c:584 ../../WPrefs.app/WPrefs.c:590 +#: ../../WPrefs.app/WPrefs.c:597 ../../WPrefs.app/WPrefs.c:614 +#: ../../WPrefs.app/WPrefs.c:619 +msgid "OK" +msgstr "½T©w" + +#: ../../WPrefs.app/Menu.c:1339 +msgid "" +"The format of the menu in ~/G/D/WMRootMenu is not recognized by WPrefs. It " +"might be in a format different than the one supported by WPrefs or contain a " +"syntax error. Do you want to continue using the current menu to edit it by " +"hand later or replace it with a default menu in the new format?" +msgstr "WPrefs µLªk¿ë»{ ~/G/D/WMRootMenu ªº¿ï³æ®æ¦¡¡A­ì¦³ªº¿ï³æ¥i¯à¬O WPrefs ¤£¤ä´©ªº®æ¦¡¡A¤]¥i¯à¬O¿ï³æ©w¸q¦³»yªk¿ù»~¡F§A§Æ±æÄ~Äò¨Ï¥Î¥Ø«eªº¿ï³æ¨Ã¥B¦b¥H«á³£¥H¤â°Ê½s¿è¡AÁÙ¬OÅý WPrefs ¬°±z´«¤W¤@­Ó·sªº¹w³]¿ï³æ? " + +#: ../../WPrefs.app/Menu.c:1346 ../../WPrefs.app/Menu.c:1353 +#: ../../WPrefs.app/WPrefs.c:597 +msgid "Warning" +msgstr "ª`·N" + +#: ../../WPrefs.app/Menu.c:1346 +msgid "Keep current menu" +msgstr "Àx¦s¥Ø«e¿ï³æ" + +#: ../../WPrefs.app/Menu.c:1347 +msgid "Install default menu" +msgstr "¦w¸Ë¹w³]¿ï³æ" + +#: ../../WPrefs.app/Menu.c:1353 +msgid "Any changes made in this section will not be saved" +msgstr "¦b³o³¡¥÷ªº¥ô¦ó§ïÅܤ£·|³QÀx¦s" + +#: ../../WPrefs.app/Menu.c:1419 +msgid "Applications Menu Definition" +msgstr "À³¥Îµ{¦¡¿ï³æ©w¸q" + +#: ../../WPrefs.app/MenuGuru.c:106 +msgid "Menu Guru - Select Type" +msgstr "¿ï³æ±M®a - ¿ï¨ú«¬ºA" + +#: ../../WPrefs.app/MenuGuru.c:111 ../../WPrefs.app/MenuGuru.c:133 +#: ../../WPrefs.app/MenuGuru.c:251 +msgid "Next" +msgstr "¤U¤@¨B" + +#: ../../WPrefs.app/MenuGuru.c:114 +msgid "Menu Guru - Select Menu File" +msgstr "¿ï³æ±M®a - ¿ï¨ú¿ï³æÀÉ" + +#: ../../WPrefs.app/MenuGuru.c:122 +msgid "Menu Guru - Select Pipe Command" +msgstr "¿ï³æ±M®a - ¿ï¨ú Pipe ©R¥O" + +#: ../../WPrefs.app/MenuGuru.c:129 +msgid "Menu Guru - Select Directories" +msgstr "¿ï³æ±M®a - ¿ï¨ú¥Ø¿ý" + +#: ../../WPrefs.app/MenuGuru.c:136 +msgid "Menu Guru - Select Command" +msgstr "¿ï³æ±M®a - ¿ï¨ú©R¥O" + +#: ../../WPrefs.app/MenuGuru.c:257 +msgid "Back" +msgstr "¤W¤@¨B" + +#: ../../WPrefs.app/MenuGuru.c:271 +msgid "" +"This process will help you create a submenu which definition is located in " +"another file or is created dynamically.\n" +"What do you want to use as the contents of the submenu?" +msgstr "" +"³oµ{§Ç·|À°±z«Ø¥ß¦b¥t¤@­ÓÀɮשΰʺA«Ø¥ß©w¸qªº°Æ¥Ø¿ý¡C\n" +"±z­n¥Î¤°»ò·í§@°Æ¥Ø¿ýªº¤º®e¡H" + +#: ../../WPrefs.app/MenuGuru.c:279 +msgid "" +"A file containing the menu definition in the plain text (non-property list) " +"menu format." +msgstr "§t¦³¯Â¤å¦r¡]µL¯S½è²M³æ¡^¿ï³æ®æ¦¡¿ï³æ©w¸qªºÀɮסC" + +#: ../../WPrefs.app/MenuGuru.c:285 +msgid "The menu definition generated by a script/program read through a pipe." +msgstr "¥Ñ¤â½Z/µ{¦¡¸g¹L pipe Ū¤J²£¥Í¿ï³æ©w¸q" + +#: ../../WPrefs.app/MenuGuru.c:291 +msgid "The files in one or more directories." +msgstr "Àɮצb¤@­Ó©Î¦h­Ó¥Ø¿ý¤¤" + +#: ../../WPrefs.app/MenuGuru.c:303 +msgid "Type the path for the menu file:" +msgstr "¿é¤J¿ï³æÀɸô®|¡G" + +#: ../../WPrefs.app/MenuGuru.c:318 +msgid "" +"The menu file must contain a menu in the plain text menu file format. This " +"format is described in the menu files included with WindowMaker, probably at " +"~/GNUstep/Library/WindowMaker/menu" +msgstr "" +"¿ï³æÀÉ¥²¶·§t¦³¯Â¤å¦r¿ï³æÀɮ榡ªº¿ï³æ¡C³o®æ¦¡¦b WindowMaker " +"¥]§tªº¿ï³æÀɤ¤¦³´y­z¡A¥i¯à¦b~/GNUstep/Library/WindowMaker/menu" + +#: ../../WPrefs.app/MenuGuru.c:328 +msgid "Type the command that will generate the menu definition:" +msgstr "¿é¤J·|²£¥Í¿ï³æ©w¸qªº©R¥O¡G" + +#: ../../WPrefs.app/MenuGuru.c:338 +msgid "" +"The command supplied must generate and output a valid menu definition to " +"stdout. This definition should be in the plain text menu file format, " +"described in the menu files included with WindowMaker, usually at " +"~/GNUstep/Library/WindowMaker/menu" +msgstr "" +"´£¨Ñªº©R¥O¥²¶·²£¥Í¥B¿é¥X¦³®Äªº¿ï³æ©w¸q¦Ü¼Ð·Ç¿é¥X¡C³o©w¸qÀ³¸Ó¬O¯Â¤å¦r¿ï³æÀÉ®æ" +"¡¡A¦b WindowMaker ¥]§tªº¿ï³æÀɤ¤¦³´y­z¡A³q±`¦b " +"~/GNUstep/Library/WindowMaker/menu" + +#: ../../WPrefs.app/MenuGuru.c:350 ../../WPrefs.app/MenuGuru.c:372 +#: ../../WPrefs.app/MenuGuru.c:394 +msgid "" +"Type the path for the directory. You can type more than one path by " +"separating them with spaces." +msgstr "¿é¤J¥Ø¿ýªº¸ô®|¡C±z¥i¥H§Q¥ÎªÅ¥Õ¤À¹j¿é¤J¶W¹L¤@­Ó¸ô®|¡C" + +#: ../../WPrefs.app/MenuGuru.c:361 ../../WPrefs.app/MenuGuru.c:383 +#: ../../WPrefs.app/MenuGuru.c:405 +msgid "" +"The menu generated will have an item for each file in the directory. The " +"directories can contain program executables or data files (such as jpeg " +"images)." +msgstr "" +"²£¥Íªº¿ï³æ·|¦³¤@­Ó¶µ¥Øµ¹¥Ø¿ý¤¤ªº¨C¤@­ÓÀɮסC¥Ø¿ý¥i¥H§t¦³¥i°õ¦æªºµ{¦¡©Î¸ê®ÆÀÉ" +"]¨Ò¦p jpeg ¼v¹³¡^¡C" + +#: ../../WPrefs.app/MenuGuru.c:415 +msgid "" +"If the directory contain data files, type the command used to open these " +"files. Otherwise, leave it in blank." +msgstr "¦pªG¥Ø¿ý§t¦³¸ê®ÆÀÉ¡A¿é¤J¥Î¨Ó¶}±Ò³o¨ÇÀɮתº©R¥O¡C§_«h¡A¯dªÅ¥Õ¡C" + +#: ../../WPrefs.app/MenuGuru.c:426 +msgid "" +"Each file in the directory will have an item and they will be opened with " +"the supplied command.For example, if the directory contains image files and " +"the command is \"xv -root\", each file in the directory will have a menu " +"item like \"xv -root imagefile\"." +msgstr "" +"¥Ø¿ý¤¤ªº¨C¤@­ÓÀÉ®×·|¦³¤@­Ó¶µ¥Ø¥B·|¥H´£¨Ñªº©R¥O¶}±Ò¡CÁ|¨Ò¨Ó»¡¡A¦pªG¥Ø¿ý§t¦³¼v" +"³ÀÉ¥B©R¥O¬O \"xv -root\"¡A¥Ø¿ý¤¤ªº¨C¤@­ÓÀÉ®×·|¦³¤@­Ó¹³ \"xv -root " +"imagefile\" ªº¶µ¥Ø¡C" + +#: ../../WPrefs.app/MenuPreferences.c:112 +msgid "Menu Scrolling Speed" +msgstr "¿ï³æ±²°Ê³t«×" + +#: ../../WPrefs.app/MenuPreferences.c:161 +msgid "Submenu Alignment" +msgstr "°Æ¿ï³æ¹ï»ô" + +#: ../../WPrefs.app/MenuPreferences.c:204 +msgid "" +"Always open submenus inside the screen, instead of scrolling.\n" +"Note: this can be an annoyance at some circumstances." +msgstr "" +"¨C¦¸³£¦b¿Ã¹õ¤º¶}±Ò°Æ¿ï³æ¡A¦Ó¤£¬O±²°Ê¡C\n" +"µù¡G¦b¤@¨Ç±¡ªp¤U·|¥O¤H¥Í¹½¡C" + +#: ../../WPrefs.app/MenuPreferences.c:209 +msgid "Scroll off-screen menus when pointer is moved over them." +msgstr "·í«ü¼Ð²¾¹L¥h®É±²°Ê¶W¹L¿Ã¹õªº¿ï³æ¡C" + +#: ../../WPrefs.app/MenuPreferences.c:229 +msgid "Menu Preferences" +msgstr "¿ï³æ³]©w" + +#: ../../WPrefs.app/MouseSettings.c:147 +msgid "Invalid mouse acceleration value. Must be a positive real value." +msgstr "·Æ¹«¥[³t­­«×­ÈµL®Ä¡C¥²¶·¬O¤@¥¿¹ê¼Æ­È¡C" + +#: ../../WPrefs.app/MouseSettings.c:170 +msgid "" +"Invalid mouse acceleration threshold value. Must be the number of pixels to " +"travel before accelerating." +msgstr "·Æ¹«¥[³t­­«×­ÈµL®Ä¡C¥²¶·¬O¥[³t«e²¾°Êªº¹³¯À¼Æ¥Ø¡C" + +#: ../../WPrefs.app/MouseSettings.c:225 +#, c-format +msgid "mouse button %s not supported by WPrefs." +msgstr "·Æ¹««ö¶s %s ¥¼³Q WPrefs ¤ä´©" + +#: ../../WPrefs.app/MouseSettings.c:259 ../../WPrefs.app/MouseSettings.c:270 +#: ../../WPrefs.app/MouseSettings.c:281 +#, c-format +msgid "bad value %s for option %s" +msgstr "¿ï¶µ %s ªº­È %s ¿ù»~" + +#: ../../WPrefs.app/MouseSettings.c:341 +#, c-format +msgid "" +"modifier key %s for option ModifierKey was not recognized. Using %s as " +"default" +msgstr "ModifierKey ¿ï¶µªº­×¥¿Áä %s µLªk¿ë»{¡C¨Ï¥Î %s ¬°¹w³]­È" + +#: ../../WPrefs.app/MouseSettings.c:366 +msgid "could not retrieve keyboard modifier mapping" +msgstr "µLªk¨ú¦^Áä½L­×¥¿¹ïÀ³" + +#: ../../WPrefs.app/MouseSettings.c:513 +msgid "Mouse Speed" +msgstr "·Æ¹«³t«×" + +#: ../../WPrefs.app/MouseSettings.c:575 +msgid "Acceler.:" +msgstr "¥[³t­È:" + +#: ../../WPrefs.app/MouseSettings.c:587 +msgid "Threshold:" +msgstr "­­«×¡G" + +#: ../../WPrefs.app/MouseSettings.c:602 +msgid "Double-Click Delay" +msgstr "³s«ö¨â¤U©µ¿ð" + +#: ../../WPrefs.app/MouseSettings.c:646 +msgid "Test" +msgstr "´ú¸Õ" + +#: ../../WPrefs.app/MouseSettings.c:656 +msgid "Workspace Mouse Actions" +msgstr "¤u§@°Ï·Æ¹«°Ê§@" + +#: ../../WPrefs.app/MouseSettings.c:661 +msgid "Disable mouse actions" +msgstr "¨Ï·Æ¹«°Ê§@¥¢®Ä" + +#: ../../WPrefs.app/MouseSettings.c:714 +msgid "Applications menu" +msgstr "À³¥Îµ{µø¿ï³æ" + +#: ../../WPrefs.app/MouseSettings.c:720 +msgid "Window list menu" +msgstr "µøµ¡²M³æ¿ï³æ" + +#: ../../WPrefs.app/MouseSettings.c:726 +msgid "Select windows" +msgstr "¿ï¨úµøµ¡" + +#: ../../WPrefs.app/MouseSettings.c:761 +msgid "Mouse Grab Modifier" +msgstr "·Æ¹«§ì¨ú­×¹¢" + +#: ../../WPrefs.app/MouseSettings.c:795 +#, c-format +msgid "could not create %s" +msgstr "µLªk«Ø¥ß %s" + +#: ../../WPrefs.app/MouseSettings.c:811 +#, c-format +msgid "could not create temporary file %s" +msgstr "µLªk«Ø¥ß¼È¦sÀÉ %s" + +#: ../../WPrefs.app/MouseSettings.c:836 +#, c-format +msgid "could not rename file %s to %s\n" +msgstr "µLªkÅܧóÀɦW %s ¦Ü %s\n" + +#: ../../WPrefs.app/MouseSettings.c:919 +msgid "Mouse Preferences" +msgstr "·Æ¹«³]©w" + +#: ../../WPrefs.app/Paths.c:82 +msgid "bad value in option IconPath. Using default path list" +msgstr "IconPath ¿ï¶µªº­È¿ù»~¡C¨Ï¥Î¹w³]¸ô®|²M³æ" + +#: ../../WPrefs.app/Paths.c:99 +msgid "bad value in option PixmapPath. Using default path list" +msgstr "PixmapPath ¿ï¶µªº­È¿ù»~¡C¨Ï¥Î¹w³]¸ô®|²M³æ" + +#: ../../WPrefs.app/Paths.c:302 +msgid "Icon Search Paths" +msgstr "¹Ï¥Ü·j´M¸ô®|" + +#: ../../WPrefs.app/Paths.c:314 ../../WPrefs.app/Paths.c:350 +msgid "Add" +msgstr "·s¼W" + +#: ../../WPrefs.app/Paths.c:321 ../../WPrefs.app/Paths.c:357 +msgid "Remove" +msgstr "§R°£" + +#: ../../WPrefs.app/Paths.c:338 +msgid "Pixmap Search Paths" +msgstr "Pixmap ·j´M¸ô®|" + +#: ../../WPrefs.app/Paths.c:386 +msgid "Search Path Configuration" +msgstr "·j´M¸ô®|³]©w" + +#: ../../WPrefs.app/Preferences.c:151 +msgid "Size Display" +msgstr "µøµ¡¤j¤pÅã¥Ü" + +#: ../../WPrefs.app/Preferences.c:156 ../../WPrefs.app/Preferences.c:172 +msgid "Corner of screen" +msgstr "¿Ã¹õ¨¤¸¨" + +#: ../../WPrefs.app/Preferences.c:157 ../../WPrefs.app/Preferences.c:173 +msgid "Center of screen" +msgstr "¿Ã¹õ¤¤¥¡" + +#: ../../WPrefs.app/Preferences.c:158 ../../WPrefs.app/Preferences.c:174 +msgid "Center of resized window" +msgstr "µøµ¡¤¤¥¡" + +#: ../../WPrefs.app/Preferences.c:159 +msgid "Technical drawing-like" +msgstr "¬ì¾Çø¹Ï¤è¦¡" + +#: ../../WPrefs.app/Preferences.c:167 +msgid "Position Display" +msgstr "¦ì¸mÅã¥Ü" + +#: ../../WPrefs.app/Preferences.c:182 +msgid "Show balloon text for..." +msgstr "Åã¥Ü®ð²y¤å¦r..." + +#: ../../WPrefs.app/Preferences.c:189 +msgid "incomplete window titles" +msgstr "¤£§¹¾ãµøµ¡¼ÐÃD" + +#: ../../WPrefs.app/Preferences.c:190 +msgid "miniwindow titles" +msgstr "¤pµøµ¡¼ÐÃD" + +#: ../../WPrefs.app/Preferences.c:191 +msgid "application/dock icons" +msgstr "À³¥Îµ{¦¡/°±¾a°Ï¹Ï¥Ü" + +#: ../../WPrefs.app/Preferences.c:204 +msgid "Raise window when switching focus with keyboard (CirculateRaise)." +msgstr "·í¨Ï¥ÎÁä½L¤Á´«µJÂI®É¤É°_µøµ¡" + +#: ../../WPrefs.app/Preferences.c:210 +msgid "Keep keyboard language status for each window." +msgstr "¬°¨C­Óµøµ¡«O«ùÁä½L»y¨¥ª¬ºA" + +#: ../../WPrefs.app/Preferences.c:231 +msgid "Miscellaneous Ergonomic Preferences" +msgstr "¨ä¥L¾Þ§@©Ê³]©w" + +#: ../../WPrefs.app/Text.c:179 +#, c-format +msgid "Invalid font %s." +msgstr "µL®Äªº¦r«¬ %s¡C" + +#: ../../WPrefs.app/Text.c:256 +msgid "Set Font..." +msgstr "³]©w¦r«¬..." + +#: ../../WPrefs.app/Text.c:262 +msgid "Window Title Font" +msgstr "µøµ¡¼ÐÃD¦r«¬" + +#: ../../WPrefs.app/Text.c:263 +msgid "Menu Title Font" +msgstr "¿ï³æ¼ÐÃD¦r«¬" + +#: ../../WPrefs.app/Text.c:264 +msgid "Menu Item Font" +msgstr "¿ï³æ¶µ¥Ø¦r«¬" + +#: ../../WPrefs.app/Text.c:265 +msgid "Icon Title Font" +msgstr "¹Ï¥Ü¼ÐÃD¦r«¬" + +#: ../../WPrefs.app/Text.c:266 +msgid "Clip Title Font" +msgstr "°j¯¾°w¼ÐÃD¦r«¬" + +#: ../../WPrefs.app/Text.c:267 +msgid "Geometry Display Font" +msgstr "¦ì¸mªí¥Ü¦r«¬" + +#: ../../WPrefs.app/Text.c:280 +msgid "" +"Sample Text\n" +"abcdefghijklmnopqrstuvxywz\n" +"ABCDEFGHIJKLMNOPQRSTUVXYWZ\n" +"0123456789" +msgstr "" +"½d¨Ò¤å¦r\n" +"abcdefghijklmn...£t£u£v£w£x\n" +"ABCDEFGHIJKLMN...µøµ¡ºÞ²z­û\n" +"123...¤@¤G¤T" + +#: ../../WPrefs.app/Text.c:285 +msgid "Alignment" +msgstr "¹ï»ô" + +#: ../../WPrefs.app/Text.c:290 +msgid "Left" +msgstr "¾a¥ª" + +#: ../../WPrefs.app/Text.c:296 +msgid "Center" +msgstr "¸m¤¤" + +#: ../../WPrefs.app/Text.c:303 +msgid "Right" +msgstr "¾a¥k" + +#: ../../WPrefs.app/Text.c:325 +msgid "Text Preferences" +msgstr "¤å¦r³]©w" + +#: ../../WPrefs.app/TextureAndColor.c:384 +msgid "Window Title Bar" +msgstr "µøµ¡¼ÐÃD¦C" + +#: ../../WPrefs.app/TextureAndColor.c:385 +msgid "Menu Title Bar" +msgstr "¿ï³æ¼ÐÃD¦C" + +#: ../../WPrefs.app/TextureAndColor.c:386 +msgid "Menu Items" +msgstr "¿ï³æ¶µ¥Ø" + +#: ../../WPrefs.app/TextureAndColor.c:387 +msgid "Workspace/Clip" +msgstr "¤u§@°Ï/°j¯¾¯u" + +#: ../../WPrefs.app/TextureAndColor.c:388 +msgid "Icons" +msgstr "¹Ï¥Ü" + +#: ../../WPrefs.app/TextureAndColor.c:399 +msgid "Focused Window" +msgstr "µJÂIµøµ¡" + +#: ../../WPrefs.app/TextureAndColor.c:412 +#: ../../WPrefs.app/TextureAndColor.c:443 +#: ../../WPrefs.app/TextureAndColor.c:474 +msgid "Texture" +msgstr "§÷½è" + +#: ../../WPrefs.app/TextureAndColor.c:418 +#: ../../WPrefs.app/TextureAndColor.c:449 +#: ../../WPrefs.app/TextureAndColor.c:480 +msgid "Text Color" +msgstr "¤å¦r¦â±m" + +#: ../../WPrefs.app/TextureAndColor.c:423 +#: ../../WPrefs.app/TextureAndColor.c:454 +#: ../../WPrefs.app/TextureAndColor.c:485 +#: ../../WPrefs.app/TextureAndColor.c:509 +#: ../../WPrefs.app/TextureAndColor.c:575 +#: ../../WPrefs.app/TextureAndColor.c:652 +msgid "Set..." +msgstr "³]©w..." + +#: ../../WPrefs.app/TextureAndColor.c:430 +msgid "Unfocused Window" +msgstr "«DµJÂIµøµ¡" + +#: ../../WPrefs.app/TextureAndColor.c:461 +msgid "Owner of Focused Window" +msgstr "µJÂIµøµ¡¾Ö¦³ªÌ" + +#: ../../WPrefs.app/TextureAndColor.c:494 +msgid "Unselected Items" +msgstr "¥¼¿ï¨ú¶µ¥Ø" + +#: ../../WPrefs.app/TextureAndColor.c:504 +#: ../../WPrefs.app/TextureAndColor.c:558 +msgid "Background" +msgstr "­I´º" + +#: ../../WPrefs.app/TextureAndColor.c:519 +msgid "Normal Text" +msgstr "¥¿±`¤å¦r" + +#: ../../WPrefs.app/TextureAndColor.c:529 +msgid "Disabled Text" +msgstr "¥¢®Ä¤å¦r" + +#: ../../WPrefs.app/TextureAndColor.c:538 +msgid "Selected Items" +msgstr "¿ï¨ú¶µ¥Ø" + +#: ../../WPrefs.app/TextureAndColor.c:548 +msgid "Text" +msgstr "¤å¦r" + +#: ../../WPrefs.app/TextureAndColor.c:566 +msgid "Menu Title Background" +msgstr "¿ï³æ¼ÐÃD­I´º" + +#: ../../WPrefs.app/TextureAndColor.c:584 +msgid "Menu Title Text" +msgstr "¿ï³æ¼ÐÃD¤å¦r" + +#: ../../WPrefs.app/TextureAndColor.c:596 +msgid "Workspace Background" +msgstr "¤u§@°Ï­I´º" + +#: ../../WPrefs.app/TextureAndColor.c:605 +msgid "Change" +msgstr "§ïÅÜ" + +#: ../../WPrefs.app/TextureAndColor.c:611 +msgid "Clip Title Text" +msgstr "°j¤å°w¼ÐÃD¤å¦r" + +#: ../../WPrefs.app/TextureAndColor.c:621 +msgid "Normal" +msgstr "¥¿±`" + +#: ../../WPrefs.app/TextureAndColor.c:631 +msgid "Collapsed" +msgstr "§éÅ|" + +#: ../../WPrefs.app/TextureAndColor.c:643 +msgid "Icon Background" +msgstr "¹Ï¥Ü­I´º" + +#: ../../WPrefs.app/TextureAndColor.c:677 +msgid "Texture and Color Preferences" +msgstr "§÷½è»P¦â±m³]©w" + +#: ../../WPrefs.app/Themes.c:71 ../../WPrefs.app/Themes.c:82 +msgid "Set" +msgstr "³]©w" + +#: ../../WPrefs.app/Themes.c:132 +msgid "Stop" +msgstr "°±¤î" + +#: ../../WPrefs.app/Themes.c:143 ../../WPrefs.app/Themes.c:205 +#: ../../WPrefs.app/Themes.c:225 +msgid "Download" +msgstr "¤U¸ü" + +#: ../../WPrefs.app/Themes.c:173 +msgid "Save Current Theme" +msgstr "Àx¦s¥Ø«e¥DÃD" + +#: ../../WPrefs.app/Themes.c:182 +msgid "Load" +msgstr "¸ü¤J" + +#: ../../WPrefs.app/Themes.c:187 +msgid "Install" +msgstr "¦w¸Ë" + +#: ../../WPrefs.app/Themes.c:195 +msgid "Tile of The Day" +msgstr "¥»¤é¼ÐÃD" + +#: ../../WPrefs.app/Themes.c:215 +msgid "Bar of The Day" +msgstr "¥»¤é¼ÐÃD¦C" + +#: ../../WPrefs.app/Themes.c:252 +msgid "Themes" +msgstr "¥DÃD" + +#: ../../WPrefs.app/WPrefs.c:201 +msgid "Window Maker Preferences" +msgstr "Window Maker ³]©w" + +#: ../../WPrefs.app/WPrefs.c:225 +msgid "Revert Page" +msgstr "ÁÙ­ì" + +#: ../../WPrefs.app/WPrefs.c:231 +msgid "Revert All" +msgstr "¥þ³¡ÁÙ­ì" + +#: ../../WPrefs.app/WPrefs.c:237 +msgid "Save" +msgstr "Àx¦s" + +#: ../../WPrefs.app/WPrefs.c:243 +msgid "Close" +msgstr "Ãö³¬" + +#: ../../WPrefs.app/WPrefs.c:260 +msgid "Window Maker Preferences Utility" +msgstr "Window Maker ³]©w¤½¥Îµ{¦¡" + +#: ../../WPrefs.app/WPrefs.c:267 +#, c-format +msgid "Version %s for Window Maker %s" +msgstr "Window Maker %s ¥Îª©¥» %s" + +#: ../../WPrefs.app/WPrefs.c:274 +msgid "Starting..." +msgstr "±Ò°Ê¤¤..." + +#: ../../WPrefs.app/WPrefs.c:280 +msgid "" +"Programming/Design: Alfredo K. Kojima\n" +"Artwork: Marco van Hylckama Vlieg\n" +"More Programming: James Thompson" +msgstr "" +"µ{¦¡/³]­p¡GAlfredo K. Kojima\n" +"¬ü³N¡GMarco van Hylckama Vlieg\n" +"µ{¦¡¡GJames Thompson" + +#: ../../WPrefs.app/WPrefs.c:368 +#, c-format +msgid "could not locate image file %s\n" +msgstr "µLªk§ä¥X¼v¹³ÀÉ %s\n" + +#: ../../WPrefs.app/WPrefs.c:474 +#, c-format +msgid "could not load image file %s:%s" +msgstr "µLªk¸ü¤J¼v¹³ÀÉ %s:%s" + +#: ../../WPrefs.app/WPrefs.c:493 +msgid "Loading Window Maker configuration files..." +msgstr "¸ü¤J Window Maker ³]©wÀÉ..." + +#: ../../WPrefs.app/WPrefs.c:497 +msgid "Initializing configuration panels..." +msgstr "±Ò©l³]©w­±ªO..." + +#: ../../WPrefs.app/WPrefs.c:525 +msgid "" +"WPrefs is free software and is distributed WITHOUT ANY WARRANTY under the " +"terms of the GNU General Public License. Redistribution of the icons in this " +"program separately from the program is prohibited." +msgstr "" +"WPrefs ¬O¦Û¥Ñ³nÅé¥B¦b GNU General Public License " +"±ø´Ú¤UµL¥ô¦ó«Oµý¦aµo°e¡C¸T¤î³æ¿W­«·sµo°e³oµ{¦¡¤¤ªº¹Ï¥Ü" + +#: ../../WPrefs.app/WPrefs.c:557 ../../WPrefs.app/WPrefs.c:613 +#, c-format +msgid "Window Maker domain (%s) is corrupted!" +msgstr "Window Maker ©w¸q°ì (%s) ¤w·lÃa¡I" + +#: ../../WPrefs.app/WPrefs.c:561 +#, c-format +msgid "Could not load Window Maker domain (%s) from defaults database." +msgstr "µLªk±q¹w³]¸ê®Æ®w¸ü¤J Window Maker ©w¸q°ì (%s)" + +#: ../../WPrefs.app/WPrefs.c:569 +msgid "could not extract version information from Window Maker" +msgstr "µLªk±oª¾ Window Maker ªºª©¥»¸ê°T" + +#: ../../WPrefs.app/WPrefs.c:570 +msgid "Make sure wmaker is in your search path." +msgstr "½T©w wmaker ¦b±zªº·j´M¸ô®|¤¤¡C" + +#: ../../WPrefs.app/WPrefs.c:573 +msgid "" +"Could not extract version from Window Maker. Make sure it is correctly " +"installed and is in your PATH environment variable." +msgstr "µLªk±oª¾ Window Maker ªºª©¥»¡C½T©w¥¦¦w¸Ë¥¿½T¥B¦b±zªº PATH Àô¹ÒÅܼƤ¤¡C" + +#: ../../WPrefs.app/WPrefs.c:583 +msgid "" +"Could not extract version from Window Maker. Make sure it is correctly " +"installed." +msgstr "µLªk±oª¾ Window Maker ªºª©¥»¡C½T©w¥¦¦w¸Ë¥¿½T¡C" + +#: ../../WPrefs.app/WPrefs.c:588 +#, c-format +msgid "" +"WPrefs only supports Window Maker 0.18.0 or newer.\n" +"The version installed is %i.%i.%i\n" +msgstr "" +"WPrefs ¥u¤ä´© Window Maker 0.18.0 ©Î§ó·sª©¥»¡C\n" +"¦w¸Ëªºª©¥»¬O %i.%i.%i\n" + +#: ../../WPrefs.app/WPrefs.c:595 +#, c-format +msgid "" +"Window Maker %i.%i.%i, which is installed in your system, is not fully " +"supported by this version of WPrefs." +msgstr "¦b±zªº¨t²Î¤¤¦w¸Ëªº Window Maker %i.%i.%i ¤£§¹¥þ¤ä´©³oª©¥»ªº WPrefs¡C" + +#: ../../WPrefs.app/WPrefs.c:602 +msgid "could not run \"wmaker --global_defaults_path\"." +msgstr "µLªk°õ¦æ \"wmaker -global_defaults_path\"¡C" + +#: ../../WPrefs.app/WPrefs.c:617 +#, c-format +msgid "Could not load global Window Maker domain (%s)." +msgstr "µLªk¸ü¤J¾ãÅé Window Maker ©w¸q°ì (%s)¡C" + +#: ../../WPrefs.app/WPrefs.c:863 +#, c-format +msgid "" +"bad speed value for option %s\n" +". Using default Medium" +msgstr "" +"%s ¿ï¶µ³t«×­È¿ù»~¡C\n" +"¨Ï¥Î¹w³]­È" + +#: ../../WPrefs.app/WindowHandling.c:108 +#, c-format +msgid "bad option value %s in WindowPlacement. Using default value" +msgstr "WindowPlacement ¿ï¶µ %s ¸ê®Æ¿ù»~¡C¨Ï¥Î¹w³]­È" + +#: ../../WPrefs.app/WindowHandling.c:130 +msgid "invalid data in option WindowPlaceOrigin. Using default (0,0)" +msgstr "WindowPlaceOrigin ¿ï¶µ¤¤¸ê®ÆµL®Ä¡C¨Ï¥Î¹w³]¤§ (0,0)" + +#: ../../WPrefs.app/WindowHandling.c:192 +msgid "Window Placement" +msgstr "µøµ¡©ñ¸m" + +#: ../../WPrefs.app/WindowHandling.c:197 +msgid "Automatic" +msgstr "¦Û°Ê" + +#: ../../WPrefs.app/WindowHandling.c:198 +msgid "Random" +msgstr "ÀH·N" + +#: ../../WPrefs.app/WindowHandling.c:199 +msgid "Manual" +msgstr "¤â°Ê" + +#: ../../WPrefs.app/WindowHandling.c:200 +msgid "Cascade" +msgstr "­«Å|" + +#: ../../WPrefs.app/WindowHandling.c:206 +msgid "Placement Origin" +msgstr "©ñ¸m°ò·ÇÂI" + +#: ../../WPrefs.app/WindowHandling.c:260 +msgid "Opaque Move" +msgstr "¤£³z©ú²¾°Ê" + +#: ../../WPrefs.app/WindowHandling.c:296 +msgid "When maximizing..." +msgstr "·í³Ì¤j¤Æ®É..." + +#: ../../WPrefs.app/WindowHandling.c:301 +msgid "...do not resize over icons" +msgstr "...¤£­n¶W¹L¹Ï¥Ü°Ï" + +#: ../../WPrefs.app/WindowHandling.c:307 +msgid "...do not resize over dock" +msgstr "...¤£­n¶W¹L°±¾a°Ï" + +#: ../../WPrefs.app/WindowHandling.c:320 +msgid "Open transients in same workspace as their owners" +msgstr "«O«ù½T»{¡Bĵ§iµ¥µøµ¡¦b¾Ö¦³ªÌ¤§¤W" + +#: ../../WPrefs.app/WindowHandling.c:347 +msgid "Window Handling Preferences" +msgstr "µøµ¡¾Þ§@³]©w" + +#: ../../WPrefs.app/Workspace.c:137 +msgid "Workspace Navigation" +msgstr "¤u§@°Ï¤§¾Þ§@" + +#: ../../WPrefs.app/Workspace.c:161 +msgid "drag windows between workspaces." +msgstr "¦b¤u§@°Ï¤§¶¡©ì¦²µøµ¡¡C" + +#: ../../WPrefs.app/Workspace.c:186 +msgid "" +"switch to first workspace when switching past the last workspace and " +"vice-versa" +msgstr "·í¤Á´«¶W¹L³Ì«á¤@­Ó¤u§@°Ï®É¤Á´«¦Ü²Ä¤@­Ó¤u§@°Ï¡A¤Ï¤§¥çµM¡C" + +#: ../../WPrefs.app/Workspace.c:210 +msgid "create a new workspace when switching past the last workspace." +msgstr "·í¤Á´«¶W¹L³Ì«á¤@­Ó¤u§@°Ï®É«Ø¥ß·sªº¤u§@°Ï¡C" + +#: ../../WPrefs.app/Workspace.c:218 +msgid "Dock/Clip" +msgstr "°±¾a°Ï/°j¯¾°w" + +#: ../../WPrefs.app/Workspace.c:287 +msgid "Workspace Preferences" +msgstr "¤u§@°Ï³]©w" + +#: ../../WPrefs.app/main.c:71 +#, c-format +msgid "usage: %s [options]\n" +msgstr "¨Ï¥Îªk: %s [¿ï¶µ]\n" + +#: ../../WPrefs.app/main.c:72 +msgid "options:" +msgstr "¿ï¶µ:" + +#: ../../WPrefs.app/main.c:73 +msgid " -display \tdisplay to be used" +msgstr " -display \t­n¨Ï¥Îªº display" + +#: ../../WPrefs.app/main.c:74 +msgid " --version\t\tprint version number and exit" +msgstr " --version\t\t¦L¥Xª©¥»½s¸¹¨ÃÂ÷¶}" + +#: ../../WPrefs.app/main.c:75 +msgid " --help\t\tprint this message and exit" +msgstr " --help\t\tÅã¥Ü¥»»¡©ú°T®§" + +#: ../../WPrefs.app/main.c:134 +#, c-format +msgid "too few arguments for %s" +msgstr "%s ªº°Ñ¼Æ¤Ó¤Ö" + +#: ../../WPrefs.app/main.c:156 +msgid "X server does not support locale" +msgstr "X ¦øªA¾¹¨Ã¤£¤ä´©·í¦a¤Æ (locale)" + +#: ../../WPrefs.app/main.c:159 +msgid "cannot set locale modifiers" +msgstr "µLªk³]©w locale modifiers" + +#: ../../WPrefs.app/main.c:165 +#, c-format +msgid "could not open display %s" +msgstr "µLªk¶}±Ò display %s" + +#: ../../WPrefs.app/main.c:173 +msgid "could not initialize application" +msgstr "µLªk±Ò©lÀ³¥Îµ{¦¡" + +#~ msgid "" +#~ "The format of the current menu in ~/G/D/WMRootMenu is not supported by " +#~ "WPrefs. A new menu will be created.\n" +#~ "You can also replace ~/G/D/WMRootMenu with ~/G/L/W/plmenu to get the default " +#~ "menu." +#~ msgstr "" +#~ "¥Ø«e¦b ~/G/D/WMRootMenu ªº¿ï³æ®æ¦¡¥¼³Q WPrefs ¤ä´©¡C·s¿ï³æ·|³Q«Ø¥ß¡C\n" +#~ "±z¤]¥i¥H¥Î§â ~/G/D/WMRootMenu ´«¦¨ ~/G/L/W/plmenu ¨Ó±o¨ì¹w³]¿ï³æ¡C" diff --git a/WPrefs.app/tiff/Makefile.in b/WPrefs.app/tiff/Makefile.in index 21dccb5e..928da52c 100644 --- a/WPrefs.app/tiff/Makefile.in +++ b/WPrefs.app/tiff/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WPrefs.app/xpm/Makefile.in b/WPrefs.app/xpm/Makefile.in index 856e9249..9bbf0460 100644 --- a/WPrefs.app/xpm/Makefile.in +++ b/WPrefs.app/xpm/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker.lsm.in b/WindowMaker.lsm.in index 021301ca..18df20d1 100644 --- a/WindowMaker.lsm.in +++ b/WindowMaker.lsm.in @@ -8,7 +8,7 @@ Description: N*EXTSTEP alike, good looking, fast and easy to use/configure workspaces, easy to use application dock, very flexible menus, graphical configuration, 13 types of decoration textures, national language support, themes etc -Keywords: window-manager X11 GNUstep NEXTSTEP GNOME KDE +Keywords: window-manager X11 GNUstep NEXTSTEP GNOME KDE OpenLook Motif Author: kojima@windowmaker.org (Alfredo K. Kojima) Maintained-by: kojima@windowmaker.org (Alfredo K. Kojima) dan@windowmaker.org (Dan Pascu) diff --git a/WindowMaker/Backgrounds/Makefile.in b/WindowMaker/Backgrounds/Makefile.in index 796ab22e..f8f87dad 100755 --- a/WindowMaker/Backgrounds/Makefile.in +++ b/WindowMaker/Backgrounds/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/Defaults/Makefile.am b/WindowMaker/Defaults/Makefile.am index b8fef185..387d0304 100644 --- a/WindowMaker/Defaults/Makefile.am +++ b/WindowMaker/Defaults/Makefile.am @@ -1,5 +1,5 @@ -defsdatadir = $(pkgdatadir)/Defaults +defsdatadir = $(sysconfdir)/WindowMaker defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL @@ -7,18 +7,19 @@ EXTRA_DIST = $(defsdata_DATA) WMWindowAttributes.in WindowMaker.in WMState.in CLEANFILES = WMWindowAttributes WindowMaker WMState -WMWindowAttributes: $(srcdir)/WMWindowAttributes.in ./Makefile +WMWindowAttributes: $(srcdir)/WMWindowAttributes.in -rm -f WMWindowAttributes sed -e "s:#extension#:@ICONEXT@:" \ $(srcdir)/WMWindowAttributes.in > WMWindowAttributes chmod 644 WMWindowAttributes -WindowMaker: $(srcdir)/WindowMaker.in ./Makefile +WindowMaker: $(srcdir)/WindowMaker.in -rm -f WindowMaker - sed -e "s:#pkgdatadir#:$(pkgdatadir):" $(srcdir)/WindowMaker.in > WindowMaker + sed -e "s:#pkgdatadir#:$(pkgdatadir):" $(srcdir)/WindowMaker.in \ + > WindowMaker chmod 644 WindowMaker -WMState: $(srcdir)/WMState.in ./Makefile +WMState: $(srcdir)/WMState.in -rm -f WMState sed -e "s:#wprefs#:$(wprefsdir)/WPrefs:" $(srcdir)/WMState.in > WMState chmod 644 WMState diff --git a/WindowMaker/Defaults/Makefile.in b/WindowMaker/Defaults/Makefile.in index 3843d698..617e74b6 100755 --- a/WindowMaker/Defaults/Makefile.in +++ b/WindowMaker/Defaults/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -87,7 +87,7 @@ XLIBS = @XLIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ wprefsdir = @wprefsdir@ -defsdatadir = $(pkgdatadir)/Defaults +defsdatadir = $(sysconfdir)/WindowMaker defsdata_DATA = WMRootMenu WMWindowAttributes WindowMaker WMState WMGLOBAL @@ -217,18 +217,19 @@ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean -WMWindowAttributes: $(srcdir)/WMWindowAttributes.in ./Makefile +WMWindowAttributes: $(srcdir)/WMWindowAttributes.in -rm -f WMWindowAttributes sed -e "s:#extension#:@ICONEXT@:" \ $(srcdir)/WMWindowAttributes.in > WMWindowAttributes chmod 644 WMWindowAttributes -WindowMaker: $(srcdir)/WindowMaker.in ./Makefile +WindowMaker: $(srcdir)/WindowMaker.in -rm -f WindowMaker - sed -e "s:#pkgdatadir#:$(pkgdatadir):" $(srcdir)/WindowMaker.in > WindowMaker + sed -e "s:#pkgdatadir#:$(pkgdatadir):" $(srcdir)/WindowMaker.in \ + > WindowMaker chmod 644 WindowMaker -WMState: $(srcdir)/WMState.in ./Makefile +WMState: $(srcdir)/WMState.in -rm -f WMState sed -e "s:#wprefs#:$(wprefsdir)/WPrefs:" $(srcdir)/WMState.in > WMState chmod 644 WMState diff --git a/WindowMaker/Defaults/WindowMaker b/WindowMaker/Defaults/WindowMaker index 7d10cef1..0ff6b3c4 100755 --- a/WindowMaker/Defaults/WindowMaker +++ b/WindowMaker/Defaults/WindowMaker @@ -1,6 +1,6 @@ { OpenTransientOnOwnerWorkspace = NO; - EdgeResistance = 5; + EdgeResistance = YES; IconificationStyle = Zoom; IconPath = ( "~/GNUstep/Library/Icons", @@ -48,6 +48,9 @@ AutoArrangeIcons = NO; AdvanceToNewWorkspace = NO; CycleWorkspaces = NO; +#ifdef WEENDOZE_CYCLE + WindozeCycling = YES; +#endif /* WEENDOZE_CYCLE */ ResizeDisplay = line; MoveDisplay = floating; OpaqueMove = YES; diff --git a/WindowMaker/Defaults/WindowMaker.in b/WindowMaker/Defaults/WindowMaker.in index 3f10cb2a..ef76e5ba 100644 --- a/WindowMaker/Defaults/WindowMaker.in +++ b/WindowMaker/Defaults/WindowMaker.in @@ -1,6 +1,6 @@ { OpenTransientOnOwnerWorkspace = NO; - EdgeResistance = 5; + EdgeResistance = YES; IconificationStyle = Zoom; IconPath = ( "~/GNUstep/Library/Icons", @@ -48,6 +48,9 @@ AutoArrangeIcons = NO; AdvanceToNewWorkspace = NO; CycleWorkspaces = NO; +#ifdef WEENDOZE_CYCLE + WindozeCycling = YES; +#endif /* WEENDOZE_CYCLE */ ResizeDisplay = line; MoveDisplay = floating; OpaqueMove = YES; diff --git a/WindowMaker/IconSets/Makefile.am b/WindowMaker/IconSets/Makefile.am index d3466a92..21ec7da6 100644 --- a/WindowMaker/IconSets/Makefile.am +++ b/WindowMaker/IconSets/Makefile.am @@ -7,7 +7,7 @@ EXTRA_DIST = CLEANFILES = Default.iconset -Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile +Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes -rm -f Default.iconset cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default.iconset chmod 644 Default.iconset diff --git a/WindowMaker/IconSets/Makefile.in b/WindowMaker/IconSets/Makefile.in index 8d8ebfd1..edef9a84 100755 --- a/WindowMaker/IconSets/Makefile.in +++ b/WindowMaker/IconSets/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -217,7 +217,7 @@ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean -Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes ./Makefile +Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes -rm -f Default.iconset cp $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes Default.iconset chmod 644 Default.iconset diff --git a/WindowMaker/Icons/Makefile.in b/WindowMaker/Icons/Makefile.in index 48a35107..6d0c09f5 100755 --- a/WindowMaker/Icons/Makefile.in +++ b/WindowMaker/Icons/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/Icons/README b/WindowMaker/Icons/README index 14d96212..7e84b9e6 100644 --- a/WindowMaker/Icons/README +++ b/WindowMaker/Icons/README @@ -2,10 +2,10 @@ The icons listed in the end of this file and their correspondent xpm versions were made by Marco van Hylckama Vlieg. They may be distributed freely and/or modified as long as the original Author is mentioned! +marco@windowmaker.org clip2.tiff is based on an icon by Vinny Ferrari. -fatal@global.uibk.ac.at BitchX.tiff DefaultAppIcon.tiff diff --git a/WindowMaker/Makefile.am b/WindowMaker/Makefile.am index 48eae412..b20648b8 100644 --- a/WindowMaker/Makefile.am +++ b/WindowMaker/Makefile.am @@ -30,6 +30,7 @@ prefsdata_DATA =\ menu.se\ menu.sl\ menu.tr\ + menu.zh_TW.Big5\ plmenu\ plmenu.fr\ plmenu.hr\ diff --git a/WindowMaker/Makefile.in b/WindowMaker/Makefile.in index a3fb1724..e2523f13 100755 --- a/WindowMaker/Makefile.in +++ b/WindowMaker/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -91,7 +91,7 @@ SUBDIRS = Backgrounds Defaults IconSets Icons Pixmaps Styles Themes prefsdatadir = $(pkgdatadir) -prefsdata_DATA = README README.themes autostart.sh exitscript.sh menu menu.ca menu.cz menu.de menu.dk menu.el menu.es menu.fi menu.fr menu.gl menu.he menu.hr menu.hu menu.it menu.ja menu.ko menu.nl menu.no menu.pt menu.ru menu.se menu.sl menu.tr plmenu plmenu.fr plmenu.hr wmmacros xtree.dat +prefsdata_DATA = README README.themes autostart.sh exitscript.sh menu menu.ca menu.cz menu.de menu.dk menu.el menu.es menu.fi menu.fr menu.gl menu.he menu.hr menu.hu menu.it menu.ja menu.ko menu.nl menu.no menu.pt menu.ru menu.se menu.sl menu.tr menu.zh_TW.Big5 plmenu plmenu.fr plmenu.hr wmmacros xtree.dat EXTRA_DIST = $(prefsdata_DATA) mkMakefile diff --git a/WindowMaker/Pixmaps/Makefile.in b/WindowMaker/Pixmaps/Makefile.in index 36b9ac37..52b83299 100755 --- a/WindowMaker/Pixmaps/Makefile.in +++ b/WindowMaker/Pixmaps/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/README b/WindowMaker/README index 84d95fca..88460439 100644 --- a/WindowMaker/README +++ b/WindowMaker/README @@ -56,4 +56,4 @@ menu.dk Danish John M. Lockard menu.sl Slovene Alen Salamun menu.hu Hungarian Csanaki Csaba menu.ca Català Carles Amig dj_fr3nd@hotmail.com - +menu.zh_TW.Big5 Chinese Li Wei Jih diff --git a/WindowMaker/Styles/Makefile.in b/WindowMaker/Styles/Makefile.in index b67cd049..7db6b23c 100755 --- a/WindowMaker/Styles/Makefile.in +++ b/WindowMaker/Styles/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/Themes/Checker.themed/Makefile.in b/WindowMaker/Themes/Checker.themed/Makefile.in index bfbf0503..f4549ee4 100755 --- a/WindowMaker/Themes/Checker.themed/Makefile.in +++ b/WindowMaker/Themes/Checker.themed/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/Themes/Makefile.am b/WindowMaker/Themes/Makefile.am index 3043ec22..ae0b2fec 100644 --- a/WindowMaker/Themes/Makefile.am +++ b/WindowMaker/Themes/Makefile.am @@ -2,7 +2,7 @@ SUBDIRS = Night.themed Checker.themed defsdatadir = $(pkgdatadir)/Themes -defsdata_DATA = Default.style OpenStep.style Pastel.style +defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style EXTRA_DIST = $(defsdata_DATA) diff --git a/WindowMaker/Themes/Makefile.in b/WindowMaker/Themes/Makefile.in index 9cb99d6d..41e9ac44 100755 --- a/WindowMaker/Themes/Makefile.in +++ b/WindowMaker/Themes/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -91,7 +91,7 @@ SUBDIRS = Night.themed Checker.themed defsdatadir = $(pkgdatadir)/Themes -defsdata_DATA = Default.style OpenStep.style Pastel.style +defsdata_DATA = Default.style OpenStep.style Pastel.style SteelBlueSilk.style EXTRA_DIST = $(defsdata_DATA) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs diff --git a/WindowMaker/Themes/Night.themed/Makefile.in b/WindowMaker/Themes/Night.themed/Makefile.in index b1c97a82..238a07e9 100755 --- a/WindowMaker/Themes/Night.themed/Makefile.in +++ b/WindowMaker/Themes/Night.themed/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/WindowMaker/Themes/SteelBlueSilk.style b/WindowMaker/Themes/SteelBlueSilk.style new file mode 100644 index 00000000..67c212c7 --- /dev/null +++ b/WindowMaker/Themes/SteelBlueSilk.style @@ -0,0 +1,47 @@ +{ + TitleJustify = center; + ClipTitleFont = "-b&h-lucida-medium-r-normal-*-10-*-*-*-p-*-iso8859-1"; + WindowTitleFont = "-b&h-lucida-medium-r-normal-*-12-*-*-*-p-*-iso8859-1"; + MenuTitleFont = "-b&h-lucida-bold-r-normal-*-12-*-*-*-p-*-iso8859-1"; + MenuTextFont = "-b&h-lucida-medium-r-normal-*-12-*-*-*-p-*-iso8859-1"; + IconTitleFont = "-b&h-lucida-medium-r-normal-*-10-*-*-*-p-*-iso8859-1"; + DisplayFont = "-b&h-lucida-medium-r-normal-*-12-*-*-*-p-*-iso8859-1"; + HighlightColor = white; + HighlightTextColor = black; + ClipTitleColor = white; + CClipTitleColor = gray60; + FTitleColor = white; + PTitleColor = white; + UTitleColor = gray20; + FTitleBack = ( + mdgradient, + "#18191f", + "#939abd", + "#616185", + "#616185", + "#5f5f83", + "#555575", + "#59597a", + "#555575", + "#939abd" + ); + PTitleBack = (mhgradient, "#5a5c66", "rgb:70/72/7e", "rgb:45/47/4e"); + UTitleBack = (mhgradient, "#989aa6", "#9fa1b5", "#86879b"); + MenuTitleColor = white; + MenuTextColor = white; + MenuDisabledColor = gray60; + MenuTitleBack = (mvgradient, "#18191f", "#474967", "#413b6d"); + MenuTextBack = (mhgradient, "#384246", "#707080", "#4a4a61"); + IconBack = ( + mdgradient, + gray40, + "#6d6aa4", + "#564e8c", + "#41436c", + "#464771", + "#595090" + ); + IconTitleColor = white; + IconTitleBack = "#18191f"; + WorkspaceBack = (mvgradient, "rgb:50/50/75", "#6a6f9e", "#4b4f70", "#28293c"); +} diff --git a/WindowMaker/menu b/WindowMaker/menu index 6f3b423b..6e08f9fb 100644 --- a/WindowMaker/menu +++ b/WindowMaker/menu @@ -10,7 +10,7 @@ * * SHORTCUT specifies a shortcut for that item. has the * same syntax of the shortcuts key options in the - * ~/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey. + * $HOME/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey. * * You can't specify a shortcut for a MENU or OPEN_MENU entry. * @@ -93,9 +93,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Background" OPEN_MENU -noext ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU -noext $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Style" OPEN_MENU style.menu * "Test" END @@ -173,9 +173,9 @@ "Workspace" END "Appearance" MENU - "Themes" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Styles" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Icon Sets" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Themes" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Styles" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Icon Sets" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Background" MENU "Solid" MENU "Black" WS_BACK '(solid, black)' @@ -197,10 +197,10 @@ "Grey Shades" WS_BACK '(vgradient, "#636380", "#131318")' "Wine Shades" WS_BACK '(vgradient, "#600040", "#180010")' "Gradient" END - "Images" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Images" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Background" END - "Save Theme" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name,Enter file name:)" - "Save IconSet" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name,Enter file name:)" + "Save Theme" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name,Enter file name:)" + "Save IconSet" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name,Enter file name:)" "Appearance" END "Exit" MENU diff --git a/WindowMaker/menu.ca b/WindowMaker/menu.ca index ce7e38ac..023b93ae 100644 --- a/WindowMaker/menu.ca +++ b/WindowMaker/menu.ca @@ -12,7 +12,7 @@ * * TECLA especifica una combinació de tecles per aquest objecte. té * la mateixa sintaxis que les combinacions de tecles especificades al - * fitxer ~/GNUstep/Defaults/WindowMaker , com a RootMenuKey o bé + * fitxer $HOME/GNUstep/Defaults/WindowMaker , com a RootMenuKey o bé * MiniaturizeKey. * * No es pot especificar una combinació de tecles per a un MENU o un @@ -96,9 +96,9 @@ * // crea un submenu amb els continguts de /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // Algunes aplicacions X de diferents directoris - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // algunes imatges de fondo de l'escriptori - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserta el fitxer style.menu * "Style" OPEN_MENU style.menu * "Test" END @@ -175,9 +175,9 @@ "Escriptori" END "Aparença" MENU - "Temes" OPEN_MENU THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Estils" OPEN_MENU STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Jocs d'Icones" OPEN_MENU ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Temes" OPEN_MENU THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Estils" OPEN_MENU STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Jocs d'Icones" OPEN_MENU ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Fons de pantalla" MENU "Sòlid" MENU "Negre" WS_BACK '(solid, black)' @@ -199,10 +199,10 @@ "Degradat Gris" WS_BACK '(vgradient,"#636380", "#131318")' "Degradat Lila" WS_BACK '(vgradient,"#600040", "#180010")' "Degradat" END - "Imatges" OPEN_MENU BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Imatges" OPEN_MENU BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fons de pantalla" END - "Guardar Tema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Guardar Joc d'Icones" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Guardar Tema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Guardar Joc d'Icones" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Aparença" END "Sortir" MENU diff --git a/WindowMaker/menu.dk b/WindowMaker/menu.dk index 48c5973e..1ab68d89 100755 --- a/WindowMaker/menu.dk +++ b/WindowMaker/menu.dk @@ -9,7 +9,7 @@ * skal omgives med " hvis den indeholder mellemrum. * * SHORTCUT angiver en genvej for menuobjektet. har samme - * syntaks som genvejene i filen ~/GNUStep/Defaults/WindowMaker. + * syntaks som genvejene i filen $HOME/GNUStep/Defaults/WindowMaker. * * Man kan ikke angive en genvej for kommandoerne MENU og OPEN_MENU. * @@ -88,9 +88,9 @@ * // skaber en undermenu med indholdet af /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // nogle X11-programmer i forskellige kataloger - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // sæt et baggrundsbillede - * "Baggrund" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Baggrund" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // indføjer style.menu her * "Stil" OPEN_MENU style.menu * "Test" END @@ -169,9 +169,9 @@ "Arbejdsbord" END "Udseende" MENU - "Temaer" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Stil" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Ikonsæt" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Temaer" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Stil" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Ikonsæt" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Baggrund" MENU "Ensfarvet" MENU "Sort" WS_BACK '(solid, black)' @@ -187,10 +187,10 @@ "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Himmel" WS_BACK '(vgradient, blue4, white)' "Nuancer" END - "Billeder" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Billeder" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Baggrund" END - "Gem tema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Gem ikonsæt" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Gem tema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Gem ikonsæt" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Udseende" END "Afslut" MENU diff --git a/WindowMaker/menu.el b/WindowMaker/menu.el index e3bde21b..a8a89060 100644 --- a/WindowMaker/menu.el +++ b/WindowMaker/menu.el @@ -11,7 +11,7 @@ * * SHORTCUT åßíáé ï óõíäõáóìüò ðëÞêôñùí ãéá ôï óõãêåêñéìÝíï ðñüãñáììá ð.÷: * "Meta+1". ¶ëëá ðáñáäåßãìáôá èá äåßôå óôï á÷ñåßï: - * ~/GNUstep/Defaults/WindowMaker + * $HOME/GNUstep/Defaults/WindowMaker * * Äåí ìðïñåß íá äçëùèåß Ýíá shortcut ãéá MENU êáé ãéá OPEN_MENU åíôïëÞ. * @@ -43,7 +43,7 @@ * èá áíáêëçèïýí ôçí åðüìåíç öïñÜ ðïõ ï ÷ñÞóôçò * åêêéíßóåé ôïí Window Maker ìÝ÷ñé ç åíôïëÞ SAVE_SESSION Þ * CLEAR_SESSION ÷ñçóéìïðïéçèïýí. Áí óôï áñ÷åßï Window Maker ôïõ - * êáôáëüãïõ "~/GNUstep/Defaults/" õðÜñ÷åé ç åíôïëÞ: + * êáôáëüãïõ "$HOME/GNUstep/Defaults/" õðÜñ÷åé ç åíôïëÞ: * "SaveSessionOnExit = Yes;", ôüôå üëá ôá ðáñáðÜíù ãßíïíôáé * áõôüìáôá ìå êÜèå Ýîïäï ôïõ ÷ñÞóôç áðü ôïí Window Maker, * áêõñþíïíôáò ïõóéáóôéêÜ êÜèå ðñïçãïýìåíç ÷ñÞóç ôùò åíôïëþí @@ -97,9 +97,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Öüíôï" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Öüíôï" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Óôõë" OPEN_MENU style.menu * "Äïêéìáóôéêü" END @@ -177,9 +177,9 @@ "ÅðéöÜíåéá" END "ÅìöÜíéóç" MENU - "ÈÝìáôá" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Óôõë" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "ÏìÜäá Åéêïíéäßùí" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "ÈÝìáôá" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Óôõë" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "ÏìÜäá Åéêïíéäßùí" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Öüíôï" MENU "Ìïíü÷ñùìï" MENU "Ìáýñï" WS_BACK '(solid, black)' @@ -195,10 +195,10 @@ "Óçìáßá" WS_BACK '(mdgradient, green, red, white, green)' "ÏõñÜíïò" WS_BACK '(vgradient, blue4, white)' "ÄéáâáèìéóìÝíï" END - "Åéêüíåò" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Åéêüíåò" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Öüíôï" END - "ÁðïèÞêåõóç ÈÝìáôïò" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(¼íïìá ÈÝìáôïò)" - "ÁðïèÞêåõóç ÏìÜäáò Åéêïíéäßùí" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(¼íïìá ÏìÜäáò)" + "ÁðïèÞêåõóç ÈÝìáôïò" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(¼íïìá ÈÝìáôïò)" + "ÁðïèÞêåõóç ÏìÜäáò Åéêïíéäßùí" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(¼íïìá ÏìÜäáò)" "ÅìöÜíéóç" END "¸îïäïò" MENU diff --git a/WindowMaker/menu.es b/WindowMaker/menu.es index 870d8348..47391ae9 100644 --- a/WindowMaker/menu.es +++ b/WindowMaker/menu.es @@ -78,9 +78,9 @@ * // crea un submenu con los contenidos de /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // algunas aplicaciones X11 de diversos directorios - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // algunos fondos de escritorio - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserta el fichero style.menu en esta entrada de menu * "Style" OPEN_MENU style.menu * "Test" END @@ -158,9 +158,9 @@ "Escritorio" END "Apariencia" MENU - "Temas" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Estilos" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Juegos de Iconos" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Temas" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Estilos" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Juegos de Iconos" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Fondo" MENU "Sólido" MENU "Black" WS_BACK '(solid, black)' @@ -176,10 +176,10 @@ "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Sky" WS_BACK '(vgradient, blue4, white)' "Gradiente" END - "Imagenes" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Imagenes" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fondo" END - "Guardar Tema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Guardar Juego de Iconos" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Guardar Tema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Guardar Juego de Iconos" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Apariencia" END "Salir" MENU diff --git a/WindowMaker/menu.fi b/WindowMaker/menu.fi index 47ef9270..51fdc50c 100644 --- a/WindowMaker/menu.fi +++ b/WindowMaker/menu.fi @@ -82,9 +82,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Style" OPEN_MENU style.menu * "Test" END @@ -162,9 +162,9 @@ "Työtilat" END "Ulkonäkö" MENU - "Teemat" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Tyylit" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Kuvakeryhmät" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Teemat" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Tyylit" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Kuvakeryhmät" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Taustat" MENU "Taustaväri" MENU "Musta" WS_BACK '(solid, black)' @@ -180,10 +180,10 @@ "Lippu" WS_BACK '(mdgradient, green, red, white, green)' "Taivas" WS_BACK '(vgradient, blue4, white)' "Liukuväri" END - "Taustakuvat" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Taustakuvat" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Taustat" END - "Talleta teema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Talleta kuvakeryhmät" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Talleta teema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Talleta kuvakeryhmät" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Ulkonäkö" END "Poistu" MENU diff --git a/WindowMaker/menu.fr b/WindowMaker/menu.fr index 162461d5..be63dd0f 100644 --- a/WindowMaker/menu.fr +++ b/WindowMaker/menu.fr @@ -10,7 +10,7 @@ * * SHORTCUT spécifie un raccourci pour une entrée dans le menu. * a la même syntaxe que les options pour les raccourcis clavier dans le - * fichier ~/GNUstep/Defaults/WindowMaker, comme par example RootMenuKey ou + * fichier $HOME/GNUstep/Defaults/WindowMaker, comme par example RootMenuKey ou * encore MiniaturizeKey. * * Il n'est pas possible de spécifier un raccourci pour une entrée MENU @@ -142,9 +142,9 @@ * / Crée un sous menu avec le contenu de /usr/openwin/bin * "Applications XView" OPEN_MENU "/usr/openwin/bin" * / Quelques applications X11 dans différents répertoires - * "Applications X11" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "Applications X11" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * / Définir quelques images de fond - * "Fond d'écran" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Fond d'écran" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * / Insère le fichier "style.menu" dans cette entrée * "Style" OPEN_MENU style.menu * "Test" END @@ -222,9 +222,9 @@ "Espace de travail" END "Apparence" MENU - "Thèmes" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Styles" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Jeu d'icônes" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Thèmes" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Styles" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Jeu d'icônes" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Fond d'écran" MENU "Unifié" MENU "Noir" WS_BACK '(solid, black)' @@ -246,10 +246,10 @@ "Dégradés de Gris" WS_BACK '(vgradient, "#636380", "#131318")' "Dégradés de Bordeau" WS_BACK '(vgradient, "#600040", "#180010")' "Degradé" END - "Images" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Images" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Fond d'écran" END - "Sauver le thème" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Nom du thème,Entrez un nom de fichier:)" - "Sauver le jeu d'icônes" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)" + "Sauver le thème" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Nom du thème,Entrez un nom de fichier:)" + "Sauver le jeu d'icônes" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)" "Apparence" END "Quitter" MENU diff --git a/WindowMaker/menu.he b/WindowMaker/menu.he index 03b3066c..9c491e08 100644 --- a/WindowMaker/menu.he +++ b/WindowMaker/menu.he @@ -82,9 +82,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Style" OPEN_MENU style.menu * "Test" END @@ -161,9 +161,9 @@ "äãåáò áçøî" END "äàøî" MENU - "Themes" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "úåðåðâñ" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "íéðå÷ééà èñ" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Themes" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "úåðåðâñ" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "íéðå÷ééà èñ" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "ò÷ø" MENU "Solid" MENU "øåçù" WS_BACK '(solid, black)' @@ -179,10 +179,10 @@ "Flag" WS_BACK '(vdgradient, blue, white, blue)' "Sky" WS_BACK '(vgradient, blue4, white)' "Gradient" END - "Images" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Images" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "ò÷ø" END - "Save Theme" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Save IconSet" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Save Theme" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Save IconSet" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "äàøî" END "äàéöé" MENU diff --git a/WindowMaker/menu.hr b/WindowMaker/menu.hr index 1b05b4fb..3cddbd97 100644 --- a/WindowMaker/menu.hr +++ b/WindowMaker/menu.hr @@ -82,9 +82,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Style" OPEN_MENU style.menu * "Test" END @@ -163,9 +163,9 @@ "Radni prostor" END "Izgled" MENU - "Teme" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Stilovi" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Setovi Ikona" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Teme" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Stilovi" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Setovi Ikona" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Pozadina" MENU "Boja" MENU "Crna" WS_BACK '(solid, black)' @@ -181,10 +181,10 @@ "Zastava" WS_BACK '(mdgradient, green, red, white, green)' "Nebo" WS_BACK '(vgradient, blue4, white)' "Preljev" END - "Slike" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Slike" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Pozadina" END - "Snimi temu" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Snimi set ikona" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Snimi temu" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Snimi set ikona" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Izgled" END "Izlaz" MENU diff --git a/WindowMaker/menu.hu b/WindowMaker/menu.hu index 8434c76e01f6b0ba8fa8ff6e27f626c9cf52dbe7..bd5eec0d24ff8ceb41e3437b4080d29708901719 100644 GIT binary patch delta 117 zcmexiGuw8 é qualquer texto a ser usado como título. Deve estar entre aspas " * * SHORTCUT especifica uma tecla de atalho para o item. - * tem a mesma sintaxe das teclas de atalho em ~/GNUstep/Defaults/WindowMaker + * tem a mesma sintaxe das teclas de atalho em $HOME/GNUstep/Defaults/WindowMaker * * Não é possível especificar teclas de atalho para MENU ou OPEN_MENU * @@ -37,7 +37,7 @@ * de trabalho atual. Todas as informações serão restauradas * até que se use o comando SAVE_SESSION de novo ou CLEAR_SESSION. * Se SaveSessionOnExit = Yes; estiver definido no domínio - * WindowMaker (~/GNUstep/Defaults/WindowMaker), então o + * WindowMaker ($HOME/GNUstep/Defaults/WindowMaker), então o * salvamento da sessão é feito automaticamente quando o * WindowMaker finalizar, apagando quaisquer SAVE_SESSION ou * CLEAR_SESSION usados anteriormente. @@ -91,9 +91,9 @@ * // cria um submenu com o conteúdo de /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // alguns programas do X11 em vários diretórios - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // faz um submenu de papéis de parede - * "Papel de Parede" OPEN_MENU ~/imagens /usr/share/imagens WITH wmsetbg -u -t + * "Papel de Parede" OPEN_MENU $HOME/imagens /usr/share/imagens WITH wmsetbg -u -t * // insere o menu meu.menu * "Style" OPEN_MENU meu.menu * "Test" END @@ -171,9 +171,9 @@ "Área de Trabalho" END "Aparência" MENU - "Temas" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Estilos" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Conjunto de Ícones" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Temas" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Estilos" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Conjunto de Ícones" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Papéis de Parede" MENU "Sólido" MENU "Preto" WS_BACK '(solid, black)' @@ -189,10 +189,10 @@ "Bandeira" WS_BACK '(mdgradient, green, green, yellow)' "Céu" WS_BACK '(vgradient, blue4, white)' "Degradé" END - "Imagens" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Imagens" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Papéis de Parede" END - "Salvar Tema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Nome do Tema)" - "Salvar Configuração de Ícones" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(Nome do Conjunto de Ícones)" + "Salvar Tema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Nome do Tema)" + "Salvar Configuração de Ícones" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Nome do Conjunto de Ícones)" "Appearance" END "Sair" MENU diff --git a/WindowMaker/menu.se b/WindowMaker/menu.se index 8588e8d7..247596f7 100644 --- a/WindowMaker/menu.se +++ b/WindowMaker/menu.se @@ -9,7 +9,7 @@ * måste omslutas med " om den innehåller mellanslag. * * SHORTCUT anger en genväg för det menyalternativet. har likadan - * syntax som genvägarna i filen ~/GNUStep/Defaults/WindowMaker. + * syntax som genvägarna i filen $HOME/GNUStep/Defaults/WindowMaker. * * Man kan inte ange en genväg för kommandona MENU och OPEN_MENU. * @@ -90,9 +90,9 @@ * // skapar en undermeny med innehållet i /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // några X11-program i olika kataloger - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // sätt en bakgrundsbild - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // infogar style.menu här * "Style" OPEN_MENU style.menu * "Test" END @@ -171,9 +171,9 @@ "Arbetsbord" END "Utseende" MENU - "Teman" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Stilar" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Ikonuppsättningar" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Teman" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Stilar" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Ikonuppsättningar" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Bakgrund" MENU "Enfärgat" MENU "Svart" WS_BACK '(solid, black)' @@ -189,10 +189,10 @@ "Flagga" WS_BACK '(mdgradient, green, red, white, green)' "Himmel" WS_BACK '(vgradient, blue4, white)' "Toningar" END - "Bilder" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Bilder" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Bakgrund" END - "Spara tema" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Spara ikonuppsättning" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Spara tema" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Spara ikonuppsättning" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Utseende" END "Avsluta" MENU diff --git a/WindowMaker/menu.sl b/WindowMaker/menu.sl index 6a2e63c5..af1785aa 100644 --- a/WindowMaker/menu.sl +++ b/WindowMaker/menu.sl @@ -10,7 +10,7 @@ * * SHORTCUT specifies a shortcut for that item. has the * same syntax of the shortcuts key options in the - * ~/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey. + * $HOME/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey. * * You can't specify a shortcut for a MENU or OPEN_MENU entry. * @@ -90,9 +90,9 @@ * // creates a submenu with the contents of /usr/openwin/bin * "XView apps" OPEN_MENU "/usr/openwin/bin" * // some X11 apps in different directories - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // set some background images - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // inserts the style.menu in this entry * "Style" OPEN_MENU style.menu * "Test" END @@ -170,9 +170,9 @@ "Delovni prostor" END "Izgled" MENU - "Teme" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Stili" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Zbirke ikon" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Teme" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Stili" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Zbirke ikon" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Odzadje" MENU "Barva" MENU "Èrna" WS_BACK '(solid, black)' @@ -188,10 +188,10 @@ "Zastava" WS_BACK '(mdgradient, green, red, white, green)' "Nebo" WS_BACK '(vgradient, blue4, white)' "Preliv" END - "Slike" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Slike" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Odzadje" END - "Shrani temo" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Shrani zbirko ikon" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Shrani temo" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Shrani zbirko ikon" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Izgled" END "Izhod" MENU diff --git a/WindowMaker/menu.tr b/WindowMaker/menu.tr index e7140c09..14cd86d7 100644 --- a/WindowMaker/menu.tr +++ b/WindowMaker/menu.tr @@ -9,7 +9,7 @@ * yazýlmalý * * SHORTCUT sözkonusu giriþ için kýsayol tuþu tanýmlamak için kullanýlýr - * , ~/GNUstep/Defaults/WindowMaker olduðu gibi tanýmlanabilir. + * , $HOME/GNUstep/Defaults/WindowMaker olduðu gibi tanýmlanabilir. * * MENU veya OPEN_MENU için kýsayol tanýmlayamazsýnýz. * @@ -76,9 +76,9 @@ * // /usr/openwin/bin'in içeriði ile bir menü yaratýr * "XView apps" OPEN_MENU "/usr/openwin/bin" * // deðiþik dizinlerde yer alan uygulamalrla bir menü yaratýr - * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11 * // bazý arkaplan görüntülerini ekler - * "Background" OPEN_MENU ~/images /usr/share/images WITH wmsetbg -u -t + * "Background" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t * // style.menu menüsünü ekler. * "Style" OPEN_MENU style.menu * "Test" END @@ -156,9 +156,9 @@ "Çalýþma Alaný" END "Görünüm" MENU - "Temalar" OPEN_MENU -noext THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle - "Tarzlar" OPEN_MENU -noext STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle - "Simge Kümeleri" OPEN_MENU -noext ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "Temalar" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle + "Tarzlar" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle + "Simge Kümeleri" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons "Arkaplan" MENU "Düz Renk" MENU "Black" WS_BACK '(solid, black)' @@ -174,10 +174,10 @@ "Flag" WS_BACK '(mdgradient, green, red, white, green)' "Sky" WS_BACK '(vgradient, blue4, white)' "Renk Geçiþi" END - "Görüntüler" OPEN_MENU -noext BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "Görüntüler" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t "Arkaplan" END - "Tema Sakla" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" - "Simge Kümesi Sakla" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "Tema Sakla" EXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Simge Kümesi Sakla" EXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" "Görünüm" END "Çýkýþ" MENU diff --git a/WindowMaker/menu.zh_TW.Big5 b/WindowMaker/menu.zh_TW.Big5 new file mode 100644 index 00000000..45b3c868 --- /dev/null +++ b/WindowMaker/menu.zh_TW.Big5 @@ -0,0 +1,205 @@ +/* + * Root Menu definition for WindowMaker + * + * Syntax is: + * + * [SHORTCUT <Shortcut>] <Command> <Parameters> + * + * <Title> is any string to be used as title. Must be enclosed with " if it + * has spaces + * + * SHORTCUT specifies a shortcut for that item. <Shortcut> has the + * same syntax of the shortcuts key options in the + * ~/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey. + * + * You can't specify a shortcut for a MENU or OPEN_MENU entry. + * + * <Command> one of the valid commands: + * MENU - starts (sub)menu definition + * END - end (sub)menu definition + * OPEN_MENU - opens a menu from a file, pipe or directory(ies) contents + * and eventually precede each with a command. + * WORKSPACE_MENU - adds a submenu for workspace operations. Only one + * workspace_menu is allowed. + * EXEC <program> - executes an external program + * EXIT - exits the window manager + * RESTART [<window manager>] - restarts WindowMaker or start another + * window manager + * REFRESH - refreshes the desktop + * ARRANGE_ICONS - rearranges the icons on the workspace + * SHUTDOWN - kills all clients (and close the X window session) + * SHOW_ALL - unhides all windows on workspace + * HIDE_OTHERS - hides all windows on the workspace, except the + * focused one (or the last one that received focus) + * SAVE_SESSION - saves the current state of the desktop, which include + * all running applications, all their hints (geometry, + * position on screen, workspace they live on, the dock + * or clip from where they were launched, and + * if minimized, shaded or hidden. Also saves the current + * workspace the user is on. All will be restored on every + * start of windowmaker until another SAVE_SESSION or + * CLEAR_SESSION is used. If SaveSessionOnExit = Yes; in + * WindowMaker domain file, then saving is automatically + * done on every windowmaker exit, overwriting any + * SAVE_SESSION or CLEAR_SESSION (see below). + * CLEAR_SESSION - clears any previous saved session. This will not have + * any effect if SaveSessionOnExit is True. + * INFO - shows the Info Panel + * + * OPEN_MENU syntax: + * 1. File menu handling. + * // opens file.menu which must contain a valid menu file and inserts + * // it in current position + * OPEN_MENU file.menu + * 2. Pipe menu handling. + * // opens command and uses it's stdout to construct menu. + * // Command's output must be a valid menu description. + * // The space between '|' and command itself is optional. + * OPEN_MENU | command + * 3. Directory handling. + * // Opens one or more directories and construct a menu with all + * // the subdirectories and executable files in them sorted + * // alphabetically. + * OPEN_MENU /some/dir [/some/other/dir ...] + * 4. Directory handling with command. + * // Opens one or more directories and construct menu with all + * // subdirectories and readable files in them sorted alphabetically, + * // preceding each of them with command. + * OPEN_MENU [options] /some/dir [/some/other/dir ...] WITH command -options + * Options: + * -noext strip whatever is after the last dot in the + * file name + * + * <Parameters> is the program to execute. + * + * ** Options for command line in EXEC: + * %s - substitute with current selection + * %a(title[,prompt]) - opens a input box with the specified title and the + * optional prompt and do substitution with what you typed + * %w - substitute with XID for the current focused window + * + * You can override special characters (as % and ") with the \ character: + * ex: xterm -T "\"Hello World\"" + * + * You can also use character escapes, like \n + * + * Each MENU statement must have one mathching END statement at the end. + * + * Example: + * + * "Test" MENU + * "XTerm" EXEC xterm + * // creates a submenu with the contents of /usr/openwin/bin + * "XView apps" OPEN_MENU "/usr/openwin/bin" + * // some X11 apps in different directories + * "X11 apps" OPEN_MENU /usr/X11/bin ~/bin/X11 + * // set some background images + * "Background" OPEN_MENU -noext ~/images /usr/share/images WITH wmsetbg -u -t + * // inserts the style.menu in this entry + * "Style" OPEN_MENU style.menu + * "Test" END + */ + +#include "wmmacros" + +"À³¥Îµ{¦¡" MENU + "¸ê°T" MENU + "¸ê°T­±ªO..." INFO_PANEL + "ªk«ß..." LEGAL_PANEL + "¨t²Î¥D±±¥x" EXEC xconsole + "¨t²Î­t¸ü" EXEC xosview || xload + "¦æµ{²M³æ" EXEC xterm -e top + "¤â¥UÂsÄý¾¹" EXEC xman + "¸ê°T" END + "°õ¦æ..." EXEC %a (°õ¦æ¡A¿é¤J°õ¦æªº©R¥O¡G) + "²×ºÝ¾÷" EXEC crxvt -thin -ls -T ²×ºÝ¾÷ -n ²×ºÝ¾÷ + "¤u§@°Ï" WORKSPACE_MENU + "À³¥Îµ{¦¡" MENU + "¼v¹³³B²z" MENU + "Gimp" EXEC gimp >/dev/null + "XV" EXEC xv + "XPaint" EXEC xpaint + "XFig" EXEC xfig + "¼v¹³³B²z" END + "X File Manager" EXEC xfm + "OffiX Files" EXEC files + "LyX" EXEC lyx + "Netscape" EXEC netscape + "Ghostview" EXEC ghostview %a(GhostView,Enter file to view) + "Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobar,Enter PDF to view) + "TkDesk" EXEC tkdesk + "À³¥Îµ{¦¡" END + "½s¿è¾¹" MENU + "XFte" EXEC xfte + "XEmacs" EXEC xemacs || emacs + "XJed" EXEC xjed + "NEdit" EXEC nedit + "Xedit" EXEC xedit + "VI" EXEC xterm -e vi + "½s¿è¾¹" END + "Âø¶µ" MENU + "Xmcd" EXEC xmcd 2> /dev/null + "Xplaycd" EXEC xplaycd + "Xmixer" EXEC xmixer + "Âø¶µ" END + "¤½¥Îµ{¦¡" MENU + "­pºâ¾÷" EXEC xcalc + "Window Properties" EXEC xprop | xmessage -center -title 'xprop' -file - + "Font Chooser" EXEC xfontsel + "Terminal Emulator" EXEC xminicom + "Magnify" EXEC xmag + "Colormap" EXEC xcmap + "XKill" EXEC xkill + "Clipboard" EXEC xclipboard + "¤½¥Îµ{¦¡" END + + "¿ï¨ú" MENU + "½Æ»s" EXEC echo '%s' | wxcopy + "¶l±H¦Ü" EXEC xterm -name mail -T "Pine" -e pine %s + "Navigate" EXEC netscape %s + "¦b¤â¥U¤¤·j´M" EXEC MANUAL_SEARCH(%s) + "¿ï¨ú" END + + "¤u§@°Ï" MENU + "ÁôÂèä¥L" HIDE_OTHERS + "¥þ³¡Åã¥Ü" SHOW_ALL + "±Æ¦C¹Ï¥Ü" ARRANGE_ICONS + "§ó·sµe­±" REFRESH + "Âê©w" EXEC xlock -allowroot -usefirst + "Àx¦s¶¥¬qª¬ºA" SAVE_SESSION + "²M°£¶¥¬qª¬ºA" CLEAR_SESSION + "¤u§@°Ï" END + + "¥~Æ[" MENU + "¥DÃD" OPEN_MENU THEMES_DIR ~/GNUstep/Library/WindowMaker/Themes WITH setstyle + "­·®æ" OPEN_MENU STYLES_DIR ~/GNUstep/Library/WindowMaker/Styles WITH setstyle + "¹Ï¥Ü¶°" OPEN_MENU ICON_SETS_DIR ~/GNUstep/Library/WindowMaker/IconSets WITH seticons + "­I´º" MENU + "¹êÅé¦â" MENU + "Black" WS_BACK '(solid, black)' + "Blue" WS_BACK '(solid, "#505075")' + "Indigo" WS_BACK '(solid, "#243e6c")' + "Deep Blue" WS_BACK '(solid, "#180090")' + "Purple" WS_BACK '(solid, "#554466")' + "Wheat" WS_BACK '(solid, "wheat4")' + "Dark Gray" WS_BACK '(solid, "#333340")' + "Wine" WS_BACK '(solid, "#400020")' + "¹êÅé¦â" END + "º¥¼h¦â" MENU + "Flag" WS_BACK '(mdgradient, green, red, white, green)' + "Sky" WS_BACK '(vgradient, blue4, white)' + "º¥¼h¦â" END + "¹Ï¤ù" OPEN_MENU BACKGROUNDS_DIR ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t + "­I´º" END + "Àx¦s¥DÃD" EXEC getstyle -t ~/GNUstep/Library/WindowMaker/Themes/"%a(Theme name)" + "Àx¦s¹Ï¥Ü¶°" EXEC geticonset ~/GNUstep/Library/WindowMaker/IconSets/"%a(IconSet name)" + "¥~Æ[" END + + "Â÷¶}" MENU + "­«·s±Ò°Ê" RESTART + "±Ò°Ê AfterStep" RESTART afterstep + "Â÷¶}..." EXIT + "µ²§ôµøµ¡¨t²Î..." SHUTDOWN + "Â÷¶}" END +"À³¥Îµ{¦¡" END + diff --git a/WindowMaker/plmenu b/WindowMaker/plmenu index 362893eb..5442d72d 100644 --- a/WindowMaker/plmenu +++ b/WindowMaker/plmenu @@ -7,7 +7,7 @@ ("Process List", EXEC, "xterm -e top"), ("Manual Browser", EXEC, "xman") ), - ("Run", EXEC, "%a(Run,Type command to run:)"), + ("Run...", EXEC, "%a(Run,Type command to run:)"), ("XTerm", EXEC, "xterm -sb"), ("Rxvt", EXEC, "rxvt -bg black -fg white -fn fixed"), ("Workspaces", WORKSPACE_MENU), @@ -66,9 +66,9 @@ ("Clear Saved Session", CLEAR_SESSION) ), ("Appearance", - ("Themes", OPEN_MENU, "-noext #wmdatadir#/Themes ~/GNUstep/Library/WindowMaker/Themes WITH setstyle"), - ("Styles", OPEN_MENU, "-noext #wmdatadir#/Styles ~/GNUstep/Library/WindowMaker/Styles WITH setstyle"), - ("Icon Sets", OPEN_MENU, "-noext #wmdatadir#/IconSets ~/GNUstep/Library/WindowMaker/IconSets WITH seticons"), + ("Themes", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), + ("Styles", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), + ("Icon Sets", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Background", ("Solid", ("Black", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), @@ -90,10 +90,10 @@ ("Grey Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Wine Shades", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), - ("Images", OPEN_MENU, "-noext #wmdatadir#/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") + ("Images", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), - ("Save Theme", EXEC, "getstyle -t ~/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), - ("Save IconSet", EXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\"") + ("Save Theme", EXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\""), + ("Save IconSet", EXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\"") ), ("Exit", ("Restart", RESTART), diff --git a/WindowMaker/plmenu.fr b/WindowMaker/plmenu.fr index 37ddaf4c..8a904708 100644 --- a/WindowMaker/plmenu.fr +++ b/WindowMaker/plmenu.fr @@ -66,9 +66,9 @@ ("Effacer la session", CLEAR_SESSION) ), ("Apparence", - ("Thèmes", OPEN_MENU, "-noext #wmdatadir#/Themes ~/GNUstep/Library/WindowMaker/Themes WITH setstyle"), - ("Styles", OPEN_MENU, "-noext #wmdatadir#/Styles ~/GNUstep/Library/WindowMaker/Styles WITH setstyle"), - ("Jeu d'icônes", OPEN_MENU, "-noext #wmdatadir#/IconSets ~/GNUstep/Library/WindowMaker/IconSets WITH seticons"), + ("Thèmes", OPEN_MENU, "-noext #wmdatadir#/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle"), + ("Styles", OPEN_MENU, "-noext #wmdatadir#/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle"), + ("Jeu d'icônes", OPEN_MENU, "-noext #wmdatadir#/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons"), ("Fond d'écran", ("Unifié", ("Noir", EXEC, "wdwrite WindowMaker WorkspaceBack '(solid, black)'"), @@ -88,10 +88,10 @@ ("Dégradés de Gris", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#636380\", \"#131318\")'"), ("Dégradés de Bordeau", EXEC, "wdwrite WindowMaker WorkspaceBack '(vgradient, \"#600040\", \"#180010\")'") ), - ("Images", OPEN_MENU, "-noext #wmdatadir#/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") + ("Images", OPEN_MENU, "-noext #wmdatadir#/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t") ), - ("Sauver le thème", EXEC, "getstyle -t ~/GNUstep/Library/WindowMaker/Themes /\"%a(Nom du thème,Entrez un nom de fichier:)\""), - ("Sauver le jeu d'icônes", EXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets /\"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)\"") + ("Sauver le thème", EXEC, "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes /\"%a(Nom du thème,Entrez un nom de fichier:)\""), + ("Sauver le jeu d'icônes", EXEC, "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets /\"%a(Nom du jeu d'icônes,Entrez un nom de fichier:)\"") ), ("Quitter", ("Redémarrer", RESTART), diff --git a/WindowMaker/plmenu.hr b/WindowMaker/plmenu.hr index cd32f8fc..4c19cfe5 100644 --- a/WindowMaker/plmenu.hr +++ b/WindowMaker/plmenu.hr @@ -86,17 +86,17 @@ ( Teme, OPEN_MENU, - "-noext /usr/local/share/WindowMaker/Themes ~/GNUstep/Library/WindowMaker/Themes WITH setstyle" + "-noext /usr/local/share/WindowMaker/Themes $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle" ), ( Stilovi, OPEN_MENU, - "-noext /usr/local/share/WindowMaker/Styles ~/GNUstep/Library/WindowMaker/Styles WITH setstyle" + "-noext /usr/local/share/WindowMaker/Styles $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle" ), ( "Setovi ikona", OPEN_MENU, - "-noext /usr/local/share/WindowMaker/IconSets ~/GNUstep/Library/WindowMaker/IconSets WITH seticons" + "-noext /usr/local/share/WindowMaker/IconSets $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons" ), ( Pozadina, @@ -189,18 +189,18 @@ ( Slike, OPEN_MENU, - "-noext /usr/local/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t" + "-noext /usr/local/share/WindowMaker/Backgrounds $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t" ) ), ( "Snimi temu", EXEC, - "getstyle -t ~/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\"" + "getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/\"%a(Theme name)\"" ), ( "Snimi set ikona", EXEC, - "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\"" + "geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/\"%a(IconSet name)\"" ) ), ( diff --git a/acconfig.h b/acconfig.h index e55c9925..59c0efa7 100644 --- a/acconfig.h +++ b/acconfig.h @@ -1,10 +1,6 @@ /* define to the path to cpp */ #undef CPP_PATH -/* define to the directory containing NLS information - * set by configure */ -#undef NLSDIR - /* package name */ #undef PACKAGE @@ -75,7 +71,10 @@ * set by configure */ #undef X_LOCALE -/* the place where the configuration is stored +/* the place where shared data is stored * defined by configure */ #undef PKGDATADIR +/* the place where the configuration is stored + * defined by configure */ +#undef SYSCONFDIR diff --git a/acinclude.m4 b/acinclude.m4 new file mode 100644 index 00000000..b7b89c9b --- /dev/null +++ b/acinclude.m4 @@ -0,0 +1,176 @@ +#!/bin/sh + +dnl +dnl WM_CHECK_LIB(NAME, FUNCTION, EXTRALIBS) +dnl +AC_DEFUN(WM_CHECK_LIB, +[ +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +AC_CHECK_LIB([$1],[$2],yes=yes,no=no,[$3]) +LDFLAGS="$LDFLAGS_old" +]) + + +dnl +dnl WM_CHECK_HEADER(NAME) +dnl +AC_DEFUN(WM_CHECK_HEADER, +[ +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +AC_CHECK_HEADER([$1]) +CPPFLAGS="$CPPFLAGS_old" +]) + + +dnl +dnl WM_CHECK_REDCRAP_BUGS(prefix,bindir,libdir) +dnl +AC_DEFUN(WM_CHECK_REDCRAP_BUGS, +[ +AC_MSG_CHECKING(for RedHat system) +wm_check_flag='no :)' +if test -f /etc/redhat-release; then + wm_check_flag=yes +fi +AC_MSG_RESULT($wm_check_flag) + +mins_found=no +bugs_found=no +if test "$wm_check_flag" = yes; then +echo +AC_MSG_WARN([it seems you are using a system packaged by RedHat. +I will now do some checks for RedHat specific bugs. If some check +fail, please read the INSTALL file regarding RedHat, resolve the +problem and retry to configure.]) +echo +# +# Check old wmaker from RedHat +# +if test "[$1]" != "/usr/X11R6" -a "$prefix" != "/usr/X11"; then +AC_MSG_CHECKING(for multiple installed wmaker versions) +if test -f /usr/X11R6/bin/wmaker; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([you seem to have an old version of Window Maker +installed at /usr/X11R6/bin. It is recommended that you uninstall +any previously installed packages of WindowMaker before installing +a new one.]) +mins_found=yes +else +AC_MSG_RESULT(no apparent problems) +fi +fi +# +# Check for infamous en_RN bug +# Wont work because autoconf will change LANG in the beginning of the +# script. + +# +#AC_MSG_CHECKING(for silly en_RN joke that only causes headaches) +#echo $LANG +#if test "x$LANG" = xen_RN; then +#AC_MSG_RESULT(uh oh) +#AC_MSG_WARN([the LANG environment variable is set to the en_RN +#locale. Please unset it or you will have mysterious problems when +#using various software packages.]) +#bugs_found=yes +#else +#AC_MSG_RESULT(no problem) +#fi +# +# If binary installation path is /usr/local/bin, check if it's in PATH +# +if test "[$2]" = "/usr/local/bin"; then +AC_MSG_CHECKING(if /usr/local/bin is in the search PATH) +wm_check_flag=no +old_IFS="$IFS" +IFS=":" +for i in $PATH; do + if test "x$i" = "x/usr/local/bin"; then + wm_check_flag=yes + break; + fi +done +IFS="$old_IFS" +if test "$wm_check_flag" = no; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([/usr/local/bin is not in the PATH environment variable. +Please resolve the problem.]) +bugs_found=yes +else +AC_MSG_RESULT(no problem) +fi +fi +# +# If library installation path is /usr/local/lib, +# check if it's in /etc/ld.so.conf +# +if test "[$3]" = "/usr/local/lib"; then +wm_check_flag=yes +AC_MSG_CHECKING(if /usr/local/lib is in /etc/ld.so.conf) +test -z "`grep /usr/local/lib /etc/ld.so.conf`" +test "$?" -eq 0 && wm_check_flag=no +if test "$wm_check_flag" = no; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([/usr/local/lib is not in the /etc/ld.so.conf file. +Please add it there.]) +bugs_found=yes +else +AC_MSG_RESULT(no problem) +fi +fi +# +# Check for symbolic links +# +AC_MSG_CHECKING(for /usr/X11 symbolic link) +if test -d "/usr/X11"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from /usr/X11R6 to /usr/X11.]) +mins_found=yes +fi +AC_MSG_CHECKING(for /usr/include/X11 symbolic link) +if test -d "/usr/include/X11"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from /usr/X11R6/include/X11 +to /usr/include/X11.]) +mins_found=yes +fi + +# +# Check for /lib/cpp +# +AC_MSG_CHECKING(for /lib/cpp) +if test -f "/lib/cpp"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from the cpp (C preprocessor) +program to /lib/cpp]) +bugs_found=yes +fi + +if test "x$bugs_found" = xyes; then +AC_MSG_ERROR([Some bugs that can potentially cause problems during +installation/execution were found. Please correct these problems +and retry later.]) +exit 1 +elif test "x$mins_found" = xyes; then +AC_MSG_WARN([Some minor problems that might or might not cause +problems were found. If you have any problems during +installation/execution, please resolve the pointed problems and try +to reinstall.]) +echo "Press <Return> to continue." +read blabla +else +echo +echo "None of the RedHat problems known to this script were found." +echo +fi +fi +]) + diff --git a/aclocal.m4 b/aclocal.m4 index 366c8ab8..fa3d2b9d 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -10,6 +10,183 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. +#!/bin/sh + +dnl +dnl WM_CHECK_LIB(NAME, FUNCTION, EXTRALIBS) +dnl +AC_DEFUN(WM_CHECK_LIB, +[ +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +AC_CHECK_LIB([$1],[$2],yes=yes,no=no,[$3]) +LDFLAGS="$LDFLAGS_old" +]) + + +dnl +dnl WM_CHECK_HEADER(NAME) +dnl +AC_DEFUN(WM_CHECK_HEADER, +[ +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +AC_CHECK_HEADER([$1]) +CPPFLAGS="$CPPFLAGS_old" +]) + + +dnl +dnl WM_CHECK_REDCRAP_BUGS(prefix,bindir,libdir) +dnl +AC_DEFUN(WM_CHECK_REDCRAP_BUGS, +[ +AC_MSG_CHECKING(for RedHat system) +wm_check_flag='no :)' +if test -f /etc/redhat-release; then + wm_check_flag=yes +fi +AC_MSG_RESULT($wm_check_flag) + +mins_found=no +bugs_found=no +if test "$wm_check_flag" = yes; then +echo +AC_MSG_WARN([it seems you are using a system packaged by RedHat. +I will now do some checks for RedHat specific bugs. If some check +fail, please read the INSTALL file regarding RedHat, resolve the +problem and retry to configure.]) +echo +# +# Check old wmaker from RedHat +# +if test "[$1]" != "/usr/X11R6" -a "$prefix" != "/usr/X11"; then +AC_MSG_CHECKING(for multiple installed wmaker versions) +if test -f /usr/X11R6/bin/wmaker; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([you seem to have an old version of Window Maker +installed at /usr/X11R6/bin. It is recommended that you uninstall +any previously installed packages of WindowMaker before installing +a new one.]) +mins_found=yes +else +AC_MSG_RESULT(no apparent problems) +fi +fi +# +# Check for infamous en_RN bug +# Wont work because autoconf will change LANG in the beginning of the +# script. + +# +#AC_MSG_CHECKING(for silly en_RN joke that only causes headaches) +#echo $LANG +#if test "x$LANG" = xen_RN; then +#AC_MSG_RESULT(uh oh) +#AC_MSG_WARN([the LANG environment variable is set to the en_RN +#locale. Please unset it or you will have mysterious problems when +#using various software packages.]) +#bugs_found=yes +#else +#AC_MSG_RESULT(no problem) +#fi +# +# If binary installation path is /usr/local/bin, check if it's in PATH +# +if test "[$2]" = "/usr/local/bin"; then +AC_MSG_CHECKING(if /usr/local/bin is in the search PATH) +wm_check_flag=no +old_IFS="$IFS" +IFS=":" +for i in $PATH; do + if test "x$i" = "x/usr/local/bin"; then + wm_check_flag=yes + break; + fi +done +IFS="$old_IFS" +if test "$wm_check_flag" = no; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([/usr/local/bin is not in the PATH environment variable. +Please resolve the problem.]) +bugs_found=yes +else +AC_MSG_RESULT(no problem) +fi +fi +# +# If library installation path is /usr/local/lib, +# check if it's in /etc/ld.so.conf +# +if test "[$3]" = "/usr/local/lib"; then +wm_check_flag=yes +AC_MSG_CHECKING(if /usr/local/lib is in /etc/ld.so.conf) +test -z "`grep /usr/local/lib /etc/ld.so.conf`" +test "$?" -eq 0 && wm_check_flag=no +if test "$wm_check_flag" = no; then +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([/usr/local/lib is not in the /etc/ld.so.conf file. +Please add it there.]) +bugs_found=yes +else +AC_MSG_RESULT(no problem) +fi +fi +# +# Check for symbolic links +# +AC_MSG_CHECKING(for /usr/X11 symbolic link) +if test -d "/usr/X11"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from /usr/X11R6 to /usr/X11.]) +mins_found=yes +fi +AC_MSG_CHECKING(for /usr/include/X11 symbolic link) +if test -d "/usr/include/X11"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from /usr/X11R6/include/X11 +to /usr/include/X11.]) +mins_found=yes +fi + +# +# Check for /lib/cpp +# +AC_MSG_CHECKING(for /lib/cpp) +if test -f "/lib/cpp"; then +AC_MSG_RESULT(found) +else +AC_MSG_RESULT(uh oh) +AC_MSG_WARN([Please create a symbolic link from the cpp (C preprocessor) +program to /lib/cpp]) +bugs_found=yes +fi + +if test "x$bugs_found" = xyes; then +AC_MSG_ERROR([Some bugs that can potentially cause problems during +installation/execution were found. Please correct these problems +and retry later.]) +exit 1 +elif test "x$mins_found" = xyes; then +AC_MSG_WARN([Some minor problems that might or might not cause +problems were found. If you have any problems during +installation/execution, please resolve the pointed problems and try +to reinstall.]) +echo "Press <Return> to continue." +read blabla +else +echo +echo "None of the RedHat problems known to this script were found." +echo +fi +fi +]) + + # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. diff --git a/config.guess b/config.guess index 4e5345fa..413ed41c 100755 --- a/config.guess +++ b/config.guess @@ -1,6 +1,6 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# Copyright (C) 1992, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -46,8 +46,7 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -dummy=dummy-$$ -trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15 +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 # Note: order is significant - the case branches are not exclusive. @@ -60,7 +59,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. - cat <<EOF >$dummy.s + cat <<EOF >dummy.s .globl main .ent main main: @@ -77,9 +76,9 @@ main: ret \$31,(\$26),1 .end main EOF - ${CC-cc} $dummy.s -o $dummy 2>/dev/null + ${CC-cc} dummy.s -o dummy 2>/dev/null if test "$?" = 0 ; then - ./$dummy + ./dummy case "$?" in 7) UNAME_MACHINE="alpha" @@ -98,7 +97,7 @@ EOF ;; esac fi - rm -f $dummy.s $dummy + rm -f dummy.s dummy echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` exit 0 ;; 21064:Windows_NT:50:3) @@ -113,9 +112,6 @@ EOF amiga:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit 0 ;; arc64:OpenBSD:*:*) echo mips64el-unknown-openbsd${UNAME_RELEASE} exit 0 ;; @@ -143,7 +139,7 @@ EOF SR2?01:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit 0;; - Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*) + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 @@ -154,9 +150,6 @@ EOF NILE:*:*:dcosx) echo pyramid-pyramid-svr4 exit 0 ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit 0 ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit 0 ;; @@ -223,9 +216,6 @@ EOF powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit 0 ;; - macppc:NetBSD:*:*) - echo powerpc-apple-netbsd${UNAME_RELEASE} - exit 0 ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit 0 ;; @@ -239,7 +229,7 @@ EOF echo clipper-intergraph-clix${UNAME_RELEASE} exit 0 ;; mips:*:*:UMIPS | mips:*:*:RISCos) - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >dummy.c int main (argc, argv) int argc; char **argv; { #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) @@ -255,10 +245,10 @@ EOF exit (-1); } EOF - ${CC-cc} $dummy.c -o $dummy \ - && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ - && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy echo mips-mips-riscos${UNAME_RELEASE} exit 0 ;; Night_Hawk:Power_UNIX:*:*) @@ -310,7 +300,7 @@ EOF exit 0 ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >dummy.c #include <sys/systemcfg.h> main() @@ -321,8 +311,8 @@ EOF exit(0); } EOF - ${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy echo rs6000-ibm-aix3.2.5 elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 @@ -331,8 +321,7 @@ EOF fi exit 0 ;; *:AIX:*:4) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` - if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc @@ -365,50 +354,18 @@ EOF hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit 0 ;; - 9000/[34678]??:HP-UX:*:*) + 9000/[3478]??:HP-UX:*:*) case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 ) - sed 's/^ //' << EOF >$dummy.c - #include <stdlib.h> - #include <unistd.h> - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (${CC-cc} $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy` - rm -f $dummy.c $dummy + 9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;; + 9000/8?? ) HP_ARCH=hppa1.0 ;; esac HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit 0 ;; 3050*:HI-UX:*:*) - sed 's/^ //' << EOF >$dummy.c + sed 's/^ //' << EOF >dummy.c #include <unistd.h> int main () @@ -433,8 +390,8 @@ EOF exit (0); } EOF - ${CC-cc} $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy echo unknown-hitachi-hiuxwe2 exit 0 ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) @@ -491,9 +448,6 @@ EOF CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} exit 0 ;; - CRAY*T3E:*:*:*) - echo t3e-cray-unicosmk${UNAME_RELEASE} - exit 0 ;; CRAY-2:*:*:*) echo cray2-cray-unicos exit 0 ;; @@ -511,15 +465,9 @@ EOF hp300:OpenBSD:*:*) echo m68k-unknown-openbsd${UNAME_RELEASE} exit 0 ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; - i?86:BSD/386:*:* | i?86:BSD/OS:*:*) + i?86:BSD/386:*:* | *:BSD/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit 0 ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit 0 ;; *:FreeBSD:*:*) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit 0 ;; @@ -530,13 +478,13 @@ EOF echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` exit 0 ;; i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin + echo i386-pc-cygwin32 exit 0 ;; i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 + echo i386-pc-mingw32 exit 0 ;; p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin + echo powerpcle-unknown-cygwin32 exit 0 ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` @@ -545,12 +493,6 @@ EOF echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit 0 ;; *:Linux:*:*) - # uname on the ARM produces all sorts of strangeness, and we need to - # filter it out. - case "$UNAME_MACHINE" in - arm* | sa110*) UNAME_MACHINE="arm" ;; - esac - # The BFD linker knows what the default object file format is, so # first see if it will tell us. ld_help_string=`ld --help 2>&1` @@ -564,13 +506,12 @@ EOF i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; - armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; esac if test "${UNAME_MACHINE}" = "alpha" ; then - sed 's/^ //' <<EOF >$dummy.s + sed 's/^ //' <<EOF >dummy.s .globl main .ent main main: @@ -588,9 +529,9 @@ EOF .end main EOF LIBC="" - ${CC-cc} $dummy.s -o $dummy 2>/dev/null + ${CC-cc} dummy.s -o dummy 2>/dev/null if test "$?" = 0 ; then - ./$dummy + ./dummy case "$?" in 7) UNAME_MACHINE="alpha" @@ -609,16 +550,16 @@ EOF ;; esac - objdump --private-headers $dummy | \ + objdump --private-headers dummy | \ grep ld.so.1 > /dev/null if test "$?" = 0 ; then LIBC="libc1" fi fi - rm -f $dummy.s $dummy + rm -f dummy.s dummy echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 elif test "${UNAME_MACHINE}" = "mips" ; then - cat >$dummy.c <<EOF + cat >dummy.c <<EOF main(argc, argv) int argc; char *argv[]; @@ -632,8 +573,8 @@ main(argc, argv) return 0; } EOF - ${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy else # Either a pre-BFD a.out linker (linux-gnuoldld) # or one that does not give us useful --help. @@ -652,7 +593,7 @@ EOF ;; esac # Determine whether the default compiler is a.out or elf - cat >$dummy.c <<EOF + cat >dummy.c <<EOF #include <features.h> main(argc, argv) int argc; @@ -674,8 +615,8 @@ main(argc, argv) return 0; } EOF - ${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0 - rm -f $dummy.c $dummy + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy fi ;; # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions # are messed up and put the nodename in both sysname and nodename. @@ -711,13 +652,6 @@ EOF echo ${UNAME_MACHINE}-pc-sysv32 fi exit 0 ;; - i?86:UnixWare:*:*) - if /bin/uname -X 2>/dev/null >/dev/null ; then - (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - fi - echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION} - exit 0 ;; pc:*:*:*) # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. @@ -801,40 +735,19 @@ EOF news*:NEWS-OS:*:6*) echo mips-sony-newsos6 exit 0 ;; - R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit 0 ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit 0 ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit 0 ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit 0 ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit 0 ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit 0 ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit 0 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -cat >$dummy.c <<EOF +cat >dummy.c <<EOF #ifdef _SEQUENT_ # include <sys/types.h> # include <sys/utsname.h> @@ -872,10 +785,7 @@ main () #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); exit (0); #endif @@ -935,8 +845,8 @@ main () } EOF -${CC-cc} $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0 -rm -f $dummy.c $dummy +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy # Apollos put the system type in the environment. diff --git a/config.sub b/config.sub index da8b7ae6..213a6d47 100755 --- a/config.sub +++ b/config.sub @@ -1,6 +1,6 @@ #! /bin/sh # Configuration validation subroutine script, version 1.1. -# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# Copyright (C) 1991, 92, 93, 94, 95, 96, 1997 Free Software Foundation, Inc. # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. @@ -150,8 +150,8 @@ case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ - | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ - | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \ + | arme[lb] | pyramid | mn10200 | mn10300 \ + | tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \ | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ @@ -162,7 +162,7 @@ case $basic_machine in # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. - i[34567]86) + i[3456]86) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. @@ -171,11 +171,11 @@ case $basic_machine in exit 1 ;; # Recognize the basic CPU types with company name. - vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \ | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ - | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* \ | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ @@ -350,19 +350,19 @@ case $basic_machine in os=-mvs ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? - i[34567]86v32) + i[3456]86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; - i[34567]86v4*) + i[3456]86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; - i[34567]86v) + i[3456]86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; - i[34567]86sol2) + i[3456]86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; @@ -469,23 +469,25 @@ case $basic_machine in pc532 | pc532-*) basic_machine=ns32k-pc532 ;; - pentium | p5 | k5 | nexen) - basic_machine=i586-pc + pentium | p5) + basic_machine=i586-intel ;; - pentiumpro | p6 | k6 | 6x86) - basic_machine=i686-pc + pentiumpro | p6) + basic_machine=i686-intel ;; - pentiumii | pentium2) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | nexen-*) + pentium-* | p5-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumpro-* | p6-* | k6-* | 6x86-*) + pentiumpro-* | p6-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; - pentiumii-* | pentium2-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + k5) + # We don't have specific support for AMD's K5 yet, so just call it a Pentium + basic_machine=i586-amd + ;; + nexen) + # We don't have specific support for Nexgen yet, so just call it a Pentium + basic_machine=i586-nexgen ;; pn) basic_machine=pn-gould @@ -713,9 +715,8 @@ case $os in | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -rhapsody* \ - | -openstep*) + | -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv*) # Remember, each alternative MUST END IN *, to match a version number. ;; -linux*) @@ -828,9 +829,6 @@ case $basic_machine in sparc-* | *-sun) os=-sunos4.1.1 ;; - *-be) - os=-beos - ;; *-ibm) os=-aix ;; diff --git a/configure b/configure index 0e1eafba..954c0ceb 100755 --- a/configure +++ b/configure @@ -22,9 +22,11 @@ ac_help="$ac_help ac_help="$ac_help --with-gnu-ld assume the C compiler uses GNU ld [default=no]" ac_help="$ac_help - --enable-kanji multibyte character support (kanji, Korean etc.)" + --with-libs-from pass compiler flags to look for libraries" ac_help="$ac_help - --enable-modelock XKB keyboard language status support" + --with-incs-from pass compiler flags to look for header files" +ac_help="$ac_help + --enable-kanji multibyte character support (kanji, Korean etc.)" ac_help="$ac_help --with-nlsdir=PATH specify where the locale stuff should go " ac_help="$ac_help @@ -39,14 +41,12 @@ ac_help="$ac_help --with-x use the X Window System" ac_help="$ac_help --disable-locale disable use of X locale support" +ac_help="$ac_help + --enable-modelock XKB keyboard language status support" ac_help="$ac_help --disable-shape disable shaped window extension support" ac_help="$ac_help --disable-shm disable usage of MIT-SHM extension" -ac_help="$ac_help - --with-gfx-libs pass compiler flags to look for gfx libraries" -ac_help="$ac_help - --with-gfx-incs pass compiler flags to look for gfx header files" ac_help="$ac_help --disable-xpm disable use of XPM pixmaps through libXpm" ac_help="$ac_help @@ -579,6 +579,8 @@ fi + + ac_aux_dir= for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do if test -f $ac_dir/install-sh; then @@ -610,7 +612,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # ./install, which can be erroneously created by make from ./install.sh. echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:614: checking for a BSD compatible install" >&5 +echo "configure:616: checking for a BSD compatible install" >&5 if test -z "$INSTALL"; then if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -663,7 +665,7 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 -echo "configure:667: checking whether build environment is sane" >&5 +echo "configure:669: checking whether build environment is sane" >&5 # Just in case sleep 1 echo timestamp > conftestfile @@ -720,7 +722,7 @@ test "$program_suffix" != NONE && test "$program_transform_name" = "" && program_transform_name="s,x,x," echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 -echo "configure:724: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo "configure:726: checking whether ${MAKE-make} sets \${MAKE}" >&5 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -749,7 +751,7 @@ fi PACKAGE=WindowMaker -VERSION=0.51.0 +VERSION=0.51.1 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } @@ -766,7 +768,7 @@ EOF missing_dir=`cd $ac_aux_dir && pwd` echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 -echo "configure:770: checking for working aclocal" >&5 +echo "configure:772: checking for working aclocal" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -779,7 +781,7 @@ else fi echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 -echo "configure:783: checking for working autoconf" >&5 +echo "configure:785: checking for working autoconf" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -792,7 +794,7 @@ else fi echo $ac_n "checking for working automake""... $ac_c" 1>&6 -echo "configure:796: checking for working automake" >&5 +echo "configure:798: checking for working automake" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -805,7 +807,7 @@ else fi echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 -echo "configure:809: checking for working autoheader" >&5 +echo "configure:811: checking for working autoheader" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -818,7 +820,7 @@ else fi echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 -echo "configure:822: checking for working makeinfo" >&5 +echo "configure:824: checking for working makeinfo" >&5 # Run test in a subshell; some versions of sh will print an error if # an executable is not found, even if stderr is redirected. # Redirect stdin to placate older versions of autoconf. Sigh. @@ -885,7 +887,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:889: checking host system type" >&5 +echo "configure:891: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -908,7 +910,7 @@ echo "$ac_t""$host" 1>&6 # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:912: checking for $ac_word" >&5 +echo "configure:914: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -938,7 +940,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:942: checking for $ac_word" >&5 +echo "configure:944: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -968,7 +970,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:972: checking for $ac_word" >&5 +echo "configure:974: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1019,7 +1021,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1023: checking for $ac_word" >&5 +echo "configure:1025: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1051,7 +1053,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1055: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1057: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1062,12 +1064,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1066 "configure" +#line 1068 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1093,12 +1095,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1097: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1099: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1102: checking whether we are using GNU C" >&5 +echo "configure:1104: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1107,7 +1109,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1111: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1113: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1126,7 +1128,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1130: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1132: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1170,7 +1172,7 @@ ac_prog=ld if test "$ac_cv_prog_gcc" = yes; then # Check if gcc -print-prog-name=ld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:1174: checking for ld used by GCC" >&5 +echo "configure:1176: checking for ld used by GCC" >&5 ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -1188,10 +1190,10 @@ echo "configure:1174: checking for ld used by GCC" >&5 esac elif test "$with_gnu_ld" = yes; then echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:1192: checking for GNU ld" >&5 +echo "configure:1194: checking for GNU ld" >&5 else echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6 -echo "configure:1195: checking for non-GNU ld" >&5 +echo "configure:1197: checking for non-GNU ld" >&5 fi if eval "test \"`echo '$''{'ac_cv_path_LD'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1227,7 +1229,7 @@ fi test -z "$LD" && { echo "configure: error: no acceptable ld found in \$PATH" 1>&2; exit 1; } echo $ac_n "checking if the linker ($LD) is GNU ld""... $ac_c" 1>&6 -echo "configure:1231: checking if the linker ($LD) is GNU ld" >&5 +echo "configure:1233: checking if the linker ($LD) is GNU ld" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gnu_ld'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1243,7 +1245,7 @@ echo "$ac_t""$ac_cv_prog_gnu_ld" 1>&6 echo $ac_n "checking for BSD-compatible nm""... $ac_c" 1>&6 -echo "configure:1247: checking for BSD-compatible nm" >&5 +echo "configure:1249: checking for BSD-compatible nm" >&5 if eval "test \"`echo '$''{'ac_cv_path_NM'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1280,7 +1282,7 @@ echo "$ac_t""$NM" 1>&6 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1284: checking whether ln -s works" >&5 +echo "configure:1286: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1316,8 +1318,8 @@ test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" case "$host" in *-*-irix6*) # Find out which ABI we are using. - echo '#line 1320 "configure"' > conftest.$ac_ext - if { (eval echo configure:1321: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + echo '#line 1322 "configure"' > conftest.$ac_ext + if { (eval echo configure:1323: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then case "`/usr/bin/file conftest.o`" in *32-bit*) LD="${LD-ld} -32" @@ -1374,7 +1376,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } fi echo $ac_n "checking host system type""... $ac_c" 1>&6 -echo "configure:1378: checking host system type" >&5 +echo "configure:1380: checking host system type" >&5 host_alias=$host case "$host_alias" in @@ -1397,7 +1399,7 @@ echo "$ac_t""$host" 1>&6 echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6 -echo "configure:1401: checking for POSIXized ISC" >&5 +echo "configure:1403: checking for POSIXized ISC" >&5 if test -d /etc/conf/kconfig.d && grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 then @@ -1420,7 +1422,7 @@ fi # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1424: checking for $ac_word" >&5 +echo "configure:1426: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1450,7 +1452,7 @@ if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1454: checking for $ac_word" >&5 +echo "configure:1456: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1501,7 +1503,7 @@ fi # Extract the first word of "cl", so it can be a program name with args. set dummy cl; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:1505: checking for $ac_word" >&5 +echo "configure:1507: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1533,7 +1535,7 @@ fi fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:1537: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 +echo "configure:1539: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 ac_ext=c # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. @@ -1544,12 +1546,12 @@ cross_compiling=$ac_cv_prog_cc_cross cat > conftest.$ac_ext << EOF -#line 1548 "configure" +#line 1550 "configure" #include "confdefs.h" main(){return(0);} EOF -if { (eval echo configure:1553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then ac_cv_prog_cc_works=yes # If we can't run a trivial program, we are probably using a cross compiler. if (./conftest; exit) 2>/dev/null; then @@ -1575,12 +1577,12 @@ if test $ac_cv_prog_cc_works = no; then { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } fi echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:1579: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "configure:1581: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 cross_compiling=$ac_cv_prog_cc_cross echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:1584: checking whether we are using GNU C" >&5 +echo "configure:1586: checking whether we are using GNU C" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1589,7 +1591,7 @@ else yes; #endif EOF -if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1593: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then +if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1595: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then ac_cv_prog_gcc=yes else ac_cv_prog_gcc=no @@ -1608,7 +1610,7 @@ ac_test_CFLAGS="${CFLAGS+set}" ac_save_CFLAGS="$CFLAGS" CFLAGS= echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:1612: checking whether ${CC-cc} accepts -g" >&5 +echo "configure:1614: checking whether ${CC-cc} accepts -g" >&5 if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1641,7 +1643,7 @@ fi #AC_PROG_RANLIB echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 -echo "configure:1645: checking whether ln -s works" >&5 +echo "configure:1647: checking whether ln -s works" >&5 if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -1662,7 +1664,7 @@ else fi echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1666: checking how to run the C preprocessor" >&5 +echo "configure:1668: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1677,13 +1679,13 @@ else # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext <<EOF -#line 1681 "configure" +#line 1683 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1687: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1689: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1694,13 +1696,13 @@ else rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext <<EOF -#line 1698 "configure" +#line 1700 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1706: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1711,13 +1713,13 @@ else rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext <<EOF -#line 1715 "configure" +#line 1717 "configure" #include "confdefs.h" #include <assert.h> Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1721: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1723: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1743,13 +1745,13 @@ echo "$ac_t""$CPP" 1>&6 if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:1747: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:1749: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext <<EOF -#line 1753 "configure" +#line 1755 "configure" #include "confdefs.h" #include <sgtty.h> Autoconf TIOCGETP @@ -1767,7 +1769,7 @@ rm -f conftest* if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext <<EOF -#line 1771 "configure" +#line 1773 "configure" #include "confdefs.h" #include <termio.h> Autoconf TCGETA @@ -1795,54 +1797,195 @@ test "x$prefix" = xNONE && prefix=$ac_default_prefix test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:1800: checking return type of signal handlers" >&5 -if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 1805 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <signal.h> -#ifdef signal -#undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); +_bindir=`eval echo $bindir` +_bindir=`eval echo $_bindir` + +_libdir=`eval echo $libdir` +_libdir=`eval echo $_libdir` +lib_search_path="-L$_libdir" + +inc_search_path=`eval echo $includedir` +inc_search_path="-I`eval echo $inc_search_path`" + + + + +echo $ac_n "checking for RedHat system""... $ac_c" 1>&6 +echo "configure:1815: checking for RedHat system" >&5 +wm_check_flag='no :)' +if test -f /etc/redhat-release; then + wm_check_flag=yes +fi +echo "$ac_t""$wm_check_flag" 1>&6 + +mins_found=no +bugs_found=no +if test "$wm_check_flag" = yes; then +echo +echo "configure: warning: it seems you are using a system packaged by RedHat. +I will now do some checks for RedHat specific bugs. If some check +fail, please read the INSTALL file regarding RedHat, resolve the +problem and retry to configure." 1>&2 +echo +# +# Check old wmaker from RedHat +# +if test "$prefix" != "/usr/X11R6" -a "$prefix" != "/usr/X11"; then +echo $ac_n "checking for multiple installed wmaker versions""... $ac_c" 1>&6 +echo "configure:1836: checking for multiple installed wmaker versions" >&5 +if test -f /usr/X11R6/bin/wmaker; then +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: you seem to have an old version of Window Maker +installed at /usr/X11R6/bin. It is recommended that you uninstall +any previously installed packages of WindowMaker before installing +a new one." 1>&2 +mins_found=yes +else +echo "$ac_t""no apparent problems" 1>&6 +fi +fi +# +# Check for infamous en_RN bug +# Wont work because autoconf will change LANG in the beginning of the +# script. + +# +#AC_MSG_CHECKING(for silly en_RN joke that only causes headaches) +#echo $LANG +#if test "x$LANG" = xen_RN; then +#AC_MSG_RESULT(uh oh) +#AC_MSG_WARN([the LANG environment variable is set to the en_RN +#locale. Please unset it or you will have mysterious problems when +#using various software packages.]) +#bugs_found=yes #else -void (*signal ()) (); -#endif - -int main() { -int i; -; return 0; } -EOF -if { (eval echo configure:1822: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_type_signal=void +#AC_MSG_RESULT(no problem) +#fi +# +# If binary installation path is /usr/local/bin, check if it's in PATH +# +if test "$_bindir" = "/usr/local/bin"; then +echo $ac_n "checking if /usr/local/bin is in the search PATH""... $ac_c" 1>&6 +echo "configure:1870: checking if /usr/local/bin is in the search PATH" >&5 +wm_check_flag=no +old_IFS="$IFS" +IFS=":" +for i in $PATH; do + if test "x$i" = "x/usr/local/bin"; then + wm_check_flag=yes + break; + fi +done +IFS="$old_IFS" +if test "$wm_check_flag" = no; then +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: /usr/local/bin is not in the PATH environment variable. +Please resolve the problem." 1>&2 +bugs_found=yes else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_type_signal=int +echo "$ac_t""no problem" 1>&6 fi -rm -f conftest* +fi +# +# If library installation path is /usr/local/lib, +# check if it's in /etc/ld.so.conf +# +if test "$_libdir" = "/usr/local/lib"; then +wm_check_flag=yes +echo $ac_n "checking if /usr/local/lib is in /etc/ld.so.conf""... $ac_c" 1>&6 +echo "configure:1897: checking if /usr/local/lib is in /etc/ld.so.conf" >&5 +test -z "`grep /usr/local/lib /etc/ld.so.conf`" +test "$?" -eq 0 && wm_check_flag=no +if test "$wm_check_flag" = no; then +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: /usr/local/lib is not in the /etc/ld.so.conf file. +Please add it there." 1>&2 +bugs_found=yes +else +echo "$ac_t""no problem" 1>&6 +fi +fi +# +# Check for symbolic links +# +echo $ac_n "checking for /usr/X11 symbolic link""... $ac_c" 1>&6 +echo "configure:1913: checking for /usr/X11 symbolic link" >&5 +if test -d "/usr/X11"; then +echo "$ac_t""found" 1>&6 +else +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: Please create a symbolic link from /usr/X11R6 to /usr/X11." 1>&2 +mins_found=yes +fi +echo $ac_n "checking for /usr/include/X11 symbolic link""... $ac_c" 1>&6 +echo "configure:1922: checking for /usr/include/X11 symbolic link" >&5 +if test -d "/usr/include/X11"; then +echo "$ac_t""found" 1>&6 +else +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: Please create a symbolic link from /usr/X11R6/include/X11 +to /usr/include/X11." 1>&2 +mins_found=yes fi -echo "$ac_t""$ac_cv_type_signal" 1>&6 -cat >> confdefs.h <<EOF -#define RETSIGTYPE $ac_cv_type_signal -EOF +# +# Check for /lib/cpp +# +echo $ac_n "checking for /lib/cpp""... $ac_c" 1>&6 +echo "configure:1936: checking for /lib/cpp" >&5 +if test -f "/lib/cpp"; then +echo "$ac_t""found" 1>&6 +else +echo "$ac_t""uh oh" 1>&6 +echo "configure: warning: Please create a symbolic link from the cpp (C preprocessor) +program to /lib/cpp" 1>&2 +bugs_found=yes +fi + +if test "x$bugs_found" = xyes; then +{ echo "configure: error: Some bugs that can potentially cause problems during +installation/execution were found. Please correct these problems +and retry later." 1>&2; exit 1; } +exit 1 +elif test "x$mins_found" = xyes; then +echo "configure: warning: Some minor problems that might or might not cause +problems were found. If you have any problems during +installation/execution, please resolve the pointed problems and try +to reinstall." 1>&2 +echo "Press <Return> to continue." +read blabla +else +echo +echo "None of the RedHat problems known to this script were found." +echo +fi +fi + + + +# Check whether --with-libs-from or --without-libs-from was given. +if test "${with_libs_from+set}" = set; then + withval="$with_libs_from" + lib_search_path="$withval $lib_search_path" +fi + + +# Check whether --with-incs-from or --without-incs-from was given. +if test "${with_incs_from+set}" = set; then + withval="$with_incs_from" + inc_search_path="$withval $inc_search_path" +fi + + echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:1841: checking for vprintf" >&5 +echo "configure:1984: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1846 "configure" +#line 1989 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char vprintf(); below. */ @@ -1865,7 +2008,7 @@ vprintf(); ; return 0; } EOF -if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -1889,12 +2032,12 @@ fi if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:1893: checking for _doprnt" >&5 +echo "configure:2036: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1898 "configure" +#line 2041 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char _doprnt(); below. */ @@ -1917,7 +2060,7 @@ _doprnt(); ; return 0; } EOF -if { (eval echo configure:1921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -1944,19 +2087,19 @@ fi # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:1948: checking for working alloca.h" >&5 +echo "configure:2091: checking for working alloca.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1953 "configure" +#line 2096 "configure" #include "confdefs.h" #include <alloca.h> int main() { char *p = alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:1960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=yes else @@ -1977,12 +2120,12 @@ EOF fi echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:1981: checking for alloca" >&5 +echo "configure:2124: checking for alloca" >&5 if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 1986 "configure" +#line 2129 "configure" #include "confdefs.h" #ifdef __GNUC__ @@ -2010,7 +2153,7 @@ int main() { char *p = (char *) alloca(1); ; return 0; } EOF -if { (eval echo configure:2014: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2157: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=yes else @@ -2042,12 +2185,12 @@ EOF echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:2046: checking whether alloca needs Cray hooks" >&5 +echo "configure:2189: checking whether alloca needs Cray hooks" >&5 if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2051 "configure" +#line 2194 "configure" #include "confdefs.h" #if defined(CRAY) && ! defined(CRAY2) webecray @@ -2072,12 +2215,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6 if test $ac_cv_os_cray = yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2076: checking for $ac_func" >&5 +echo "configure:2219: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2081 "configure" +#line 2224 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2100,7 +2243,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2104: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2127,7 +2270,7 @@ done fi echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:2131: checking stack direction for C alloca" >&5 +echo "configure:2274: checking stack direction for C alloca" >&5 if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2135,7 +2278,7 @@ else ac_cv_c_stack_direction=0 else cat > conftest.$ac_ext <<EOF -#line 2139 "configure" +#line 2282 "configure" #include "confdefs.h" find_stack_direction () { @@ -2154,7 +2297,7 @@ main () exit (find_stack_direction() < 0); } EOF -if { (eval echo configure:2158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:2301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_stack_direction=1 else @@ -2178,12 +2321,12 @@ fi for ac_func in gethostname select poll strerror strncasecmp setpgid atexit do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:2182: checking for $ac_func" >&5 +echo "configure:2325: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2187 "configure" +#line 2330 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func(); below. */ @@ -2206,7 +2349,7 @@ $ac_func(); ; return 0; } EOF -if { (eval echo configure:2210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2353: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -2235,7 +2378,7 @@ if test "x$CPP_PATH" = x; then # Extract the first word of "cpp", so it can be a program name with args. set dummy cpp; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2239: checking for $ac_word" >&5 +echo "configure:2382: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_CPP_PATH'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2248,7 +2391,7 @@ else ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="/lib /usr/bin /bin /usr/lib /usr/ccs/lib $PATH" + ac_dummy="/lib:/usr/bin:/bin:/usr/lib:/usr/ccs/lib:$PATH" for ac_dir in $ac_dummy; do test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$ac_word; then @@ -2291,12 +2434,12 @@ EOF echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:2295: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:2438: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2300 "configure" +#line 2443 "configure" #include "confdefs.h" #include <sys/types.h> #include <sys/wait.h> @@ -2312,7 +2455,7 @@ wait (&s); s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:2316: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2459: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -2332,22 +2475,57 @@ EOF fi +echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 +echo "configure:2480: checking whether time.h and sys/time.h may both be included" >&5 +if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 2485 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> +int main() { +struct tm *tp; +; return 0; } +EOF +if { (eval echo configure:2494: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_header_time=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_time=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_header_time" 1>&6 +if test $ac_cv_header_time = yes; then + cat >> confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + for ac_hdr in fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h\ libintl.h sys/select.h poll.h do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:2341: checking for $ac_hdr" >&5 +echo "configure:2519: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2346 "configure" +#line 2524 "configure" #include "confdefs.h" #include <$ac_hdr> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:2529: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2377,12 +2555,12 @@ done echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6 -echo "configure:2381: checking for sys_siglist declaration in signal.h or unistd.h" >&5 +echo "configure:2559: checking for sys_siglist declaration in signal.h or unistd.h" >&5 if eval "test \"`echo '$''{'ac_cv_decl_sys_siglist'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2386 "configure" +#line 2564 "configure" #include "confdefs.h" #include <sys/types.h> #include <signal.h> @@ -2394,7 +2572,7 @@ int main() { char *msg = *(sys_siglist + 1); ; return 0; } EOF -if { (eval echo configure:2398: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2576: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_decl_sys_siglist=yes else @@ -2415,12 +2593,12 @@ EOF fi echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:2419: checking for working const" >&5 +echo "configure:2597: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2424 "configure" +#line 2602 "configure" #include "confdefs.h" int main() { @@ -2469,7 +2647,7 @@ ccp = (char const *const *) p; ; return 0; } EOF -if { (eval echo configure:2473: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -2489,210 +2667,48 @@ EOF fi -echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:2494: checking for ANSI C header files" >&5 -if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then +#AC_TYPE_SIZE_T +#AC_TYPE_PID_T +echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 +echo "configure:2674: checking return type of signal handlers" >&5 +if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2499 "configure" -#include "confdefs.h" -#include <stdlib.h> -#include <stdarg.h> -#include <string.h> -#include <float.h> -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:2507: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - ac_cv_header_stdc=yes -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -cat > conftest.$ac_ext <<EOF -#line 2524 "configure" -#include "confdefs.h" -#include <string.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -cat > conftest.$ac_ext <<EOF -#line 2542 "configure" -#include "confdefs.h" -#include <stdlib.h> -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - rm -rf conftest* - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -if test "$cross_compiling" = yes; then - : -else - cat > conftest.$ac_ext <<EOF -#line 2563 "configure" -#include "confdefs.h" -#include <ctype.h> -#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int main () { int i; for (i = 0; i < 256; i++) -if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -exit (0); } - -EOF -if { (eval echo configure:2574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -then - : -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -fr conftest* - ac_cv_header_stdc=no -fi -rm -fr conftest* -fi - -fi -fi - -echo "$ac_t""$ac_cv_header_stdc" 1>&6 -if test $ac_cv_header_stdc = yes; then - cat >> confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:2598: checking for size_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 2603 "configure" +#line 2679 "configure" #include "confdefs.h" #include <sys/types.h> -#if STDC_HEADERS -#include <stdlib.h> -#include <stddef.h> +#include <signal.h> +#ifdef signal +#undef signal #endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_size_t=yes -else - rm -rf conftest* - ac_cv_type_size_t=no -fi -rm -f conftest* - -fi -echo "$ac_t""$ac_cv_type_size_t" 1>&6 -if test $ac_cv_type_size_t = no; then - cat >> confdefs.h <<\EOF -#define size_t unsigned -EOF - -fi - -echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:2631: checking for pid_t" >&5 -if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 2636 "configure" -#include "confdefs.h" -#include <sys/types.h> -#if STDC_HEADERS -#include <stdlib.h> -#include <stddef.h> +#ifdef __cplusplus +extern "C" void (*signal (int, void (*)(int)))(int); +#else +void (*signal ()) (); #endif -EOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then - rm -rf conftest* - ac_cv_type_pid_t=yes -else - rm -rf conftest* - ac_cv_type_pid_t=no -fi -rm -f conftest* -fi -echo "$ac_t""$ac_cv_type_pid_t" 1>&6 -if test $ac_cv_type_pid_t = no; then - cat >> confdefs.h <<\EOF -#define pid_t int -EOF - -fi - -echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:2664: checking whether time.h and sys/time.h may both be included" >&5 -if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <<EOF -#line 2669 "configure" -#include "confdefs.h" -#include <sys/types.h> -#include <sys/time.h> -#include <time.h> int main() { -struct tm *tp; +int i; ; return 0; } EOF -if { (eval echo configure:2678: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:2696: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* - ac_cv_header_time=yes + ac_cv_type_signal=void else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - ac_cv_header_time=no + ac_cv_type_signal=int fi rm -f conftest* fi -echo "$ac_t""$ac_cv_header_time" 1>&6 -if test $ac_cv_header_time = yes; then - cat >> confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 +echo "$ac_t""$ac_cv_type_signal" 1>&6 +cat >> confdefs.h <<EOF +#define RETSIGTYPE $ac_cv_type_signal EOF -fi @@ -2705,12 +2721,12 @@ INTLIBS="" echo $ac_n "checking for gettext""... $ac_c" 1>&6 -echo "configure:2709: checking for gettext" >&5 +echo "configure:2725: checking for gettext" >&5 if eval "test \"`echo '$''{'ac_cv_func_gettext'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 2714 "configure" +#line 2730 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gettext(); below. */ @@ -2733,7 +2749,7 @@ gettext(); ; return 0; } EOF -if { (eval echo configure:2737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2753: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gettext=yes" else @@ -2751,7 +2767,7 @@ if eval "test \"`echo '$ac_cv_func_'gettext`\" = yes"; then else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6 -echo "configure:2755: checking for gettext in -lintl" >&5 +echo "configure:2771: checking for gettext in -lintl" >&5 ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2759,7 +2775,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lintl $LIBS" cat > conftest.$ac_ext <<EOF -#line 2763 "configure" +#line 2779 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2770,7 +2786,7 @@ int main() { gettext() ; return 0; } EOF -if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2797,7 +2813,7 @@ fi # Extract the first word of "xgettext", so it can be a program name with args. set dummy xgettext; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:2801: checking for $ac_word" >&5 +echo "configure:2817: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_prog_XGETTEXT'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -2860,8 +2876,8 @@ fi -supported_locales="cs de es fr gl it ja ko nl no pt ru se tr fi hr el pl ro dk" -supported_wprefs_locales="pt hr fr ko ja cs" +supported_locales="cs de es fr gl it ja ko nl no pt ru se tr fi hr el pl ro dk zh_TW.Big5" +supported_wprefs_locales="pt hr fr ko ja cs zh_TW.Big5" for lang in $LINGUAS; do ok=0 @@ -2903,7 +2919,7 @@ if test "$enable_kanji" = yes; then case $host_os in freebsd*) echo $ac_n "checking for setlocale in -lxpg4""... $ac_c" 1>&6 -echo "configure:2907: checking for setlocale in -lxpg4" >&5 +echo "configure:2923: checking for setlocale in -lxpg4" >&5 ac_lib_var=`echo xpg4'_'setlocale | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2911,7 +2927,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lxpg4 $LIBS" cat > conftest.$ac_ext <<EOF -#line 2915 "configure" +#line 2931 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -2922,7 +2938,7 @@ int main() { setlocale() ; return 0; } EOF -if { (eval echo configure:2926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2952,14 +2968,6 @@ EOF fi -# Check whether --enable-modelock or --disable-modelock was given. -if test "${enable_modelock+set}" = set; then - enableval="$enable_modelock" - X_CFLAGS="$X_CFLAGS -DXKB_MODELOCK" -fi - - - # Check whether --with-nlsdir or --without-nlsdir was given. if test "${with_nlsdir+set}" = set; then @@ -2968,19 +2976,15 @@ if test "${with_nlsdir+set}" = set; then fi + if test "x$NLSDIR" = "x"; then if test "x$with_nlsdir" != "x"; then NLSDIR=$with_nlsdir else - NLSDIR=`eval echo $prefix/lib/locale` + NLSDIR='$(prefix)/lib/locale' fi fi -cat >> confdefs.h <<EOF -#define NLSDIR "$NLSDIR" -EOF - - @@ -3054,7 +3058,7 @@ fi # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:3058: checking for X" >&5 +echo "configure:3062: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -3116,12 +3120,12 @@ if test "$ac_x_includes" = NO; then # First, try using that file with no special directory specified. cat > conftest.$ac_ext <<EOF -#line 3120 "configure" +#line 3124 "configure" #include "confdefs.h" #include <$x_direct_test_include> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3125: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3190,14 +3194,14 @@ if test "$ac_x_libraries" = NO; then ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <<EOF -#line 3194 "configure" +#line 3198 "configure" #include "confdefs.h" int main() { ${x_direct_test_function}() ; return 0; } EOF -if { (eval echo configure:3201: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -3303,17 +3307,17 @@ else case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:3307: checking whether -R must be followed by a space" >&5 +echo "configure:3311: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <<EOF -#line 3310 "configure" +#line 3314 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -3329,14 +3333,14 @@ rm -f conftest* else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <<EOF -#line 3333 "configure" +#line 3337 "configure" #include "confdefs.h" int main() { ; return 0; } EOF -if { (eval echo configure:3340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -3368,7 +3372,7 @@ rm -f conftest* # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:3372: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:3376: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3376,7 +3380,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <<EOF -#line 3380 "configure" +#line 3384 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3387,7 +3391,7 @@ int main() { dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3391: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3409,7 +3413,7 @@ fi if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:3413: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:3417: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3417,7 +3421,7 @@ else ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <<EOF -#line 3421 "configure" +#line 3425 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3428,7 +3432,7 @@ int main() { dnet_ntoa() ; return 0; } EOF -if { (eval echo configure:3432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3457,12 +3461,12 @@ fi # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:3461: checking for gethostbyname" >&5 +echo "configure:3465: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3466 "configure" +#line 3470 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char gethostbyname(); below. */ @@ -3485,7 +3489,7 @@ gethostbyname(); ; return 0; } EOF -if { (eval echo configure:3489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -3506,7 +3510,7 @@ fi if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:3510: checking for gethostbyname in -lnsl" >&5 +echo "configure:3514: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3514,7 +3518,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <<EOF -#line 3518 "configure" +#line 3522 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3525,7 +3529,7 @@ int main() { gethostbyname() ; return 0; } EOF -if { (eval echo configure:3529: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3555,12 +3559,12 @@ fi # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:3559: checking for connect" >&5 +echo "configure:3563: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3564 "configure" +#line 3568 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char connect(); below. */ @@ -3583,7 +3587,7 @@ connect(); ; return 0; } EOF -if { (eval echo configure:3587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3591: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -3604,7 +3608,7 @@ fi if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:3608: checking for connect in -lsocket" >&5 +echo "configure:3612: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3612,7 +3616,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3616 "configure" +#line 3620 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3623,7 +3627,7 @@ int main() { connect() ; return 0; } EOF -if { (eval echo configure:3627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3631: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3647,12 +3651,12 @@ fi # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:3651: checking for remove" >&5 +echo "configure:3655: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3656 "configure" +#line 3660 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char remove(); below. */ @@ -3675,7 +3679,7 @@ remove(); ; return 0; } EOF -if { (eval echo configure:3679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -3696,7 +3700,7 @@ fi if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:3700: checking for remove in -lposix" >&5 +echo "configure:3704: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3704,7 +3708,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <<EOF -#line 3708 "configure" +#line 3712 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3715,7 +3719,7 @@ int main() { remove() ; return 0; } EOF -if { (eval echo configure:3719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3723: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3739,12 +3743,12 @@ fi # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:3743: checking for shmat" >&5 +echo "configure:3747: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 3748 "configure" +#line 3752 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmat(); below. */ @@ -3767,7 +3771,7 @@ shmat(); ; return 0; } EOF -if { (eval echo configure:3771: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -3788,7 +3792,7 @@ fi if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:3792: checking for shmat in -lipc" >&5 +echo "configure:3796: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3796,7 +3800,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <<EOF -#line 3800 "configure" +#line 3804 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3807,7 +3811,7 @@ int main() { shmat() ; return 0; } EOF -if { (eval echo configure:3811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3840,7 +3844,7 @@ fi # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:3844: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:3848: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3848,7 +3852,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3852 "configure" +#line 3856 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3859,7 +3863,7 @@ int main() { IceConnectionNumber() ; return 0; } EOF -if { (eval echo configure:3863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3888,7 +3892,12 @@ XCFLAGS="$X_CFLAGS" XLFLAGS="$X_LIBS" -XLIBS="$X_EXTRA_LIBS -lX11" +XLIBS="-lX11 $X_EXTRA_LIBS" + + +lib_search_path="$lib_search_path $XLFLAGS" +inc_search_path="$inc_search_path $XCFLAGS" + use_locale=yes # Check whether --enable-locale or --disable-locale was given. @@ -3900,7 +3909,7 @@ fi if test "$use_locale" = yes; then echo $ac_n "checking for _Xsetlocale in -lX11""... $ac_c" 1>&6 -echo "configure:3904: checking for _Xsetlocale in -lX11" >&5 +echo "configure:3913: checking for _Xsetlocale in -lX11" >&5 ac_lib_var=`echo X11'_'_Xsetlocale | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3908,7 +3917,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lX11 $XLFLAGS $XLIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3912 "configure" +#line 3921 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3919,7 +3928,7 @@ int main() { _Xsetlocale() ; return 0; } EOF -if { (eval echo configure:3923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3945,6 +3954,15 @@ fi fi +# Check whether --enable-modelock or --disable-modelock was given. +if test "${enable_modelock+set}" = set; then + enableval="$enable_modelock" + X_CFLAGS="$X_CFLAGS -DXKB_MODELOCK" +fi + + + + shape=yes # Check whether --enable-shape or --disable-shape was given. if test "${enable_shape+set}" = set; then @@ -3959,7 +3977,7 @@ added_xext=no if test "$shape" = yes; then echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6 -echo "configure:3963: checking for XShapeSelectInput in -lXext" >&5 +echo "configure:3981: checking for XShapeSelectInput in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeSelectInput | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3967,7 +3985,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext $XLFLAGS $XLIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 3971 "configure" +#line 3989 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -3978,7 +3996,7 @@ int main() { XShapeSelectInput() ; return 0; } EOF -if { (eval echo configure:3982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4019,7 +4037,7 @@ fi if test "$shm" = yes; then echo $ac_n "checking for XShmAttach in -lXext""... $ac_c" 1>&6 -echo "configure:4023: checking for XShmAttach in -lXext" >&5 +echo "configure:4041: checking for XShmAttach in -lXext" >&5 ac_lib_var=`echo Xext'_'XShmAttach | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4027,7 +4045,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lXext $XLFLAGS $XLIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 4031 "configure" +#line 4049 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4038,7 +4056,7 @@ int main() { XShmAttach() ; return 0; } EOF -if { (eval echo configure:4042: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4060: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4062,12 +4080,12 @@ fi if test "$ok" = yes; then echo $ac_n "checking for shmget""... $ac_c" 1>&6 -echo "configure:4066: checking for shmget" >&5 +echo "configure:4084: checking for shmget" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmget'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4071 "configure" +#line 4089 "configure" #include "confdefs.h" /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shmget(); below. */ @@ -4090,7 +4108,7 @@ shmget(); ; return 0; } EOF -if { (eval echo configure:4094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmget=yes" else @@ -4133,18 +4151,21 @@ fi -lPL="" LIBPL="" + + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" echo $ac_n "checking for PLGetString in -lPropList""... $ac_c" 1>&6 -echo "configure:4140: checking for PLGetString in -lPropList" >&5 +echo "configure:4161: checking for PLGetString in -lPropList" >&5 ac_lib_var=`echo PropList'_'PLGetString | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lPropList $XLFLAGS $XLIBS $LIBS" +LIBS="-lPropList $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 4148 "configure" +#line 4169 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4155,7 +4176,7 @@ int main() { PLGetString() ; return 0; } EOF -if { (eval echo configure:4159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4170,29 +4191,31 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - lPL=yes + yes=yes else echo "$ac_t""no" 1>&6 -lPL=no +no=no fi +LDFLAGS="$LDFLAGS_old" -if test "$lPL" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $XCFLAGS" - ac_safe=`echo "proplist.h" | sed 'y%./+-%__p_%'` +if test "x$ac_cv_lib_PropList_PLGetString" = xyes; then + +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "proplist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for proplist.h""... $ac_c" 1>&6 -echo "configure:4186: checking for proplist.h" >&5 +echo "configure:4209: checking for proplist.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4191 "configure" +#line 4214 "configure" #include "confdefs.h" #include <proplist.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4208,13 +4231,16 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - LIBPL="-lPropList" + : else echo "$ac_t""no" 1>&6 -LIBPL="" fi - CPPFLAGS=$my_old_cppflags +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_proplist_h" = xyes; then + LIBPL="-lPropList" + fi fi if test "x$LIBPL" = "x"; then @@ -4223,7 +4249,13 @@ if test "x$LIBPL" = "x"; then echo " Window Maker requires libPropList to build." echo " Please read INSTALL to find where you can find libPropList," echo " and install it first." - echo + echo " If you already have it installed, try using the" + if test "x$ac_cv_lib_PropList_PLGetString" != xyes; then + echo " --with-libs-from flag to tell configure where the library" + echo " is installed and" + fi + echo " --with-incs-from flag to tell configure where the header" + echo " files are installed" exit 1 fi @@ -4233,25 +4265,6 @@ fi -GFXLIBS="" -# Check whether --with-gfx-libs or --without-gfx-libs was given. -if test "${with_gfx_libs+set}" = set; then - withval="$with_gfx_libs" - GFXLFLAGS=$withval -else - GFXLFLAGS="" -fi - - -# Check whether --with-gfx-incs or --without-gfx-incs was given. -if test "${with_gfx_incs+set}" = set; then - withval="$with_gfx_incs" - GFXFLAGS="$withval" GFX_INC_PATH=$withval -else - GFXFLAGS="" GFX_INC_PATH="" -fi - - @@ -4266,16 +4279,19 @@ fi if test "$xpm" = yes; then - echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6 -echo "configure:4271: checking for XpmCreatePixmapFromData in -lXpm" >&5 + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6 +echo "configure:4287: checking for XpmCreatePixmapFromData in -lXpm" >&5 ac_lib_var=`echo Xpm'_'XpmCreatePixmapFromData | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lXpm $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $LIBS" +LIBS="-lXpm $XLFLAGS $XLIBS $LIBS" cat > conftest.$ac_ext <<EOF -#line 4279 "configure" +#line 4295 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4286,7 +4302,7 @@ int main() { XpmCreatePixmapFromData() ; return 0; } EOF -if { (eval echo configure:4290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4301,29 +4317,32 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - my_libok=yes + yes=yes else echo "$ac_t""no" 1>&6 -my_libok=no +no=no fi +LDFLAGS="$LDFLAGS_old" - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` + + if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = xyes; then + +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:4317: checking for X11/xpm.h" >&5 +echo "configure:4336: checking for X11/xpm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4322 "configure" +#line 4341 "configure" #include "confdefs.h" #include <X11/xpm.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4339,24 +4358,29 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - GFXLIBS="$GFXLIBS -lXpm" - supported_gfx="XPM" - cat >> confdefs.h <<\EOF + : +else + echo "$ac_t""no" 1>&6 +fi + +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_X11_xpm_h" = xyes; then + GFXLIBS="$GFXLIBS -lXpm" + supported_gfx="XPM" + cat >> confdefs.h <<\EOF #define USE_XPM 1 EOF -else - echo "$ac_t""no" 1>&6 -supported_gfx="XPM (builtin)" -fi - - CPPFLAGS=$my_old_cppflags + else + supported_gfx="builtin-XPM" + fi fi fi +# for wmlib - - +# for test @@ -4376,16 +4400,19 @@ fi if test "$png" = yes ; then - echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6 -echo "configure:4381: checking for png_get_valid in -lpng" >&5 + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for png_get_valid in -lpng""... $ac_c" 1>&6 +echo "configure:4408: checking for png_get_valid in -lpng" >&5 ac_lib_var=`echo png'_'png_get_valid | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-lpng $GFX_INC_PATH $GFXLFLAGS $XLFLAGS -lz -lm $LIBS" +LIBS="-lpng -lz -lm $LIBS" cat > conftest.$ac_ext <<EOF -#line 4389 "configure" +#line 4416 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4396,7 +4423,7 @@ int main() { png_get_valid() ; return 0; } EOF -if { (eval echo configure:4400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4411,29 +4438,32 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - my_libok=yes + yes=yes else echo "$ac_t""no" 1>&6 -my_libok=no +no=no fi +LDFLAGS="$LDFLAGS_old" - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` + + if test "x$ac_cv_lib_png_png_get_valid" = xyes; then + +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:4427: checking for png.h" >&5 +echo "configure:4457: checking for png.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4432 "configure" +#line 4462 "configure" #include "confdefs.h" #include <png.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4467: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4449,17 +4479,21 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - GFXLIBS="$GFXLIBS -lpng -lz" - supported_gfx="$supported_gfx PNG" - cat >> confdefs.h <<\EOF -#define USE_PNG 1 -EOF - + : else echo "$ac_t""no" 1>&6 fi - CPPFLAGS=$my_old_cppflags +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_png_h" = xyes; then + GFXLIBS="$GFXLIBS -lpng -lz" + supported_gfx="$supported_gfx PNG" + cat >> confdefs.h <<\EOF +#define USE_PNG 1 +EOF + + fi fi fi @@ -4475,16 +4509,19 @@ fi if test "$jpeg" = yes; then - echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6 -echo "configure:4480: checking for jpeg_destroy_compress in -ljpeg" >&5 + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for jpeg_destroy_compress in -ljpeg""... $ac_c" 1>&6 +echo "configure:4517: checking for jpeg_destroy_compress in -ljpeg" >&5 ac_lib_var=`echo jpeg'_'jpeg_destroy_compress | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-ljpeg $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $LIBS" +LIBS="-ljpeg $LIBS" cat > conftest.$ac_ext <<EOF -#line 4488 "configure" +#line 4525 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4495,7 +4532,7 @@ int main() { jpeg_destroy_compress() ; return 0; } EOF -if { (eval echo configure:4499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4510,158 +4547,32 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - my_libok=yes + yes=yes else echo "$ac_t""no" 1>&6 -my_libok=no +no=no fi - - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - cat > conftest.$ac_ext <<EOF -#line 4525 "configure" -#include "confdefs.h" -jpeglib.h -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -if test -z "$ac_err"; then - rm -rf conftest* - GFXLIBS="$GFXLIBS -ljpeg" - supported_gfx="$supported_gfx JPEG" - cat >> confdefs.h <<\EOF -#define USE_JPEG 1 -EOF - -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - jpeg_not_found=yes -fi -rm -f conftest* - CPPFLAGS=$my_old_cppflags - fi -fi +LDFLAGS="$LDFLAGS_old" -gif=yes -# Check whether --enable-gif or --disable-gif was given. -if test "${enable_gif+set}" = set; then - enableval="$enable_gif" - gif=$enableval -else - gif=yes -fi - - -if test "$gif" = yes; then - retry=no - echo $ac_n "checking for DGifOpenFileName in -lungif""... $ac_c" 1>&6 -echo "configure:4566: checking for DGifOpenFileName in -lungif" >&5 -ac_lib_var=`echo ungif'_'DGifOpenFileName | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lungif $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $LIBS" -cat > conftest.$ac_ext <<EOF -#line 4574 "configure" -#include "confdefs.h" -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char DGifOpenFileName(); - -int main() { -DGifOpenFileName() -; return 0; } -EOF -if { (eval echo configure:4585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - my_libok=yes my_libname=ungif -else - echo "$ac_t""no" 1>&6 -retry=yes my_libok=no -fi - - if test "$retry" = yes; then - echo $ac_n "checking for DGifOpenFileName in -lgif""... $ac_c" 1>&6 -echo "configure:4608: checking for DGifOpenFileName in -lgif" >&5 -ac_lib_var=`echo gif'_'DGifOpenFileName | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-lgif $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $LIBS" -cat > conftest.$ac_ext <<EOF -#line 4616 "configure" -#include "confdefs.h" -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char DGifOpenFileName(); - -int main() { -DGifOpenFileName() -; return 0; } -EOF -if { (eval echo configure:4627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - my_libok=yes my_libname=gif -else - echo "$ac_t""no" 1>&6 -my_libok=no -fi - - fi + if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = xyes; then - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - ac_safe=`echo "gif_lib.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for gif_lib.h""... $ac_c" 1>&6 -echo "configure:4655: checking for gif_lib.h" >&5 +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "jpeglib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 +echo "configure:4566: checking for jpeglib.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4660 "configure" +#line 4571 "configure" #include "confdefs.h" -#include <gif_lib.h> +#include <jpeglib.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4665: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4576: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4677,17 +4588,185 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - GFXLIBS="$GFXLIBS -l$my_libname" - supported_gfx="$supported_gfx GIF" - cat >> confdefs.h <<\EOF -#define USE_GIF 1 -EOF - + : else echo "$ac_t""no" 1>&6 fi - CPPFLAGS=$my_old_cppflags +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_jpeglib_h" = xyes; then + GFXLIBS="$GFXLIBS -ljpeg" + supported_gfx="$supported_gfx JPEG" + cat >> confdefs.h <<\EOF +#define USE_JPEG 1 +EOF + + fi + fi +fi + + +gif=yes +# Check whether --enable-gif or --disable-gif was given. +if test "${enable_gif+set}" = set; then + enableval="$enable_gif" + gif=$enableval +else + gif=yes +fi + + +if test "$gif" = yes; then + my_libname="" + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for DGifOpenFileName in -lungif""... $ac_c" 1>&6 +echo "configure:4627: checking for DGifOpenFileName in -lungif" >&5 +ac_lib_var=`echo ungif'_'DGifOpenFileName | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lungif $XLFLAGS $XLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4635 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char DGifOpenFileName(); + +int main() { +DGifOpenFileName() +; return 0; } +EOF +if { (eval echo configure:4646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + yes=yes +else + echo "$ac_t""no" 1>&6 +no=no +fi + +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_ungif_DGifOpenFileName" = xyes; then + my_libname=ungif + fi + if test "x$my_libname" = x; then + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for DGifOpenFileName in -lgif""... $ac_c" 1>&6 +echo "configure:4677: checking for DGifOpenFileName in -lgif" >&5 +ac_lib_var=`echo gif'_'DGifOpenFileName | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lgif $XLFLAGS $XLIBS $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4685 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char DGifOpenFileName(); + +int main() { +DGifOpenFileName() +; return 0; } +EOF +if { (eval echo configure:4696: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + yes=yes +else + echo "$ac_t""no" 1>&6 +no=no +fi + +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_gif_DGifOpenFileName" = xyes; then + my_libname=gif + fi + fi + + if test "$my_libname" != x; then + +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "gif_lib.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for gif_lib.h""... $ac_c" 1>&6 +echo "configure:4730: checking for gif_lib.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <<EOF +#line 4735 "configure" +#include "confdefs.h" +#include <gif_lib.h> +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:4740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_gif_lib_h" = xyes; then + GFXLIBS="$GFXLIBS -l$my_libname" + supported_gfx="$supported_gfx GIF" + cat >> confdefs.h <<\EOF +#define USE_GIF 1 +EOF + + fi fi fi @@ -4714,103 +4793,122 @@ ICONEXT="xpm" if test "$tif" = yes; then my_libname="" - echo $ac_n "checking for TIFFGetVersion in -ltiff""... $ac_c" 1>&6 -echo "configure:4719: checking for TIFFGetVersion in -ltiff" >&5 -ac_lib_var=`echo tiff'_'TIFFGetVersion | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ltiff $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lm $LIBS" -cat > conftest.$ac_ext <<EOF -#line 4727 "configure" -#include "confdefs.h" -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char TIFFGetVersion(); - -int main() { -TIFFGetVersion() -; return 0; } -EOF -if { (eval echo configure:4738: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - my_libok=yes my_libname="-ltiff" -else - echo "$ac_t""no" 1>&6 -my_libok=no -fi - - unset ac_cv_lib_tiff_TIFFGetVersion - if test "$my_libok" = no; then - echo $ac_n "checking for TIFFGetVersion in -ltiff""... $ac_c" 1>&6 -echo "configure:4762: checking for TIFFGetVersion in -ltiff" >&5 -ac_lib_var=`echo tiff'_'TIFFGetVersion | sed 'y%./+-%__p_%'` -if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - ac_save_LIBS="$LIBS" -LIBS="-ltiff $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lz -lm $LIBS" -cat > conftest.$ac_ext <<EOF -#line 4770 "configure" -#include "confdefs.h" -/* Override any gcc2 internal prototype to avoid an error. */ -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char TIFFGetVersion(); - -int main() { -TIFFGetVersion() -; return 0; } -EOF -if { (eval echo configure:4781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=no" -fi -rm -f conftest* -LIBS="$ac_save_LIBS" - -fi -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then - echo "$ac_t""yes" 1>&6 - my_libok=yes my_libname="-ltiff -lz" -else - echo "$ac_t""no" 1>&6 -my_libok=no -fi - - fi - if test "$my_libok" = no; then - echo $ac_n "checking for TIFFGetVersion in -ltiff34""... $ac_c" 1>&6 -echo "configure:4806: checking for TIFFGetVersion in -ltiff34" >&5 +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for TIFFGetVersion in -ltiff""... $ac_c" 1>&6 +echo "configure:4801: checking for TIFFGetVersion in -ltiff" >&5 +ac_lib_var=`echo tiff'_'TIFFGetVersion | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltiff -lm $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4809 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char TIFFGetVersion(); + +int main() { +TIFFGetVersion() +; return 0; } +EOF +if { (eval echo configure:4820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + yes=yes +else + echo "$ac_t""no" 1>&6 +no=no +fi + +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then + my_libname="-ltiff" + fi + unset ac_cv_lib_tiff_TIFFGetVersion + if test "x$my_libname" = x; then + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for TIFFGetVersion in -ltiff""... $ac_c" 1>&6 +echo "configure:4852: checking for TIFFGetVersion in -ltiff" >&5 +ac_lib_var=`echo tiff'_'TIFFGetVersion | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltiff -lz -lm $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4860 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char TIFFGetVersion(); + +int main() { +TIFFGetVersion() +; return 0; } +EOF +if { (eval echo configure:4871: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + yes=yes +else + echo "$ac_t""no" 1>&6 +no=no +fi + +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then + my_libname="-ltiff -lz" + fi + fi + + if test "x$my_libname" = x; then + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for TIFFGetVersion in -ltiff34""... $ac_c" 1>&6 +echo "configure:4904: checking for TIFFGetVersion in -ltiff34" >&5 ac_lib_var=`echo tiff34'_'TIFFGetVersion | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_save_LIBS="$LIBS" -LIBS="-ltiff34 $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lm $LIBS" +LIBS="-ltiff34 -lm $LIBS" cat > conftest.$ac_ext <<EOF -#line 4814 "configure" +#line 4912 "configure" #include "confdefs.h" /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 @@ -4821,7 +4919,7 @@ int main() { TIFFGetVersion() ; return 0; } EOF -if { (eval echo configure:4825: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4923: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -4836,30 +4934,91 @@ LIBS="$ac_save_LIBS" fi if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then echo "$ac_t""yes" 1>&6 - my_libok=yes my_libname="-ltiff34" + yes=yes else echo "$ac_t""no" 1>&6 -my_libok=no +no=no fi +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_tiff34_TIFFGetVersion" = xyes; then + my_libname="-ltiff34" + fi fi - - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` + +# +# why the heck does debian name libtiff this way!? +# + if test "x$my_libname" = x; then + +LDFLAGS_old="$LDFLAGS" +LDFLAGS="-DBEGIN $LDFLAGS -DEND $lib_search_path" +echo $ac_n "checking for TIFFGetVersion in -ltiff3g""... $ac_c" 1>&6 +echo "configure:4959: checking for TIFFGetVersion in -ltiff3g" >&5 +ac_lib_var=`echo tiff3g'_'TIFFGetVersion | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-ltiff3g -lm $LIBS" +cat > conftest.$ac_ext <<EOF +#line 4967 "configure" +#include "confdefs.h" +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char TIFFGetVersion(); + +int main() { +TIFFGetVersion() +; return 0; } +EOF +if { (eval echo configure:4978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + yes=yes +else + echo "$ac_t""no" 1>&6 +no=no +fi + +LDFLAGS="$LDFLAGS_old" + + if test "x$ac_cv_lib_tiff3g_TIFFGetVersion" = xyes; then + my_libname="-ltiff3g" + fi + fi + + if test "x$my_libname" != x; then + +CPPFLAGS_old="$CPPFLAGS" +CPPFLAGS="$CPPFLAGS $inc_search_path" +ac_safe=`echo "tiffio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 -echo "configure:4853: checking for tiffio.h" >&5 +echo "configure:5012: checking for tiffio.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <<EOF -#line 4858 "configure" +#line 5017 "configure" #include "confdefs.h" #include <tiffio.h> EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4863: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5022: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4875,21 +5034,28 @@ rm -f conftest* fi if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then echo "$ac_t""yes" 1>&6 - GFXLIBS="$my_libname $GFXLIBS" - ICONEXT="tiff" - supported_gfx="$supported_gfx TIFF" - cat >> confdefs.h <<\EOF -#define USE_TIFF 1 -EOF - + : else echo "$ac_t""no" 1>&6 fi - CPPFLAGS=$my_old_cppflags +CPPFLAGS="$CPPFLAGS_old" + + if test "x$ac_cv_header_tiffio_h" = xyes; then + GFXLIBS="$my_libname $GFXLIBS" + ICONEXT="tiff" + supported_gfx="$supported_gfx TIFF" + cat >> confdefs.h <<\EOF +#define USE_TIFF 1 +EOF + + fi fi fi +LIBRARY_SEARCH_PATH="$lib_search_path" +HEADER_SEARCH_PATH="$inc_search_path" + @@ -4961,6 +5127,12 @@ cat >> confdefs.h <<EOF EOF +sysconfdir=`eval echo $sysconfdir` +cat >> confdefs.h <<EOF +#define SYSCONFDIR "$sysconfdir/WindowMaker" +EOF + + appspath="" @@ -5184,11 +5356,11 @@ s%@X_PRE_LIBS@%$X_PRE_LIBS%g s%@X_LIBS@%$X_LIBS%g s%@X_EXTRA_LIBS@%$X_EXTRA_LIBS%g s%@LIBPL@%$LIBPL%g -s%@XLIBS@%$XLIBS%g s%@XCFLAGS@%$XCFLAGS%g s%@XLFLAGS@%$XLFLAGS%g -s%@GFXFLAGS@%$GFXFLAGS%g -s%@GFXLFLAGS@%$GFXLFLAGS%g +s%@XLIBS@%$XLIBS%g +s%@LIBRARY_SEARCH_PATH@%$LIBRARY_SEARCH_PATH%g +s%@HEADER_SEARCH_PATH@%$HEADER_SEARCH_PATH%g s%@GFXLIBS@%$GFXLIBS%g s%@ICONEXT@%$ICONEXT%g s%@DFLAGS@%$DFLAGS%g @@ -5436,8 +5608,8 @@ cat <<EOF >get-wraster-flags prefix="$prefix" exec_prefix=\$prefix -WCFLAGS="-I\$prefix/include $XCFLAGS $GFXFLAGS" -WLFLAGS="-L\$exec_prefix/lib $XLFLAGS $GFXLFLAGS" +WCFLAGS="-I\$prefix/include $inc_search_path" +WLFLAGS="-L\$exec_prefix/lib $lib_search_path" WLIBS="-lwraster $GFXLIBS $XLIBS -lm" usage="Usage: get-wraster-flags #lp#--cflags#rp# #lp#--lflags#rp# #lp#--libs#rp#" @@ -5476,7 +5648,7 @@ rm -f get-wraster-flags -supported_gfx="$supported_gfx PPM (built-in)" +supported_gfx="$supported_gfx builtin-PPM" if test "x$MOFILES" = "x"; then mof=none @@ -5489,7 +5661,7 @@ echo echo "Window Maker was configured as follows:" echo echo "Installation path prefix: $prefix" -echo "Installation path prefix for binaries: $exec_prefix" | sed -e 's|\${prefix}|'"$prefix|" +echo "Installation path prefix for binaries: $_bindir" echo "Installation path for WPrefs.app: $wprefsdir" | sed -e 's|\$(prefix)|'"$prefix|" echo "Graphic format libraries: $supported_gfx" echo "Sound support: $sound" @@ -5499,7 +5671,7 @@ if test "x$MOFILES" != "x"; then fi -if test "$jpeg_not_found" = yes; then +if test "x$ac_cv_header_jpeglib_h" != xyes; then echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING" echo echo "JPEG support will not be included because the JPEG library is" diff --git a/configure.in b/configure.in index 5cbeaa3a..b846dd23 100644 --- a/configure.in +++ b/configure.in @@ -4,13 +4,13 @@ dnl dnl Process with: aclocal; autoconf; automake dnl dnl -dnl Shared library generation stuff taken from configure script from zlib -dnl AC_INIT(src/WindowMaker.h) -AM_INIT_AUTOMAKE(WindowMaker, 0.51.0) + + +AM_INIT_AUTOMAKE(WindowMaker, 0.51.1) AM_PROG_LIBTOOL @@ -59,18 +59,48 @@ dnl Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +_bindir=`eval echo $bindir` +_bindir=`eval echo $_bindir` + +_libdir=`eval echo $libdir` +_libdir=`eval echo $_libdir` +lib_search_path="-L$_libdir" + +inc_search_path=`eval echo $includedir` +inc_search_path="-I`eval echo $inc_search_path`" + + +dnl +dnl Check for RedHat bugs +dnl ===================== + +WM_CHECK_REDCRAP_BUGS($prefix,$_bindir,$_libdir) + + +dnl +dnl Specify paths to look for libraries and headers +dnl =============================================== +AC_ARG_WITH(libs-from, +[ --with-libs-from pass compiler flags to look for libraries], + [lib_search_path="$withval $lib_search_path"]) + +AC_ARG_WITH(incs-from, +[ --with-incs-from pass compiler flags to look for header files], + [inc_search_path="$withval $inc_search_path"]) + + + dnl Checks for library functions. dnl ============================ dnl not used anywhere dnl AC_FUNC_MEMCMP -AC_TYPE_SIGNAL AC_FUNC_VPRINTF AC_FUNC_ALLOCA AC_CHECK_FUNCS(gethostname select poll strerror strncasecmp setpgid atexit) if test "x$CPP_PATH" = x; then - AC_PATH_PROG(CPP_PATH, cpp, notfound, - [/lib /usr/bin /bin /usr/lib /usr/ccs/lib $PATH]) + AC_PATH_PROG(CPP_PATH, cpp, notfound, + /lib:/usr/bin:/bin:/usr/lib:/usr/ccs/lib:$PATH) fi dnl @@ -99,6 +129,7 @@ dnl Checks for header files. dnl ======================= dnl AC_HEADER_STDC AC_HEADER_SYS_WAIT +AC_HEADER_TIME AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h sys/time.h sys/types.h\ libintl.h sys/select.h poll.h) @@ -108,9 +139,9 @@ dnl Checks for typedefs, structures, and compiler characteristics. dnl ============================================================== AC_DECL_SYS_SIGLIST AC_C_CONST -AC_TYPE_SIZE_T -AC_TYPE_PID_T -AC_HEADER_TIME +#AC_TYPE_SIZE_T +#AC_TYPE_PID_T +AC_TYPE_SIGNAL dnl gettext @@ -167,8 +198,8 @@ dnl ================== dnl List of supported locales dnl ------------------------- -supported_locales="cs de es fr gl it ja ko nl no pt ru se tr fi hr el pl ro dk" -supported_wprefs_locales="pt hr fr ko ja cs" +supported_locales="cs de es fr gl it ja ko nl no pt ru se tr fi hr el pl ro dk zh_TW.Big5" +supported_wprefs_locales="pt hr fr ko ja cs zh_TW.Big5" for lang in $LINGUAS; do ok=0 @@ -214,29 +245,21 @@ if test "$enable_kanji" = yes; then fi -dnl XKB keyboard language status -dnl ============================ -AC_ARG_ENABLE(modelock, -[ --enable-modelock XKB keyboard language status support], - X_CFLAGS="$X_CFLAGS -DXKB_MODELOCK",) - - dnl Added by Oliver - Support for NLSDIR option, Hi Oliver! dnl =========================================== AC_ARG_WITH(nlsdir, [ --with-nlsdir=PATH specify where the locale stuff should go ]) + if test "x$NLSDIR" = "x"; then if test "x$with_nlsdir" != "x"; then NLSDIR=$with_nlsdir else - NLSDIR=`eval echo $prefix/lib/locale` + NLSDIR='$(prefix)/lib/locale' fi fi -AC_DEFINE_UNQUOTED(NLSDIR, "$NLSDIR") - AC_SUBST(INTLIBS) AC_SUBST(NLSDIR) AC_SUBST(MOFILES) @@ -295,7 +318,12 @@ XCFLAGS="$X_CFLAGS" XLFLAGS="$X_LIBS" -XLIBS="$X_EXTRA_LIBS -lX11" +XLIBS="-lX11 $X_EXTRA_LIBS" + + +lib_search_path="$lib_search_path $XLFLAGS" +inc_search_path="$inc_search_path $XCFLAGS" + dnl Decide which locale function to use, setlocale() or _Xsetlocale() dnl by MANOME Tomonori @@ -310,6 +338,14 @@ if test "$use_locale" = yes; then fi +dnl XKB keyboard language status +dnl ============================ +AC_ARG_ENABLE(modelock, +[ --enable-modelock XKB keyboard language status support], + X_CFLAGS="$X_CFLAGS -DXKB_MODELOCK",) + + + dnl Shape support dnl ============= shape=yes @@ -362,15 +398,14 @@ dnl =================================== dnl Check for libPropList dnl ===================== -lPL="" LIBPL="" -AC_CHECK_LIB(PropList, PLGetString, lPL=yes, lPL=no, $XLFLAGS $XLIBS) -if test "$lPL" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $XCFLAGS" - AC_CHECK_HEADER(proplist.h, LIBPL="-lPropList", LIBPL="") - CPPFLAGS=$my_old_cppflags +WM_CHECK_LIB(PropList, PLGetString, $X_EXTRA_LIBS) +if test "x$ac_cv_lib_PropList_PLGetString" = xyes; then + WM_CHECK_HEADER(proplist.h) + if test "x$ac_cv_header_proplist_h" = xyes; then + LIBPL="-lPropList" + fi fi if test "x$LIBPL" = "x"; then @@ -379,7 +414,13 @@ if test "x$LIBPL" = "x"; then echo " Window Maker requires libPropList to build." echo " Please read INSTALL to find where you can find libPropList," echo " and install it first." - echo + echo " If you already have it installed, try using the" + if test "x$ac_cv_lib_PropList_PLGetString" != xyes; then + echo " --with-libs-from flag to tell configure where the library" + echo " is installed and" + fi + echo " --with-incs-from flag to tell configure where the header" + echo " files are installed" exit 1 fi @@ -392,19 +433,6 @@ dnl Graphic Format Libraries dnl ============================================== -dnl -dnl Specify paths to look for graphic format libraries -dnl ================================================== -GFXLIBS="" -AC_ARG_WITH(gfx-libs, -[ --with-gfx-libs pass compiler flags to look for gfx libraries], - [GFXLFLAGS=$withval], [GFXLFLAGS=""]) - -AC_ARG_WITH(gfx-incs, -[ --with-gfx-incs pass compiler flags to look for gfx header files], - [GFXFLAGS="$withval" GFX_INC_PATH=$withval], - [GFXFLAGS="" GFX_INC_PATH=""]) - @@ -416,26 +444,25 @@ AC_ARG_ENABLE(xpm, xpm=$enableval, xpm=yes) if test "$xpm" = yes; then - AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, - my_libok=yes, my_libok=no, - $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS) + WM_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [$XLFLAGS $XLIBS]) - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - AC_CHECK_HEADER(X11/xpm.h, - [GFXLIBS="$GFXLIBS -lXpm" - supported_gfx="XPM" - AC_DEFINE(USE_XPM)], supported_gfx="XPM (builtin)") - CPPFLAGS=$my_old_cppflags + if test "x$ac_cv_lib_Xpm_XpmCreatePixmapFromData" = xyes; then + WM_CHECK_HEADER(X11/xpm.h) + if test "x$ac_cv_header_X11_xpm_h" = xyes; then + GFXLIBS="$GFXLIBS -lXpm" + supported_gfx="XPM" + AC_DEFINE(USE_XPM) + else + supported_gfx="builtin-XPM" + fi fi fi - - -AC_SUBST(XLIBS) +# for wmlib AC_SUBST(XCFLAGS) +# for test AC_SUBST(XLFLAGS) +AC_SUBST(XLIBS) AC_SUBST(X_EXTRA_LIBS) @@ -453,17 +480,15 @@ AC_ARG_ENABLE(png, if test "$png" = yes ; then - AC_CHECK_LIB(png, png_get_valid, my_libok=yes, my_libok=no, - $GFX_INC_PATH $GFXLFLAGS $XLFLAGS -lz -lm) + WM_CHECK_LIB(png, png_get_valid, [-lz -lm]) - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - AC_CHECK_HEADER(png.h, - [GFXLIBS="$GFXLIBS -lpng -lz" - supported_gfx="$supported_gfx PNG" - AC_DEFINE(USE_PNG)], ) - CPPFLAGS=$my_old_cppflags + if test "x$ac_cv_lib_png_png_get_valid" = xyes; then + WM_CHECK_HEADER(png.h) + if test "x$ac_cv_header_png_h" = xyes; then + GFXLIBS="$GFXLIBS -lpng -lz" + supported_gfx="$supported_gfx PNG" + AC_DEFINE(USE_PNG) + fi fi fi @@ -476,55 +501,49 @@ AC_ARG_ENABLE(jpeg, jpeg=$enableval, jpeg=yes, jpeg=no) if test "$jpeg" = yes; then - AC_CHECK_LIB(jpeg, jpeg_destroy_compress, my_libok=yes, my_libok=no, - $GFX_INC_PATH $GFXLFLAGS $XLFLAGS) + WM_CHECK_LIB(jpeg, jpeg_destroy_compress) - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - AC_TRY_CPP(jpeglib.h, - [GFXLIBS="$GFXLIBS -ljpeg" - supported_gfx="$supported_gfx JPEG" - AC_DEFINE(USE_JPEG)], jpeg_not_found=yes) - CPPFLAGS=$my_old_cppflags + if test "x$ac_cv_lib_jpeg_jpeg_destroy_compress" = xyes; then + WM_CHECK_HEADER(jpeglib.h) + if test "x$ac_cv_header_jpeglib_h" = xyes; then + GFXLIBS="$GFXLIBS -ljpeg" + supported_gfx="$supported_gfx JPEG" + AC_DEFINE(USE_JPEG) + fi fi fi dnl GIF Support dnl ============ -dnl -dnl giflib uses dangerous function naming... (namespace clashing) -dnl gif=yes AC_ARG_ENABLE(gif, [ --disable-gif disable GIF support through libgif or libungif], gif=$enableval, gif=yes, gif=no) if test "$gif" = yes; then - retry=no - AC_CHECK_LIB(ungif, DGifOpenFileName, - [my_libok=yes my_libname=ungif], - [retry=yes my_libok=no], - $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS) + my_libname="" + WM_CHECK_LIB(ungif, DGifOpenFileName, [$XLFLAGS $XLIBS]) + if test "x$ac_cv_lib_ungif_DGifOpenFileName" = xyes; then + my_libname=ungif + fi dnl dnl libungif is the same thing as libgif for all practical purposes. dnl - if test "$retry" = yes; then - AC_CHECK_LIB(gif, DGifOpenFileName, - [my_libok=yes my_libname=gif], - my_libok=no, - $GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS) + if test "x$my_libname" = x; then + WM_CHECK_LIB(gif, DGifOpenFileName, [$XLFLAGS $XLIBS]) + if test "x$ac_cv_lib_gif_DGifOpenFileName" = xyes; then + my_libname=gif + fi + fi + + if test "$my_libname" != x; then + WM_CHECK_HEADER(gif_lib.h) + if test "x$ac_cv_header_gif_lib_h" = xyes; then + GFXLIBS="$GFXLIBS -l$my_libname" + supported_gfx="$supported_gfx GIF" + AC_DEFINE(USE_GIF) fi - - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - AC_CHECK_HEADER(gif_lib.h, - [GFXLIBS="$GFXLIBS -l$my_libname" - supported_gfx="$supported_gfx GIF" - AC_DEFINE(USE_GIF)], ) - CPPFLAGS=$my_old_cppflags fi fi @@ -548,41 +567,56 @@ ICONEXT="xpm" if test "$tif" = yes; then my_libname="" - AC_CHECK_LIB(tiff, TIFFGetVersion, - [my_libok=yes my_libname="-ltiff"], my_libok=no, - [$GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lm]) + WM_CHECK_LIB(tiff, TIFFGetVersion, [-lm]) + if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then + my_libname="-ltiff" + fi dnl dnl Retry with zlib dnl unset ac_cv_lib_tiff_TIFFGetVersion - if test "$my_libok" = no; then - AC_CHECK_LIB(tiff, TIFFGetVersion, - [my_libok=yes my_libname="-ltiff -lz"], my_libok=no, - [$GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lz -lm]) + if test "x$my_libname" = x; then + WM_CHECK_LIB(tiff, TIFFGetVersion, [-lz -lm]) + if test "x$ac_cv_lib_tiff_TIFFGetVersion" = xyes; then + my_libname="-ltiff -lz" + fi fi - - if test "$my_libok" = no; then - AC_CHECK_LIB(tiff34, TIFFGetVersion, - [my_libok=yes my_libname="-ltiff34"], my_libok=no, - [$GFX_INC_PATH $GFXLFLAGS $XLFLAGS $XLIBS $GFXLIBS -lm]) + + if test "x$my_libname" = x; then + WM_CHECK_LIB(tiff34, TIFFGetVersion, [-lm]) + if test "x$ac_cv_lib_tiff34_TIFFGetVersion" = xyes; then + my_libname="-ltiff34" + fi fi - - if test "$my_libok" = yes; then - my_old_cppflags=$CPPFLAGS - CPPFLAGS="$CPPFLAGS $GFX_INC_PATH $XCFLAGS" - AC_CHECK_HEADER(tiffio.h, - [GFXLIBS="$my_libname $GFXLIBS" - ICONEXT="tiff" - supported_gfx="$supported_gfx TIFF" - AC_DEFINE(USE_TIFF)], ) - CPPFLAGS=$my_old_cppflags + +# +# why the heck does debian name libtiff this way!? +# + if test "x$my_libname" = x; then + WM_CHECK_LIB(tiff3g, TIFFGetVersion, [-lm]) + if test "x$ac_cv_lib_tiff3g_TIFFGetVersion" = xyes; then + my_libname="-ltiff3g" + fi + fi + + if test "x$my_libname" != x; then + WM_CHECK_HEADER(tiffio.h) + if test "x$ac_cv_header_tiffio_h" = xyes; then + GFXLIBS="$my_libname $GFXLIBS" + ICONEXT="tiff" + supported_gfx="$supported_gfx TIFF" + AC_DEFINE(USE_TIFF) + fi fi fi +LIBRARY_SEARCH_PATH="$lib_search_path" +HEADER_SEARCH_PATH="$inc_search_path" + +AC_SUBST(LIBRARY_SEARCH_PATH) +AC_SUBST(HEADER_SEARCH_PATH) -AC_SUBST(GFXFLAGS) -AC_SUBST(GFXLFLAGS) AC_SUBST(GFXLIBS) AC_SUBST(ICONEXT) @@ -635,6 +669,9 @@ AC_DEFINE_UNQUOTED(PIXMAPDIR, "$pixmapdir") pkgdatadir=`eval echo $datadir` AC_DEFINE_UNQUOTED(PKGDATADIR, "$pkgdatadir/WindowMaker") +sysconfdir=`eval echo $sysconfdir` +AC_DEFINE_UNQUOTED(SYSCONFDIR, "$sysconfdir/WindowMaker") + dnl Support for GNUSTEP_LOCAL_ROOT, for WPrefs.app dnl ============================================== @@ -729,8 +766,8 @@ cat <<EOF >get-wraster-flags prefix="$prefix" exec_prefix=\$prefix -WCFLAGS="-I\$prefix/include $XCFLAGS $GFXFLAGS" -WLFLAGS="-L\$exec_prefix/lib $XLFLAGS $GFXLFLAGS" +WCFLAGS="-I\$prefix/include $inc_search_path" +WLFLAGS="-L\$exec_prefix/lib $lib_search_path" WLIBS="-lwraster $GFXLIBS $XLIBS -lm" usage="Usage: get-wraster-flags #lp#--cflags#rp# #lp#--lflags#rp# #lp#--libs#rp#" @@ -772,7 +809,7 @@ dnl dnl Spit out the configuration dnl ========================== -supported_gfx="$supported_gfx PPM (built-in)" +supported_gfx="$supported_gfx builtin-PPM" if test "x$MOFILES" = "x"; then mof=none @@ -785,7 +822,7 @@ echo echo "Window Maker was configured as follows:" echo echo "Installation path prefix: $prefix" -echo "Installation path prefix for binaries: $exec_prefix" | sed -e 's|\${prefix}|'"$prefix|" +echo "Installation path prefix for binaries: $_bindir" echo "Installation path for WPrefs.app: $wprefsdir" | sed -e 's|\$(prefix)|'"$prefix|" echo "Graphic format libraries: $supported_gfx" echo "Sound support: $sound" @@ -795,7 +832,7 @@ if test "x$MOFILES" != "x"; then fi -if test "$jpeg_not_found" = yes; then +if test "x$ac_cv_header_jpeglib_h" != xyes; then echo "WARNING WARNING WARNING WARNING WARNING WARNING WARNING" echo echo "JPEG support will not be included because the JPEG library is" diff --git a/doc/Makefile.in b/doc/Makefile.in index 20ba69dd..c9c51a56 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/doc/geticonset.1x b/doc/geticonset.1x index 5aad0e24..5c317af8 100644 --- a/doc/geticonset.1x +++ b/doc/geticonset.1x @@ -1,15 +1,22 @@ .\" Hey, Emacs! This is an -*- nroff -*- source file. -.TH geticonset 1x "March 1998" +.TH geticonset 1x "January 1999" .SH NAME geticonset \- gets the current Window Maker iconset .SH SYNOPSIS .B geticonset -.I [iconsetfile] +.I [options] [iconsetfile] .SH DESCRIPTION .B geticonset reads the WMWindowAttributes domain, and writes the iconset found there either to stdout or to .I iconsetfile. +.SH OPTIONS +.TP +.B \-\-help +print a help message +.TP +.B \-\-version +print version number .SH ENVIRONMENT .IP GNUSTEP_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is diff --git a/doc/getstyle.1x b/doc/getstyle.1x index 0362d116..27290428 100644 --- a/doc/getstyle.1x +++ b/doc/getstyle.1x @@ -1,12 +1,11 @@ .\" Hey, Emacs! This is an -*- nroff -*- source file. -.TH getstyle 1x "December 1998" +.TH getstyle 1x "January 1999" .SH NAME getstyle \- dumps the current Window Maker style related configuration or creates a theme pack. .SH SYNOPSIS .B getstyle -[[-t] [style file]] -[-p theme name] +[[-t|--theme-options] [-p|--pack] [style file]] .SH DESCRIPTION .B getstyle can either dump the current Window Maker style related configuration @@ -17,6 +16,18 @@ redistributable theme, includig the style information and pixmaps used by it. Note that style information stored in the global configuration of the system is not read. +The following options are stored by default: \fIIconBack\fP, +\fIIconBack\fP, \fITitleJustify\fP, \fIWindowTitleFont\fP, +\fIMenuTitleFont, MenuTextFont\fP, \fIIconTitleFont\fP, +\fIDisplayFont\fP, \fIHighlightColor\fP, \fIHighlightTextColor\fP, +\fIIconTitleColor\fP, \fICClipTitleColor\fP, \fIIconBackColor\fP, +\fIFTitleColor\fP, \fIPTitleColor\fP, \fIUTitleColor\fP, +\fIFTitleBack\fP, \fIPTitleBack, UTitleBack\fP, \fIMenuTitleColor\fP, +\fIMenuTextColor\fP, \fIMenuDisabledColor\fP, \fIMenuTitleBack\fP and +\fIMenuTextBack\fP. If either \fB-t\fP or \fB--theme-options\fP is +specificied, in addition to the previous options, \fIWorkspaceBack\fP +is \fIalso\fP stored. + .SH OPTIONS .TP .B \-t @@ -27,14 +38,6 @@ This option is always enabled when the \-p option is used. creates a theme pack in the directory named by the theme name appended with the .themed suffix. -Options that are stored in the style file are: IconBack, WorkspaceBack, -IconBack, TitleJustify, WindowTitleFont, MenuTitleFont, MenuTextFont, -IconTitleFont, DisplayFont, HighlightColor, HighlightTextColor, -IconTitleColor, CClipTitleColor, IconBackColor, FTitleColor, PTitleColor, -UTitleColor, FTitleBack, PTitleBack, UTitleBack, MenuTitleColor, -MenuTextColor, MenuDisabledColor, MenuTitleBack and MenuTextBack. - - .SH ENVIRONMENT .IP GNUSTEP_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is @@ -42,7 +45,7 @@ appended to this variable to determine the actual location of the databases. If the varialbe is not set, it defaults to "~/GNUstep" .SH FILES .IP GNUSTEP_USER_ROOT/Defaults/WindowMaker -This is the actual file that's written. +This is the actual file that gets written. .SH SEE ALSO .BR setstyle (1x), .BR wmaker (1x) diff --git a/doc/seticons.1x b/doc/seticons.1x index 0ae1a96d..abd8a7d2 100644 --- a/doc/seticons.1x +++ b/doc/seticons.1x @@ -12,6 +12,13 @@ reads and writes its contents to the WMWindowAttributes domain, efectively setting the icons Window Maker uses for a given class (for example, XTerm, "xterm.XTerm", "rxvt.XTerm", "pine.XTerm", etc) +.SH OPTIONS +.TP +.B \-\-help +print a help message +.TP +.B \-\-version +print version number .SH ENVIRONMENT .IP GNUSTEP_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is diff --git a/doc/setstyle.1x b/doc/setstyle.1x index fb7c0128..39e678c5 100644 --- a/doc/setstyle.1x +++ b/doc/setstyle.1x @@ -1,10 +1,10 @@ .\" Hey, Emacs! This is an -*- nroff -*- source file. -.TH setstyle 1x "December 1998" +.TH setstyle 1x "January 1999" .SH NAME setstyle \- set style related options for Window Maker or loads a theme .SH SYNOPSIS .B setstyle -.I "[-nofonts]" +.I "[--no-fonts] [--help] [--version]" .I stylefile .SH DESCRIPTION .B setstyle @@ -12,9 +12,21 @@ reads .I stylefile and writes its contents to the WindowMaker domain, efectively setting the Window Maker style. If the supplied path is a directory, it will -be treated as a theme pack and it will be loaded appropriately. If the -.B \-nofonts -flag is specified, font related options in the style file will be ignored. +be treated as a theme pack and it will be loaded appropriately. If the +\fB\-\-no\-fonts\fP flag is specified, font related options +(\fIIconTitleFont\fP, \fIClipTitleFont\fP, \fIDisplayFont\fP, +\fIMenuTextFont\fP, \fIMenuTitleFont\fP, \fIWindowTitleFont\fP) in the +style file will be ignored. +.SH OPTIONS +.TP +.B \-\-no\-fonts +ignore font related options in style file. +.TP +.B \-\-help +print a help message +.TP +.B \-\-version +print version number .SH ENVIRONMENT .IP GNUSTEP_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is diff --git a/doc/wdwrite.1x b/doc/wdwrite.1x index 28fbb4d7..2f84c158 100644 --- a/doc/wdwrite.1x +++ b/doc/wdwrite.1x @@ -1,5 +1,5 @@ .\" Hey, Emacs! This is an -*- nroff -*- source file. -.TH wdwrite 1x "March 1998" +.TH wdwrite 1x "January 1999" .SH NAME wdwrite \- writes keys and values to the defaults database .SH SYNOPSIS @@ -15,6 +15,13 @@ and .I value to the specified .I domain. +.SH OPTIONS +.TP +.B \-\-help +print a help message +.TP +.B \-\-version +print version number .SH ENVIRONMENT .IP GNUSTEP_USER_ROOT specifies the initial path for the Defaults directory. "Defaults/" is diff --git a/doc/wmaker.1x b/doc/wmaker.1x index 011b4260..5eb83440 100644 --- a/doc/wmaker.1x +++ b/doc/wmaker.1x @@ -11,13 +11,13 @@ emulate NeXT's look as much as possible, but it deviates from it as necessary. .SH "OPTIONS" .TP -.B \-nocpp +.B \-\-no\-cpp disable preprocessing of configuration files .TP -.B \-nodock +.B \-\-no\-dock do not show the application Dock .TP -.B \-noclip +.B \-\-no\-clip do not show the workspace Clip .TP .B \-display host:display.screen @@ -30,13 +30,16 @@ command line argument. For example, if you want Window Maker to manage only screen 1, start it as: .B wmaker -display :0.1 .TP -.B \-version +.B \-\-version display version number and exit .TP -.B \-visualid +.B \-\-visual\-id specify the ID of the visual to use. See .BR xdpyinfo (1x) for a list of visuals available in your display. +.TP +.B \-\-help +print a brief help message .PP .SH FILES .TP diff --git a/doc/wmsetbg.1x b/doc/wmsetbg.1x index 0f3e4233..5fea4380 100644 --- a/doc/wmsetbg.1x +++ b/doc/wmsetbg.1x @@ -1,47 +1,62 @@ .\" Hey, Emacs! This is an -*- nroff -*- source file. -.TH wmsetbg 1x "March 1998" +.TH wmsetbg 1x "January 1999" .SH NAME wmsetbg \- sets the background on the X11 display .SH SYNOPSIS .B wmsetbg -[-t|-s] [-d|-m] [-u] [-D domain] [-c cpc] -.I image +[-display] [--version] [--help] [{-b|--back-color} \fIcolor\fP] +[{-t|--tile}|{-e|--center}|{-s|--scale}|{-a|--maxscale} \fIimage\fP] +[{-d|--dither}|{-m|--match}] [-u|--update-wmaker] +[{-D|--update-domain} \fIdomain\fP] [{-c|--colors} \fIcpc\fP] +[{-p|--parse} \fItexture\fP] [{-w|--workspace} \fIworkspace\fP] .SH DESCRIPTION .B wmsetbg reads the specified .I image -(XPM, PNG, jpeg, Tiff, raw PPM) and puts it on the root window. It can either -scale the image or tile it to make it fit the root window. Window Maker -uses this command internally to set the root window image on start up. It can be used on the command line, but it -.B won't -write the information to the Window Maker defaults' database. +(XPM, PNG, jpeg, Tiff, raw PPM) and puts it on the root window. It can +either scale the image or tile it to make it fit the root +window. Window Maker uses this command internally to set the root +window image on start up. .SH OPTIONS .TP -.B \-t -tiles the specified -.I image +.B -a|--maxscale +scales the specified \fIimage\fP preserving its aspect ratio .TP -.B \-s -scales the specified -.I image -(default) +.B -e|--center +centers the specified \fIimage\fP .TP -.B \-d +.B -t|--tile +tiles the specified \fIimage\fP +.TP +.B -s|--scale +scales the specified \fIimage\fP (default) +.TP +.B -d|--dither dithers colors .TP -.B \-m +.B -m|--match matches colors .TP -.B \-u +.B -u|--update-wmaker updates the Window Maker defaults database .TP -.B \-d -updates the specifed -.I domain -database +.B -D|--update-domain +updates the specifed \fIdomain\fP database .TP -.B \-c +.B -c|--colors colors per channel to use +.TP +.B -p|--parse +parses the specified \fItexture\fP as a \fIproplist style texture\fP +.TP +.B -w|--workspace +update background only for the specified \fIworkspace\fP +.TP +.B \-\-help +print a help message +.TP +.B \-\-version +print version number .SH SEE ALSO .BR wmaker (1x) .SH AUTHOR @@ -49,3 +64,4 @@ This man page was written by Marcelo Magallon <mmagallo@debian.org>. .PP Window Maker was written by Alfredo K. Kojima <kojima@windowmaker.org>. wmsetbg was written by Dan Pascu <dan@windowmaker.org> + diff --git a/docklib-0.0.tar.gz b/docklib-0.0.tar.gz deleted file mode 100644 index 6ca5f38c67de0b7a26e9263ed12791b263582c57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31330 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 diff --git a/docklib-0.2.tar.gz b/docklib-0.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..e09c1fc1e463d8e2fba40bbf8b4f0ae490a87b7c GIT binary patch literal 73928 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 literal 0 HcmV?d00001 diff --git a/po/Makefile.am b/po/Makefile.am index dc4a864d..e7bc6615 100644 --- a/po/Makefile.am +++ b/po/Makefile.am @@ -1,11 +1,11 @@ -nlsdir = $(DESTDIR)/@NLSDIR@ +nlsdir = $(DESTDIR)$(NLSDIR) CATALOGS = @MOFILES@ CLEANFILES = $(CATALOGS) WindowMaker.pot EXTRA_DIST = cs.po de.po es.po fr.po gl.po ja.po ko.po nl.po pt.po se.po it.po \ - no.po ru.po tr.po fi.po hr.po el.po pl.po ro.po dk.po + no.po ru.po tr.po fi.po hr.po el.po pl.po ro.po dk.po zh_TW.Big5.po POTFILES = \ $(top_builddir)/src/appicon.c \ @@ -53,14 +53,14 @@ WindowMaker.pot: $(POTFILES) fi install-data-local: $(CATALOGS) - $(mkinstalldirs) $(DESTDIR)$(nlsdir) - chmod 755 $(DESTDIR)$(nlsdir) + $(mkinstalldirs) $(nlsdir) + chmod 755 $(nlsdir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ - $(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - $(INSTALL) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WindowMaker.mo; \ + $(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \ + chmod 755 $(nlsdir)/$$l; \ + chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WindowMaker.mo; \ fi; \ done diff --git a/po/Makefile.in b/po/Makefile.in index 54ef3965..df2e118c 100644 --- a/po/Makefile.in +++ b/po/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -87,13 +87,13 @@ XLIBS = @XLIBS@ X_EXTRA_LIBS = @X_EXTRA_LIBS@ wprefsdir = @wprefsdir@ -nlsdir = $(DESTDIR)/@NLSDIR@ +nlsdir = $(DESTDIR)$(NLSDIR) CATALOGS = @MOFILES@ CLEANFILES = $(CATALOGS) WindowMaker.pot -EXTRA_DIST = cs.po de.po es.po fr.po gl.po ja.po ko.po nl.po pt.po se.po it.po no.po ru.po tr.po fi.po hr.po el.po pl.po ro.po dk.po +EXTRA_DIST = cs.po de.po es.po fr.po gl.po ja.po ko.po nl.po pt.po se.po it.po no.po ru.po tr.po fi.po hr.po el.po pl.po ro.po dk.po zh_TW.Big5.po POTFILES = $(top_builddir)/src/appicon.c $(top_builddir)/src/defaults.c $(top_builddir)/src/dialog.c $(top_builddir)/src/dock.c $(top_builddir)/src/dockedapp.c $(top_builddir)/src/event.c $(top_builddir)/src/framewin.c $(top_builddir)/src/icon.c $(top_builddir)/src/main.c $(top_builddir)/src/menu.c $(top_builddir)/src/misc.c $(top_builddir)/src/pixmap.c $(top_builddir)/src/proplist.c $(top_builddir)/src/resources.c $(top_builddir)/src/rootmenu.c $(top_builddir)/src/screen.c $(top_builddir)/src/session.c $(top_builddir)/src/stacking.c $(top_builddir)/src/startup.c $(top_builddir)/src/switchmenu.c $(top_builddir)/src/texture.c $(top_builddir)/src/wdefaults.c $(top_builddir)/src/window.c $(top_builddir)/src/winmenu.c $(top_builddir)/src/winspector.c $(top_builddir)/src/workspace.c $(top_builddir)/src/xutil.c @@ -220,15 +220,15 @@ WindowMaker.pot: $(POTFILES) fi install-data-local: $(CATALOGS) - $(mkinstalldirs) $(DESTDIR)$(nlsdir) - chmod 755 $(DESTDIR)$(nlsdir) + $(mkinstalldirs) $(nlsdir) + chmod 755 $(nlsdir) for n in $(CATALOGS) __DuMmY ; do \ if test "$$n" -a "$$n" != "__DuMmY" ; then \ l=`basename $$n .mo`; \ - $(mkinstalldirs) $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l; \ - chmod 755 $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES; \ - $(INSTALL) -m 644 $$n $(DESTDIR)$(nlsdir)/$$l/LC_MESSAGES/WindowMaker.mo; \ + $(mkinstalldirs) $(nlsdir)/$$l/LC_MESSAGES; \ + chmod 755 $(nlsdir)/$$l; \ + chmod 755 $(nlsdir)/$$l/LC_MESSAGES; \ + $(INSTALL_DATA) -m 644 $$n $(nlsdir)/$$l/LC_MESSAGES/WindowMaker.mo; \ fi; \ done diff --git a/po/README b/po/README index e6dd33eb..868c4585 100644 --- a/po/README +++ b/po/README @@ -28,6 +28,7 @@ el.po Greek Nikolaos Papagrigoriou <papanikos@usa.net> pl.po Polish Piotr Dembiñski <pdemb@aurora.put.poznan.pl> ro.po Romanian Andrei Vuta <gigi_man@manag.pub.ro> dk.po Danish Birger Langkjer <langkjer@post3.tele.dk> +zh_TW.Big5.po Chinese Li Wei Jih <lwj83@cs.ccu.edu.tw> Some translations are based on previous translations by other people. diff --git a/po/cs.po b/po/cs.po index 34f1e089..1bd7f7ee 100644 --- a/po/cs.po +++ b/po/cs.po @@ -4,9 +4,9 @@ # msgid "" msgstr "" -"Project-Id-Version: WindowMaker 0.50.2\n" -"POT-Creation-Date: 1999-01-11 07:20+0100\n" -"PO-Revision-Date: 1999-01-11 07:50+01:00\n" +"Project-Id-Version: WindowMaker 0.51.0\n" +"POT-Creation-Date: 1999-01-29 06:48+0100\n" +"PO-Revision-Date: 1999-01-29 07:34+01:00\n" "Last-Translator: David Sauer <xsauer@fel.cvut.cz>\n" "Language-Team: czech <cs@li.org>\n" "MIME-Version: 1.0\n" @@ -14,8 +14,8 @@ msgstr "" "Content-Transfer-Encoding: unknown\n" #: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 -#: ../src/dock.c:3059 ../src/dockedapp.c:206 ../src/winspector.c:283 -#: ../src/winspector.c:299 +#: ../src/dock.c:3060 ../src/dockedapp.c:208 ../src/winspector.c:281 +#: ../src/winspector.c:297 msgid "Error" msgstr "Chyba" @@ -25,8 +25,8 @@ msgstr "Nelze otev #: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 #: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 -#: ../src/dock.c:3060 ../src/dockedapp.c:206 ../src/dockedapp.c:350 -#: ../src/winspector.c:284 ../src/winspector.c:300 +#: ../src/dock.c:3061 ../src/dockedapp.c:208 ../src/dockedapp.c:352 +#: ../src/winspector.c:282 ../src/winspector.c:298 msgid "OK" msgstr "OK" @@ -52,180 +52,183 @@ msgstr "Ano" msgid "No" msgstr "Ne" -#: ../src/appicon.c:548 ../src/dock.c:1065 +#: ../src/appicon.c:548 ../src/dock.c:1064 msgid "Unhide Here" -msgstr "Odkryj zde" +msgstr "Odkrýt zde" -#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/winmenu.c:441 +#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/dock.c:1066 +#: ../src/dock.c:1068 ../src/dock.c:3186 ../src/dock.c:3188 +#: ../src/winmenu.c:441 msgid "Hide" -msgstr "Skryj" +msgstr "Skrýt" #: ../src/appicon.c:550 msgid "Set Icon..." msgstr "Nastavit ikonu..." -#: ../src/appicon.c:551 ../src/dock.c:1071 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 ../src/winmenu.c:488 +#: ../src/appicon.c:551 ../src/dock.c:1072 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 ../src/winmenu.c:488 msgid "Kill" msgstr "Ukonèit" -#: ../src/appicon.c:572 +#: ../src/appicon.c:572 ../src/dock.c:3184 msgid "Unhide" msgstr "Odkrýt" -#: ../src/defaults.c:750 ../src/startup.c:700 ../src/startup.c:718 -#: ../src/startup.c:724 +#: ../src/defaults.c:767 ../src/startup.c:709 ../src/startup.c:727 +#: ../src/startup.c:733 #, c-format msgid "could not read domain \"%s\" from defaults database" msgstr "z databáze standardù nelze naèíst doménu \"%s\"" -#: ../src/defaults.c:796 ../src/defaults.c:920 ../src/defaults.c:959 -#: ../src/defaults.c:989 +#: ../src/defaults.c:813 ../src/defaults.c:937 ../src/defaults.c:976 +#: ../src/defaults.c:1006 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "V databázi standardù jsou po¹kozena doména %s (%s)!" -#: ../src/defaults.c:801 ../src/defaults.c:941 ../src/defaults.c:972 -#: ../src/defaults.c:998 +#: ../src/defaults.c:818 ../src/defaults.c:958 ../src/defaults.c:989 +#: ../src/defaults.c:1015 #, c-format msgid "could not load domain %s from user defaults database" msgstr "z u¾ivatelovy databáze standardù nelze naèíst doménu \"%s\"" -#: ../src/defaults.c:812 ../src/defaults.c:905 +#: ../src/defaults.c:829 ../src/defaults.c:922 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" msgstr "V globální databázi standardù je po¹kozena doména %s (%s)" -#: ../src/defaults.c:831 ../src/defaults.c:910 +#: ../src/defaults.c:848 ../src/defaults.c:927 #, c-format msgid "could not load domain %s from global defaults database" msgstr "z globální databáze standardù nelze naèíst doménu \"%s\"" -#: ../src/defaults.c:1281 +#: ../src/defaults.c:1298 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "Chybný formát volby pro klíè \"%s\". Má být jeden z %s" -#: ../src/defaults.c:1328 +#: ../src/defaults.c:1345 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" msgstr "\"%s\" nelze zkonvertovat pro klíè \"%s\" na boolean " -#: ../src/defaults.c:1333 ../src/defaults.c:1367 ../src/defaults.c:1399 -#: ../src/defaults.c:1412 ../src/defaults.c:1427 ../src/defaults.c:1441 -#: ../src/defaults.c:1513 ../src/defaults.c:1525 ../src/defaults.c:1873 -#: ../src/defaults.c:1890 ../src/defaults.c:1903 ../src/defaults.c:1936 -#: ../src/defaults.c:1952 ../src/defaults.c:1983 ../src/defaults.c:2056 +#: ../src/defaults.c:1350 ../src/defaults.c:1384 ../src/defaults.c:1416 +#: ../src/defaults.c:1429 ../src/defaults.c:1444 ../src/defaults.c:1458 +#: ../src/defaults.c:1530 ../src/defaults.c:1542 ../src/defaults.c:1890 +#: ../src/defaults.c:1907 ../src/defaults.c:1920 ../src/defaults.c:1953 +#: ../src/defaults.c:1969 ../src/defaults.c:2000 ../src/defaults.c:2073 #, c-format msgid "using default \"%s\" instead" msgstr "pou¾iji implicitní %s" -#: ../src/defaults.c:1364 +#: ../src/defaults.c:1381 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "\"%s\" nelze zkonvertovat pro klíè \"%s\" na integer" -#: ../src/defaults.c:1394 ../src/defaults.c:1508 ../src/defaults.c:1868 -#: ../src/defaults.c:1885 ../src/defaults.c:1931 ../src/defaults.c:1978 +#: ../src/defaults.c:1411 ../src/defaults.c:1525 ../src/defaults.c:1885 +#: ../src/defaults.c:1902 ../src/defaults.c:1948 ../src/defaults.c:1995 #: ../src/wdefaults.c:541 ../src/wdefaults.c:577 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "Chybný formát volby pro klíè \"%s\". Má být %s." -#: ../src/defaults.c:1407 +#: ../src/defaults.c:1424 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "Pro klíè %s je v poli chybný poèet prvkù." -#: ../src/defaults.c:1422 +#: ../src/defaults.c:1439 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "Chybná hodnota pro klíè \"%s\". Má být Coordinate." -#: ../src/defaults.c:1437 +#: ../src/defaults.c:1454 #, c-format msgid "can't convert array to integers for \"%s\"." msgstr "pole nelze konvertovat na èísla typu integer(pro %s)." -#: ../src/defaults.c:1634 ../src/defaults.c:1666 ../src/defaults.c:1682 -#: ../src/defaults.c:1728 ../src/defaults.c:1768 ../src/defaults.c:1806 -#: ../src/defaults.c:1822 +#: ../src/defaults.c:1651 ../src/defaults.c:1683 ../src/defaults.c:1699 +#: ../src/defaults.c:1745 ../src/defaults.c:1785 ../src/defaults.c:1823 +#: ../src/defaults.c:1839 #, c-format msgid "\"%s\" is not a valid color name" msgstr "%s není správné jméno barvy" -#: ../src/defaults.c:1647 +#: ../src/defaults.c:1664 msgid "bad number of arguments in gradient specification" msgstr "chybný poèet argumetù ve specifikaci gradientu" -#: ../src/defaults.c:1701 +#: ../src/defaults.c:1718 msgid "too few arguments in multicolor gradient specification" msgstr "nedostatek argumentù pøi specifikaci vícebarevného gradientu" -#: ../src/defaults.c:1795 +#: ../src/defaults.c:1812 msgid "bad number of arguments in textured gradient specification" msgstr "chybný poèet argumetù ve specifikaci texturovaného gradientu" -#: ../src/defaults.c:1838 +#: ../src/defaults.c:1855 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" -msgstr "chybná hodnota neprùhlednosti pro texturu tgradient \"%s\". Má být [0..255]" +msgstr "" +"chybná hodnota neprùhlednosti pro texturu tgradient \"%s\". Má být [0..255]" -#: ../src/defaults.c:1851 +#: ../src/defaults.c:1868 #, c-format msgid "invalid texture type %s" msgstr "Chybný typ textury %s" -#: ../src/defaults.c:1898 +#: ../src/defaults.c:1915 #, c-format msgid "Error in texture specification for key \"%s\"" msgstr "Chyba ve specifikaci textury pro klíè \"%s\"" -#: ../src/defaults.c:1948 +#: ../src/defaults.c:1965 msgid "Wrong type for workspace background. Should be a texture type." msgstr "Chybný typ pro pozadí pracovní plochy. Má být textura." -#: ../src/defaults.c:1996 +#: ../src/defaults.c:2013 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." msgstr "Chybný typ pro pozadí pracovní plochy %i. Má být textura." -#: ../src/defaults.c:2021 +#: ../src/defaults.c:2038 msgid "could not load any usable font!!!" msgstr "nelze naèíst ¾ádný pou¾itelný font!!!" -#: ../src/defaults.c:2051 +#: ../src/defaults.c:2068 #, c-format msgid "could not get color for key \"%s\"" msgstr "nelze získat barvu pro klíè \"%s\"" -#: ../src/defaults.c:2110 ../src/rootmenu.c:450 +#: ../src/defaults.c:2127 ../src/rootmenu.c:454 #, c-format msgid "%s:invalid key modifier \"%s\"" msgstr "%s:chybný modifikátor klávesy \"%s\"" -#: ../src/defaults.c:2122 +#: ../src/defaults.c:2139 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:chybná specifikace klávesové zkratky \"%s\"" -#: ../src/defaults.c:2129 +#: ../src/defaults.c:2146 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:chybná klávesa v klávesové zkratce \"%s\"" -#: ../src/defaults.c:2155 +#: ../src/defaults.c:2172 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: klávesa modifikátoru %s není v poøádku" -#: ../src/defaults.c:2231 +#: ../src/defaults.c:2248 msgid "could not render texture for icon background" msgstr "pro pozadí ikony nelze vykreslit texturu" #: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 -#: ../src/dockedapp.c:356 ../src/rootmenu.c:187 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 +#: ../src/dockedapp.c:358 ../src/rootmenu.c:188 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 msgid "Cancel" msgstr "Nic" @@ -253,7 +256,7 @@ msgstr "Soubor:" msgid "Choose File" msgstr "Vyberte soubor" -#: ../src/dialog.c:483 +#: ../src/dialog.c:490 ../src/dialog.c:492 msgid "Icon Chooser" msgstr "Výbìr ikony" @@ -262,7 +265,7 @@ msgstr "V msgid "Type the name for workspace %i:" msgstr "Zadejte jméno pro plochu %i:" -#: ../src/dock.c:214 ../src/dock.c:1044 +#: ../src/dock.c:214 ../src/dock.c:1043 msgid "Rename Workspace" msgstr "Pøejmenovat plochu" @@ -278,107 +281,103 @@ msgstr "V msgid "Keep Icon" msgstr "Dr¾et ikonu" -#: ../src/dock.c:471 ../src/dock.c:1977 ../src/dock.c:2106 +#: ../src/dock.c:471 ../src/dock.c:1978 ../src/dock.c:2107 msgid "Type the command used to launch the application" msgstr "Zadejte pøíkaz, který spustí aplikaci" -#: ../src/dock.c:857 +#: ../src/dock.c:856 #, c-format msgid "could not launch application %s\n" msgstr "aplikaci %s nelze odstartovat\n" -#: ../src/dock.c:912 +#: ../src/dock.c:911 msgid "could not create workspace submenu for Clip menu" msgstr "nelze vytvoøit submenu pracovní plochy pro menu Sponky" -#: ../src/dock.c:975 +#: ../src/dock.c:974 msgid "could not create options submenu for Clip menu" msgstr "nelze vytvoøit submenu voleb pro menu Sponky" -#: ../src/dock.c:979 ../src/dock.c:1033 ../src/winmenu.c:383 +#: ../src/dock.c:978 ../src/dock.c:1032 ../src/winmenu.c:383 msgid "Keep on top" msgstr "V¾dy navrchu" -#: ../src/dock.c:985 +#: ../src/dock.c:984 msgid "Collapsed" msgstr "Svinuto" -#: ../src/dock.c:991 +#: ../src/dock.c:990 msgid "AutoCollapse" msgstr "Automaticky svinout" -#: ../src/dock.c:997 +#: ../src/dock.c:996 msgid "AutoRaiseLower" msgstr "Automaticky Nahoru/Dolù" -#: ../src/dock.c:1003 +#: ../src/dock.c:1002 msgid "AutoAttract Icons" msgstr "Automaticky chytat iony" -#: ../src/dock.c:1009 +#: ../src/dock.c:1008 msgid "Keep Attracted Icons" msgstr "Dr¾ chycené ikony" -#: ../src/dock.c:1039 +#: ../src/dock.c:1038 msgid "Clip Options" msgstr "Volby Sponky" -#: ../src/dock.c:1046 +#: ../src/dock.c:1045 msgid "(Un)Select Icon" -msgstr "(Od)Oznaè ikonu" +msgstr "(Od)Oznaèit ikonu" -#: ../src/dock.c:1048 +#: ../src/dock.c:1047 msgid "(Un)Select All Icons" -msgstr "(Od)Oznaè v¹echny ikony" +msgstr "(Od)Oznaèit v¹echny ikony" -#: ../src/dock.c:1051 +#: ../src/dock.c:1050 msgid "Keep Icon(s)" -msgstr "Dr¾ ikonu/ikony" +msgstr "Dr¾et ikonu/ikony" -#: ../src/dock.c:1053 +#: ../src/dock.c:1052 msgid "Move Icon(s) To" -msgstr "Pøesunou ikonu/ikony na" +msgstr "Pøesunout ikonu/ikony na" -#: ../src/dock.c:1058 +#: ../src/dock.c:1057 msgid "Remove Icon(s)" -msgstr "Odstraò ikonu/ikony" +msgstr "Odstranit ikonu/ikony" -#: ../src/dock.c:1060 +#: ../src/dock.c:1059 msgid "Attract Icons" -msgstr "Chytej ikony" +msgstr "Chytat ikony" -#: ../src/dock.c:1063 +#: ../src/dock.c:1062 msgid "Launch" msgstr "Odstartovat" -#: ../src/dock.c:1067 -msgid "(Un)Hide" -msgstr "Skrýt/Odkrýt" - -#: ../src/dock.c:1069 +#: ../src/dock.c:1070 msgid "Settings..." msgstr "Nastavení..." -#: ../src/dock.c:1454 ../src/dock.c:1468 ../src/dock.c:1482 ../src/dock.c:1492 +#: ../src/dock.c:1455 ../src/dock.c:1469 ../src/dock.c:1483 ../src/dock.c:1493 #, c-format msgid "bad value in docked icon state info %s" msgstr "chybná hodnota stavu ukotvené ikony %s" -#: ../src/dock.c:1500 +#: ../src/dock.c:1501 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "chybná hodnota pozice ukotvené ikony %i,%i" -#: ../src/dock.c:1744 +#: ../src/dock.c:1745 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "v doku je pøíli¹ mnoho ikon. Co se nevejde, je zanedbáno" #. icon->forced_dock = 1; -#: ../src/dock.c:1976 ../src/dock.c:2105 +#: ../src/dock.c:1977 ../src/dock.c:2106 msgid "Dock Icon" msgstr "Ukotvit ikonu" -#: ../src/dock.c:3052 ../src/dock.c:3056 +#: ../src/dock.c:3053 ../src/dock.c:3057 #, c-format msgid "Could not execute command \"%s\"" msgstr "Nelze provést pøíkaz \"%s\"" @@ -388,45 +387,45 @@ msgstr "Nelze prov msgid "could not find icon %s, used in a docked application" msgstr "nelze najít ikonu %s, která byla pou¾ita pro aplikaci v doku" -#: ../src/dockedapp.c:205 +#: ../src/dockedapp.c:207 #, c-format msgid "Could not open specified icon file:%s" msgstr "Nelze otevøít specifikovaný soubor s ikonou(%s)" -#: ../src/dockedapp.c:291 +#: ../src/dockedapp.c:293 msgid "Start when WindowMaker is started" msgstr "Odstartovat pøi startu WindowMakeru" -#: ../src/dockedapp.c:298 +#: ../src/dockedapp.c:300 msgid "Application path and arguments" msgstr "Cesty a argumenty pro aplikaci" -#: ../src/dockedapp.c:309 +#: ../src/dockedapp.c:311 msgid "Command for files dropped with DND" msgstr "Pøíkaz pro polo¾ený soubor (DND)" -#: ../src/dockedapp.c:321 +#: ../src/dockedapp.c:323 #, c-format msgid "%d will be replaced with the file name" msgstr "%d bude nahrazeno jménem souboru" -#: ../src/dockedapp.c:325 +#: ../src/dockedapp.c:327 msgid "DND support was not compiled in" msgstr "DNS podpora nebylo zakompilována" -#: ../src/dockedapp.c:331 +#: ../src/dockedapp.c:333 msgid "Icon Image" msgstr "Ikona" -#: ../src/dockedapp.c:343 ../src/winspector.c:1235 +#: ../src/dockedapp.c:345 ../src/winspector.c:1235 msgid "Browse..." msgstr "Hledat..." -#: ../src/dockedapp.c:388 +#: ../src/dockedapp.c:390 msgid "Docked Application Settings" msgstr "Nastavení pro aplikaci v doku" -#: ../src/event.c:371 +#: ../src/event.c:373 msgid "stack overflow: too many dead processes" msgstr "pøeteèení zásobníku: pøíli¹ mnoho procesù ve stavu dead" @@ -462,61 +461,64 @@ msgstr "nelze naj msgid "could not load default icon \"%s\":%s" msgstr "nelze naèíst standardní ikonu \"%s\":%s" -#: ../src/main.c:199 +#: ../src/main.c:200 msgid "could not exec window manager" msgstr "nelze spustit správce oken" -#: ../src/main.c:200 +#: ../src/main.c:201 msgid "Restart failed!!!" msgstr "Operace \"RESTART\" selhala!!!" -#: ../src/main.c:247 +#: ../src/main.c:248 #, c-format msgid "%s aborted.\n" msgstr "%s pøeru¹en.\n" -#: ../src/main.c:258 -#, c-format -msgid "usage: %s [-options]\n" -msgstr "pou¾ití: %s [-volby]\n" - #: ../src/main.c:259 -msgid "options:" -msgstr "volby:" +#, c-format +msgid "Usage: %s [options]\n" +msgstr "pou¾ití: %s [volby]\n" -#: ../src/main.c:261 -msgid " -nocpp \t\tdisable preprocessing of configuration files" -msgstr " -nocpp \t\tneprovádìj pøedzpracování konfiguraèních souborù" +#: ../src/main.c:260 +msgid "The Window Maker window manager for the X window system" +msgstr "Správce oken Window Maker pro X window" -#: ../src/main.c:263 -msgid " -nodock\t\tdo not open the application Dock" -msgstr " -nodock\t\tnezobrazuj \"hnízdo\" pro ikony" - -#: ../src/main.c:264 -msgid " -noclip\t\tdo not open the workspace Clip" -msgstr " -noclip\t\tneotvírat aplikaci Sponku" - -#. -#. puts(_(" -locale locale locale to use")); -#. -#: ../src/main.c:268 -msgid " -visualid visualid\tvisual id of visual to use" -msgstr "" -" -visualid visualid\\tèíslo obrazového módu(visual id), který bude pou¾it" - -#: ../src/main.c:269 +#: ../src/main.c:262 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tkterý display pou¾ít" -#: ../src/main.c:270 -msgid " -static\t\tdo not update or save configurations" -msgstr " -static\t\tneobnovovat a neukládat konfigurace" +#: ../src/main.c:264 +msgid " --no-cpp \t\tdisable preprocessing of configuration files" +msgstr " --nocpp \t\tneprovádìj pøedzpracování konfiguraèních souborù" +#: ../src/main.c:266 +msgid " --no-dock\t\tdo not open the application Dock" +msgstr " --nodock\t\tnezobrazuj Dok pro ikony" + +#: ../src/main.c:267 +msgid " --no-clip\t\tdo not open the workspace Clip" +msgstr " --noclip\t\tneotvírat aplikaci Sponku" + +#. +#. puts(_(" --locale locale locale to use")); +#. #: ../src/main.c:271 -msgid " -version\t\tprint version and exit" -msgstr " -version\t\tzobraz verzi a konec" +msgid " --visual-id visualid\tvisual id of visual to use" +msgstr " --visualid visualid\\tèíslo obrazového módu(visual id), který bude pou¾it" -#: ../src/main.c:283 +#: ../src/main.c:272 +msgid " --static\t\tdo not update or save configurations" +msgstr " --static\t\tneobnovovat a neukládat konfigurace" + +#: ../src/main.c:273 +msgid " --version\t\tprint version and exit" +msgstr " --version\t\tzobraz verzi a konec" + +#: ../src/main.c:274 +msgid " --help\t\t\tshow this message" +msgstr " --help\t\t\tuka¾ tuto zprávu" + +#: ../src/main.c:286 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" @@ -526,35 +528,45 @@ msgstr "" "Ujistìte se, ¾e máte Window Maker správnì nainstalován, pøípadnì proveïte " "wmaker.inst" -#: ../src/main.c:302 +#: ../src/main.c:305 #, c-format msgid "%s:could not execute initialization script" msgstr "%s:nelze provést inicializaèní skript" -#: ../src/main.c:319 +#: ../src/main.c:322 #, c-format msgid "%s:could not execute exit script" msgstr "%s:nelze provést ukonèovací skript" -#: ../src/main.c:373 ../src/main.c:380 ../src/main.c:387 ../src/main.c:401 +#: ../src/main.c:383 ../src/main.c:390 ../src/main.c:398 ../src/main.c:414 #, c-format msgid "too few arguments for %s" msgstr "nedostatek argumetù pro %s" -#: ../src/main.c:391 +#: ../src/main.c:402 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "chybná hodnota pro typ visual: \"%s\"" -#: ../src/main.c:449 +#: ../src/main.c:419 +#, c-format +msgid "%s: invalid argument '%s'" +msgstr "%s: chybný argument '%s'" + +#: ../src/main.c:420 +#, c-format +msgid "Try '%s --help' for more information" +msgstr "Zkuste '%s --help', získáte více informací." + +#: ../src/main.c:463 msgid "X server does not support locale" msgstr "X server nepodporuje nastavení místních zvyklostí" -#: ../src/main.c:452 +#: ../src/main.c:466 msgid "cannot set locale modifiers" msgstr "nelze nastavit modifikátory místních zvyklostí" -#: ../src/main.c:469 +#: ../src/main.c:483 #, c-format msgid "could not open display \"%s\"" msgstr "nelze otevøít displej \"%s\"" @@ -589,54 +601,58 @@ msgstr "v msgid "selection timed-out" msgstr "time out pøi výbìru" -#: ../src/misc.c:858 +#: ../src/misc.c:859 msgid "Program Arguments" msgstr "Argumenty Programu" -#: ../src/misc.c:859 +#: ../src/misc.c:860 msgid "Enter command arguments:" msgstr "Zadejte argumenty pro pøíkaz:" -#: ../src/misc.c:954 +#: ../src/misc.c:957 msgid "unable to get dropped data from DND drop" msgstr "nelze získat data z DND operace drop" -#: ../src/misc.c:962 +#: ../src/misc.c:965 msgid "error getting dropped data from DND drop" msgstr "chyba pøi získávání dat z operace DND drop" -#: ../src/misc.c:968 +#: ../src/misc.c:971 msgid "out of memory while getting data from DND drop" msgstr "nedostatek pamìti pøi ètení dat z DND operace drop" -#: ../src/misc.c:1012 ../src/misc.c:1132 +#: ../src/misc.c:1016 ../src/misc.c:1151 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "nedostatek pamìti pøi expanzi \"%s\"" -#: ../src/misc.c:1066 +#: ../src/misc.c:1070 msgid "out of memory during expansion of \"%w\"" msgstr "nedostatek pamìti pøi expanzi \"%w\"" -#: ../src/misc.c:1085 +#: ../src/misc.c:1088 +msgid "out of memory during expansion of \"%W\"" +msgstr "nedostatek pamìti pøi expanzi \"%s\"" + +#: ../src/misc.c:1104 msgid "out of memory during expansion of \"%a\"" msgstr "nedostatek pamìti pøi expanzi \"%a\"" -#: ../src/misc.c:1111 +#: ../src/misc.c:1130 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "nedostatek pamìti pøi expanzi \"%d\"" -#: ../src/misc.c:1125 +#: ../src/misc.c:1144 msgid "selection not available" msgstr "výbìr není dostupný" -#: ../src/misc.c:1197 ../src/misc.c:1203 +#: ../src/misc.c:1216 ../src/misc.c:1222 #, c-format msgid "bad window name value in %s state info" msgstr "chybné jméno okna ve stavové informaci %s" -#: ../src/misc.c:1457 +#: ../src/misc.c:1476 msgid "could not send message to background image helper" msgstr "nelze poslat zprávu umís»ovaèi pozadí" @@ -737,19 +753,19 @@ msgstr "nelze zpracovat barvu \"%s\"" msgid "could not allocate color \"%s\"" msgstr "nelze alokovat polo¾ku pro barvu \"%s\"" -#: ../src/rootmenu.c:185 ../src/rootmenu.c:187 +#: ../src/rootmenu.c:186 ../src/rootmenu.c:188 msgid "Exit" msgstr "Konec" -#: ../src/rootmenu.c:186 +#: ../src/rootmenu.c:187 msgid "Exit window manager?" msgstr "Ukonèit mana¾era oken?" -#: ../src/rootmenu.c:222 +#: ../src/rootmenu.c:223 msgid "Close X session" msgstr "Ukonèit sezení X" -#: ../src/rootmenu.c:223 +#: ../src/rootmenu.c:224 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." @@ -761,15 +777,15 @@ msgstr "" #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. -#: ../src/rootmenu.c:225 ../src/winmenu.c:481 +#: ../src/rootmenu.c:226 ../src/winmenu.c:481 msgid "Close" -msgstr "Uzavøi" +msgstr "Uzavøít" -#: ../src/rootmenu.c:236 +#: ../src/rootmenu.c:237 msgid "Kill X session" msgstr "Ukonèit sezení X" -#: ../src/rootmenu.c:237 +#: ../src/rootmenu.c:238 msgid "" "Kill Window System session?\n" "(all applications will be closed)" @@ -777,47 +793,47 @@ msgstr "" "Ukonèit sezení?\n" "(v¹echny aplikace budou uzavøeny)" -#: ../src/rootmenu.c:463 +#: ../src/rootmenu.c:467 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" msgstr "%s:chybná specifikace klávesové zkratky \"%s\" pro polo¾ku %s" -#: ../src/rootmenu.c:471 +#: ../src/rootmenu.c:475 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" msgstr "%s:chybná klávesa v klávesové zkratce \"%s\" pro polo¾ku %s" -#: ../src/rootmenu.c:524 +#: ../src/rootmenu.c:528 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s: neodpovídající '\"' v souboru s menu" -#: ../src/rootmenu.c:574 +#: ../src/rootmenu.c:578 #, c-format msgid "%s: missing command" msgstr "%s: oèekávám pøíkaz" -#: ../src/rootmenu.c:607 +#: ../src/rootmenu.c:611 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "chybná specifikace OPEN_MENU: %s" -#: ../src/rootmenu.c:680 +#: ../src/rootmenu.c:684 #, c-format msgid "%s:could not stat menu" msgstr "%s:nelze provést operaci 'stat' na menu" -#: ../src/rootmenu.c:688 +#: ../src/rootmenu.c:692 #, c-format msgid "%s:could not stat menu:%s" msgstr "%s:nelze provést operaci 'stat' na menu:%s" -#: ../src/rootmenu.c:706 +#: ../src/rootmenu.c:710 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "pøíli¹ mnoho parametrù pro pøíkaz OPEN_MENU: %s" -#: ../src/rootmenu.c:742 +#: ../src/rootmenu.c:746 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." @@ -825,137 +841,137 @@ msgstr "" "V aplikaèním menu je více ne¾ jeden pøíkaz WORKSPACE_MENU. Je povolen jen " "jeden." -#: ../src/rootmenu.c:771 ../src/rootmenu.c:789 +#: ../src/rootmenu.c:775 ../src/rootmenu.c:793 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:pro pøíkaz menu \"%s\" oèekávám parametr" -#: ../src/rootmenu.c:852 +#: ../src/rootmenu.c:856 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:neznámý pøíkaz \"%s\" v konfiguraci menu." -#: ../src/rootmenu.c:860 +#: ../src/rootmenu.c:864 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" msgstr "%s: pro polo¾ku \"%s\" nelze pøidat klávesou zkratku" -#: ../src/rootmenu.c:997 +#: ../src/rootmenu.c:1001 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:v konfiguraci menu %s byla pøekroèena maximální délka øádky" -#: ../src/rootmenu.c:1019 ../src/rootmenu.c:1111 ../src/rootmenu.c:1212 +#: ../src/rootmenu.c:1023 ../src/rootmenu.c:1115 ../src/rootmenu.c:1216 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:v konfiguraci menu %s oèekávám pøíkaz" -#: ../src/rootmenu.c:1049 +#: ../src/rootmenu.c:1053 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:syntaktická chyba v souboru s menu: oèekávána deklarace END" -#: ../src/rootmenu.c:1078 ../src/rootmenu.c:1177 +#: ../src/rootmenu.c:1082 ../src/rootmenu.c:1181 msgid "could not make arguments for menu file preprocessor" msgstr "nelze vytvoøit argumety pro preprocesor souboru s menu" -#: ../src/rootmenu.c:1084 ../src/rootmenu.c:1184 +#: ../src/rootmenu.c:1088 ../src/rootmenu.c:1188 #, c-format msgid "%s:could not open/preprocess menu file" msgstr "%s: nelze otevøít nebo pøedzpracovat soubor s menu" -#: ../src/rootmenu.c:1096 ../src/rootmenu.c:1197 +#: ../src/rootmenu.c:1100 ../src/rootmenu.c:1201 #, c-format msgid "%s:could not open menu file" msgstr "%s:nelze otevøít soubor s menu" -#: ../src/rootmenu.c:1123 +#: ../src/rootmenu.c:1127 #, c-format msgid "%s:invalid menu file. MENU command is missing" msgstr "%s:syntaktická chyba v souboru s menu: oèekáván pøíkaz MENU" -#: ../src/rootmenu.c:1132 +#: ../src/rootmenu.c:1136 msgid "error reading preprocessed menu data" msgstr "chyba pøi ètení pøedzpracovaného souboru s menu" -#: ../src/rootmenu.c:1224 +#: ../src/rootmenu.c:1228 #, c-format msgid "%s:no title given for the root menu" msgstr "%s: pro hlavní menu nebyl urèen titulek" -#: ../src/rootmenu.c:1307 ../src/rootmenu.c:1374 ../src/rootmenu.c:1418 +#: ../src/rootmenu.c:1311 ../src/rootmenu.c:1378 ../src/rootmenu.c:1422 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "nedostatek pamìti pøi konstrukci menu z obsahu adresáøe %s" -#: ../src/rootmenu.c:1317 +#: ../src/rootmenu.c:1321 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:nelze provést 'stat' na soubory \"%s\" v adresáøi s menu" -#: ../src/rootmenu.c:1472 +#: ../src/rootmenu.c:1476 msgid "Commands" msgstr "Pøíkazy" -#: ../src/rootmenu.c:1475 +#: ../src/rootmenu.c:1479 msgid "Restart" msgstr "Restart" -#: ../src/rootmenu.c:1476 +#: ../src/rootmenu.c:1480 msgid "Exit..." msgstr "Konec..." -#: ../src/rootmenu.c:1549 +#: ../src/rootmenu.c:1553 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "nelze najít soubor s menu \"%s\", odkazovaný z WMRootMenu" -#: ../src/rootmenu.c:1556 +#: ../src/rootmenu.c:1560 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "není pøístup k souboru s menu \"%s\", odkazovaném z WMRootMenu" -#: ../src/rootmenu.c:1567 +#: ../src/rootmenu.c:1571 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " "not be found " msgstr "pou¾itý soubor s menu \"%s\", odkazovaný z WMRootMenu není nalezen " -#: ../src/rootmenu.c:1590 ../src/rootmenu.c:1666 +#: ../src/rootmenu.c:1594 ../src/rootmenu.c:1670 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:chybný formát v konfiguraci hlavního menu \"%s\"" -#: ../src/screen.c:423 +#: ../src/screen.c:428 msgid "could not load logo image for panels" msgstr "pro panely nelze naèíst logo" -#: ../src/screen.c:426 +#: ../src/screen.c:431 #, c-format msgid "error making logo image for panel:%s" msgstr "chyba pøi vytváøení obrázku s logem pro panel:%s" -#: ../src/screen.c:612 +#: ../src/screen.c:695 #, c-format msgid "could not initialize graphics library context: %s" msgstr "nelze inicializovat kontext grafické knihovny: %s" -#: ../src/screen.c:644 +#: ../src/screen.c:727 msgid "could not do initialization of WINGs widget set" msgstr "nelze provést inicalizovat pøípravky WINGs" -#: ../src/screen.c:961 +#: ../src/screen.c:1059 #, c-format msgid "could not save session state in %s" msgstr "stav sezení nelze do %s ulo¾it" -#: ../src/session.c:138 ../src/wdefaults.c:559 ../src/winspector.c:347 +#: ../src/session.c:182 ../src/wdefaults.c:559 ../src/winspector.c:345 #, c-format msgid "can't convert \"%s\" to boolean" msgstr "\"%s\" nelze zkonvertovat na boolean" -#: ../src/session.c:750 ../src/session.c:844 +#: ../src/session.c:875 ../src/session.c:969 msgid "end of memory while saving session state" msgstr "nedostatek pamìti pøi ukládání stavu sezení" @@ -965,77 +981,84 @@ msgstr "nedostatek pam #. * If the sm was the last client of session, then we'll die #. * anyway, otherwise we can continue doing our stuff. #. -#: ../src/session.c:978 +#: ../src/session.c:1103 msgid "connection to the session manager was lost" -msgstr "pøipojení ke správci sezení se ztratilo" +msgstr "pøipojení ke správci sezení bylo ztraceno" #: ../src/stacking.c:72 msgid "could not get window list!!" msgstr "nelze získat seznam oken!!!" -#: ../src/startup.c:194 +#: ../src/startup.c:195 #, c-format msgid "internal X error: %s\n" msgstr "interní chyba systému X: %s\n" -#: ../src/startup.c:257 +#: ../src/startup.c:258 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "pøijat signál %i (%s) - restartuji\n" -#: ../src/startup.c:259 +#: ../src/startup.c:260 #, c-format msgid "got signal %i - restarting\n" msgstr "pøijat signál %i - restartuji\n" -#: ../src/startup.c:273 +#: ../src/startup.c:275 #, c-format -msgid "%s: Received signal SIGTERM. Exiting..." -msgstr "%s: Pøijat signál SIGTERM. Konèím..." +msgid "got signal %i (%s) - exiting...\n" +msgstr "pøijat signál %i (%s) - konec...\n" -#: ../src/startup.c:285 +#: ../src/startup.c:277 +#, c-format +msgid "got signal %i - exiting...\n" +msgstr "pøijat signál %i - konec...\n" + +#: ../src/startup.c:290 #, c-format msgid "got signal %i (%s)\n" msgstr "pøijat signál %i (%s)\n" -#: ../src/startup.c:287 +#: ../src/startup.c:292 #, c-format msgid "got signal %i\n" msgstr "získán signál %i\n" -#: ../src/startup.c:293 +#: ../src/startup.c:298 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "pøi úklidu po neoèekávané chybe do¹lo opìt k této chybì. Okam¾itý konec." -#: ../src/startup.c:304 +#: ../src/startup.c:309 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." -msgstr "fatální chyba, pravdìpodobnì chyba ve Window Makeru. Prosím vyplòte soubor BUGFORM(anglicky) a po¹lete ho." +msgstr "" +"fatální chyba, pravdìpodobnì chyba ve Window Makeru. Prosím vyplòte soubor " +"BUGFORM(anglicky) a po¹lete ho." #. restart another window manager so that the X session doesn't #. * go to space -#: ../src/startup.c:311 +#: ../src/startup.c:316 msgid "trying to start alternative window manager..." msgstr "zkou¹ím odstartovat jiný okenní mana¾er" -#: ../src/startup.c:710 +#: ../src/startup.c:719 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "je nakonfigurována velikost ikony %i, to je ov¹em málo. Pou¾iji 16\n" -#: ../src/startup.c:754 +#: ../src/startup.c:763 msgid "it seems that there already is a window manager running" msgstr "mám ten pocit, ¾e zde ji¾ jeden mana¾er oken bì¾í" -#: ../src/startup.c:760 +#: ../src/startup.c:769 #, c-format msgid "could not manage screen %i" msgstr "nelze pøipojit obrazovku %i" -#: ../src/startup.c:820 +#: ../src/startup.c:829 msgid "could not manage any screen" msgstr "nelze pøipojit ¾ádnou obrazovku" @@ -1063,7 +1086,7 @@ msgstr "nelze vykreslit texturu: %s" msgid "could not find icon file \"%s\"" msgstr "nelze získat soubor s ikonou \"%s\"" -#: ../src/window.c:2305 ../src/window.c:2437 +#: ../src/window.c:2400 ../src/window.c:2532 msgid "" "the NumLock, ScrollLock or similar key seems to be turned on.\n" "Turn it off or some mouse actions and keyboard shortcuts will not work." @@ -1110,11 +1133,11 @@ msgstr "Zv #: ../src/winmenu.c:457 msgid "Select" -msgstr "Vyber" +msgstr "Vybrat" #: ../src/winmenu.c:465 msgid "Move To" -msgstr "Pøesuò na" +msgstr "Pøesunout na" #: ../src/winmenu.c:470 msgid "Attributes..." @@ -1136,27 +1159,27 @@ msgstr "Demaximalizace" msgid "Unshade" msgstr "Celé okno" -#: ../src/winspector.c:281 +#: ../src/winspector.c:279 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "Pro toto okno nelze najít specifikovanou ikonu (%s)" -#: ../src/winspector.c:297 +#: ../src/winspector.c:295 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "Nelze otevøít pecifikovanou ikonu \"%s\":%s" #: ../src/winspector.c:1016 msgid "Save" -msgstr "Ulo¾" +msgstr "Ulo¾it" #: ../src/winspector.c:1024 msgid "Apply" -msgstr "Nastav" +msgstr "Nastavit" #: ../src/winspector.c:1030 msgid "Reload" -msgstr "Znovu naèíst" +msgstr "Obnovit" #: ../src/winspector.c:1039 ../src/winspector.c:1049 msgid "Window Specification" @@ -1198,7 +1221,7 @@ msgstr "Atributy" #: ../src/winspector.c:1117 msgid "Disable titlebar" -msgstr "Zaka¾ titulek" +msgstr "Zakázat titulek" #: ../src/winspector.c:1121 msgid "Disable resizebar" @@ -1206,18 +1229,17 @@ msgstr "Nelze zv #: ../src/winspector.c:1125 msgid "Disable close button" -msgstr "Zaka¾ prvek pro uzavøení" +msgstr "Zakázat prvek pro uzavøení" #: ../src/winspector.c:1129 msgid "Disable miniaturize button" -msgstr "Zaka¾ minimalizaci" +msgstr "Zakázat minimalizaci" #: ../src/winspector.c:1133 msgid "Keep on top / floating" msgstr "V¾dy navrch / plovoucí" #: ../src/winspector.c:1137 -#, fuzzy msgid "Keep at bottom / sunken" msgstr "Dr¾et vespod" @@ -1239,7 +1261,7 @@ msgstr "Dal #: ../src/winspector.c:1177 msgid "Ignore HideOthers" -msgstr "Ignoruj \"Skryj Ostatní\"" +msgstr "Ignorovat \"Skrýt Ostatní\"" #: ../src/winspector.c:1181 msgid "Don't bind keyboard shortcuts" @@ -1255,7 +1277,7 @@ msgstr "V #: ../src/winspector.c:1193 msgid "Don't let it take focus" -msgstr "Nepovol zamìøení" +msgstr "Nepovolit zamìøení" #: ../src/winspector.c:1197 msgid "Don't Save Session" @@ -1275,11 +1297,11 @@ msgstr "" #: ../src/winspector.c:1223 msgid "Miniwindow Image" -msgstr "Ikona" +msgstr "Ikona miniokna" #: ../src/winspector.c:1242 msgid "Update" -msgstr "Zapi¹" +msgstr "Nastavit" #: ../src/winspector.c:1257 msgid "Icon file name:" @@ -1287,7 +1309,7 @@ msgstr "Soubor ikony:" #: ../src/winspector.c:1269 msgid "Ignore client supplied icon" -msgstr "Ignoruj klientovy ikony" +msgstr "Ignorovat klientovy ikony" #: ../src/winspector.c:1276 msgid "Initial Workspace" @@ -1295,7 +1317,7 @@ msgstr "Po #: ../src/winspector.c:1281 msgid "Nowhere in particular" -msgstr "Nikde neurèeno" +msgstr "Neurèena" #: ../src/winspector.c:1315 msgid "Application Wide" @@ -1303,32 +1325,32 @@ msgstr "Atributy aplikace" #: ../src/winspector.c:1325 msgid "Start Hidden" -msgstr "Startuj skrytì" +msgstr "Startovat skrytì" #: ../src/winspector.c:1329 msgid "No application icon" msgstr "Bez aplikaèní ikony" -#: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:512 +#: ../src/workspace.c:107 ../src/workspace.c:108 ../src/workspace.c:516 #, c-format msgid "Workspace %i" msgstr "Plocha %i" -#: ../src/workspace.c:569 +#: ../src/workspace.c:573 msgid "Workspaces" msgstr "Pracovní plochy" -#: ../src/workspace.c:571 +#: ../src/workspace.c:575 msgid "could not create Workspace menu" msgstr "nelze vytvoøit menu pracovních ploch" -#: ../src/workspace.c:578 +#: ../src/workspace.c:582 msgid "New" msgstr "Nová" -#: ../src/workspace.c:579 +#: ../src/workspace.c:583 msgid "Destroy Last" -msgstr "Zru¹ poslední" +msgstr "Zru¹it poslední" #: ../src/xutil.c:228 msgid "invalid data in selection" diff --git a/po/ko.po b/po/ko.po index 6650276b..10731eb8 100644 --- a/po/ko.po +++ b/po/ko.po @@ -1,1334 +1,1341 @@ -# Window Maker po file for korean. -# Copyright (C) 1998 Free Software Foundation, Inc. -# Byeong-Chan Kim <redhands@linux.sarang.net>, 1998. -# Update: CHOI Junho <cjh@kr.freebsd.org>, 1998/12. -# -msgid "" -msgstr "" -"Project-Id-Version: 0.50.2\n" -"POT-Creation-Date: 1999-01-11 06:02+0900\n" -"PO-Revision-Date: 1999-01-10 06:47+0900\n" -"Last-Translator: Byeong-Chan Kim <redhands@linux.sarang.net>\n" -"Language-Team: Korean\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=EUC-KR\n" -"Content-Transfer-Encoding: 8-bit\n" - -#: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 -#: ../src/dock.c:3059 ../src/dockedapp.c:206 ../src/winspector.c:283 -#: ../src/winspector.c:299 -msgid "Error" -msgstr "¿À·ù" - -#: ../src/appicon.c:510 -msgid "Could not open specified icon file" -msgstr "ÁöÁ¤ÇÑ ¾ÆÀÌÄÜÀ» ¿­Áö ¸øÇÔ." - -#: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 -#: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 -#: ../src/dock.c:3060 ../src/dockedapp.c:206 ../src/dockedapp.c:350 -#: ../src/winspector.c:284 ../src/winspector.c:300 -msgid "OK" -msgstr "È®ÀÎ" - -#: ../src/appicon.c:532 ../src/dock.c:272 ../src/winmenu.c:123 -msgid "Kill Application" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç Á¾·á" - -#: ../src/appicon.c:533 ../src/dock.c:273 ../src/winmenu.c:124 -msgid "" -"This will kill the application.\n" -"Any unsaved changes will be lost.\n" -"Please confirm." -msgstr "" -"¾ÖÇø®ÄÉÀ̼ÇÀ» °­Á¦ Á¾·áÇÕ´Ï´Ù.\n" -"ÀúÀåÇÏÁö ¾ÊÀº º¯°æ »çÇ×Àº ÀÒ°Ô µË´Ï´Ù.\n" -"°è¼Ó ÇϽðڽÀ´Ï±î?" - -#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 -msgid "Yes" -msgstr "¿¹" - -#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 -msgid "No" -msgstr "¾Æ´Ï¿À" - -#: ../src/appicon.c:548 ../src/dock.c:1065 -msgid "Unhide Here" -msgstr "¼û±ä °Í À̰÷¿¡ º¸ÀÓ" - -#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/winmenu.c:441 -msgid "Hide" -msgstr "¼û±è" - -#: ../src/appicon.c:550 -msgid "Set Icon..." -msgstr "¾ÆÀÌÄÜ ÁöÁ¤..." - -#: ../src/appicon.c:551 ../src/dock.c:1071 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 ../src/winmenu.c:488 -msgid "Kill" -msgstr "Á¾·á" - -#: ../src/appicon.c:572 -msgid "Unhide" -msgstr "(¾È)¼û±è" - -#: ../src/defaults.c:735 ../src/startup.c:700 ../src/startup.c:718 -#: ../src/startup.c:724 -#, c-format -msgid "could not read domain \"%s\" from defaults database" -msgstr "±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ \"%s\"¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/defaults.c:781 ../src/defaults.c:905 ../src/defaults.c:944 -#: ../src/defaults.c:974 -#, c-format -msgid "Domain %s (%s) of defaults database is corrupted!" -msgstr "±âº» µ¥ÀÌÅͺ£À̽ºÀÇ µµ¸ÞÀÎ %s (%s)ÀÌ ±úÁ³½À´Ï´Ù!" - -#: ../src/defaults.c:786 ../src/defaults.c:926 ../src/defaults.c:957 -#: ../src/defaults.c:983 -#, c-format -msgid "could not load domain %s from user defaults database" -msgstr "»ç¿ëÀÚ ±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ %s¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/defaults.c:797 ../src/defaults.c:890 -#, c-format -msgid "Domain %s (%s) of global defaults database is corrupted!" -msgstr "Àü¿ª ±âº» µ¥ÀÌÅͺ£À̽ºÀÇ µµ¸ÞÀÎ %s (%s)´Â ±úÁ³½À´Ï´Ù!" - -#: ../src/defaults.c:816 ../src/defaults.c:895 -#, c-format -msgid "could not load domain %s from global defaults database" -msgstr "Àü¿ª ±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ %s¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/defaults.c:1266 -#, c-format -msgid "wrong option value for key \"%s\". Should be one of %s" -msgstr "Ű \"%s\"ÀÇ ¿É¼Ç Æ÷¸ËÀÌ À߸øµÊ. %sÁß ÇϳªÀ̾î¾ß ÇÕ´Ï´Ù" - -#: ../src/defaults.c:1313 -#, c-format -msgid "can't convert \"%s\" to boolean for key \"%s\"" -msgstr "\"%s\"¸¦ Ű \"%s\"¿¡ ´ëÇØ ºÎ¿ï °ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù" - -#: ../src/defaults.c:1318 ../src/defaults.c:1352 ../src/defaults.c:1384 -#: ../src/defaults.c:1397 ../src/defaults.c:1412 ../src/defaults.c:1426 -#: ../src/defaults.c:1498 ../src/defaults.c:1510 ../src/defaults.c:1858 -#: ../src/defaults.c:1875 ../src/defaults.c:1888 ../src/defaults.c:1921 -#: ../src/defaults.c:1940 ../src/defaults.c:1971 ../src/defaults.c:2048 -#, c-format -msgid "using default \"%s\" instead" -msgstr "±âº»°ªÀÎ \"%s\" ¸¦ ´ë½Å »ç¿ëÇÔ" - -#: ../src/defaults.c:1349 -#, c-format -msgid "can't convert \"%s\" to integer for key \"%s\"" -msgstr "\"%s\"¸¦ Ű \"%s\"¿¡ ´ëÇØ Á¤¼ö°ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù" - -#: ../src/defaults.c:1379 ../src/defaults.c:1493 ../src/defaults.c:1853 -#: ../src/defaults.c:1870 ../src/defaults.c:1916 ../src/defaults.c:1966 -#: ../src/wdefaults.c:541 ../src/wdefaults.c:577 -#, c-format -msgid "Wrong option format for key \"%s\". Should be %s." -msgstr "\"%s\" ŰÀÇ ¿É¼Ç Æ÷¸ËÀÌ À߸øµÊ. %s À̾î¾ß ÇÕ´Ï´Ù." - -#: ../src/defaults.c:1392 -#, c-format -msgid "Incorrect number of elements in array for key \"%s\"." -msgstr "Ű \"%s\"¿¡ ´ëÇÑ ¹è¿­ÀÇ ¿ø¼Ò ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù." - -#: ../src/defaults.c:1407 -#, c-format -msgid "Wrong value for key \"%s\". Should be Coordinate." -msgstr "\"%s\" Ű °ªÀÌ À߸øµÊ. ÁÂÇ¥°¡ µÇ¾î¾ß ÇÕ´Ï´Ù." - -#: ../src/defaults.c:1422 -#, c-format -msgid "can't convert array to integers for \"%s\"." -msgstr "\"%s\"¿¡ ´ëÇØ ¹è¿­À» Á¤¼ö°ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾øÀ½." - -#: ../src/defaults.c:1619 ../src/defaults.c:1651 ../src/defaults.c:1667 -#: ../src/defaults.c:1713 ../src/defaults.c:1753 ../src/defaults.c:1791 -#: ../src/defaults.c:1807 -#, c-format -msgid "\"%s\" is not a valid color name" -msgstr "\"%s\" ´Â ¿Ã¹Ù¸¥ »ö»ó¸íÀÌ ¾Æ´Ô" - -#: ../src/defaults.c:1632 -msgid "bad number of arguments in gradient specification" -msgstr "±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù" - -#: ../src/defaults.c:1686 -msgid "too few arguments in multicolor gradient specification" -msgstr "´ÙÁß»ö ±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ ³Ê¹« Àû½À´Ï´Ù" - -#: ../src/defaults.c:1780 -msgid "bad number of arguments in textured gradient specification" -msgstr "±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù" - -#: ../src/defaults.c:1823 -#, c-format -msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" -msgstr "tgradient ÅØ½ºÃ³ \"%s\"¿¡ ¸ðÈ£ÇÑ °ªÀÌ ÀÖ½À´Ï´Ù. [0..255]¿©¾ß ÇÕ´Ï´Ù." - -#: ../src/defaults.c:1836 -#, c-format -msgid "invalid texture type %s" -msgstr "À߸øµÈ ÅØ½ºÃ³ À¯Çü %s" - -#: ../src/defaults.c:1883 -#, c-format -msgid "Error in texture specification for key \"%s\"" -msgstr "Ű \"%s\"ÀÇ ÅØ½ºÃ³ ÁöÁ¤¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù" - -#: ../src/defaults.c:1936 -msgid "Wrong type for workspace background. Should be a texture type." -msgstr "ÀÛ¾÷°ø°£ ¹è°æ Á¾·ù°¡ À߸øµÇ¾ú½À´Ï´Ù. ÅØ½ºÃ³¿©¾ß ÇÕ´Ï´Ù." - -#: ../src/defaults.c:1989 -#, c-format -msgid "Wrong type for background of workspace %i. Should be a texture." -msgstr "ÀÛ¾÷°ø°£ ¹è°æ Á¾·ù°¡ À߸øµÇ¾ú½À´Ï´Ù. ÅØ½ºÃ³¿©¾ß ÇÕ´Ï´Ù." - -#: ../src/defaults.c:2013 -msgid "could not load any usable font!!!" -msgstr "»ç¿ë °¡´ÉÇÑ ±Û²ÃÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù!!!" - -#: ../src/defaults.c:2043 -#, c-format -msgid "could not get color for key \"%s\"" -msgstr "Ű \"%s\"ÀÇ »öÀ» ¾òÀ» ¼ö ¾øÀ½" - -#: ../src/defaults.c:2102 ../src/rootmenu.c:450 -#, c-format -msgid "%s:invalid key modifier \"%s\"" -msgstr "%s:À߸øµÈ Ű ¼öÁ¤ÀÚ \"%s\"" - -#: ../src/defaults.c:2114 -#, c-format -msgid "%s:invalid kbd shortcut specification \"%s\"" -msgstr "%s:À߸øµÈ Űº¸µå ´ÜÃàŰ ÁöÁ¤ \"%s\"" - -#: ../src/defaults.c:2121 -#, c-format -msgid "%s:invalid key in shortcut \"%s\"" -msgstr "%s:»¡¸®°¡±â \"%s\"¿¡ À߸øµÈ Ű" - -#: ../src/defaults.c:2147 -#, c-format -msgid "%s: modifier key %s is not valid" -msgstr "%s: À߸øµÈ ¼öÁ¤ÀÚ Å° %s" - -#: ../src/defaults.c:2223 -msgid "could not render texture for icon background" -msgstr "¾ÆÀÌÄÜ ¹è°æÀÇ ÅØ½ºÃ³¸¦ ±×¸± ¼ö ¾ø½À´Ï´Ù" - -#: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 -#: ../src/dockedapp.c:356 ../src/rootmenu.c:187 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 -msgid "Cancel" -msgstr "Ãë¼Ò" - -#: ../src/dialog.c:211 -msgid "Could not open directory " -msgstr "µð·ºÅ丮¸¦ ¿­ ¼ö ¾øÀ½ " - -#: ../src/dialog.c:267 -msgid "Could not load image file " -msgstr "À̹ÌÁö ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾øÀ½ " - -#: ../src/dialog.c:404 -msgid "Directories" -msgstr "µð·ºÅ丮" - -#: ../src/dialog.c:413 -msgid "Icons" -msgstr "¾ÆÀÌÄÜ" - -#: ../src/dialog.c:450 -msgid "File Name:" -msgstr "ÆÄÀϸí:" - -#: ../src/dialog.c:473 -msgid "Choose File" -msgstr "ÆÄÀÏ ¼±ÅÃ" - -#: ../src/dialog.c:483 -msgid "Icon Chooser" -msgstr "¾ÆÀÌÄÜ ¼±Åñâ" - -#: ../src/dock.c:213 -#, c-format -msgid "Type the name for workspace %i:" -msgstr "ÀÛ¾÷°ø°£ %i ÀÇ À̸§À» ÀÔ·ÂÇϼ¼¿ä:" - -#: ../src/dock.c:214 ../src/dock.c:1044 -msgid "Rename Workspace" -msgstr "ÀÛ¾÷°ø°£ À̸§ ¹Ù²Þ" - -#: ../src/dock.c:422 -msgid "Workspace Clip" -msgstr "ÀÛ¾÷°ø°£ Ŭ¸³" - -#: ../src/dock.c:423 -msgid "All selected icons will be removed!" -msgstr "¼±ÅÃÇÑ ¸ðµç ¾ÆÀÌÄÜÀÌ ¾ø¾îÁú °ÍÀÔ´Ï´Ù!!" - -#: ../src/dock.c:470 -msgid "Keep Icon" -msgstr "¾ÆÀÌÄÜ À¯Áö" - -#: ../src/dock.c:471 ../src/dock.c:1977 ../src/dock.c:2106 -msgid "Type the command used to launch the application" -msgstr "¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇØ´Âµ¥ ÇÊ¿äÇÑ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù" - -#: ../src/dock.c:857 -#, c-format -msgid "could not launch application %s\n" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç %sÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù\n" - -#: ../src/dock.c:912 -msgid "could not create workspace submenu for Clip menu" -msgstr "Ŭ¸³ ¸Þ´º¸¦ À§ÇÑ ÀÛ¾÷°ø°£ ÇϺθ޴º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" - -#: ../src/dock.c:975 -msgid "could not create options submenu for Clip menu" -msgstr "Ŭ¸³ ¸Þ´º¸¦ À§ÇÑ ¿É¼Ç ÇϺθ޴º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" - -#: ../src/dock.c:979 ../src/dock.c:1033 ../src/winmenu.c:383 -msgid "Keep on top" -msgstr "Ç×»ó À§·Î" - -#: ../src/dock.c:985 -msgid "Collapsed" -msgstr "¾ÆÀÌÄÜ ¼û±è" - -#: ../src/dock.c:991 -msgid "AutoCollapse" -msgstr "ÀÚµ¿ ¼û±è" - -#: ../src/dock.c:997 -msgid "AutoRaiseLower" -msgstr "ÀÚµ¿ ¿Ã¸²/³»¸²" - -#: ../src/dock.c:1003 -msgid "AutoAttract Icons" -msgstr "¾ÆÀÌÄÜ ÀÚµ¿ ¸ðÀ½" - -#: ../src/dock.c:1009 -msgid "Keep Attracted Icons" -msgstr "¸ðÀº ¾ÆÀÌÄÜ À¯Áö" - -#: ../src/dock.c:1039 -msgid "Clip Options" -msgstr "Ŭ¸³ ¿É¼Ç" - -#: ../src/dock.c:1046 -msgid "(Un)Select Icon" -msgstr "¾ÆÀÌÄÜ (¾È)¼±ÅÃ" - -#: ../src/dock.c:1048 -msgid "(Un)Select All Icons" -msgstr "¸ðµç ¾ÆÀÌÄÜ (¾È)¼±ÅÃ" - -#: ../src/dock.c:1051 -msgid "Keep Icon(s)" -msgstr "¾ÆÀÌÄÜ À¯Áö" - -#: ../src/dock.c:1053 -msgid "Move Icon(s) To" -msgstr "¾ÆÀÌÄÜ ¿Å±è :" - -#: ../src/dock.c:1058 -msgid "Remove Icon(s)" -msgstr "¾ÆÀÌÄÜ ¾ø¾Ú" - -#: ../src/dock.c:1060 -msgid "Attract Icons" -msgstr "¾ÆÀÌÄÜ ¸ðÀ½" - -#: ../src/dock.c:1063 -msgid "Launch" -msgstr "½ÇÇà" - -#: ../src/dock.c:1067 -msgid "(Un)Hide" -msgstr "(¾È)¼û±è" - -#: ../src/dock.c:1069 -msgid "Settings..." -msgstr "¼³Á¤..." - -#: ../src/dock.c:1454 ../src/dock.c:1468 ../src/dock.c:1482 ../src/dock.c:1492 -#, c-format -msgid "bad value in docked icon state info %s" -msgstr "Dock ¾ÆÀÌÄÜÀÇ »óÅÂÁ¤º¸¿¡ À߸øµÈ °ª %s" - -#: ../src/dock.c:1500 -#, c-format -msgid "bad value in docked icon position %i,%i" -msgstr "Dock ¾ÆÀÌÄÜÀÇ À§Ä¡°ª %i,%i ´Â À߸øµÈ °ª" - -#: ../src/dock.c:1744 -msgid "there are too many icons stored in dock. Ignoring what doesn't fit" -msgstr "Dock ¿¡ µé¾î°£ ¾ÆÀÌÄÜÀÌ ³Ê¹« ¸¹À½. ¸ÂÁö ¾Ê´Â °ÍÀº ¹«½ÃÇÕ´Ï´Ù" - -#. icon->forced_dock = 1; -#: ../src/dock.c:1976 ../src/dock.c:2105 -msgid "Dock Icon" -msgstr "Dock ¾ÆÀÌÄÜ" - -#: ../src/dock.c:3052 ../src/dock.c:3056 -#, c-format -msgid "Could not execute command \"%s\"" -msgstr "\"%s\" ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ¾øÀ½." - -#: ../src/dockedapp.c:128 -#, c-format -msgid "could not find icon %s, used in a docked application" -msgstr "µµÅ·µÈ ¾ÖÇø®ÄÉÀ̼ǿ¡ »ç¿ëÇÒ ¾ÆÀÌÄÜ %sÀ» ãÀ» ¼ö ¾øÀ½" - -#: ../src/dockedapp.c:205 -#, c-format -msgid "Could not open specified icon file:%s" -msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½:%s" - -#: ../src/dockedapp.c:291 -msgid "Start when WindowMaker is started" -msgstr "Window Maker¸¦ ½ÇÇàÇÒ¶§ ½ÃÀÛÇÔ" - -#: ../src/dockedapp.c:298 -msgid "Application path and arguments" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç °æ·Î¿Í Àμö" - -#: ../src/dockedapp.c:309 -msgid "Command for files dropped with DND" -msgstr "µå·¢¿£µå·ÓÀ¸·Î ½ÇÇàÇÒ ¸í·É¾î" - -#: ../src/dockedapp.c:321 -#, c-format -msgid "%d will be replaced with the file name" -msgstr "%d´Â ÆÄÀÏ À̸§À¸·Î ´ëüÇÕ´Ï´Ù" - -#: ../src/dockedapp.c:325 -msgid "DND support was not compiled in" -msgstr "ÄÄÆÄÀϽà DND Áö¿øÀÌ Æ÷ÇÔµÇÁö ¾Ê¾Ò½À´Ï´Ù" - -#: ../src/dockedapp.c:331 -msgid "Icon Image" -msgstr "¾ÆÀÌÄÜ À̹ÌÁö" - -#: ../src/dockedapp.c:343 ../src/winspector.c:1235 -msgid "Browse..." -msgstr "ã±â..." - -#: ../src/dockedapp.c:388 -msgid "Docked Application Settings" -msgstr "Dock ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤" - -#: ../src/event.c:350 -msgid "stack overflow: too many dead processes" -msgstr "½ºÅà ¿À¹öÇ÷οì: Á×Àº ÇÁ·Î¼¼½º°¡ ³Ê¹« ¸¹À½" - -#: ../src/framewin.c:485 -#, c-format -msgid "could not render gradient: %s" -msgstr "±×·¡µð¾ðÆ®¸¦ Ç¥ÇöÇÏÁö ¸øÇÔ: %s" - -#: ../src/framewin.c:501 ../src/framewin.c:516 ../src/framewin.c:527 -#: ../src/framewin.c:534 ../src/framewin.c:541 ../src/icon.c:296 -#: ../src/texture.c:578 -#, c-format -msgid "error rendering image:%s" -msgstr "À̹ÌÁö ·»´õ¸µ ¿¡·¯:%s" - -#: ../src/icon.c:182 ../src/wdefaults.c:411 -#, c-format -msgid "error loading image file \"%s\"" -msgstr "À̹ÌÁö ÆÄÀÏ \"%s\"¸¦ Àд Áß ¿¡·¯" - -#: ../src/icon.c:430 ../src/icon.c:439 -#, c-format -msgid "could not create directory %s" -msgstr "µð·ºÅ丮 %s¸¦ ¸¸µé ¼ö ¾øÀ½" - -#: ../src/icon.c:706 -#, c-format -msgid "could not find default icon \"%s\"" -msgstr "±âº» ¾ÆÀÌÄÜ \"%s\"¸¦ ãÁö ¸øÇÔ" - -#: ../src/icon.c:712 -#, c-format -msgid "could not load default icon \"%s\":%s" -msgstr "±âº» ¾ÆÀÌÄÜ \"%s\"¸¦ ÀÐÁö ¸øÇÔ:%s" - -#: ../src/main.c:194 -msgid "could not exec window manager" -msgstr "â °ü¸®ÀÚ¸¦ ½ÇÇàÇÒ ¼ö ¾øÀ½" - -#: ../src/main.c:195 -msgid "Restart failed!!!" -msgstr "Àç½ÃÀÛ ½ÇÆÐ!!!" - -#: ../src/main.c:242 -#, c-format -msgid "%s aborted.\n" -msgstr "%s´Â ÁߴܵǾú½À´Ï´Ù.\n" - -#: ../src/main.c:253 -#, c-format -msgid "usage: %s [-options]\n" -msgstr "»ç¿ë¹ý: %s [-¿É¼Ç]\n" - -#: ../src/main.c:254 -msgid "options:" -msgstr "¿É¼Ç:" - -#: ../src/main.c:256 -msgid " -nocpp \t\tdisable preprocessing of configuration files" -msgstr " -nocpp \t\t¼³Á¤ÆÄÀÏÀÇ Àü󸮸¦ ÇÏÁö ¾ÊÀ½" - -#: ../src/main.c:258 -msgid " -nodock\t\tdo not open the application Dock" -msgstr " -nodock\t\t¾ÖÇø®ÄÉÀÌ¼Ç DockÀ» ¿­Áö ¾ÊÀ½" - -#: ../src/main.c:259 -msgid " -noclip\t\tdo not open the workspace Clip" -msgstr "-noclip\t\tÀÛ¾÷°ø°£ Ŭ¸³À» ¿­Áö ¾ÊÀ½" - -#. -#. puts(_(" -locale locale locale to use")); -#. -#: ../src/main.c:263 -msgid " -visualid visualid\tvisual id of visual to use" -msgstr "-visualid ºñÁÖ¾óID\t»ç¿ëÇÒ ºñÁÖ¾óÀÇ ºñÁÖ¾ó ID" - -#: ../src/main.c:264 -msgid " -display host:dpy\tdisplay to use" -msgstr " -display È£½ºÆ®:µð½ºÇ÷¹ÀÌ\t»ç¿ëÇÒ µð½ºÇ÷¹ÀÌ" - -#: ../src/main.c:265 -msgid " -static\t\tdo not update or save configurations" -msgstr " -static\t\t¼³Á¤À» °»½ÅÇϰųª ÀúÀåÇÏÁö ¾Ê´Â´Ù" - -#: ../src/main.c:266 -msgid " -version\t\tprint version and exit" -msgstr " -version\t\t¹öÀüÀ» Ç¥½ÃÇϰí Á¾·á" - -#: ../src/main.c:278 -#, c-format -msgid "" -"could not find user GNUstep directory (%s).\n" -"Make sure you have installed Window Maker correctly and run wmaker.inst" -msgstr "" -"»ç¿ëÀÚ GNUstep µð·ºÅ丮(%s)¸¦ ãÀ»¼ö ¾ø½À´Ï´Ù.\n" -"Window Maker°¡ Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö ´Ù½Ã È®ÀÎ ÈÄ wmaker.inst ¸¦ ½ÇÇàÇϽʽÿÀ" - -#: ../src/main.c:297 -#, c-format -msgid "%s:could not execute initialization script" -msgstr "%s:ÃʱâÈ­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." - -#: ../src/main.c:314 -#, c-format -msgid "%s:could not execute exit script" -msgstr "%s:Á¾·á ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." - -#: ../src/main.c:368 ../src/main.c:375 ../src/main.c:382 ../src/main.c:396 -#, c-format -msgid "too few arguments for %s" -msgstr "%s¸¦ À§ÇÑ ÀÎÀÚ°¡ ºÎÁ·ÇÕ´Ï´Ù" - -#: ../src/main.c:386 -#, c-format -msgid "bad value for visualid: \"%s\"" -msgstr "ºñÁÖ¾ó ID¿¡ À߸øµÈ °ª: \"%s\"" - -#: ../src/main.c:444 -msgid "X server does not support locale" -msgstr "X ¼­¹ö°¡ ·ÎÄÉÀÏÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù" - -#: ../src/main.c:447 -msgid "cannot set locale modifiers" -msgstr "·ÎÄÉÀÏ ¼öÁ¤ÀÚ(modifier)¸¦ ¼³Á¤ÇÒ ¼ö ¾øÀ½" - -#: ../src/main.c:464 -#, c-format -msgid "could not open display \"%s\"" -msgstr "\"%s\" µð½ºÇ÷¹À̸¦ ¿­Áö ¸øÇÔ." - -#: ../src/menu.c:285 -msgid "wrealloc() failed while trying to add menu item" -msgstr "¸Þ´º ¾ÆÀÌÅÛ Ãß°¡ ½ÃµµÁß wrealloc() ½ÇÆÐ" - -#: ../src/misc.c:71 -#, c-format -msgid "could not define value for %s for cpp" -msgstr "cppÀÇ %s¸¦ À§ÇÑ °ªÀÌ Á¤ÀǵÇÁö ¾ÊÀ½" - -#: ../src/misc.c:101 -#, c-format -msgid "could not get password entry for UID %i" -msgstr "UID %iÀÇ ¾ÏÈ£ Ç׸ñ¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/misc.c:125 -#, c-format -msgid "your machine is misconfigured. HOSTNAME is set to %s" -msgstr "½Ã½ºÅÛ ¼³Á¤ÀÌ À߸øµÇ¾ú½À´Ï´Ù. HOSTNAMEÀ» %s·Î ¼³Á¤ÇÕ´Ï´Ù" - -#: ../src/misc.c:131 -#, c-format -msgid "your machine is misconfigured. HOST is set to %s" -msgstr "½Ã½ºÅÛ ¼³Á¤ÀÌ À߸øµÇ¾ú½À´Ï´Ù. HOST¸¦ %s·Î ¼³Á¤ÇÕ´Ï´Ù" - -#: ../src/misc.c:773 -msgid "selection timed-out" -msgstr "¼±Åýð£ Ãʰú" - -#: ../src/misc.c:788 -msgid "Program Arguments" -msgstr "ÇÁ·Î±×·¥ Àμö" - -#: ../src/misc.c:789 -msgid "Enter command arguments:" -msgstr "¸í·É¾î Àμö¸¦ ÀÔ·ÂÇϼ¼¿ä:" - -#: ../src/misc.c:884 -msgid "unable to get dropped data from DND drop" -msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/misc.c:892 -msgid "error getting dropped data from DND drop" -msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾ò´Âµ¥ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù" - -#: ../src/misc.c:898 -msgid "out of memory while getting data from DND drop" -msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾ò´Âµ¥ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù" - -#: ../src/misc.c:942 ../src/misc.c:1062 -#, c-format -msgid "out of memory during expansion of \"%s\"" -msgstr "\"%s\" ÀÇ È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" - -#: ../src/misc.c:996 -msgid "out of memory during expansion of \"%w\"" -msgstr "\"%w\" ÀÇ È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" - -#: ../src/misc.c:1015 -msgid "out of memory during expansion of \"%a\"" -msgstr "\"%a\" ÀÇ È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" - -#: ../src/misc.c:1041 -#, c-format -msgid "out of memory during expansion of \"%d\"" -msgstr "\"%d\" ÀÇ È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" - -#: ../src/misc.c:1055 -msgid "selection not available" -msgstr "¼±Åà ºÒ°¡´É" - -#: ../src/misc.c:1127 ../src/misc.c:1133 -#, c-format -msgid "bad window name value in %s state info" -msgstr "»óÅ Á¤º¸ %sÀÇ Ã¢ À̸§ÀÌ À߸øµÊ" - -#: ../src/misc.c:1387 -msgid "could not send message to background image helper" -msgstr "¹è°æ À̹ÌÁö \"%s\" ¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/pixmap.c:235 -#, c-format -msgid "could not load mask bitmap file \"%s\". Won't use mask" -msgstr "ºñÆ®¸Ê ÆÄÀÏ \"%s\"¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¸¶½ºÅ©¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù" - -#: ../src/proplist.c:180 -msgid "unterminated string" -msgstr "Á¾·áÇÏÁö ¾ÊÀº ¹®ÀÚ¿­" - -#: ../src/proplist.c:247 -msgid "unterminated array" -msgstr "Á¾·áÇÏÁö ¾ÊÀº ¹®ÀÚ¿­" - -#: ../src/proplist.c:256 -msgid "missing , in array or unterminated array" -msgstr "¹è¿­¿¡¼­ ½°Ç¥°¡ ºüÁ³°Å³ª Á¾·áÇÏÁö ¾ÊÀº ¹è¿­" - -#: ../src/proplist.c:267 -msgid "could not get array element" -msgstr "¹è¿­ ¿ø¼Ò¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/proplist.c:297 -msgid "unterminated dictionary" -msgstr "Á¾·áÇÏÁö ¾ÊÀº »çÀü" - -#: ../src/proplist.c:315 -msgid "missing dictionary key" -msgstr "»çÀü Ű ¾øÀ½" - -#: ../src/proplist.c:317 -msgid "missing dictionary entry key or unterminated dictionary" -msgstr "»çÀü ¿£Æ®¸® ۰¡ ¾ø°Å³ª Á¾·áÇÏÁö ¾ÊÀº »çÀü" - -#: ../src/proplist.c:323 -msgid "error parsing dictionary key" -msgstr "»çÀü ۸¦ ÇØ¼®Çϴµ¥ ¿À·ùÀÔ´Ï´Ù" - -#: ../src/proplist.c:332 -msgid "missing = in dictionary entry" -msgstr "»çÀü ¿£Æ®¸®¿¡ = °¡ ºüÁ® ÀÖ½À´Ï´Ù" - -#: ../src/proplist.c:351 -msgid "missing ; in dictionary entry" -msgstr "»çÀü ¿£Æ®¸®¿¡ ;°¡ ºüÁ® ÀÖ½À´Ï´Ù" - -#: ../src/proplist.c:432 -msgid "was expecting a string, dictionary, data or array." -msgstr "´Â ¹®ÀÚ¿­, »çÀü, µ¥ÀÌÅÍ ¶Ç´Â ¹è¿­ÀÌ ÇÊ¿äÇÕ´Ï´Ù" - -#: ../src/proplist.c:434 -msgid "Comments are not allowed inside WindowMaker owned domain files." -msgstr "ÁÖ¼®¹®Àº Window Maker µµ¸ÞÀÎ ÆÄÀÏ ³»¿¡¼­´Â Çã¿ëµÇÁö ¾Ê½À´Ï´Ù." - -#: ../src/proplist.c:453 -#, c-format -msgid "could not open domain file %s" -msgstr "µµ¸ÞÀÎ ÆÄÀÏ %s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù" - -#: ../src/proplist.c:466 -msgid "extra data after end of file" -msgstr "ÆÄÀÏ ³¡ µÚ¿¡ µ¥ÀÌÅͰ¡ ¶Ç ÀÖ½À´Ï´Ù" - -#: ../src/resources.c:71 -#, c-format -msgid "The following character sets are missing in %s:" -msgstr "´ÙÀ½ ¹®ÀÚ ¼ÂÀº %s¿¡¼­ ºüÁ® ÀÖ½À´Ï´Ù:" - -#: ../src/resources.c:76 -#, c-format -msgid "The string \"%s\" will be used in place" -msgstr "¹®ÀÚ¿­ \"%s\"ÀÌ ÀÌ ¹®ÀÚ¼ÂÀÇ ±ÛÀÚ¸¦" - -#: ../src/resources.c:78 -msgid "of any characters from those sets." -msgstr "´ë½ÅÇÏ¿© »ç¿ëµË´Ï´Ù." - -#: ../src/resources.c:81 -#, c-format -msgid "could not create font set %s. Trying fixed" -msgstr "%s ±Û²Ã ¼ÂÀ» ¸¸µéÁö ¸øÇÔ. fixed·Î ´ëüÇÕ´Ï´Ù" - -#: ../src/resources.c:98 -#, c-format -msgid "could not load font %s. Trying fixed" -msgstr "%s ±Û²ÃÀÌ ¾øÀ½. fixed·Î ´ëüÇÕ´Ï´Ù" - -#: ../src/resources.c:136 -#, c-format -msgid "could not parse color \"%s\"" -msgstr "»ö \"%s\"À» ÇØ¼®ÇÒ ¼ö ¾ø½À´Ï´Ù" - -#: ../src/resources.c:140 -#, c-format -msgid "could not allocate color \"%s\"" -msgstr "»ö \"%s\"À» ÇÒ´çÇÒ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:185 ../src/rootmenu.c:187 -msgid "Exit" -msgstr "Á¾·á" - -#: ../src/rootmenu.c:186 -msgid "Exit window manager?" -msgstr "â °ü¸®ÀÚ¸¦ Á¾·áÇϽðڽÀ´Ï±î?" - -#: ../src/rootmenu.c:222 -msgid "Close X session" -msgstr "X ¼¼¼Ç ´Ý±â" - -#: ../src/rootmenu.c:223 -msgid "" -"Close Window System session?\n" -"Kill might close applications with unsaved data." -msgstr "" -"À©µµ¿ì ½Ã½ºÅÛ ¼¼¼ÇÀ» Á¾·áÇϰڽÀ´Ï±î?\n" -"¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áµÇ°í ÀúÀåÇÏÁö ¾ÊÀº ÀÚ·á´Â ÀÒ½À´Ï´Ù." - -#. -#. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); -#. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); -#. -#: ../src/rootmenu.c:225 ../src/winmenu.c:481 -msgid "Close" -msgstr "´Ý±â" - -#: ../src/rootmenu.c:236 -msgid "Kill X session" -msgstr "X ¼¼¼Ç Á¾·á" - -#: ../src/rootmenu.c:237 -msgid "" -"Kill Window System session?\n" -"(all applications will be closed)" -msgstr "" -"À©µµ¿ì ½Ã½ºÅÛ ¼¼¼ÇÀ» Á¾·áÇϰڽÀ´Ï±î?\n" -"(¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áµË´Ï´Ù)" - -#: ../src/rootmenu.c:463 -#, c-format -msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" -msgstr "%s: À߸øµÈ Űº¸µå ´ÜÃàŰ ÁöÁ¤ \"%s\"(¿£Æ®¸® %s)" - -#: ../src/rootmenu.c:471 -#, c-format -msgid "%s:invalid key in shortcut \"%s\" for entry %s" -msgstr "%s: »¡¸®°¡±â \"%s\"(¿£Æ®¸® %s)¿¡ À߸øµÈ Ű" - -#: ../src/rootmenu.c:524 -#, c-format -msgid "%s: unmatched '\"' in menu file" -msgstr "%s: ¸Þ´º ÆÄÀÏÀÇ '\"' ¦ÀÌ ¸ÂÁö ¾ÊÀ½" - -#: ../src/rootmenu.c:574 -#, c-format -msgid "%s: missing command" -msgstr "%s: ¸í·É¾î°¡ ¾øÀ½" - -#: ../src/rootmenu.c:607 -#, c-format -msgid "invalid OPEN_MENU specification: %s" -msgstr "OPEN_MENU ÁöÁ¤ÀÌ À߸øµÊ: %s" - -#: ../src/rootmenu.c:680 -#, c-format -msgid "%s:could not stat menu" -msgstr "%s: ¸Þ´º ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:688 -#, c-format -msgid "%s:could not stat menu:%s" -msgstr "%s: ¸Þ´º ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½ :%s" - -#: ../src/rootmenu.c:706 -#, c-format -msgid "too many parameters in OPEN_MENU: %s" -msgstr "OPEN_MENU¿¡ Àμö°¡ ³Ê¹« ¸¹À½: %s" - -#: ../src/rootmenu.c:742 -msgid "" -"There are more than one WORKSPACE_MENU commands in the applications menu. " -"Only one is allowed." -msgstr "" -"¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º¿¡ WORKSPACE_MENU ¸í·ÉÀÌ µÑ ÀÌ»ó ÀÖ½À´Ï´Ù. Çϳª¸¸ ÀÖ¾î¾ß " -"ÇÕ´Ï´Ù. " - -#: ../src/rootmenu.c:771 ../src/rootmenu.c:789 -#, c-format -msgid "%s:missing parameter for menu command \"%s\"" -msgstr "%s: ¸Þ´º ¸í·É¾î \"%s\" ÀÇ Àμö°¡ ºüÁ³À½" - -#: ../src/rootmenu.c:852 -#, c-format -msgid "%s:unknown command \"%s\" in menu config." -msgstr "%s:¸Þ´º ¼³Á¤ÀÇ \"%s\" ¸í·ÉÀ» ¾Ë ¼ö ¾øÀ½." - -#: ../src/rootmenu.c:860 -#, c-format -msgid "%s:can't add shortcut for entry \"%s\"" -msgstr "%s: ¿£Æ®¸® \"%s\"¿¡ »¡¸®°¡±â¸¦ Ãß°¡ÇÒ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:997 -#, c-format -msgid "%s:maximal line size exceeded in menu config: %s" -msgstr "%s:¸Þ´º ¼³Á¤ÀÇ ÃÖ´ë ÁÙ¼ö¸¦ ÃʰúÇÔ: %s" - -#: ../src/rootmenu.c:1019 ../src/rootmenu.c:1111 ../src/rootmenu.c:1212 -#, c-format -msgid "%s:missing command in menu config: %s" -msgstr "%s:¸Þ´º ¼³Á¤¿¡¼­ ¸í·ÉÀ» ãÀ» ¼ö ¾øÀ½: %s" - -#: ../src/rootmenu.c:1049 -#, c-format -msgid "%s:syntax error in menu file:END declaration missing" -msgstr "%s:¸Þ´ºÆÄÀÏ ¹®¹ý¿¡·¯:END ¼±¾ð¹® ¾øÀ½" - -#: ../src/rootmenu.c:1078 ../src/rootmenu.c:1177 -msgid "could not make arguments for menu file preprocessor" -msgstr "¸Þ´º ÆÄÀÏ Àü󸮱⸦ À§ÇÑ Àμö¸¦ ¸¸µé ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:1084 ../src/rootmenu.c:1184 -#, c-format -msgid "%s:could not open/preprocess menu file" -msgstr "%s: ¸Þ´º ÆÄÀÏÀ» ¿­°Å³ª Àüó¸®ÇÒ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:1096 ../src/rootmenu.c:1197 -#, c-format -msgid "%s:could not open menu file" -msgstr "%s:¸Þ´º ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:1123 -#, c-format -msgid "%s:invalid menu file. MENU command is missing" -msgstr "%s:À߸øµÈ ¸Þ´º ÆÄÀÏ. MENU ¸í·ÉÀÌ ºüÁ³½À´Ï´Ù" - -#: ../src/rootmenu.c:1132 -msgid "error reading preprocessed menu data" -msgstr "Àüó¸®µÈ ¸Þ´º µ¥ÀÌÅ͸¦ Àдµ¥ ¿À·ù" - -#: ../src/rootmenu.c:1224 -#, c-format -msgid "%s:no title given for the root menu" -msgstr "%s:ÃÖ»óÀ§ ¸Þ´º¿¡ Á¦¸ñÀÌ ¾ø½À´Ï´Ù" - -#: ../src/rootmenu.c:1307 ../src/rootmenu.c:1374 ../src/rootmenu.c:1418 -#, c-format -msgid "out of memory while constructing directory menu %s" -msgstr "µð·ºÅ丮 ¸Þ´º %s »ý¼º Áß ¸Þ¸ð¸® ºÎÁ·" - -#: ../src/rootmenu.c:1317 -#, c-format -msgid "%s:could not stat file \"%s\" in menu directory" -msgstr "%s: ¸Þ´º µð·ºÅ丮ÀÇ ÆÄÀÏ \"%s\"¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½" - -#: ../src/rootmenu.c:1472 -msgid "Commands" -msgstr "¸í·É¾î" - -#: ../src/rootmenu.c:1475 -msgid "Restart" -msgstr "Àç½ÃÀÛ" - -#: ../src/rootmenu.c:1476 -msgid "Exit..." -msgstr "Á¾·á..." - -#: ../src/rootmenu.c:1549 -#, c-format -msgid "could not find menu file \"%s\" referenced in WMRootMenu" -msgstr "WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º ÆÄÀÏ \"%s\"¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù" - -#: ../src/rootmenu.c:1556 -#, c-format -msgid "could not access menu \"%s\" referenced in WMRootMenu" -msgstr "WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º \"%s\"¿¡ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù" - -#: ../src/rootmenu.c:1567 -#, c-format -msgid "" -"using default menu file \"%s\" as the menu referenced in WMRootMenu could " -"not be found " -msgstr "" -"WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ¸¹Ç·Î \"%s\"¸¦ ±âº» ¸Þ´º " -"ÆÄÀÏ·Î »ç¿ëÇÕ´Ï´Ù" - -#: ../src/rootmenu.c:1590 ../src/rootmenu.c:1666 -#, c-format -msgid "%s:format error in root menu configuration \"%s\"" -msgstr "%s: ÃÖ»óÀ§ ¸Þ´º ¼³Á¤ \"%s\"ÀÇ Çü½Ä ¿À·ù" - -#: ../src/screen.c:423 -msgid "could not load logo image for panels" -msgstr "ÆÐ³Î¿¡ ¾²ÀÏ ·Î°í À̹ÌÁö¸¦ ÀÐÁö ¸øÇÔ" - -#: ../src/screen.c:426 -#, c-format -msgid "error making logo image for panel:%s" -msgstr "ÆÐ³Î¿¡ ¾²ÀÏ ·Î°í À̹ÌÁö¸¦ ¸¸µéÁö ¸øÇÔ:%s" - -#: ../src/screen.c:612 -#, c-format -msgid "could not initialize graphics library context: %s" -msgstr "±×·¡ÇÈ ¶óÀ̺귯¸® ȯ°æÀ» ÃʱâÈ­ ÇÒ¼ö ¾øÀ½: %s" - -#: ../src/screen.c:644 -msgid "could not do initialization of WINGs widget set" -msgstr "%s: ÃʱâÈ­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." - -#: ../src/screen.c:961 -#, c-format -msgid "could not save session state in %s" -msgstr "%sÀÇ ¼¼¼Ç »óŸ¦ ÀúÀåÇÏÁö ¸øÇÔ" - -#: ../src/session.c:138 ../src/wdefaults.c:559 ../src/winspector.c:347 -#, c-format -msgid "can't convert \"%s\" to boolean" -msgstr "\"%s\"¸¦ ºÎ¿ï °ªÀ¸·Î ¹Ù²Ü ¼ö ¾øÀ½" - -#: ../src/session.c:750 ../src/session.c:844 -msgid "end of memory while saving session state" -msgstr "¼¼¼Ç »óŸ¦ ÀúÀåÇÏ´Â Áß ¸Þ¸ð¸® ºÎÁ·" - -#. This is not fatal but can mean the session manager exited. -#. * If the session manager exited normally we would get a -#. * Die message, so this probably means an abnormal exit. -#. * If the sm was the last client of session, then we'll die -#. * anyway, otherwise we can continue doing our stuff. -#. -#: ../src/session.c:978 -msgid "connection to the session manager was lost" -msgstr "¼¼¼Ç °ü¸®ÀÚÀÇ ¿¬°áÀÌ ²÷¾îÁ³½À´Ï´Ù" - -#: ../src/stacking.c:72 -msgid "could not get window list!!" -msgstr "â ¸ñ·Ï¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù!!" - -#: ../src/startup.c:194 -#, c-format -msgid "internal X error: %s\n" -msgstr "X ³»ºÎ ¿¡·¯: %s\n" - -#: ../src/startup.c:257 -#, c-format -msgid "got signal %i (%s) - restarting\n" -msgstr "%i (%s) ½ÅÈ£ °¨Áö - Àç½Ãµ¿ÇÔ\n" - -#: ../src/startup.c:259 -#, c-format -msgid "got signal %i - restarting\n" -msgstr "%i ½ÅÈ£ °¨Áö - Àç½Ãµ¿ÇÔ\n" - -#: ../src/startup.c:273 -#, c-format -msgid "%s: Received signal SIGTERM. Exiting..." -msgstr "%s: SIGTERM ½ÅÈ£ ¹ÞÀ½. Á¾·á..." - -#: ../src/startup.c:285 -#, c-format -msgid "got signal %i (%s)\n" -msgstr "%i (%s) ½ÅÈ£ °¨Áö\n" - -#: ../src/startup.c:287 -#, c-format -msgid "got signal %i\n" -msgstr "%i ½ÅÈ£ °¨Áö\n" - -#: ../src/startup.c:293 -msgid "" -"crashed while trying to do some post-crash cleanup. Aborting immediatelly." -msgstr "" -"ºñÁ¤»ó Á¾·áÈÄ Ã³¸®¸¦ ÇÏ·Á´Â µ¿¾È¿¡ ºñÁ¤»ó Á¾·áµÇ¾ú½À´Ï´Ù. Áï½Ã Á¾·áÇÕ´Ï´Ù." - -#: ../src/startup.c:304 -msgid "" -"a fatal error has occured, probably due to a bug. Please fill the included " -"BUGFORM and report it." -msgstr "" -"Ä¡¸íÀûÀÎ ¿À·ù ¹ß»ý, ¾Æ¸¶µµ ¹ö±×ÀÎ °Í °°½À´Ï´Ù. BUGFORMÀ» ÀÛ¼ºÇØ º¸³»Áֽñæ " -"ºÎʵ右´Ï´Ù." - -#. restart another window manager so that the X session doesn't -#. * go to space -#: ../src/startup.c:311 -msgid "trying to start alternative window manager..." -msgstr "´ëü¿ë â °ü¸®ÀÚ¸¦ ½ÃÀÛÇϰڽÀ´Ï´Ù..." - -#: ../src/startup.c:710 -#, c-format -msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" -msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ Å©±â(%i)°¡ ³Ê¹« ÀÛÀ½. ´ë½Å 16À¸·Î ¹Ù²ß´Ï´Ù\n" - -#: ../src/startup.c:754 -msgid "it seems that there already is a window manager running" -msgstr "ÀÌ¹Ì ´Ù¸¥ â °ü¸®ÀÚ°¡ µ¿ÀÛÇϰí ÀÖ´Â °Í °°½À´Ï´Ù" - -#: ../src/startup.c:760 -#, c-format -msgid "could not manage screen %i" -msgstr "È­¸é %i¸¦ Á¦¾îÇÒ ¼ö ¾øÀ½" - -#: ../src/startup.c:820 -msgid "could not manage any screen" -msgstr "¸ðµç È­¸éÀ» Á¦¾îÇÒ ¼ö ¾øÀ½" - -#: ../src/switchmenu.c:114 -msgid "Windows" -msgstr "â" - -#: ../src/texture.c:274 ../src/texture.c:318 -#, c-format -msgid "image file \"%s\" used as texture could not be found." -msgstr "ÅØ½ºÃ³·Î »ç¿ëÇÏ´Â À̹ÌÁö ÆÄÀÏ \"%s\"À» ãÀ» ¼ö ¾ø½À´Ï´Ù." - -#: ../src/texture.c:280 ../src/texture.c:324 -#, c-format -msgid "could not load texture pixmap \"%s\":%s" -msgstr "ÅØ½ºÃ³ ÇȽº¸Ê \"%s\"À» ¿­ ¼ö°¡ ¾øÀ½: %s" - -#: ../src/texture.c:463 ../src/texture.c:574 -#, c-format -msgid "could not render texture: %s" -msgstr "ÅØ½ºÃ³ ·»´õ¸µÀ» ÇÒ ¼ö ¾øÀ½: %s" - -#: ../src/wdefaults.c:405 -#, c-format -msgid "could not find icon file \"%s\"" -msgstr "¾ÆÀÌÄÜ ÆÄÀÏ \"%s\"À» ãÁö ¸øÇß½À´Ï´Ù" - -#: ../src/window.c:2277 ../src/window.c:2409 -msgid "" -"the NumLock, ScrollLock or similar key seems to be turned on.\n" -"Turn it off or some mouse actions and keyboard shortcuts will not work." -msgstr "" -"NumLock, ScrollLock À̳ª ´Ù¸¥ ºñ½ÁÇÑ Á¾·ùÀÇ Å°°¡ ÄÑÁ® ÀÖ´Â °Í °°½À´Ï´Ù.\n" -"²ôÁö ¾ÊÀ¸¸é ÀϺΠ¸¶¿ì½º µ¿ÀÛÀ̳ª Űº¸µå ´ÜÃà۰¡ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù." - -#: ../src/winmenu.c:249 ../src/winmenu.c:257 -msgid "Set Shortcut" -msgstr "´ÜÃàŰ ¼±ÅÃ" - -#: ../src/winmenu.c:333 ../src/winmenu.c:379 -msgid "could not create submenu for window menu" -msgstr "â ¸Þ´º¸¦ À§ÇÑ ºÎ¸Þ´º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" - -#: ../src/winmenu.c:388 -msgid "Keep at bottom" -msgstr "Ç×»ó ¾Æ·¡·Î/°¡¶ó¾ÉÀ½" - -#: ../src/winmenu.c:393 ../src/winspector.c:1141 -msgid "Omnipresent" -msgstr "Ç×»ó º¸ÀÓ" - -#. -#. * Warning: If you make some change that affects the order of the -#. * entries, you must update the command #defines in the top of -#. * this file. -#. -#: ../src/winmenu.c:416 ../src/winmenu.c:551 -msgid "Maximize" -msgstr "ÃÖ´ëÈ­" - -#: ../src/winmenu.c:424 ../src/winmenu.c:537 -msgid "Miniaturize" -msgstr "ÃÖ¼ÒÈ­" - -#: ../src/winmenu.c:433 ../src/winmenu.c:565 -msgid "Shade" -msgstr "°¡¸²" - -#: ../src/winmenu.c:449 -msgid "Resize/Move" -msgstr "Å©±â¹Ù²Þ/À̵¿" - -#: ../src/winmenu.c:457 -msgid "Select" -msgstr "¼±ÅÃ" - -#: ../src/winmenu.c:465 -msgid "Move To" -msgstr "À̵¿" - -#: ../src/winmenu.c:470 -msgid "Attributes..." -msgstr "¼Ó¼º ¼³Á¤..." - -#: ../src/winmenu.c:472 -msgid "Options" -msgstr "¿É¼Ç" - -#: ../src/winmenu.c:532 -msgid "Deminiaturize" -msgstr "º¸ÅëÅ©±â" - -#: ../src/winmenu.c:546 -msgid "Unmaximize" -msgstr "º¸ÅëÅ©±â" - -#: ../src/winmenu.c:560 -msgid "Unshade" -msgstr "º¸ÀÓ" - -#: ../src/winspector.c:281 -#, c-format -msgid "Could not find icon \"%s\" specified for this window" -msgstr "ÀÌ Ã¢¿¡¼­ ÁöÁ¤ÇÑ ¾ÆÀÌÄÜ \"%s\"À» ãÀ» ¼ö ¾øÀ½" - -#: ../src/winspector.c:297 -#, c-format -msgid "Could not open specified icon \"%s\":%s" -msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ \"%s\"À» ¿­ ¼ö ¾øÀ½:%s" - -#: ../src/winspector.c:1016 -msgid "Save" -msgstr "ÀúÀå" - -#: ../src/winspector.c:1024 -msgid "Apply" -msgstr "Àû¿ë" - -#: ../src/winspector.c:1030 -msgid "Reload" -msgstr "´Ù½ÃÀбâ" - -#: ../src/winspector.c:1039 ../src/winspector.c:1049 -msgid "Window Specification" -msgstr "â ¼±ÅÃ" - -#: ../src/winspector.c:1040 -msgid "Window Attributes" -msgstr "â ¼Ó¼º" - -#: ../src/winspector.c:1041 -msgid "Advanced Options" -msgstr "°í±Þ ¿É¼Ç" - -#: ../src/winspector.c:1042 -msgid "Icon and Initial Workspace" -msgstr "¾ÆÀÌÄܰú Ãʱâ ÀÛ¾÷°ø°£" - -#: ../src/winspector.c:1043 -msgid "Application Specific" -msgstr "¾ÖÇø®ÄÉÀ̼ǿ¡ µû¶ó ´Ù¸¥ ¼³Á¤" - -#: ../src/winspector.c:1057 -msgid "Defaults for all windows" -msgstr "¸ðµç âÀÇ ±âº»°ªÀ¸·Î" - -#: ../src/winspector.c:1100 -msgid "" -"The configuration will apply to all\n" -"windows that have their WM_CLASS property set to the above selected\n" -"name, when saved." -msgstr "" -"¼³Á¤À» ÀúÀåÇϸé WM_CLASS Ư¼º°ªÀÌ\n" -"À§¿¡¼­ ÁöÁ¤ÇÑ À̸§À¸·Î µÇ¾î ÀÖ´Â\n" -"¸ðµç â¿¡ ±× ¼³Á¤ÀÌ Àû¿ëµË´Ï´Ù." - -#: ../src/winspector.c:1107 -msgid "Attributes" -msgstr "¼Ó¼º" - -#: ../src/winspector.c:1117 -msgid "Disable titlebar" -msgstr "Á¦¸ñ ¹Ù ¾ø¾Ú" - -#: ../src/winspector.c:1121 -msgid "Disable resizebar" -msgstr "Å©±âÁ¶Á¤ ¹Ù ¾ø¾Ú" - -#: ../src/winspector.c:1125 -msgid "Disable close button" -msgstr "´Ý±â ¹öư ¾ø¾Ú" - -#: ../src/winspector.c:1129 -msgid "Disable miniaturize button" -msgstr "ÃÖ¼ÒÈ­ ¹öư ¾ø¾Ú" - -#: ../src/winspector.c:1133 -msgid "Keep on top / floating" -msgstr "Ç×»ó À§·Î/¶ä" - -#: ../src/winspector.c:1137 -msgid "Keep at bottom / sunken" -msgstr "Ç×»ó ¾Æ·¡·Î/°¡¶ó¾ÉÀ½" - -#: ../src/winspector.c:1145 -msgid "Start Miniaturized" -msgstr "ÃÖ¼ÒÈ­ÇÏ¿© ½ÇÇà" - -#: ../src/winspector.c:1149 -msgid "Start Maximized" -msgstr "ÃÖ´ëÈ­ÇÏ¿© ½ÇÇà" - -#: ../src/winspector.c:1153 -msgid "Skip window list" -msgstr "â ¸ñ·Ï¿¡ ³ªÅ¸³ªÁö ¾ÊÀ½" - -#: ../src/winspector.c:1167 -msgid "Advanced" -msgstr "°í±Þ Ç׸ñ" - -#: ../src/winspector.c:1177 -msgid "Ignore HideOthers" -msgstr "´Ù¸¥ °Íµé ¼û±è ¹«½ÃÇÔ" - -#: ../src/winspector.c:1181 -msgid "Don't bind keyboard shortcuts" -msgstr "Űº¸µå ´ÜÃàŰ »ç¿ë ¾ÈÇÔ" - -#: ../src/winspector.c:1185 -msgid "Don't bind mouse clicks" -msgstr "¸¶¿ì½º Ŭ¸¯ »ç¿ë ¾ÈÇÔ" - -#: ../src/winspector.c:1189 -msgid "Keep inside screen" -msgstr "Ç×»ó È­¸é¾È¿¡ À§Ä¡" - -#: ../src/winspector.c:1193 -msgid "Don't let it take focus" -msgstr "Ȱ¼ºÈ­ ¾ÈµÊ" - -#: ../src/winspector.c:1197 -msgid "Don't Save Session" -msgstr "¼¼¼ÇÀ» ÀúÀåÇÏÁö ¾ÊÀ½" - -#: ../src/winspector.c:1201 -msgid "Emulate Application Icon" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜ Èä³»³»±â" - -#: ../src/winspector.c:1216 -msgid "" -"Enable the \"Don't bind...\" options to allow the application to receive all " -"mouse or keyboard events." -msgstr "" -"¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸ðµç ¸¶¿ì½º¿Í Űº¸µå À̺¥Æ®¸¦ ¹Þµµ·Ï \"... »ç¿ë ¾ÈÇÔ\" ¿É¼ÇÀ» " -"»ç¿ë °¡´ÉÇϵµ·Ï ÇÕ´Ï´Ù." - -#: ../src/winspector.c:1223 -msgid "Miniwindow Image" -msgstr "¾ÆÀÌÄÜ À̹ÌÁö" - -#: ../src/winspector.c:1242 -msgid "Update" -msgstr "°»½Å" - -#: ../src/winspector.c:1257 -msgid "Icon file name:" -msgstr "¾ÆÀÌÄÜ ÆÄÀϸí:" - -#: ../src/winspector.c:1269 -msgid "Ignore client supplied icon" -msgstr "Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¾ÆÀÌÄÜ ¹«½ÃÇÔ" - -#: ../src/winspector.c:1276 -msgid "Initial Workspace" -msgstr "Ãʱâ ÀÛ¾÷°ø°£" - -#: ../src/winspector.c:1281 -msgid "Nowhere in particular" -msgstr "Ưº°ÇÑ ¼³Á¤ ¾øÀ½" - -#: ../src/winspector.c:1315 -msgid "Application Wide" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¿ÍÀ̵å" - -#: ../src/winspector.c:1325 -msgid "Start Hidden" -msgstr "¼û°Ü¼­ ½ÇÇà" - -#: ../src/winspector.c:1329 -msgid "No application icon" -msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜ ¾øÀ½" - -#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:472 -#, c-format -msgid "Workspace %i" -msgstr "ÀÛ¾÷°ø°£ %i" - -#: ../src/workspace.c:529 -msgid "Workspaces" -msgstr "ÀÛ¾÷°ø°£" - -#: ../src/workspace.c:531 -msgid "could not create Workspace menu" -msgstr "ÀÛ¾÷°ø°£ ¸Þ´º¸¦ ¸¸µé¼ö ¾øÀ½" - -#: ../src/workspace.c:538 -msgid "New" -msgstr "»õ ÀÛ¾÷°ø°£ ¸¸µë" - -#: ../src/workspace.c:539 -msgid "Destroy Last" -msgstr "¸¶Áö¸· ÀÛ¾÷°ø°£ ¾ø¾Ú" - -#: ../src/xutil.c:228 -msgid "invalid data in selection" -msgstr "¼±Åÿ¡ À߸øµÈ µ¥ÀÌÅÍ" +# Window Maker po file for korean. +# Copyright (C) 1998 Free Software Foundation, Inc. +# Byeong-Chan Kim <redhands@linux.sarang.net>, 1998. +# Update: CHOI Junho <cjh@kr.freebsd.org>, 1998/12. +# +msgid "" +msgstr "" +"Project-Id-Version: 0.51.0\n" +"POT-Creation-Date: 1999-01-29 08:44+0900\n" +"PO-Revision-Date: 1999-01-29 08:47+0900\n" +"Last-Translator: Byeong-Chan Kim <redhands@linux.sarang.net>\n" +"Language-Team: Korean\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=EUC-KR\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 +#: ../src/dock.c:3060 ../src/dockedapp.c:208 ../src/winspector.c:281 +#: ../src/winspector.c:297 +msgid "Error" +msgstr "¿À·ù" + +#: ../src/appicon.c:510 +msgid "Could not open specified icon file" +msgstr "ÁöÁ¤ÇÑ ¾ÆÀÌÄÜÀ» ¿­Áö ¸øÇÔ." + +#: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 +#: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 +#: ../src/dock.c:3061 ../src/dockedapp.c:208 ../src/dockedapp.c:352 +#: ../src/winspector.c:282 ../src/winspector.c:298 +msgid "OK" +msgstr "È®ÀÎ" + +#: ../src/appicon.c:532 ../src/dock.c:272 ../src/winmenu.c:123 +msgid "Kill Application" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç Á¾·á" + +#: ../src/appicon.c:533 ../src/dock.c:273 ../src/winmenu.c:124 +msgid "" +"This will kill the application.\n" +"Any unsaved changes will be lost.\n" +"Please confirm." +msgstr "" +"¾ÖÇø®ÄÉÀ̼ÇÀ» °­Á¦ Á¾·áÇÕ´Ï´Ù.\n" +"ÀúÀåÇÏÁö ¾ÊÀº º¯°æ »çÇ×Àº ÀÒ°Ô µË´Ï´Ù.\n" +"°è¼Ó ÇϽðڽÀ´Ï±î?" + +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 +msgid "Yes" +msgstr "¿¹" + +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 +msgid "No" +msgstr "¾Æ´Ï¿À" + +#: ../src/appicon.c:548 ../src/dock.c:1064 +msgid "Unhide Here" +msgstr "¼û±ä °Í À̰÷¿¡ º¸ÀÓ" + +#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/dock.c:1066 +#: ../src/dock.c:1068 ../src/dock.c:3186 ../src/dock.c:3188 +#: ../src/winmenu.c:441 +msgid "Hide" +msgstr "¼û±è" + +#: ../src/appicon.c:550 +msgid "Set Icon..." +msgstr "¾ÆÀÌÄÜ ÁöÁ¤..." + +#: ../src/appicon.c:551 ../src/dock.c:1072 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 ../src/winmenu.c:488 +msgid "Kill" +msgstr "Á¾·á" + +#: ../src/appicon.c:572 ../src/dock.c:3184 +msgid "Unhide" +msgstr "(¾È)¼û±è" + +#: ../src/defaults.c:752 ../src/startup.c:709 ../src/startup.c:727 +#: ../src/startup.c:733 +#, c-format +msgid "could not read domain \"%s\" from defaults database" +msgstr "±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ \"%s\"¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/defaults.c:798 ../src/defaults.c:922 ../src/defaults.c:961 +#: ../src/defaults.c:991 +#, c-format +msgid "Domain %s (%s) of defaults database is corrupted!" +msgstr "±âº» µ¥ÀÌÅͺ£À̽ºÀÇ µµ¸ÞÀÎ %s (%s)ÀÌ ±úÁ³½À´Ï´Ù!" + +#: ../src/defaults.c:803 ../src/defaults.c:943 ../src/defaults.c:974 +#: ../src/defaults.c:1000 +#, c-format +msgid "could not load domain %s from user defaults database" +msgstr "»ç¿ëÀÚ ±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ %s¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/defaults.c:814 ../src/defaults.c:907 +#, c-format +msgid "Domain %s (%s) of global defaults database is corrupted!" +msgstr "Àü¿ª ±âº» µ¥ÀÌÅͺ£À̽ºÀÇ µµ¸ÞÀÎ %s (%s)´Â ±úÁ³½À´Ï´Ù!" + +#: ../src/defaults.c:833 ../src/defaults.c:912 +#, c-format +msgid "could not load domain %s from global defaults database" +msgstr "Àü¿ª ±âº» µ¥ÀÌÅͺ£À̽º¿¡¼­ µµ¸ÞÀÎ %s¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/defaults.c:1283 +#, c-format +msgid "wrong option value for key \"%s\". Should be one of %s" +msgstr "Ű \"%s\"ÀÇ ¿É¼Ç Æ÷¸ËÀÌ À߸øµÊ. %sÁß ÇϳªÀ̾î¾ß ÇÕ´Ï´Ù" + +#: ../src/defaults.c:1330 +#, c-format +msgid "can't convert \"%s\" to boolean for key \"%s\"" +msgstr "\"%s\"¸¦ Ű \"%s\"¿¡ ´ëÇØ ºÎ¿ï °ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù" + +#: ../src/defaults.c:1335 ../src/defaults.c:1369 ../src/defaults.c:1401 +#: ../src/defaults.c:1414 ../src/defaults.c:1429 ../src/defaults.c:1443 +#: ../src/defaults.c:1515 ../src/defaults.c:1527 ../src/defaults.c:1875 +#: ../src/defaults.c:1892 ../src/defaults.c:1905 ../src/defaults.c:1938 +#: ../src/defaults.c:1954 ../src/defaults.c:1985 ../src/defaults.c:2058 +#, c-format +msgid "using default \"%s\" instead" +msgstr "±âº»°ªÀÎ \"%s\" ¸¦ ´ë½Å »ç¿ëÇÔ" + +#: ../src/defaults.c:1366 +#, c-format +msgid "can't convert \"%s\" to integer for key \"%s\"" +msgstr "\"%s\"¸¦ Ű \"%s\"¿¡ ´ëÇØ Á¤¼ö°ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾ø½À´Ï´Ù" + +#: ../src/defaults.c:1396 ../src/defaults.c:1510 ../src/defaults.c:1870 +#: ../src/defaults.c:1887 ../src/defaults.c:1933 ../src/defaults.c:1980 +#: ../src/wdefaults.c:541 ../src/wdefaults.c:577 +#, c-format +msgid "Wrong option format for key \"%s\". Should be %s." +msgstr "\"%s\" ŰÀÇ ¿É¼Ç Æ÷¸ËÀÌ À߸øµÊ. %s À̾î¾ß ÇÕ´Ï´Ù." + +#: ../src/defaults.c:1409 +#, c-format +msgid "Incorrect number of elements in array for key \"%s\"." +msgstr "Ű \"%s\"¿¡ ´ëÇÑ ¹è¿­ÀÇ ¿ø¼Ò ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù." + +#: ../src/defaults.c:1424 +#, c-format +msgid "Wrong value for key \"%s\". Should be Coordinate." +msgstr "\"%s\" Ű °ªÀÌ À߸øµÊ. ÁÂÇ¥°¡ µÇ¾î¾ß ÇÕ´Ï´Ù." + +#: ../src/defaults.c:1439 +#, c-format +msgid "can't convert array to integers for \"%s\"." +msgstr "\"%s\"¿¡ ´ëÇØ ¹è¿­À» Á¤¼ö°ªÀ¸·Î º¯È¯ÇÒ ¼ö ¾øÀ½." + +#: ../src/defaults.c:1636 ../src/defaults.c:1668 ../src/defaults.c:1684 +#: ../src/defaults.c:1730 ../src/defaults.c:1770 ../src/defaults.c:1808 +#: ../src/defaults.c:1824 +#, c-format +msgid "\"%s\" is not a valid color name" +msgstr "\"%s\" ´Â ¿Ã¹Ù¸¥ »ö»ó¸íÀÌ ¾Æ´Ô" + +#: ../src/defaults.c:1649 +msgid "bad number of arguments in gradient specification" +msgstr "±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù" + +#: ../src/defaults.c:1703 +msgid "too few arguments in multicolor gradient specification" +msgstr "´ÙÁß»ö ±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ ³Ê¹« Àû½À´Ï´Ù" + +#: ../src/defaults.c:1797 +msgid "bad number of arguments in textured gradient specification" +msgstr "±×·¡µð¾ðÆ® ÁöÁ¤½Ã ÀμöÀÇ ¼ö°¡ À߸øµÇ¾ú½À´Ï´Ù" + +#: ../src/defaults.c:1840 +#, c-format +msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" +msgstr "tgradient ÅØ½ºÃ³ \"%s\"¿¡ ¸ðÈ£ÇÑ °ªÀÌ ÀÖ½À´Ï´Ù. [0..255]¿©¾ß ÇÕ´Ï´Ù." + +#: ../src/defaults.c:1853 +#, c-format +msgid "invalid texture type %s" +msgstr "À߸øµÈ ÅØ½ºÃ³ À¯Çü %s" + +#: ../src/defaults.c:1900 +#, c-format +msgid "Error in texture specification for key \"%s\"" +msgstr "Ű \"%s\"ÀÇ ÅØ½ºÃ³ ÁöÁ¤¿¡ ¿À·ù°¡ ÀÖ½À´Ï´Ù" + +#: ../src/defaults.c:1950 +msgid "Wrong type for workspace background. Should be a texture type." +msgstr "ÀÛ¾÷°ø°£ ¹è°æ Á¾·ù°¡ À߸øµÇ¾ú½À´Ï´Ù. ÅØ½ºÃ³¿©¾ß ÇÕ´Ï´Ù." + +#: ../src/defaults.c:1998 +#, c-format +msgid "Wrong type for background of workspace %i. Should be a texture." +msgstr "ÀÛ¾÷°ø°£ ¹è°æ Á¾·ù°¡ À߸øµÇ¾ú½À´Ï´Ù. ÅØ½ºÃ³¿©¾ß ÇÕ´Ï´Ù." + +#: ../src/defaults.c:2023 +msgid "could not load any usable font!!!" +msgstr "»ç¿ë °¡´ÉÇÑ ±Û²ÃÀ» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù!!!" + +#: ../src/defaults.c:2053 +#, c-format +msgid "could not get color for key \"%s\"" +msgstr "Ű \"%s\"ÀÇ »öÀ» ¾òÀ» ¼ö ¾øÀ½" + +#: ../src/defaults.c:2112 ../src/rootmenu.c:454 +#, c-format +msgid "%s:invalid key modifier \"%s\"" +msgstr "%s:À߸øµÈ Ű ¼öÁ¤ÀÚ \"%s\"" + +#: ../src/defaults.c:2124 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\"" +msgstr "%s:À߸øµÈ Űº¸µå ´ÜÃàŰ ÁöÁ¤ \"%s\"" + +#: ../src/defaults.c:2131 +#, c-format +msgid "%s:invalid key in shortcut \"%s\"" +msgstr "%s:»¡¸®°¡±â \"%s\"¿¡ À߸øµÈ Ű" + +#: ../src/defaults.c:2157 +#, c-format +msgid "%s: modifier key %s is not valid" +msgstr "%s: À߸øµÈ ¼öÁ¤ÀÚ Å° %s" + +#: ../src/defaults.c:2233 +msgid "could not render texture for icon background" +msgstr "¾ÆÀÌÄÜ ¹è°æÀÇ ÅØ½ºÃ³¸¦ ±×¸± ¼ö ¾ø½À´Ï´Ù" + +#: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 +#: ../src/dockedapp.c:358 ../src/rootmenu.c:188 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 +msgid "Cancel" +msgstr "Ãë¼Ò" + +#: ../src/dialog.c:211 +msgid "Could not open directory " +msgstr "µð·ºÅ丮¸¦ ¿­ ¼ö ¾øÀ½ " + +#: ../src/dialog.c:267 +msgid "Could not load image file " +msgstr "À̹ÌÁö ÆÄÀÏÀ» ÀÐÀ» ¼ö ¾øÀ½ " + +#: ../src/dialog.c:404 +msgid "Directories" +msgstr "µð·ºÅ丮" + +#: ../src/dialog.c:413 +msgid "Icons" +msgstr "¾ÆÀÌÄÜ" + +#: ../src/dialog.c:450 +msgid "File Name:" +msgstr "ÆÄÀϸí:" + +#: ../src/dialog.c:473 +msgid "Choose File" +msgstr "ÆÄÀÏ ¼±ÅÃ" + +#: ../src/dialog.c:490 ../src/dialog.c:492 +msgid "Icon Chooser" +msgstr "¾ÆÀÌÄÜ ¼±Åñâ" + +#: ../src/dock.c:213 +#, c-format +msgid "Type the name for workspace %i:" +msgstr "ÀÛ¾÷°ø°£ %i ÀÇ À̸§À» ÀÔ·ÂÇϼ¼¿ä:" + +#: ../src/dock.c:214 ../src/dock.c:1043 +msgid "Rename Workspace" +msgstr "ÀÛ¾÷°ø°£ À̸§ ¹Ù²Þ" + +#: ../src/dock.c:422 +msgid "Workspace Clip" +msgstr "ÀÛ¾÷°ø°£ Ŭ¸³" + +#: ../src/dock.c:423 +msgid "All selected icons will be removed!" +msgstr "¼±ÅÃÇÑ ¸ðµç ¾ÆÀÌÄÜÀÌ ¾ø¾îÁú °ÍÀÔ´Ï´Ù!!" + +#: ../src/dock.c:470 +msgid "Keep Icon" +msgstr "¾ÆÀÌÄÜ À¯Áö" + +#: ../src/dock.c:471 ../src/dock.c:1978 ../src/dock.c:2107 +msgid "Type the command used to launch the application" +msgstr "¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇØ´Âµ¥ ÇÊ¿äÇÑ ¸í·ÉÀ» ÀÔ·ÂÇÕ´Ï´Ù" + +#: ../src/dock.c:856 +#, c-format +msgid "could not launch application %s\n" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç %sÀ» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù\n" + +#: ../src/dock.c:911 +msgid "could not create workspace submenu for Clip menu" +msgstr "Ŭ¸³ ¸Þ´º¸¦ À§ÇÑ ÀÛ¾÷°ø°£ ÇϺθ޴º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" + +#: ../src/dock.c:974 +msgid "could not create options submenu for Clip menu" +msgstr "Ŭ¸³ ¸Þ´º¸¦ À§ÇÑ ¿É¼Ç ÇϺθ޴º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" + +#: ../src/dock.c:978 ../src/dock.c:1032 ../src/winmenu.c:383 +msgid "Keep on top" +msgstr "Ç×»ó À§·Î" + +#: ../src/dock.c:984 +msgid "Collapsed" +msgstr "¾ÆÀÌÄÜ ¼û±è" + +#: ../src/dock.c:990 +msgid "AutoCollapse" +msgstr "ÀÚµ¿ ¼û±è" + +#: ../src/dock.c:996 +msgid "AutoRaiseLower" +msgstr "ÀÚµ¿ ¿Ã¸²/³»¸²" + +#: ../src/dock.c:1002 +msgid "AutoAttract Icons" +msgstr "¾ÆÀÌÄÜ ÀÚµ¿ ¸ðÀ½" + +#: ../src/dock.c:1008 +msgid "Keep Attracted Icons" +msgstr "¸ðÀº ¾ÆÀÌÄÜ À¯Áö" + +#: ../src/dock.c:1038 +msgid "Clip Options" +msgstr "Ŭ¸³ ¿É¼Ç" + +#: ../src/dock.c:1045 +msgid "(Un)Select Icon" +msgstr "¾ÆÀÌÄÜ (¾È)¼±ÅÃ" + +#: ../src/dock.c:1047 +msgid "(Un)Select All Icons" +msgstr "¸ðµç ¾ÆÀÌÄÜ (¾È)¼±ÅÃ" + +#: ../src/dock.c:1050 +msgid "Keep Icon(s)" +msgstr "¾ÆÀÌÄÜ À¯Áö" + +#: ../src/dock.c:1052 +msgid "Move Icon(s) To" +msgstr "¾ÆÀÌÄÜ ¿Å±è :" + +#: ../src/dock.c:1057 +msgid "Remove Icon(s)" +msgstr "¾ÆÀÌÄÜ ¾ø¾Ú" + +#: ../src/dock.c:1059 +msgid "Attract Icons" +msgstr "¾ÆÀÌÄÜ ¸ðÀ½" + +#: ../src/dock.c:1062 +msgid "Launch" +msgstr "½ÇÇà" + +#: ../src/dock.c:1070 +msgid "Settings..." +msgstr "¼³Á¤..." + +#: ../src/dock.c:1455 ../src/dock.c:1469 ../src/dock.c:1483 ../src/dock.c:1493 +#, c-format +msgid "bad value in docked icon state info %s" +msgstr "Dock ¾ÆÀÌÄÜÀÇ »óÅÂÁ¤º¸¿¡ À߸øµÈ °ª %s" + +#: ../src/dock.c:1501 +#, c-format +msgid "bad value in docked icon position %i,%i" +msgstr "Dock ¾ÆÀÌÄÜÀÇ À§Ä¡°ª %i,%i ´Â À߸øµÈ °ª" + +#: ../src/dock.c:1745 +msgid "there are too many icons stored in dock. Ignoring what doesn't fit" +msgstr "Dock ¿¡ µé¾î°£ ¾ÆÀÌÄÜÀÌ ³Ê¹« ¸¹À½. ¸ÂÁö ¾Ê´Â °ÍÀº ¹«½ÃÇÕ´Ï´Ù" + +#. icon->forced_dock = 1; +#: ../src/dock.c:1977 ../src/dock.c:2106 +msgid "Dock Icon" +msgstr "Dock ¾ÆÀÌÄÜ" + +#: ../src/dock.c:3053 ../src/dock.c:3057 +#, c-format +msgid "Could not execute command \"%s\"" +msgstr "\"%s\" ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ¾øÀ½." + +#: ../src/dockedapp.c:128 +#, c-format +msgid "could not find icon %s, used in a docked application" +msgstr "µµÅ·µÈ ¾ÖÇø®ÄÉÀ̼ǿ¡ »ç¿ëÇÒ ¾ÆÀÌÄÜ %sÀ» ãÀ» ¼ö ¾øÀ½" + +#: ../src/dockedapp.c:207 +#, c-format +msgid "Could not open specified icon file:%s" +msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½:%s" + +#: ../src/dockedapp.c:293 +msgid "Start when WindowMaker is started" +msgstr "Window Maker¸¦ ½ÇÇàÇÒ¶§ ½ÃÀÛÇÔ" + +#: ../src/dockedapp.c:300 +msgid "Application path and arguments" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç °æ·Î¿Í Àμö" + +#: ../src/dockedapp.c:311 +msgid "Command for files dropped with DND" +msgstr "µå·¢¿£µå·ÓÀ¸·Î ½ÇÇàÇÒ ¸í·É¾î" + +#: ../src/dockedapp.c:323 +#, c-format +msgid "%d will be replaced with the file name" +msgstr "%d´Â ÆÄÀÏ À̸§À¸·Î ´ëüÇÕ´Ï´Ù" + +#: ../src/dockedapp.c:327 +msgid "DND support was not compiled in" +msgstr "ÄÄÆÄÀϽà DND Áö¿øÀÌ Æ÷ÇÔµÇÁö ¾Ê¾Ò½À´Ï´Ù" + +#: ../src/dockedapp.c:333 +msgid "Icon Image" +msgstr "¾ÆÀÌÄÜ À̹ÌÁö" + +#: ../src/dockedapp.c:345 ../src/winspector.c:1235 +msgid "Browse..." +msgstr "ã±â..." + +#: ../src/dockedapp.c:390 +msgid "Docked Application Settings" +msgstr "Dock ¾ÖÇø®ÄÉÀÌ¼Ç ¼³Á¤" + +#: ../src/event.c:352 +msgid "stack overflow: too many dead processes" +msgstr "½ºÅà ¿À¹öÇ÷οì: Á×Àº ÇÁ·Î¼¼½º°¡ ³Ê¹« ¸¹À½" + +#: ../src/framewin.c:485 +#, c-format +msgid "could not render gradient: %s" +msgstr "±×·¡µð¾ðÆ®¸¦ Ç¥ÇöÇÏÁö ¸øÇÔ: %s" + +#: ../src/framewin.c:501 ../src/framewin.c:516 ../src/framewin.c:527 +#: ../src/framewin.c:534 ../src/framewin.c:541 ../src/icon.c:296 +#: ../src/texture.c:578 +#, c-format +msgid "error rendering image:%s" +msgstr "À̹ÌÁö ·»´õ¸µ ¿¡·¯:%s" + +#: ../src/icon.c:182 ../src/wdefaults.c:411 +#, c-format +msgid "error loading image file \"%s\"" +msgstr "À̹ÌÁö ÆÄÀÏ \"%s\"¸¦ Àд Áß ¿¡·¯" + +#: ../src/icon.c:430 ../src/icon.c:439 +#, c-format +msgid "could not create directory %s" +msgstr "µð·ºÅ丮 %s¸¦ ¸¸µé ¼ö ¾øÀ½" + +#: ../src/icon.c:706 +#, c-format +msgid "could not find default icon \"%s\"" +msgstr "±âº» ¾ÆÀÌÄÜ \"%s\"¸¦ ãÁö ¸øÇÔ" + +#: ../src/icon.c:712 +#, c-format +msgid "could not load default icon \"%s\":%s" +msgstr "±âº» ¾ÆÀÌÄÜ \"%s\"¸¦ ÀÐÁö ¸øÇÔ:%s" + +#: ../src/main.c:195 +msgid "could not exec window manager" +msgstr "â °ü¸®ÀÚ¸¦ ½ÇÇàÇÒ ¼ö ¾øÀ½" + +#: ../src/main.c:196 +msgid "Restart failed!!!" +msgstr "Àç½ÃÀÛ ½ÇÆÐ!!!" + +#: ../src/main.c:243 +#, c-format +msgid "%s aborted.\n" +msgstr "%s´Â ÁߴܵǾú½À´Ï´Ù.\n" + +#: ../src/main.c:254 +#, c-format +msgid "Usage: %s [options]\n" +msgstr "»ç¿ë¹ý: %s [-¿É¼Ç]\n" + +#: ../src/main.c:255 +msgid "The Window Maker window manager for the X window system" +msgstr "" + +#: ../src/main.c:257 +msgid " -display host:dpy\tdisplay to use" +msgstr " -display È£½ºÆ®:µð½ºÇ÷¹ÀÌ\t»ç¿ëÇÒ µð½ºÇ÷¹ÀÌ" + +#: ../src/main.c:259 +msgid " --no-cpp \t\tdisable preprocessing of configuration files" +msgstr " --no-cpp \t\t¼³Á¤ÆÄÀÏÀÇ Àü󸮸¦ ÇÏÁö ¾ÊÀ½" + +#: ../src/main.c:261 +msgid " --no-dock\t\tdo not open the application Dock" +msgstr " --no-dock\t\t¾ÖÇø®ÄÉÀÌ¼Ç DockÀ» ¿­Áö ¾ÊÀ½" + +#: ../src/main.c:262 +msgid " --no-clip\t\tdo not open the workspace Clip" +msgstr " --no-clip\t\tÀÛ¾÷°ø°£ Ŭ¸³À» ¿­Áö ¾ÊÀ½" + +#: ../src/main.c:266 +msgid " --visual-id visualid\tvisual id of visual to use" +msgstr " --visual-id ºñÁÖ¾óID\t»ç¿ëÇÒ ºñÁÖ¾óÀÇ ºñÁÖ¾ó ID" + +#: ../src/main.c:267 +msgid " --static\t\tdo not update or save configurations" +msgstr " --static\t\t¼³Á¤À» °»½ÅÇϰųª ÀúÀåÇÏÁö ¾Ê´Â´Ù" + +#: ../src/main.c:268 +msgid " --version\t\tprint version and exit" +msgstr " --version\t\t¹öÀüÀ» Ç¥½ÃÇϰí Á¾·á" + +#: ../src/main.c:269 +msgid " --help\t\t\tshow this message" +msgstr " --help\t\t\tÀÌ È­¸éÀ» º¸¿©ÁÜ" + +#: ../src/main.c:281 +#, c-format +msgid "" +"could not find user GNUstep directory (%s).\n" +"Make sure you have installed Window Maker correctly and run wmaker.inst" +msgstr "" +"»ç¿ëÀÚ GNUstep µð·ºÅ丮(%s)¸¦ ãÀ»¼ö ¾ø½À´Ï´Ù.\n" +"Window Maker°¡ Á¦´ë·Î ¼³Ä¡µÇ¾ú´ÂÁö ´Ù½Ã È®ÀÎ ÈÄ wmaker.inst ¸¦ ½ÇÇàÇϽʽÿÀ" + +#: ../src/main.c:300 +#, c-format +msgid "%s:could not execute initialization script" +msgstr "%s:ÃʱâÈ­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." + +#: ../src/main.c:317 +#, c-format +msgid "%s:could not execute exit script" +msgstr "%s:Á¾·á ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." + +#: ../src/main.c:378 ../src/main.c:385 ../src/main.c:393 ../src/main.c:409 +#, c-format +msgid "too few arguments for %s" +msgstr "%s¸¦ À§ÇÑ ÀÎÀÚ°¡ ºÎÁ·ÇÕ´Ï´Ù" + +#: ../src/main.c:397 +#, c-format +msgid "bad value for visualid: \"%s\"" +msgstr "ºñÁÖ¾ó ID¿¡ À߸øµÈ °ª: \"%s\"" + +#: ../src/main.c:414 +#, c-format +msgid "%s: invalid argument '%s'" +msgstr "%s: '%s'¿¡ À߸øµÈ Ű" + +#: ../src/main.c:415 +#, c-format +msgid "Try '%s --help' for more information" +msgstr "´õ ¸¹Àº Á¤º¸¸¦ ¿øÇϽøé '%s --help' ÇϽñ⠹ٶø´Ï´Ù." + +#: ../src/main.c:458 +msgid "X server does not support locale" +msgstr "X ¼­¹ö°¡ ·ÎÄÉÀÏÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù" + +#: ../src/main.c:461 +msgid "cannot set locale modifiers" +msgstr "·ÎÄÉÀÏ ¼öÁ¤ÀÚ(modifier)¸¦ ¼³Á¤ÇÒ ¼ö ¾øÀ½" + +#: ../src/main.c:478 +#, c-format +msgid "could not open display \"%s\"" +msgstr "\"%s\" µð½ºÇ÷¹À̸¦ ¿­Áö ¸øÇÔ." + +#: ../src/menu.c:285 +msgid "wrealloc() failed while trying to add menu item" +msgstr "¸Þ´º ¾ÆÀÌÅÛ Ãß°¡ ½ÃµµÁß wrealloc() ½ÇÆÐ" + +#: ../src/misc.c:71 +#, c-format +msgid "could not define value for %s for cpp" +msgstr "cppÀÇ %s¸¦ À§ÇÑ °ªÀÌ Á¤ÀǵÇÁö ¾ÊÀ½" + +#: ../src/misc.c:101 +#, c-format +msgid "could not get password entry for UID %i" +msgstr "UID %iÀÇ ¾ÏÈ£ Ç׸ñ¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/misc.c:125 +#, c-format +msgid "your machine is misconfigured. HOSTNAME is set to %s" +msgstr "½Ã½ºÅÛ ¼³Á¤ÀÌ À߸øµÇ¾ú½À´Ï´Ù. HOSTNAMEÀ» %s·Î ¼³Á¤ÇÕ´Ï´Ù" + +#: ../src/misc.c:131 +#, c-format +msgid "your machine is misconfigured. HOST is set to %s" +msgstr "½Ã½ºÅÛ ¼³Á¤ÀÌ À߸øµÇ¾ú½À´Ï´Ù. HOST¸¦ %s·Î ¼³Á¤ÇÕ´Ï´Ù" + +#: ../src/misc.c:773 +msgid "selection timed-out" +msgstr "¼±Åýð£ Ãʰú" + +#: ../src/misc.c:789 +msgid "Program Arguments" +msgstr "ÇÁ·Î±×·¥ Àμö" + +#: ../src/misc.c:790 +msgid "Enter command arguments:" +msgstr "¸í·É¾î Àμö¸¦ ÀÔ·ÂÇϼ¼¿ä:" + +#: ../src/misc.c:887 +msgid "unable to get dropped data from DND drop" +msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/misc.c:895 +msgid "error getting dropped data from DND drop" +msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾ò´Âµ¥ ¿À·ù°¡ ¹ß»ýÇÏ¿´½À´Ï´Ù" + +#: ../src/misc.c:901 +msgid "out of memory while getting data from DND drop" +msgstr "DND µå·Ó¿¡¼­ ¶³¾î¶ß¸° µ¥ÀÌÅ͸¦ ¾ò´Âµ¥ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÕ´Ï´Ù" + +#: ../src/misc.c:946 ../src/misc.c:1081 +#, c-format +msgid "out of memory during expansion of \"%s\"" +msgstr "\"%s\" È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/misc.c:1000 +msgid "out of memory during expansion of \"%w\"" +msgstr "\"%w\" È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/misc.c:1018 +msgid "out of memory during expansion of \"%W\"" +msgstr "\"%W\" È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/misc.c:1034 +msgid "out of memory during expansion of \"%a\"" +msgstr "\"%a\" È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/misc.c:1060 +#, c-format +msgid "out of memory during expansion of \"%d\"" +msgstr "\"%d\" È®Àå Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/misc.c:1074 +msgid "selection not available" +msgstr "¼±Åà ºÒ°¡´É" + +#: ../src/misc.c:1146 ../src/misc.c:1152 +#, c-format +msgid "bad window name value in %s state info" +msgstr "»óÅ Á¤º¸ %sÀÇ Ã¢ À̸§ÀÌ À߸øµÊ" + +#: ../src/misc.c:1406 +msgid "could not send message to background image helper" +msgstr "¹è°æ À̹ÌÁö \"%s\" ¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/pixmap.c:235 +#, c-format +msgid "could not load mask bitmap file \"%s\". Won't use mask" +msgstr "ºñÆ®¸Ê ÆÄÀÏ \"%s\"¸¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù. ¸¶½ºÅ©¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù" + +#: ../src/proplist.c:180 +msgid "unterminated string" +msgstr "Á¾·áÇÏÁö ¾ÊÀº ¹®ÀÚ¿­" + +#: ../src/proplist.c:247 +msgid "unterminated array" +msgstr "Á¾·áÇÏÁö ¾ÊÀº ¹®ÀÚ¿­" + +#: ../src/proplist.c:256 +msgid "missing , in array or unterminated array" +msgstr "¹è¿­¿¡¼­ ½°Ç¥°¡ ºüÁ³°Å³ª Á¾·áÇÏÁö ¾ÊÀº ¹è¿­" + +#: ../src/proplist.c:267 +msgid "could not get array element" +msgstr "¹è¿­ ¿ø¼Ò¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/proplist.c:297 +msgid "unterminated dictionary" +msgstr "Á¾·áÇÏÁö ¾ÊÀº »çÀü" + +#: ../src/proplist.c:315 +msgid "missing dictionary key" +msgstr "»çÀü Ű ¾øÀ½" + +#: ../src/proplist.c:317 +msgid "missing dictionary entry key or unterminated dictionary" +msgstr "»çÀü ¿£Æ®¸® ۰¡ ¾ø°Å³ª Á¾·áÇÏÁö ¾ÊÀº »çÀü" + +#: ../src/proplist.c:323 +msgid "error parsing dictionary key" +msgstr "»çÀü ۸¦ ÇØ¼®Çϴµ¥ ¿À·ùÀÔ´Ï´Ù" + +#: ../src/proplist.c:332 +msgid "missing = in dictionary entry" +msgstr "»çÀü ¿£Æ®¸®¿¡ = °¡ ºüÁ® ÀÖ½À´Ï´Ù" + +#: ../src/proplist.c:351 +msgid "missing ; in dictionary entry" +msgstr "»çÀü ¿£Æ®¸®¿¡ ;°¡ ºüÁ® ÀÖ½À´Ï´Ù" + +#: ../src/proplist.c:432 +msgid "was expecting a string, dictionary, data or array." +msgstr "´Â ¹®ÀÚ¿­, »çÀü, µ¥ÀÌÅÍ ¶Ç´Â ¹è¿­ÀÌ ÇÊ¿äÇÕ´Ï´Ù" + +#: ../src/proplist.c:434 +msgid "Comments are not allowed inside WindowMaker owned domain files." +msgstr "ÁÖ¼®¹®Àº Window Maker µµ¸ÞÀÎ ÆÄÀÏ ³»¿¡¼­´Â Çã¿ëµÇÁö ¾Ê½À´Ï´Ù." + +#: ../src/proplist.c:453 +#, c-format +msgid "could not open domain file %s" +msgstr "µµ¸ÞÀÎ ÆÄÀÏ %s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù" + +#: ../src/proplist.c:466 +msgid "extra data after end of file" +msgstr "ÆÄÀÏ ³¡ µÚ¿¡ µ¥ÀÌÅͰ¡ ¶Ç ÀÖ½À´Ï´Ù" + +#: ../src/resources.c:71 +#, c-format +msgid "The following character sets are missing in %s:" +msgstr "´ÙÀ½ ¹®ÀÚ ¼ÂÀº %s¿¡¼­ ºüÁ® ÀÖ½À´Ï´Ù:" + +#: ../src/resources.c:76 +#, c-format +msgid "The string \"%s\" will be used in place" +msgstr "¹®ÀÚ¿­ \"%s\"ÀÌ ÀÌ ¹®ÀÚ¼ÂÀÇ ±ÛÀÚ¸¦" + +#: ../src/resources.c:78 +msgid "of any characters from those sets." +msgstr "´ë½ÅÇÏ¿© »ç¿ëµË´Ï´Ù." + +#: ../src/resources.c:81 +#, c-format +msgid "could not create font set %s. Trying fixed" +msgstr "%s ±Û²Ã ¼ÂÀ» ¸¸µéÁö ¸øÇÔ. fixed·Î ´ëüÇÕ´Ï´Ù" + +#: ../src/resources.c:98 +#, c-format +msgid "could not load font %s. Trying fixed" +msgstr "%s ±Û²ÃÀÌ ¾øÀ½. fixed·Î ´ëüÇÕ´Ï´Ù" + +#: ../src/resources.c:136 +#, c-format +msgid "could not parse color \"%s\"" +msgstr "»ö \"%s\"À» ÇØ¼®ÇÒ ¼ö ¾ø½À´Ï´Ù" + +#: ../src/resources.c:140 +#, c-format +msgid "could not allocate color \"%s\"" +msgstr "»ö \"%s\"À» ÇÒ´çÇÒ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:186 ../src/rootmenu.c:188 +msgid "Exit" +msgstr "Á¾·á" + +#: ../src/rootmenu.c:187 +msgid "Exit window manager?" +msgstr "â °ü¸®ÀÚ¸¦ Á¾·áÇϽðڽÀ´Ï±î?" + +#: ../src/rootmenu.c:223 +msgid "Close X session" +msgstr "X ¼¼¼Ç ´Ý±â" + +#: ../src/rootmenu.c:224 +msgid "" +"Close Window System session?\n" +"Kill might close applications with unsaved data." +msgstr "" +"À©µµ¿ì ½Ã½ºÅÛ ¼¼¼ÇÀ» Á¾·áÇϰڽÀ´Ï±î?\n" +"¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áµÇ°í ÀúÀåÇÏÁö ¾ÊÀº ÀÚ·á´Â ÀÒ½À´Ï´Ù." + +#: ../src/rootmenu.c:226 ../src/winmenu.c:481 +msgid "Close" +msgstr "´Ý±â" + +#: ../src/rootmenu.c:237 +msgid "Kill X session" +msgstr "X ¼¼¼Ç Á¾·á" + +#: ../src/rootmenu.c:238 +msgid "" +"Kill Window System session?\n" +"(all applications will be closed)" +msgstr "" +"À©µµ¿ì ½Ã½ºÅÛ ¼¼¼ÇÀ» Á¾·áÇϰڽÀ´Ï±î?\n" +"(¸ðµç ¾ÖÇø®ÄÉÀ̼ÇÀÌ Á¾·áµË´Ï´Ù)" + +#: ../src/rootmenu.c:467 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" +msgstr "%s: À߸øµÈ Űº¸µå ´ÜÃàŰ ÁöÁ¤ \"%s\"(¿£Æ®¸® %s)" + +#: ../src/rootmenu.c:475 +#, c-format +msgid "%s:invalid key in shortcut \"%s\" for entry %s" +msgstr "%s: »¡¸®°¡±â \"%s\"(¿£Æ®¸® %s)¿¡ À߸øµÈ Ű" + +#: ../src/rootmenu.c:528 +#, c-format +msgid "%s: unmatched '\"' in menu file" +msgstr "%s: ¸Þ´º ÆÄÀÏÀÇ '\"' ¦ÀÌ ¸ÂÁö ¾ÊÀ½" + +#: ../src/rootmenu.c:578 +#, c-format +msgid "%s: missing command" +msgstr "%s: ¸í·É¾î°¡ ¾øÀ½" + +#: ../src/rootmenu.c:611 +#, c-format +msgid "invalid OPEN_MENU specification: %s" +msgstr "OPEN_MENU ÁöÁ¤ÀÌ À߸øµÊ: %s" + +#: ../src/rootmenu.c:684 +#, c-format +msgid "%s:could not stat menu" +msgstr "%s: ¸Þ´º ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:692 +#, c-format +msgid "%s:could not stat menu:%s" +msgstr "%s: ¸Þ´º ÆÄÀÏ¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½ :%s" + +#: ../src/rootmenu.c:710 +#, c-format +msgid "too many parameters in OPEN_MENU: %s" +msgstr "OPEN_MENU¿¡ Àμö°¡ ³Ê¹« ¸¹À½: %s" + +#: ../src/rootmenu.c:746 +msgid "" +"There are more than one WORKSPACE_MENU commands in the applications menu. " +"Only one is allowed." +msgstr "" +"¾ÖÇø®ÄÉÀÌ¼Ç ¸Þ´º¿¡ WORKSPACE_MENU ¸í·ÉÀÌ µÑ ÀÌ»ó ÀÖ½À´Ï´Ù. Çϳª¸¸ ÀÖ¾î¾ß " +"ÇÕ´Ï´Ù. " + +#: ../src/rootmenu.c:775 ../src/rootmenu.c:793 +#, c-format +msgid "%s:missing parameter for menu command \"%s\"" +msgstr "%s: ¸Þ´º ¸í·É¾î \"%s\" ÀÇ Àμö°¡ ºüÁ³À½" + +#: ../src/rootmenu.c:856 +#, c-format +msgid "%s:unknown command \"%s\" in menu config." +msgstr "%s:¸Þ´º ¼³Á¤ÀÇ \"%s\" ¸í·ÉÀ» ¾Ë ¼ö ¾øÀ½." + +#: ../src/rootmenu.c:864 +#, c-format +msgid "%s:can't add shortcut for entry \"%s\"" +msgstr "%s: ¿£Æ®¸® \"%s\"¿¡ »¡¸®°¡±â¸¦ Ãß°¡ÇÒ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:1001 +#, c-format +msgid "%s:maximal line size exceeded in menu config: %s" +msgstr "%s:¸Þ´º ¼³Á¤ÀÇ ÃÖ´ë ÁÙ¼ö¸¦ ÃʰúÇÔ: %s" + +#: ../src/rootmenu.c:1023 ../src/rootmenu.c:1115 ../src/rootmenu.c:1216 +#, c-format +msgid "%s:missing command in menu config: %s" +msgstr "%s:¸Þ´º ¼³Á¤¿¡¼­ ¸í·ÉÀ» ãÀ» ¼ö ¾øÀ½: %s" + +#: ../src/rootmenu.c:1053 +#, c-format +msgid "%s:syntax error in menu file:END declaration missing" +msgstr "%s:¸Þ´ºÆÄÀÏ ¹®¹ý¿¡·¯:END ¼±¾ð¹® ¾øÀ½" + +#: ../src/rootmenu.c:1082 ../src/rootmenu.c:1181 +msgid "could not make arguments for menu file preprocessor" +msgstr "¸Þ´º ÆÄÀÏ Àü󸮱⸦ À§ÇÑ Àμö¸¦ ¸¸µé ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:1088 ../src/rootmenu.c:1188 +#, c-format +msgid "%s:could not open/preprocess menu file" +msgstr "%s: ¸Þ´º ÆÄÀÏÀ» ¿­°Å³ª Àüó¸®ÇÒ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:1100 ../src/rootmenu.c:1201 +#, c-format +msgid "%s:could not open menu file" +msgstr "%s:¸Þ´º ÆÄÀÏÀ» ¿­ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:1127 +#, c-format +msgid "%s:invalid menu file. MENU command is missing" +msgstr "%s:À߸øµÈ ¸Þ´º ÆÄÀÏ. MENU ¸í·ÉÀÌ ºüÁ³½À´Ï´Ù" + +#: ../src/rootmenu.c:1136 +msgid "error reading preprocessed menu data" +msgstr "Àüó¸®µÈ ¸Þ´º µ¥ÀÌÅ͸¦ Àдµ¥ ¿À·ù" + +#: ../src/rootmenu.c:1228 +#, c-format +msgid "%s:no title given for the root menu" +msgstr "%s:ÃÖ»óÀ§ ¸Þ´º¿¡ Á¦¸ñÀÌ ¾ø½À´Ï´Ù" + +#: ../src/rootmenu.c:1311 ../src/rootmenu.c:1378 ../src/rootmenu.c:1422 +#, c-format +msgid "out of memory while constructing directory menu %s" +msgstr "µð·ºÅ丮 ¸Þ´º %s »ý¼º Áß ¸Þ¸ð¸® ºÎÁ·" + +#: ../src/rootmenu.c:1321 +#, c-format +msgid "%s:could not stat file \"%s\" in menu directory" +msgstr "%s: ¸Þ´º µð·ºÅ丮ÀÇ ÆÄÀÏ \"%s\"¿¡ Á¢±ÙÇÒ ¼ö ¾øÀ½" + +#: ../src/rootmenu.c:1476 +msgid "Commands" +msgstr "¸í·É¾î" + +#: ../src/rootmenu.c:1479 +msgid "Restart" +msgstr "Àç½ÃÀÛ" + +#: ../src/rootmenu.c:1480 +msgid "Exit..." +msgstr "Á¾·á..." + +#: ../src/rootmenu.c:1553 +#, c-format +msgid "could not find menu file \"%s\" referenced in WMRootMenu" +msgstr "WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º ÆÄÀÏ \"%s\"¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù" + +#: ../src/rootmenu.c:1560 +#, c-format +msgid "could not access menu \"%s\" referenced in WMRootMenu" +msgstr "WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º \"%s\"¿¡ Á¢±ÙÇÒ ¼ö ¾ø½À´Ï´Ù" + +#: ../src/rootmenu.c:1571 +#, c-format +msgid "" +"using default menu file \"%s\" as the menu referenced in WMRootMenu could " +"not be found " +msgstr "" +"WMRootMenu¿¡¼­ ÂüÁ¶ÇÏ´Â ¸Þ´º ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ¸¹Ç·Î \"%s\"¸¦ ±âº» ¸Þ´º " +"ÆÄÀÏ·Î »ç¿ëÇÕ´Ï´Ù" + +#: ../src/rootmenu.c:1594 ../src/rootmenu.c:1670 +#, c-format +msgid "%s:format error in root menu configuration \"%s\"" +msgstr "%s: ÃÖ»óÀ§ ¸Þ´º ¼³Á¤ \"%s\"ÀÇ Çü½Ä ¿À·ù" + +#: ../src/screen.c:428 +msgid "could not load logo image for panels" +msgstr "ÆÐ³Î¿¡ ¾²ÀÏ ·Î°í À̹ÌÁö¸¦ ÀÐÁö ¸øÇÔ" + +#: ../src/screen.c:431 +#, c-format +msgid "error making logo image for panel:%s" +msgstr "ÆÐ³Î¿¡ ¾²ÀÏ ·Î°í À̹ÌÁö¸¦ ¸¸µéÁö ¸øÇÔ:%s" + +#: ../src/screen.c:695 +#, c-format +msgid "could not initialize graphics library context: %s" +msgstr "±×·¡ÇÈ ¶óÀ̺귯¸® ȯ°æÀ» ÃʱâÈ­ ÇÒ¼ö ¾øÀ½: %s" + +#: ../src/screen.c:727 +msgid "could not do initialization of WINGs widget set" +msgstr "%s: ÃʱâÈ­ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù." + +#: ../src/screen.c:1059 +#, c-format +msgid "could not save session state in %s" +msgstr "%sÀÇ ¼¼¼Ç »óŸ¦ ÀúÀåÇÏÁö ¸øÇÔ" + +#: ../src/session.c:182 ../src/wdefaults.c:559 ../src/winspector.c:345 +#, c-format +msgid "can't convert \"%s\" to boolean" +msgstr "\"%s\"¸¦ ºÎ¿ï °ªÀ¸·Î ¹Ù²Ü ¼ö ¾øÀ½" + +#: ../src/session.c:875 ../src/session.c:969 +msgid "end of memory while saving session state" +msgstr "¼¼¼Ç »óŸ¦ ÀúÀåÇÏ´Â Áß ¸Þ¸ð¸® ºÎÁ·" + +#. This is not fatal but can mean the session manager exited. +#. * If the session manager exited normally we would get a +#. * Die message, so this probably means an abnormal exit. +#. * If the sm was the last client of session, then we'll die +#. * anyway, otherwise we can continue doing our stuff. +#. +#: ../src/session.c:1103 +msgid "connection to the session manager was lost" +msgstr "¼¼¼Ç °ü¸®ÀÚÀÇ ¿¬°áÀÌ ²÷¾îÁ³½À´Ï´Ù" + +#: ../src/stacking.c:72 +msgid "could not get window list!!" +msgstr "â ¸ñ·Ï¸¦ ¾òÀ» ¼ö ¾ø½À´Ï´Ù!!" + +#: ../src/startup.c:195 +#, c-format +msgid "internal X error: %s\n" +msgstr "X ³»ºÎ ¿¡·¯: %s\n" + +#: ../src/startup.c:258 +#, c-format +msgid "got signal %i (%s) - restarting\n" +msgstr "%i (%s) ½ÅÈ£ °¨Áö - Àç½Ãµ¿ÇÔ\n" + +#: ../src/startup.c:260 +#, c-format +msgid "got signal %i - restarting\n" +msgstr "%i ½ÅÈ£ °¨Áö - Àç½Ãµ¿ÇÔ\n" + +#: ../src/startup.c:275 +#, c-format +msgid "got signal %i (%s) - exiting...\n" +msgstr "%i (%s) ½ÅÈ£ °¨Áö - Á¾·áÇÔ...\n" + +#: ../src/startup.c:277 +#, c-format +msgid "got signal %i - exiting...\n" +msgstr "%i ½ÅÈ£ °¨Áö - Á¾·áÇÔ...\n" + +#: ../src/startup.c:290 +#, c-format +msgid "got signal %i (%s)\n" +msgstr "%i (%s) ½ÅÈ£ °¨Áö\n" + +#: ../src/startup.c:292 +#, c-format +msgid "got signal %i\n" +msgstr "%i ½ÅÈ£ °¨Áö\n" + +#: ../src/startup.c:298 +msgid "" +"crashed while trying to do some post-crash cleanup. Aborting immediatelly." +msgstr "" +"ºñÁ¤»ó Á¾·áÈÄ Ã³¸®¸¦ ÇÏ·Á´Â µ¿¾È¿¡ ºñÁ¤»ó Á¾·áµÇ¾ú½À´Ï´Ù. Áï½Ã Á¾·áÇÕ´Ï´Ù." + +#: ../src/startup.c:309 +msgid "" +"a fatal error has occured, probably due to a bug. Please fill the included " +"BUGFORM and report it." +msgstr "" +"Ä¡¸íÀûÀÎ ¿À·ù ¹ß»ý, ¾Æ¸¶µµ ¹ö±×ÀÎ °Í °°½À´Ï´Ù. BUGFORMÀ» ÀÛ¼ºÇØ º¸³»Áֽñæ " +"ºÎʵ右´Ï´Ù." + +#: ../src/startup.c:316 +msgid "trying to start alternative window manager..." +msgstr "´ëü¿ë â °ü¸®ÀÚ¸¦ ½ÃÀÛÇϰڽÀ´Ï´Ù..." + +#: ../src/startup.c:719 +#, c-format +msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" +msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ Å©±â(%i)°¡ ³Ê¹« ÀÛÀ½. ´ë½Å 16À¸·Î ¹Ù²ß´Ï´Ù\n" + +#: ../src/startup.c:763 +msgid "it seems that there already is a window manager running" +msgstr "ÀÌ¹Ì ´Ù¸¥ â °ü¸®ÀÚ°¡ µ¿ÀÛÇϰí ÀÖ´Â °Í °°½À´Ï´Ù" + +#: ../src/startup.c:769 +#, c-format +msgid "could not manage screen %i" +msgstr "È­¸é %i¸¦ Á¦¾îÇÒ ¼ö ¾øÀ½" + +#: ../src/startup.c:829 +msgid "could not manage any screen" +msgstr "¸ðµç È­¸éÀ» Á¦¾îÇÒ ¼ö ¾øÀ½" + +#: ../src/switchmenu.c:114 +msgid "Windows" +msgstr "â" + +#: ../src/texture.c:274 ../src/texture.c:318 +#, c-format +msgid "image file \"%s\" used as texture could not be found." +msgstr "ÅØ½ºÃ³·Î »ç¿ëÇÏ´Â À̹ÌÁö ÆÄÀÏ \"%s\"À» ãÀ» ¼ö ¾ø½À´Ï´Ù." + +#: ../src/texture.c:280 ../src/texture.c:324 +#, c-format +msgid "could not load texture pixmap \"%s\":%s" +msgstr "ÅØ½ºÃ³ ÇȽº¸Ê \"%s\"À» ¿­ ¼ö°¡ ¾øÀ½: %s" + +#: ../src/texture.c:463 ../src/texture.c:574 +#, c-format +msgid "could not render texture: %s" +msgstr "ÅØ½ºÃ³ ·»´õ¸µÀ» ÇÒ ¼ö ¾øÀ½: %s" + +#: ../src/wdefaults.c:405 +#, c-format +msgid "could not find icon file \"%s\"" +msgstr "¾ÆÀÌÄÜ ÆÄÀÏ \"%s\"À» ãÁö ¸øÇß½À´Ï´Ù" + +#: ../src/window.c:2377 ../src/window.c:2509 +msgid "" +"the NumLock, ScrollLock or similar key seems to be turned on.\n" +"Turn it off or some mouse actions and keyboard shortcuts will not work." +msgstr "" +"NumLock, ScrollLock À̳ª ´Ù¸¥ ºñ½ÁÇÑ Á¾·ùÀÇ Å°°¡ ÄÑÁ® ÀÖ´Â °Í °°½À´Ï´Ù.\n" +"²ôÁö ¾ÊÀ¸¸é ÀϺΠ¸¶¿ì½º µ¿ÀÛÀ̳ª Űº¸µå ´ÜÃà۰¡ µ¿ÀÛÇÏÁö ¾Ê½À´Ï´Ù." + +#: ../src/winmenu.c:249 ../src/winmenu.c:257 +msgid "Set Shortcut" +msgstr "´ÜÃàŰ ¼±ÅÃ" + +#: ../src/winmenu.c:333 ../src/winmenu.c:379 +msgid "could not create submenu for window menu" +msgstr "â ¸Þ´º¸¦ À§ÇÑ ºÎ¸Þ´º¸¦ ¸¸µé ¼ö ¾ø½À´Ï´Ù" + +#: ../src/winmenu.c:388 +msgid "Keep at bottom" +msgstr "Ç×»ó ¾Æ·¡·Î/°¡¶ó¾ÉÀ½" + +#: ../src/winmenu.c:393 ../src/winspector.c:1141 +msgid "Omnipresent" +msgstr "Ç×»ó º¸ÀÓ" + +#: ../src/winmenu.c:416 ../src/winmenu.c:551 +msgid "Maximize" +msgstr "ÃÖ´ëÈ­" + +#: ../src/winmenu.c:424 ../src/winmenu.c:537 +msgid "Miniaturize" +msgstr "ÃÖ¼ÒÈ­" + +#: ../src/winmenu.c:433 ../src/winmenu.c:565 +msgid "Shade" +msgstr "°¡¸²" + +#: ../src/winmenu.c:449 +msgid "Resize/Move" +msgstr "Å©±â¹Ù²Þ/À̵¿" + +#: ../src/winmenu.c:457 +msgid "Select" +msgstr "¼±ÅÃ" + +#: ../src/winmenu.c:465 +msgid "Move To" +msgstr "À̵¿" + +#: ../src/winmenu.c:470 +msgid "Attributes..." +msgstr "¼Ó¼º ¼³Á¤..." + +#: ../src/winmenu.c:472 +msgid "Options" +msgstr "¿É¼Ç" + +#: ../src/winmenu.c:532 +msgid "Deminiaturize" +msgstr "º¸ÅëÅ©±â" + +#: ../src/winmenu.c:546 +msgid "Unmaximize" +msgstr "º¸ÅëÅ©±â" + +#: ../src/winmenu.c:560 +msgid "Unshade" +msgstr "º¸ÀÓ" + +#: ../src/winspector.c:279 +#, c-format +msgid "Could not find icon \"%s\" specified for this window" +msgstr "ÀÌ Ã¢¿¡¼­ ÁöÁ¤ÇÑ ¾ÆÀÌÄÜ \"%s\"À» ãÀ» ¼ö ¾øÀ½" + +#: ../src/winspector.c:295 +#, c-format +msgid "Could not open specified icon \"%s\":%s" +msgstr "ÁöÁ¤µÈ ¾ÆÀÌÄÜ \"%s\"À» ¿­ ¼ö ¾øÀ½:%s" + +#: ../src/winspector.c:1016 +msgid "Save" +msgstr "ÀúÀå" + +#: ../src/winspector.c:1024 +msgid "Apply" +msgstr "Àû¿ë" + +#: ../src/winspector.c:1030 +msgid "Reload" +msgstr "´Ù½ÃÀбâ" + +#: ../src/winspector.c:1039 ../src/winspector.c:1049 +msgid "Window Specification" +msgstr "â ¼±ÅÃ" + +#: ../src/winspector.c:1040 +msgid "Window Attributes" +msgstr "â ¼Ó¼º" + +#: ../src/winspector.c:1041 +msgid "Advanced Options" +msgstr "°í±Þ ¿É¼Ç" + +#: ../src/winspector.c:1042 +msgid "Icon and Initial Workspace" +msgstr "¾ÆÀÌÄܰú Ãʱâ ÀÛ¾÷°ø°£" + +#: ../src/winspector.c:1043 +msgid "Application Specific" +msgstr "¾ÖÇø®ÄÉÀ̼ǿ¡ µû¶ó ´Ù¸¥ ¼³Á¤" + +#: ../src/winspector.c:1057 +msgid "Defaults for all windows" +msgstr "¸ðµç âÀÇ ±âº»°ªÀ¸·Î" + +#: ../src/winspector.c:1100 +msgid "" +"The configuration will apply to all\n" +"windows that have their WM_CLASS property set to the above selected\n" +"name, when saved." +msgstr "" +"¼³Á¤À» ÀúÀåÇϸé WM_CLASS Ư¼º°ªÀÌ\n" +"À§¿¡¼­ ÁöÁ¤ÇÑ À̸§À¸·Î µÇ¾î ÀÖ´Â\n" +"¸ðµç â¿¡ ±× ¼³Á¤ÀÌ Àû¿ëµË´Ï´Ù." + +#: ../src/winspector.c:1107 +msgid "Attributes" +msgstr "¼Ó¼º" + +#: ../src/winspector.c:1117 +msgid "Disable titlebar" +msgstr "Á¦¸ñ ¹Ù ¾ø¾Ú" + +#: ../src/winspector.c:1121 +msgid "Disable resizebar" +msgstr "Å©±âÁ¶Á¤ ¹Ù ¾ø¾Ú" + +#: ../src/winspector.c:1125 +msgid "Disable close button" +msgstr "´Ý±â ¹öư ¾ø¾Ú" + +#: ../src/winspector.c:1129 +msgid "Disable miniaturize button" +msgstr "ÃÖ¼ÒÈ­ ¹öư ¾ø¾Ú" + +#: ../src/winspector.c:1133 +msgid "Keep on top / floating" +msgstr "Ç×»ó À§·Î/¶ä" + +#: ../src/winspector.c:1137 +msgid "Keep at bottom / sunken" +msgstr "Ç×»ó ¾Æ·¡·Î/°¡¶ó¾ÉÀ½" + +#: ../src/winspector.c:1145 +msgid "Start Miniaturized" +msgstr "ÃÖ¼ÒÈ­ÇÏ¿© ½ÇÇà" + +#: ../src/winspector.c:1149 +msgid "Start Maximized" +msgstr "ÃÖ´ëÈ­ÇÏ¿© ½ÇÇà" + +#: ../src/winspector.c:1153 +msgid "Skip window list" +msgstr "â ¸ñ·Ï¿¡ ³ªÅ¸³ªÁö ¾ÊÀ½" + +#: ../src/winspector.c:1167 +msgid "Advanced" +msgstr "°í±Þ Ç׸ñ" + +#: ../src/winspector.c:1177 +msgid "Ignore HideOthers" +msgstr "´Ù¸¥ °Íµé ¼û±è ¹«½ÃÇÔ" + +#: ../src/winspector.c:1181 +msgid "Don't bind keyboard shortcuts" +msgstr "Űº¸µå ´ÜÃàŰ »ç¿ë ¾ÈÇÔ" + +#: ../src/winspector.c:1185 +msgid "Don't bind mouse clicks" +msgstr "¸¶¿ì½º Ŭ¸¯ »ç¿ë ¾ÈÇÔ" + +#: ../src/winspector.c:1189 +msgid "Keep inside screen" +msgstr "Ç×»ó È­¸é¾È¿¡ À§Ä¡" + +#: ../src/winspector.c:1193 +msgid "Don't let it take focus" +msgstr "Ȱ¼ºÈ­ ¾ÈµÊ" + +#: ../src/winspector.c:1197 +msgid "Don't Save Session" +msgstr "¼¼¼ÇÀ» ÀúÀåÇÏÁö ¾ÊÀ½" + +#: ../src/winspector.c:1201 +msgid "Emulate Application Icon" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜ Èä³»³»±â" + +#: ../src/winspector.c:1216 +msgid "" +"Enable the \"Don't bind...\" options to allow the application to receive all " +"mouse or keyboard events." +msgstr "" +"¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸ðµç ¸¶¿ì½º¿Í Űº¸µå À̺¥Æ®¸¦ ¹Þµµ·Ï \"... »ç¿ë ¾ÈÇÔ\" ¿É¼ÇÀ» " +"»ç¿ë °¡´ÉÇϵµ·Ï ÇÕ´Ï´Ù." + +#: ../src/winspector.c:1223 +msgid "Miniwindow Image" +msgstr "¾ÆÀÌÄÜ À̹ÌÁö" + +#: ../src/winspector.c:1242 +msgid "Update" +msgstr "°»½Å" + +#: ../src/winspector.c:1257 +msgid "Icon file name:" +msgstr "¾ÆÀÌÄÜ ÆÄÀϸí:" + +#: ../src/winspector.c:1269 +msgid "Ignore client supplied icon" +msgstr "Ŭ¶óÀÌ¾ðÆ® Á¦°ø ¾ÆÀÌÄÜ ¹«½ÃÇÔ" + +#: ../src/winspector.c:1276 +msgid "Initial Workspace" +msgstr "Ãʱâ ÀÛ¾÷°ø°£" + +#: ../src/winspector.c:1281 +msgid "Nowhere in particular" +msgstr "Ưº°ÇÑ ¼³Á¤ ¾øÀ½" + +#: ../src/winspector.c:1315 +msgid "Application Wide" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¿ÍÀ̵å" + +#: ../src/winspector.c:1325 +msgid "Start Hidden" +msgstr "¼û°Ü¼­ ½ÇÇà" + +#: ../src/winspector.c:1329 +msgid "No application icon" +msgstr "¾ÖÇø®ÄÉÀÌ¼Ç ¾ÆÀÌÄÜ ¾øÀ½" + +#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:480 +#, c-format +msgid "Workspace %i" +msgstr "ÀÛ¾÷°ø°£ %i" + +#: ../src/workspace.c:537 +msgid "Workspaces" +msgstr "ÀÛ¾÷°ø°£" + +#: ../src/workspace.c:539 +msgid "could not create Workspace menu" +msgstr "ÀÛ¾÷°ø°£ ¸Þ´º¸¦ ¸¸µé¼ö ¾øÀ½" + +#: ../src/workspace.c:546 +msgid "New" +msgstr "»õ ÀÛ¾÷°ø°£ ¸¸µë" + +#: ../src/workspace.c:547 +msgid "Destroy Last" +msgstr "¸¶Áö¸· ÀÛ¾÷°ø°£ ¾ø¾Ú" + +#: ../src/xutil.c:228 +msgid "invalid data in selection" +msgstr "¼±Åÿ¡ À߸øµÈ µ¥ÀÌÅÍ" diff --git a/po/pl.po b/po/pl.po index 98618c6a..f7743795 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,511 +1,553 @@ +# Pre-translation has bean done using PePeSza v0.6 +# get your own copy of PePeSza from http://www.ids.pl/~pkollegu/pepesza.html +# +# Window Maker Polish translation. +# Copyright (C) 1999 Free Software Foundation, Inc. +# Piotr Dembiñski <pdemb@fanthom.math.put.poznan.pl>, 1998. +# +#, fuzzy msgid "" msgstr "" -"Date: 1998-09-02 18:12:14+0200\n" -"From: Piotr Dembiñski <hector@kki.net.pl>\n" -"Language-Team: Pollish \n" -"Content-Type: text/plain; charset=iso8859-2\n" -"Xgettext-Options: --default-domain=WindowMaker --add-comments --keyword=_\n" -"Files: ../src/appicon.c ../src/defaults.c ../src/dialog.c ../src/dock.c ../src/dockedapp.c ../src/event.c ../src/framewin.c ../src/icon.c ../src/main.c ../src/menu.c ../src/misc.c ../src/pixmap.c ../src/proplist.c ../src/resources.c ../src/rootmenu.c ../src/screen.c ../src/session.c ../src/stacking.c ../src/startup.c ../src/switchmenu.c ../src/texture.c ../src/wdefaults.c ../src/window.c ../src/winmenu.c ../src/winspector.c ../src/workspace.c ../src/xutil.c\n" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 1999-01-24 14:05+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Piotr Dembiñski <pdemb@fanthom.math.put.poznan.pl>\n" +"Language-Team: Polish <pl@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO8859-2\n" +"Content-Transfer-Encoding: ISO8859-2\n" -#: ../src/appicon.c:500 ../src/dialog.c:262 ../src/dialog.c:318 ../src/dock.c:2977 ../src/dockedapp.c:206 ../src/rootmenu.c:164 ../src/winspector.c:276 ../src/winspector.c:289 +#: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 +#: ../src/dock.c:3059 ../src/dockedapp.c:206 ../src/winspector.c:283 +#: ../src/winspector.c:299 msgid "Error" msgstr "B³±d" -#: ../src/appicon.c:501 +#: ../src/appicon.c:510 msgid "Could not open specified icon file" msgstr "Nie mo¿na otworzyæ pliku z ikon±" -#: ../src/appicon.c:522 ../src/dock.c:263 ../src/winmenu.c:85 -msgid "Kill Application" -msgstr "Zabij Aplikacjê" - -#: ../src/appicon.c:523 ../src/dock.c:264 ../src/winmenu.c:86 -msgid "" -"This will kill the application.\n" -"Any unsaved changes will be lost.\n" -"Please confirm." -msgstr "" -"To zabije aplikacjê.\n" -"Wszystkie nie zachowane zmiany zostan± stracone.\n" -"Proszê potwierdziæ." - -#: ../src/appicon.c:538 ../src/dock.c:1017 -msgid "Unhide Here" -msgstr "Odkryj Tutaj" - -#: ../src/appicon.c:539 ../src/dock.c:1019 -msgid "(Un)Hide" -msgstr "(Nie)Ukryj" - -#: ../src/appicon.c:540 -msgid "Set Icon..." -msgstr "Ustaw Ikonê..." - -#: ../src/appicon.c:541 ../src/dock.c:1023 ../src/winmenu.c:260 -msgid "Kill" -msgstr "Zabij" - -#: ../src/defaults.c:577 ../src/screen.c:535 ../src/screen.c:643 ../src/screen.c:649 -msgid "could not read domain \"%s\" from defaults database" -msgstr "nie mo¿na odczytaæ domeny \"%s\" z bazy danych" - -#: ../src/defaults.c:623 ../src/defaults.c:745 ../src/defaults.c:780 ../src/defaults.c:806 -msgid "Domain %s (%s) of defaults database is corrupted!" -msgstr "Domena %s (%s) w bazie danych jest zniszczona!" - -#: ../src/defaults.c:628 ../src/defaults.c:762 ../src/defaults.c:789 ../src/defaults.c:814 -msgid "could not load domain %s from user defaults database" -msgstr "nie mo¿na za³adowaæ domeny %s z bazy danych u¿ytkownika" - -#: ../src/defaults.c:639 ../src/defaults.c:730 -msgid "Domain %s (%s) of global defaults database is corrupted!" -msgstr "Domena %s (%s) w globalnej bazie danych jest zniszczona!" - -#: ../src/defaults.c:656 ../src/defaults.c:735 -msgid "could not load domain %s from global defaults database" -msgstr "nie mo¿na za³adowaæ domeny %s z globalnej bazy danych" - -#: ../src/defaults.c:1102 -msgid "can't convert \"%s\" to boolean for key \"%s\"" -msgstr "nie mo¿na zmieniæ \"%s\" na warto¶æ logiczn± dla klucza \"%s\"" - -#: ../src/defaults.c:1107 ../src/defaults.c:1141 ../src/defaults.c:1173 ../src/defaults.c:1186 ../src/defaults.c:1201 ../src/defaults.c:1216 ../src/defaults.c:1287 ../src/defaults.c:1299 ../src/defaults.c:1358 ../src/defaults.c:1402 ../src/defaults.c:1444 ../src/defaults.c:1490 ../src/defaults.c:1536 ../src/defaults.c:1759 ../src/defaults.c:1773 ../src/defaults.c:1806 ../src/defaults.c:1818 ../src/defaults.c:1830 ../src/defaults.c:1854 ../src/defaults.c:1872 ../src/defaults.c:1885 ../src/defaults.c:1898 ../src/defaults.c:1935 ../src/defaults.c:1973 ../src/defaults.c:2037 ../src/defaults.c:2188 -msgid "using default \"%s\" instead" -msgstr "u¿ywam domy¶lnego \"%s\"" - -#: ../src/defaults.c:1138 -msgid "can't convert \"%s\" to integer for key \"%s\"" -msgstr "nie mo¿na zmieniæ \"%s\" na liczbê ca³kowit± dla klucza \"%s\"" - -#: ../src/defaults.c:1168 ../src/defaults.c:1282 ../src/defaults.c:1754 ../src/defaults.c:1801 ../src/wdefaults.c:541 ../src/wdefaults.c:577 -msgid "Wrong option format for key \"%s\". Should be %s." -msgstr "Niew³a¶ciwy format opcji dla klucza \"%s\". Powinno byæ %s." - -#: ../src/defaults.c:1181 -msgid "Incorrect number of elements in array for key \"%s\"." -msgstr "Niew³a¶ciwa liczba elementów w tablicy dla klucza \"%s\"." - -#: ../src/defaults.c:1196 -msgid "Wrong value for key \"%s\". Should be Coordinate." -msgstr "Niew³a¶ciwa warto¶æ dla klucza \"%s\". Powinna byæ Wspó³rzêdna." - -#: ../src/defaults.c:1211 -msgid "can't convert array to integers for \"%s\"." -msgstr "nie mo¿na zamieniæ tablicy na liczby ca³kowite dla \"%s\"." - -#: ../src/defaults.c:1350 -msgid "Invalid focus mode \"%s\". Should be Manual, Auto or Sloppy." -msgstr "Niew³a¶ciwy tryb aktywizacji \"%s\". Powinno byæ: Manual, Auto lub Sloopy." - -#: ../src/defaults.c:1353 -msgid "Invalid colormap focus mode \"%s\". Should be Manual or Auto." -msgstr "Niew³a¶ciwy tryb aktywizacji mapy kolorów \"%s\". Powinno byæ: Manual lub Auto." - -#: ../src/defaults.c:1396 -msgid "Invalid window placement mode \"%s\". Should be Auto, Cascade, Random or Manual." -msgstr "Niew³a¶ciwy tryb umieszczania okna \"%s\". Powinno byæ: Auto, Cascade, Random lub Manual." - -#: ../src/defaults.c:1438 -msgid "Invalid geometry display type \"%s\". Should be Center, Corner, Floating or Line." -msgstr "Niew³a¶ciwy typ geometrii obrazu \"%s\". Powinno byæ: Center, Corner, Floating lub Line." - -#: ../src/defaults.c:1485 -msgid "Invalid speed \"%s\". Should be UltraFast, Fast, Medium, Slow or UltraSlow." -msgstr "Niew³a¶ciwa szybko¶æ \"%s\". Powinno byæ: UltraFast, Fast, Medium, Slow lub UltraSlow." - -#: ../src/defaults.c:1530 -msgid "Invalid mouse button \"%s\". Should be Left, Middle, Right or Button1 through Button5" -msgstr "Niew³a¶ciwy przycisk myszy \"%s\". Powinno byæ: Left, Middle, Right lub Button1 do Button5" - -#: ../src/defaults.c:1599 ../src/defaults.c:1630 ../src/defaults.c:1642 ../src/defaults.c:1684 ../src/defaults.c:1721 -msgid "\"%s\" is not a valid color name" -msgstr "\"%s\" nie jest w³a¶ciw± nazw± koloru" - -#: ../src/defaults.c:1611 -msgid "bad number of arguments in gradient specification" -msgstr "niew³a¶ciwa liczba argumentów w okre¶leniu gradientu" - -#: ../src/defaults.c:1657 -msgid "too few arguments in multicolor gradient specification" -msgstr "zbyt ma³o argumentów w okre¶leniu wielokolorowego gradientu" - -#: ../src/defaults.c:1768 -msgid "Error in texture specification for key \"%s\"" -msgstr "B³±d w okre¶leniu tekstury dla klucza \"%s\"" - -#: ../src/defaults.c:1814 ../src/defaults.c:1850 -msgid "Too few elements in array for key \"WorkspaceBack\"." -msgstr "Zbyt ma³o elementów w tablicy dla klucza \"WorkspaceBack\"." - -#: ../src/defaults.c:1826 -msgid "Wrong type for workspace background. Should be Texture." -msgstr "Niew³a¶ciwy typ t³a pulpitu. Powinna byæ Tekstura." - -#: ../src/defaults.c:1868 -msgid "Cannot get color entry for key \"WorkspaceBack\"." -msgstr "Nie mo¿na wzi±æ koloru dla klucza \"WorkspaceBack\"." - -#: ../src/defaults.c:1880 -msgid "key \"WorkspaceBack\" has invalid color \"%s\"" -msgstr "klucz \"WorkspaceBack\" ma niew³a¶ciwy kolor \"%s\"" - -#: ../src/defaults.c:1894 -msgid "Cannot get file entry for key \"WorkspaceBack\"." -msgstr "Nie mo¿na wzi±æ pliku dla klucza \"WorkspaceBack\"." - -#: ../src/defaults.c:1912 -msgid "could not run \"%s\"" -msgstr "nie mo¿na uruchomiæ \"%s\"" - -#: ../src/defaults.c:1918 -msgid "could not find background image \"%s\"" -msgstr "nie mo¿na znale¼æ obrazka na t³o \"%s\"" - -#: ../src/defaults.c:1931 -msgid "Error in texture specification for key \"WorkspaceBack\"" -msgstr "B³±d w okre¶leniu tekstury dla klucza \"WorkspaceBack\"" - -#: ../src/defaults.c:1968 -msgid "Invalid justification type \"%s\". Should be Left, Center or Right" -msgstr "Niew³a¶ciwy typ wyrównywania \"%s\". Powinno byæ: Left, Center lub Right" - -#: ../src/defaults.c:2002 -msgid "could not load any usable font" -msgstr "nie mo¿na za³adowaæ ¿adnego fontu" - -#: ../src/defaults.c:2032 -msgid "could not get color for key \"%s\"" -msgstr "nie mo¿na wzi±æ koloru dla klucza \"%s\"" - -#: ../src/defaults.c:2091 ../src/rootmenu.c:435 -msgid "%s:invalid key modifier \"%s\"" -msgstr "%s:niew³a¶ciwy modyfikator klucza \"%s\"" - -#: ../src/defaults.c:2103 -msgid "%s:invalid kbd shortcut specification \"%s\"" -msgstr "%s:niew³a¶ciwe okre¶lenie skrótu klawiaturowego \"%s\"" - -#: ../src/defaults.c:2110 -msgid "%s:invalid key in shortcut \"%s\"" -msgstr "%s:niew³a¶ciwy klawisz w skrócie \"%s\"" - -#: ../src/defaults.c:2136 -msgid "%s: modifier key %s is not valid" -msgstr "%s: klawisz zmiany %s nie jest w³a¶ciwy" - -#: ../src/defaults.c:2182 -msgid "Invalid icon Position \"%s\". Should be one of blv, blh, brv, brh, tlv, tlh, trv, trh" -msgstr "Niew³a¶ciwa Pozycja ikony \"%s\". Powinno byæ: blv, blh, brv, brh, tlv, tlh, trv, trh " - -#: ../src/defaults.c:2264 -msgid "could not render texture for icon background" -msgstr "nie mo¿na pokazaæ tekstury dla t³a ikony" - -#: ../src/defaults.c:2609 -msgid "could not render texture for workspace background" -msgstr "nie mo¿na pokazaæ tekstury dla t³a pulpitu" - -#: ../src/dialog.c:67 ../src/dialog.c:79 ../src/dialog.c:162 ../src/dialog.c:498 ../src/dockedapp.c:349 +#: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 +#: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 +#: ../src/dock.c:3060 ../src/dockedapp.c:206 ../src/dockedapp.c:350 +#: ../src/winspector.c:284 ../src/winspector.c:300 msgid "OK" msgstr "OK" -#: ../src/dialog.c:67 ../src/dialog.c:72 ../src/dialog.c:162 ../src/dialog.c:505 ../src/dockedapp.c:355 -msgid "Cancel" -msgstr "Anuluj" +#: ../src/appicon.c:532 ../src/dock.c:272 ../src/winmenu.c:123 +msgid "Kill Application" +msgstr "Zabij Aplikacjê" -#: ../src/dialog.c:72 ../src/rootmenu.c:206 -msgid "Exit" -msgstr "Zakoñcz" +#: ../src/appicon.c:533 ../src/dock.c:273 ../src/winmenu.c:124 +msgid "This will kill the application.\nAny unsaved changes will be lost.\nPlease confirm." +msgstr "To zabije aplikacjê.\nWszystkie nie zachowane zmiany zostan± stracone.\nProszê potwierdziæ." -#: ../src/dialog.c:84 +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 msgid "Yes" msgstr "Tak" -#: ../src/dialog.c:84 +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 msgid "No" msgstr "Nie" -#: ../src/dialog.c:257 +#: ../src/appicon.c:548 ../src/dock.c:1065 +msgid "Unhide Here" +msgstr "Odkryj Tutaj" + +#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/winmenu.c:441 +msgid "Hide" +msgstr "Ukryj" + +#: ../src/appicon.c:550 +msgid "Set Icon..." +msgstr "Ustaw Ikonê..." + +#: ../src/appicon.c:551 ../src/dock.c:1071 ../src/rootmenu.c:225 +#: ../src/rootmenu.c:239 ../src/winmenu.c:488 +msgid "Kill" +msgstr "Zabij" + +#: ../src/appicon.c:572 +msgid "Unhide" +msgstr "Odkryj" + +#: ../src/defaults.c:735 ../src/startup.c:700 ../src/startup.c:718 +#: ../src/startup.c:724 +#, c-format +msgid "could not read domain \"%s\" from defaults database" +msgstr "nie mo¿na odczytaæ domeny \"%s\" z bazy danych" + +#: ../src/defaults.c:781 ../src/defaults.c:905 ../src/defaults.c:944 +#: ../src/defaults.c:974 +#, c-format +msgid "Domain %s (%s) of defaults database is corrupted!" +msgstr "Domena %s (%s) w bazie danych jest zniszczona!" + +#: ../src/defaults.c:786 ../src/defaults.c:926 ../src/defaults.c:957 +#: ../src/defaults.c:983 +#, c-format +msgid "could not load domain %s from user defaults database" +msgstr "nie mo¿na za³adowaæ domeny %s z bazy danych u¿ytkownika" + +#: ../src/defaults.c:797 ../src/defaults.c:890 +#, c-format +msgid "Domain %s (%s) of global defaults database is corrupted!" +msgstr "Domena %s (%s) w globalnej bazie danych jest zniszczona!" + +#: ../src/defaults.c:816 ../src/defaults.c:895 +#, c-format +msgid "could not load domain %s from global defaults database" +msgstr "nie mo¿na za³adowaæ domeny %s z globalnej bazy danych" + +#: ../src/defaults.c:1266 +#, c-format, fuzzy +msgid "wrong option value for key \"%s\". Should be one of %s" +msgstr "niew³a¶ciwa warto¶æ dla klucza \"%s\". Powinno byæ jedno z: %s" + +#: ../src/defaults.c:1313 +#, c-format +msgid "can't convert \"%s\" to boolean for key \"%s\"" +msgstr "nie mo¿na zmieniæ \"%s\" na warto¶æ logiczn± dla klucza \"%s\"" + +#: ../src/defaults.c:1318 ../src/defaults.c:1352 ../src/defaults.c:1384 +#: ../src/defaults.c:1397 ../src/defaults.c:1412 ../src/defaults.c:1426 +#: ../src/defaults.c:1498 ../src/defaults.c:1510 ../src/defaults.c:1858 +#: ../src/defaults.c:1875 ../src/defaults.c:1888 ../src/defaults.c:1921 +#: ../src/defaults.c:1937 ../src/defaults.c:1968 ../src/defaults.c:2041 +#, c-format +msgid "using default \"%s\" instead" +msgstr "u¿ywam domy¶lnego \"%s\"" + +#: ../src/defaults.c:1349 +#, c-format +msgid "can't convert \"%s\" to integer for key \"%s\"" +msgstr "nie mo¿na zmieniæ \"%s\" na liczbê ca³kowit± dla klucza \"%s\"" + +#: ../src/defaults.c:1379 ../src/defaults.c:1493 ../src/defaults.c:1853 +#: ../src/defaults.c:1870 ../src/defaults.c:1916 ../src/defaults.c:1963 +#: ../src/wdefaults.c:541 ../src/wdefaults.c:577 +#, c-format +msgid "Wrong option format for key \"%s\". Should be %s." +msgstr "Niew³a¶ciwy format opcji dla klucza \"%s\". Powinno byæ %s." + +#: ../src/defaults.c:1392 +#, c-format +msgid "Incorrect number of elements in array for key \"%s\"." +msgstr "Niew³a¶ciwa liczba elementów w tablicy dla klucza \"%s\"." + +#: ../src/defaults.c:1407 +#, c-format +msgid "Wrong value for key \"%s\". Should be Coordinate." +msgstr "Niew³a¶ciwa warto¶æ dla klucza \"%s\". Powinna byæ Wspó³rzêdna." + +#: ../src/defaults.c:1422 +#, c-format +msgid "can't convert array to integers for \"%s\"." +msgstr "nie mo¿na zamieniæ tablicy na liczby ca³kowite dla \"%s\"." + +#: ../src/defaults.c:1619 ../src/defaults.c:1651 ../src/defaults.c:1667 +#: ../src/defaults.c:1713 ../src/defaults.c:1753 ../src/defaults.c:1791 +#: ../src/defaults.c:1807 +#, c-format +msgid "\"%s\" is not a valid color name" +msgstr "\"%s\" nie jest w³a¶ciw± nazw± koloru" + +#: ../src/defaults.c:1632 +msgid "bad number of arguments in gradient specification" +msgstr "niew³a¶ciwa liczba argumentów w okre¶leniu gradientu" + +#: ../src/defaults.c:1686 +msgid "too few arguments in multicolor gradient specification" +msgstr "zbyt ma³o argumentów w okre¶leniu wielokolorowego gradientu" + +#: ../src/defaults.c:1780 +msgid "bad number of arguments in textured gradient specification" +msgstr "niew³a¶ciwa liczba argumentów w okre¶leniu gradientu z tekstury" + +#: ../src/defaults.c:1823 +#, c-format +msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" +msgstr "niew³a¶ciwa warto¶æ opacity dla gradientowanej tekstury \"%s\". Powinna byæ liczba z zakresu [0..255]" + +#: ../src/defaults.c:1836 +#, c-format +msgid "invalid texture type %s" +msgstr "niew³a¶ciwy typ tekstury %s" + +#: ../src/defaults.c:1883 +#, c-format +msgid "Error in texture specification for key \"%s\"" +msgstr "B³±d w okre¶leniu tekstury dla klucza \"%s\"" + +#: ../src/defaults.c:1933 +msgid "Wrong type for workspace background. Should be a texture type." +msgstr "Niew³a¶ciwy typ t³a pulpitu. Powinna byæ tekstura." + +#: ../src/defaults.c:1981 +#, c-format +msgid "Wrong type for background of workspace %i. Should be a texture." +msgstr "Niew³a¶ciwy typ t³a pulpitu %i. Powinna byæ tekstura." + +#: ../src/defaults.c:2006 +msgid "could not load any usable font!!!" +msgstr "nie mo¿na za³adowaæ ¿adnego fontu!!!" + +#: ../src/defaults.c:2036 +#, c-format +msgid "could not get color for key \"%s\"" +msgstr "nie mo¿na wzi±æ koloru dla klucza \"%s\"" + +#: ../src/defaults.c:2095 ../src/rootmenu.c:450 +#, c-format +msgid "%s:invalid key modifier \"%s\"" +msgstr "%s:niew³a¶ciwy modyfikator klucza \"%s\"" + +#: ../src/defaults.c:2107 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\"" +msgstr "%s:niew³a¶ciwe okre¶lenie skrótu klawiaturowego \"%s\"" + +#: ../src/defaults.c:2114 +#, c-format +msgid "%s:invalid key in shortcut \"%s\"" +msgstr "%s:niew³a¶ciwy klawisz w skrócie \"%s\"" + +#: ../src/defaults.c:2140 +#, c-format +msgid "%s: modifier key %s is not valid" +msgstr "%s: klawisz zmiany %s nie jest w³a¶ciwy" + +#: ../src/defaults.c:2216 +msgid "could not render texture for icon background" +msgstr "nie mo¿na pokazaæ tekstury dla t³a ikony" + +#: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 +#: ../src/dockedapp.c:356 ../src/rootmenu.c:187 ../src/rootmenu.c:225 +#: ../src/rootmenu.c:239 +msgid "Cancel" +msgstr "Anuluj" + +#: ../src/dialog.c:211 msgid "Could not open directory " msgstr "Nie mo¿na otworzyæ katalogu " -#: ../src/dialog.c:313 +#: ../src/dialog.c:267 msgid "Could not load image file " msgstr "Nie mo¿na za³adowaæ pliku z obrazkiem " -#: ../src/dialog.c:442 +#: ../src/dialog.c:404 msgid "Directories" msgstr "Katalogi" -#: ../src/dialog.c:451 +#: ../src/dialog.c:413 msgid "Icons" msgstr "Ikony" -#: ../src/dialog.c:488 +#: ../src/dialog.c:450 msgid "File Name:" msgstr "Nazwa Pliku:" -#: ../src/dialog.c:511 +#: ../src/dialog.c:473 msgid "Choose File" msgstr "Wybierz Plik" -#: ../src/dialog.c:521 +#: ../src/dialog.c:483 msgid "Icon Chooser" msgstr "Katalog Ikon" -#: ../src/dock.c:207 +#: ../src/dock.c:213 +#, c-format msgid "Type the name for workspace %i:" msgstr "Wpisz nazwê dla pulpitu %i:" -#: ../src/dock.c:208 ../src/dock.c:996 +#: ../src/dock.c:214 ../src/dock.c:1044 msgid "Rename Workspace" msgstr "Zmieñ Nazwê Pulpitu" -#: ../src/dock.c:408 +#: ../src/dock.c:422 msgid "Workspace Clip" msgstr "Spinacz Pulpitu" -#: ../src/dock.c:409 +#: ../src/dock.c:423 msgid "All selected icons will be removed!" msgstr "Wszystkie zaznaczone ikony zostan± usuniête!" -#: ../src/dock.c:458 +#: ../src/dock.c:470 msgid "Keep Icon" msgstr "Trzymaj Ikonê" -#: ../src/dock.c:459 ../src/dock.c:1911 ../src/dock.c:2027 +#: ../src/dock.c:471 ../src/dock.c:1977 ../src/dock.c:2106 msgid "Type the command used to launch the application" msgstr "Wpisz polecenie u¿ywane do odpalenia aplikacji" -#: ../src/dock.c:820 +#: ../src/dock.c:857 +#, c-format msgid "could not launch application %s\n" msgstr "nie mo¿na odpaliæ aplikacji %s\n" -#: ../src/dock.c:875 +#: ../src/dock.c:912 msgid "could not create workspace submenu for Clip menu" msgstr "nie mo¿na stworzyæ podmenu pulpitu dla menu Spinacza" -#: ../src/dock.c:933 +#: ../src/dock.c:975 msgid "could not create options submenu for Clip menu" msgstr "nie mo¿na stworzyæ podmenu opcji dla menu Spinacza" -#: ../src/dock.c:937 -msgid "Floating Clip" -msgstr "Lataj±cy Spinacz" +#: ../src/dock.c:979 ../src/dock.c:1033 ../src/winmenu.c:383 +msgid "Keep on top" +msgstr "Trzymaj na wierzchu" -#: ../src/dock.c:943 +#: ../src/dock.c:985 msgid "Collapsed" msgstr "Zwiniêty" -#: ../src/dock.c:949 +#: ../src/dock.c:991 msgid "AutoCollapse" msgstr "AutoZwiniêty" -#: ../src/dock.c:955 +#: ../src/dock.c:997 +msgid "AutoRaiseLower" +msgstr "AutoPodnie¶Opu¶æ" + +#: ../src/dock.c:1003 msgid "AutoAttract Icons" msgstr "Automatyczne Wy³apywanie Ikon" -#: ../src/dock.c:961 +#: ../src/dock.c:1009 msgid "Keep Attracted Icons" msgstr "Trzymaj Wy³apane Ikony" -#: ../src/dock.c:985 -msgid "Floating Dock" -msgstr "P³ywaj±cy Dok" - -#: ../src/dock.c:991 +#: ../src/dock.c:1039 msgid "Clip Options" msgstr "Opcje Spinacza" -#: ../src/dock.c:998 +#: ../src/dock.c:1046 msgid "(Un)Select Icon" msgstr "(Od)Zaznacz Ikonê" -#: ../src/dock.c:1000 +#: ../src/dock.c:1048 msgid "(Un)Select All Icons" msgstr "(Od)Zaznacz Wszystkie Ikony" -#: ../src/dock.c:1003 +#: ../src/dock.c:1051 msgid "Keep Icon(s)" msgstr "Trzymaj Ikonê(y)" -#: ../src/dock.c:1005 +#: ../src/dock.c:1053 msgid "Move Icon(s) To" msgstr "Przenie¶ Ikonê(y) Do" -#: ../src/dock.c:1010 +#: ../src/dock.c:1058 msgid "Remove Icon(s)" msgstr "Usuñ Ikonê(y)" -#: ../src/dock.c:1012 +#: ../src/dock.c:1060 msgid "Attract Icons" msgstr "Wy³ap Ikony" -#: ../src/dock.c:1015 +#: ../src/dock.c:1063 msgid "Launch" msgstr "Odpal" -#: ../src/dock.c:1021 +#: ../src/dock.c:1067 +msgid "(Un)Hide" +msgstr "(Nie)Ukryj" + +#: ../src/dock.c:1069 msgid "Settings..." msgstr "Ustawienia..." -#: ../src/dock.c:1405 ../src/dock.c:1419 ../src/dock.c:1433 ../src/dock.c:1443 +#: ../src/dock.c:1454 ../src/dock.c:1468 ../src/dock.c:1482 ../src/dock.c:1492 +#, c-format msgid "bad value in docked icon state info %s" msgstr "z³a warto¶æ w informacji o stanie zadokowanej ikony %s" -#: ../src/dock.c:1451 +#: ../src/dock.c:1500 +#, c-format msgid "bad value in docked icon position %i,%i" msgstr "z³a warto¶æ w pozycji zadokowanej ikony %i,%i" -#: ../src/dock.c:1680 +#: ../src/dock.c:1744 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" msgstr "zbyt wiele ikon trzymanych w Doku. Ignorujê te, które siê nie mieszcz±" #. icon->forced_dock = 1; -#: ../src/dock.c:1910 ../src/dock.c:2026 +#: ../src/dock.c:1976 ../src/dock.c:2105 msgid "Dock Icon" msgstr "Ikona Doku" -#: ../src/dock.c:2970 ../src/dock.c:2974 +#: ../src/dock.c:3052 ../src/dock.c:3056 +#, c-format msgid "Could not execute command \"%s\"" msgstr "Nie mo¿na wykonaæ polecenia \"%s\"" #: ../src/dockedapp.c:128 +#, c-format msgid "could not find icon %s, used in a docked application" msgstr "nie mo¿na znale¼æ ikony %s, u¿ywanej w zadokowanej aplikacji" #: ../src/dockedapp.c:205 +#, c-format msgid "Could not open specified icon file:%s" msgstr "Nie mo¿na otworzyæ okre¶lonego pliku z ikon±:%s" -#: ../src/dockedapp.c:290 +#: ../src/dockedapp.c:291 msgid "Start when WindowMaker is started" msgstr "Wystartowaæ podczas startu WindowMakera" -#: ../src/dockedapp.c:297 +#: ../src/dockedapp.c:298 msgid "Application path and arguments" msgstr "¦cie¿ka do aplikacji i argumenty" -#: ../src/dockedapp.c:308 +#: ../src/dockedapp.c:309 msgid "Command for files dropped with DND" msgstr "Polecenie dla plików upuszczonych z DND" -#: ../src/dockedapp.c:320 +#: ../src/dockedapp.c:321 +#, c-format msgid "%d will be replaced with the file name" msgstr "%d zostanie zast±pione nazw± pliku" -#: ../src/dockedapp.c:324 +#: ../src/dockedapp.c:325 msgid "DND support was not compiled in" msgstr "nie wkompilowano wspomagania DND" -#: ../src/dockedapp.c:330 +#: ../src/dockedapp.c:331 msgid "Icon Image" msgstr "Obrazek Ikony" -#: ../src/dockedapp.c:342 ../src/winspector.c:1158 +#: ../src/dockedapp.c:343 ../src/winspector.c:1235 msgid "Browse..." msgstr "Przegl±daj..." -#: ../src/dockedapp.c:387 +#: ../src/dockedapp.c:388 msgid "Docked Application Settings" msgstr "Ustawienia Zadokowanej Aplikacji" -#: ../src/event.c:465 +#: ../src/event.c:350 msgid "stack overflow: too many dead processes" msgstr "przepe³nienie stosu: zbyt wiele martwych procesów" -#: ../src/framewin.c:526 +#: ../src/framewin.c:485 +#, c-format msgid "could not render gradient: %s" msgstr "nie mo¿na pokazaæ gradientu: %s" -#: ../src/framewin.c:542 ../src/framewin.c:557 ../src/framewin.c:568 ../src/framewin.c:575 ../src/framewin.c:582 ../src/icon.c:294 ../src/texture.c:496 +#: ../src/framewin.c:501 ../src/framewin.c:516 ../src/framewin.c:527 +#: ../src/framewin.c:534 ../src/framewin.c:541 ../src/icon.c:296 +#: ../src/texture.c:578 +#, c-format msgid "error rendering image:%s" msgstr "b³±d podczas pokazywania obrazka:%s" -#: ../src/icon.c:180 ../src/wdefaults.c:399 +#: ../src/icon.c:182 ../src/wdefaults.c:411 +#, c-format msgid "error loading image file \"%s\"" msgstr "b³±d podczas ³adowania pliku z obrazkiem \"%s\"" -#: ../src/icon.c:612 +#: ../src/icon.c:430 ../src/icon.c:439 +#, c-format +msgid "could not create directory %s" +msgstr "nie mo¿na utworzyæ katalogu %s" + +#: ../src/icon.c:706 +#, c-format msgid "could not find default icon \"%s\"" msgstr "nie mo¿na znale¼æ domy¶lnej ikony \"%s\"" -#: ../src/icon.c:618 +#: ../src/icon.c:712 +#, c-format msgid "could not load default icon \"%s\":%s" msgstr "nie mo¿na za³adowaæ domy¶lnej ikony \"%s\":%s" -#: ../src/main.c:169 +#: ../src/main.c:194 +msgid "could not exec window manager" +msgstr "nie mo¿na wykonaæ programu mened¿era okien" + +#: ../src/main.c:195 msgid "Restart failed!!!" msgstr "Restart siê nie powiód³!!!" -#: ../src/main.c:185 +#: ../src/main.c:242 +#, c-format msgid "%s aborted.\n" msgstr "%s zaniechany.\n" -#: ../src/main.c:196 +#: ../src/main.c:253 +#, c-format msgid "usage: %s [-options]\n" msgstr "sk³adnia: %s [-options]\n" -#: ../src/main.c:197 +#: ../src/main.c:254 msgid "options:" msgstr "opcje:" -#: ../src/main.c:199 +#: ../src/main.c:256 msgid " -nocpp \t\tdisable preprocessing of configuration files" msgstr " -nocpp \t\twy³±cz przetwarzanie plików konfiguracyjnych" -#: ../src/main.c:201 +#: ../src/main.c:258 msgid " -nodock\t\tdo not open the application Dock" msgstr " -nodock\t\tbez Doku z aplikacjami" -#: ../src/main.c:202 +#: ../src/main.c:259 msgid " -noclip\t\tdo not open the workspace Clip" msgstr " -noclip\t\tbez Spinacza na pulpicie" #. #. puts(_(" -locale locale locale to use")); #. -#: ../src/main.c:206 +#: ../src/main.c:263 msgid " -visualid visualid\tvisual id of visual to use" msgstr " -visualid visualid\tidentyfikator u¿ywanej palety" -#: ../src/main.c:207 +#: ../src/main.c:264 msgid " -display host:dpy\tdisplay to use" msgstr " -display host:dpy\tu¿ywany panel graficzny" -#: ../src/main.c:208 +#: ../src/main.c:265 +msgid " -static\t\tdo not update or save configurations" +msgstr " -static\t\tnie zapisuj ani od¶wie¿aj ustawieñ" + +#: ../src/main.c:266 msgid " -version\t\tprint version and exit" msgstr " -version\t\twy¶wietl informacjê o wersji i zakoñcz" -#: ../src/main.c:220 -msgid "" -"could not find user GNUstep directory.\n" -"Make sure you have installed WindowMaker correctly and run wmaker.inst" -msgstr "" -"nie mo¿na znale¼æ katalogu GNUstep.\n" -"Upewnij siê czy zainstalowa³e¶ WindowMakera poprawnie i wykonaj wmaker.inst" +#: ../src/main.c:278 +#, c-format +msgid "could not find user GNUstep directory (%s).\nMake sure you have installed Window Maker correctly and run wmaker.inst" +msgstr "nie mo¿na znale¼æ katalogu GNUstep u¿ytkownika (%s).\nUpewnij siê ¿e Window Maker zosta³ zainstalowany poprawnie i uruchom skrypt wmaker.inst" -#: ../src/main.c:241 +#: ../src/main.c:297 +#, c-format msgid "%s:could not execute initialization script" msgstr "#s:nie mo¿na wykonaæ skryptu inicjalizacji" -#: ../src/main.c:298 ../src/main.c:305 ../src/main.c:312 +#: ../src/main.c:314 +#, c-format +msgid "%s:could not execute exit script" +msgstr "%s:nie mo¿na wykonaæ skryptu wyj¶ciowego" + +#: ../src/main.c:368 ../src/main.c:375 ../src/main.c:382 ../src/main.c:396 +#, c-format msgid "too few arguments for %s" msgstr "zbyt ma³o argumentów dla %s" -#: ../src/main.c:316 +#: ../src/main.c:386 +#, c-format msgid "bad value for visualid: \"%s\"" msgstr "z³a warto¶æ id palety: \"%s\"" -#: ../src/main.c:359 +#: ../src/main.c:444 msgid "X server does not support locale" msgstr "Serwer X nie wspiera locale" -#: ../src/main.c:362 +#: ../src/main.c:447 msgid "cannot set locale modifiers" msgstr "nie mo¿na ustawiæ modyfikatorów locale" -#: ../src/main.c:376 +#: ../src/main.c:464 +#, c-format msgid "could not open display \"%s\"" msgstr "nie mo¿na otworzyæ panelu graficznego \"%s\"" @@ -513,71 +555,83 @@ msgstr "nie mo msgid "wrealloc() failed while trying to add menu item" msgstr "wykonanie wrealloc() nie powiod³o siê podczas próby dodania pozycji menu" -#: ../src/misc.c:70 +#: ../src/misc.c:71 +#, c-format msgid "could not define value for %s for cpp" msgstr "nie mo¿na zdefiniowaæ warto¶ci %s dla cpp" -#: ../src/misc.c:100 +#: ../src/misc.c:101 +#, c-format msgid "could not get password entry for UID %i" msgstr "nie mo¿na znale¼æ has³a dla UID %i" -#: ../src/misc.c:124 +#: ../src/misc.c:125 +#, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" msgstr "twój komputer jest ¼le skonfigurowany. HOSTNAME jest ustawiony na %s" -#: ../src/misc.c:130 +#: ../src/misc.c:131 +#, c-format msgid "your machine is misconfigured. HOST is set to %s" msgstr "twój komputer jest ¼le skonfigurowany. HOST jest ustawiony na %s" -#: ../src/misc.c:735 +#: ../src/misc.c:773 msgid "selection timed-out" msgstr "zaznaczenie straci³o wa¿no¶æ" -#: ../src/misc.c:749 +#: ../src/misc.c:788 msgid "Program Arguments" msgstr "Argumenty Programu" -#: ../src/misc.c:768 +#: ../src/misc.c:789 msgid "Enter command arguments:" msgstr "Wprowad¼ argumenty programu:" -#: ../src/misc.c:789 +#: ../src/misc.c:884 msgid "unable to get dropped data from DND drop" msgstr "nie mo¿na wzi±æ upuszczonych danych protoko³u DND" -#: ../src/misc.c:797 +#: ../src/misc.c:892 msgid "error getting dropped data from DND drop" msgstr "b³±d podczas brania upuszczonych danych protoko³u DND" -#: ../src/misc.c:803 +#: ../src/misc.c:898 msgid "out of memory while getting data from DND drop" msgstr "wyczerpano pamiêæ podczas brania danych protoko³u DND" -#: ../src/misc.c:847 ../src/misc.c:966 +#: ../src/misc.c:942 ../src/misc.c:1062 +#, c-format msgid "out of memory during expansion of \"%s\"" msgstr "wyczerpano pamiêæ podczas rozwijania \"%s\"" -#: ../src/misc.c:901 +#: ../src/misc.c:996 msgid "out of memory during expansion of \"%w\"" msgstr "wyczerpano pamiêæ podczas rozwijania \"%w\"" -#: ../src/misc.c:920 +#: ../src/misc.c:1015 msgid "out of memory during expansion of \"%a\"" msgstr "wyczerpano pamiêæ podczas rozwijania \"%a\"" -#: ../src/misc.c:942 +#: ../src/misc.c:1041 +#, c-format msgid "out of memory during expansion of \"%d\"" msgstr "wyczerpano pamiêæ podczas rozwijania \"%d\"" -#: ../src/misc.c:954 +#: ../src/misc.c:1055 msgid "selection not available" msgstr "zaznaczenie niedostêpne" -#: ../src/misc.c:1032 ../src/misc.c:1038 +#: ../src/misc.c:1127 ../src/misc.c:1133 +#, c-format msgid "bad window name value in %s state info" msgstr "z³a warto¶æ nazwy okna w polu %s informacji stanu" +#: ../src/misc.c:1387 +msgid "could not send message to background image helper" +msgstr "nie mo¿na wys³aæ komunikatu do programu pomocniczego zajmuj±cego siê t³em pulpitu" + #: ../src/pixmap.c:235 +#, c-format msgid "could not load mask bitmap file \"%s\". Won't use mask" msgstr "nie mo¿na za³adowaæ bitmapy z mask± \"%s\". Maska nie zostanie u¿yta" @@ -630,6 +684,7 @@ msgid "Comments are not allowed inside WindowMaker owned domain files." msgstr "Komentarze nie s± dozwolone we w³asnych plikach domenowych WindowMakera." #: ../src/proplist.c:453 +#, c-format msgid "could not open domain file %s" msgstr "nie mo¿na otworzyæ pliku domeny %s" @@ -638,10 +693,12 @@ msgid "extra data after end of file" msgstr "nadmiarowe dane poza koñcem pliku" #: ../src/resources.c:71 +#, c-format msgid "The following character sets are missing in %s:" msgstr "Brakuje nastêpuj±cych zbiorów znaków w %s:" #: ../src/resources.c:76 +#, c-format msgid "The string \"%s\" will be used in place" msgstr "£añcuch \"%s\" zostanie u¿yty w miejscu" @@ -650,468 +707,585 @@ msgid "of any characters from those sets." msgstr "dowolnego znaku z tych zbiorów." #: ../src/resources.c:81 +#, c-format msgid "could not create font set %s. Trying fixed" msgstr "nie mo¿na stworzyæ zbioru czcionek %s. Próbujê fixed" #: ../src/resources.c:98 +#, c-format msgid "could not load font %s. Trying fixed" msgstr "nie mo¿na za³adowaæ czcionki %s. Próbujê fixed" #: ../src/resources.c:136 +#, c-format msgid "could not parse color \"%s\"" msgstr "nie mo¿na przetworzyæ koloru \"%s\"" #: ../src/resources.c:140 +#, c-format msgid "could not allocate color \"%s\"" msgstr "nie mo¿na zaalokowaæ koloru \"%s\"" -#: ../src/rootmenu.c:162 -msgid "Program \"%s\" not found or cannot be executed." -msgstr "Nie znaleziono lub nie mo¿na wykonaæ programu \"%s\"." +#: ../src/rootmenu.c:185 ../src/rootmenu.c:187 +msgid "Exit" +msgstr "Zakoñcz" -#: ../src/rootmenu.c:207 +#: ../src/rootmenu.c:186 msgid "Exit window manager?" msgstr "Czy opu¶ciæ mened¿era okien?" -#: ../src/rootmenu.c:227 +#: ../src/rootmenu.c:222 msgid "Close X session" msgstr "Zamknij sesjê X" -#: ../src/rootmenu.c:228 -msgid "" -"Close Window System session?\n" -"(all applications will be closed)" -msgstr "" -"Czy zamkn±æ sesjê X Window System?\n" -"(wszystkie aplikacje zostan± zamkniête)" +#: ../src/rootmenu.c:223 +msgid "Close Window System session?\nKill might close applications with unsaved data." +msgstr "Czy zamkn±æ sesjê X Window System?\nMo¿liwe ¿e niektóre dzia³aj±ce teraz programy nie zapisz± swoich danych." -#: ../src/rootmenu.c:230 -msgid "Exiting...\n" -msgstr "Koniec...\n" - -#: ../src/rootmenu.c:449 -msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" -msgstr "%s:niew³a¶ciwe okre¶lenie skrótu klawiaturowego \"%s\" dla pozycji %s" - -#: ../src/rootmenu.c:457 -msgid "%s:invalid key in shortcut \"%s\" for entry %s" -msgstr "%s:niew³a¶ciwy klawisz w skrócie \"%s\" dla pozycji %s" - -#: ../src/rootmenu.c:510 -msgid "%s: unmatched '\"' in menu file" -msgstr "%s: nie zakoñczone '\"' w pliku menu" - -#: ../src/rootmenu.c:559 -msgid "%s: missing command" -msgstr "%s: brakuj±ce polecenie" - -#: ../src/rootmenu.c:592 -msgid "invalid OPEN_MENU specification: %s" -msgstr "niew³a¶ciwe okre¶lenie OPEN_MENU: %s" - -#: ../src/rootmenu.c:657 -msgid "%s:could not stat menu" -msgstr "%s:niezrozumia³e menu" - -#: ../src/rootmenu.c:665 -msgid "%s:could not stat menu :%s" -msgstr "%s:niezrozumia³e menu :%s" - -#: ../src/rootmenu.c:683 -msgid "too many parameters in OPEN_MENU: %s" -msgstr "zbyt wiele parametrów w OPEN_MENU: %s" - -#: ../src/rootmenu.c:719 -msgid "There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed." -msgstr "Jest wiêcej ni¿ jedno polecenie WORKSPACE_MENU w menu aplikacji. Tylko jedno jest dozwolone." - -#: ../src/rootmenu.c:748 ../src/rootmenu.c:766 -msgid "%s:missing parameter for menu command \"%s\"" -msgstr "%s:brakuj±cy parametr w poleceniu menu \"%s\"" - -#: ../src/rootmenu.c:829 -msgid "%s:unknown command \"%s\" in menu config." -msgstr "%s:nieznane polecenie \"%s\" w ustawieniach menu." - -#: ../src/rootmenu.c:837 -msgid "%s:can't add shortcut for entry \"%s\"" -msgstr "%s:nie mo¿na dodaæ skrótu do pozycji \"%s\"" - -#: ../src/rootmenu.c:974 -msgid "%s:maximal line size exceeded in menu config: %s" -msgstr "%s:przekroczono maksymaln± dopuszczaln± d³ugo¶æ linii w ustawieniach menu: %s" - -#: ../src/rootmenu.c:996 ../src/rootmenu.c:1088 ../src/rootmenu.c:1189 -msgid "%s:missing command in menu config: %s" -msgstr "%s:brakujêce polecenie e ustawieniach menu: %s" - -#: ../src/rootmenu.c:1026 -msgid "%s:syntax error in menu file:END declaration missing" -msgstr "%s:b³±d sk³adniowy w pliku menu:brak deklaracji END" - -#: ../src/rootmenu.c:1055 ../src/rootmenu.c:1154 -msgid "could not make arguments for menu file preprocessor" -msgstr "nie mo¿na stworzyæ argumentów do programu przetwarzaj±cego menu" - -#: ../src/rootmenu.c:1061 ../src/rootmenu.c:1161 -msgid "%s:could not open/preprocess menu file" -msgstr "%s:nie mo¿na otworzyæ/przetworzyæ pliku menu" - -#: ../src/rootmenu.c:1073 ../src/rootmenu.c:1174 -msgid "%s:could not open menu file" -msgstr "%s:nie mo¿na otworzyæ pliku menu" - -#: ../src/rootmenu.c:1100 -msgid "%s:invalid menu file. MENU command is missing" -msgstr "%s:niew³a¶ciwy plik menu. Brak polecenia MENU" - -#: ../src/rootmenu.c:1109 -msgid "error reading preprocessed menu data" -msgstr "b³±d podczas czytania przetworzonego menu" - -#: ../src/rootmenu.c:1201 -msgid "%s:no title given for the root menu" -msgstr "%s:g³ówne menu nie ma tytu³u" - -#: ../src/rootmenu.c:1255 ../src/rootmenu.c:1318 ../src/rootmenu.c:1362 -msgid "out of memory while constructing directory menu %s" -msgstr "wyczerpano pamiêæ podczas tworzenia menu katalogu %s" - -#: ../src/rootmenu.c:1265 -msgid "%s:could not stat file \"%s\" in menu directory" -msgstr "%s:nie mo¿na znale¼æ pliku \"%s\" w katalogu menu" - -#: ../src/rootmenu.c:1411 -msgid "Commands" -msgstr "Polecenia" - -#: ../src/rootmenu.c:1413 -msgid "Exit..." -msgstr "Koniec..." - -#: ../src/rootmenu.c:1477 -msgid "%s:could not find menu file \"%s\"" -msgstr "%s:nie mo¿na znale¼æ pliku menu \"%s\"" - -#: ../src/rootmenu.c:1484 -msgid "%s:could not access menu \"%s\"" -msgstr "%s:brak dostêpu do menu \"%s\"" - -#: ../src/rootmenu.c:1510 ../src/rootmenu.c:1565 -msgid "%s:format error in root menu configuration \"%s\"" -msgstr "%s:b³±d formatowania w ustawieniach menu g³ównego \"%s\"" - -#: ../src/screen.c:111 -msgid "it seems that there already is a window manager running" -msgstr "wygl±da na to ¿e ju¿ dzia³a jaki¶ mened¿er okien" - -#: ../src/screen.c:394 -msgid "could not load logo image for panels" -msgstr "nie mo¿na za³adowaæ obrazka z logo dla paneli" - -#: ../src/screen.c:397 -msgid "error making logo image for panel:%s" -msgstr "b³±d podczas tworzenia obrazka logo dla panelu:%s" - -#: ../src/screen.c:544 -msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" -msgstr "rozmiar ikony jest ustawiony na %i, lecz jest zbyt ma³y. U¿yto 16\n" - -#: ../src/screen.c:587 -msgid "could not initialize graphics library context: %s" -msgstr "nie mo¿na zainicjalizowaæ graficznego kontekstu biblioteki: %s" - -#: ../src/session.c:113 ../src/wdefaults.c:559 ../src/winspector.c:335 -msgid "can't convert \"%s\" to boolean" -msgstr "nie mo¿na zamieniæ \"%s\" na warto¶æ logiczn±" - -#: ../src/stacking.c:88 -msgid "could not get window list!!" -msgstr "nie mo¿na wzi±æ listy okien!!" - -#: ../src/startup.c:163 -msgid "internal X error: %s\n" -msgstr "wewnêtrzny b³±d X: %s\n" - -#: ../src/startup.c:225 -msgid "got signal %i (%s) - restarting\n" -msgstr "z³apano wygna³ %i (%s) - ponowne uruchamianie\n" - -#: ../src/startup.c:227 -msgid "got signal %i - restarting\n" -msgstr "z³apano sygna³ %i - ponowne uruchamianie\n" - -#: ../src/startup.c:240 -msgid "%s: Received signal SIGTERM. Exiting..." -msgstr "%s: Otrzymano sygna³ SIGTERM. Koñczenie..." - -#: ../src/startup.c:251 -msgid "got signal %i (%s)\n" -msgstr "z³apano sygna³ %i (%s)\n" - -#: ../src/startup.c:253 -msgid "got signal %i\n" -msgstr "z³apano sygna³ %i\n" - -#: ../src/startup.c:258 -msgid "crashed while trying to do some post-crash cleanup. Aborting immediatelly." -msgstr "za³amanie podczas próby uporz±dkowania po za³amaniu. Wyj¶cie awaryjne." - -#: ../src/startup.c:267 -msgid "trying to start alternative window manager..." -msgstr "próbujê wystartowaæ alternatywny mened¿er okien..." - -#: ../src/switchmenu.c:124 -msgid "Windows" -msgstr "Okna" - -#: ../src/texture.c:260 -msgid "image file \"%s\" used as texture could not be found." -msgstr "nie mo¿na znale¼æ pliku z obrazkiem \"%s\" u¿ywanym jako tekstura." - -#: ../src/texture.c:266 -msgid "could not load texture pixmap \"%s\":%s" -msgstr "nie mo¿na za³adowaæ pixmapy z tekstur± \"%s\":%s" - -#: ../src/texture.c:362 ../src/texture.c:492 -msgid "could not render texture: %s" -msgstr "nie mo¿na pokazaæ tekstury: %s" - -#: ../src/wdefaults.c:393 -msgid "could not find icon file \"%s\"" -msgstr "nie mo¿na znale¼æ pliku z ikon± \"%s\"" - -#: ../src/window.c:1931 ../src/window.c:2070 -msgid "" -"the NumLock, ScrollLock or similar key seems to be turned on.\n" -"Turn it off or some mouse actions and keyboard shortcuts will not work." -msgstr "" -"wygl±da na to, ¿e klawisze NumLock, ScrollLock lub podobne s± w³±czone.\n" -"Wy³±cz je lub niektóre akcje myszki i klawiatury nie zadzia³aj±." - -#: ../src/winmenu.c:182 -msgid "could not create workspace submenu for window menu" -msgstr "nie mo¿na stworzyæ podmenu pulpitu dla menu okna" - -#: ../src/winmenu.c:204 -msgid "(Un)Maximize" -msgstr "(Nie)Powiêksz" - -#: ../src/winmenu.c:212 -msgid "Miniaturize" -msgstr "Pomniejsz" - -#: ../src/winmenu.c:221 -msgid "(Un)Shade" -msgstr "(Ro)Zwiñ" - -#: ../src/winmenu.c:229 -msgid "Hide" -msgstr "Ukryj" - -#: ../src/winmenu.c:236 -msgid "Hide Others" -msgstr "Ukryj Inne" - -#: ../src/winmenu.c:238 -msgid "Select" -msgstr "Zaznacz" - -#: ../src/winmenu.c:246 -msgid "Move To" -msgstr "Przenie¶ Do" - -#: ../src/winmenu.c:251 -msgid "Attributes..." -msgstr "Atrybuty..." - -#: ../src/winmenu.c:253 +#. +#. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); +#. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); +#. +#: ../src/rootmenu.c:225 ../src/winmenu.c:481 msgid "Close" msgstr "Zamknij" -#: ../src/winspector.c:274 -msgid "Could not find icon \"%s\" specified for this window" -msgstr "Nie mo¿na znale¼æ ikony \"%s\" ustawionej dla tego okna" +#: ../src/rootmenu.c:236 +msgid "Kill X session" +msgstr "Zamknij sesjê X Window" -#: ../src/winspector.c:287 -msgid "Could not open specified icon \"%s\":%s" -msgstr "Nie mo¿na otworzyæ okre¶lonej ikony \"%s\":%s" +#: ../src/rootmenu.c:237 +msgid "Kill Window System session?\n(all applications will be closed)" +msgstr "Czy zamkn±æ sesjê X Window?\n?(wszystkie programy zostan± zakoñczone)" -#: ../src/winspector.c:958 -msgid "Save" -msgstr "Zachowaj" +#: ../src/rootmenu.c:463 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" +msgstr "%s:niew³a¶ciwe okre¶lenie skrótu klawiaturowego \"%s\" dla pozycji %s" -#: ../src/winspector.c:964 -msgid "Apply" -msgstr "Zastosuj" +#: ../src/rootmenu.c:471 +#, c-format +msgid "%s:invalid key in shortcut \"%s\" for entry %s" +msgstr "%s:niew³a¶ciwy klawisz w skrócie \"%s\" dla pozycji %s" -#: ../src/winspector.c:970 -msgid "Revert" -msgstr "Odwróæ" +#: ../src/rootmenu.c:524 +#, c-format +msgid "%s: unmatched '\"' in menu file" +msgstr "%s: nie zakoñczone '\"' w pliku menu" -#. *** window spec *** -#: ../src/winspector.c:979 ../src/winspector.c:987 -msgid "Window Specification" -msgstr "Okre¶lenie Okna" +#: ../src/rootmenu.c:574 +#, c-format +msgid "%s: missing command" +msgstr "%s: brakuj±ce polecenie" -#: ../src/winspector.c:980 -msgid "Window Attributes" -msgstr "Atrybuty Okna" +#: ../src/rootmenu.c:607 +#, c-format +msgid "invalid OPEN_MENU specification: %s" +msgstr "niew³a¶ciwe okre¶lenie OPEN_MENU: %s" -#: ../src/winspector.c:981 -msgid "Advanced Options" -msgstr "Opcje Zaawansowane" +#: ../src/rootmenu.c:680 +#, c-format +msgid "%s:could not stat menu" +msgstr "%s:niezrozumia³e menu" -#: ../src/winspector.c:982 -msgid "Icon and Initial Workspace" -msgstr "Ikona i Pocz±tkowy Pulpit" +#: ../src/rootmenu.c:688 +#, c-format +msgid "%s:could not stat menu:%s" +msgstr "%s:niezrozumia³e menu:%s" -#: ../src/winspector.c:983 -msgid "Application Specific" -msgstr "W³a¶ciwe dla Aplikacji" +#: ../src/rootmenu.c:706 +#, c-format +msgid "too many parameters in OPEN_MENU: %s" +msgstr "zbyt wiele parametrów w OPEN_MENU: %s" -#: ../src/winspector.c:995 -msgid "Defaults for all windows" -msgstr "Domy¶lne dla wszystkich okien" +#: ../src/rootmenu.c:742 +msgid "There are more than one WORKSPACE_MENU commands in the applications menu. Only one is allowed." +msgstr "Jest wiêcej ni¿ jedno polecenie WORKSPACE_MENU w menu aplikacji. Tylko jedno jest dozwolone." -#: ../src/winspector.c:1031 -msgid "" -"The configuration will apply to all\n" -"windows that have their WM_CLASS property set to the above selected\n" -"name, when saved." -msgstr "" -"Po zachowaniu, konfiguracja zostanie zastosowana do wszystkich\n" -"okien które maj± w³a¶ciwo¶æ WM_CLASS odpowiedni± do zaznaczonej powy¿ej\n" -"nazwy." +#: ../src/rootmenu.c:771 ../src/rootmenu.c:789 +#, c-format +msgid "%s:missing parameter for menu command \"%s\"" +msgstr "%s:brakuj±cy parametr w poleceniu menu \"%s\"" -#: ../src/winspector.c:1038 -msgid "Attributes" -msgstr "Atrybuty" +#: ../src/rootmenu.c:852 +#, c-format +msgid "%s:unknown command \"%s\" in menu config." +msgstr "%s:nieznane polecenie \"%s\" w ustawieniach menu." -#: ../src/winspector.c:1048 -msgid "Disable titlebar" -msgstr "Wy³±cz pasek tytu³owy" +#: ../src/rootmenu.c:860 +#, c-format +msgid "%s:can't add shortcut for entry \"%s\"" +msgstr "%s:nie mo¿na dodaæ skrótu do pozycji \"%s\"" -#: ../src/winspector.c:1052 -msgid "Disable resizebar" -msgstr "Wy³±cz pasek zmiany rozmiaru" +#: ../src/rootmenu.c:997 +#, c-format +msgid "%s:maximal line size exceeded in menu config: %s" +msgstr "%s:przekroczono maksymaln± dopuszczaln± d³ugo¶æ linii w ustawieniach menu: %s" -#: ../src/winspector.c:1056 -msgid "Disable close button" -msgstr "Wy³±cz przycisk zamkniêcia" +#: ../src/rootmenu.c:1019 ../src/rootmenu.c:1111 ../src/rootmenu.c:1212 +#, c-format +msgid "%s:missing command in menu config: %s" +msgstr "%s:brakujêce polecenie e ustawieniach menu: %s" -#: ../src/winspector.c:1060 -msgid "Disable miniaturize button" -msgstr "Wy³±cz przycisk pomniejszenia" +#: ../src/rootmenu.c:1049 +#, c-format +msgid "%s:syntax error in menu file:END declaration missing" +msgstr "%s:b³±d sk³adniowy w pliku menu:brak deklaracji END" -#: ../src/winspector.c:1064 -msgid "Keep on top" -msgstr "Trzymaj na wierzchu" +#: ../src/rootmenu.c:1078 ../src/rootmenu.c:1177 +msgid "could not make arguments for menu file preprocessor" +msgstr "nie mo¿na stworzyæ argumentów do programu przetwarzaj±cego menu" -#: ../src/winspector.c:1068 +#: ../src/rootmenu.c:1084 ../src/rootmenu.c:1184 +#, c-format +msgid "%s:could not open/preprocess menu file" +msgstr "%s:nie mo¿na otworzyæ/przetworzyæ pliku menu" + +#: ../src/rootmenu.c:1096 ../src/rootmenu.c:1197 +#, c-format +msgid "%s:could not open menu file" +msgstr "%s:nie mo¿na otworzyæ pliku menu" + +#: ../src/rootmenu.c:1123 +#, c-format +msgid "%s:invalid menu file. MENU command is missing" +msgstr "%s:niew³a¶ciwy plik menu. Brak polecenia MENU" + +#: ../src/rootmenu.c:1132 +msgid "error reading preprocessed menu data" +msgstr "b³±d podczas czytania przetworzonego menu" + +#: ../src/rootmenu.c:1224 +#, c-format +msgid "%s:no title given for the root menu" +msgstr "%s:g³ówne menu nie ma tytu³u" + +#: ../src/rootmenu.c:1307 ../src/rootmenu.c:1374 ../src/rootmenu.c:1418 +#, c-format +msgid "out of memory while constructing directory menu %s" +msgstr "wyczerpano pamiêæ podczas tworzenia menu katalogu %s" + +#: ../src/rootmenu.c:1317 +#, c-format +msgid "%s:could not stat file \"%s\" in menu directory" +msgstr "%s:nie mo¿na znale¼æ pliku \"%s\" w katalogu menu" + +#: ../src/rootmenu.c:1472 +msgid "Commands" +msgstr "Polecenia" + +#: ../src/rootmenu.c:1475 +msgid "Restart" +msgstr "Restart" + +#: ../src/rootmenu.c:1476 +msgid "Exit..." +msgstr "Koniec..." + +#: ../src/rootmenu.c:1549 +#, c-format +msgid "could not find menu file \"%s\" referenced in WMRootMenu" +msgstr "nie mo¿na znale¼æ pliku menu \"%s\" okre¶lonego w WMRootMenu" + +#: ../src/rootmenu.c:1556 +#, c-format +msgid "could not access menu \"%s\" referenced in WMRootMenu" +msgstr "brak dostêpu do menu \"%s\" okre¶lonego w WMRootMenu" + +#: ../src/rootmenu.c:1567 +#, c-format +msgid "using default menu file \"%s\" as the menu referenced in WMRootMenu could not be found " +msgstr "u¿yto domy¶lnego pliku menu \"%s\" poniewa¿ nie znaleziono pliku okre¶lonego w WMRootMenu " + +#: ../src/rootmenu.c:1590 ../src/rootmenu.c:1666 +#, c-format +msgid "%s:format error in root menu configuration \"%s\"" +msgstr "%s:b³±d formatowania w ustawieniach menu g³ównego \"%s\"" + +#: ../src/screen.c:423 +msgid "could not load logo image for panels" +msgstr "nie mo¿na za³adowaæ obrazka z logo dla paneli" + +#: ../src/screen.c:426 +#, c-format +msgid "error making logo image for panel:%s" +msgstr "b³±d podczas tworzenia obrazka logo dla panelu:%s" + +#: ../src/screen.c:612 +#, c-format +msgid "could not initialize graphics library context: %s" +msgstr "nie mo¿na zainicjalizowaæ graficznego kontekstu biblioteki: %s" + +#: ../src/screen.c:644 +msgid "could not do initialization of WINGs widget set" +msgstr "nie mo¿na zainicjalizowaæ biblioteki WINGs" + +#: ../src/screen.c:961 +#, c-format +msgid "could not save session state in %s" +msgstr "nie mo¿na zapisaæ stanu sesji w %s" + +#: ../src/session.c:138 ../src/wdefaults.c:559 ../src/winspector.c:347 +#, c-format +msgid "can't convert \"%s\" to boolean" +msgstr "nie mo¿na zamieniæ \"%s\" na warto¶æ logiczn±" + +#: ../src/session.c:750 ../src/session.c:844 +msgid "end of memory while saving session state" +msgstr "zabrak³o pamiêci podczas zapisywania stanu sesji" + +#. This is not fatal but can mean the session manager exited. +#. * If the session manager exited normally we would get a +#. * Die message, so this probably means an abnormal exit. +#. * If the sm was the last client of session, then we'll die +#. * anyway, otherwise we can continue doing our stuff. +#. +#: ../src/session.c:978 +msgid "connection to the session manager was lost" +msgstr "stracono po³±czenie z zarz±dc± sesji" + +#: ../src/stacking.c:72 +msgid "could not get window list!!" +msgstr "nie mo¿na wzi±æ listy okien!!" + +#: ../src/startup.c:194 +#, c-format +msgid "internal X error: %s\n" +msgstr "wewnêtrzny b³±d X: %s\n" + +#: ../src/startup.c:257 +#, c-format +msgid "got signal %i (%s) - restarting\n" +msgstr "z³apano wygna³ %i (%s) - ponowne uruchamianie\n" + +#: ../src/startup.c:259 +#, c-format +msgid "got signal %i - restarting\n" +msgstr "z³apano sygna³ %i - ponowne uruchamianie\n" + +#: ../src/startup.c:273 +#, c-format +msgid "%s: Received signal SIGTERM. Exiting..." +msgstr "%s: Otrzymano sygna³ SIGTERM. Koñczenie..." + +#: ../src/startup.c:285 +#, c-format +msgid "got signal %i (%s)\n" +msgstr "z³apano sygna³ %i (%s)\n" + +#: ../src/startup.c:287 +#, c-format +msgid "got signal %i\n" +msgstr "z³apano sygna³ %i\n" + +#: ../src/startup.c:293 +msgid "crashed while trying to do some post-crash cleanup. Aborting immediatelly." +msgstr "za³amanie podczas próby uporz±dkowania po za³amaniu. Wyj¶cie awaryjne." + +#: ../src/startup.c:304 +msgid "a fatal error has occured, probably due to a bug. Please fill the included BUGFORM and report it." +msgstr "wyst±pi³ powa¿ny b³±d, prawdopodobnie pluskwa. Prosimy o wype³nienie formularza BUGFORM i wys³anie go do nas." + +#. restart another window manager so that the X session doesn't +#. * go to space +#: ../src/startup.c:311 +msgid "trying to start alternative window manager..." +msgstr "próbujê wystartowaæ alternatywny mened¿er okien..." + +#: ../src/startup.c:710 +#, c-format +msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" +msgstr "rozmiar ikony jest ustawiony na %i, lecz jest zbyt ma³y. U¿yto 16\n" + +#: ../src/startup.c:754 +msgid "it seems that there already is a window manager running" +msgstr "wygl±da na to ¿e ju¿ dzia³a jaki¶ mened¿er okien" + +#: ../src/startup.c:760 +#, c-format +msgid "could not manage screen %i" +msgstr "nie mogê uzyskaæ kontroli nad ekranem %i" + +#: ../src/startup.c:820 +msgid "could not manage any screen" +msgstr "nie mogê uzyskaæ kontroli nad ekranem" + +#: ../src/switchmenu.c:114 +msgid "Windows" +msgstr "Okna" + +#: ../src/texture.c:274 ../src/texture.c:318 +#, c-format +msgid "image file \"%s\" used as texture could not be found." +msgstr "nie mo¿na znale¼æ pliku z obrazkiem \"%s\" u¿ywanym jako tekstura." + +#: ../src/texture.c:280 ../src/texture.c:324 +#, c-format +msgid "could not load texture pixmap \"%s\":%s" +msgstr "nie mo¿na za³adowaæ pixmapy z tekstur± \"%s\":%s" + +#: ../src/texture.c:463 ../src/texture.c:574 +#, c-format +msgid "could not render texture: %s" +msgstr "nie mo¿na pokazaæ tekstury: %s" + +#: ../src/wdefaults.c:405 +#, c-format +msgid "could not find icon file \"%s\"" +msgstr "nie mo¿na znale¼æ pliku z ikon± \"%s\"" + +#: ../src/window.c:2282 ../src/window.c:2414 +msgid "the NumLock, ScrollLock or similar key seems to be turned on.\nTurn it off or some mouse actions and keyboard shortcuts will not work." +msgstr "wygl±da na to, ¿e klawisze NumLock, ScrollLock lub podobne s± w³±czone.\nWy³±cz je lub niektóre akcje myszki i klawiatury nie zadzia³aj±." + +#: ../src/winmenu.c:249 ../src/winmenu.c:257 +msgid "Set Shortcut" +msgstr "Ustaw Skrót" + +#: ../src/winmenu.c:333 ../src/winmenu.c:379 +msgid "could not create submenu for window menu" +msgstr "nie mo¿na utworzyæ podmenu dla menu okien" + +#: ../src/winmenu.c:388 +msgid "Keep at bottom" +msgstr "Trzymaj na dole" + +#: ../src/winmenu.c:393 ../src/winspector.c:1141 msgid "Omnipresent" msgstr "Zawsze widoczny" -#: ../src/winspector.c:1072 +#. +#. * Warning: If you make some change that affects the order of the +#. * entries, you must update the command #defines in the top of +#. * this file. +#. +#: ../src/winmenu.c:416 ../src/winmenu.c:551 +msgid "Maximize" +msgstr "Powiêksz" + +#: ../src/winmenu.c:424 ../src/winmenu.c:537 +msgid "Miniaturize" +msgstr "Pomniejsz" + +#: ../src/winmenu.c:433 ../src/winmenu.c:565 +msgid "Shade" +msgstr "Zwiñ" + +#: ../src/winmenu.c:449 +msgid "Resize/Move" +msgstr "Zmieñ Rozmiar/Pozycjê" + +#: ../src/winmenu.c:457 +msgid "Select" +msgstr "Zaznacz" + +#: ../src/winmenu.c:465 +msgid "Move To" +msgstr "Przenie¶ Do" + +#: ../src/winmenu.c:470 +msgid "Attributes..." +msgstr "Atrybuty..." + +#: ../src/winmenu.c:472 +msgid "Options" +msgstr "Ustawienia" + +#: ../src/winmenu.c:532 +msgid "Deminiaturize" +msgstr "Odwróæ Pomniejszenie" + +#: ../src/winmenu.c:546 +msgid "Unmaximize" +msgstr "Odwróæ Powiêkszenie" + +#: ../src/winmenu.c:560 +msgid "Unshade" +msgstr "Rozwiñ" + +#: ../src/winspector.c:281 +#, c-format +msgid "Could not find icon \"%s\" specified for this window" +msgstr "Nie mo¿na znale¼æ ikony \"%s\" ustawionej dla tego okna" + +#: ../src/winspector.c:297 +#, c-format +msgid "Could not open specified icon \"%s\":%s" +msgstr "Nie mo¿na otworzyæ okre¶lonej ikony \"%s\":%s" + +#: ../src/winspector.c:1016 +msgid "Save" +msgstr "Zachowaj" + +#: ../src/winspector.c:1024 +msgid "Apply" +msgstr "Zastosuj" + +#: ../src/winspector.c:1030 +msgid "Reload" +msgstr "Za³aduj Ponownie" + +#: ../src/winspector.c:1039 ../src/winspector.c:1049 +msgid "Window Specification" +msgstr "Okre¶lenie Okna" + +#: ../src/winspector.c:1040 +msgid "Window Attributes" +msgstr "Atrybuty Okna" + +#: ../src/winspector.c:1041 +msgid "Advanced Options" +msgstr "Opcje Zaawansowane" + +#: ../src/winspector.c:1042 +msgid "Icon and Initial Workspace" +msgstr "Ikona i Pocz±tkowy Pulpit" + +#: ../src/winspector.c:1043 +msgid "Application Specific" +msgstr "W³a¶ciwe dla Aplikacji" + +#: ../src/winspector.c:1057 +msgid "Defaults for all windows" +msgstr "Domy¶lne dla wszystkich okien" + +#: ../src/winspector.c:1100 +msgid "The configuration will apply to all\nwindows that have their WM_CLASS property set to the above selected\nname, when saved." +msgstr "Po zachowaniu, konfiguracja zostanie zastosowana do wszystkich\nokien które maj± w³a¶ciwo¶æ WM_CLASS odpowiedni± do zaznaczonej powy¿ej\nnazwy." + +#: ../src/winspector.c:1107 +msgid "Attributes" +msgstr "Atrybuty" + +#: ../src/winspector.c:1117 +msgid "Disable titlebar" +msgstr "Wy³±cz pasek tytu³owy" + +#: ../src/winspector.c:1121 +msgid "Disable resizebar" +msgstr "Wy³±cz pasek zmiany rozmiaru" + +#: ../src/winspector.c:1125 +msgid "Disable close button" +msgstr "Wy³±cz przycisk zamkniêcia" + +#: ../src/winspector.c:1129 +msgid "Disable miniaturize button" +msgstr "Wy³±cz przycisk pomniejszenia" + +#: ../src/winspector.c:1133 +msgid "Keep on top / floating" +msgstr "Trzymaj na wierzchu / p³ywaj±cy" + +#: ../src/winspector.c:1137 +msgid "Keep at bottom / sunken" +msgstr "Trzymaj na dnie / zatopiony" + +#: ../src/winspector.c:1145 msgid "Start Miniaturized" msgstr "Wystartuj Pomniejszony" -#: ../src/winspector.c:1076 +#: ../src/winspector.c:1149 +msgid "Start Maximized" +msgstr "Uruchom Powiêkszony" + +#: ../src/winspector.c:1153 msgid "Skip window list" msgstr "Przeskocz w li¶cie okien" -#: ../src/winspector.c:1090 +#: ../src/winspector.c:1167 msgid "Advanced" msgstr "Zaawansowane" -#: ../src/winspector.c:1100 +#: ../src/winspector.c:1177 msgid "Ignore HideOthers" msgstr "Zignoruj UkryjInne" -#: ../src/winspector.c:1104 +#: ../src/winspector.c:1181 msgid "Don't bind keyboard shortcuts" msgstr "Nie stosuj skrótów klawiaturowych" -#: ../src/winspector.c:1108 +#: ../src/winspector.c:1185 msgid "Don't bind mouse clicks" msgstr "Nie stosuj klikniêæ mysz±" -#: ../src/winspector.c:1112 +#: ../src/winspector.c:1189 msgid "Keep inside screen" msgstr "Trzymaj wewn±trz ekranu" -#: ../src/winspector.c:1116 +#: ../src/winspector.c:1193 msgid "Don't let it take focus" msgstr "Nie pozwól byæ aktywnym oknem" -#: ../src/winspector.c:1120 +#: ../src/winspector.c:1197 msgid "Don't Save Session" msgstr "Nie Zachowuj Sesji" -#: ../src/winspector.c:1124 +#: ../src/winspector.c:1201 msgid "Emulate Application Icon" msgstr "Emuluj Ikonê Aplikacji" -#: ../src/winspector.c:1139 +#: ../src/winspector.c:1216 msgid "Enable the \"Don't bind...\" options to allow the application to receive all mouse or keyboard events." msgstr "W³±cz wszystkie opcje typu \"Nie stosuj...\" by pozwoliæ aplikacji na odbiór wszystkich zdarzeñ od myszy i klawiatury." -#: ../src/winspector.c:1146 +#: ../src/winspector.c:1223 msgid "Miniwindow Image" msgstr "Obrazek Miniokna" -#: ../src/winspector.c:1164 +#: ../src/winspector.c:1242 msgid "Update" msgstr "Odnów" -#: ../src/winspector.c:1169 +#: ../src/winspector.c:1257 msgid "Icon file name:" msgstr "Nazwa pliku z ikon±:" -#: ../src/winspector.c:1179 +#: ../src/winspector.c:1269 msgid "Ignore client supplied icon" msgstr "Ignoruj ikonê dostarczon± przez klienta" -#: ../src/winspector.c:1185 +#: ../src/winspector.c:1276 msgid "Initial Workspace" msgstr "Pocz±tkowy Pulpit" -#: ../src/winspector.c:1191 +#: ../src/winspector.c:1281 msgid "Nowhere in particular" msgstr "Nigdzie w szczególno¶ci" -#: ../src/winspector.c:1222 +#: ../src/winspector.c:1315 msgid "Application Wide" msgstr "W Ca³ej Aplikacji" -#: ../src/winspector.c:1232 +#: ../src/winspector.c:1325 msgid "Start Hidden" msgstr "Wystartuj Ukryty" -#: ../src/winspector.c:1236 +#: ../src/winspector.c:1329 msgid "No application icon" msgstr "Brak ikony aplikacji" -#: ../src/workspace.c:89 ../src/workspace.c:90 ../src/workspace.c:390 +#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:472 +#, c-format msgid "Workspace %i" msgstr "Pulpit %i" -#: ../src/workspace.c:439 +#: ../src/workspace.c:529 msgid "Workspaces" msgstr "Pulpity" -#: ../src/workspace.c:441 +#: ../src/workspace.c:531 msgid "could not create Workspace menu" msgstr "nie mo¿na stworzyæ menu Pulpitu" -#: ../src/workspace.c:448 +#: ../src/workspace.c:538 msgid "New" msgstr "Nowy" -#: ../src/workspace.c:449 +#: ../src/workspace.c:539 msgid "Destroy Last" msgstr "Zniszcz Ostatni" -#: ../src/xutil.c:220 +#: ../src/xutil.c:228 msgid "invalid data in selection" msgstr "niew³a¶ciwe dane w zaznaczeniu" diff --git a/po/ru.po b/po/ru.po index 4c78ddb9..a92d2ffd 100644 --- a/po/ru.po +++ b/po/ru.po @@ -3,19 +3,21 @@ # August S. Sigov <freedomain@actor.ru> # # Brought up-to-date for 0.17.5 +# and maintained up to 0.51.0 by # Alexey Vyskubov <alexey@alv.stud.pu.ru> # Michael Sobolev <mss@transas.com> # +#, fuzzy msgid "" msgstr "" -"POT-Creation-Date: 1999-01-16 22:08+0300\n" +"POT-Creation-Date: 1999-01-29 23:29+0300\n" +"PO-Revision-Date: 1999-01-29 22:33+0300\n" "Language-Team: Russian\n" "Content-Type: text/plain; charset=koi8-r\n" -"Date: ðÎÄ á×Ç 24 22:23:01 MSD 1998\n" #: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 -#: ../src/dock.c:3059 ../src/dockedapp.c:206 ../src/winspector.c:283 -#: ../src/winspector.c:299 +#: ../src/dock.c:3060 ../src/dockedapp.c:208 ../src/winspector.c:281 +#: ../src/winspector.c:297 msgid "Error" msgstr "ïÛÉÂËÁ" @@ -25,8 +27,8 @@ msgstr " #: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 #: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 -#: ../src/dock.c:3060 ../src/dockedapp.c:206 ../src/dockedapp.c:350 -#: ../src/winspector.c:284 ../src/winspector.c:300 +#: ../src/dock.c:3061 ../src/dockedapp.c:208 ../src/dockedapp.c:352 +#: ../src/winspector.c:282 ../src/winspector.c:298 msgid "OK" msgstr "OK" @@ -53,11 +55,13 @@ msgstr " msgid "No" msgstr "îÅÔ" -#: ../src/appicon.c:548 ../src/dock.c:1065 +#: ../src/appicon.c:548 ../src/dock.c:1064 msgid "Unhide Here" msgstr "òÁÓËÒÙÔØ ÚÄÅÓØ" -#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/winmenu.c:441 +#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/dock.c:1066 +#: ../src/dock.c:1068 ../src/dock.c:3186 ../src/dock.c:3188 +#: ../src/winmenu.c:441 msgid "Hide" msgstr "óËÒÙÔØ" @@ -65,172 +69,175 @@ msgstr " msgid "Set Icon..." msgstr "õÓÔÁÎÏ×ÉÔØ ÚÎÁÞÏË..." -#: ../src/appicon.c:551 ../src/dock.c:1071 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 ../src/winmenu.c:488 +#: ../src/appicon.c:551 ../src/dock.c:1072 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 ../src/winmenu.c:488 msgid "Kill" msgstr "õÂÉÔØ" -#: ../src/appicon.c:572 +#: ../src/appicon.c:572 ../src/dock.c:3184 msgid "Unhide" msgstr "òÁÓËÒÙÔØ" -#: ../src/defaults.c:735 ../src/startup.c:700 ../src/startup.c:718 -#: ../src/startup.c:724 +#: ../src/defaults.c:752 ../src/startup.c:709 ../src/startup.c:727 +#: ../src/startup.c:733 #, c-format msgid "could not read domain \"%s\" from defaults database" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÞÉÔÁÔØ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÏÍÅÎÁ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ ÄÏÍÅÎÁ \"%s\"" -#: ../src/defaults.c:781 ../src/defaults.c:905 ../src/defaults.c:944 -#: ../src/defaults.c:974 +#: ../src/defaults.c:798 ../src/defaults.c:922 ../src/defaults.c:961 +#: ../src/defaults.c:991 #, c-format msgid "Domain %s (%s) of defaults database is corrupted!" msgstr "äÏÍÅÎ %s (%s) × ÆÁÊÌÅ ÕÓÔÁÎÏ×ÏË ÐÏ×ÒÅÖÄÅÎ!" -#: ../src/defaults.c:786 ../src/defaults.c:926 ../src/defaults.c:957 -#: ../src/defaults.c:983 +#: ../src/defaults.c:803 ../src/defaults.c:943 ../src/defaults.c:974 +#: ../src/defaults.c:1000 #, c-format msgid "could not load domain %s from user defaults database" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÄÏÍÅÎ \"%s\" ÉÚ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÆÁÊÌÁ ÕÓÔÁÎÏ×ÏË" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÄÏÍÅÎ \"%s\" ÉÚ ÐÏÌØÚÏ×ÁÔÅÌØÓËÏÇÏ ÆÁÊÌÁ ÕÓÔÁÎÏ×ÏË" -#: ../src/defaults.c:797 ../src/defaults.c:890 +#: ../src/defaults.c:814 ../src/defaults.c:907 #, c-format msgid "Domain %s (%s) of global defaults database is corrupted!" -msgstr "äÏÍÅÎ %s (%s) × ÇÌÏÂÁÌØÎÏÍ ÆÁÊÌÅ ÎÁÓÔÒÏÅË ÐÏ×ÒÅÖÄÅÎ!" +msgstr "äÏÍÅÎ %s (%s) × ÇÌÏÂÁÌØÎÏÍ ÆÁÊÌÅ ÕÓÔÁÎÏ×ÏË ÐÏ×ÒÅÖÄÅÎ!" -#: ../src/defaults.c:816 ../src/defaults.c:895 +#: ../src/defaults.c:833 ../src/defaults.c:912 #, c-format msgid "could not load domain %s from global defaults database" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÄÏÍÅÎ %s ÉÚ ÇÌÏÂÁÌØÎÏÇÏ ÆÁÊÌÁ ÎÁÓÔÒÏÅË" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÄÏÍÅÎ %s ÉÚ ÇÌÏÂÁÌØÎÏÇÏ ÆÁÊÌÁ ÕÓÔÁÎÏ×ÏË" -#: ../src/defaults.c:1266 +#: ../src/defaults.c:1283 #, c-format msgid "wrong option value for key \"%s\". Should be one of %s" msgstr "ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÌÀÞÁ \"%s\". äÏÌÖÎÏ ÂÙÔØ ÏÄÎÏ ÉÚ %s." -#: ../src/defaults.c:1313 +#: ../src/defaults.c:1330 #, c-format msgid "can't convert \"%s\" to boolean for key \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ \"%s\" × ÌÏÇÉÞÅÓËÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÌÀÞÁ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÅÏÂÒÁÚÏ×ÁÔØ \"%s\" × ÌÏÇÉÞÅÓËÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÌÀÞÁ \"%s\"" -#: ../src/defaults.c:1318 ../src/defaults.c:1352 ../src/defaults.c:1384 -#: ../src/defaults.c:1397 ../src/defaults.c:1412 ../src/defaults.c:1426 -#: ../src/defaults.c:1498 ../src/defaults.c:1510 ../src/defaults.c:1858 -#: ../src/defaults.c:1875 ../src/defaults.c:1888 ../src/defaults.c:1921 -#: ../src/defaults.c:1937 ../src/defaults.c:1968 ../src/defaults.c:2041 +#: ../src/defaults.c:1335 ../src/defaults.c:1369 ../src/defaults.c:1401 +#: ../src/defaults.c:1414 ../src/defaults.c:1429 ../src/defaults.c:1443 +#: ../src/defaults.c:1515 ../src/defaults.c:1527 ../src/defaults.c:1875 +#: ../src/defaults.c:1892 ../src/defaults.c:1905 ../src/defaults.c:1938 +#: ../src/defaults.c:1954 ../src/defaults.c:1985 ../src/defaults.c:2058 #, c-format msgid "using default \"%s\" instead" msgstr "ÉÓÐÏÌØÚÕÅÍ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ (%s)" -#: ../src/defaults.c:1349 +#: ../src/defaults.c:1366 #, c-format msgid "can't convert \"%s\" to integer for key \"%s\"" msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ \"%s\" × ÃÅÌÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ ËÌÀÞÁ \"%s\"" -#: ../src/defaults.c:1379 ../src/defaults.c:1493 ../src/defaults.c:1853 -#: ../src/defaults.c:1870 ../src/defaults.c:1916 ../src/defaults.c:1963 +#: ../src/defaults.c:1396 ../src/defaults.c:1510 ../src/defaults.c:1870 +#: ../src/defaults.c:1887 ../src/defaults.c:1933 ../src/defaults.c:1980 #: ../src/wdefaults.c:541 ../src/wdefaults.c:577 #, c-format msgid "Wrong option format for key \"%s\". Should be %s." msgstr "îÅ×ÅÒÎÙÊ ÆÏÒÍÁÔ ÐÁÒÁÍÅÔÒÁ ÄÌÑ ËÌÀÞÁ \"%s\". äÏÌÖÅÎ ÂÙÔØ %s." -#: ../src/defaults.c:1392 +#: ../src/defaults.c:1409 #, c-format msgid "Incorrect number of elements in array for key \"%s\"." msgstr "îÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÜÌÅÍÅÎÔÏ× × ÍÁÓÓÉ×Å ÄÌÑ ËÌÀÞÁ \"%s\"." -#: ../src/defaults.c:1407 +#: ../src/defaults.c:1424 #, c-format msgid "Wrong value for key \"%s\". Should be Coordinate." msgstr "îÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÐÁÒÁÍÅÔÒÁ ÄÌÑ ËÌÀÞÁ \"%s\". äÏÌÖÎÏ ÂÙÔØ Coordinate." -#: ../src/defaults.c:1422 +#: ../src/defaults.c:1439 #, c-format msgid "can't convert array to integers for \"%s\"." -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÍÁÓÓÉ× × ÎÁÂÏÒ ÃÅÌÙÈ ÚÎÁÞÅÎÉÑ ÄÌÑ \"%s\"." +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÅÏÂÒÁÚÏ×ÁÔØ ÍÁÓÓÉ× × ÎÁÂÏÒ ÃÅÌÙÈ ÚÎÁÞÅÎÉÑ ÄÌÑ \"%s\"." -#: ../src/defaults.c:1619 ../src/defaults.c:1651 ../src/defaults.c:1667 -#: ../src/defaults.c:1713 ../src/defaults.c:1753 ../src/defaults.c:1791 -#: ../src/defaults.c:1807 +#: ../src/defaults.c:1636 ../src/defaults.c:1668 ../src/defaults.c:1684 +#: ../src/defaults.c:1730 ../src/defaults.c:1770 ../src/defaults.c:1808 +#: ../src/defaults.c:1824 #, c-format msgid "\"%s\" is not a valid color name" -msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ÎÁÚ×ÁÎÉÅÍ ÉÚ×ÅÓÔÎÏÇÏ Ã×ÅÔÁ" +msgstr "\"%s\" ÎÅ Ñ×ÌÑÅÔÓÑ ÉÚ×ÅÓÔÎÙÍ ÎÁÚ×ÁÎÉÅÍ Ã×ÅÔÁ" -#: ../src/defaults.c:1632 +#: ../src/defaults.c:1649 msgid "bad number of arguments in gradient specification" -msgstr "ÎÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÁÒÇÕÍÅÎÔÏ× × ÓÐÅÃÉÆÉËÁÃÉÉ ÇÒÁÄÉÅÎÔÁ" +msgstr "ÎÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÁÒÇÕÍÅÎÔÏ× × ÏÐÒÅÄÅÌÅÎÉÉ ÇÒÁÄÉÅÎÔÁ" -#: ../src/defaults.c:1686 +#: ../src/defaults.c:1703 msgid "too few arguments in multicolor gradient specification" -msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ ÁÒÇÕÍÅÎÔÏ× × ÓÐÅÃÉÆÉËÁÃÉÉ ÍÎÏÇÏÃ×ÅÔÎÏÇÏ ÇÒÁÄÉÅÎÔÁ" +msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ ÁÒÇÕÍÅÎÔÏ× × ÏÐÒÅÄÅÌÅÎÉÉ ÍÎÏÇÏÃ×ÅÔÎÏÇÏ ÇÒÁÄÉÅÎÔÁ" -#: ../src/defaults.c:1780 +#: ../src/defaults.c:1797 msgid "bad number of arguments in textured gradient specification" -msgstr "ÎÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÁÒÇÕÍÅÎÔÏ× × ÓÐÅÃÉÆÉËÁÃÉÉ ÇÒÁÄÉÅÎÔÁ Ó ÔÅËÓÔÕÒÏÊ" +msgstr "ÎÅ×ÅÒÎÏÅ ËÏÌÉÞÅÓÔ×Ï ÁÒÇÕÍÅÎÔÏ× × ÏÐÒÅÄÅÌÅÎÉÉ ÇÒÁÄÉÅÎÔÁ Ó ÔÅËÓÔÕÒÏÊ" -#: ../src/defaults.c:1823 +#: ../src/defaults.c:1840 #, c-format msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" -msgstr "ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÐÒÏÚÒÁÞÎÏÓÔÉ ÄÌÑ t-ÇÒÁÄÉÅÎÔÁ Ó ÔÅËÓÔÕÒÏÊ \"%s\"; ÄÏÌÖÎÏ " +msgstr "" +"ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÐÒÏÚÒÁÞÎÏÓÔÉ ÄÌÑ t-ÇÒÁÄÉÅÎÔÁ Ó ÔÅËÓÔÕÒÏÊ \"%s\"; ÄÏÌÖÎÏ " "ÂÙÔØ [0..255]" -#: ../src/defaults.c:1836 +#: ../src/defaults.c:1853 #, c-format msgid "invalid texture type %s" -msgstr "Î×ÅÒÎÙÊ ÔÉÐ ÔÅËÓÔÕÒÙ (%s)" +msgstr "ÎÅ×ÅÒÎÙÊ ÔÉÐ ÔÅËÓÔÕÒÙ (%s)" -#: ../src/defaults.c:1883 +#: ../src/defaults.c:1900 #, c-format msgid "Error in texture specification for key \"%s\"" -msgstr "ïÛÉÂËÁ × ÓÐÅÃÉÆÉËÁÃÉÉ ÔÅËÓÔÕÒÙ ÄÌÑ ËÌÀÞÁ \"%s\"" +msgstr "ïÛÉÂËÁ × ÏÐÒÅÄÅÌÅÎÉÉ ÔÅËÓÔÕÒÙ ÄÌÑ ËÌÀÞÁ \"%s\"" -#: ../src/defaults.c:1933 +#: ../src/defaults.c:1950 msgid "Wrong type for workspace background. Should be a texture type." -msgstr "îÅ×ÅÒÎÙÊ ÔÉÐ ÄÌÑ ÆÏÎÁ òÁÂÏÞÅÇÏ ÍÅÓÔÁ; ÏÖÄÁÌÏÓØ ÚÎÁÞÅÎÉÅ ÔÉÐÁ \"ÔÅËÓÔÕÒÁ\"." +msgstr "" +"îÅ×ÅÒÎÙÊ ÔÉÐ ÄÌÑ ÆÏÎÁ òÁÂÏÞÅÇÏ ÍÅÓÔÁ; ÏÖÉÄÁÌÏÓØ ÚÎÁÞÅÎÉÅ ÔÉÐÁ \"ÔÅËÓÔÕÒÁ\"." -#: ../src/defaults.c:1981 +#: ../src/defaults.c:1998 #, c-format msgid "Wrong type for background of workspace %i. Should be a texture." -msgstr "îÅ×ÅÒÎÙÊ ÔÉÐ ÄÌÑ ÆÏÎÁ òÁÂÏÞÅÇÏ ÍÅÓÔÁ #%i; ÏÖÄÁÌÏÓØ ÚÎÁÞÅÎÉÅ ÔÉÐÁ " +msgstr "" +"îÅ×ÅÒÎÙÊ ÔÉÐ ÄÌÑ ÆÏÎÁ òÁÂÏÞÅÇÏ ÍÅÓÔÁ #%i; ÏÖÉÄÁÌÏÓØ ÚÎÁÞÅÎÉÅ ÔÉÐÁ " "\"ÔÅËÓÔÕÒÁ\"." -#: ../src/defaults.c:2006 +#: ../src/defaults.c:2023 msgid "could not load any usable font!!!" msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÐÏÄÈÏÄÑÝÉÊ ÛÒÉÆÔ!!!" -#: ../src/defaults.c:2036 +#: ../src/defaults.c:2053 #, c-format msgid "could not get color for key \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ Ã×ÅÔ ÄÌÑ ËÌÀÞÁ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ Ã×ÅÔ ÄÌÑ ËÌÀÞÁ \"%s\"" -#: ../src/defaults.c:2095 ../src/rootmenu.c:450 +#: ../src/defaults.c:2112 ../src/rootmenu.c:454 #, c-format msgid "%s:invalid key modifier \"%s\"" -msgstr "%s -- ÎÅ×ÅÒÎÙÊ ÍÏÄÉÆÉËÁÔÏÒ ËÌÀÞÁ \"%s\"" +msgstr "%s:ÎÅ×ÅÒÎÙÊ ÍÏÄÉÆÉËÁÔÏÒ ËÌÁ×ÉÛÉ \"%s\"" # -#: ../src/defaults.c:2107 +#: ../src/defaults.c:2124 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\"" msgstr "%s:ÎÅÄÏÐÕÓÔÉÍÏÅ ÕËÁÚÁÎÉÅ ÓÏÞÅÔÁÎÉÑ ËÌÁ×ÉÛ \"%s\"" # -#: ../src/defaults.c:2114 +#: ../src/defaults.c:2131 #, c-format msgid "%s:invalid key in shortcut \"%s\"" msgstr "%s:ÎÅ×ÅÒÎÁÑ ËÌÁ×ÉÛÁ × ÓÏÞÅÔÁÎÉÉ \"%s\"" -#: ../src/defaults.c:2140 +#: ../src/defaults.c:2157 #, c-format msgid "%s: modifier key %s is not valid" msgstr "%s: ÍÏÄÉÆÉËÁÔÏÒ %s ÎÅÉÚ×ÅÓÔÅÎ" -#: ../src/defaults.c:2216 +#: ../src/defaults.c:2233 msgid "could not render texture for icon background" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÄÇÏÔÏ×ÉÔØ ÔÅËÓÔÕÒÕ ÄÌÑ ÆÏÎÁ ÚÎÁÞËÁ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÄÇÏÔÏ×ÉÔØ ÔÅËÓÔÕÒÕ ÄÌÑ ÆÏÎÁ ÚÎÁÞËÁ" #: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 -#: ../src/dockedapp.c:356 ../src/rootmenu.c:187 ../src/rootmenu.c:225 -#: ../src/rootmenu.c:239 +#: ../src/dockedapp.c:358 ../src/rootmenu.c:188 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 msgid "Cancel" msgstr "ïÔËÁÚ" @@ -260,7 +267,7 @@ msgstr " msgid "Choose File" msgstr "÷ÙÂÅÒÉÔÅ ÆÁÊÌ" -#: ../src/dialog.c:483 +#: ../src/dialog.c:490 ../src/dialog.c:492 msgid "Icon Chooser" msgstr "÷ÙÂÏÒ ÚÎÁÞËÁ" @@ -270,7 +277,7 @@ msgid "Type the name for workspace %i:" msgstr "÷×ÅÄÉÔÅ ÉÍÑ ÄÌÑ %i-ÇÏ ÒÁÂÏÞÅÇÏ ÍÅÓÔÁ:" # -#: ../src/dock.c:214 ../src/dock.c:1044 +#: ../src/dock.c:214 ../src/dock.c:1043 msgid "Rename Workspace" msgstr "ðÅÒÅÉÍÅÎÏ×ÁÔØ òÁÂÏÞÅÅ ÍÅÓÔÏ" @@ -287,108 +294,104 @@ msgid "Keep Icon" msgstr "õÄÅÒÖÉ×ÁÔØ ÚÎÁÞÏË" # -#: ../src/dock.c:471 ../src/dock.c:1977 ../src/dock.c:2106 +#: ../src/dock.c:471 ../src/dock.c:1978 ../src/dock.c:2107 msgid "Type the command used to launch the application" msgstr "÷×ÅÄÉÔÅ ËÏÍÁÎÄÕ, ÉÓÐÏÌØÚÕÅÍÕÀ ÄÌÑ ÚÁÐÕÓËÁ ÐÒÉÌÏÖÅÎÉÑ" # -#: ../src/dock.c:857 +#: ../src/dock.c:856 #, c-format msgid "could not launch application %s\n" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÐÕÓÔÉÔØ ÐÒÉÌÏÖÅÎÉÅ %s\n" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ ÐÒÉÌÏÖÅÎÉÅ %s\n" -#: ../src/dock.c:912 +#: ../src/dock.c:911 msgid "could not create workspace submenu for Clip menu" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÐÏÄÍÅÎÀ ÒÁÂÏÞÉÈ ÍÅÓÔ ÄÌÑ ÍÅÎÀ ðÉÒÓÁ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÐÏÄÍÅÎÀ ÒÁÂÏÞÉÈ ÍÅÓÔ ÄÌÑ ÍÅÎÀ ðÉÒÓÁ" -#: ../src/dock.c:975 +#: ../src/dock.c:974 msgid "could not create options submenu for Clip menu" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÐÏÄÍÅÎÀ ÐÁÒÁÍÅÔÒÏ× ÄÌÑ ÍÅÎÀ ðÉÒÓÁ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÐÏÄÍÅÎÀ ÐÁÒÁÍÅÔÒÏ× ÄÌÑ ÍÅÎÀ ðÉÒÓÁ" -#: ../src/dock.c:979 ../src/dock.c:1033 ../src/winmenu.c:383 +#: ../src/dock.c:978 ../src/dock.c:1032 ../src/winmenu.c:383 msgid "Keep on top" msgstr "÷ÓÅÇÄÁ ÎÁ×ÅÒÈÕ" -#: ../src/dock.c:985 +#: ../src/dock.c:984 msgid "Collapsed" msgstr "ó×ÅÒÎÕÔÏ" -#: ../src/dock.c:991 +#: ../src/dock.c:990 msgid "AutoCollapse" -msgstr "á×ÔÏó×ÏÒÁÞÉ×ÁÔØ" +msgstr "á×ÔÏÓ×ÏÒÁÞÉ×ÁÔØ" -#: ../src/dock.c:997 +#: ../src/dock.c:996 msgid "AutoRaiseLower" -msgstr "" +msgstr "á×ÔÏÏÐÕÓËÁÔØ" -#: ../src/dock.c:1003 +#: ../src/dock.c:1002 msgid "AutoAttract Icons" -msgstr "á×ÔÏðÒÉÔÑÇÉ×ÁÔØ ÚÎÁÞËÉ" +msgstr "á×ÔÏÐÒÉÔÑÇÉ×ÁÔØ ÚÎÁÞËÉ" -#: ../src/dock.c:1009 +#: ../src/dock.c:1008 msgid "Keep Attracted Icons" msgstr "õÄÅÒÖÉ×ÁÔØ ÐÒÉÔÑÎÕÔÙÅ ÚÎÁÞËÉ" -#: ../src/dock.c:1039 +#: ../src/dock.c:1038 msgid "Clip Options" msgstr "ðÁÒÁÍÅÔÒÙ ðÉÒÓÁ" -#: ../src/dock.c:1046 +#: ../src/dock.c:1045 msgid "(Un)Select Icon" msgstr "÷ÙÄÅÌÅÎÉÅ/óÂÒÏÓ ×ÙÄÅÌÅÎÉÑ ÚÎÁÞËÁ" -#: ../src/dock.c:1048 +#: ../src/dock.c:1047 msgid "(Un)Select All Icons" msgstr "÷ÙÄÅÌÅÎÉÅ/óÂÒÏÓ ×ÙÄÅÌÅÎÉÑ ×ÓÅÈ ÚÎÁÞËÏ×" -#: ../src/dock.c:1051 +#: ../src/dock.c:1050 msgid "Keep Icon(s)" -msgstr "õÄÅÒÖÉ×ÁÔØ ÚÎÁÞÏË (ÚÎÁÞËÉ)" +msgstr "õÄÅÒÖÉ×ÁÔØ ÚÎÁÞËÉ" -#: ../src/dock.c:1053 +#: ../src/dock.c:1052 msgid "Move Icon(s) To" -msgstr "ðÅÒÅÍÅÓÔÉÔØ ÚÎÁÞÏË (ÚÎÁÞËÉ)..." +msgstr "ðÅÒÅÍÅÓÔÉÔØ ÚÎÁÞËÉ..." -#: ../src/dock.c:1058 +#: ../src/dock.c:1057 msgid "Remove Icon(s)" -msgstr "õÄÁÌÉÔØ ÚÎÁÞÏË (ÚÎÁÞËÉ)" +msgstr "õÄÁÌÉÔØ ÚÎÁÞËÉ" -#: ../src/dock.c:1060 +#: ../src/dock.c:1059 msgid "Attract Icons" msgstr "ðÒÉÔÑÇÉ×ÁÔØ ÚÎÁÞËÉ" -#: ../src/dock.c:1063 +#: ../src/dock.c:1062 msgid "Launch" msgstr "úÁÐÕÓË" -#: ../src/dock.c:1067 -msgid "(Un)Hide" -msgstr "óËÒÙÔØ/òÁÓËÒÙÔØ" - -#: ../src/dock.c:1069 +#: ../src/dock.c:1070 msgid "Settings..." msgstr "õÓÔÁÎÏ×ËÉ..." -#: ../src/dock.c:1454 ../src/dock.c:1468 ../src/dock.c:1482 ../src/dock.c:1492 +#: ../src/dock.c:1455 ../src/dock.c:1469 ../src/dock.c:1483 ../src/dock.c:1493 #, c-format msgid "bad value in docked icon state info %s" msgstr "ïÛÉÂÏÞÎÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ÓÏÓÔÏÑÎÉÉ ÐÒÉÛ×ÁÒÔÏ×ÁÎÎÏÇÏ ÚÎÁÞËÁ -- %s" -#: ../src/dock.c:1500 +#: ../src/dock.c:1501 #, c-format msgid "bad value in docked icon position %i,%i" msgstr "ÎÅÄÏÐÕÓÔÉÍÏÅ ÚÎÁÞÅÎÉÅ × ÐÏÚÉÃÉÉ ÐÒÉÞÁÌÁ %i,%i" -#: ../src/dock.c:1744 +#: ../src/dock.c:1745 msgid "there are too many icons stored in dock. Ignoring what doesn't fit" -msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞËÏ× ÐÒÉÛ×ÁÒÔÏ×ÁÎÏ. îÅ ÚÁÍÅÞÁÀ ÎÅ ×ÌÅÚÁÀÝÉÅ" +msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÎÁÞËÏ× ÐÒÉÛ×ÁÒÔÏ×ÁÎÏ. þÁÓÔØ ÚÎÁÞËÏ× ÎÅ ÂÕÄÅÔ ×Ù×ÅÄÅÎÁ." #. icon->forced_dock = 1; -#: ../src/dock.c:1976 ../src/dock.c:2105 +#: ../src/dock.c:1977 ../src/dock.c:2106 msgid "Dock Icon" msgstr "úÎÁÞÏË ðÒÉÞÁÌÁ" -#: ../src/dock.c:3052 ../src/dock.c:3056 +#: ../src/dock.c:3053 ../src/dock.c:3057 #, c-format msgid "Could not execute command \"%s\"" msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ \"%s\"" @@ -396,57 +399,58 @@ msgstr " #: ../src/dockedapp.c:128 #, c-format msgid "could not find icon %s, used in a docked application" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÆÁÊÌ ÚÎÁÞËÁ (%s), ÉÓÐÏÌØÚÕÅÍÙÊ × ÐÒÉÛ×ÁÒÔÏ×ÁÎÏÍ ÐÒÉÌÏÖÅÎÉÉ" +msgstr "" +"ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÆÁÊÌ ÚÎÁÞËÁ (%s), ÉÓÐÏÌØÚÕÅÍÙÊ × ÐÒÉÛ×ÁÒÔÏ×ÁÎÏÍ ÐÒÉÌÏÖÅÎÉÉ" # -#: ../src/dockedapp.c:205 +#: ../src/dockedapp.c:207 #, c-format msgid "Could not open specified icon file:%s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ ÚÎÁÞËÁ:%s" -#: ../src/dockedapp.c:291 +#: ../src/dockedapp.c:293 msgid "Start when WindowMaker is started" msgstr "úÁÐÕÓÔÉÔØ ÐÒÉ ÓÔÁÒÔÅ WindowMaker-Á" # -#: ../src/dockedapp.c:298 +#: ../src/dockedapp.c:300 msgid "Application path and arguments" msgstr "ðÕÔØ Ë ÐÒÉÌÏÖÅÎÉÀ É ÁÒÇÕÍÅÎÔÙ" -#: ../src/dockedapp.c:309 +#: ../src/dockedapp.c:311 msgid "Command for files dropped with DND" msgstr "ëÏÍÁÎÄÁ ÄÌÑ ÐÅÒÅÔÁÝÅÎÎÙÈ ÆÁÊÌÏ×" -#: ../src/dockedapp.c:321 +#: ../src/dockedapp.c:323 #, c-format msgid "%d will be replaced with the file name" msgstr "%d ÂÕÄÅÔ ÚÁÍÅÎÅÎÏ ÎÁ ÉÍÑ ÆÁÊÌÁ" -#: ../src/dockedapp.c:325 +#: ../src/dockedapp.c:327 msgid "DND support was not compiled in" -msgstr "ðÏÄÄÅÒÖËÁ ÄÌÑ ÐÅÒÅÔÁÓËÉ×ÁÎÉÑ ÄÁÎÎÙÈ ÎÅ ÂÙÌÁ ÓËÏÐÍÐÉÌÉÒÏ×ÁÎÁ" +msgstr "ðÏÄÄÅÒÖËÁ ÄÌÑ ÐÅÒÅÔÁÓËÉ×ÁÎÉÑ ÄÁÎÎÙÈ ÎÅ ÂÙÌÁ ×ËÌÀÞÅÎÁ ÐÒÉ ËÏÍÐÉÌÑÃÉÉ" -#: ../src/dockedapp.c:331 +#: ../src/dockedapp.c:333 msgid "Icon Image" msgstr "éÚÏÂÒÁÖÅÎÉÅ ÚÎÁÞËÁ" -#: ../src/dockedapp.c:343 ../src/winspector.c:1235 +#: ../src/dockedapp.c:345 ../src/winspector.c:1235 msgid "Browse..." msgstr "÷ÙÂÒÁÔØ..." # -#: ../src/dockedapp.c:388 +#: ../src/dockedapp.c:390 msgid "Docked Application Settings" msgstr "ðÁÒÁÍÅÔÒÙ ÐÒÉÛ×ÁÒÔÏ×ÁÎÎÏÇÏ ÐÒÉÌÏÖÅÎÉÑ" -#: ../src/event.c:350 +#: ../src/event.c:352 msgid "stack overflow: too many dead processes" msgstr "ÐÅÒÅÐÏÌÎÅÎÉÅ ÓÔÅËÁ: ÓÌÉÛËÏÍ ÍÎÏÇÏ ÍÅÒÔ×ÙÈ ÐÒÏÃÅÓÓÏ×" #: ../src/framewin.c:485 #, c-format msgid "could not render gradient: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÄÇÏÔÏ×ÉÔØ ÇÒÁÄÉÅÎÔ: %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÄÇÏÔÏ×ÉÔØ ÇÒÁÄÉÅÎÔ: %s" #: ../src/framewin.c:501 ../src/framewin.c:516 ../src/framewin.c:527 #: ../src/framewin.c:534 ../src/framewin.c:541 ../src/icon.c:296 @@ -469,185 +473,203 @@ msgstr " #: ../src/icon.c:706 #, c-format msgid "could not find default icon \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÚÎÁÞÏË ÐÏ ÕÍÏÌÞÁÎÉÀ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÚÎÁÞÏË ÐÏ ÕÍÏÌÞÁÎÉÀ \"%s\"" #: ../src/icon.c:712 #, c-format msgid "could not load default icon \"%s\":%s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÚÎÁÞÏË ÐÏ ÕÍÏÌÏÞÁÎÉÀ (\"%s\"): %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÚÎÁÞÏË ÐÏ ÕÍÏÌÏÞÁÎÉÀ (\"%s\"): %s" -#: ../src/main.c:194 +#: ../src/main.c:195 msgid "could not exec window manager" msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÐÕÓÔÉÔØ ÄÉÓÐÅÔÞÅÒ ÏËÏÎ" -#: ../src/main.c:195 +#: ../src/main.c:196 msgid "Restart failed!!!" msgstr "ðÅÒÅÚÁÐÕÓË ÎÅ ÕÄÁÌÓÑ!!!" -#: ../src/main.c:242 +#: ../src/main.c:243 #, c-format msgid "%s aborted.\n" msgstr "%s ÐÒÅÒ×ÁÎÏ.\n" -#: ../src/main.c:253 -#, c-format -msgid "usage: %s [-options]\n" -msgstr "ÚÁÐÕÓË: %s [-ÐÁÒÁÍÅÔÒÙ]\n" - #: ../src/main.c:254 -msgid "options:" -msgstr "ÐÁÒÁÍÅÔÒÙ:" +#, c-format +msgid "Usage: %s [options]\n" +msgstr "úÁÐÕÓË: %s [ÐÁÒÁÍÅÔÒÙ]\n" -#: ../src/main.c:256 -msgid " -nocpp \t\tdisable preprocessing of configuration files" -msgstr " -nocpp \t\tÚÁÐÒÅÔÉÔØ ÐÒÅÄÏÂÒÁÂÏÔËÕ ÆÁÊÌÏ× ÎÁÓÔÒÏÊËÉ" +#: ../src/main.c:255 +msgid "The Window Maker window manager for the X window system" +msgstr "äÉÓÐÅÔÞÅÒ ÏËÏÎ Window Maker ÄÌÑ ÓÉÓÔÅÍÙ X Window" -#: ../src/main.c:258 -msgid " -nodock\t\tdo not open the application Dock" -msgstr " -nodock\t\tÎÅ ÏÔËÒÙ×ÁÔØ ðÒÉÞÁÌ ÐÒÉÌÏÖÅÎÉÊ" - -# -#: ../src/main.c:259 -msgid " -noclip\t\tdo not open the workspace Clip" -msgstr "-nofiend\t\tÎÅ ÏÔËÒÙ×ÁÔØ ðÉÒÓ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ" - -#. -#. puts(_(" -locale locale locale to use")); -#. -#: ../src/main.c:263 -msgid " -visualid visualid\tvisual id of visual to use" -msgstr " -visualid visualid\t×ÉÚÕÁÌØÎÙÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÄÌÑ ÉÓÐÏÌØÚÏ×ÁÎÉÑ" - -#: ../src/main.c:264 +#: ../src/main.c:257 msgid " -display host:dpy\tdisplay to use" msgstr " -display ÈÏÓÔ:ÄÉÓÐÌÅÊ\tÉÓÐÏÌØÚÏ×ÁÔØ ÄÁÎÎÙÊ ÄÉÓÐÌÅÊ" -#: ../src/main.c:265 -msgid " -static\t\tdo not update or save configurations" -msgstr " -static\t\tÎÅ ÏÂÎÏ×ÌÑÔØ ÉÌÉ ÓÏÈÒÁÎÑÔØ ËÏÎÆÉÇÕÒÁÃÉÀ" +#: ../src/main.c:259 +msgid " --no-cpp \t\tdisable preprocessing of configuration files" +msgstr " --no-cpp \t\tÚÁÐÒÅÔÉÔØ ÐÒÅÄÏÂÒÁÂÏÔËÕ ÆÁÊÌÏ× ÎÁÓÔÒÏÊËÉ" +#: ../src/main.c:261 +msgid " --no-dock\t\tdo not open the application Dock" +msgstr " --no-dock\t\tÎÅ ÏÔËÒÙ×ÁÔØ ðÒÉÞÁÌ ÐÒÉÌÏÖÅÎÉÊ" + +#: ../src/main.c:262 +msgid " --no-clip\t\tdo not open the workspace Clip" +msgstr " --no-clip\t\tÎÅ ÏÔËÒÙ×ÁÔØ ðÉÒÓ ÄÌÑ ÐÒÉÌÏÖÅÎÉÊ" + +#. +#. puts(_(" --locale locale locale to use")); +#. #: ../src/main.c:266 -msgid " -version\t\tprint version and exit" -msgstr " -version\t\t÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ É ×ÙÈÏÄ" +msgid " --visual-id visualid\tvisual id of visual to use" +msgstr " --visual-id visualid\tÉÓÐÏÌØÚÏ×ÁÔØ ÕËÁÚÁÎÎÙÊ Ã×ÅÔÏ×ÏÊ ËÌÁÓÓ ÏÔÏÂÒÁÖÅÎÉÑ" -#: ../src/main.c:278 +#: ../src/main.c:267 +msgid " --static\t\tdo not update or save configurations" +msgstr " --static\t\tÎÅ ÏÂÎÏ×ÌÑÔØ ÉÌÉ ÓÏÈÒÁÎÑÔØ ËÏÎÆÉÇÕÒÁÃÉÀ" + +#: ../src/main.c:268 +msgid " --version\t\tprint version and exit" +msgstr " --version\t\t÷Ù×ÏÄ ÎÏÍÅÒÁ ×ÅÒÓÉÉ É ×ÙÈÏÄ" + +#: ../src/main.c:269 +msgid " --help\t\t\tshow this message" +msgstr " --help\t\t\t×Ù×ÅÓÔÉ ÜÔÏÔ ÔÅËÓÔ" + +#: ../src/main.c:281 #, c-format msgid "" "could not find user GNUstep directory (%s).\n" "Make sure you have installed Window Maker correctly and run wmaker.inst" msgstr "" -"ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ËÁÔÁÌÏÇ GNUstep ÐÏÌØÚÏ×ÁÔÅÌÑ (%s).\n" +"ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ËÁÔÁÌÏÇ GNUstep ÐÏÌØÚÏ×ÁÔÅÌÑ (%s).\n" "õÂÅÄÉÔÅÓØ, ÞÔÏ WindowMaker ÕÓÔÁÎÏ×ÌÅÎ ×ÅÒÎÏ, É ÚÁÐÕÓÔÉÔÅ wmaker.inst" -#: ../src/main.c:297 +#: ../src/main.c:300 #, c-format msgid "%s:could not execute initialization script" -msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ ÉÎÉÃÉÁÌÉÚÁÃÉÏÎÎÙÊ ÓÃÅÎÁÒÉÊ" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ ÓÃÅÎÁÒÉÊ ÉÎÉÃÉÁÌÉÚÁÃÉÉ" -#: ../src/main.c:314 +#: ../src/main.c:317 #, c-format msgid "%s:could not execute exit script" -msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ ÚÁ×ÅÒÛÁÀÝÉÊ ÓÃÅÎÁÒÉÊ" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ×ÙÐÏÌÎÉÔØ ÓÃÅÎÁÒÉÊ ÚÁ×ÅÒÛÅÎÉÑ ÒÁÂÏÔÙ" -#: ../src/main.c:368 ../src/main.c:375 ../src/main.c:382 ../src/main.c:396 +#: ../src/main.c:378 ../src/main.c:385 ../src/main.c:393 ../src/main.c:409 #, c-format msgid "too few arguments for %s" msgstr "ÓÌÉÛËÏÍ ÍÁÌÏ ÁÒÇÕÍÅÎÔÏ× ÄÌÑ %s" -#: ../src/main.c:386 +#: ../src/main.c:397 #, c-format msgid "bad value for visualid: \"%s\"" msgstr "ÏÛÉÂÏÞÎÏÅ ÚÎÁÞÅÎÉÅ ÄÌÑ visualid: \"%s\"" -#: ../src/main.c:444 +# +#: ../src/main.c:414 +#, c-format +msgid "%s: invalid argument '%s'" +msgstr "%s: ÎÅÄÏÐÕÓÔÉÍÙÊ ÁÒÇÕÍÅÎÔ \"%s\"" + +#: ../src/main.c:415 +#, c-format +msgid "Try '%s --help' for more information" +msgstr "ðÏÐÒÏÂÕÊÔÅ '%s --help' ÄÌÑ ÄÌÑ ×Ù×ÏÄÁ ÓÐÉÓËÁ ÄÏÓÔÕÐÎÙÈ ÐÁÒÁÍÅÔÒÏ×" + +#: ../src/main.c:458 msgid "X server does not support locale" msgstr "X ÓÅÒ×ÅÒ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÌÏËÁÌÉÚÁÃÉÀ" -#: ../src/main.c:447 +#: ../src/main.c:461 msgid "cannot set locale modifiers" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÕÓÔÁÎÏ×ÉÔØ ÐÁÒÁÍÅÔÒÙ ÌÏËÁÌÉÚÁÃÉÉ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÕÓÔÁÎÏ×ÉÔØ ÐÁÒÁÍÅÔÒÙ ÌÏËÁÌÉÚÁÃÉÉ" -#: ../src/main.c:464 +#: ../src/main.c:478 #, c-format msgid "could not open display \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÄÉÓÐÌÅÊ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÄÉÓÐÌÅÊ \"%s\"" #: ../src/menu.c:285 msgid "wrealloc() failed while trying to add menu item" -msgstr "ÏÛÉÂËÁ × ×ÙÐÏÌÎÅÎÉÉ wrealloc() ÐÒÉ ÐÏÐÙÔËÅ ÄÏÂÁ×ÉÔØ ÜÌÅÍÅÎÔ ÍÅÎÀ" +msgstr "ÐÒÉ ÐÏÐÙÔËÅ ÄÏÂÁ×ÉÔØ ÜÌÅÍÅÎÔ ÍÅÎÀ ×ÏÚÎÉËÌÁ ÏÛÉÂËÁ × ÆÕÎËÃÉÉ wrealloc()" #: ../src/misc.c:71 #, c-format msgid "could not define value for %s for cpp" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ ÚÎÁÞÅÎÉÑ ÄÌÑ %s ÄÌÑ cpp" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ ÚÎÁÞÅÎÉÑ ÄÌÑ %s ÄÌÑ cpp" #: ../src/misc.c:101 #, c-format msgid "could not get password entry for UID %i" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÏÌØÚÏ×ÁÔÅÌÅ ÄÌÑ UID %i" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÐÏÌØÚÏ×ÁÔÅÌÅ ÄÌÑ UID %i" #: ../src/misc.c:125 #, c-format msgid "your machine is misconfigured. HOSTNAME is set to %s" -msgstr "÷ÁÛÁ ÍÁÛÉÎÁ ÎÁÓÔÒÏÅÎÁ ÎÅ×ÅÒÎÏ. HOSTNAME ÕÓÔÁÎÏ×ÌÅÎÏ × %s" +msgstr "÷ÁÛÁ ÓÉÓÔÅÍÁ ÎÁÓÔÒÏÅÎÁ ÎÅ×ÅÒÎÏ. ðÅÒÅÍÅÎÎÁÑ HOSTNAME ÕÓÔÁÎÏ×ÌÅÎÁ × %s" #: ../src/misc.c:131 #, c-format msgid "your machine is misconfigured. HOST is set to %s" -msgstr "÷ÁÛÁ ÍÁÛÉÎÁ ÎÁÓÔÒÏÅÎÁ ÎÅ×ÅÒÎÏ. HOST ÕÓÔÁÎÏ×ÌÅÎ × %s" +msgstr "÷ÁÛÁ ÓÉÓÔÅÍÁ ÎÁÓÔÒÏÅÎÁ ÎÅ×ÅÒÎÏ. ðÅÒÅÍÅÎÎÁÑ HOST ÕÓÔÁÎÏ×ÌÅÎÁ × %s" #: ../src/misc.c:773 msgid "selection timed-out" msgstr "×ÙÄÅÌÅÎÉÅ ÕÓÔÁÒÅÌÏ" -#: ../src/misc.c:788 +#: ../src/misc.c:789 msgid "Program Arguments" msgstr "áÒÇÕÍÅÎÔÙ ðÒÏÇÒÁÍÍÙ" -#: ../src/misc.c:789 +#: ../src/misc.c:790 msgid "Enter command arguments:" msgstr "÷×ÅÄÉÔÅ ÁÒÇÕÍÅÎÔÙ ËÏÍÁÎÄÙ:" -#: ../src/misc.c:884 +#: ../src/misc.c:887 msgid "unable to get dropped data from DND drop" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÄÁÎÎÙÅ ÏÔ DND drop" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÐÅÒÅÔÁÝÅÎÎÙÅ ÄÁÎÎÙÅ" -#: ../src/misc.c:892 +#: ../src/misc.c:895 msgid "error getting dropped data from DND drop" msgstr "ÏÛÉÂËÁ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÄÁÎÎÙÈ ÏÔ DND drop" -#: ../src/misc.c:898 +#: ../src/misc.c:901 msgid "out of memory while getting data from DND drop" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ÐÒÉ ÐÏÌÕÞÅÎÉÉ ÄÁÎÎÙÈ ÏÔ DND drop" -#: ../src/misc.c:942 ../src/misc.c:1062 +#: ../src/misc.c:946 ../src/misc.c:1081 #, c-format msgid "out of memory during expansion of \"%s\"" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ×Ï ×ÒÅÍÑ ÒÁÓÛÉÒÅÎÉÑ \"%s\"" -#: ../src/misc.c:996 +#: ../src/misc.c:1000 msgid "out of memory during expansion of \"%w\"" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ×Ï ×ÒÅÍÑ ÒÁÓÛÉÒÅÎÉÑ \"%w\"" -#: ../src/misc.c:1015 +#: ../src/misc.c:1018 +msgid "out of memory during expansion of \"%W\"" +msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ×Ï ×ÒÅÍÑ ÒÁÓÛÉÒÅÎÉÑ \"%s\"" + +#: ../src/misc.c:1034 msgid "out of memory during expansion of \"%a\"" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ×Ï ×ÒÅÍÑ ÒÁÓÛÉÒÅÎÉÑ \"%a\"" -#: ../src/misc.c:1041 +#: ../src/misc.c:1060 #, c-format msgid "out of memory during expansion of \"%d\"" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ×Ï ×ÒÅÍÑ ÒÁÓÛÉÒÅÎÉÑ \"%d\"" -#: ../src/misc.c:1055 +#: ../src/misc.c:1074 msgid "selection not available" msgstr "ÎÅÔ ×ÙÄÅÌÅÎÉÑ" -#: ../src/misc.c:1127 ../src/misc.c:1133 +#: ../src/misc.c:1146 ../src/misc.c:1152 #, c-format msgid "bad window name value in %s state info" msgstr "ÎÅ×ÅÒÎÏÅ ÚÎÁÞÅÎÉÅ ÉÍÅÎÉ ÏËÎÁ × ÉÎÆÏÒÍÁÃÉÉ Ï ÓÏÓÔÏÑÎÉÉ ðÒÉÞÁÌÁ ÄÌÑ %s" -#: ../src/misc.c:1387 +#: ../src/misc.c:1406 msgid "could not send message to background image helper" msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÓÌÁÔØ ÓÏÏÂÝÅÎÉÅ ÐÒÉÌÏÖÅÎÉÀ ÆÏÎÏ×ÏÇÏ ÉÚÏÂÒÁÖÅÎÉÑ" @@ -666,12 +688,11 @@ msgstr " #: ../src/proplist.c:256 msgid "missing , in array or unterminated array" -msgstr "× ÍÁÓÓÉ×Å ÐÒÏÐÕÝÅÎÁ ',' ÉÌÉ ÎÅÚÁ×ÅÒÛÅÎÎÙÊ ÍÁÓÓÉ×" +msgstr "× ÍÁÓÓÉ×Å ÐÒÏÐÕÝÅÎÁ ',' ÉÌÉ ÍÁÓÓÉ× ÎÅÚÁ×ÅÒÛÅÎ" -# #: ../src/proplist.c:267 msgid "could not get array element" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÜÌÅÍÅÎÔ ÍÁÓÓÉ×Á" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÜÌÅÍÅÎÔ ÍÁÓÓÉ×Á" #: ../src/proplist.c:297 msgid "unterminated dictionary" @@ -703,14 +724,14 @@ msgstr " #: ../src/proplist.c:434 msgid "Comments are not allowed inside WindowMaker owned domain files." -msgstr "÷ÎÕÔÒÉ ÆÁÊÌÏ× ÄÏÍÅÎÏ×, ÐÒÉÎÁÄÌÅÖÁÝÉÈ WindowMaker, ËÏÍÍÅÎÔÁÒÉÉ ÎÅ " -"ÄÏÐÕÓËÁÀÔÓÑ." +msgstr "" +"÷ÎÕÔÒÉ ÆÁÊÌÏ× ÄÏÍÅÎÏ×, ÐÒÉÎÁÄÌÅÖÁÝÉÈ WindowMaker, ËÏÍÍÅÎÔÁÒÉÉ ÎÅ ÄÏÐÕÓËÁÀÔÓÑ." # #: ../src/proplist.c:453 #, c-format msgid "could not open domain file %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÄÏÍÅÎÁ %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÆÁÊÌ ÄÏÍÅÎÁ %s" #: ../src/proplist.c:466 msgid "extra data after end of file" @@ -733,36 +754,36 @@ msgstr " #: ../src/resources.c:81 #, c-format msgid "could not create font set %s. Trying fixed" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÛÒÉÆÔ %s. éÓÐÏÌØÚÕÅÔÓÑ fixed" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÚÄÁÔØ ÛÒÉÆÔ %s. éÓÐÏÌØÚÕÅÔÓÑ fixed" #: ../src/resources.c:98 #, c-format msgid "could not load font %s. Trying fixed" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÛÒÉÆÔ %s. éÓÐÏÌØÚÕÅÔÓÑ fixed" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÛÒÉÆÔ %s. éÓÐÏÌØÚÕÅÔÓÑ fixed" #: ../src/resources.c:136 #, c-format msgid "could not parse color \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÐÒÅÄÅÌÉÔØ Ã×ÅÔ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÏÐÒÅÄÅÌÉÔØ Ã×ÅÔ \"%s\"" #: ../src/resources.c:140 #, c-format msgid "could not allocate color \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ Ã×ÅÔ \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ Ã×ÅÔ \"%s\"" -#: ../src/rootmenu.c:185 ../src/rootmenu.c:187 +#: ../src/rootmenu.c:186 ../src/rootmenu.c:188 msgid "Exit" msgstr "÷ÙÈÏÄ" -#: ../src/rootmenu.c:186 +#: ../src/rootmenu.c:187 msgid "Exit window manager?" msgstr "÷ÙÊÔÉ ÉÚ ÄÉÓÐÅÔÞÅÒÁ ÏËÏÎ?" -#: ../src/rootmenu.c:222 +#: ../src/rootmenu.c:223 msgid "Close X session" msgstr "úÁ×ÅÒÛÉÔØ ÓÅÁÎÓ ÒÁÂÏÔÙ" -#: ../src/rootmenu.c:223 +#: ../src/rootmenu.c:224 msgid "" "Close Window System session?\n" "Kill might close applications with unsaved data." @@ -774,15 +795,15 @@ msgstr "" #. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); #. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); #. -#: ../src/rootmenu.c:225 ../src/winmenu.c:481 +#: ../src/rootmenu.c:226 ../src/winmenu.c:481 msgid "Close" msgstr "úÁËÒÙÔØ" -#: ../src/rootmenu.c:236 -msgid "Kill X session" -msgstr "á×ÁÒÉÊÎÏ ÚÁ×ÅÒÛÉÔØ ÓÅÁÎÓ ÒÁÂÏÔÙ" - #: ../src/rootmenu.c:237 +msgid "Kill X session" +msgstr "á×ÁÒÉÊÎÏÅ ÚÁ×ÅÒÛÅÎÉÅ ÓÅÁÎÓÁ ÒÁÂÏÔÙ" + +#: ../src/rootmenu.c:238 msgid "" "Kill Window System session?\n" "(all applications will be closed)" @@ -790,47 +811,47 @@ msgstr "" "úÁËÒÙÔØ ÓÅÁÎÓ ïËÏÎÎÏÊ óÉÓÔÅÍÙ?\n" "(×ÓÅ ÐÒÉÌÏÖÅÎÉÑ ÂÕÄÕÔ ÚÁ×ÅÒÛÅÎÙ)" -#: ../src/rootmenu.c:463 +#: ../src/rootmenu.c:467 #, c-format msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" -msgstr "%s -- ÎÅ×ÅÒÎÏÅ ÕËÁÚÁÎÉÅ ËÏÍÂÉÎÁÃÉÉ ËÌÁ×ÉÛ \"%s\" ÄÌÑ ÚÁÐÉÓÉ %s" +msgstr "%s:ÎÅ×ÅÒÎÏÅ ÕËÁÚÁÎÉÅ ËÏÍÂÉÎÁÃÉÉ ËÌÁ×ÉÛ \"%s\" ÄÌÑ ÚÁÐÉÓÉ %s" -#: ../src/rootmenu.c:471 +#: ../src/rootmenu.c:475 #, c-format msgid "%s:invalid key in shortcut \"%s\" for entry %s" -msgstr "%s -- ÎÅ×ÅÒÎÁÑ ËÌÁ×ÉÛÁ × ËÏÍÂÉÎÁÃÉÉ \"%s\" ÄÌÑ ÚÁÐÉÓÉ %s" +msgstr "%s:ÎÅ×ÅÒÎÁÑ ËÌÁ×ÉÛÁ × ËÏÍÂÉÎÁÃÉÉ \"%s\" ÄÌÑ ÚÁÐÉÓÉ %s" -#: ../src/rootmenu.c:524 +#: ../src/rootmenu.c:528 #, c-format msgid "%s: unmatched '\"' in menu file" msgstr "%s -- ÎÅÐÁÒÎÁÑ '\"' × ÆÁÊÌÅ ÍÅÎÀ" -#: ../src/rootmenu.c:574 +#: ../src/rootmenu.c:578 #, c-format msgid "%s: missing command" -msgstr "%s -- ÏÔÓÕÔÓÔ×ÕÀÝÁÑ ËÏÍÁÎÄÁ" +msgstr "%s: ÏÔÓÕÔÓÔ×ÕÀÝÁÑ ËÏÍÁÎÄÁ" -#: ../src/rootmenu.c:607 +#: ../src/rootmenu.c:611 #, c-format msgid "invalid OPEN_MENU specification: %s" msgstr "ÎÅ×ÅÒÎÁÑ ÓÐÅÃÉÆÉËÁÃÉÑ OPEN_MENU: %s" -#: ../src/rootmenu.c:680 +#: ../src/rootmenu.c:684 #, c-format msgid "%s:could not stat menu" -msgstr "%s:ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÍÅÎÀ" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÍÅÎÀ" -#: ../src/rootmenu.c:688 +#: ../src/rootmenu.c:692 #, c-format msgid "%s:could not stat menu:%s" -msgstr "%s:ÎÕ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÍÅÎÀ:%s" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÉÎÆÏÒÍÁÃÉÀ Ï ÍÅÎÀ:%s" -#: ../src/rootmenu.c:706 +#: ../src/rootmenu.c:710 #, c-format msgid "too many parameters in OPEN_MENU: %s" msgstr "ÓÌÉÛËÏÍ ÍÎÏÇÏ ÐÁÒÁÍÅÔÒÏ× ÄÌÑ OPEN_MENU: %s" -#: ../src/rootmenu.c:742 +#: ../src/rootmenu.c:746 msgid "" "There are more than one WORKSPACE_MENU commands in the applications menu. " "Only one is allowed." @@ -838,97 +859,97 @@ msgstr "" "÷ ÇÌÁ×ÎÏÍ ÍÅÎÀ ÐÒÉÓÕÔÓÔ×ÕÅÔ ÂÏÌØÛÅ ÏÄÎÏÊ ËÏÍÁÎÄÙ WORKSPACE_MENU. äÏÐÕÓÔÉÍÁ " "ÔÏÌØËÏ ÏÄÎÁ" -#: ../src/rootmenu.c:771 ../src/rootmenu.c:789 +#: ../src/rootmenu.c:775 ../src/rootmenu.c:793 #, c-format msgid "%s:missing parameter for menu command \"%s\"" msgstr "%s:ÎÅÄÏÓÔÁÀÝÉÊ ÐÁÒÁÍÅÔÒ ÄÌÑ ËÏÍÁÎÄÙ ÍÅÎÀ \"%s\"" -#: ../src/rootmenu.c:852 +#: ../src/rootmenu.c:856 #, c-format msgid "%s:unknown command \"%s\" in menu config." msgstr "%s:ÎÅÉÚ×ÅÓÔÎÁÑ ËÏÍÁÎÄÁ \"%s\" × ÎÁÓÔÒÏÊËÅ ÍÅÎÀ" -#: ../src/rootmenu.c:860 +#: ../src/rootmenu.c:864 #, c-format msgid "%s:can't add shortcut for entry \"%s\"" -msgstr "%s:ÎÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ËÏÍÂÉÎÁÃÉÀ ËÌÁ×ÉÛ ÄÌÑ ËÏÍÁÎÄÙ \"%s\"" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ÄÏÂÁ×ÉÔØ ËÏÍÂÉÎÁÃÉÀ ËÌÁ×ÉÛ ÄÌÑ ËÏÍÁÎÄÙ \"%s\"" -#: ../src/rootmenu.c:997 +#: ../src/rootmenu.c:1001 #, c-format msgid "%s:maximal line size exceeded in menu config: %s" msgstr "%s:ÐÒÅ×ÙÛÅÎ ÍÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÓÔÒÏËÉ × ÎÁÓÔÒÏÊËÅ ÍÅÎÀ: %s" -#: ../src/rootmenu.c:1019 ../src/rootmenu.c:1111 ../src/rootmenu.c:1212 +#: ../src/rootmenu.c:1023 ../src/rootmenu.c:1115 ../src/rootmenu.c:1216 #, c-format msgid "%s:missing command in menu config: %s" msgstr "%s:ÏÔÓÕÔÓÔ×ÕÅÔ ËÏÍÁÎÄÁ × ÎÁÓÔÒÏÊËÅ ÍÅÎÀ: %s" -#: ../src/rootmenu.c:1049 +#: ../src/rootmenu.c:1053 #, c-format msgid "%s:syntax error in menu file:END declaration missing" msgstr "%s:ÓÉÎÔÁËÓÉÞÅÓËÁÑ ÏÛÉÂËÁ × ÆÁÊÌÅ ÍÅÎÀ: ÏÔÓÕÔÓÔ×ÕÅÔ END" -#: ../src/rootmenu.c:1078 ../src/rootmenu.c:1177 +#: ../src/rootmenu.c:1082 ../src/rootmenu.c:1181 msgid "could not make arguments for menu file preprocessor" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÄÓÔÁ×ÉÔØ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÐÒÅÐÒÏÃÅÓÓÏÒÁ ÆÁÊÌÁ ÍÅÎÀ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÄÓÔÁ×ÉÔØ ÁÒÇÕÍÅÎÔÙ ÄÌÑ ÐÒÅÐÒÏÃÅÓÓÏÒÁ ÆÁÊÌÁ ÍÅÎÀ" -#: ../src/rootmenu.c:1084 ../src/rootmenu.c:1184 +#: ../src/rootmenu.c:1088 ../src/rootmenu.c:1188 #, c-format msgid "%s:could not open/preprocess menu file" -msgstr "%s:ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ/ÐÒÅÄÏÂÒÁÂÏÔÁÔØ ÆÁÊÌ ÍÅÎÀ" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ/ÐÒÅÄÏÂÒÁÂÏÔÁÔØ ÆÁÊÌ ÍÅÎÀ" -#: ../src/rootmenu.c:1096 ../src/rootmenu.c:1197 +#: ../src/rootmenu.c:1100 ../src/rootmenu.c:1201 #, c-format msgid "%s:could not open menu file" -msgstr "%s:ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ ÍÅÎÀ" +msgstr "%s:ÎÅ ÕÄÁÌÏÓØ ÏÔËÒÙÔØ ÆÁÊÌ ÍÅÎÀ" -#: ../src/rootmenu.c:1123 +#: ../src/rootmenu.c:1127 #, c-format msgid "%s:invalid menu file. MENU command is missing" -msgstr "%s: ÆÁÊÌ ÍÅÎÀ ÎÅ×ÅÒÅÎ. ïÔÓÔÕÔÓ×ÕÅÔ ËÏÍÍÁÎÄÁ MENU" +msgstr "%s:ÆÁÊÌ ÍÅÎÀ ÎÅ×ÅÒÅÎ. ïÔÓÔÕÔÓ×ÕÅÔ ËÏÍÍÁÎÄÁ MENU" -#: ../src/rootmenu.c:1132 +#: ../src/rootmenu.c:1136 msgid "error reading preprocessed menu data" msgstr "ÏÛÉÂËÁ ÞÔÅÎÉÑ ÏÂÒÁÂÏÔÁÎÎÙÈ ÄÁÎÎÙÈ ÍÅÎÀ" -#: ../src/rootmenu.c:1224 +#: ../src/rootmenu.c:1228 #, c-format msgid "%s:no title given for the root menu" -msgstr "%s: ÎÅÔ ÚÁÇÏÌÏ×ËÁ ÄÌÑ ËÏÒÎÅ×ÏÇÏ ÍÅÎÀ" +msgstr "%s: ÎÅ ÚÁÄÁÎ ÚÁÇÏÌÏ×ÏË ËÏÒÎÅ×ÏÇÏ ÍÅÎÀ" -#: ../src/rootmenu.c:1307 ../src/rootmenu.c:1374 ../src/rootmenu.c:1418 +#: ../src/rootmenu.c:1311 ../src/rootmenu.c:1378 ../src/rootmenu.c:1422 #, c-format msgid "out of memory while constructing directory menu %s" msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ÐÒÉ ÓÏÚÄÁÎÉÉ ËÁÔÁÌÏÇÁ ÍÅÎÀ %s" -#: ../src/rootmenu.c:1317 +#: ../src/rootmenu.c:1321 #, c-format msgid "%s:could not stat file \"%s\" in menu directory" msgstr "%s:ÎÅÔ ÉÎÆÏÒÍÁÃÉÉ Ï ÆÁÊÌÅ \"%s\" × ËÁÔÁÌÏÇÅ ÍÅÎÀ" -#: ../src/rootmenu.c:1472 +#: ../src/rootmenu.c:1476 msgid "Commands" msgstr "ëÏÍÁÎÄÙ" -#: ../src/rootmenu.c:1475 +#: ../src/rootmenu.c:1479 msgid "Restart" msgstr "ðÅÒÅÚÁÐÕÓË" -#: ../src/rootmenu.c:1476 +#: ../src/rootmenu.c:1480 msgid "Exit..." msgstr "÷ÙÈÏÄ..." -#: ../src/rootmenu.c:1549 +#: ../src/rootmenu.c:1553 #, c-format msgid "could not find menu file \"%s\" referenced in WMRootMenu" msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÆÁÊÌ ÍÅÎÀ \"%s\", ÕËÁÚÁÎÎÙÊ × WMRootMenu" -#: ../src/rootmenu.c:1556 +#: ../src/rootmenu.c:1560 #, c-format msgid "could not access menu \"%s\" referenced in WMRootMenu" msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÏÞÉÔÁÔØ ÍÅÎÀ \"%s\", ÕËÁÚÁÎÎÏÅ × WMRootMenu" -#: ../src/rootmenu.c:1567 +#: ../src/rootmenu.c:1571 #, c-format msgid "" "using default menu file \"%s\" as the menu referenced in WMRootMenu could " @@ -937,42 +958,42 @@ msgstr "" "×ÍÅÓÔÏ ÍÅÎÀ, ÕËÁÚÁÎÎÏÇÏ × ÆÁÊÌÅ WMRootMenu, ÉÓÐÏÌØÚÕÅÔÓÑ ÍÅÎÀ ÐÏ ÕÍÏÌÞÁÎÉÀ " "(%s) " -#: ../src/rootmenu.c:1590 ../src/rootmenu.c:1666 +#: ../src/rootmenu.c:1594 ../src/rootmenu.c:1670 #, c-format msgid "%s:format error in root menu configuration \"%s\"" msgstr "%s:ÏÛÉÂËÁ ÆÏÒÍÁÔÁ × ÎÁÓÔÒÏÊËÅ ËÏÒÎÅ×ÏÇÏ ÍÅÎÀ \"%s\"" -#: ../src/screen.c:423 +#: ../src/screen.c:428 msgid "could not load logo image for panels" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÚÁÓÔÁ×ËÕ ÄÌÑ ÐÁÎÅÌÅÊ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÚÁÓÔÁ×ËÕ ÄÌÑ ÐÁÎÅÌÅÊ" -#: ../src/screen.c:426 +#: ../src/screen.c:431 #, c-format msgid "error making logo image for panel:%s" msgstr "ÏÛÉÂËÁ ÐÒÉ ÐÏÄÇÏÔÏ×ËÅ ÚÁÓÔÁ×ËÉ ÄÌÑ ÐÁÎÅÌÉ: %s" -#: ../src/screen.c:612 +#: ../src/screen.c:695 #, c-format msgid "could not initialize graphics library context: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ËÏÎÔÅËÓÔ ÇÒÁÆÉÞÅÓËÏÊ ÂÉÂÌÉÏÔÅËÉ: %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÇÒÁÆÉÞÅÓËÕÀ ÂÉÂÌÉÏÔÅËÕ: %s" -#: ../src/screen.c:644 +#: ../src/screen.c:727 msgid "could not do initialization of WINGs widget set" msgstr "ÎÅ ÕÄÁÌÏÓØ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÂÉÂÌÉÏÔÅËÕ WINGs" -#: ../src/screen.c:961 +#: ../src/screen.c:1059 #, c-format msgid "could not save session state in %s" msgstr "ÎÅ ÕÄÁÌÏÓØ ÓÏÈÒÁÎÉÔØ ÓÏÓÔÏÑÎÉÑ ÓÅÁÎÓÁ × %s" -#: ../src/session.c:138 ../src/wdefaults.c:559 ../src/winspector.c:347 +#: ../src/session.c:182 ../src/wdefaults.c:559 ../src/winspector.c:345 #, c-format msgid "can't convert \"%s\" to boolean" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÔØ \"%s\" × ÂÕÌÅ×ÓËÕÀ ×ÅÌÉÞÉÎÕ" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÒÅÏÂÒÁÚÏ×ÁÔØ \"%s\" × ÂÕÌÅ×ÓËÕÀ ×ÅÌÉÞÉÎÕ" -#: ../src/session.c:750 ../src/session.c:844 +#: ../src/session.c:875 ../src/session.c:969 msgid "end of memory while saving session state" -msgstr "ÎÅ È×ÁÔÉÌÏ ÐÁÍÑÔÉ ÐÒÉ ÓÏÈÒÁÎÅÎÉÉ ÓÏÓÔÏÑÎÉÑ ÓÅÁÎÓÁ" +msgstr "ÉÓÞÅÒÐÁÎÁ ÐÁÍÑÔØ ÐÒÉ ÓÏÈÒÁÎÅÎÉÉ ÓÏÓÔÏÑÎÉÑ ÓÅÁÎÓÁ" #. This is not fatal but can mean the session manager exited. #. * If the session manager exited normally we would get a @@ -980,83 +1001,88 @@ msgstr " #. * If the sm was the last client of session, then we'll die #. * anyway, otherwise we can continue doing our stuff. #. -#: ../src/session.c:978 +#: ../src/session.c:1103 msgid "connection to the session manager was lost" msgstr "ÐÏÔÅÒÑÎÏ ÓÏÅÄÉÎÅÎÉÅ Ó ÄÉÓÐÅÔÞÅÒÏÍ ÓÅÓÓÉÊ" #: ../src/stacking.c:72 msgid "could not get window list!!" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÏËÏÎ!!!" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ÓÐÉÓÏË ÏËÏÎ!!!" -#: ../src/startup.c:194 +#: ../src/startup.c:195 #, c-format msgid "internal X error: %s\n" msgstr "×ÎÕÔÒÅÎÎÑÑ ÏÛÉÂËÁ X ÓÅÒ×ÅÒÁ: %s\n" -#: ../src/startup.c:257 +#: ../src/startup.c:258 #, c-format msgid "got signal %i (%s) - restarting\n" msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i (%s) -- ÐÅÒÅÚÁÐÕÓË\n" -#: ../src/startup.c:259 +#: ../src/startup.c:260 #, c-format msgid "got signal %i - restarting\n" msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i - ÐÅÒÅÚÁÐÕÓË\n" -#: ../src/startup.c:273 +#: ../src/startup.c:275 #, c-format -msgid "%s: Received signal SIGTERM. Exiting..." -msgstr ":%s: ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ SIGTERM. úÁ×ÅÒÛÅÎÉÅ ÒÁÂÏÔÙ..." +msgid "got signal %i (%s) - exiting...\n" +msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i (%s) -- ÚÁ×ÅÒÛÅÎÉÅ ÒÁÂÏÔÙ...\n" -#: ../src/startup.c:285 +#: ../src/startup.c:277 +#, c-format +msgid "got signal %i - exiting...\n" +msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i -- ÚÁ×ÅÒÛÅÎÉÅ ÒÁÂÏÔÙ...\n" + +#: ../src/startup.c:290 #, c-format msgid "got signal %i (%s)\n" msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i (%s)\n" -#: ../src/startup.c:287 +#: ../src/startup.c:292 #, c-format msgid "got signal %i\n" msgstr "ÐÏÌÕÞÅÎ ÓÉÇÎÁÌ %i\n" -#: ../src/startup.c:293 +#: ../src/startup.c:298 msgid "" "crashed while trying to do some post-crash cleanup. Aborting immediatelly." msgstr "" "ËÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ ×Ï ×ÒÅÍÑ ×ÏÓÓÔÁÎÏ×ÌÅÎÉÑ ÐÏÓÌÅ ÓÅÒØÅÚÎÏÊ ÏÛÉÂËÉ. " "îåíåäìåîîïå ÚÁ×ÅÒÛÅÎÉÅ ÒÁÂÏÔÙ." -#: ../src/startup.c:304 +#: ../src/startup.c:309 msgid "" "a fatal error has occured, probably due to a bug. Please fill the included " "BUGFORM and report it." msgstr "" -"ÉÍÅÅÔ ÍÅÓÔÏ ÂÙÔØ ËÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ, ×ÏÚÍÏÖÎÏ, ËÁË ÒÅÚÕÌØÔÁÔ ÏÛÉÂËÅ × " -"ÐÒÏÇÒÁÍÍÅ. ðÏÖÁÌÕÊÓÔÁ, ÚÁÐÏÌÎÉÔÅ ÆÁÊÌ BUGFORM Ï ÐÒÉÛÌÉÔÅ ÅÇÏ." +"×ÏÚÎÉËÌÁ ËÒÉÔÉÞÅÓËÁÑ ÏÛÉÂËÁ. ÷ÏÚÍÏÖÎÏ, ÜÔÏ ÒÅÚÕÌØÔÁÔ ÏÛÉÂËÉ × ÐÒÏÇÒÁÍÍÅ. " +"ðÏÖÁÌÕÊÓÔÁ, ÚÁÐÏÌÎÉÔÅ ÆÏÒÍÕ × ÆÁÊÌÅ BUGFORM É ÏÔÐÒÁרÔÅ ÅÇÏ Á×ÔÏÒÕ." #. restart another window manager so that the X session doesn't #. * go to space -#: ../src/startup.c:311 +#: ../src/startup.c:316 msgid "trying to start alternative window manager..." msgstr "ÐÏÐÙÔËÁ ÚÁÐÕÓËÁ ÁÌØÔÅÒÎÁÔÉ×ÎÏÇÏ ÄÉÓÐÅÔÞÅÒÁ ÏËÏÎ..." -#: ../src/startup.c:710 +#: ../src/startup.c:719 #, c-format msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" msgstr "" "ÒÁÚÍÅÒ ÚÎÁÞËÁ ÕÓÔÁÎÏ×ÌÅÎ × %i, ÎÏ ÜÔÏ ÓÌÉÛËÏÍ ÍÁÌÏ. éÓÐÏÌØÚÕÅÔÓÑ 16.\n" -#: ../src/startup.c:754 +#: ../src/startup.c:763 msgid "it seems that there already is a window manager running" msgstr "ðÏÈÏÖÅ, ÞÔÏ ÁËÔÉ×ÅÎ ÄÒÕÇÏÊ ÄÉÓÐÅÔÞÅÒ ÏËÏÎ" -#: ../src/startup.c:760 +#: ../src/startup.c:769 #, c-format msgid "could not manage screen %i" -msgstr "" +msgstr "îÅ ÕÄÁÅÔÓÑ ÕÐÒÁ×ÌÑÔØ ÜËÒÁÎÏÍ %i" -#: ../src/startup.c:820 +#: ../src/startup.c:829 msgid "could not manage any screen" -msgstr "" +msgstr "îÅ ÕÄÁÅÔÓÑ ÕÐÒÁ×ÌÑÔØ ËÁËÉÍ-ÌÉÂÏ ÜËÒÁÎÏÍ" #: ../src/switchmenu.c:114 msgid "Windows" @@ -1070,25 +1096,25 @@ msgstr " #: ../src/texture.c:280 ../src/texture.c:324 #, c-format msgid "could not load texture pixmap \"%s\":%s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÚÁÇÒÕÚÉÔØ ÒÁÓÔÒÏ×ÙÊ ÒÉÓÕÎÏË Ó ÔÅËÓÔÕÒÏÊ \"%s\": %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÚÁÇÒÕÚÉÔØ ÒÁÓÔÒÏ×ÙÊ ÒÉÓÕÎÏË Ó ÔÅËÓÔÕÒÏÊ \"%s\": %s" #: ../src/texture.c:463 ../src/texture.c:574 #, c-format msgid "could not render texture: %s" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÐÏÄÇÏÔÏ×ÉÔØ ÔÅËÓÔÕÒÕ: %s" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÄÇÏÔÏ×ÉÔØ ÔÅËÓÔÕÒÕ: %s" #: ../src/wdefaults.c:405 #, c-format msgid "could not find icon file \"%s\"" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÚÎÁÞÏË \"%s\"" +msgstr "ÎÅ ÕÄÁÌÏÓØ ÎÁÊÔÉ ÚÎÁÞÏË \"%s\"" -#: ../src/window.c:2282 ../src/window.c:2414 +#: ../src/window.c:2377 ../src/window.c:2509 msgid "" "the NumLock, ScrollLock or similar key seems to be turned on.\n" "Turn it off or some mouse actions and keyboard shortcuts will not work." msgstr "" "ðÏÈÏÖÅ, ÞÔÏ NumLock, ScrollLock ÉÌÉ ÁÎÁÌÏÇÉÞÎÁÑ ËÌÁ×ÉÛÁ ×ËÌÀÞÅÎÁ.\n" -"÷ÙËÌÀÞÉÔÅ ÅÅ ÉÌÉ ÎÅËÏÔÏÒÙÅ ÏÐÅÒÁÃÉÉ ÍÙÛØÀ ÉÌÉ ËÏÍÂÉÎÁÃÉÉ ËÌÁ×ÉÛ ÎÅ ÂÕÄÕÔ " +"÷ÙËÌÀÞÉÔÅ ÅÅ ÉÌÉ ÎÅËÏÔÏÒÙÅ ÏÐÅÒÁÃÉÉ ÍÙÛØÀ É ËÏÍÂÉÎÁÃÉÉ ËÌÁ×ÉÛ ÎÅ ÂÕÄÕÔ " "ÒÁÂÏÔÁÔØ." #: ../src/winmenu.c:249 ../src/winmenu.c:257 @@ -1156,12 +1182,12 @@ msgstr " msgid "Unshade" msgstr "÷ÏÓÓÔÁÎÏ×ÉÔØ" -#: ../src/winspector.c:281 +#: ../src/winspector.c:279 #, c-format msgid "Could not find icon \"%s\" specified for this window" msgstr "îÅ×ÏÚÍÏÖÎÏ ÎÁÊÔÉ ÆÁÊÌ ÚÎÁÞËÁ (%s), ÕËÁÚÁÎÎÙÊ ÄÌÑ ÜÔÏÇÏ ÏËÎÁ" -#: ../src/winspector.c:297 +#: ../src/winspector.c:295 #, c-format msgid "Could not open specified icon \"%s\":%s" msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÕËÁÚÁÎÎÙÊ ÆÁÊÌ ÚÎÁÞËÁ (%s): %s" @@ -1233,14 +1259,12 @@ msgid "Disable miniaturize button" msgstr "ïÔËÌÀÞÉÔØ ËÎÏÐËÕ ÍÉÎÉÁÔÀÒÉÚÁÃÉÉ" #: ../src/winspector.c:1133 -#, fuzzy msgid "Keep on top / floating" -msgstr "÷ÓÅÇÄÁ ÎÁ×ÅÒÈÕ" +msgstr "÷ÓÅÇÄÁ ÎÁ×ÅÒÈÕ (ÐÌÁ×ÁÀÝÅÅ)" #: ../src/winspector.c:1137 -#, fuzzy msgid "Keep at bottom / sunken" -msgstr "÷ÓÅÇÄÁ ×ÎÉÚÕ" +msgstr "÷ÓÅÇÄÁ ×ÎÉÚÕ (ÕÔÏÐÌÅÎÏ)" #: ../src/winspector.c:1145 msgid "Start Miniaturized" @@ -1331,30 +1355,27 @@ msgstr " msgid "No application icon" msgstr "îÅ ÐÏËÁÚÙ×ÁÔØ ÚÎÁÞÏË" -#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:472 +#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:480 #, c-format msgid "Workspace %i" msgstr "òÁÂÏÞÅÅ ÍÅÓÔÏ %i" -#: ../src/workspace.c:529 +#: ../src/workspace.c:537 msgid "Workspaces" msgstr "òÁÂÏÞÉÅ ÍÅÓÔÁ" -#: ../src/workspace.c:531 +#: ../src/workspace.c:539 msgid "could not create Workspace menu" msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÍÅÎÀ òÁÂÏÞÉÈ ÍÅÓÔ" -#: ../src/workspace.c:538 +#: ../src/workspace.c:546 msgid "New" msgstr "óÏÚÄÁÔØ" -#: ../src/workspace.c:539 +#: ../src/workspace.c:547 msgid "Destroy Last" msgstr "õÄÁÌÉÔØ ÐÏÓÌÅÄÎÅÅ" #: ../src/xutil.c:228 msgid "invalid data in selection" -msgstr "ÎÅÄÏÐÕÓÔÉÍÙÅ ÄÁÎÎÙÅ × ×ÙÄÅÌÅÎÉÉ" - -#~ msgid "Too few elements in array for key \"WorkspaceBack\"." -#~ msgstr "óÌÉÛËÏÍ ÍÁÌÏ ÜÌÅÍÅÎÔÏ× × ÍÁÓÓÉ×Å ÄÌÑ ËÌÀÞÁ \"WorkspaceBack\"." +msgstr "ÎÅ ÕÄÁÌÏÓØ ÐÏÌÕÞÉÔØ ×ÙÄÅÌÅÎÎÙÅ ÄÁÎÎÙÅ" diff --git a/po/zh_TW.Big5.po b/po/zh_TW.Big5.po new file mode 100644 index 00000000..3d33fb10 --- /dev/null +++ b/po/zh_TW.Big5.po @@ -0,0 +1,1380 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 1999 Free Software Foundation, Inc. +# Li Wei Jih <lwj83@cs.ccu.edu.tw>, 1999. +# +msgid "" +msgstr "" +"Project-Id-Version: Window Maker-0.51.0\n" +"POT-Creation-Date: 1999-02-09 13:00+0800\n" +"PO-Revision-Date: 1999-02-09 13:00+0800\n" +"Last-Translator: Li Wei Jih <lwj83@cs.ccu.edu.tw>\n" +"Language-Team: chinese <zh@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=big5\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: ../src/appicon.c:509 ../src/dialog.c:216 ../src/dialog.c:272 +#: ../src/dock.c:3060 ../src/dockedapp.c:208 ../src/winspector.c:281 +#: ../src/winspector.c:297 +msgid "Error" +msgstr "¿ù»~" + +#: ../src/appicon.c:510 +msgid "Could not open specified icon file" +msgstr "µLªk¶}±Ò«ü©wªº¹Ï¥ÜÀÉ" + +#: ../src/appicon.c:511 ../src/dialog.c:115 ../src/dialog.c:216 +#: ../src/dialog.c:272 ../src/dialog.c:460 ../src/dock.c:424 +#: ../src/dock.c:3061 ../src/dockedapp.c:208 ../src/dockedapp.c:352 +#: ../src/winspector.c:282 ../src/winspector.c:298 +msgid "OK" +msgstr "½T©w" + +#: ../src/appicon.c:532 ../src/dock.c:272 ../src/winmenu.c:123 +msgid "Kill Application" +msgstr "µ²§ôÀ³¥Îµ{¦¡" + +#: ../src/appicon.c:533 ../src/dock.c:273 ../src/winmenu.c:124 +msgid "" +"This will kill the application.\n" +"Any unsaved changes will be lost.\n" +"Please confirm." +msgstr "" +"³o¼Ë·|µ²§ôÀ³¥Îµ{¦¡¡C\n" +"¥ô¦ó¥¼Àx¦sªº§ïÅܱN·|¿ò¥¢¡C\n" +"½Ð½T»{¡C" + +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 +msgid "Yes" +msgstr "¬O" + +#: ../src/appicon.c:534 ../src/dock.c:274 ../src/winmenu.c:125 +msgid "No" +msgstr "§_" + +#: ../src/appicon.c:548 ../src/dock.c:1064 +msgid "Unhide Here" +msgstr "¦b¦¹Åã²{" + +#: ../src/appicon.c:549 ../src/appicon.c:574 ../src/dock.c:1066 +#: ../src/dock.c:1068 ../src/dock.c:3186 ../src/dock.c:3188 +#: ../src/winmenu.c:441 +msgid "Hide" +msgstr "ÁôÂÃ" + +#: ../src/appicon.c:550 +msgid "Set Icon..." +msgstr "³]©w¹Ï¥Ü..." + +#: ../src/appicon.c:551 ../src/dock.c:1072 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 ../src/winmenu.c:488 +msgid "Kill" +msgstr "µ²§ô" + +#: ../src/appicon.c:572 ../src/dock.c:3184 +msgid "Unhide" +msgstr "Åã²{" + +#: ../src/defaults.c:752 ../src/startup.c:709 ../src/startup.c:727 +#: ../src/startup.c:733 +#, c-format +msgid "could not read domain \"%s\" from defaults database" +msgstr "µLªk±q¹w³]¸ê®Æ®wŪ¨ú©w¸q°ì \"%s\"" + +#: ../src/defaults.c:798 ../src/defaults.c:922 ../src/defaults.c:961 +#: ../src/defaults.c:991 +#, c-format +msgid "Domain %s (%s) of defaults database is corrupted!" +msgstr "¹w³]¸ê®Æ®wªº©w¸q°ì %s (%s) ¤w·lÃa¡I" + +#: ../src/defaults.c:803 ../src/defaults.c:943 ../src/defaults.c:974 +#: ../src/defaults.c:1000 +#, c-format +msgid "could not load domain %s from user defaults database" +msgstr "µLªk±q¨Ï¥ÎªÌ¹w³]¸ê®Æ®w¸ü¤J©w¸q°ì %s" + +#: ../src/defaults.c:814 ../src/defaults.c:907 +#, c-format +msgid "Domain %s (%s) of global defaults database is corrupted!" +msgstr "¾ãÅé¹w³]¸ê®Æ®wªº©w¸q°ì %s (%s) ¤w·lÃa¡I" + +#: ../src/defaults.c:833 ../src/defaults.c:912 +#, c-format +msgid "could not load domain %s from global defaults database" +msgstr "µLªk±q¾ãÅé¹w³]¸ê®Æ®w¸ü¤J©w¸q°ì %s" + +#: ../src/defaults.c:1283 +#, c-format +msgid "wrong option value for key \"%s\". Should be one of %s" +msgstr "key \"%s\" ªº¿ï¶µ­È¿ù»~¡CÀ³¬° %s " + +#: ../src/defaults.c:1330 +#, c-format +msgid "can't convert \"%s\" to boolean for key \"%s\"" +msgstr "µLªkÂà´« key \"%s\" ªº \"%s\" ¦¨¬° boolean" + +#: ../src/defaults.c:1335 ../src/defaults.c:1369 ../src/defaults.c:1401 +#: ../src/defaults.c:1414 ../src/defaults.c:1429 ../src/defaults.c:1443 +#: ../src/defaults.c:1515 ../src/defaults.c:1527 ../src/defaults.c:1875 +#: ../src/defaults.c:1892 ../src/defaults.c:1905 ../src/defaults.c:1938 +#: ../src/defaults.c:1954 ../src/defaults.c:1985 ../src/defaults.c:2058 +#, c-format +msgid "using default \"%s\" instead" +msgstr "§ï¥Î¹w³] \"%s\"" + +#: ../src/defaults.c:1366 +#, c-format +msgid "can't convert \"%s\" to integer for key \"%s\"" +msgstr "µLªkÂà´« key \"%s\" ªº \"%s\" ¦¨¬°¾ã¼Æ" + +#: ../src/defaults.c:1396 ../src/defaults.c:1510 ../src/defaults.c:1870 +#: ../src/defaults.c:1887 ../src/defaults.c:1933 ../src/defaults.c:1980 +#: ../src/wdefaults.c:541 ../src/wdefaults.c:577 +#, c-format +msgid "Wrong option format for key \"%s\". Should be %s." +msgstr "key \"%s\" ªº¿ï¶µ®æ¦¡¿ù»~¡CÀ³¬° %s¡C" + +#: ../src/defaults.c:1409 +#, c-format +msgid "Incorrect number of elements in array for key \"%s\"." +msgstr "key \"%s\" ªº°}¦C¤¸¯À¼Æ¥Ø¿ù»~¡C" + +#: ../src/defaults.c:1424 +#, c-format +msgid "Wrong value for key \"%s\". Should be Coordinate." +msgstr "key \"%s\" ªº­È¿ù»~¡CÀ³¬°®y¼Ð¡C" + +#: ../src/defaults.c:1439 +#, c-format +msgid "can't convert array to integers for \"%s\"." +msgstr "µLªk¬° \"%s\" Âà´«°}¦C¦¨¬°¾ã¼Æ¡C" + +#: ../src/defaults.c:1636 ../src/defaults.c:1668 ../src/defaults.c:1684 +#: ../src/defaults.c:1730 ../src/defaults.c:1770 ../src/defaults.c:1808 +#: ../src/defaults.c:1824 +#, c-format +msgid "\"%s\" is not a valid color name" +msgstr "\"%s\" ¤£¬O¦³®ÄªºÃC¦â¦W" + +#: ../src/defaults.c:1649 +msgid "bad number of arguments in gradient specification" +msgstr "º¥¼h³W®æ¤¤¤Þ¼Æ¼Æ¥Ø¿ù»~" + +#: ../src/defaults.c:1703 +msgid "too few arguments in multicolor gradient specification" +msgstr "¦h¦âº¥¼h³W®æ¤¤¤Þ¼Æ¤Ó¤Ö" + +#: ../src/defaults.c:1797 +msgid "bad number of arguments in textured gradient specification" +msgstr "§÷½èº¥¼h³W®æ¤¤¤Þ¼Æ¼Æ¥Ø¿ù»~" + +#: ../src/defaults.c:1840 +#, c-format +msgid "bad opacity value for tgradient texture \"%s\". Should be [0..255]" +msgstr "º¥¼h§÷½è \"%s\" ¤£³z©ú­È¿ù»~¡CÀ³¸Ó¬O [0..255]" + +#: ../src/defaults.c:1853 +#, c-format +msgid "invalid texture type %s" +msgstr "§÷½è«¬ºA %s µL®Ä" + +#: ../src/defaults.c:1900 +#, c-format +msgid "Error in texture specification for key \"%s\"" +msgstr "key \"%s\" ªº§÷½è³W®æ¿ù»~" + +#: ../src/defaults.c:1950 +msgid "Wrong type for workspace background. Should be a texture type." +msgstr "¤u§@°Ï­I´º«¬ºA¿ù»~¡CÀ³¬°§÷½è«¬ºA¡C" + +#: ../src/defaults.c:1998 +#, c-format +msgid "Wrong type for background of workspace %i. Should be a texture." +msgstr "¤u§@°Ï %i ­I´º«¬ºA¿ù»~¡CÀ³¬°§÷½è¡C" + +#: ../src/defaults.c:2023 +msgid "could not load any usable font!!!" +msgstr "µLªk¸ü¤J¥ô¦ó¥i¥Î¦r«¬!!!" + +#: ../src/defaults.c:2053 +#, c-format +msgid "could not get color for key \"%s\"" +msgstr "µLªk¨ú±o key \"%s\" ªº¦â±m" + +#: ../src/defaults.c:2112 ../src/rootmenu.c:454 +#, c-format +msgid "%s:invalid key modifier \"%s\"" +msgstr "%s: Áä­×¥¿ \"%s\" µL®Ä" + +#: ../src/defaults.c:2124 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\"" +msgstr "%s: Áä½L±¶®|³W®æ \"%s\" µL®Ä" + +#: ../src/defaults.c:2131 +#, c-format +msgid "%s:invalid key in shortcut \"%s\"" +msgstr "%s: ±¶®| \"%s\" ªºÁäµL®Ä" + +#: ../src/defaults.c:2157 +#, c-format +msgid "%s: modifier key %s is not valid" +msgstr "%s: ­×¥¿Áä %s ¤£¥¿½T" + +#: ../src/defaults.c:2233 +msgid "could not render texture for icon background" +msgstr "µLªkªí²{¹Ï¥Ü­I´ºªº§÷½è" + +#: ../src/dialog.c:115 ../src/dialog.c:467 ../src/dock.c:424 +#: ../src/dockedapp.c:358 ../src/rootmenu.c:188 ../src/rootmenu.c:226 +#: ../src/rootmenu.c:240 +msgid "Cancel" +msgstr "¨ú®ø" + +#: ../src/dialog.c:211 +msgid "Could not open directory " +msgstr "µLªk¶}±Ò¥Ø¿ý" + +#: ../src/dialog.c:267 +msgid "Could not load image file " +msgstr "µLªk¸ü¤J¼v¹³ÀÉ" + +#: ../src/dialog.c:404 +msgid "Directories" +msgstr "¥Ø¿ý" + +#: ../src/dialog.c:413 +msgid "Icons" +msgstr "¹Ï¥Ü" + +#: ../src/dialog.c:450 +msgid "File Name:" +msgstr "ÀɦW:" + +#: ../src/dialog.c:473 +msgid "Choose File" +msgstr "¿ï¨úÀÉ®×" + +#: ../src/dialog.c:490 ../src/dialog.c:492 +msgid "Icon Chooser" +msgstr "¹Ï¥Ü¿ï¨ú¾¹" + +#: ../src/dock.c:213 +#, c-format +msgid "Type the name for workspace %i:" +msgstr "¿é¤J¤u§@°Ï %i ¦WºÙ:" + +#: ../src/dock.c:214 ../src/dock.c:1043 +msgid "Rename Workspace" +msgstr "¤u§@°Ï§ó¦W" + +#: ../src/dock.c:422 +msgid "Workspace Clip" +msgstr "¤u§@°Ï°j¯¾°w" + +#: ../src/dock.c:423 +msgid "All selected icons will be removed!" +msgstr "©Ò¦³¿ï¨úªº¹Ï¥Ü·|³Q§R°£¡I" + +#: ../src/dock.c:470 +msgid "Keep Icon" +msgstr "«O«ù¹Ï¥Ü" + +#: ../src/dock.c:471 ../src/dock.c:1978 ../src/dock.c:2107 +msgid "Type the command used to launch the application" +msgstr "¿é¤J¥Î¨Ó±Ò°ÊÀ³¥Îµ{¦¡ªº©R¥O" + +#: ../src/dock.c:856 +#, c-format +msgid "could not launch application %s\n" +msgstr "µLªk±Ò°ÊÀ³¥Îµ{¦¡ %s\n" + +#: ../src/dock.c:911 +msgid "could not create workspace submenu for Clip menu" +msgstr "µLªk¬°°j¯¾°w¿ï³æ«Ø¥ß¤u§@°Ï°Æ¿ï³æ" + +#: ../src/dock.c:974 +msgid "could not create options submenu for Clip menu" +msgstr "µLªk¬°°j¯¾°w¿ï³æ«Ø¥ß¿ï¶µ°Æ¿ï³æ" + +#: ../src/dock.c:978 ../src/dock.c:1032 ../src/winmenu.c:383 +msgid "Keep on top" +msgstr "«O«ù¦b³Ì¤W¼h" + +#: ../src/dock.c:984 +msgid "Collapsed" +msgstr "§éÅ|" + +#: ../src/dock.c:990 +msgid "AutoCollapse" +msgstr "¦Û°Ê§éÅ|" + +#: ../src/dock.c:996 +msgid "AutoRaiseLower" +msgstr "¦Û°Ê¤É­°" + +#: ../src/dock.c:1002 +msgid "AutoAttract Icons" +msgstr "¦Û°Ê§l¤Þ¹Ï¥Ü" + +#: ../src/dock.c:1008 +msgid "Keep Attracted Icons" +msgstr "«O«ù§l¤Þªº¹Ï¥Ü" + +#: ../src/dock.c:1038 +msgid "Clip Options" +msgstr "°j¯¾°w¿ï¶µ" + +#: ../src/dock.c:1045 +msgid "(Un)Select Icon" +msgstr "¿ï¨ú¹Ï¥Ü¡]¨ú®ø¡^" + +#: ../src/dock.c:1047 +msgid "(Un)Select All Icons" +msgstr "¿ï¨ú©Ò¦³¹Ï¥Ü¡]¨ú®ø¡^" + +#: ../src/dock.c:1050 +msgid "Keep Icon(s)" +msgstr "«O«ù¹Ï¥Ü" + +#: ../src/dock.c:1052 +msgid "Move Icon(s) To" +msgstr "²¾°Ê¹Ï¥Ü¦Ü" + +#: ../src/dock.c:1057 +msgid "Remove Icon(s)" +msgstr "§R°£¹Ï¥Ü" + +#: ../src/dock.c:1059 +msgid "Attract Icons" +msgstr "§l¤Þ¹Ï¥Ü" + +#: ../src/dock.c:1062 +msgid "Launch" +msgstr "±Ò°Ê" + +#: ../src/dock.c:1070 +msgid "Settings..." +msgstr "³]©w..." + +#: ../src/dock.c:1455 ../src/dock.c:1469 ../src/dock.c:1483 ../src/dock.c:1493 +#, c-format +msgid "bad value in docked icon state info %s" +msgstr "°±¾aªº¹Ï¥Üª¬ºA¸ê°T %s ­È¤£¥¿½T" + +#: ../src/dock.c:1501 +#, c-format +msgid "bad value in docked icon position %i,%i" +msgstr "°±¾aªº¹Ï¥Ü¦ì¸m %i,%i ­È¤£¥¿½T" + +#: ../src/dock.c:1745 +msgid "there are too many icons stored in dock. Ignoring what doesn't fit" +msgstr "¤Ó¦h¹Ï¥Ü¦s©ñ¦b°±¾a°Ï¡C©¿²¤¤£¾A·íªº" + +#. icon->forced_dock = 1; +#: ../src/dock.c:1977 ../src/dock.c:2106 +msgid "Dock Icon" +msgstr "°±¾a¹Ï¥Ü" + +#: ../src/dock.c:3053 ../src/dock.c:3057 +#, c-format +msgid "Could not execute command \"%s\"" +msgstr "µLªk°õ¦æ©R¥O \"%s\"" + +#: ../src/dockedapp.c:128 +#, c-format +msgid "could not find icon %s, used in a docked application" +msgstr "µLªk§ä¨ì¹Ï¥Ü %s¡A¥Î©ó°±¾aªºÀ³¥Îµ{¦¡" + +#: ../src/dockedapp.c:207 +#, c-format +msgid "Could not open specified icon file:%s" +msgstr "µLªk¶}±Ò«ü©wªº¹Ï¥ÜÀÉ:%s" + +#: ../src/dockedapp.c:293 +msgid "Start when WindowMaker is started" +msgstr "·í WindowMaker ±Ò°Ê®É±Ò°Ê" + +#: ../src/dockedapp.c:300 +msgid "Application path and arguments" +msgstr "À³¥Îµ{¦¡¸ô®|»P¤Þ¼Æ" + +#: ../src/dockedapp.c:311 +msgid "Command for files dropped with DND" +msgstr "DND ©ñ¸mÀɮתº©R¥O" + +#: ../src/dockedapp.c:323 +#, c-format +msgid "%d will be replaced with the file name" +msgstr "%d ·|³QÀɦW¨ú¥N" + +#: ../src/dockedapp.c:327 +msgid "DND support was not compiled in" +msgstr "¥¼½sͤJ DND ¤ä´©" + +#: ../src/dockedapp.c:333 +msgid "Icon Image" +msgstr "¹Ï¥Ü¼v¹³" + +#: ../src/dockedapp.c:345 ../src/winspector.c:1235 +msgid "Browse..." +msgstr "ÂsÄý..." + +#: ../src/dockedapp.c:390 +msgid "Docked Application Settings" +msgstr "°±¾aªºÀ³¥Îµ{¦¡³]©w" + +#: ../src/event.c:352 +msgid "stack overflow: too many dead processes" +msgstr "°ïÅ|·¸¦ì: ¤Ó¦h²×¤îªº¦æµ{" + +#: ../src/framewin.c:485 +#, c-format +msgid "could not render gradient: %s" +msgstr "µLªkªí²{º¥¼h: %s" + +#: ../src/framewin.c:501 ../src/framewin.c:516 ../src/framewin.c:527 +#: ../src/framewin.c:534 ../src/framewin.c:541 ../src/icon.c:296 +#: ../src/texture.c:578 +#, c-format +msgid "error rendering image:%s" +msgstr "ªí²{¼v¹³¿ù»~: %s" + +#: ../src/icon.c:182 ../src/wdefaults.c:411 +#, c-format +msgid "error loading image file \"%s\"" +msgstr "¸ü¤J¼v¹³ÀÉ¿ù»~ \"%s\"" + +#: ../src/icon.c:430 ../src/icon.c:439 +#, c-format +msgid "could not create directory %s" +msgstr "µLªk«Ø¥ß¥Ø¿ý %s" + +#: ../src/icon.c:706 +#, c-format +msgid "could not find default icon \"%s\"" +msgstr "µLªk¸ü¤J¹w³]¹Ï¥Ü \"%s\"" + +#: ../src/icon.c:712 +#, c-format +msgid "could not load default icon \"%s\":%s" +msgstr "µLªk¸ü¤J¹w³]¹Ï¥Ü \"%s\":%s" + +#: ../src/main.c:195 +msgid "could not exec window manager" +msgstr "µLªk°õ¦æµøµ¡ºÞ²z­û" + +#: ../src/main.c:196 +msgid "Restart failed!!!" +msgstr "­«·s±Ò°Ê¥¢±Ñ!!!" + +#: ../src/main.c:243 +#, c-format +msgid "%s aborted.\n" +msgstr "%s ©ñ±ó¡C\n" + +#: ../src/main.c:254 +#, c-format +msgid "Usage: %s [options]\n" +msgstr "¨Ï¥Îªk¡G %s [¿ï¶µ]\n" + +#: ../src/main.c:255 +msgid "The Window Maker window manager for the X window system" +msgstr "The Window Maker window manager for the X window system" + +#: ../src/main.c:257 +msgid " -display host:dpy\tdisplay to use" +msgstr " -display host:dpy\t­n¨Ï¥Îªº display" + +#: ../src/main.c:259 +msgid " --no-cpp \t\tdisable preprocessing of configuration files" +msgstr " --no-cpp \t\t¤£¹w¥ý³B²z³]©wÀÉ" + +#: ../src/main.c:261 +msgid " --no-dock\t\tdo not open the application Dock" +msgstr " --no-dock\t\t¤£­n¶}±Òµ{¦¡°±¾a°Ï" + +#: ../src/main.c:262 +msgid " --no-clip\t\tdo not open the workspace Clip" +msgstr " --no-clip\t\t¤£­n¶}±Ò¤u§@°Ï°j¯¾°w" + +#. +#. puts(_(" --locale locale locale to use")); +#. +#: ../src/main.c:266 +msgid " --visual-id visualid\tvisual id of visual to use" +msgstr " --visual-id visualid\t©Ò±ý¨Ï¥Îªº visual ¤§ visualid" + +#: ../src/main.c:267 +msgid " --static\t\tdo not update or save configurations" +msgstr " --static\t\t¤£­n§ó·s©ÎÀx¦s³]©wÀÉ" + +#: ../src/main.c:268 +msgid " --version\t\tprint version and exit" +msgstr " --version\t\t¦L¥Xª©¥»½s¸¹¨ÃÂ÷¶}" + +#: ../src/main.c:269 +msgid " --help\t\t\tshow this message" +msgstr " --help\t\t\tÅã¥Ü¥»»¡©ú°T®§" + +#: ../src/main.c:281 +#, c-format +msgid "" +"could not find user GNUstep directory (%s).\n" +"Make sure you have installed Window Maker correctly and run wmaker.inst" +msgstr "" +"µLªk§ä¨ì¨Ï¥ÎªÌ GNUstep ¥Ø¿ý (%s)¡C\n" +"½T©w±z¤w¸g¦w¸Ë WindowMaker ¥¿½T¥B°õ¦æ wmaker.inst" + +#: ../src/main.c:300 +#, c-format +msgid "%s:could not execute initialization script" +msgstr "%s: ±Ò©l¤â½ZµLªk°õ¦æ" + +#: ../src/main.c:317 +#, c-format +msgid "%s:could not execute exit script" +msgstr "%s: Â÷¶}¤â½ZµLªk°õ¦æ" + +#: ../src/main.c:378 ../src/main.c:385 ../src/main.c:393 ../src/main.c:409 +#, c-format +msgid "too few arguments for %s" +msgstr "%s ªº¤Þ¼Æ¤Ó¤Ö" + +#: ../src/main.c:397 +#, c-format +msgid "bad value for visualid: \"%s\"" +msgstr "visualid ªº­È¤£¥¿½T: \"%s\"" + +#: ../src/main.c:414 +#y, c-format +msgid "%s: invalid argument '%s'" +msgstr "%s: ±¶®| \"%s\" ªºÁäµL®Ä" + +#: ../src/main.c:415 +#, c-format +msgid "Try '%s --help' for more information" +msgstr "¸ÕµÛ¥Î '%s --help' ¨ÓÀò±o§ó¦h¸ê°T" + +#: ../src/main.c:458 +msgid "X server does not support locale" +msgstr "X ¦øªA¾¹¤£¤ä´© locale" + +#: ../src/main.c:461 +msgid "cannot set locale modifiers" +msgstr "µLªk³]©w locale" + +#: ../src/main.c:478 +#, c-format +msgid "could not open display \"%s\"" +msgstr "µLªk¶}±Ò display \"%s\"" + +#: ../src/menu.c:285 +msgid "wrealloc() failed while trying to add menu item" +msgstr "¹Á¸Õ¼W¥[¿ï³æ¶µ¥Ø®É wrealloc() ¥¢±Ñ" + +#: ../src/misc.c:71 +#, c-format +msgid "could not define value for %s for cpp" +msgstr "µLªk©w¸q cpp ªº %s ªº­È" + +#: ../src/misc.c:101 +#, c-format +msgid "could not get password entry for UID %i" +msgstr "µLªk¨ú±o UID %i ªº±K½X°O¿ý" + +#: ../src/misc.c:125 +#, c-format +msgid "your machine is misconfigured. HOSTNAME is set to %s" +msgstr "±zªº¾÷¾¹³]©w¿ù»~¡CHOSTNAME ³]¬° %s" + +#: ../src/misc.c:131 +#, c-format +msgid "your machine is misconfigured. HOST is set to %s" +msgstr "±zªº¾÷¾¹³]©w¿ù»~¡CHOST ³]¬° %s" + +#: ../src/misc.c:773 +msgid "selection timed-out" +msgstr "¿ï¨ú¹O®É" + +#: ../src/misc.c:789 +msgid "Program Arguments" +msgstr "µ{¦¡¤Þ¼Æ" + +#: ../src/misc.c:790 +msgid "Enter command arguments:" +msgstr "¿é¤J©R¥O¤Þ¼Æ:" + +#: ../src/misc.c:887 +msgid "unable to get dropped data from DND drop" +msgstr "µLªk±q DND ©ñ¸m¨ú±o©ñ¸m¸ê®Æ" + +#: ../src/misc.c:895 +msgid "error getting dropped data from DND drop" +msgstr "±q DND ©ñ¸m¨ú±o©ñ¸m¸ê®Æ¿ù»~" + +#: ../src/misc.c:901 +msgid "out of memory while getting data from DND drop" +msgstr "±q DND ©ñ¸m¨ú±o¸ê®Æ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:946 ../src/misc.c:1081 +#, c-format +msgid "out of memory during expansion of \"%s\"" +msgstr "®i¶} \"%s\" ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:1000 +msgid "out of memory during expansion of \"%w\"" +msgstr "®i¶} \"%w\" ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:1018 +# +msgid "out of memory during expansion of \"%W\"" +msgstr "®i¶} \"%W\" ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:1034 +msgid "out of memory during expansion of \"%a\"" +msgstr "®i¶} \"%a\" ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:1060 +#, c-format +msgid "out of memory during expansion of \"%d\"" +msgstr "®i¶} \"%d\" ®É°O¾ÐÅ餣¨¬" + +#: ../src/misc.c:1074 +msgid "selection not available" +msgstr "¿ï¨ú¤£¯à¨Ï¥Î" + +#: ../src/misc.c:1146 ../src/misc.c:1152 +#, c-format +msgid "bad window name value in %s state info" +msgstr "%s ª¬ºA¸ê°T¤¤¦³µL®Äªºµøµ¡¦WºÙ­È" + +#: ../src/misc.c:1406 +msgid "could not send message to background image helper" +msgstr "µLªk¶Ç°e°T®§¦Ü­I´º¼v¹³§U¤â" + +#: ../src/pixmap.c:235 +#, c-format +msgid "could not load mask bitmap file \"%s\". Won't use mask" +msgstr "µLªk¸ü¤J¾B¸n¦ì¤¸¬M¹³ÀÉ \"%s\"¡C¤£¨Ï¥Î¾B¸n" + +#: ../src/proplist.c:180 +msgid "unterminated string" +msgstr "¦r¦ê¥¼²×¤î" + +#: ../src/proplist.c:247 +msgid "unterminated array" +msgstr "°}¦C¥¼²×¤î" + +#: ../src/proplist.c:256 +msgid "missing , in array or unterminated array" +msgstr "¦b°}¦C¯Ê¤Ö , ©Î°}¦C¥¼²×¤î" + +#: ../src/proplist.c:267 +msgid "could not get array element" +msgstr "µLªk¨ú±o°}¦C¤¸¯À" + +#: ../src/proplist.c:297 +msgid "unterminated dictionary" +msgstr "¦rÂI¥¼²×¤î" + +#: ../src/proplist.c:315 +msgid "missing dictionary key" +msgstr "¯Ê¤Ö¦r¨åÁä" + +#: ../src/proplist.c:317 +msgid "missing dictionary entry key or unterminated dictionary" +msgstr "¯Ê¤Ö¦r¨å°O¿ýÁä©Î¦r¨å¥¼¤¤¤î" + +#: ../src/proplist.c:323 +msgid "error parsing dictionary key" +msgstr "¦r¨åÁä¸ÑªR¿ù»~" + +#: ../src/proplist.c:332 +msgid "missing = in dictionary entry" +msgstr "¦r¨å°O¿ý¤¤¯Ê¤Ö = " + +#: ../src/proplist.c:351 +msgid "missing ; in dictionary entry" +msgstr "¦r¨å°O¿ý¤¤¯Ê¤Ö ; " + +#: ../src/proplist.c:432 +msgid "was expecting a string, dictionary, data or array." +msgstr "­n¨D¦r¦ê¡A¦r¨å¡A¸ê®Æ©Î°}¦C¡C" + +#: ../src/proplist.c:434 +msgid "Comments are not allowed inside WindowMaker owned domain files." +msgstr "¦b WindowMaker ªº©w¸q°ìÀɤ¤¤£¤¹³\\µù¸Ñ¡C" + +#: ../src/proplist.c:453 +#, c-format +msgid "could not open domain file %s" +msgstr "µLªk¶}±Ò©w¸q°ìÀÉ %s" + +#: ../src/proplist.c:466 +msgid "extra data after end of file" +msgstr "ÀÉ®×µ²§ô«á¦³ÃB¥~¸ê®Æ" + +#: ../src/resources.c:71 +#, c-format +msgid "The following character sets are missing in %s:" +msgstr "%s ¤¤¤U¦C¦r¤¸¶°¯Ê¤Ö:" + +#: ../src/resources.c:76 +#, c-format +msgid "The string \"%s\" will be used in place" +msgstr "¦r¦ê \"%s\" ·|³Q¥Î¨Ó¨ú¥N" + +#: ../src/resources.c:78 +msgid "of any characters from those sets." +msgstr "¨º¨Ç¶°¦Xªº¥ô¦ó¦r¤¸¡C" + +#: ../src/resources.c:81 +#, c-format +msgid "could not create font set %s. Trying fixed" +msgstr "µLªk«Ø¥ß¦r«¬¶° %s¡C¸Õ¥Î fixed" + +#: ../src/resources.c:98 +#, c-format +msgid "could not load font %s. Trying fixed" +msgstr "µLªk¸ü¤J¦r«¬ %s¡C¸Õ¥Î fixed" + +#: ../src/resources.c:136 +#, c-format +msgid "could not parse color \"%s\"" +msgstr "µLªk¸ÑªR¦â±m \"%s\"" + +#: ../src/resources.c:140 +#, c-format +msgid "could not allocate color \"%s\"" +msgstr "µLªk°t¸m¦â±m \"%s\"" + +#: ../src/rootmenu.c:186 ../src/rootmenu.c:188 +msgid "Exit" +msgstr "Â÷¶}" + +#: ../src/rootmenu.c:187 +msgid "Exit window manager?" +msgstr "Â÷¶}µøµ¡ºÞ²z­û¡H" + +#: ../src/rootmenu.c:223 +msgid "Close X session" +msgstr "Ãö³¬ X µøµ¡¨t²Î" + +#: ../src/rootmenu.c:224 +msgid "" +"Close Window System session?\n" +"Kill might close applications with unsaved data." +msgstr "" +"Ãö³¬µøµ¡¨t²Î¡H\n" +"µ²§ô¥i¯àÃö³¬©|¥¼Àx¦s¸ê®ÆªºÀ³¥Îµ{¦¡¡C" + +#. +#. entry = wMenuAddCallback(menu, _("Select Shortcut"), NULL, NULL); +#. wMenuEntrySetCascade(menu, entry, makeMakeShortcutMenu(scr)); +#. +#: ../src/rootmenu.c:226 ../src/winmenu.c:481 +msgid "Close" +msgstr "Ãö³¬" + +#: ../src/rootmenu.c:237 +msgid "Kill X session" +msgstr "µ²§ô X µøµ¡¨t²Î" + +#: ../src/rootmenu.c:238 +msgid "" +"Kill Window System session?\n" +"(all applications will be closed)" +msgstr "" +"µ²§ôµøµ¡¨t²Î¡H\n" +"¡]©Ò¦³À³¥Îµ{¦¡·|³QÃö³¬¡^" + +#: ../src/rootmenu.c:467 +#, c-format +msgid "%s:invalid kbd shortcut specification \"%s\" for entry %s" +msgstr "%s: Áä½L±¶®|³W®æ \"%s\" µL®Ä (%s)" + +#: ../src/rootmenu.c:475 +#, c-format +msgid "%s:invalid key in shortcut \"%s\" for entry %s" +msgstr "%s: ±¶®| \"%s\" ªºÁäµL®Ä (%s)" + +#: ../src/rootmenu.c:528 +#, c-format +msgid "%s: unmatched '\"' in menu file" +msgstr "%s: ¿ï³æÀɤ¤ '\"' ¤£¦¨¹ï" + +#: ../src/rootmenu.c:578 +#, c-format +msgid "%s: missing command" +msgstr "%s: ¯Ê¤Ö©R¥O" + +#: ../src/rootmenu.c:611 +#, c-format +msgid "invalid OPEN_MENU specification: %s" +msgstr "µL®Äªº OPEN_MENU ³W®æ: %s" + +#: ../src/rootmenu.c:684 +#, c-format +msgid "%s:could not stat menu" +msgstr "%s: µLªk stat ¿ï³æ" + +#: ../src/rootmenu.c:692 +#, c-format +msgid "%s:could not stat menu:%s" +msgstr "%s: µLªk stat ¿ï³æ: %s" + +#: ../src/rootmenu.c:710 +#, c-format +msgid "too many parameters in OPEN_MENU: %s" +msgstr "OPEN_MENU ¤¤¦³¤Ó¦h°Ñ¼Æ: %s" + +#: ../src/rootmenu.c:746 +msgid "" +"There are more than one WORKSPACE_MENU commands in the applications menu. " +"Only one is allowed." +msgstr "À³¥Îµ{¦¡¿ï³æ¤¤¦³¶W¹L¤@­Ó WORKSPACE_MENU ©R¥O¡C¥u¤¹³\\¦³¤@­Ó¡C" + +#: ../src/rootmenu.c:775 ../src/rootmenu.c:793 +#, c-format +msgid "%s:missing parameter for menu command \"%s\"" +msgstr "%s: ¿ï³æ©R¥O \"%s\" ¯Ê¤Ö°Ñ¼Æ" + +#: ../src/rootmenu.c:856 +#, c-format +msgid "%s:unknown command \"%s\" in menu config." +msgstr "%s: ¿ï³æ³]©w¤¤¦³¤£¦Wªº©R¥O \"%s\"¡C" + +#: ../src/rootmenu.c:864 +#, c-format +msgid "%s:can't add shortcut for entry \"%s\"" +msgstr "%s: µLªk¬° \"%s\" ¼W¥[±¶®|" + +#: ../src/rootmenu.c:1001 +#, c-format +msgid "%s:maximal line size exceeded in menu config: %s" +msgstr "%s: ¿ï³æÀɤ¤¶W¹L³Ì¤j¦æ¼Æ: %s" + +#: ../src/rootmenu.c:1023 ../src/rootmenu.c:1115 ../src/rootmenu.c:1216 +#, c-format +msgid "%s:missing command in menu config: %s" +msgstr "%s: ¿ï³æ³]©w¤¤¯Ê¤Ö©R¥O: %s" + +#: ../src/rootmenu.c:1053 +#, c-format +msgid "%s:syntax error in menu file:END declaration missing" +msgstr "%s: ¿ï³æÀɤ¤»yªk¿ù»~: ¯Ê¤Ö END «Å§i" + +#: ../src/rootmenu.c:1082 ../src/rootmenu.c:1181 +msgid "could not make arguments for menu file preprocessor" +msgstr "µLªk¬°¿ï³æÀɹw¥ý³B²z¾¹²£¥Í¤Þ¼Æ" + +#: ../src/rootmenu.c:1088 ../src/rootmenu.c:1188 +#, c-format +msgid "%s:could not open/preprocess menu file" +msgstr "%s: µLªk¶}±Ò/¹w¥ý³B²z¿ï³æÀÉ" + +#: ../src/rootmenu.c:1100 ../src/rootmenu.c:1201 +#, c-format +msgid "%s:could not open menu file" +msgstr "%s: µLªk¶}±Ò¿ï³æÀÉ" + +#: ../src/rootmenu.c:1127 +#, c-format +msgid "%s:invalid menu file. MENU command is missing" +msgstr "%s: µL®Äªº¿ï³æÀÉ¡C¯Ê¤Ö MENU ©R¥O" + +#: ../src/rootmenu.c:1136 +msgid "error reading preprocessed menu data" +msgstr "¹w¥ý³B²z¿ï³æ¸ê®ÆÅª¨ú¿ù»~" + +#: ../src/rootmenu.c:1228 +#, c-format +msgid "%s:no title given for the root menu" +msgstr "%s: ¨S¦³µ¹¥D¿ï³æ¼ÐÃD" + +#: ../src/rootmenu.c:1311 ../src/rootmenu.c:1378 ../src/rootmenu.c:1422 +#, c-format +msgid "out of memory while constructing directory menu %s" +msgstr "«Ø¥ß¥Ø¿ý¿ï³æ %s ®É°O¾ÐÅ餣¨¬" + +#: ../src/rootmenu.c:1321 +#, c-format +msgid "%s:could not stat file \"%s\" in menu directory" +msgstr "%s: µLªk stat ¿ï³æ¥Ø¿ý¤¤ÀÉ®× \"%s\"" + +#: ../src/rootmenu.c:1476 +msgid "Commands" +msgstr "©R¥O" + +#: ../src/rootmenu.c:1479 +msgid "Restart" +msgstr "­«·s±Ò°Ê" + +#: ../src/rootmenu.c:1480 +msgid "Exit..." +msgstr "Â÷¶}..." + +#: ../src/rootmenu.c:1553 +#, c-format +msgid "could not find menu file \"%s\" referenced in WMRootMenu" +msgstr "µLªk§ä¨ì WMRootMenu °Ñ·Óªº¿ï³æÀÉ \"%s\"" + +#: ../src/rootmenu.c:1560 +#, c-format +msgid "could not access menu \"%s\" referenced in WMRootMenu" +msgstr "µLªk¦s¨ú WMRootMenu °Ñ·Óªº¿ï³æÀÉ \"%s\"" + +#: ../src/rootmenu.c:1571 +#, c-format +msgid "" +"using default menu file \"%s\" as the menu referenced in WMRootMenu could " +"not be found " +msgstr "µLªk§ä¨ì WMRootMenu °Ñ·Óªº¿ï³æ¡A¨Ï¥Î¹w³]¿ï³æÀÉ \"%s\"" + +#: ../src/rootmenu.c:1594 ../src/rootmenu.c:1670 +#, c-format +msgid "%s:format error in root menu configuration \"%s\"" +msgstr "%s: ¥D¿ï³æ³]©w¤¤®æ¦¡¿ù»~ \"%s\"" + +#: ../src/screen.c:428 +msgid "could not load logo image for panels" +msgstr "µLªk¸ü¤J­±ªOªº¼ÐÃѼv¹³" + +#: ../src/screen.c:431 +#, c-format +msgid "error making logo image for panel:%s" +msgstr "­±ªOªº¼ÐÃѼv¹³²£¥Í¿ù»~: %s" + +#: ../src/screen.c:695 +#, c-format +msgid "could not initialize graphics library context: %s" +msgstr "µLªk±Ò©l¹Ï§Î¨ç¦¡®wÃö³s: %s" + +#: ../src/screen.c:727 +msgid "could not do initialization of WINGs widget set" +msgstr "µLªk±Ò©l WINGs widget set" + +#: ../src/screen.c:1059 +#, c-format +msgid "could not save session state in %s" +msgstr "µLªk¦b %s Àx¦s¶¥¬qª¬ºA" + +#: ../src/session.c:182 ../src/wdefaults.c:559 ../src/winspector.c:345 +#, c-format +msgid "can't convert \"%s\" to boolean" +msgstr "µLªkÂà´« \"%s\" ¦Ü boolean" + +#: ../src/session.c:875 ../src/session.c:969 +msgid "end of memory while saving session state" +msgstr "Àx¦s¶¥¬qª¬ºA®É°O¾ÐÅ餣¨¬" + +#. This is not fatal but can mean the session manager exited. +#. * If the session manager exited normally we would get a +#. * Die message, so this probably means an abnormal exit. +#. * If the sm was the last client of session, then we'll die +#. * anyway, otherwise we can continue doing our stuff. +#. +#: ../src/session.c:1103 +msgid "connection to the session manager was lost" +msgstr "¿ò¥¢¦Ü¶¥¬qºÞ²z­ûªº³sµ²" + +#: ../src/stacking.c:72 +msgid "could not get window list!!" +msgstr "µLªk±o¨ìµøµ¡²M³æ!!" + +#: ../src/startup.c:195 +#, c-format +msgid "internal X error: %s\n" +msgstr "X ¤º³¡¿ù»~: %s\n" + +#: ../src/startup.c:258 +#, c-format +msgid "got signal %i (%s) - restarting\n" +msgstr "¦¬¨ì«H¸¹ %i (%s) - ­«·s±Ò°Ê\n" + +#: ../src/startup.c:260 +#, c-format +msgid "got signal %i - restarting\n" +msgstr "¦¬¨ì«H¸¹ %i - ­«·s±Ò°Ê\n" + +#: ../src/startup.c:275 +#, c-format +msgid "got signal %i (%s) - exiting...\n" +msgstr "¦¬¨ì«H¸¹ %i (%s) - ­«·s±Ò°Ê...\n" + +#: ../src/startup.c:277 +#, c-format +msgid "got signal %i - exiting...\n" +msgstr "¦¬¨ì«H¸¹ %i - ­«·s±Ò°Ê...\n" + +#: ../src/startup.c:290 +#, c-format +msgid "got signal %i (%s)\n" +msgstr "¦¬¨ì«H¸¹ %i (%s)\n" + +#: ../src/startup.c:292 +#, c-format +msgid "got signal %i\n" +msgstr "¦¬¨ì«H¸¹ %i\n" + +#: ../src/startup.c:298 +msgid "" +"crashed while trying to do some post-crash cleanup. Aborting immediatelly." +msgstr "¹Á¸Õ±Y¼ì«á²M°£³B²z®É±Y¼ì¡Cª½±µ©ñ±ó¡C" + +#: ../src/startup.c:309 +msgid "" +"a fatal error has occured, probably due to a bug. Please fill the included " +"BUGFORM and report it." +msgstr "µo¥ÍÄY­«¿ù»~¡A¥i¯à¦]¬°µ{¦¡¿ù»~¡C½Ð¶ñ¼g BUGFORM ¨Ã´£¥X³ø§i¡C" + +#. restart another window manager so that the X session doesn't +#. * go to space +#: ../src/startup.c:316 +msgid "trying to start alternative window manager..." +msgstr "¹Á¸Õ±Ò°Ê¥t¤@®Mµøµ¡ºÞ²z­û..." + +#: ../src/startup.c:719 +#, c-format +msgid "icon size is configured to %i, but it's too small. Using 16, instead\n" +msgstr "¹Ï¥Ü¤j¤p³]¬° %i ¤Ó¤p¡C§ï¥Î 16\n" + +#: ../src/startup.c:763 +msgid "it seems that there already is a window manager running" +msgstr "¦ü¥G¤w¸g¦³µøµ¡ºÞ²z­û¦b°õ¦æ¤¤" + +#: ../src/startup.c:769 +#, c-format +msgid "could not manage screen %i" +msgstr "µLªkºÞ²z¿Ã¹õ %i" + +#: ../src/startup.c:829 +msgid "could not manage any screen" +msgstr "µLªkºÞ²z¥ô¦ó¿Ã¹õ" + +#: ../src/switchmenu.c:114 +msgid "Windows" +msgstr "µøµ¡" + +#: ../src/texture.c:274 ../src/texture.c:318 +#, c-format +msgid "image file \"%s\" used as texture could not be found." +msgstr "§ä¤£¨ì§@¬°§÷½èªº¼v¹³ÀÉ \"%s\"" + +#: ../src/texture.c:280 ../src/texture.c:324 +#, c-format +msgid "could not load texture pixmap \"%s\":%s" +msgstr "µLªk¸ü¤J§÷½è¹Ï¹³ \"%s\":%s" + +#: ../src/texture.c:463 ../src/texture.c:574 +#, c-format +msgid "could not render texture: %s" +msgstr "µLªkªí²{§÷½è: %s" + +#: ../src/wdefaults.c:405 +#, c-format +msgid "could not find icon file \"%s\"" +msgstr "µLªk§ä¨ì¹Ï¥ÜÀÉ \"%s\"" + +#: ../src/window.c:2377 ../src/window.c:2509 +msgid "" +"the NumLock, ScrollLock or similar key seems to be turned on.\n" +"Turn it off or some mouse actions and keyboard shortcuts will not work." +msgstr "" +"NumLock, ScrollLock ©ÎÃþ¦üªºÁä¦ü¥G³Q¥´¶}¡C\n" +"Ãö³¬¥¦§_«h¤@¨Ç·Æ¹«°Ê§@»PÁä½L???·|µLªk§@¥Î¡C" + +#: ../src/winmenu.c:249 ../src/winmenu.c:257 +msgid "Set Shortcut" +msgstr "³]©w±¶®|" + +#: ../src/winmenu.c:333 ../src/winmenu.c:379 +msgid "could not create submenu for window menu" +msgstr "µLªk¬°µøµ¡¿ï³æ«Ø¥ß°Æ¿ï³æ" + +#: ../src/winmenu.c:388 +msgid "Keep at bottom" +msgstr "«O«ù¦b³Ì¤U¼h" + +#: ../src/winmenu.c:393 ../src/winspector.c:1141 +msgid "Omnipresent" +msgstr "µL©Ò¤£¦b" + +#. +#. * Warning: If you make some change that affects the order of the +#. * entries, you must update the command #defines in the top of +#. * this file. +#. +#: ../src/winmenu.c:416 ../src/winmenu.c:551 +msgid "Maximize" +msgstr "³Ì¤j¤Æ" + +#: ../src/winmenu.c:424 ../src/winmenu.c:537 +msgid "Miniaturize" +msgstr "³Ì¤p¤Æ" + +#: ../src/winmenu.c:433 ../src/winmenu.c:565 +msgid "Shade" +msgstr "¾B½ª" + +#: ../src/winmenu.c:449 +msgid "Resize/Move" +msgstr "¤j¤pÅܧó/²¾°Ê" + +#: ../src/winmenu.c:457 +msgid "Select" +msgstr "¿ï¨ú" + +#: ../src/winmenu.c:465 +msgid "Move To" +msgstr "²¾¦Ü" + +#: ../src/winmenu.c:470 +msgid "Attributes..." +msgstr "ÄÝ©Ê..." + +#: ../src/winmenu.c:472 +msgid "Options" +msgstr "¿ï¶µ" + +#: ../src/winmenu.c:532 +msgid "Deminiaturize" +msgstr "¨ú®ø³Ì¤p¤Æ" + +#: ../src/winmenu.c:546 +msgid "Unmaximize" +msgstr "¨ú®ø³Ì¤j¤Æ" + +#: ../src/winmenu.c:560 +msgid "Unshade" +msgstr "¨ú®ø¾B½ª" + +#: ../src/winspector.c:279 +#, c-format +msgid "Could not find icon \"%s\" specified for this window" +msgstr "µLªk§ä¨ì«ü©wµ¹³o­Óµøµ¡ªº¹Ï¥Ü \"%s\"" + +#: ../src/winspector.c:295 +#, c-format +msgid "Could not open specified icon \"%s\":%s" +msgstr "µLªk¶}±Ò«ü©wªº¹Ï¥Ü \"%s\":%s" + +#: ../src/winspector.c:1016 +msgid "Save" +msgstr "Àx¦s" + +#: ../src/winspector.c:1024 +msgid "Apply" +msgstr "®M¥Î" + +#: ../src/winspector.c:1030 +msgid "Reload" +msgstr "ÁÙ­ì" + +#: ../src/winspector.c:1039 ../src/winspector.c:1049 +msgid "Window Specification" +msgstr "µøµ¡³W®æ" + +#: ../src/winspector.c:1040 +msgid "Window Attributes" +msgstr "µøµ¡ÄÝ©Ê" + +#: ../src/winspector.c:1041 +msgid "Advanced Options" +msgstr "¶i¶¥¿ï¶µ" + +#: ../src/winspector.c:1042 +msgid "Icon and Initial Workspace" +msgstr "¹Ï¥Ü»P±Ò©l¤u§@°Ï" + +#: ../src/winspector.c:1043 +msgid "Application Specific" +msgstr "À³¥Îµ{¥Ü¯S©w" + +#: ../src/winspector.c:1057 +msgid "Defaults for all windows" +msgstr "©Ò¦³µøµ¡¹w³]­È" + +#: ../src/winspector.c:1100 +msgid "" +"The configuration will apply to all\n" +"windows that have their WM_CLASS property set to the above selected\n" +"name, when saved." +msgstr "" +"Àx¦s®É¡A³]©w­È·|®M¥Î¦Ü©Ò¦³\n" +"WM_CLASS ¯S©Ê³]¬°¥H¤W¿ï¨ú¦WºÙªºµøµ¡¡C" + +#: ../src/winspector.c:1107 +msgid "Attributes" +msgstr "ÄÝ©Ê" + +#: ../src/winspector.c:1117 +msgid "Disable titlebar" +msgstr "¨Ï¡u¼ÐÃD¦C¡v¥¢®Ä" + +#: ../src/winspector.c:1121 +msgid "Disable resizebar" +msgstr "¨Ï¡u¤j¤pÅܧó¦C¡v¥¢®Ä" + +#: ../src/winspector.c:1125 +msgid "Disable close button" +msgstr "¨Ï¡uÃö³¬«ö¶s¡v¥¢®Ä" + +#: ../src/winspector.c:1129 +msgid "Disable miniaturize button" +msgstr "¨Ï¡u³Ì¤p¤Æ«ö¶s¡v¥¢®Ä" + +#: ../src/winspector.c:1133 +msgid "Keep on top / floating" +msgstr "«O«ù¦b³Ì¤W¼h / º}¯B" + +#: ../src/winspector.c:1137 +msgid "Keep at bottom / sunken" +msgstr "«O«ù¦b³Ì¤U¼h / ¤U¨I" + +#: ../src/winspector.c:1145 +msgid "Start Miniaturized" +msgstr "±Ò°Ê®É³Ì¤p¤Æ" + +#: ../src/winspector.c:1149 +msgid "Start Maximized" +msgstr "±Ò°Ê®É³Ì¤j¤Æ" + +#: ../src/winspector.c:1153 +msgid "Skip window list" +msgstr "²¤¹Lµøµ¡²M³æ" + +#: ../src/winspector.c:1167 +msgid "Advanced" +msgstr "¶i¶¥" + +#: ../src/winspector.c:1177 +msgid "Ignore HideOthers" +msgstr "©¿²¤¡uÁôÂèä¥L¡v" + +#: ../src/winspector.c:1181 +msgid "Don't bind keyboard shortcuts" +msgstr "¤£­nµ²¦XÁä½L±¶®|" + +#: ../src/winspector.c:1185 +msgid "Don't bind mouse clicks" +msgstr "¤£­nµ²¦X·Æ¹««öÁä" + +#: ../src/winspector.c:1189 +msgid "Keep inside screen" +msgstr "«O«ù¦b¿Ã¹õ¤º" + +#: ../src/winspector.c:1193 +msgid "Don't let it take focus" +msgstr "¤£­nÅý¥¦¨ú±oµJÂI" + +#: ../src/winspector.c:1197 +msgid "Don't Save Session" +msgstr "¤£­nÀx¦sª¬ºA" + +#: ../src/winspector.c:1201 +msgid "Emulate Application Icon" +msgstr "¼ÒÀÀÀ³¥Îµ{¦¡¹Ï¥Ü" + +#: ../src/winspector.c:1216 +msgid "" +"Enable the \"Don't bind...\" options to allow the application to receive all " +"mouse or keyboard events." +msgstr "" +"±Ò°Ê \"¤£­nµ²¦X...\" ¿ï¶µ\n" +"¤¹³\\À³¥Îµ{¦¡±µ¨ü©Ò¦³·Æ¹«©ÎÁä½L¨Æ¥ó¡C" + +#: ../src/winspector.c:1223 +msgid "Miniwindow Image" +msgstr "°g§Aµøµ¡¼v¹³" + +#: ../src/winspector.c:1242 +msgid "Update" +msgstr "§ó·s" + +#: ../src/winspector.c:1257 +msgid "Icon file name:" +msgstr "¹Ï¥ÜÀɦW:" + +#: ../src/winspector.c:1269 +msgid "Ignore client supplied icon" +msgstr "©¿²¤µ{¦¡´£¨Ñªº¹Ï¥Ü" + +#: ../src/winspector.c:1276 +msgid "Initial Workspace" +msgstr "±Ò©l¤u§@°Ï" + +#: ../src/winspector.c:1281 +msgid "Nowhere in particular" +msgstr "µL¯S§O«ü©w" + +#: ../src/winspector.c:1315 +msgid "Application Wide" +msgstr "¾ã­ÓÀ³¥Îµ{¦¡" + +#: ../src/winspector.c:1325 +msgid "Start Hidden" +msgstr "±Ò°Ê®ÉÁôÂÃ" + +#: ../src/winspector.c:1329 +msgid "No application icon" +msgstr "µLÀ³¥Îµ{¦¡¹Ï¥Ü" + +#: ../src/workspace.c:102 ../src/workspace.c:103 ../src/workspace.c:480 +#, c-format +msgid "Workspace %i" +msgstr "¤u§@°Ï %i" + +#: ../src/workspace.c:537 +msgid "Workspaces" +msgstr "¤u§@°Ï" + +#: ../src/workspace.c:539 +msgid "could not create Workspace menu" +msgstr "µLªk«Ø¥ß¤u§@°Ï¿ï³æ" + +#: ../src/workspace.c:546 +msgid "New" +msgstr "·s¼W¤u§@°Ï" + +#: ../src/workspace.c:547 +msgid "Destroy Last" +msgstr "§R°£³Ì«áªº¤u§@°Ï" + +#: ../src/xutil.c:228 +msgid "invalid data in selection" +msgstr "¿ï¨úªº¸ê®ÆµL®Ä" + +#~ msgid "Keep Clip On Top" +#~ msgstr "«O«ù°j¯¾°w¦b³Ì¤W¼h" + +# ?? +#~ msgid "Keep Dock On Top" +#~ msgstr "«O«ù°±¾a°Ï¦b³Ì¤W¼h" + +#~ msgid "(Un)Hide" +#~ msgstr "ÁôÂá]ÁÙ­ì¡^" + +#~ msgid "" +#~ "Close Window System session?\n" +#~ "(all applications will be closed)" +#~ msgstr "" +#~ "Ãö³¬µøµ¡¨t²Î¡H\n" +#~ "¡]©Ò¦³À³¥Îµ{¦¡·|³QÃö³¬¡^" + +#~ msgid "%s: Received signal SIGTERM. Exiting..." +#~ msgstr "%s: ¦¬¨ì SIGTERM «H¸¹¡CÂ÷¶}..." + +#~ msgid "(Un)Maximize" +#~ msgstr "³Ì¤j¤Æ¡]ÁÙ­ì¡^" + +#~ msgid "(Un)Shade" +#~ msgstr "¾B½ª¡]ÁÙ­ì¡^" + +# ?? +#~ msgid "Hide Others" +#~ msgstr "ÁôÂèä¥Lµøµ¡" + +#~ msgid "Revert" +#~ msgstr "ÁÙ­ì" diff --git a/src/Makefile.am b/src/Makefile.am index 19434ec0..b3cb8ed0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,6 +6,7 @@ bin_PROGRAMS = wmaker EXTRA_DIST = wmnotify.c wmnotdef.h wmnotify.h + wmaker_SOURCES = \ GNUstep.h \ WindowMaker.h \ @@ -98,23 +99,21 @@ wmaker_SOURCES = \ text.h -CPPFLAGS = @CPPFLAGS@ @DFLAGS@ - +CPPFLAGS = @CPPFLAGS@ @DFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\" + INCLUDES = \ -I$(top_srcdir)/wrlib \ - -I$(top_srcdir)/WINGs @XCFLAGS@ + -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ wmaker_LDADD = \ $(top_builddir)/WINGs/libWINGs.a\ $(top_builddir)/wrlib/libwraster.la\ + @LIBRARY_SEARCH_PATH@ \ @LIBPL@ \ - @GFXLFLAGS@ \ - @XLFLAGS@ \ @GFXLIBS@ \ @XLIBS@ \ - @X_EXTRA_LIBS@ \ @INTLIBS@ \ -lm diff --git a/src/Makefile.in b/src/Makefile.in index def25ecb..f47d4b93 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -98,12 +98,12 @@ EXTRA_DIST = wmnotify.c wmnotdef.h wmnotify.h wmaker_SOURCES = GNUstep.h WindowMaker.h actions.c actions.h appicon.c appicon.h application.c application.h appmenu.c appmenu.h balloon.c balloon.h client.c client.h colormap.c def_pixmaps.h defaults.c defaults.h dialog.c dialog.h dock.c dockedapp.c dock.h event.c framewin.c framewin.h gnome.c gnome.h funcs.h icon.c icon.h keybind.h kwm.h kwm.c list.c list.h main.c menu.c menu.h misc.c motif.c motif.h moveres.c openlook.c openlook.h pixmap.c pixmap.h placement.c properties.c properties.h proplist.c resources.c resources.h rootmenu.c screen.c screen.h session.h session.c shutdown.c stacking.c stacking.h startup.c superfluous.c superfluous.h switchmenu.c texture.c texture.h xde.h xde.c xmodifier.h xmodifier.c xutil.c xutil.h wconfig.h wcore.c wcore.h wdefaults.c wdefaults.h window.c window.h winmenu.c winspector.h winspector.c workspace.c workspace.h wmsound.c wmsound.h text.c text.h -CPPFLAGS = @CPPFLAGS@ @DFLAGS@ +CPPFLAGS = @CPPFLAGS@ @DFLAGS@ -DLOCALEDIR=\"$(NLSDIR)\" -INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @XCFLAGS@ +INCLUDES = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs @HEADER_SEARCH_PATH@ -wmaker_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBPL@ @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ @X_EXTRA_LIBS@ @INTLIBS@ -lm +wmaker_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @LIBPL@ @GFXLIBS@ @XLIBS@ @INTLIBS@ -lm mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = config.h diff --git a/src/WindowMaker.h b/src/WindowMaker.h index 75337542..15a2b9ce 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -320,7 +320,10 @@ typedef struct WPreferences { char window_balloon; char miniwin_balloon; char appicon_balloon; - +#ifdef WEENDOZE_CYCLE + char windoze_cycling; /* Windoze 95 style Alt+Tabbing */ + char popup_switchmenu; /* Popup the switchmenu when Alt+Tabbing */ +#endif /* WEENDOZE_CYCLE */ /* some constants */ int dblclick_time; /* double click delay time in ms */ @@ -332,9 +335,9 @@ typedef struct WPreferences { /* shading animation */ char shade_speed; - + int edge_resistance; - + struct { unsigned int nodock:1; /* don't display the dock */ unsigned int noclip:1; /* don't display the clip */ diff --git a/src/actions.c b/src/actions.c index e7132aff..d889e047 100644 --- a/src/actions.c +++ b/src/actions.c @@ -70,6 +70,7 @@ extern WPreferences wPreferences; extern Atom _XA_WM_TAKE_FOCUS; + /******* Local Variables *******/ static struct { int steps; @@ -133,7 +134,6 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin) { WWindow *focused=scr->focused_window; - WWindow *owner = NULL; int timestamp=LastTimestamp; WApplication *oapp=NULL, *napp=NULL; int wasfocused; @@ -149,9 +149,9 @@ wSetFocusTo(WScreen *scr, WWindow *wwin) timestamp = CurrentTime; if (focused) - oapp = wApplicationOf(focused->main_window); + oapp = wApplicationOf(focused->main_window); - if (wwin==NULL) { + if (wwin == NULL) { XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, timestamp); if (focused) { wWindowUnfocus(focused); @@ -174,11 +174,8 @@ wSetFocusTo(WScreen *scr, WWindow *wwin) /* remember last workspace where the app has been */ if (napp) napp->last_workspace = wwin->screen_ptr->current_workspace; - - if (WFLAGP(wwin, no_focusable)) - return; - if (wwin->flags.mapped) { + if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) { /* install colormap if colormap mode is lock mode */ if (wPreferences.colormap_mode==WKF_CLICK) wColormapInstallForWindow(scr, wwin); @@ -206,35 +203,17 @@ wSetFocusTo(WScreen *scr, WWindow *wwin) XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, timestamp); } + if (WFLAGP(wwin, no_focusable)) + return; + /* if this is not the focused window focus it */ if (focused!=wwin) { - int foo=0; - - if (wwin->client_win == focused->transient_for) - wwin->flags.semi_focused = 0; - else if (wwin->transient_for == focused->client_win) - focused->flags.semi_focused = 1; - - if (wwin->transient_for - && wwin->transient_for == focused->transient_for) { - owner = wWindowFor(wwin->transient_for); - if (owner && owner->flags.semi_focused) { - foo=1; - /* this is to override the unfocusing of the mainwindow - * in the next wWindowUnfocus() and avoid flickering */ - owner->flags.semi_focused = 0; - } - } - /* unfocus previous window */ - wWindowUnfocus(focused); - if (foo) { - owner->flags.semi_focused = 1; - } /* change the focus window list order */ if (wwin->prev) - wwin->prev->next=wwin->next; + wwin->prev->next = wwin->next; + if (wwin->next) - wwin->next->prev=wwin->prev; + wwin->next->prev = wwin->prev; wwin->prev = focused; focused->next = wwin; @@ -248,12 +227,9 @@ wSetFocusTo(WScreen *scr, WWindow *wwin) #endif } } - if ((owner=wWindowFor(wwin->transient_for)) - && !owner->flags.semi_focused) { - owner->flags.semi_focused = 1; - wWindowUnfocus(owner); - } - wWindowFocus(wwin); + + wWindowFocus(wwin, focused); + if (napp && !wasfocused) { wAppMenuMap(napp->menu, wwin); #ifdef NEWAPPICON @@ -271,7 +247,6 @@ wSetFocusTo(WScreen *scr, WWindow *wwin) void wShadeWindow(WWindow *wwin) { - XWindowAttributes attribs; time_t time0 = time(NULL); #ifdef ANIMATIONS int y, s, w, h; @@ -314,13 +289,12 @@ wShadeWindow(WWindow *wwin) wwin->flags.skip_next_animation = 0; wwin->flags.shaded = 1; - wwin->flags.mapped=0; - XGetWindowAttributes(dpy, wwin->client_win, &attribs); + wwin->flags.mapped = 0; /* prevent window withdrawal when getting UnmapNotify */ XSelectInput(dpy, wwin->client_win, - attribs.your_event_mask & ~StructureNotifyMask); + wwin->event_mask & ~StructureNotifyMask); XUnmapWindow(dpy, wwin->client_win); - XSelectInput(dpy, wwin->client_win, attribs.your_event_mask); + XSelectInput(dpy, wwin->client_win, wwin->event_mask); /* for the client it's just like iconification */ wFrameWindowResize(wwin->frame, wwin->frame->core->width, @@ -438,6 +412,10 @@ wMaximizeWindow(WWindow *wwin, int directions) int new_width, new_height, new_x, new_y; WArea usableArea = wwin->screen_ptr->totalUsableArea; + + if (WFLAGP(wwin, no_resizable)) + return; + if (wwin->flags.shaded) { wwin->flags.skip_next_animation = 1; wUnshadeWindow(wwin); @@ -769,7 +747,6 @@ static void unmapTransientsFor(WWindow *wwin) { WWindow *tmp; - XWindowAttributes attribs; tmp = wwin->screen_ptr->focused_window; @@ -779,8 +756,7 @@ unmapTransientsFor(WWindow *wwin) && (tmp->flags.mapped || wwin->screen_ptr->flags.startup || tmp->flags.shaded)) { unmapTransientsFor(tmp); - XGetWindowAttributes(dpy, tmp->client_win, &attribs); - tmp->flags.miniaturized=1; + tmp->flags.miniaturized = 1; if (!tmp->flags.shaded) { wWindowUnmap(tmp); } else { @@ -842,7 +818,7 @@ mapTransientsFor(WWindow *wwin) } } - +#if 0 static void setupIconGrabs(WIcon *icon) { @@ -855,7 +831,7 @@ setupIconGrabs(WIcon *icon) ButtonPressMask, GrabModeSync, GrabModeAsync, None, None); XSync(dpy, 0); } - +#endif static WWindow* recursiveTransientFor(WWindow *wwin) @@ -881,7 +857,7 @@ recursiveTransientFor(WWindow *wwin) return wwin; } - +#if 0 static void removeIconGrabs(WIcon *icon) { @@ -891,7 +867,7 @@ removeIconGrabs(WIcon *icon) XUngrabButton(dpy, Button3, AnyModifier, icon->core->window); XSync(dpy, 0); } - +#endif void wIconifyWindow(WWindow *wwin) @@ -932,8 +908,8 @@ wIconifyWindow(WWindow *wwin) } wwin->icon = wIconCreate(wwin); - wwin->flags.miniaturized=1; - wwin->flags.mapped=0; + wwin->flags.miniaturized = 1; + wwin->flags.mapped = 0; /* unmap transients */ @@ -1148,7 +1124,7 @@ hideWindow(WIcon *icon, int icon_x, int icon_y, WWindow *wwin, int animate) wwin->flags.hidden = 1; wWindowUnmap(wwin); - + wClientSetState(wwin, IconicState, icon->icon_win); flushExpose(); #ifdef WMSOUND @@ -1170,7 +1146,6 @@ hideWindow(WIcon *icon, int icon_x, int icon_y, WWindow *wwin, int animate) #endif UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); - } @@ -1656,7 +1631,7 @@ wArrangeIcons(WScreen *scr, Bool arrangeAll) wwin = wwin->prev; while (wwin) { - if (wwin->icon && wwin->flags.miniaturized && !wwin->flags.hidden && + if (wwin->icon && wwin->flags.miniaturized &&/*!wwin->flags.hidden &&*/ (wwin->frame->workspace==scr->current_workspace || IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)) { @@ -1675,10 +1650,12 @@ wArrangeIcons(WScreen *scr, Bool arrangeAll) } wwin->icon_x = X; wwin->icon_y = Y; - wwin->flags.icon_moved = 0; pi++; } } + if (arrangeAll) { + wwin->flags.icon_moved = 0; + } /* we reversed the order, so we use next */ wwin = wwin->next; if (pi >= pf) { @@ -1715,7 +1692,11 @@ wMakeWindowVisible(WWindow *wwin) wUnshadeWindow(wwin); } if (wwin->flags.hidden) { - wUnhideApplication(wApplicationOf(wwin->main_window), False, False); + WApplication *app; + + app = wApplicationOf(wwin->main_window); + if (app) + wUnhideApplication(app, False, False); } else if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else { diff --git a/src/client.c b/src/client.c index f2eda11d..f8f35ee0 100644 --- a/src/client.c +++ b/src/client.c @@ -87,12 +87,9 @@ wClientRestore(WWindow *wwin) if (gy > 0) wwin->frame_y += (wwin->frame->top_width + wwin->frame->bottom_width); #endif - XUnmapWindow(dpy, wwin->client_win); XSetWindowBorderWidth(dpy, wwin->client_win, wwin->old_border_width); XReparentWindow(dpy, wwin->client_win, wwin->screen_ptr->root_win, wwin->frame_x, wwin->frame_y); - if (wwin->flags.mapped) - XMapWindow(dpy, wwin->client_win); /* don't let the window get iconified after restart */ /* @@ -747,7 +744,7 @@ GetColormapWindows(WWindow *wwin) wwin->cmap_window_no = 0; if (XGetWMColormapWindows(dpy, wwin->client_win, &(wwin->cmap_windows), - &(wwin->cmap_window_no))!=Success + &(wwin->cmap_window_no))==0 || !wwin->cmap_windows) { wwin->cmap_window_no = 0; wwin->cmap_windows = NULL; diff --git a/src/config.h b/src/config.h index 07654b9c..36b1fa1a 100644 --- a/src/config.h +++ b/src/config.h @@ -26,18 +26,12 @@ /* Define if you have the vprintf function. */ #define HAVE_VPRINTF 1 -/* Define to `int' if <sys/types.h> doesn't define. */ -/* #undef pid_t */ - /* Define if you need to in order for stat and other things to work. */ /* #undef _POSIX_SOURCE */ /* Define as the return type of signal handlers (int or void). */ #define RETSIGTYPE void -/* Define to `unsigned' if <sys/types.h> doesn't define. */ -/* #undef size_t */ - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. @@ -47,9 +41,6 @@ */ /* #undef STACK_DIRECTION */ -/* Define if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - /* Define if `sys_siglist' is declared by <signal.h>. */ #define SYS_SIGLIST_DECLARED 1 @@ -62,10 +53,6 @@ /* define to the path to cpp */ #define CPP_PATH "/lib/cpp" -/* define to the directory containing NLS information - * set by configure */ -#define NLSDIR "/usr/local/lib/locale" - /* define if you want GNOME stuff support */ /* #undef GNOME_STUFF */ @@ -130,10 +117,14 @@ * set by configure */ #define X_LOCALE 1 -/* the place where the configuration is stored +/* the place where shared data is stored * defined by configure */ #define PKGDATADIR "/usr/local/share/WindowMaker" +/* the place where the configuration is stored + * defined by configure */ +#define SYSCONFDIR "/usr/local/etc/WindowMaker" + /* Define if you have the atexit function. */ #define HAVE_ATEXIT 1 @@ -153,7 +144,7 @@ #define HAVE_STRERROR 1 /* Define if you have the strncasecmp function. */ -/* #undef HAVE_STRNCASECMP */ +#define HAVE_STRNCASECMP 1 /* Define if you have the <fcntl.h> header file. */ #define HAVE_FCNTL_H 1 @@ -183,5 +174,5 @@ #define PACKAGE "WindowMaker" /* Version number of package */ -#define VERSION "0.51.0" +#define VERSION "0.51.1" diff --git a/src/config.h.in b/src/config.h.in index 32bf7d7a..0aea7318 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -25,18 +25,12 @@ /* Define if you have the vprintf function. */ #undef HAVE_VPRINTF -/* Define to `int' if <sys/types.h> doesn't define. */ -#undef pid_t - /* Define if you need to in order for stat and other things to work. */ #undef _POSIX_SOURCE /* Define as the return type of signal handlers (int or void). */ #undef RETSIGTYPE -/* Define to `unsigned' if <sys/types.h> doesn't define. */ -#undef size_t - /* If using the C implementation of alloca, define if you know the direction of stack growth for your system; otherwise it will be automatically deduced at run-time. @@ -46,9 +40,6 @@ */ #undef STACK_DIRECTION -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - /* Define if `sys_siglist' is declared by <signal.h>. */ #undef SYS_SIGLIST_DECLARED @@ -61,10 +52,6 @@ /* define to the path to cpp */ #undef CPP_PATH -/* define to the directory containing NLS information - * set by configure */ -#undef NLSDIR - /* define if you want GNOME stuff support */ #undef GNOME_STUFF @@ -129,10 +116,14 @@ * set by configure */ #undef X_LOCALE -/* the place where the configuration is stored +/* the place where shared data is stored * defined by configure */ #undef PKGDATADIR +/* the place where the configuration is stored + * defined by configure */ +#undef SYSCONFDIR + /* Define if you have the atexit function. */ #undef HAVE_ATEXIT diff --git a/src/defaults.c b/src/defaults.c index d535d4c5..e978b035 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -94,7 +94,7 @@ typedef struct { int (*convert)(); int (*update)(); proplist_t plkey; - proplist_t plvalue; + proplist_t plvalue; /* default value */ } WDefaultEntry; @@ -394,9 +394,6 @@ WDefaultEntry optionList[] = { {"DontLinkWorkspaces","NO", NULL, &wPreferences.no_autowrap, getBool, NULL }, - {"EdgeResistance", "0", NULL, - &wPreferences.edge_resistance,getInt, NULL - }, {"AutoArrangeIcons", "NO", NULL, &wPreferences.auto_arrange_icons, getBool, NULL }, @@ -427,9 +424,20 @@ WDefaultEntry optionList[] = { {"AppIconBalloons", "NO", NULL, &wPreferences.appicon_balloon,getBool, NULL }, + {"EdgeResistance", "30", NULL, + &wPreferences.edge_resistance,getInt, NULL + }, {"DisableBlinking", "NO", NULL, &wPreferences.dont_blink, getBool, NULL }, +#ifdef WEENDOZE_CYCLE + {"WindozeCycling","NO", NULL, + &wPreferences.windoze_cycling, getBool, NULL + }, + {"PopupSwitchMenu","YES",NULL, + &wPreferences.popup_switchmenu, getBool, NULL + }, +#endif /* WEENDOZE_CYCLE */ /* style options */ {"WidgetColor", "(solid, gray)", NULL, NULL, getTexture, setWidgetColor, @@ -806,7 +814,7 @@ wDefaultsInitDomain(char *domain, Bool requireDictionary) } /* global system dictionary */ - sprintf(path, "%s/%s/%s", PKGDATADIR, DEFAULTS_DIR, domain); + sprintf(path, "%s/%s", SYSCONFDIR, domain); if (stat(path, &stbuf)>=0) { shared_dict = ReadProplistFromFile(path); if (shared_dict) { @@ -900,7 +908,7 @@ wDefaultsCheckDomains(void *foo) WDWindowMaker->timestamp = stbuf.st_mtime; /* global dictionary */ - sprintf(path, "%s/%s/WindowMaker", PKGDATADIR, DEFAULTS_DIR); + sprintf(path, "%s/WindowMaker", SYSCONFDIR); if (stat(path, &stbuf)>=0) { shared_dict = ReadProplistFromFile(path); if (shared_dict && !PLIsDictionary(shared_dict)) { @@ -1107,13 +1115,12 @@ wReadDefaults(WScreen *scr, proplist_t new_dict) { proplist_t plvalue, old_value; WDefaultEntry *entry; - int i, changed, must_update; + int i, must_update; int needs_refresh; void *tdata; proplist_t old_dict = (WDWindowMaker->dictionary!=new_dict ? WDWindowMaker->dictionary : NULL); - changed = 0; must_update = 0; needs_refresh = 0; @@ -1137,7 +1144,6 @@ wReadDefaults(WScreen *scr, proplist_t new_dict) plvalue = entry->plvalue; if (plvalue && new_dict) { PLInsertDictionaryEntry(new_dict, entry->plkey, plvalue); - changed = 1; must_update = 1; } } else if (!plvalue) { @@ -1145,10 +1151,8 @@ wReadDefaults(WScreen *scr, proplist_t new_dict) continue; } else if (!old_value) { /* set value for the 1st time */ - changed = 1; } else if (!PLIsEqual(plvalue, old_value)) { /* value has changed */ - changed = 1; } else { /* value was not changed since last time */ continue; @@ -2003,6 +2007,22 @@ again: *ret = PLRetain(value); +#ifdef notworking + /* + * Kluge to force wmsetbg helper to set the default background. + * If the WorkspaceSpecificBack is changed once wmaker has started, + * the WorkspaceBack won't be sent to the helper, unless the user + * changes it's value too. So, we must force this by removing the + * value from the defaults DB. + */ + if (!scr->flags.backimage_helper_launched && !scr->flags.startup) { + proplist_t key = PLMakeString("WorkspaceBack"); + + PLRemoveDictionaryEntry(WDWindowMaker->dictionary, key); + + PLRelease(key); + } +#endif return True; } @@ -2689,6 +2709,7 @@ setWorkspaceBack(WScreen *scr, WDefaultEntry *entry, proplist_t value, char *command; char *text; + SetupEnvironment(scr); text = PLGetDescription(value); command = wmalloc(strlen(text)+40); sprintf(command, "wmsetbg -d -p '%s' &", text); diff --git a/src/dialog.c b/src/dialog.c index 51cf5cb1..a5516af3 100644 --- a/src/dialog.c +++ b/src/dialog.c @@ -366,7 +366,7 @@ buttonCallback(void *self, void *clientData) op = WMCreateOpenPanel(WMWidgetScreen(bPtr)); - if (WMRunModalOpenPanelForDirectory(op, NULL, "/usr/local", NULL, NULL)) { + if (WMRunModalFilePanelForDirectory(op, NULL, "/usr/local", NULL, NULL)) { char *path; path = WMGetFilePanelFile(op); WMSetTextFieldText(panel->fileField, path); @@ -581,7 +581,7 @@ typedef struct { RImage *pic; WMPixmap *oldPix; char *str; - char x; + int x; #endif } InfoPanel; @@ -683,8 +683,23 @@ logoPushCallback(void *data) char buffer[512]; int i; int len; + static int jingobeu[] = { + 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, + 329, 150, -1, 100, 329, 150, -1, 100, 329, 300, -1, 250, + 329, 150, 392, 150, 261, 150, 293, 150, 329, 400, -1, 400, 0 + }; + static int c = 0; if (panel->x) { + XKeyboardControl kc; + + if (panel->x > 0) { + if(jingobeu[panel->x-1]==0){panel->x=-1;}else if(jingobeu[panel->x +-1]<0){panel->x++;c=jingobeu[panel->x-1]/50;panel->x++;}else if(c==0){ + kc.bell_pitch=jingobeu[panel->x-1];panel->x++;kc.bell_percent=50;c= + jingobeu[panel->x-1]/50;kc.bell_duration=jingobeu[panel->x-1];panel->x++; +XChangeKeyboardControl(dpy,KBBellPitch|KBBellDuration|KBBellPercent,&kc); + XBell(dpy,50);XFlush(dpy);}else{c--;}} if (!(panel->cycle % 4)) { WMPixmap *p; @@ -838,6 +853,7 @@ handleLogoPush(XEvent *event, void *data) "Have a nice day!" }; + clicks++; if (!panel->timer && !broken && clicks > 2) { char *file; @@ -973,39 +989,41 @@ wShowInfoPanel(WScreen *scr) } panel->name1L = WMCreateLabel(panel->win); - WMResizeWidget(panel->name1L, 200, 30); - WMMoveWidget(panel->name1L, 120, 30); + WMResizeWidget(panel->name1L, 240, 30); + WMMoveWidget(panel->name1L, 100, 30); color1.red = 0; color1.green = 0; color1.blue = 0; color2.red = 0x50; color2.green = 0x50; color2.blue = 0x70; - logo = renderText(scr->wmscreen, " Window Maker ", - "-*-times-bold-r-*-*-24-*", &color1, &color2); + logo = renderText(scr->wmscreen, "GNU Window Maker", + "-*-utopia-*-r-*-*-25-*", &color1, &color2); if (logo) { WMSetLabelImagePosition(panel->name1L, WIPImageOnly); WMSetLabelImage(panel->name1L, logo); WMReleasePixmap(logo); } else { - font = WMBoldSystemFontOfSize(scr->wmscreen, 24); + font = WMBoldSystemFontOfSize(scr->wmscreen, 20); if (font) { WMSetLabelFont(panel->name1L, font); WMReleaseFont(font); } - WMSetLabelText(panel->name1L, "Window Maker"); + WMSetLabelTextAlignment(panel->name1L, WACenter); + WMSetLabelText(panel->name1L, "GNU Window Maker"); } panel->name2L = WMCreateLabel(panel->win); - WMResizeWidget(panel->name2L, 200, 24); - WMMoveWidget(panel->name2L, 120, 60); + WMResizeWidget(panel->name2L, 240, 24); + WMMoveWidget(panel->name2L, 100, 60); font = WMBoldSystemFontOfSize(scr->wmscreen, 18); if (font) { WMSetLabelFont(panel->name2L, font); WMReleaseFont(font); font = NULL; } - WMSetLabelText(panel->name2L, "X11 Window Manager"); + WMSetLabelTextAlignment(panel->name2L, WACenter); + WMSetLabelText(panel->name2L, "Window Manager for X"); sprintf(version, "Version %s", VERSION); @@ -1124,14 +1142,15 @@ wShowInfoPanel(WScreen *scr) panel->wwin = wwin; thePanel = panel; - - if (InitXThing(panel->scr)) { +#ifndef SILLYNESS + if (InitXThing(panel->scr)) { panel->timer = WMAddTimerHandler(100, logoPushCallback, panel); panel->cycle = 0; panel->x = 1; - panel->str = "Merry X'mas!"; + panel->str = "Merry Christmas!"; panel->oldPix = WMRetainPixmap(WMGetLabelImage(panel->logoL)); } +#endif } diff --git a/src/dock.c b/src/dock.c index a74e05f7..25b6d80c 100644 --- a/src/dock.c +++ b/src/dock.c @@ -762,7 +762,7 @@ mainIconCreate(WScreen *scr, int type) x_pos = 0; } else { btn = wAppIconCreateForDock(scr, NULL, "Logo", "WMDock", TILE_NORMAL); - x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE - 1; + x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE; } btn->xindex = 0; @@ -1602,21 +1602,20 @@ wDockRestoreState(WScreen *scr, proplist_t dock_state, int type) if (dock->y_pos < 0) dock->y_pos = 0; else if (dock->y_pos > scr->scr_height-ICON_SIZE) - dock->y_pos = scr->scr_height-ICON_SIZE; - + dock->y_pos = scr->scr_height - ICON_SIZE; + /* This is no more needed. ??? */ if (type == WM_CLIP) { if (dock->x_pos < 0) dock->x_pos = 0; else if (dock->x_pos > scr->scr_width-ICON_SIZE) dock->x_pos = scr->scr_width-ICON_SIZE; - } - else { + } else { if (dock->x_pos >= 0) { dock->x_pos = DOCK_EXTRA_SPACE; dock->on_right_side = 0; } else { - dock->x_pos = scr->scr_width - DOCK_EXTRA_SPACE - ICON_SIZE - 1; + dock->x_pos = scr->scr_width - DOCK_EXTRA_SPACE - ICON_SIZE; dock->on_right_side = 1; } } @@ -2691,7 +2690,7 @@ swapDock(WDock *dock) if (dock->on_right_side) { - x = dock->x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE - 1; + x = dock->x_pos = scr->scr_width - ICON_SIZE - DOCK_EXTRA_SPACE; } else { x = dock->x_pos = DOCK_EXTRA_SPACE; } @@ -3355,8 +3354,7 @@ handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event) y = ev.xmotion.y_root - ofs_y; } moveDock(dock, x, y); - } - else { + } else { /* move vertically if pointer is inside the dock*/ if ((dock->on_right_side && ev.xmotion.x_root >= dock->x_pos - ICON_SIZE) diff --git a/src/event.c b/src/event.c index 92b06372..f8e8fbff 100644 --- a/src/event.c +++ b/src/event.c @@ -117,6 +117,7 @@ static void handleClientMessage(); static void handleKeyPress(); static void handleFocusIn(); static void handleMotionNotify(); +static void handleVisibilityNotify(); #ifdef SHAPE @@ -250,7 +251,7 @@ DispatchEvent(XEvent *event) break; case MapNotify: - handleMapNotify(event->xmap.window); + handleMapNotify(event); break; case UnmapNotify: @@ -295,6 +296,10 @@ DispatchEvent(XEvent *event) handleFocusIn(event); break; + case VisibilityNotify: + handleVisibilityNotify(event); + break; + default: handleExtensions(event); break; @@ -333,11 +338,11 @@ IsDoubleClick(WScreen *scr, XEvent *event) if ((scr->last_click_time>0) && (event->xbutton.time-scr->last_click_time<=wPreferences.dblclick_time) && (event->xbutton.button == scr->last_click_button) - && (event->xbutton.subwindow == scr->last_click_window)) { + && (event->xbutton.window == scr->last_click_window)) { scr->flags.next_click_is_not_double = 1; scr->last_click_time = 0; - scr->last_click_window = None; + scr->last_click_window = event->xbutton.window; return True; } @@ -456,7 +461,7 @@ handleMapRequest(XEvent *ev) printf("got map request for %x\n", (unsigned)window); #endif - if ((wwin=wWindowFor(window))) { + if ((wwin = wWindowFor(window))) { if (wwin->flags.shaded) { wUnshadeWindow(wwin); } @@ -496,16 +501,15 @@ handleMapRequest(XEvent *ev) wDockTrackWindowLaunch(scr->last_dock, window); } - if (wwin) { int state; - + if (wwin->wm_hints && (wwin->wm_hints->flags & StateHint)) state = wwin->wm_hints->initial_state; else state = NormalState; - if (state==IconicState) + if (state == IconicState) wwin->flags.miniaturized = 1; if (state == WithdrawnState) { @@ -520,23 +524,21 @@ handleMapRequest(XEvent *ev) if (wwin->flags.shaded) { wwin->flags.shaded = 0; wwin->flags.skip_next_animation = 1; - wwin->flags.ignore_next_unmap = 1; /* ??? */ wShadeWindow(wwin); } if (wwin->flags.miniaturized) { wwin->flags.miniaturized = 0; - wwin->flags.hidden = 0; wwin->flags.skip_next_animation = 1; - wwin->flags.ignore_next_unmap = 1; wIconifyWindow(wwin); - } else if (wwin->flags.hidden) { + } + if (wwin->flags.hidden) { WApplication *wapp = wApplicationOf(wwin->main_window); + wwin->flags.hidden = 0; wwin->flags.skip_next_animation = 1; if (wapp) { wHideApplication(wapp); } - wwin->flags.ignore_next_unmap = 1; } } } @@ -585,14 +587,14 @@ static void handleExpose(XEvent *event) { WObjDescriptor *desc; + XEvent ev; #ifdef DEBUG puts("got expose"); #endif - if (event->xexpose.count!=0) { - return; - } - + + while (XCheckTypedWindowEvent(dpy, event->xexpose.window, Expose, &ev)); + if (XFindContext(dpy, event->xexpose.window, wWinContext, (XPointer *)&desc)==XCNOENT) { return; @@ -675,6 +677,10 @@ handleButtonPress(XEvent *event) } } + if (desc->handle_mousedown!=NULL) { + (*desc->handle_mousedown)(desc, event); + } + if (desc->parent_type == WCLASS_WINDOW) { XSync(dpy, 0); @@ -699,43 +705,33 @@ handleButtonPress(XEvent *event) } } - if (desc->handle_mousedown!=NULL) { - (*desc->handle_mousedown)(desc, event); - } - /* save double-click information */ if (scr->flags.next_click_is_not_double) { scr->flags.next_click_is_not_double = 0; } else { scr->last_click_time = event->xbutton.time; scr->last_click_button = event->xbutton.button; - scr->last_click_window = event->xbutton.subwindow; + scr->last_click_window = event->xbutton.window; } } static void -handleMapNotify(Window window) +handleMapNotify(XEvent *event) { WWindow *wwin; - + #ifdef DEBUG puts("got map"); #endif - wwin= wWindowFor(window); - if (wwin && wwin->client_win==window) { - if (wwin->flags.ignore_next_unmap) { - wwin->flags.ignore_next_unmap=0; - return; - } + + wwin = wWindowFor(event->xmap.event); + if (wwin && wwin->client_win == event->xmap.event) { if (wwin->flags.miniaturized) { wDeiconifyWindow(wwin); } else { XGrabServer(dpy); - XSync(dpy,0); - XMapWindow(dpy, wwin->client_win); - XMapWindow(dpy, wwin->frame->core->window); - wwin->flags.mapped=1; + wWindowMap(wwin); wClientSetState(wwin, NormalState, None); XUngrabServer(dpy); } @@ -748,22 +744,31 @@ handleUnmapNotify(XEvent *event) { WWindow *wwin; XEvent ev; - + Bool withdraw = False; + #ifdef DEBUG puts("got unmap"); #endif + + /* only process windows with StructureNotify selected + * (ignore SubstructureNotify) */ wwin = wWindowFor(event->xunmap.window); - if (!wwin || wwin->client_win!=event->xunmap.window) + if (!wwin) return; - - if (!wwin->flags.mapped - && wwin->frame->workspace==wwin->screen_ptr->current_workspace + + /* whether the event is a Withdrawal request */ + if (event->xunmap.event == wwin->screen_ptr->root_win + && event->xunmap.send_event) + withdraw = True; + + if (wwin->client_win != event->xunmap.event && !withdraw) + return; + + if (!wwin->flags.mapped && !withdraw + && wwin->frame->workspace == wwin->screen_ptr->current_workspace && !wwin->flags.miniaturized && !wwin->flags.hidden) return; - if (wwin->flags.ignore_next_unmap) { - return; - } XGrabServer(dpy); XUnmapWindow(dpy, wwin->frame->core->window); wwin->flags.mapped = 0; @@ -863,7 +868,7 @@ handleClientMessage(XEvent *event) wIconifyWindow(wwin); } else if (event->xclient.message_type == _XA_WM_COLORMAP_NOTIFY && event->xclient.format == 32) { - WScreen *scr = wScreenForRootWindow(event->xclient.window); + WScreen *scr = wScreenSearchForRootWindow(event->xclient.window); if (!scr) return; @@ -1026,7 +1031,8 @@ handleEnterNotify(XEvent *event) * is for the frame window and window doesn't have focus yet */ if ((wPreferences.focus_mode==WKF_POINTER || wPreferences.focus_mode==WKF_SLOPPY) - && wwin->frame->core->window==event->xcrossing.window) { + && wwin->frame->core->window==event->xcrossing.window + && !scr->flags.doing_alt_tab) { if (!wwin->flags.focused) wSetFocusTo(scr, wwin); @@ -1238,6 +1244,161 @@ windowUnderPointer(WScreen *scr) return NULL; } +#ifdef WEENDOZE_CYCLE + +static WWindow* +nextToFocusAfter(WWindow *wwin) +{ + WWindow *tmp = wwin->next; + + while (tmp) { + if (wWindowCanReceiveFocus(tmp) && !WFLAGP(tmp, skip_window_list)) { + + return tmp; + } + tmp = tmp->next; + } + + tmp = wwin; + /* start over from the beginning of the list */ + while (tmp->prev) + tmp = tmp->prev; + + while (tmp && tmp != wwin) { + if (wWindowCanReceiveFocus(tmp) && !WFLAGP(tmp, skip_window_list)) { + + return tmp; + } + tmp = tmp->next; + } + + return wwin; +} + + +static WWindow* +nextToFocusBefore(WWindow *wwin) +{ + WWindow *tmp = wwin->prev; + + while (tmp) { + if (wWindowCanReceiveFocus(tmp) && !WFLAGP(tmp, skip_window_list)) { + + return tmp; + } + tmp = tmp->prev; + } + + /* start over from the beginning of the list */ + tmp = wwin; + while (tmp->next) + tmp = tmp->next; + + while (tmp && tmp != wwin) { + if (wWindowCanReceiveFocus(tmp) && !WFLAGP(tmp, skip_window_list)) { + + return tmp; + } + tmp = tmp->prev; + } + + return wwin; +} + +static void +doWindozeCycle(WWindow *wwin, XEvent *event, Bool next) +{ + WScreen *scr = wScreenForRootWindow(event->xkey.root); + Bool done = False; + WWindow *newFocused; + WWindow *oldFocused; + int modifiers; + XModifierKeymap *keymap; + + if (!wwin) + return; + + puts("IN"); + keymap = XGetModifierMapping(dpy); + + + XGrabKeyboard(dpy, scr->root_win, False, GrabModeAsync, GrabModeAsync, + CurrentTime); + + if (next) { + newFocused = nextToFocusAfter(wwin); + } else { + newFocused = nextToFocusBefore(wwin); + } + + scr->flags.doing_alt_tab = 1; + + wWindowFocus(newFocused, scr->focused_window); + oldFocused = newFocused; + + OpenSwitchMenu(scr, scr->scr_width/2, scr->scr_height/2, False); + + while (!done) { + XEvent ev; + + WMMaskEvent(dpy,KeyPressMask|KeyReleaseMask|ExposureMask, &ev); +/* WMNextEvent(dpy, &ev);*/ + if (ev.type != KeyRelease && ev.type != KeyPress) { + WMHandleEvent(&ev); + continue; + } +puts("EV"); + /* ignore CapsLock */ + modifiers = ev.xkey.state & ValidModMask; + + if (ev.type == KeyPress + && wKeyBindings[WKBD_FOCUSNEXT].keycode == ev.xkey.keycode + && wKeyBindings[WKBD_FOCUSNEXT].modifier == modifiers) { + + UpdateSwitchMenu(scr, newFocused, ACTION_CHANGE_STATE); + newFocused = nextToFocusAfter(newFocused); + wWindowFocus(newFocused, oldFocused); + oldFocused = newFocused; + UpdateSwitchMenu(scr, newFocused, ACTION_CHANGE_STATE); + + } else if (ev.type == KeyPress + && wKeyBindings[WKBD_FOCUSPREV].keycode == ev.xkey.keycode + && wKeyBindings[WKBD_FOCUSPREV].modifier == modifiers) { + + UpdateSwitchMenu(scr, newFocused, ACTION_CHANGE_STATE); + newFocused = nextToFocusBefore(newFocused); + wWindowFocus(newFocused, oldFocused); + oldFocused = newFocused; + UpdateSwitchMenu(scr, newFocused, ACTION_CHANGE_STATE); + } + if (ev.type == KeyRelease) { + int i; + + for (i = 0; i <= 8 * keymap->max_keypermod; i++) { + if (keymap->modifiermap[i] == ev.xkey.keycode && + wKeyBindings[WKBD_FOCUSNEXT].modifier + & 1<<(i/keymap->max_keypermod)) { + done = True; + break; + } + } + } + } +puts("OUT"); + XFree(keymap); + + XUngrabKeyboard(dpy, CurrentTime); + wSetFocusTo(scr, newFocused); + scr->flags.doing_alt_tab = 0; + OpenSwitchMenu(scr, scr->scr_width/2, scr->scr_height/2, False); +} + + +#endif /* WEENDOZE_CYCLE */ + + + + static void handleKeyPress(XEvent *event) { @@ -1407,21 +1568,37 @@ handleKeyPress(XEvent *event) } break; case WKBD_FOCUSNEXT: - wwin = NextFocusWindow(scr); - if (wwin != NULL) { - wSetFocusTo(scr, wwin); - if (wPreferences.circ_raise) - wRaiseFrame(wwin->frame->core); - } +#ifdef WEENDOZE_CYCLE + if (wPreferences.windoze_cycling) { + doWindozeCycle(wwin, event, True); + } else +#endif /* WEENDOZE_CYCLE */ + { + wwin = NextFocusWindow(scr); + if (wwin != NULL) { + wSetFocusTo(scr, wwin); + if (wPreferences.circ_raise) + wRaiseFrame(wwin->frame->core); + } + } break; + case WKBD_FOCUSPREV: - wwin = PrevFocusWindow(scr); - if (wwin != NULL) { - wSetFocusTo(scr, wwin); - if (wPreferences.circ_raise) - wRaiseFrame(wwin->frame->core); - } +#ifdef WEENDOZE_CYCLE + if (wPreferences.windoze_cycling) { + doWindozeCycle(wwin, event, False); + } else +#endif /* WEENDOZE_CYCLE */ + { + wwin = PrevFocusWindow(scr); + if (wwin != NULL) { + wSetFocusTo(scr, wwin); + if (wPreferences.circ_raise) + wRaiseFrame(wwin->frame->core); + } + } break; + #if (defined(__STDC__) && !defined(UNIXCPP)) || defined(ANSICPP) #define GOTOWORKS(wk) case WKBD_WORKSPACE##wk:\ i = (scr->current_workspace/10)*10 + wk - 1;\ @@ -1543,3 +1720,14 @@ handleMotionNotify(XEvent *event) } +static void +handleVisibilityNotify(XEvent *event) +{ + WWindow *wwin; + + wwin = wWindowFor(event->xvisibility.window); + if (!wwin) + return; + wwin->flags.obscured = + (event->xvisibility.state == VisibilityFullyObscured); +} diff --git a/src/framewin.c b/src/framewin.c index d3eee0ed..2c4e76ff 100644 --- a/src/framewin.c +++ b/src/framewin.c @@ -114,10 +114,13 @@ wFrameWindowUpdateBorders(WFrameWindow *fwin, int flags) int width, height; int i; WScreen *scr = fwin->screen_ptr; - + width = fwin->core->width; - height = fwin->core->height - fwin->top_width - fwin->bottom_width; - + if (flags & WFF_IS_SHADED) + height = -1; + else + height = fwin->core->height - fwin->top_width - fwin->bottom_width; + if (flags & WFF_TITLEBAR) theight = (*fwin->font)->height + TITLEBAR_EXTRA_HEIGHT; else @@ -283,10 +286,11 @@ wFrameWindowUpdateBorders(WFrameWindow *fwin, int flags) fwin->resizebar = NULL; } } - - if (height + fwin->top_width + fwin->bottom_width != fwin->core->height) { + + if (height + fwin->top_width + fwin->bottom_width != fwin->core->height + && !(flags & WFF_IS_SHADED)) { wFrameWindowResize(fwin, width, - height + fwin->top_width + fwin->bottom_width); + height + fwin->top_width + fwin->bottom_width); } /* setup object descriptors */ @@ -757,14 +761,6 @@ wFrameWindowPaint(WFrameWindow *fwin) break; } - XSetForeground(dpy, *fwin->title_gc, - fwin->title_pixel[fwin->flags.state]); - - wDrawString(fwin->titlebar->window, *fwin->font, - *fwin->title_gc, x, - (*fwin->font)->y + TITLEBAR_EXTRA_HEIGHT/2, title, - titlelen); - #ifdef TITLE_TEXT_SHADOW if(wPreferences.title_shadow){ int shadowx,shadowy; @@ -781,6 +777,14 @@ wFrameWindowPaint(WFrameWindow *fwin) } #endif /* TITLE_TEXT_SHADOW */ + XSetForeground(dpy, *fwin->title_gc, + fwin->title_pixel[fwin->flags.state]); + + wDrawString(fwin->titlebar->window, *fwin->font, + *fwin->title_gc, x, + (*fwin->font)->y + TITLEBAR_EXTRA_HEIGHT/2, title, + titlelen); + free(title); } } diff --git a/src/framewin.h b/src/framewin.h index 7c3dcee4..48c718ef 100644 --- a/src/framewin.h +++ b/src/framewin.h @@ -37,6 +37,8 @@ #define WFF_BORDER (1<<4) #define WFF_SINGLE_STATE (1<<5) +#define WFF_IS_SHADED (1<<16) + typedef struct WFrameWindow { WScreen *screen_ptr; /* pointer to the screen structure */ diff --git a/src/icon.c b/src/icon.c index 567109a1..14c6a764 100644 --- a/src/icon.c +++ b/src/icon.c @@ -412,19 +412,13 @@ getnameforicon(WWindow *wwin) } else { return NULL; } - - prefix = getenv("GNUSTEP_USER_PATH"); - if (!prefix) { - len = strlen(wgethomedir())+64+strlen(suffix); - path = wmalloc(len+1); - sprintf(path, "%s/GNUstep/.AppInfo", wgethomedir()); - } else { - prefix = wexpandpath(prefix); - len = strlen(prefix)+64+strlen(suffix); - path = wmalloc(len+1); - sprintf(path, "%s/.AppInfo", prefix); - free(prefix); - } + + prefix = wusergnusteppath(); + len = strlen(prefix)+64+strlen(suffix); + path = wmalloc(len+1); + sprintf(path, "%s/.AppInfo", prefix); + free(prefix); + if (access(path, F_OK)!=0) { if (mkdir(path, S_IRUSR|S_IWUSR|S_IXUSR)) { wsyserror(_("could not create directory %s"), path); @@ -826,7 +820,7 @@ miniwindowMouseDown(WObjDescriptor *desc, XEvent *event) #ifdef DEBUG puts("Moving miniwindow"); #endif - if (event->xbutton.button==Button1) { + if (event->xbutton.button == Button1) { if (event->xbutton.state & MOD_MASK) wLowerFrame(icon->core); else @@ -835,9 +829,7 @@ miniwindowMouseDown(WObjDescriptor *desc, XEvent *event) wIconSelect(icon); wSelectWindow(icon->owner, !wwin->flags.selected); } - } -#if 0 - else if (event->xbutton.button==Button3) { + } else if (event->xbutton.button == Button3) { WObjDescriptor *desc; OpenMiniwindowMenu(wwin, event->xbutton.x_root, @@ -850,7 +842,7 @@ miniwindowMouseDown(WObjDescriptor *desc, XEvent *event) return; } -#endif + if (XGrabPointer(dpy, icon->core->window, False, ButtonMotionMask |ButtonReleaseMask|ButtonPressMask, GrabModeAsync, GrabModeAsync, None, None, CurrentTime) !=GrabSuccess) { @@ -901,6 +893,9 @@ miniwindowMouseDown(WObjDescriptor *desc, XEvent *event) puts("End miniwindow move"); #endif XUngrabPointer(dpy, CurrentTime); + + if (wPreferences.auto_arrange_icons) + wArrangeIcons(wwin->screen_ptr, True); return; } diff --git a/src/kwm.c b/src/kwm.c index 08af53bf..7fa085a8 100644 --- a/src/kwm.c +++ b/src/kwm.c @@ -1424,7 +1424,7 @@ wKWMCheckDestroy(XDestroyWindowEvent *event) return; } - scr = wScreenForRootWindow(event->event); + scr = wScreenSearchForRootWindow(event->event); if (!scr) { return; } diff --git a/src/main.c b/src/main.c index 8bb7e249..b51095bc 100644 --- a/src/main.c +++ b/src/main.c @@ -64,7 +64,6 @@ unsigned int ValidModMask = 0xff; /* locale to use. NULL==POSIX or C */ char *Locale=NULL; - int wScreenCount=0; WPreferences wPreferences; @@ -160,7 +159,8 @@ Exit(int status) #ifdef XSMP_ENABLED wSessionDisconnectManager(); #endif - XCloseDisplay(dpy); + if (dpy) + XCloseDisplay(dpy); exit(status); } @@ -369,7 +369,7 @@ main(int argc, char **argv) printf("Window Maker %s\n", VERSION); exit(0); } else if (strcmp(argv[i], "--global_defaults_path")==0) { - printf("%s/Defaults/WindowMaker", PKGDATADIR); + puts(SYSCONFDIR); exit(0); } else if (strcmp(argv[i], "-locale")==0 || strcmp(argv[i], "--locale")==0) { @@ -410,9 +410,12 @@ main(int argc, char **argv) exit(0); } #endif + } else if (strcmp(argv[i], "--help")==0) { + print_help(); + exit(0); } else { - printf(_("%s: invalid argument '%s'"), argv[0]); - printf(_("Try '%s --help' for more information"), argv[0]); + printf(_("%s: invalid argument '%s'\n"), argv[0], argv[i]); + printf(_("Try '%s --help' for more information\n"), argv[0]); exit(1); } } @@ -451,7 +454,7 @@ main(int argc, char **argv) if (getenv("NLSPATH")) bindtextdomain("WindowMaker", getenv("NLSPATH")); else - bindtextdomain("WindowMaker", NLSDIR); + bindtextdomain("WindowMaker", LOCALEDIR); textdomain("WindowMaker"); if (!XSupportsLocale()) { @@ -490,9 +493,8 @@ main(int argc, char **argv) str = strchr(DisplayName, ':'); else str = NULL; - if (!str) - str = ""; - if (sscanf(str, "%i.%i", &d, &s)==2) + + if (str && sscanf(str, "%i.%i", &d, &s)==2) multiHead = False; DisplayName = XDisplayName(DisplayName); diff --git a/src/menu.c b/src/menu.c index 0646fa5a..0733acee 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2164,15 +2164,6 @@ menuTitleMouseDown(WCoreWindow *sender, void *data, XEvent *event) if (event->xbutton.button != Button1 && event->xbutton.button != Button2) return; - if (XGrabPointer(dpy, menu->frame->titlebar->window, False, - ButtonMotionMask|ButtonReleaseMask|ButtonPressMask, - GrabModeAsync, GrabModeAsync, None, - wCursor[WCUR_MOVE], CurrentTime)!=GrabSuccess) { -#ifdef DEBUG0 - wwarning("pointer grab failed for menu move\n"); -#endif - return; - } if (event->xbutton.state & MOD_MASK) { wLowerFrame(menu->frame->core); @@ -2233,8 +2224,14 @@ menuTitleMouseDown(WCoreWindow *sender, void *data, XEvent *event) wMenuMove(menu, x, y, True); } else { if (abs(ev.xmotion.x_root - dx) > MOVE_THRESHOLD - || abs(ev.xmotion.y_root - dy) > MOVE_THRESHOLD) + || abs(ev.xmotion.y_root - dy) > MOVE_THRESHOLD) { started = True; + XGrabPointer(dpy, menu->frame->titlebar->window, False, + ButtonMotionMask|ButtonReleaseMask + |ButtonPressMask, + GrabModeAsync, GrabModeAsync, None, + wCursor[WCUR_MOVE], CurrentTime); + } } break; diff --git a/src/misc.c b/src/misc.c index 1751891f..03aef1f2 100644 --- a/src/misc.c +++ b/src/misc.c @@ -56,8 +56,6 @@ extern WPreferences wPreferences; extern Time LastTimestamp; - - #ifdef OFFIX_DND extern Atom _XA_DND_SELECTION; #endif @@ -191,13 +189,12 @@ MakeCPPArgs(char *path) #endif /* USECPP */ - WWindow* NextFocusWindow(WScreen *scr) { WWindow *tmp, *wwin, *closest, *min; Window d; - + if (!(wwin = scr->focused_window)) return NULL; tmp = wwin->prev; @@ -853,6 +850,7 @@ getuserinput(WScreen *scr, char *line, int *ptr) break; } } + (*ptr)--; #undef _STARTING #undef _TITLE #undef _PROMPT @@ -1309,7 +1307,7 @@ UnescapeWM_CLASS(char *str, char **name, char **class) { int i, j, k, dot; Bool esc; - + j = strlen(str); *name = wmalloc(j); **name = 0; @@ -1343,6 +1341,7 @@ UnescapeWM_CLASS(char *str, char **name, char **class) (*name)[k++] = str[i]; } } else { + (*name)[k++] = str[i]; esc = False; } } diff --git a/src/moveres.c b/src/moveres.c index 618e0390..9b0892b6 100644 --- a/src/moveres.c +++ b/src/moveres.c @@ -1,7 +1,7 @@ /* * Window Maker window manager * - * Copyright (c) 1997, 1998 Alfredo K. Kojima + * Copyright (c) 1997, 1998, 1999 Alfredo K. Kojima * * 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 @@ -25,6 +25,7 @@ #include <X11/Xutil.h> #include <X11/keysym.h> #include <stdio.h> +#include <stdlib.h> #include <unistd.h> #include "WindowMaker.h" @@ -402,72 +403,9 @@ mapGeometryDisplay(WWindow *wwin, int x, int y, int w, int h) #define unmapGeometryDisplay(w) \ XUnmapWindow(dpy, (w)->screen_ptr->geometry_display); -static void -checkEdgeResistance(WWindow *wwin, int *winx, int *winy, int off_x, int off_y) -{ - WScreen *scr = wwin->screen_ptr; - int scr_width = wwin->screen_ptr->scr_width - 3; - int scr_height = wwin->screen_ptr->scr_height; - int x = *winx; - int y = *winy; - int edge_resistance = wPreferences.edge_resistance; - int right_side = scr_width; - int left_side = 0; - int isize = wPreferences.icon_size; - - x -= off_x; - y -= off_y; - - if (scr->dock) - { - if (scr->dock->on_right_side) - right_side -= isize + DOCK_EXTRA_SPACE; - else - left_side += isize + DOCK_EXTRA_SPACE; - } - - if ((x + wwin->frame->core->width) >= right_side) { - if ((x + wwin->frame->core->width) < (right_side - + edge_resistance)) { - x = right_side - wwin->frame->core->width; - } else { - x -= edge_resistance; - } - } - - if (x <= left_side) { - if (x > (left_side - edge_resistance)) { - x = left_side; - } else { - x += edge_resistance; - } - } - - if ((y + wwin->frame->core->height) >= (scr_height - 1)) { - if ((y + wwin->frame->core->height) < ((scr_height - 1) - + edge_resistance)) { - y = scr_height - wwin->frame->core->height - 1; - } else { - y -= edge_resistance; - } - } - - if (y <=0) { - if (y > -edge_resistance) { - y = 0; - } else { - y += edge_resistance; - } - } - - - *winx = x; - *winy = y; -} static void -doWindowMove(WWindow *wwin, int single_win_x, int single_win_y, - LinkedList *list, int dx, int dy, int off_x, int off_y) +doWindowMove(WWindow *wwin, LinkedList *list, int dx, int dy) { WWindow *tmpw; int x, y; @@ -475,8 +413,7 @@ doWindowMove(WWindow *wwin, int single_win_x, int single_win_y, int scr_height = wwin->screen_ptr->scr_height; if (!list) { - checkEdgeResistance(wwin, &single_win_x, &single_win_y, off_x, off_y); - wWindowMove(wwin, single_win_x, single_win_y); + wWindowMove(wwin, wwin->frame_x + dx, wwin->frame_y + dy); } else { while (list) { tmpw = list->head; @@ -533,7 +470,7 @@ drawTransparentFrame(WWindow *wwin, int x, int y, int width, int height) static void -drawFrames(WWindow *wwin, LinkedList *list, int dx, int dy, int off_x, int off_y) +drawFrames(WWindow *wwin, LinkedList *list, int dx, int dy) { WWindow *tmpw; int scr_width = wwin->screen_ptr->scr_width; @@ -545,7 +482,6 @@ drawFrames(WWindow *wwin, LinkedList *list, int dx, int dy, int off_x, int off_y x = wwin->frame_x + dx; y = wwin->frame_y + dy; - checkEdgeResistance(wwin, &x, &y, off_x, off_y); drawTransparentFrame(wwin, x, y, wwin->frame->core->width, wwin->frame->core->height); @@ -617,26 +553,561 @@ crossWorkspace(WScreen *scr, WWindow *wwin, int opaque_move, } -/* - *---------------------------------------------------------------------- - * wMouseMoveWindow-- - * Move the named window and the other selected ones (if any), - * interactively. Also shows the position of the window, if only one - * window is being moved. - * If the window is not on the selected window list, the selected - * windows are deselected. - * If shift is pressed during the operation, the position display - * is changed to another type. - * - * Returns: - * True if the window was moved, False otherwise. - * - * Side effects: - * The window(s) position is changed, and the client(s) are - * notified about that. - * The position display configuration may be changed. - *---------------------------------------------------------------------- - */ + + +typedef struct { + /* arrays of WWindows sorted by the respective border position */ + WWindow **topList; /* top border */ + WWindow **leftList; /* left border */ + WWindow **rightList; /* right border */ + WWindow **bottomList; /* bottom border */ + int count; + + /* index of window in the above lists indicating the relative position + * of the window with the others */ + int topIndex; + int leftIndex; + int rightIndex; + int bottomIndex; + + int rubCount; /* for workspace switching */ + + int winWidth, winHeight; /* width/height of the window */ + int realX, realY; /* actual position of the window */ + int calcX, calcY; /* calculated position of window */ + int omouseX, omouseY; /* old mouse position */ + int mouseX, mouseY; /* last known position of the pointer */ +} MoveData; + +#define WTOP(w) (w)->frame_y +#define WLEFT(w) (w)->frame_x +#define WRIGHT(w) ((w)->frame_x + (int)(w)->frame->core->width) +#define WBOTTOM(w) ((w)->frame_y + (int)(w)->frame->core->height) + +static int +compareWTop(const void *a, const void *b) +{ + WWindow *wwin1 = *(WWindow**)a; + WWindow *wwin2 = *(WWindow**)b; + + if (WTOP(wwin1) > WTOP(wwin2)) + return -1; + else if (WTOP(wwin1) < WTOP(wwin2)) + return 1; + else + return 0; +} + + +static int +compareWLeft(const void *a, const void *b) +{ + WWindow *wwin1 = *(WWindow**)a; + WWindow *wwin2 = *(WWindow**)b; + + if (WLEFT(wwin1) > WLEFT(wwin2)) + return -1; + else if (WLEFT(wwin1) < WLEFT(wwin2)) + return 1; + else + return 0; +} + + +static int +compareWRight(const void *a, const void *b) +{ + WWindow *wwin1 = *(WWindow**)a; + WWindow *wwin2 = *(WWindow**)b; + + if (WRIGHT(wwin1) < WRIGHT(wwin2)) + return -1; + else if (WRIGHT(wwin1) > WRIGHT(wwin2)) + return 1; + else + return 0; +} + + + +static int +compareWBottom(const void *a, const void *b) +{ + WWindow *wwin1 = *(WWindow**)a; + WWindow *wwin2 = *(WWindow**)b; + + if (WBOTTOM(wwin1) < WBOTTOM(wwin2)) + return -1; + else if (WBOTTOM(wwin1) > WBOTTOM(wwin2)) + return 1; + else + return 0; +} + + +static void +updateResistance(WWindow *wwin, MoveData *data, int newX, int newY) +{ + int i; + int newX2 = newX + data->winWidth; + int newY2 = newY + data->winHeight; + Bool ok = False; + + if (newX < data->realX) { + if (data->rightIndex > 0 + && newX < WRIGHT(data->rightList[data->rightIndex-1])) { + ok = True; + } else if (data->leftIndex <= data->count-1 + && newX2 <= WLEFT(data->leftList[data->leftIndex])) { + ok = True; + } + } else if (newX > data->realX) { + if (data->leftIndex > 0 + && newX2 > WLEFT(data->leftList[data->leftIndex-1])) { + ok = True; + } else if (data->rightIndex <= data->count-1 + && newX >= WRIGHT(data->rightList[data->rightIndex])) { + ok = True; + } + } + + if (!ok) { + if (newY < data->realY) { + if (data->bottomIndex > 0 + && newY < WBOTTOM(data->bottomList[data->bottomIndex-1])) { + ok = True; + } else if (data->topIndex <= data->count-1 + && newY2 <= WTOP(data->topList[data->topIndex])) { + ok = True; + } + } else if (newY > data->realY) { + if (data->topIndex > 0 + && newY2 > WTOP(data->topList[data->topIndex-1])) { + ok = True; + } else if (data->bottomIndex <= data->count-1 + && newY >= WBOTTOM(data->bottomList[data->bottomIndex])) { + ok = True; + } + } + } + + if (!ok) + return; + + /* TODO: optimize this */ + if (data->realY < WBOTTOM(data->bottomList[0])) { + data->bottomIndex = 0; + } + if (data->realX < WRIGHT(data->rightList[0])) { + data->rightIndex = 0; + } + if ((data->realX + data->winWidth) > WLEFT(data->leftList[0])) { + data->leftIndex = 0; + } + if ((data->realY + data->winHeight) > WTOP(data->topList[0])) { + data->topIndex = 0; + } + for (i = 0; i < data->count; i++) { + if (data->realY > WBOTTOM(data->bottomList[i])) { + data->bottomIndex = i + 1; + } + if (data->realX > WRIGHT(data->rightList[i])) { + data->rightIndex = i + 1; + } + if ((data->realX + data->winWidth) < WLEFT(data->leftList[i])) { + data->leftIndex = i + 1; + } + if ((data->realY + data->winHeight) < WTOP(data->topList[i])) { + data->topIndex = i + 1; + } + } +} + + +static void +freeMoveData(MoveData *data) +{ + if (data->topList) + free(data->topList); + if (data->leftList) + free(data->leftList); + if (data->rightList) + free(data->rightList); + if (data->bottomList) + free(data->bottomList); +} + + +static void +updateMoveData(WWindow *wwin, MoveData *data) +{ + WScreen *scr = wwin->screen_ptr; + WWindow *tmp; + int i; + + data->count = 0; + tmp = scr->focused_window; + while (tmp) { + if (tmp != wwin && scr->current_workspace == tmp->frame->workspace + && !tmp->flags.obscured) { + data->topList[data->count] = tmp; + data->leftList[data->count] = tmp; + data->rightList[data->count] = tmp; + data->bottomList[data->count] = tmp; + data->count++; + } + tmp = tmp->prev; + } + + if (data->count == 0) { + data->topIndex = 0; + data->leftIndex = 0; + data->rightIndex = 0; + data->bottomIndex = 0; + return; + } + + /* + * order from closest to the border of the screen to farthest + */ + qsort(data->topList, data->count, sizeof(WWindow**), compareWTop); + qsort(data->leftList, data->count, sizeof(WWindow**), compareWLeft); + qsort(data->rightList, data->count, sizeof(WWindow**), compareWRight); + qsort(data->bottomList, data->count, sizeof(WWindow**), compareWBottom); + + /* figure the position of the window relative to the others */ + + data->topIndex = -1; + data->leftIndex = -1; + data->rightIndex = -1; + data->bottomIndex = -1; + + if (WTOP(wwin) < WBOTTOM(data->bottomList[0])) { + data->bottomIndex = 0; + } + if (WLEFT(wwin) < WRIGHT(data->rightList[0])) { + data->rightIndex = 0; + } + if (WRIGHT(wwin) > WLEFT(data->leftList[0])) { + data->leftIndex = 0; + } + if (WBOTTOM(wwin) > WTOP(data->topList[0])) { + data->topIndex = 0; + } + for (i = 0; i < data->count; i++) { + if (WTOP(wwin) >= WBOTTOM(data->bottomList[i])) { + data->bottomIndex = i + 1; + } + if (WLEFT(wwin) >= WRIGHT(data->rightList[i])) { + data->rightIndex = i + 1; + } + if (WRIGHT(wwin) <= WLEFT(data->leftList[i])) { + data->leftIndex = i + 1; + } + if (WBOTTOM(wwin) <= WTOP(data->topList[i])) { + data->topIndex = i + 1; + } + } +} + + +static void +initMoveData(WWindow *wwin, MoveData *data) +{ + int i; + WWindow *tmp; + + memset(data, 0, sizeof(MoveData)); + + for (i = 0, tmp = wwin->screen_ptr->focused_window; + tmp != NULL; + tmp = tmp->prev, i++); + + if (i <= 1) + return; + + data->topList = wmalloc(sizeof(WWindow*) * i); + data->leftList = wmalloc(sizeof(WWindow*) * i); + data->rightList = wmalloc(sizeof(WWindow*) * i); + data->bottomList = wmalloc(sizeof(WWindow*) * i); + + updateMoveData(wwin, data); + + data->realX = wwin->frame_x; + data->realY = wwin->frame_y; + data->calcX = wwin->frame_x; + data->calcY = wwin->frame_y; + + data->winWidth = wwin->frame->core->width + 2; + data->winHeight = wwin->frame->core->height + 2; +} + + +static Bool +checkWorkspaceChange(WWindow *wwin, MoveData *data, Bool opaqueMove) +{ + WScreen *scr = wwin->screen_ptr; + Bool changed = False; + + if (data->mouseX <= 1) { + if (scr->current_workspace > 0) { + + crossWorkspace(scr, wwin, opaqueMove, scr->current_workspace - 1, + True); + changed = True; + data->rubCount = 0; + + } else if (scr->current_workspace == 0 && wPreferences.ws_cycle) { + + crossWorkspace(scr, wwin, opaqueMove, scr->workspace_count - 1, + True); + changed = True; + data->rubCount = 0; + } + } else if (data->mouseX >= scr->scr_width - 2) { + + if (scr->current_workspace == scr->workspace_count - 1) { + + if (wPreferences.ws_cycle + || scr->workspace_count == MAX_WORKSPACES) { + + crossWorkspace(scr, wwin, opaqueMove, 0, False); + changed = True; + data->rubCount = 0; + } + /* if user insists on trying to go to next workspace even when + * it's already the last, create a new one */ + else if (data->omouseX == data->mouseX + && wPreferences.ws_advance) { + + /* detect user "rubbing" the window against the edge */ + if (data->rubCount > 0 + && data->omouseY - data->mouseY > MOVE_THRESHOLD) { + + data->rubCount = -(data->rubCount + 1); + + } else if (data->rubCount <= 0 + && data->mouseY - data->omouseY > MOVE_THRESHOLD) { + + data->rubCount = -data->rubCount + 1; + } + } + /* create a new workspace */ + if (abs(data->rubCount) > 2) { + /* go to next workspace */ + wWorkspaceNew(scr); + + crossWorkspace(scr, wwin, opaqueMove, + scr->current_workspace+1, False); + changed = True; + data->rubCount = 0; + } + } else if (scr->current_workspace < scr->workspace_count) { + + /* go to next workspace */ + crossWorkspace(scr, wwin, opaqueMove, + scr->current_workspace+1, False); + changed = True; + data->rubCount = 0; + } + } else { + data->rubCount = 0; + } + + return changed; +} + + +static void +updateWindowPosition(WWindow *wwin, MoveData *data, Bool doResistance, + Bool opaqueMove, int newMouseX, int newMouseY) +{ + WScreen *scr = wwin->screen_ptr; + int dx, dy; /* how much mouse moved */ + int winL, winR, winT, winB; /* requested new window position */ + int newX, newY; /* actual new window position */ + Bool hresist, vresist; + Bool updateIndex; + + hresist = False; + vresist = False; + + updateIndex = False; + + /* check the direction of the movement */ + dx = newMouseX - data->mouseX; + dy = newMouseY - data->mouseY; + + data->omouseX = data->mouseX; + data->omouseY = data->mouseY; + data->mouseX = newMouseX; + data->mouseY = newMouseY; + + winL = data->calcX + dx; + winR = data->calcX + data->winWidth + dx; + winT = data->calcY + dy; + winB = data->calcY + data->winHeight + dy; + + newX = data->realX; + newY = data->realY; + + if (doResistance) { + int edge; + int resist; + WWindow *rwin; + + resist = wPreferences.edge_resistance; + /* horizontal movement: check horizontal edge resistances */ + if (dx < 0) { + /* window is the leftmost window: check against screen edge */ + edge = 0; + + /* check position of nearest window to the left */ + if (data->rightIndex > 0) { + /* there is some window at the left: check if it will block + * the window */ + rwin = data->rightList[data->rightIndex - 1]; + + if (data->realY > WBOTTOM(rwin) + || (data->realY + data->winHeight) < WTOP(rwin)) { + resist = 0; + } else { + edge = WRIGHT(rwin) + 1; + resist = WIN_RESISTANCE(wPreferences.edge_resistance); + } + } + if (resist > 0 && winL >= edge - resist && winL <= edge) { + newX = edge; + hresist = True; + } + } else if (dx > 0) { + /* window is the rightmost window: check against screen edge */ + edge = scr->scr_width; + + /* check position of nearest window to the right */ + if (data->leftIndex > 0) { + /* there is some window at the right: check if it will block + * the window */ + rwin = data->leftList[data->leftIndex - 1]; + + if (data->realY > WBOTTOM(rwin) + || (data->realY + data->winHeight) < WTOP(rwin)) { + resist = 0; + } else { + edge = WLEFT(rwin); + resist = WIN_RESISTANCE(wPreferences.edge_resistance); + } + } + if (resist > 0 && winR <= edge + resist && winR >= edge) { + newX = edge - data->winWidth; + hresist = True; + } + } + + resist = wPreferences.edge_resistance; + /* vertical movement: check vertical edge resistances */ + if (dy < 0) { + /* window is the topmost window: check against screen edge */ + edge = 0; + + /* check position of nearest window to the top */ + if (data->bottomIndex > 0) { + /* there is some window at the top: check if it will block + * the window */ + rwin = data->bottomList[data->bottomIndex - 1]; + + if (data->realX > WRIGHT(rwin) + || (data->realX + data->winWidth) < WLEFT(rwin)) { + resist = 0; + } else { + edge = WBOTTOM(rwin) + 1; + resist = WIN_RESISTANCE(wPreferences.edge_resistance); + } + } + if (resist > 0 && winT >= edge - resist && winT <= edge) { + newY = edge; + vresist = True; + } + } else if (dy > 0) { + /* window is the bottommost window: check against screen edge */ + edge = scr->scr_height; + + /* check position of nearest window to the bottom */ + if (data->topIndex > 0) { + /* there is some window at the bottom: check if it will block + * the window */ + rwin = data->topList[data->topIndex - 1]; + + if (data->realX > WRIGHT(rwin) + || (data->realX + data->winWidth) < WLEFT(rwin)) { + resist = 0; + } else { + edge = WTOP(rwin); + resist = WIN_RESISTANCE(wPreferences.edge_resistance); + } + } + if (resist > 0 && winB <= edge + resist && winB >= edge) { + newY = edge - data->winHeight; + vresist = True; + } + } + } + + /* update window position */ + data->calcX += dx; + data->calcY += dy; + + if (((dx > 0 && data->calcX - data->realX > 0) + || (dx < 0 && data->calcX - data->realX < 0)) && !hresist) + newX = data->calcX; + + if (((dy > 0 && data->calcY - data->realY > 0) + || (dy < 0 && data->calcY - data->realY < 0)) && !vresist) + newY = data->calcY; + + if (data->realX != newX || data->realY != newY) { + if (opaqueMove) { + doWindowMove(wwin, scr->selected_windows, + newX - wwin->frame_x, + newY - wwin->frame_y); + } else { + /* erase frames */ + drawFrames(wwin, scr->selected_windows, + data->realX - wwin->frame_x, + data->realY - wwin->frame_y); + + /* draw frames */ + drawFrames(wwin, scr->selected_windows, + newX - wwin->frame_x, + newY - wwin->frame_y); + } + } + + if (!scr->selected_windows) { + + if (wPreferences.move_display == WDIS_NEW) { + + showPosition(wwin, data->realX, data->realY); + + } else if (wPreferences.move_display == WDIS_FRAME_CENTER) { + + moveGeometryDisplayCentered(scr, newX + data->winWidth/2, + newY + data->winHeight/2); + } + showPosition(wwin, newX, newY); + } + + /* recalc relative window position */ + if (doResistance && (data->realX != newX || data->realY != newY)) { + updateResistance(wwin, data, newX, newY); + } + + data->realX = newX; + data->realY = newY; +} + + + #if 0 typedef struct _looper { @@ -660,7 +1131,7 @@ _keyloop(_looper *lpr){ XSync(dpy, False); wusleep(10000); XGrabServer(dpy); - printf("called\n"); +/* printf("called\n");*/ if (!scr->selected_windows){ drawTransparentFrame(wwin, src_x+lpr->ox, src_y+lpr->oy, w, h); } @@ -712,18 +1183,17 @@ wKeyboardMoveResizeWindow(WWindow *wwin) wUnselectWindows(scr); } XGrabServer(dpy); - XGrabPointer(dpy, scr->root_win, True, PointerMotionMask - |ButtonReleaseMask|ButtonPressMask, GrabModeAsync, - GrabModeAsync, None, wCursor[WCUR_DEFAULT], CurrentTime); + XGrabPointer(dpy, scr->root_win, True, PointerMotionMask + |ButtonReleaseMask|ButtonPressMask, GrabModeAsync, + GrabModeAsync, None, wCursor[WCUR_DEFAULT], CurrentTime); if (wwin->flags.shaded || scr->selected_windows) { if(scr->selected_windows) - drawFrames(wwin,scr->selected_windows,off_x,off_y,0,0); + drawFrames(wwin,scr->selected_windows,off_x,off_y); else drawTransparentFrame(wwin, src_x+off_x, src_y+off_y, w, h); if(!scr->selected_windows) mapPositionDisplay(wwin, src_x, src_y, w, h); - } - else { + } else { drawTransparentFrame(wwin, src_x+off_x, src_y+off_y, w, h); } ww=w; @@ -737,7 +1207,7 @@ wKeyboardMoveResizeWindow(WWindow *wwin) | ButtonPressMask | ExposureMask, &event); if (wwin->flags.shaded || scr->selected_windows) { if(scr->selected_windows) - drawFrames(wwin,scr->selected_windows,off_x,off_y,0,0); + drawFrames(wwin,scr->selected_windows,off_x,off_y); else drawTransparentFrame(wwin, src_x+off_x, src_y+off_y, w, h); /*** I HATE EDGE RESISTANCE - ]d ***/ } @@ -880,7 +1350,7 @@ wKeyboardMoveResizeWindow(WWindow *wwin) if (wwin->flags.shaded || scr->selected_windows) { if(scr->selected_windows) - drawFrames(wwin,scr->selected_windows,off_x,off_y,0,0); + drawFrames(wwin,scr->selected_windows,off_x,off_y); else drawTransparentFrame(wwin, src_x+off_x, src_y+off_y, w, h); } else { @@ -902,7 +1372,7 @@ wKeyboardMoveResizeWindow(WWindow *wwin) */ if (wwin->flags.shaded || scr->selected_windows) { if(scr->selected_windows) - drawFrames(wwin,scr->selected_windows,off_x,off_y,0,0); + drawFrames(wwin,scr->selected_windows,off_x,off_y); else drawTransparentFrame(wwin, src_x+off_x, src_y+off_y, w, h); } else { @@ -927,7 +1397,7 @@ wKeyboardMoveResizeWindow(WWindow *wwin) wWindowSynthConfigureNotify(wwin); } else { - doWindowMove(wwin,0,0,scr->selected_windows,off_x,off_y,0,0); + doWindowMove(wwin,scr->selected_windows,off_x,off_y); while (list) { wWindowSynthConfigureNotify(list->head); list = list->tail; @@ -947,6 +1417,26 @@ wKeyboardMoveResizeWindow(WWindow *wwin) } +/* + *---------------------------------------------------------------------- + * wMouseMoveWindow-- + * Move the named window and the other selected ones (if any), + * interactively. Also shows the position of the window, if only one + * window is being moved. + * If the window is not on the selected window list, the selected + * windows are deselected. + * If shift is pressed during the operation, the position display + * is changed to another type. + * + * Returns: + * True if the window was moved, False otherwise. + * + * Side effects: + * The window(s) position is changed, and the client(s) are + * notified about that. + * The position display configuration may be changed. + *---------------------------------------------------------------------- + */ int wMouseMoveWindow(WWindow *wwin, XEvent *ev) { @@ -954,33 +1444,21 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) XEvent event; Window root = scr->root_win; KeyCode shiftl, shiftr; - int w = wwin->frame->core->width; - int h = wwin->frame->core->height; - int x = wwin->frame_x; - int y = wwin->frame_y; - int ox, oy, orig_x, orig_y; - int off_x, off_y; - short count = 0; /* for automatic workspace creation */ int started = 0; int warped = 0; /* This needs not to change while moving, else bad things can happen */ - int opaque_move = wPreferences.opaque_move; - int XOffset, YOffset, origDragX, origDragY; - - origDragX = wwin->frame_x; - origDragY = wwin->frame_y; - XOffset = origDragX - ev->xbutton.x_root; - YOffset = origDragY - ev->xbutton.y_root; - + int opaqueMove = wPreferences.opaque_move; + MoveData moveData; + + initMoveData(wwin, &moveData); + + moveData.mouseX = ev->xmotion.x_root; + moveData.mouseY = ev->xmotion.y_root; + if (!wwin->flags.selected) { /* this window is not selected, unselect others and move only wwin */ wUnselectWindows(scr); } - orig_x = ox = ev->xbutton.x_root; - orig_y = oy = ev->xbutton.y_root; - off_x = x; off_y = y; - checkEdgeResistance(wwin, &off_x, &off_y, 0, 0); - off_x = (off_x-x); off_y = (off_y-y); #ifdef DEBUG puts("Moving window"); #endif @@ -993,153 +1471,84 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) /* XWarpPointer() doesn't seem to generate Motion events, so we've got to simulate them */ - printf("warp\n"); XQueryPointer(dpy, root, &junkw, &junkw, &event.xmotion.x_root, &event.xmotion.y_root, &junk, &junk, (unsigned *) &junk); } else { - Window win; - WMMaskEvent(dpy, KeyPressMask | ButtonMotionMask - | ButtonReleaseMask | ButtonPressMask | ExposureMask, &event); + | ButtonReleaseMask | ButtonPressMask | ExposureMask, + &event); if (event.type == MotionNotify) { /* compress MotionNotify events */ - win = event.xmotion.window; while (XCheckMaskEvent(dpy, ButtonMotionMask, &event)) ; } } switch (event.type) { case KeyPress: - if (scr->selected_windows) - break; if ((event.xkey.keycode == shiftl || event.xkey.keycode == shiftr) - && started) { - if (!opaque_move) + && started && !scr->selected_windows) { + + if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, - ox - orig_x, oy - orig_y, off_x, off_y); - - cyclePositionDisplay(wwin, x, y, w, h); - - if (!opaque_move) { - drawFrames(wwin, scr->selected_windows, - ox - orig_x, oy - orig_y, off_x, off_y); - } - showPosition(wwin, x, y); + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); + } + + cyclePositionDisplay(wwin, moveData.realX, moveData.realY, + moveData.winWidth, moveData.winHeight); + + if (!opaqueMove) { + drawFrames(wwin, scr->selected_windows, + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); + } } break; case MotionNotify: if (started) { - showPosition(wwin, x, y); + updateWindowPosition(wwin, &moveData, + scr->selected_windows == NULL + && wPreferences.edge_resistance > 0, + opaqueMove, + event.xmotion.x_root, + event.xmotion.y_root); - if (!opaque_move) { - drawFrames(wwin, scr->selected_windows, - ox-orig_x, oy-orig_y, off_x, off_y); - } else { - doWindowMove(wwin, event.xmotion.x_root + XOffset, - event.xmotion.y_root + YOffset, - scr->selected_windows, - event.xmotion.x_root - ox, - event.xmotion.y_root - oy, - off_x, off_y); - } - - x = event.xmotion.x_root + XOffset; - y = event.xmotion.y_root + YOffset; - - checkEdgeResistance(wwin, &x, &y, off_x, off_y); - - if (!scr->selected_windows) { - if (wPreferences.move_display == WDIS_FRAME_CENTER) - moveGeometryDisplayCentered(scr, x + w/2, y + h/2); - } if (!warped && !wPreferences.no_autowrap) { - if (event.xmotion.x_root <= 1) { - if (scr->current_workspace > 0) { - crossWorkspace(scr, wwin, opaque_move, - scr->current_workspace-1, True); - warped = 1; - count = 0; - } else if (scr->current_workspace == 0 - && wPreferences.ws_cycle) { - crossWorkspace(scr, wwin, opaque_move, - scr->workspace_count-1, True); - warped = 1; - count = 0; - } - } else if (event.xmotion.x_root >= scr->scr_width - 2) { + int oldWorkspace = scr->current_workspace; - if (scr->current_workspace == scr->workspace_count-1) { - if ((!wPreferences.ws_advance && wPreferences.ws_cycle) - || (scr->workspace_count == MAX_WORKSPACES)) { - crossWorkspace(scr, wwin, opaque_move, 0, False); - warped = 1; - count = 0; - } - /* if user insists on trying to go to next - workspace even when it's already the last, - create a new one */ - else if ((ox == event.xmotion.x_root) - && wPreferences.ws_advance) { - - /* detect user "rubbing" the window - against the edge */ - if (count > 0 - && oy - event.xmotion.y_root > MOVE_THRESHOLD) - count = -(count + 1); - else if (count <= 0 - && event.xmotion.y_root - oy > MOVE_THRESHOLD) - count = -count + 1; - } - /* create a new workspace */ - if (abs(count) > 2) { - /* go to next workspace */ - wWorkspaceNew(scr); - - crossWorkspace(scr, wwin, opaque_move, - scr->current_workspace+1, False); - warped = 1; - count = 0; - } - } else if (scr->current_workspace < scr->workspace_count) { - - /* go to next workspace */ - crossWorkspace(scr, wwin, opaque_move, - scr->current_workspace+1, False); - warped = 1; - count = 0; - } - } else { - count = 0; + if (checkWorkspaceChange(wwin, &moveData, opaqueMove)) { + if (scr->current_workspace != oldWorkspace + && wPreferences.edge_resistance > 0 + && scr->selected_windows == NULL) + updateMoveData(wwin, &moveData); + warped = 1; } + } else { warped = 0; } - } else if (abs(orig_x - event.xmotion.x_root) >= MOVE_THRESHOLD - || abs(orig_y - event.xmotion.y_root) >= MOVE_THRESHOLD) { + } else if (abs(ev->xmotion.x_root - event.xmotion.x_root) >= MOVE_THRESHOLD + || abs(ev->xmotion.y_root - event.xmotion.y_root) >= MOVE_THRESHOLD) { + XChangeActivePointerGrab(dpy, ButtonMotionMask | ButtonReleaseMask | ButtonPressMask, wCursor[WCUR_MOVE], CurrentTime); started = 1; - XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, + XGrabKeyboard(dpy, root, False, GrabModeAsync, GrabModeAsync, CurrentTime); - event.xmotion.x_root = orig_x; - event.xmotion.y_root = orig_y; - + if (!scr->selected_windows) - mapPositionDisplay(wwin, x, y, w, h); - - if (!opaque_move) + mapPositionDisplay(wwin, moveData.realX, moveData.realY, + moveData.winWidth, moveData.winHeight); + + if (started && !opaqueMove) + drawFrames(wwin, scr->selected_windows, 0, 0); + + if (!opaqueMove) XGrabServer(dpy); } - ox = event.xmotion.x_root; - oy = event.xmotion.y_root; - - if (started && !opaque_move) - drawFrames(wwin, scr->selected_windows, ox - orig_x, oy - orig_y, off_x, off_y); - - showPosition(wwin, x, y); break; case ButtonPress: @@ -1150,27 +1559,27 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) break; if (started) { - if (!opaque_move) { + if (!opaqueMove) { drawFrames(wwin, scr->selected_windows, - ox - orig_x, oy - orig_y, off_x, off_y); + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); XSync(dpy, 0); - doWindowMove(wwin, event.xmotion.x_root + XOffset, - event.xmotion.y_root + YOffset, - scr->selected_windows, - ox - orig_x, oy - orig_y, - off_x, off_y); + doWindowMove(wwin, scr->selected_windows, + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); } #ifndef CONFIGURE_WINDOW_WHILE_MOVING wWindowSynthConfigureNotify(wwin); #endif - XUngrabKeyboard(dpy, CurrentTime); XUngrabServer(dpy); - if (!opaque_move) { + if (!opaqueMove) { wWindowChangeWorkspace(wwin, scr->current_workspace); wSetFocusTo(scr, wwin); } - showPosition(wwin, x, y); + if (wPreferences.move_display == WDIS_NEW) + showPosition(wwin, moveData.realX, moveData.realY); + if (!scr->selected_windows) { /* get rid of the geometry window */ unmapPositionDisplay(wwin); @@ -1179,22 +1588,31 @@ wMouseMoveWindow(WWindow *wwin, XEvent *ev) #ifdef DEBUG puts("End move window"); #endif + freeMoveData(&moveData); + return started; default: - if (started && !opaque_move) { - drawFrames(wwin, scr->selected_windows, ox - orig_x, oy - orig_y, off_x, off_y); + if (started && !opaqueMove) { + drawFrames(wwin, scr->selected_windows, + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); XUngrabServer(dpy); WMHandleEvent(&event); XSync(dpy, False); XGrabServer(dpy); - drawFrames(wwin, scr->selected_windows, ox - orig_x, oy - orig_y, off_x, off_y); + drawFrames(wwin, scr->selected_windows, + moveData.realX - wwin->frame_x, + moveData.realY - wwin->frame_y); } else { WMHandleEvent(&event); } break; } } + + freeMoveData(&moveData); + return 0; } @@ -1554,6 +1972,7 @@ wSelectWindows(WScreen *scr, XEvent *ev) default: WMHandleEvent(&event); + break; } } } diff --git a/src/openlook.c b/src/openlook.c index 7d58dddf..0a273099 100644 --- a/src/openlook.c +++ b/src/openlook.c @@ -164,8 +164,6 @@ getWindowHints(Window window, OLHints *hints) return False; } - printf("WINDOW TYPE %s\n", XGetAtomName(dpy, hints->winType)); - XFree(data); /* do backward compatibility stuff */ diff --git a/src/placement.c b/src/placement.c index a9007458..1c526d4c 100644 --- a/src/placement.c +++ b/src/placement.c @@ -78,16 +78,28 @@ iconPosition(WCoreWindow *wcore, int sx1, int sy1, int sx2, int sy2, ok = 1; } else if (wcore->descriptor.parent_type == WCLASS_MINIWINDOW && - (((WIcon*)parent)->owner->frame->workspace==workspace + (((WIcon*)parent)->owner->frame->workspace == workspace || IS_OMNIPRESENT(((WIcon*)parent)->owner) || wPreferences.sticky_icons) - && !((WIcon*)parent)->owner->flags.hidden) { + && (!((WIcon*)parent)->owner->flags.hidden + || wcore->screen_ptr->flags.startup)) { *retX = ((WIcon*)parent)->owner->icon_x; *retY = ((WIcon*)parent)->owner->icon_y; ok = 1; + } else if (wcore->descriptor.parent_type == WCLASS_WINDOW + && (((WWindow*)parent)->flags.icon_moved + || ((WWindow*)parent)->flags.hidden) + && (((WWindow*)parent)->frame->workspace == workspace + || IS_OMNIPRESENT((WWindow*)parent) + || wPreferences.sticky_icons)) { + *retX = ((WWindow*)parent)->icon_x; + *retY = ((WWindow*)parent)->icon_y; + + ok = 1; } + /* * Check if it is inside the screen. @@ -280,11 +292,16 @@ smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, test_window = test_window->next; continue; } +#if 0 tw = test_window->client.width; if (test_window->flags.shaded) th = test_window->frame->top_width; else th = test_window->client.height + extra_height; +#else + tw = test_window->frame->core->width; + th = test_window->frame->core->height; +#endif tx = test_window->frame_x; ty = test_window->frame_y; @@ -309,11 +326,16 @@ smartPlaceWindow(WWindow *wwin, int *x_ret, int *y_ret, test_window = test_window->prev; continue; } +#if 0 tw = test_window->client.width; if (test_window->flags.shaded) th = test_window->frame->top_width; else th = test_window->client.height + extra_height; +#else + tw = test_window->frame->core->width; + th = test_window->frame->core->height; +#endif tx = test_window->frame_x; ty = test_window->frame_y; diff --git a/src/resources.c b/src/resources.c index 3dc14d43..de4dcf60 100644 --- a/src/resources.c +++ b/src/resources.c @@ -79,8 +79,8 @@ wLoadFont(char *font_name) } if (!font->font) { wwarning(_("could not create font set %s. Trying fixed"), font_name); - font->font = XCreateFontSet(dpy, "fixed", &missing, &num_missing, - &default_string); + font->font = XCreateFontSet(dpy, "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*", + &missing, &num_missing, &default_string); if (num_missing > 0) { XFreeStringList(missing); } diff --git a/src/rootmenu.c b/src/rootmenu.c index 9aca896f..4704c5a5 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -325,9 +325,46 @@ legalPanelCommand(WMenu *menu, WMenuEntry *entry) } - /********************************************************************/ + +static char* +getLocalizedMenuFile(char *menu) +{ + char *buffer; + char *ptr; + + if (!Locale) + return NULL; + + buffer = wmalloc(strlen(menu)+32); + + /* try menu.locale_name */ + sprintf(buffer, "%s.%s", menu, Locale); + if (access(buffer, F_OK)==0) { + return buffer; + } + /* check if it is in the form aa_bb.encoding and check for aa_bb */ + ptr = strchr(Locale, '.'); + if (ptr) { + *ptr = 0; + if (access(buffer, F_OK)==0) { + return buffer; + } + } + /* now check for aa */ + ptr = strchr(buffer, '_'); + if (ptr) { + *ptr = 0; + if (access(buffer, F_OK)==0) { + return buffer; + } + } + + return NULL; +} + + static void raiseMenus(WMenu *menu) { @@ -633,7 +670,6 @@ constructMenu(WMenu *menu, WMenuEntry *entry) i=0; while(path[i] != NULL) { char *tmp; - Bool statted = False; if (strcmp(path[i], "-noext")==0) { i++; @@ -642,40 +678,16 @@ constructMenu(WMenu *menu, WMenuEntry *entry) tmp = wexpandpath(path[i]); free(path[i]); - path[i] = tmp; + lpath = getLocalizedMenuFile(tmp); + if (lpath) { + free(tmp); + path[i] = lpath; + lpath = NULL; + } else { + path[i] = tmp; + } - if (Locale) { - lpath = wmalloc(strlen(path[i])+32); - - strcpy(lpath, path[i]); - strcat(lpath, "."); - strcat(lpath, Locale); - if (stat(lpath, &stat_buf)<0) { - int i; - i = strlen(Locale); - if (i>2) { - lpath[strlen(lpath)-(i-2)]=0; - if (stat(lpath, &stat_buf)==0) { - statted = True; - free(path[i]); - path[i] = lpath; - lpath = NULL; - } - } - } else { - statted = True; - free(path[i]); - path[i] = lpath; - lpath = NULL; - } - } - - if (lpath) { - free(lpath); - lpath = NULL; - } - - if (statted || stat(path[i], &stat_buf)==0) { + if (stat(path[i], &stat_buf)==0) { if (last < stat_buf.st_mtime) last = stat_buf.st_mtime; if (first<0) @@ -1508,38 +1520,10 @@ configureMenu(WScreen *scr, proplist_t definition) Bool menu_is_default = False; /* menu definition is a string. Probably a path, so parse the file */ - + tmp = wexpandpath(PLGetString(definition)); - if (Locale) { - path = wmalloc(strlen(tmp)+32); - - strcpy(path, tmp); - strcat(path, "."); - strcat(path, Locale); - - /* look for menu.xy */ - if (stat(path, &stat_buf)<0) { - int i; - i = strlen(Locale); - if (i>2) { - path[strlen(path)-(i-2)]=0; - /* look for menu.xy_zw */ - if (stat(path, &stat_buf)<0) { - free(path); - /* If did not find any localized menus, try - * only menu. This can also mean that - * the path in WMRootMenu was already the - * path for the localized menu (eg: menu = "menu.ab") - */ - path = NULL; - } - } else { - free(path); - path = NULL; - } - } - } + path = getLocalizedMenuFile(tmp); if (!path) path = wfindfile(DEF_CONFIG_PATHS, tmp); @@ -1555,7 +1539,7 @@ configureMenu(WScreen *scr, proplist_t definition) free(tmp); return NULL; } - + if (stat(path, &stat_buf)<0) { wsyserror(_("could not access menu \"%s\" referenced in WMRootMenu"), path); free(path); diff --git a/src/screen.c b/src/screen.c index 5cc50365..75725e9f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -707,7 +707,6 @@ wScreenInit(int screen_number) break; } } - RFreeStringList(formats); } } diff --git a/src/screen.h b/src/screen.h index 44bdb84d..bd996864 100644 --- a/src/screen.h +++ b/src/screen.h @@ -293,6 +293,7 @@ typedef struct _WScreen { unsigned int backimage_helper_launched:1; /* some client has issued a WM_COLORMAP_NOTIFY */ unsigned int colormap_stuff_blocked:1; + unsigned int doing_alt_tab:1; #ifdef KWM_HINTS unsigned int kwm_syncing_name:1; unsigned int kwm_syncing_count:1; @@ -326,6 +327,7 @@ int wScreenBringInside(WScreen *scr, int *x, int *y, int width, int height); /* in startup.c */ WScreen *wScreenWithNumber(int i); WScreen *wScreenForRootWindow(Window window); /* window must be valid */ +WScreen *wScreenSearchForRootWindow(Window window); WScreen *wScreenForWindow(Window window); /* slower than above functions */ void wScreenFinish(WScreen *scr); diff --git a/src/session.c b/src/session.c index 3a9849f6..ca6021f5 100644 --- a/src/session.c +++ b/src/session.c @@ -872,7 +872,7 @@ smSaveYourselfPhase2Proc(SmcConn smc_conn, SmPointer client_data) if (!statefile) { if (gsPrefix) free(prefix); - wwarning(_("end of memory while saving session state")); + wwarning(_("out of memory while saving session state")); goto fail; } @@ -880,7 +880,7 @@ smSaveYourselfPhase2Proc(SmcConn smc_conn, SmPointer client_data) i = 0; do { if (gsPrefix) - sprintf(statefile, "%s/.AppInfo/WindowMaker/%l%i.state", + sprintf(statefile, "%s/.AppInfo/WindowMaker/wmaker.%l%i.state", prefix, t, i); else sprintf(statefile, "%s/wmaker.%l%i.state", prefix, t, i); diff --git a/src/shutdown.c b/src/shutdown.c index 1ae4a5ce..215d6ead 100644 --- a/src/shutdown.c +++ b/src/shutdown.c @@ -162,7 +162,7 @@ RestoreDesktop(WScreen *scr) { int i; - if (scr->helper_pid) { + if (scr->helper_pid > 0) { kill(scr->helper_pid, SIGTERM); scr->helper_pid = 0; } diff --git a/src/stacking.c b/src/stacking.c index 2c8e72f3..6c6dbcc5 100644 --- a/src/stacking.c +++ b/src/stacking.c @@ -169,7 +169,7 @@ CommitStacking(WScreen *scr) * Changes the stacking order of frame. *---------------------------------------------------------------------- */ -void +static void moveFrameToUnder(WCoreWindow *under, WCoreWindow *frame) { Window wins[2]; diff --git a/src/stacking.h b/src/stacking.h index 2c05a884..9e721544 100644 --- a/src/stacking.h +++ b/src/stacking.h @@ -42,5 +42,4 @@ void RemakeStackList(WScreen *scr); void CommitStacking(WScreen *scr); - #endif diff --git a/src/startup.c b/src/startup.c index 7a797030..2702831c 100644 --- a/src/startup.c +++ b/src/startup.c @@ -206,6 +206,7 @@ catchXError(Display *dpy, XErrorEvent *error) static int handleXIO(Display *dpy) { + dpy = NULL; Exit(0); return 0; } @@ -531,10 +532,11 @@ WScreen* wScreenWithNumber(int i) { assert(i < wScreenCount); - + return wScreen[i]; } + WScreen* wScreenForRootWindow(Window window) { @@ -559,6 +561,30 @@ wScreenForRootWindow(Window window) return NULL; } + +WScreen* +wScreenSearchForRootWindow(Window window) +{ + int i; + + if (wScreenCount==1) + return wScreen[0]; + + /* + * Since the number of heads will probably be small (normally 2), + * it should be faster to use this than a hash table, because + * of the overhead. + */ + for (i=0; i<wScreenCount; i++) { + if (wScreen[i]->root_win == window) { + return wScreen[i]; + } + } + + return NULL; +} + + WScreen* wScreenForWindow(Window window) { @@ -899,7 +925,7 @@ manageAllWindows(WScreen *scr) scr->flags.startup = 1; /* first remove all icon windows */ - for (i=0; i<nchildren; i++) { + for (i = 0; i < nchildren; i++) { if (children[i]==None) continue; @@ -919,9 +945,10 @@ manageAllWindows(WScreen *scr) } } /* map all windows without OverrideRedirect */ - for (i=0; i<nchildren; i++) { - if (children[i]==None) - continue; + for (i = 0; i < nchildren; i++) { + if (children[i] == None) + continue; + #ifdef KWM_HINTS wKWMCheckModule(scr, children[i]); @@ -932,7 +959,6 @@ manageAllWindows(WScreen *scr) state = getState(children[i]); if (!wattribs.override_redirect && (state>=0 || wattribs.map_state!=IsUnmapped)) { - XUnmapWindow(dpy, children[i]); if (state==WithdrawnState) { /* move the window far away so that it doesn't flash */ @@ -941,7 +967,7 @@ manageAllWindows(WScreen *scr) } wwin = wManageWindow(scr, children[i]); if (wwin) { - if (state==WithdrawnState) { + if (state == WithdrawnState) { wwin->flags.mapped = 0; wClientSetState(wwin, WithdrawnState, None); XSelectInput(dpy, wwin->client_win, NoEventMask); @@ -954,40 +980,46 @@ manageAllWindows(WScreen *scr) wwin->flags.shaded = 0; wShadeWindow(wwin); } - if (wwin->flags.hidden) { - WApplication *wapp = wApplicationOf(wwin->main_window); - wwin->flags.hidden = 0; - if (wapp) { - wHideApplication(wapp); - } - wwin->flags.ignore_next_unmap=1; - } else { - if (wwin->wm_hints && - (wwin->wm_hints->flags & StateHint) && state<0) - state=wwin->wm_hints->initial_state; - if (state==IconicState) { - /* iconify if it's not a transient */ - if (wwin->transient_for==None - || wwin->transient_for==wwin->client_win - || !windowInList(wwin->transient_for, - children, nchildren)) { - wwin->flags.miniaturized = 0; - wIconifyWindow(wwin); - wwin->flags.ignore_next_unmap=1; - } - } else { - wClientSetState(wwin, NormalState, None); - } - } - } + if (wwin->wm_hints && + (wwin->wm_hints->flags & StateHint) && state < 0) + state = wwin->wm_hints->initial_state; + + if ((state == IconicState || wwin->flags.miniaturized) + && (wwin->transient_for == None + || wwin->transient_for == wwin->client_win + || !windowInList(wwin->transient_for, + children, nchildren))) { + wwin->flags.miniaturized = 0; + wIconifyWindow(wwin); + } else { + wClientSetState(wwin, NormalState, None); + } + } } - if (state==WithdrawnState) { + if (state == WithdrawnState) { /* move the window back to it's old position */ XMoveWindow(dpy, children[i], wattribs.x, wattribs.y); } } } XUngrabServer(dpy); + + /* hide apps */ + wwin = scr->focused_window; + while (wwin) { + if (wwin->flags.hidden) { + WApplication *wapp = wApplicationOf(wwin->main_window); + + if (wapp) { + wwin->flags.hidden = 0; + wHideApplication(wapp); + } else { + wwin->flags.hidden = 0; + } + } + wwin = wwin->prev; + } + XFree(children); scr->flags.startup = 0; scr->flags.startup2 = 1; diff --git a/src/superfluous.c b/src/superfluous.c index b8cac573..2106e6bf 100644 --- a/src/superfluous.c +++ b/src/superfluous.c @@ -182,8 +182,8 @@ DoKaboom(WScreen *scr, Window win, int x, int y) while (k>0) { XEvent foo; - if (XCheckTypedWindowEvent(dpy, scr->root_win, ButtonPressMask, - &foo)) { + if (XCheckTypedEvent(dpy, ButtonPress, &foo)) { + XPutBackEvent(dpy, &foo); XClearWindow(dpy, scr->root_win); break; } @@ -256,6 +256,7 @@ DoKaboom(WScreen *scr, Window win, int x, int y) # endif #endif } + XFreePixmap(dpy, tmp); } #endif /* !DEMATERIALIZE_ICON */ @@ -510,7 +511,7 @@ InitXThing(WScreen *scr) if ((l->tm_mon!=12||l->tm_mday<24||l->tm_mday>26)) { return False; } - + if (!loadData(scr)) return False; diff --git a/src/switchmenu.c b/src/switchmenu.c index 0574b67a..4488ebbd 100644 --- a/src/switchmenu.c +++ b/src/switchmenu.c @@ -162,10 +162,7 @@ menuIndexForWindow(WMenu *menu, WWindow *wwin, int old_pos) /* - * * Update switch menu - * - * */ void UpdateSwitchMenu(WScreen *scr, WWindow *wwin, int action) @@ -317,7 +314,6 @@ UpdateSwitchMenu(WScreen *scr, WWindow *wwin, int action) entry->flags.indicator_on = wwin->flags.focused; entry->flags.indicator_type = MI_DIAMOND; } - wMenuPaint(switchmenu); break; } break; diff --git a/src/wconfig.h b/src/wconfig.h index f1e0d898..23a371c0 100644 --- a/src/wconfig.h +++ b/src/wconfig.h @@ -37,6 +37,15 @@ *-------------------------------------------------------------------- */ +/* undefine WEENDOZE_CYCLING to remove all Windoze style Alt-Tab cycling + * If define, windoze cycling must still be enabled with the + * WindozeCycling = YES and FinishedCyclingKey = Meta_L options + + not working yet + */ +#undef WEENDOZE_CYCLING + + /* undefine ANIMATIONS if you don't want animations for iconification, * shading, icon arrangement etc. */ #define ANIMATIONS @@ -169,6 +178,10 @@ */ #undef SHADOW_RESIZEBAR +/* + * Titlebar text shadow + */ +#undef TITLE_TEXT_SHADOW /* * Define DEMATERIALIZE_ICON if you want the undocked icon animation @@ -263,12 +276,8 @@ #define DEF_APPMENU_X 10 #define DEF_APPMENU_Y 10 -/* number of window shortcuts */ -#ifdef EXTEND_WINDOWSHORTCUT -# define MAX_WINDOW_SHORTCUTS 10 -#else -# define MAX_WINDOW_SHORTCUTS 4 -#endif +/* calculate window edge resistance from edge resistance */ +#define WIN_RESISTANCE(x) (((x)*20)/30) /* Window level where icons reside */ #define NORMAL_ICON_LEVEL WMNormalLevel @@ -449,6 +458,13 @@ */ +/* number of window shortcuts */ +#ifdef EXTEND_WINDOWSHORTCUT +# define MAX_WINDOW_SHORTCUTS 10 +#else +# define MAX_WINDOW_SHORTCUTS 4 +#endif + #define WM_PI 3.14159265358979323846 diff --git a/src/wconfig.h.in b/src/wconfig.h.in index 9984ec71..62f21cf4 100644 --- a/src/wconfig.h.in +++ b/src/wconfig.h.in @@ -37,6 +37,15 @@ *-------------------------------------------------------------------- */ +/* undefine WEENDOZE_CYCLING to remove all Windoze style Alt-Tab cycling + * If define, windoze cycling must still be enabled with the + * WindozeCycling = YES and FinishedCyclingKey = Meta_L options + + not working yet + */ +#undef WEENDOZE_CYCLING + + /* undefine ANIMATIONS if you don't want animations for iconification, * shading, icon arrangement etc. */ #define ANIMATIONS @@ -169,6 +178,10 @@ */ #undef SHADOW_RESIZEBAR +/* + * Titlebar text shadow + */ +#undef TITLE_TEXT_SHADOW /* * Define DEMATERIALIZE_ICON if you want the undocked icon animation @@ -263,12 +276,8 @@ #define DEF_APPMENU_X 10 #define DEF_APPMENU_Y 10 -/* number of window shortcuts */ -#ifdef EXTEND_WINDOWSHORTCUT -# define MAX_WINDOW_SHORTCUTS 10 -#else -# define MAX_WINDOW_SHORTCUTS 4 -#endif +/* calculate window edge resistance from edge resistance */ +#define WIN_RESISTANCE(x) (((x)*20)/30) /* Window level where icons reside */ #define NORMAL_ICON_LEVEL WMNormalLevel @@ -449,6 +458,13 @@ */ +/* number of window shortcuts */ +#ifdef EXTEND_WINDOWSHORTCUT +# define MAX_WINDOW_SHORTCUTS 10 +#else +# define MAX_WINDOW_SHORTCUTS 4 +#endif + #define WM_PI 3.14159265358979323846 diff --git a/src/window.c b/src/window.c index 1f605236..0b387bf9 100644 --- a/src/window.c +++ b/src/window.c @@ -1,4 +1,4 @@ -/* window.c - client window managing class +/* window.c - client window managing stuffs * * Window Maker window manager * @@ -500,7 +500,7 @@ wManageWindow(WScreen *scr, Window window) /* mutex. */ XGrabServer(dpy); - XSync(dpy, 0); + XSync(dpy, False); /* make sure the window is still there */ if (!XGetWindowAttributes(dpy, window, &wattribs)) { XUngrabServer(dpy); @@ -557,6 +557,7 @@ wManageWindow(WScreen *scr, Window window) wwin->old_border_width = wattribs.border_width; + wwin->event_mask = CLIENT_EVENTS; attribs.event_mask = CLIENT_EVENTS; attribs.do_not_propagate_mask = ButtonPressMask | ButtonReleaseMask; attribs.save_under = False; @@ -566,7 +567,7 @@ wManageWindow(WScreen *scr, Window window) /* get hints from GNUstep app */ if (!PropGetGNUstepWMAttr(window, &wwin->wm_gnustep_attr)) { - wwin->wm_gnustep_attr=NULL; + wwin->wm_gnustep_attr = NULL; } wwin->client_leader = PropGetClientLeader(window); @@ -626,7 +627,6 @@ wManageWindow(WScreen *scr, Window window) /* get colormap windows */ GetColormapWindows(wwin); - /* *-------------------------------------------------- * @@ -640,7 +640,7 @@ wManageWindow(WScreen *scr, Window window) #ifdef OLWM_HINTS if (wwin->client_flags.olwm_transient && wwin->transient_for==None - && wwin->group_id!=None && wwin->group_id != window) { + && wwin->group_id != None && wwin->group_id != window) { transientOwner = wWindowFor(wwin->group_id); @@ -860,9 +860,16 @@ wManageWindow(WScreen *scr, Window window) wwin->frame->on_mousedown_resizebar = resizebarMouseDown; + + XSelectInput(dpy, wwin->client_win, + wwin->event_mask & ~StructureNotifyMask); + XReparentWindow(dpy, wwin->client_win, wwin->frame->core->window, 0, wwin->frame->top_width); + XSelectInput(dpy, wwin->client_win, wwin->event_mask); + + { int gx, gy; @@ -872,7 +879,6 @@ wManageWindow(WScreen *scr, Window window) if (gy > 0) y -= wwin->frame->top_width + wwin->frame->bottom_width; } - /* * wWindowConfigure() will init the client window's size * (wwin->client.{width,height}) and all other geometry @@ -880,13 +886,16 @@ wManageWindow(WScreen *scr, Window window) */ wWindowConfigure(wwin, x, y, width, height); + /* to make sure the window receives it's new position after reparenting */ + wWindowSynthConfigureNotify(wwin); + /* *-------------------------------------------------- * * Setup descriptors and save window to internal * lists * - *-------------------------------------------------- + *-------------------------------------------------- */ if (wwin->main_window!=None) { @@ -932,11 +941,12 @@ wManageWindow(WScreen *scr, Window window) XLowerWindow(dpy, window); /* if window is in this workspace and should be mapped, then map it */ - if (!wwin->flags.miniaturized && (workspace == scr->current_workspace - || IS_OMNIPRESENT(wwin)) + if (!wwin->flags.miniaturized + && (workspace == scr->current_workspace || IS_OMNIPRESENT(wwin)) && !wwin->flags.hidden && !(wwin->wm_hints && (wwin->wm_hints->flags & StateHint) && wwin->wm_hints->initial_state == WithdrawnState)) { + /* The following "if" is to avoid crashing of clients that expect * WM_STATE set before they get mapped. Else WM_STATE is set later, * after the return from this function. @@ -952,11 +962,12 @@ wManageWindow(WScreen *scr, Window window) #define _WIDTH(w) (w)->frame->core->width #define _HEIGHT(w) (w)->frame->core->height if (!wPreferences.auto_focus && scr->focused_window - && !scr->flags.startup - && wWindowObscuresWindow(wwin, scr->focused_window) - && (_WIDTH(wwin) > (_WIDTH(scr->focused_window)*5)/3 - || _HEIGHT(wwin) > (_HEIGHT(scr->focused_window)*5)/3) - && WINDOW_LEVEL(scr->focused_window) == WINDOW_LEVEL(wwin)) { + && !scr->flags.startup && !transientOwner + && ((wWindowObscuresWindow(wwin, scr->focused_window) + && (_WIDTH(wwin) > (_WIDTH(scr->focused_window)*5)/3 + || _HEIGHT(wwin) > (_HEIGHT(scr->focused_window)*5)/3) + && WINDOW_LEVEL(scr->focused_window) == WINDOW_LEVEL(wwin)) + || wwin->flags.maximized)) { MoveInStackListUnder(scr->focused_window->frame->core, wwin->frame->core); } @@ -985,11 +996,8 @@ wManageWindow(WScreen *scr, Window window) || wPreferences.auto_focus)) { DoWindowBirth(wwin); } - XMapSubwindows(dpy, wwin->frame->core->window); wWindowMap(wwin); - } else { - XMapSubwindows(dpy, wwin->frame->core->window); } /* setup stacking descriptor */ @@ -1031,7 +1039,7 @@ wManageWindow(WScreen *scr, Window window) #endif XUngrabServer(dpy); - + /* *-------------------------------------------------- * @@ -1043,12 +1051,11 @@ wManageWindow(WScreen *scr, Window window) wFrameWindowChangeState(wwin->frame, WS_UNFOCUSED); - if (!wwin->flags.miniaturized && workspace == scr->current_workspace) { + if (!wwin->flags.miniaturized && workspace == scr->current_workspace + && !wwin->flags.hidden) { if ((transientOwner && transientOwner->flags.focused) || wPreferences.auto_focus) wSetFocusTo(scr, wwin); - } else { - wwin->flags.ignore_next_unmap = 1; } wWindowResetMouseGrabs(wwin); @@ -1061,13 +1068,6 @@ wManageWindow(WScreen *scr, Window window) #ifdef KWM_HINTS wKWMSendEventMessage(wwin, WKWMAddWindow); #endif - /* - * Prevent window withdrawal when getting the - * unmap notifies generated during reparenting - */ - wwin->flags.mapped = 0; - - XSync(dpy, 0); wColormapInstallForWindow(wwin->screen_ptr, scr->cmap_window); @@ -1325,7 +1325,7 @@ wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed) scr->focused_window = wwin->prev; scr->focused_window->next = NULL; } - + /* if in click to focus mode and the window * was a transient, focus the owner window */ @@ -1395,34 +1395,17 @@ wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed) } -void -wWindowFocus(WWindow *wwin) -{ -#ifdef KEEP_XKB_LOCK_STATUS - if (wPreferences.modelock) { - if (!wwin->flags.focused) { - XkbLockGroup(dpy, XkbUseCoreKbd, wwin->languagemode); - } - } -#endif /* KEEP_XKB_LOCK_STATUS */ - - wFrameWindowChangeState(wwin->frame, WS_FOCUSED); - - wwin->flags.focused=1; - - wWindowResetMouseGrabs(wwin); - - UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); - -} - - void wWindowMap(WWindow *wwin) { XMapWindow(dpy, wwin->frame->core->window); if (!wwin->flags.shaded) { + /* window will be remapped when getting MapNotify */ + XSelectInput(dpy, wwin->client_win, + wwin->event_mask & ~StructureNotifyMask); XMapWindow(dpy, wwin->client_win); + XSelectInput(dpy, wwin->client_win, wwin->event_mask); + wwin->flags.mapped = 1; } } @@ -1431,21 +1414,84 @@ wWindowMap(WWindow *wwin) void wWindowUnmap(WWindow *wwin) { - XWindowAttributes attribs; - - XGetWindowAttributes(dpy, wwin->client_win, &attribs); wwin->flags.mapped = 0; /* prevent window withdrawal when getting UnmapNotify */ - XSelectInput(dpy, wwin->client_win, - attribs.your_event_mask & ~StructureNotifyMask); + XSelectInput(dpy, wwin->client_win, + wwin->event_mask & ~StructureNotifyMask); XUnmapWindow(dpy, wwin->client_win); - XSelectInput(dpy, wwin->client_win, attribs.your_event_mask); + XSelectInput(dpy, wwin->client_win, wwin->event_mask); XUnmapWindow(dpy, wwin->frame->core->window); } + +void +wWindowFocus(WWindow *wwin, WWindow *owin) +{ + WWindow *nowner; + WWindow *oowner; + +#ifdef KEEP_XKB_LOCK_STATUS + if (wPreferences.modelock) { + if (!wwin->flags.focused) { + XkbLockGroup(dpy, XkbUseCoreKbd, wwin->languagemode); + } + } +#endif /* KEEP_XKB_LOCK_STATUS */ + + wwin->flags.semi_focused = 0; + + wFrameWindowChangeState(wwin->frame, WS_FOCUSED); + + wWindowResetMouseGrabs(wwin); + + wwin->flags.focused = 1; + + UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); + + if (owin == wwin || !owin) + return; + + nowner = wWindowFor(wwin->transient_for); + + /* new window is a transient for the old window */ + if (nowner == owin) { + owin->flags.semi_focused = 1; + wWindowUnfocus(nowner); + return; + } + + /* new window is owner of old window */ + if (wwin == oowner) { + wWindowUnfocus(owin); + return; + } + + if (!nowner) { + wWindowUnfocus(owin); + return; + } + + /* new window has same owner of old window */ + oowner = wWindowFor(owin->transient_for); + if (oowner == nowner) { + /* prevent unfocusing of owner */ + oowner->flags.semi_focused = 0; + wWindowUnfocus(owin); + oowner->flags.semi_focused = 1; + + return; + } + + /* nowner != NULL && oowner != nowner */ + nowner->flags.semi_focused = 1; + wWindowUnfocus(nowner); + wWindowUnfocus(owin); +} + + void wWindowUnfocus(WWindow *wwin) { @@ -1477,7 +1523,7 @@ wWindowUnfocus(WWindow *wwin) } } } - wwin->flags.focused=0; + wwin->flags.focused = 0; wWindowResetMouseGrabs(wwin); UpdateSwitchMenu(wwin->screen_ptr, wwin, ACTION_CHANGE_STATE); @@ -1591,19 +1637,29 @@ wWindowChangeWorkspace(WWindow *wwin, int workspace) if (workspace != scr->current_workspace) { /* Sent to other workspace. Unmap window */ - if ((wwin->flags.mapped||wwin->flags.shaded) + if ((wwin->flags.mapped + || wwin->flags.shaded + || (wwin->flags.miniaturized && !wPreferences.sticky_icons)) && !IS_OMNIPRESENT(wwin) && !wwin->flags.changing_workspace) { - + wapp = wApplicationOf(wwin->main_window); if (wapp) { wapp->last_workspace = workspace; } - unmap = 1; - wSetFocusTo(scr, NULL); + if (wwin->flags.miniaturized) { + XUnmapWindow(dpy, wwin->icon->core->window); + wwin->icon->mapped = 0; + } else { + unmap = 1; + wSetFocusTo(scr, NULL); + } } } else { /* brought to current workspace. Map window */ - if (!wwin->flags.mapped && + if (wwin->flags.miniaturized && !wPreferences.sticky_icons) { + XMapWindow(dpy, wwin->icon->core->window); + wwin->icon->mapped = 1; + } else if (!wwin->flags.mapped && !(wwin->flags.miniaturized || wwin->flags.hidden)) { wWindowMap(wwin); } @@ -1893,23 +1949,25 @@ wWindowConfigureBorders(WWindow *wwin) if (wwin->frame) { int flags; int newy, oldh; - + flags = WFF_LEFT_BUTTON|WFF_RIGHT_BUTTON; if (!WFLAGP(wwin, no_titlebar)) flags |= WFF_TITLEBAR; if (!WFLAGP(wwin, no_resizebar)) flags |= WFF_RESIZEBAR; + if (wwin->flags.shaded) + flags |= WFF_IS_SHADED; oldh = wwin->frame->top_width; wFrameWindowUpdateBorders(wwin->frame, flags); if (oldh != wwin->frame->top_width) { newy = wwin->frame_y + oldh - wwin->frame->top_width; - + XMoveWindow(dpy, wwin->client_win, 0, wwin->frame->top_width); wWindowConfigure(wwin, wwin->frame_x, newy, wwin->client.width, wwin->client.height); } - + flags = 0; if (!WFLAGP(wwin, no_miniaturize_button) && wwin->frame->flags.hide_left_button) diff --git a/src/window.h b/src/window.h index d930a9de..817a5134 100644 --- a/src/window.h +++ b/src/window.h @@ -45,7 +45,7 @@ #define CLIENT_EVENTS (StructureNotifyMask | PropertyChangeMask\ | EnterWindowMask | LeaveWindowMask | ColormapChangeMask \ - | FocusChangeMask) + | FocusChangeMask | VisibilityChangeMask) typedef enum { WFM_PASSIVE, WFM_NO_INPUT, WFM_LOCALLY_ACTIVE, WFM_GLOBALLY_ACTIVE @@ -224,6 +224,8 @@ typedef struct WWindow { struct WOLWindowState ol_window_state; #endif + long event_mask; /* the event mask thats selected */ + #ifdef MONITOR_HEARTBEAT time_t last_beat; #endif @@ -252,19 +254,20 @@ typedef struct WWindow { * window next time it's painted */ unsigned int icon_moved:1; /* icon for this window was moved * by the user */ - unsigned int ignore_next_unmap:1; unsigned int selected:1; /* multiple window selection */ unsigned int skip_next_animation:1; unsigned int internal_window:1; unsigned int changing_workspace:1; unsigned int inspector_open:1; /* attrib inspector is already open */ - + unsigned int destroyed:1; /* window was already destroyed */ unsigned int menu_open_for_me:1; /* window commands menu */ unsigned int waiting_save_ack:1; /* waiting for SAVE_YOURSELF ack */ + + unsigned int obscured:1; /* window is obscured */ #ifdef KWM_HINTS unsigned int kwm_hidden_for_modules:1; #endif @@ -328,7 +331,7 @@ WWindow *wManageWindow(WScreen *scr, Window window); void wUnmanageWindow(WWindow *wwin, Bool restore, Bool destroyed); -void wWindowFocus(WWindow *wwin); +void wWindowFocus(WWindow *wwin, WWindow *owin); void wWindowUnfocus(WWindow *wwin); void wWindowConstrainSize(WWindow *wwin, int *nwidth, int *nheight); void wWindowConfigure(WWindow *wwin, int req_x, int req_y, diff --git a/src/winmenu.c b/src/winmenu.c index 8f2b5ddf..d7625732 100644 --- a/src/winmenu.c +++ b/src/winmenu.c @@ -43,6 +43,7 @@ #include "winspector.h" #include "dialog.h" #include "stacking.h" +#include "icon.h" #define MC_MAXIMIZE 0 #define MC_MINIATURIZE 1 @@ -157,7 +158,10 @@ execMenuCommand(WMenu *menu, WMenuEntry *entry) break; case MC_SELECT: - wSelectWindow(wwin, !wwin->flags.selected); + if (!wwin->flags.miniaturized) + wSelectWindow(wwin, !wwin->flags.selected); + else + wIconSelect(wwin->icon); break; case MC_MOVERESIZE: @@ -308,11 +312,13 @@ updateOptionsMenu(WMenu *menu, WWindow *wwin) smenu->entries[WO_KEEP_ON_TOP]->clientdata = wwin; smenu->entries[WO_KEEP_ON_TOP]->flags.indicator_on = (wwin->frame->core->stacking->window_level == WMFloatingLevel)?1:0; + wMenuSetEnabled(smenu, WO_KEEP_ON_TOP, !wwin->flags.miniaturized); /* keep at bottom check */ smenu->entries[WO_KEEP_AT_BOTTOM]->clientdata = wwin; smenu->entries[WO_KEEP_AT_BOTTOM]->flags.indicator_on = (wwin->frame->core->stacking->window_level == WMSunkenLevel)?1:0; + wMenuSetEnabled(smenu, WO_KEEP_AT_BOTTOM, !wwin->flags.miniaturized); /* omnipresent check */ smenu->entries[WO_OMNIPRESENT]->clientdata = wwin; @@ -552,8 +558,11 @@ updateMenuForWindow(WMenu *menu, WWindow *wwin) menu->entries[MC_MAXIMIZE]->text = text; } + wMenuSetEnabled(menu, MC_MAXIMIZE, !WFLAGP(wwin, no_resizable)); - wMenuSetEnabled(menu, MC_MOVERESIZE, !WFLAGP(wwin, no_resizable)); + + wMenuSetEnabled(menu, MC_MOVERESIZE, !WFLAGP(wwin, no_resizable) + && !wwin->flags.miniaturized); if (wwin->flags.shaded) { static char *text = NULL; @@ -637,7 +646,6 @@ OpenWindowMenu(WWindow *wwin, int x, int y, int keyboard) } -#if 0 void OpenMiniwindowMenu(WWindow *wwin, int x, int y) { @@ -671,4 +679,4 @@ OpenMiniwindowMenu(WWindow *wwin, int x, int y) wMenuMapAt(menu, x, y, False); } -#endif + diff --git a/src/winspector.c b/src/winspector.c index 71f4b557..41b47a25 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -169,7 +169,7 @@ destroyInspector(WCoreWindow *foo, void *data, XEvent *event) WMRemoveNotificationObserver(panel); - panel->frame->flags.mapped = 0; + wWindowUnmap(panel->frame); wUnmanageWindow(panel->frame, True, False); freeInspector(panel); @@ -987,6 +987,7 @@ createInspectorForWindow(WWindow *wwin) WMPixmap *pixmap; #endif panel = wmalloc(sizeof(InspectorPanel)); + memset(panel, 0, sizeof(InspectorPanel)); panel->destroyed = 0; @@ -1114,27 +1115,27 @@ createInspectorForWindow(WWindow *wwin) switch (i) { case 0: - caption = _("Disable titlebar"); + caption = _("Disable Titlebar"); flag = WFLAGP(wwin, no_titlebar); break; case 1: - caption = _("Disable resizebar"); + caption = _("Disable Resizebar"); flag = WFLAGP(wwin, no_resizebar); break; case 2: - caption = _("Disable close button"); + caption = _("Disable Close Button"); flag = WFLAGP(wwin, no_close_button); break; case 3: - caption = _("Disable miniaturize button"); + caption = _("Disable Miniaturize Button"); flag = WFLAGP(wwin, no_miniaturize_button); break; case 4: - caption = _("Keep on top / floating"); + caption = _("Keep on Top / Floating"); flag = WFLAGP(wwin, floating); break; case 5: - caption = _("Keep at bottom / sunken"); + caption = _("Keep at Bottom / Sunken"); flag = WFLAGP(wwin, sunken); break; case 6: @@ -1150,7 +1151,7 @@ createInspectorForWindow(WWindow *wwin) flag = WFLAGP(wwin, start_maximized!=0); break; case 9: - caption = _("Skip window list"); + caption = _("Skip Window List"); flag = WFLAGP(wwin, skip_window_list); break; } @@ -1178,19 +1179,19 @@ createInspectorForWindow(WWindow *wwin) flag = WFLAGP(wwin, no_hide_others); break; case 1: - caption = _("Don't bind keyboard shortcuts"); + caption = _("Don't Bind Keyboard Shortcuts"); flag = WFLAGP(wwin, no_bind_keys); break; case 2: - caption = _("Don't bind mouse clicks"); + caption = _("Don't Bind Mouse Clicks"); flag = WFLAGP(wwin, no_bind_mouse); break; case 3: - caption = _("Keep inside screen"); + caption = _("Keep Inside Screen"); flag = WFLAGP(wwin, dont_move_off); break; case 4: - caption = _("Don't let it take focus"); + caption = _("Don't Let It Take Focus"); flag = WFLAGP(wwin, no_focusable); break; case 5: @@ -1254,7 +1255,7 @@ createInspectorForWindow(WWindow *wwin) panel->fileLbl = WMCreateLabel(panel->iconFrm); WMMoveWidget(panel->fileLbl, 20, 95); WMResizeWidget(panel->fileLbl, PWIDTH - (2 * 15) - (2 * 20), 14); - WMSetLabelText(panel->fileLbl, _("Icon file name:")); + WMSetLabelText(panel->fileLbl, _("Icon File Name:")); panel->fileText = WMCreateTextField(panel->iconFrm); WMMoveWidget(panel->fileText, 20, 115); @@ -1326,7 +1327,7 @@ createInspectorForWindow(WWindow *wwin) flag = WFLAGP(wapp->main_window_desc, start_hidden); break; case 1: - caption = _("No application icon"); + caption = _("No Application Icon"); flag = WFLAGP(wapp->main_window_desc, no_appicon); break; } diff --git a/src/workspace.c b/src/workspace.c index ecfcc20b..78eb7628 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -252,7 +252,7 @@ wWorkspaceRelativeChange(WScreen *scr, int amount) if (w < scr->workspace_count) wWorkspaceChange(scr, w); else if (wPreferences.ws_advance) - wWorkspaceChange(scr, WMAX(w, MAX_WORKSPACES-1)); + wWorkspaceChange(scr, WMIN(w, MAX_WORKSPACES-1)); else if (wPreferences.ws_cycle) wWorkspaceChange(scr, w % scr->workspace_count); } @@ -283,7 +283,7 @@ wWorkspaceForceChange(WScreen *scr, int workspace) wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); if ((tmp = scr->focused_window)!= NULL) { - if (IS_OMNIPRESENT(tmp)) + if (IS_OMNIPRESENT(tmp) || tmp->flags.changing_workspace) foc = tmp; while (tmp) { @@ -401,7 +401,7 @@ wWorkspaceForceChange(WScreen *scr, int workspace) #ifdef KWM_HINTS wKWMUpdateCurrentWorkspaceHint(scr); #endif - XSync(dpy, False); +/* XSync(dpy, False); */ } diff --git a/test/Makefile.in b/test/Makefile.in index 06c46d50..9c7ebf04 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/util/Makefile.am b/util/Makefile.am index a658606d..97e21d6d 100644 --- a/util/Makefile.am +++ b/util/Makefile.am @@ -5,14 +5,14 @@ pkgdatadir = $(datadir)/@PACKAGE@ bin_PROGRAMS = wxcopy wxpaste wdwrite getstyle setstyle seticons geticonset wmsetbg -bin_SCRIPTS = wmaker.inst wm-oldmenu2new wsetfont +bin_SCRIPTS = wmaker.inst wm-oldmenu2new wsetfont -EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wsetfont directjpeg.c +EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wsetfont directjpeg.c -INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib @XCFLAGS@ @GFXFLAGS@ +INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib @HEADER_SEARCH_PATH@ -# X_EXTRA_LIBS is for libproplist in systems that need -lsocket -liblist= @XLFLAGS@ @LIBPL@ @X_EXTRA_LIBS@ +# X_EXTRA_LIBS is for libproplist in systems that need -lsocket +liblist= @LIBRARY_SEARCH_PATH@ @LIBPL@ @X_EXTRA_LIBS@ wdwrite_LDADD = $(liblist) @@ -32,8 +32,9 @@ geticonset_LDADD= $(liblist) wmsetbg_LDADD = \ $(top_builddir)/WINGs/libWINGs.a \ $(top_builddir)/wrlib/libwraster.la \ + @LIBRARY_SEARCH_PATH@ \ @LIBPL@ \ - @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm + @GFXLIBS@ @XLIBS@ -lm getstyle_SOURCES = getstyle.c @@ -55,10 +56,11 @@ CLEANFILES = wmaker.inst wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile -rm -f wmaker.inst - sed -e "s:#pkgdatadir#:$(pkgdatadir):" \ - -e "s/#version#/$(VERSION)/" \ - -e "s:#bindir#:$(bindir):" \ - -e "s:#LITE#:@LITE@:" \ + sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ + -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ + -e "s|#version#|$(VERSION)|" \ + -e "s|#bindir#|$(bindir)|" \ + -e "s|#LITE#|@LITE@|" \ $(srcdir)/wmaker.inst.in >wmaker.inst chmod 755 wmaker.inst diff --git a/util/Makefile.in b/util/Makefile.in index 0eb259b8..57b1be76 100644 --- a/util/Makefile.in +++ b/util/Makefile.in @@ -60,13 +60,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -91,14 +91,14 @@ pkgdatadir = $(datadir)/@PACKAGE@ bin_PROGRAMS = wxcopy wxpaste wdwrite getstyle setstyle seticons geticonset wmsetbg -bin_SCRIPTS = wmaker.inst wm-oldmenu2new wsetfont +bin_SCRIPTS = wmaker.inst wm-oldmenu2new wsetfont -EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wsetfont directjpeg.c +EXTRA_DIST = wmaker.inst.in bughint wm-oldmenu2new wsetfont directjpeg.c -INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib @XCFLAGS@ @GFXFLAGS@ +INCLUDES = @DFLAGS@ -I$(top_srcdir)/wrlib @HEADER_SEARCH_PATH@ -# X_EXTRA_LIBS is for libproplist in systems that need -lsocket -liblist = @XLFLAGS@ @LIBPL@ @X_EXTRA_LIBS@ +# X_EXTRA_LIBS is for libproplist in systems that need -lsocket +liblist = @LIBRARY_SEARCH_PATH@ @LIBPL@ @X_EXTRA_LIBS@ wdwrite_LDADD = $(liblist) @@ -114,7 +114,7 @@ seticons_LDADD = $(liblist) geticonset_LDADD = $(liblist) -wmsetbg_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBPL@ @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm +wmsetbg_LDADD = $(top_builddir)/WINGs/libWINGs.a $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @LIBPL@ @GFXLIBS@ @XLIBS@ -lm getstyle_SOURCES = getstyle.c @@ -437,10 +437,11 @@ mostlyclean distclean maintainer-clean wmaker.inst: $(srcdir)/wmaker.inst.in ./Makefile -rm -f wmaker.inst - sed -e "s:#pkgdatadir#:$(pkgdatadir):" \ - -e "s/#version#/$(VERSION)/" \ - -e "s:#bindir#:$(bindir):" \ - -e "s:#LITE#:@LITE@:" \ + sed -e "s|#pkgdatadir#|$(pkgdatadir)|" \ + -e "s|#sysconfdir#|$(sysconfdir)/WindowMaker|" \ + -e "s|#version#|$(VERSION)|" \ + -e "s|#bindir#|$(bindir)|" \ + -e "s|#LITE#|@LITE@|" \ $(srcdir)/wmaker.inst.in >wmaker.inst chmod 755 wmaker.inst diff --git a/util/README b/util/README index 4f872a37..5b764249 100644 --- a/util/README +++ b/util/README @@ -33,3 +33,4 @@ wdwrite- write data into the defaults database (configuration files). wsetfont- set locale the fonts needed for a specific locale for Window Maker +wkdemenu.sh- convert a KDE menu into a wmaker menu (for pipe) diff --git a/util/getstyle.c b/util/getstyle.c index edab127d..87105046 100644 --- a/util/getstyle.c +++ b/util/getstyle.c @@ -33,6 +33,7 @@ #include <string.h> #include <pwd.h> #include <limits.h> +#include <assert.h> #ifndef PATH_MAX #define PATH_MAX 1024 @@ -112,12 +113,13 @@ globalDefaultsPathForDomain(char *domain) char path[1024]; char *tmp; - sprintf(path, "%s/%s/%s", PKGDATADIR, DEFAULTS_DIR, domain); + sprintf(path, "%s/%s", SYSCONFDIR, domain); tmp = malloc(strlen(path)+2); + assert(tmp!=NULL); strcpy(tmp, path); - return tmp; + return tmp; } @@ -534,6 +536,12 @@ main(int argc, char **argv) puts(PROG_VERSION); exit(0); } else { + if (style_file!=NULL) { + printf("%s: invalid argument '%s'\n", argv[0], + style_file[0]=='-' ? style_file : argv[i]); + printf("Try '%s --help' for more information\n", argv[0]); + exit(1); + } style_file = argv[i]; } } diff --git a/util/wmaker.inst.in b/util/wmaker.inst.in index 4d691682..0c0384e9 100644 --- a/util/wmaker.inst.in +++ b/util/wmaker.inst.in @@ -13,6 +13,7 @@ fi # directory where system wide configuration is stored GLOBALDIR="#pkgdatadir#" +GLOBALDEFDIR="#sysconfdir#" USERDIR=$HOME @@ -61,12 +62,10 @@ copy() { else if test "x$GNUSTEP_USER_ROOT" = "x"; then sed -e "s:#wmdatadir#:$GLOBALDIR:g" \ - -e "s://:/:g" \ $source > $target else - sed -e "s|~/GNUstep|$GSDIR|g" \ + sed -e "s|\$HOME/GNUstep|$GSDIR|g" \ -e "s:#wmdatadir#:$GLOBALDIR:g" \ - -e "s://:/:g" \ $source > $target fi fi @@ -78,6 +77,12 @@ echo "Installing WindowMaker $VERSION for current user..." if [ ! -d $GLOBALDIR ]; then + echo "Could not find global data files" + echo "Make sure you have installed Window Maker correctly" + exit 1 +fi + +if [ ! -d $GLOBALDEFDIR ]; then echo "Could not find global configurations files" echo "Make sure you have installed Window Maker correctly" exit 1 @@ -117,7 +122,7 @@ fi echo "Copying defaults database..." -FILES=`(cd $GLOBALDIR/Defaults;ls *)` +FILES=`(cd $GLOBALDEFDIR;ls *)` all="" for i in $FILES; do # xx herbert @@ -132,10 +137,10 @@ for i in $FILES; do fi fi if [ "$foo" = "y" -o "$foo" = "Y" -o "$all" = "a" ]; then - copy $GLOBALDIR/Defaults/$i $GSDIR/Defaults/$i + copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i fi else - copy $GLOBALDIR/Defaults/$i $GSDIR/Defaults/$i + copy $GLOBALDEFDIR/$i $GSDIR/Defaults/$i fi done diff --git a/util/wmsetbg.c b/util/wmsetbg.c index 0c5dd080..37e519b9 100644 --- a/util/wmsetbg.c +++ b/util/wmsetbg.c @@ -22,6 +22,10 @@ * USA. */ +/* + * TODO: rewrite, too dirty + */ + #include <stdio.h> #include <stdlib.h> #include <unistd.h> @@ -48,7 +52,6 @@ #define WORKSPACE_COUNT (MAX_WORKSPACES+1) - Display *dpy; char *display = ""; Window root; @@ -169,6 +172,7 @@ parseTexture(RContext *rc, char *text) RImage *image; Pixmap pixmap; int gtype; + int iwidth, iheight; GETSTR(val, tmp, 1); @@ -196,17 +200,23 @@ parseTexture(RContext *rc, char *text) case 'h': case 'H': gtype = RHorizontalGradient; + iwidth = scrWidth; + iheight = 32; break; case 'V': case 'v': gtype = RVerticalGradient; + iwidth = 32; + iheight = scrHeight; break; default: gtype = RDiagonalGradient; + iwidth = scrWidth; + iheight = scrHeight; break; } - image = RRenderGradient(scrWidth, scrHeight, &color1, &color2, gtype); + image = RRenderGradient(iwidth, iheight, &color1, &color2, gtype); if (!image) { wwarning("could not render gradient texture:%s", @@ -233,9 +243,9 @@ parseTexture(RContext *rc, char *text) RColor **colors; RImage *image; Pixmap pixmap; - int i; - int j; + int i, j; int gtype; + int iwidth, iheight; colors = malloc(sizeof(RColor*)*(count-1)); if (!colors) { @@ -283,17 +293,23 @@ parseTexture(RContext *rc, char *text) case 'h': case 'H': gtype = RHorizontalGradient; + iwidth = scrWidth; + iheight = 32; break; case 'V': case 'v': gtype = RVerticalGradient; + iwidth = 32; + iheight = scrHeight; break; default: gtype = RDiagonalGradient; + iwidth = scrWidth; + iheight = scrHeight; break; } - image = RRenderMultiGradient(scrWidth, scrHeight, colors, gtype); + image = RRenderMultiGradient(iwidth, iheight, colors, gtype); for (j = 0; colors[j]!=NULL; j++) free(colors[j]); @@ -815,7 +831,7 @@ helperLoop(RContext *rc) #ifdef DEBUG printf("RECEIVED %s\n",buffer); #endif - if (buffer[0]!='P') { + if (buffer[0]!='P' && buffer[0]!='K') { memcpy(buf, &buffer[1], 4); buf[4] = 0; workspace = atoi(buf); @@ -875,87 +891,136 @@ helperLoop(RContext *rc) void -updateDomain(char *domain, char *texture) +updateDomain(char *domain, char *key, char *texture) { char *program = "wdwrite"; - execlp(program, program, domain, "WorkspaceBack", texture, NULL); + execlp(program, program, domain, key, texture, NULL); wwarning("warning could not run \"%s\"", program); } -proplist_t -getDomain(char *domain) +char* +globalDefaultsPathForDomain(char *domain) { - char *path; - proplist_t prop; + char path[1024]; + sprintf(path, "%s/%s", SYSCONFDIR, domain); - path = wdefaultspathfordomain(domain); - if (!path) { - wwarning("could not locate file for domain %s", domain); - return NULL; - } - - prop = PLGetProplistWithPath(path); - - if (!prop || !PLIsDictionary(prop)) { - wwarning("invalid domain file %s", path); - free(path); - if (prop) - PLRelease(prop); - return NULL; - } - free(path); - - return prop; + return wstrdup(path); } -char* -getPixmapPath(proplist_t prop) +proplist_t +getValueForKey(char *domain, char *keyName) { - proplist_t key, val; + char *path; + proplist_t key; + proplist_t d; + proplist_t val; + + key = PLMakeString(keyName); + + /* try to find PixmapPath in user defaults */ + path = wdefaultspathfordomain(domain); + d = PLGetProplistWithPath(path); + if (!d) { + wwarning("could not open domain file %s", path); + } + free(path); + + if (d && !PLIsDictionary(d)) { + PLRelease(d); + d = NULL; + } + if (d) { + val = PLGetDictionaryEntry(d, key); + } else { + val = NULL; + } + /* try to find PixmapPath in global defaults */ + if (!val) { + path = globalDefaultsPathForDomain(domain); + if (!path) { + wwarning("could not locate file for domain %s", domain); + d = NULL; + } else { + d = PLGetProplistWithPath(path); + free(path); + } + + if (d && !PLIsDictionary(d)) { + PLRelease(d); + d = NULL; + } + if (d) { + val = PLGetDictionaryEntry(d, key); + + } else { + val = NULL; + } + } + + if (val) + PLRetain(val); + + PLRelease(key); + if (d) + PLRelease(d); + + return val; +} + +char* +getPixmapPath(char *domain) +{ + proplist_t val; proplist_t d; char *ptr, *data; int len, i, count; - key = PLMakeString("PixmapPath"); - val = PLGetDictionaryEntry(prop, key); - PLRelease(key); + val = getValueForKey(domain, "PixmapPath"); + if (!val || !PLIsArray(val)) { - PLRelease(prop); + if (val) + PLRelease(val); return wstrdup(""); } count = PLGetNumberOfElements(val); len = 0; for (i=0; i<count; i++) { - d = PLGetArrayElement(val, i); - if (!d || !PLIsString(d)) { + proplist_t v; + + v = PLGetArrayElement(val, i); + if (!v || !PLIsString(v)) { continue; } - len += strlen(PLGetString(d))+1; + len += strlen(PLGetString(v))+1; } ptr = data = wmalloc(len+1); *ptr = 0; for (i=0; i<count; i++) { - d = PLGetArrayElement(val, i); - if (!d || !PLIsString(d)) { + proplist_t v; + + v = PLGetArrayElement(val, i); + if (!v || !PLIsString(v)) { continue; } - strcpy(ptr, PLGetString(d)); + strcpy(ptr, PLGetString(v)); - ptr += strlen(PLGetString(d)); + ptr += strlen(PLGetString(v)); *ptr = ':'; ptr++; } if (i>0) ptr--; *(ptr--) = 0; + PLRelease(d); + return data; } @@ -997,11 +1062,11 @@ P(" --help show this help and exit"); void -changeTextureForWorkspace(proplist_t dict, char *texture, int workspace) +changeTextureForWorkspace(char *domain, char *texture, int workspace) { - proplist_t key; proplist_t array; proplist_t val; + char *value; int j; workspace++; @@ -1012,11 +1077,10 @@ changeTextureForWorkspace(proplist_t dict, char *texture, int workspace) return; } - key = PLMakeString("WorkspaceSpecificBack"); - array = PLGetDictionaryEntry(dict, key); + array = getValueForKey("WindowMaker", "WorkspaceSpecificBack"); + if (!array) { array = PLMakeArrayFromElements(NULL, NULL); - PLInsertDictionaryEntry(dict, key, array); } j = PLGetNumberOfElements(array); @@ -1025,7 +1089,7 @@ changeTextureForWorkspace(proplist_t dict, char *texture, int workspace) empty = PLMakeArrayFromElements(NULL, NULL); - while (j++ < workspace) { + while (j++ < workspace-1) { PLAppendArrayElement(array, empty); } PLAppendArrayElement(array, val); @@ -1034,7 +1098,8 @@ changeTextureForWorkspace(proplist_t dict, char *texture, int workspace) PLInsertArrayElement(array, val, workspace); } - PLSave(dict, YES); + value = PLGetDescription(array); + updateDomain(domain, "WorkspaceSpecificBack", value); } @@ -1052,8 +1117,6 @@ main(int argc, char **argv) int update=0, cpc=4, render_mode=RM_DITHER, obey_user=0; char *texture = NULL; int workspace = -1; - proplist_t domain_prop; - signal(SIGINT, SIG_DFL); @@ -1166,16 +1229,15 @@ main(int argc, char **argv) exit(1); } } - if (!image_name && !texture) { + if (!image_name && !texture && !helperMode) { printf("%s: you must specify a image file name or a texture\n", argv[0]); printf("Try '%s --help' for more information\n", argv[0]); exit(1); } - domain_prop = getDomain(domain); - PixmapPath = getPixmapPath(domain_prop); + PixmapPath = getPixmapPath(domain); dpy = XOpenDisplay(display); if (!dpy) { @@ -1204,8 +1266,6 @@ main(int argc, char **argv) /* lower priority, so that it wont use all the CPU */ nice(1000); - PLRelease(domain_prop); - helperLoop(rc); } else { BackgroundTexture *tex; @@ -1217,7 +1277,7 @@ main(int argc, char **argv) } if (update && workspace < 0) { - updateDomain(domain, texture); + updateDomain(domain, "WorkspaceBack", texture); } tex = parseTexture(rc, texture); @@ -1228,7 +1288,7 @@ main(int argc, char **argv) changeTexture(tex); else { /* always update domain */ - changeTextureForWorkspace(domain_prop, texture, workspace); + changeTextureForWorkspace(domain, texture, workspace-1); } } diff --git a/wmlib/Makefile.in b/wmlib/Makefile.in index a27b53c0..9673c5e6 100644 --- a/wmlib/Makefile.in +++ b/wmlib/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ diff --git a/wmlib/WMaker.h b/wmlib/WMaker.h index 982e8869..1c2a8b26 100644 --- a/wmlib/WMaker.h +++ b/wmlib/WMaker.h @@ -27,6 +27,10 @@ #include <X11/Xlib.h> #include <X11/Xmd.h> +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + typedef struct { CARD32 flags; CARD32 window_style; @@ -130,5 +134,8 @@ void WMMenuSetEnabled(WMMenu *menu, int index, int enabled); void WMMenuDestroy(WMMenu *menu, int submenus); +#ifdef __cplusplus +} +#endif /* __cplusplus */ #endif diff --git a/wrlib/Makefile.am b/wrlib/Makefile.am index b401b496..1864acc3 100644 --- a/wrlib/Makefile.am +++ b/wrlib/Makefile.am @@ -4,7 +4,7 @@ AUTOMAKE_OPTIONS = no-dependencies lib_LTLIBRARIES = libwraster.la -libwraster_la_LDFLAGS = -version-info 1:2:0 +libwraster_la_LDFLAGS = -version-info 1:3:0 bin_SCRIPTS = get-wraster-flags @@ -37,9 +37,9 @@ libwraster_la_SOURCES = \ gif.c -INCLUDES = @DFLAGS@ @XCFLAGS@ @GFXFLAGS@ +INCLUDES = @DFLAGS@ @HEADER_SEARCH_PATH@ -LIBLIST = libwraster.la @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm +LIBLIST = libwraster.la @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ -lm view_SOURCES= view.c diff --git a/wrlib/Makefile.in b/wrlib/Makefile.in index 4d0835c9..625f5d33 100644 --- a/wrlib/Makefile.in +++ b/wrlib/Makefile.in @@ -62,13 +62,13 @@ host_triplet = @host@ CC = @CC@ CPP_PATH = @CPP_PATH@ DFLAGS = @DFLAGS@ -GFXFLAGS = @GFXFLAGS@ -GFXLFLAGS = @GFXLFLAGS@ GFXLIBS = @GFXLIBS@ +HEADER_SEARCH_PATH = @HEADER_SEARCH_PATH@ ICONEXT = @ICONEXT@ INTLIBS = @INTLIBS@ LD = @LD@ LIBPL = @LIBPL@ +LIBRARY_SEARCH_PATH = @LIBRARY_SEARCH_PATH@ LIBTOOL = @LIBTOOL@ LITE = @LITE@ LN_S = @LN_S@ @@ -91,7 +91,7 @@ AUTOMAKE_OPTIONS = no-dependencies lib_LTLIBRARIES = libwraster.la -libwraster_la_LDFLAGS = -version-info 1:2:0 +libwraster_la_LDFLAGS = -version-info 1:3:0 bin_SCRIPTS = get-wraster-flags @@ -104,9 +104,9 @@ include_HEADERS = wraster.h libwraster_la_SOURCES = raster.c draw.c color.c load.c save.c gradient.c xpixmap.c convert.c context.c misc.c scale.c convolve.c nxpm.c xpm.c xutil.c ppm.c png.c jpeg.c tiff.c gif.c -INCLUDES = @DFLAGS@ @XCFLAGS@ @GFXFLAGS@ +INCLUDES = @DFLAGS@ @HEADER_SEARCH_PATH@ -LIBLIST = libwraster.la @GFXLFLAGS@ @XLFLAGS@ @GFXLIBS@ @XLIBS@ -lm +LIBLIST = libwraster.la @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ -lm view_SOURCES = view.c diff --git a/wrlib/load.c b/wrlib/load.c index ffb8023a..0e736a25 100644 --- a/wrlib/load.c +++ b/wrlib/load.c @@ -111,75 +111,35 @@ wstrdup(char *s) return strcpy(tmp, s); } + char** RSupportedFileFormats(void) { - char **tmp; + static char *tmp[IM_TYPES+1]; int i = 0; - - tmp = malloc(sizeof(char*)*(IM_TYPES+1)); - if (!tmp) - return NULL; - memset(tmp, 0, sizeof(char*)*(IM_TYPES+1)); - + /* built-in */ - tmp[i++] = wstrdup("XPM"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "XPM"; /* built-in */ - tmp[i++] = wstrdup("PPM"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "PPM"; #ifdef USE_TIFF - tmp[i++] = wstrdup("TIFF"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "TIFF"; #endif #ifdef USE_PNG - tmp[i++] = wstrdup("PNG"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "PNG"; #endif #ifdef USE_JPEG - tmp[i++] = wstrdup("JPEG"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "JPEG"; #endif #ifdef USE_GIF - tmp[i++] = wstrdup("GIF"); - if (!tmp[i-1]) { - RFreeStringList(tmp); - return NULL; - } + tmp[i++] = "GIF"; #endif tmp[i] = NULL; - + return tmp; } -void -RFreeStringList(char **list) -{ - int i; - - for (i = 0; list[i]!=NULL; i++) { - free(list[i]); - } - free(list); -} - - static void init_cache() { diff --git a/wrlib/nxpm.c b/wrlib/nxpm.c index b2f6ed67..c62c8db7 100644 --- a/wrlib/nxpm.c +++ b/wrlib/nxpm.c @@ -500,8 +500,7 @@ index2str(char *buffer, int index, int colorCount) static void outputcolormap(FILE *file, XPMColor *colormap, int colorCount) { - int j; - int i,index; + int index; char buf[128]; if (!colormap) diff --git a/wrlib/testgrad.c b/wrlib/testgrad.c index 3f0f3be9..cf02fee0 100644 --- a/wrlib/testgrad.c +++ b/wrlib/testgrad.c @@ -200,16 +200,9 @@ int main(int argc, char **argv) RConvertImage(ctx, imgd, &pix); XCopyArea(dpy, pix, win, ctx->copy_gc, 0, 0, 250, 250, 500, 0); - { - GC gc; - - gc = DefaultGC(dpy, DefaultScreen(dpy)); - - XSetTile(dpy, gc, ParentRelative); - } - XFlush(dpy); #endif + getchar(); return 0; } diff --git a/wrlib/wraster.h b/wrlib/wraster.h index 4ece24e5..04c8d9bf 100644 --- a/wrlib/wraster.h +++ b/wrlib/wraster.h @@ -39,8 +39,8 @@ #define RLRASTER_H_ -/* version of the header for the library: 0.11 */ -#define WRASTER_HEADER_VERSION 11 +/* version of the header for the library: 0.12 */ +#define WRASTER_HEADER_VERSION 12 #include <X11/Xlib.h> @@ -68,6 +68,10 @@ /* use default instead of best visual */ #define RC_DefaultVisual (1<<5) +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + typedef struct RContextAttributes { int flags; int render_mode; @@ -242,11 +246,10 @@ enum { /* * Returns a NULL terminated array of strings containing the * supported formats, such as: TIFF, XPM, PNG, JPEG, PPM, GIF + * Do not free the returned data. */ char **RSupportedFileFormats(void); -void RFreeStringList(char **list); - /* * Xlib contexts */ @@ -390,4 +393,8 @@ int RBlurImage(RImage *image); extern int RErrorCode; +#ifdef __cplusplus +} +#endif /* __cplusplus */ + #endif